海阔视界,我的主页「ZFnote」主题¥my_home_theme¥eyJEYXRlIjoiMjAyNS0wNS0wMyAxNzozNDowOCIsIk5hbWUiOiJaRm5vdGUiLCJCb29rbWFya3NMaXN0IjpbeyJwYXR0ZXJuIjoyLCJuYW1lIjoi6aKE5aSE55CGIiwiY29kZSI6InZhciBjb2xsZWN0aW9uPUpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vY29sbGVjdGlvbicpKTtcbnZhciBjb2xQaWNVcmw9XCJoaWtlcjovL2ltYWdlcy9jYXJkX2JnXCI7XG5mb3IobGV0IGk9MDtpPGNvbGxlY3Rpb24ubGVuZ3RoO2krKyl7XG4gICAgICAgICAgICAgIGlmKGNvbGxlY3Rpb25baV0ucGljVXJsIT1udWxsKXsgICAgICAgICAgICAgICAgICAgICAgICBjb2xQaWNVcmw9Y29sbGVjdGlvbltpXS5waWNVcmw7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbn1cblxuLyoqdHJ5e1xudmFyIGxvZ29QaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwOi8vYXBpLmJ0c3R1LmNuL3NqYnovYXBpLnBocD9seD1mZW5namluZyZmb3JtYXQ9aW1hZ2VzJl90dD0nK25ldyBEYXRlKCkuZ2V0VGltZSgpLHtyZWRpcmVjdDpmYWxzZSwgd2l0aEhlYWRlcnM6dHJ1ZSwgdGltZW91dDogMTAwMH0pKS5oZWFkZXJzLmxvY2F0aW9uWzBdO1xufWNhdGNoKGUpe30qL1xudmFyIGxvZ29QaWMgPSBcImhpa2VyOi8vaW1hZ2VzL2hvbWVfYmdcIjtcbltdIn0seyJzdGF0dXMiOmZhbHNlLCJuYW1lIjoi5rW35oqlIiwidXJsIjoiJHtzZXR0aW5nfSIsImljb24iOiJAanM6bG9nb1BpYyIsImRlc2MiOiIwIiwidHlwZSI6ImNhcmRfcGljXzEifSx7InN0YXR1cyI6ZmFsc2UsInBhdHRlcm4iOjIsIm5hbWUiOiLoh6rliqjlr7zlhaXlm77moIciLCJjb2RlIjoiLy/oh6rliqjlr7zlhaXlm77moIcs5peg6ZyA5omL5Yqo5pON5L2c44CCXG4vL+ato+W4uOaYvuekuuWbvuagh+WQjizlj6/ku6XlhbPmjonmnKzkuabnrb4s5L2/5Li76aG15pu05rWB55WF44CCXG5sZXQgaWNvbnMgPSBbXG4gICAge1xuICAgICdodG1sJzogJ2h0dHBzOi8vemZub3RlLm5lb2NpdGllcy5vcmcvaGlrZXIvcG5nL2N5LycsXG4gICAgJ2ZpbGUnOiAnaGlrZXI6Ly9maWxlcy96Zi9jeS8nLFxuICAgICdpZCc6IFsgICfnlLXop4blrrYucG5nJywn5bi455SoLnBuZycsJ+ebtOaSrS5wbmcnLCfpn7PkuZAucG5nJyAsJ+W5v+aSrS5wbmcnLCfmm7TmlrAucG5nJywn5aOB57q4LnBuZycsJ+mYv+mHjC5wbmcnLCd6aGFuLnBuZyddXG4gICAgfSxcblxuICAgIHtcbiAgICAnaHRtbCc6ICdodHRwczovL3pmbm90ZS5uZW9jaXRpZXMub3JnL2hpa2VyL3BuZy9wbmcvJyxcbiAgICAnZmlsZSc6ICdoaWtlcjovL2ZpbGVzL3pmL3BuZy8nLFxuICAgICdpZCc6IFsgJ+aKlumfsy5wbmcnLCdxcemfs+S5kC5wbmcnLCfkurrmsJHml6XmiqUucG5nJywn5ZCsLnBuZycsJ+WTlOWTqS5wbmcnLCflo4HnurgucG5nJywn5aSu6KeG5paw6Ze7LnBuZycsJ+WnkOWnkC5wbmcnLCflvq7kv6HlkKzkuaYucG5nJyxcbiAgICAn5o6M6ZiFLnBuZycsJ+aUvuaYoOWOhS5wbmcnLCfmlpflnLDkuLsucG5nJywn5paX6bG8LnBuZycsJ+aXpeWOhi5wbmcnLCfnjKvnnLwucG5nJywn55S16KeGLnBuZycsJ+eUteinhuWuti5wbmcnLFxuICAgICfnjovogIXokKXlnLAucG5nJywn55S7LnBuZycsJ+e9keaYk+S6kemfs+S5kC5wbmcnICwn6IW+6K6v566h5a62LnBuZycsJ+iKkuaenC5wbmcnLCflo4HnurgucG5nJywn6JOd5aWP5LqRLnBuZycsJ+iZjueJmS5wbmcnICwn6Jy76JyTLnBuZycsXG4gICAgJ+mFt+aIkS5wbmcnLCfphbfni5cucG5nJywn572R5piT5LqR6Z+z5LmQLnBuZycsJ+ixoeajiy5wbmcnLCfpmIXor7sucG5nJywn576O5aWzLnBuZycsJ+abtOaWsC5wbmcnXVxuICAgIH0sXG5cblxuXG5cblxuICAge1xuICAgICdodG1sJzogJ2h0dHBzOi8vemZub3RlLm5lb2NpdGllcy5vcmcvaGlrZXIvanNvbi8nLFxuICAgICdmaWxlJzogJ2hpa2VyOi8vZmlsZXMvemYvanNvbi8nLFxuICAgICdpZCc6IFsgICdjY3R2Lmpzb24nLCdrdHYuanNvbicsJ3poYW4ucG5nJ11cbiAgICB9LFxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbiAgICB7XG4gICAgJ2h0bWwnOiAnaHR0cHM6Ly96Zm5vdGUubmVvY2l0aWVzLm9yZy9oaWtlci9wbmcvc3ovJyxcbiAgICAnZmlsZSc6ICdoaWtlcjovL2ZpbGVzL3pmL3N6LycsXG4gICAgJ2lkJzogWyAgJzAucG5nJywnMS5wbmcnLCcyLnBuZycgLCczLnBuZycgICwnNC5wbmcnICwnNS5wbmcnLCc2LnBuZycsJzcucG5nJyAsJzgucG5nJyAgLCc5LnBuZycgLCd6aGFuLnBuZyddXG4gICAgfVxuXTtcblxubGV0IGljb249IGljb25zLmZsYXRNYXAoaCA9PiBoLmlkLm1hcChpZCA9PiAoe1xuICAgIHVybDogaC5odG1sICsgaWQsXG4gICAgZmlsZTogaC5maWxlICsgaWRcbn0pKSk7XG5cbmljb24uZm9yRWFjaChqID0+IHtcbiAgICBpZiAoIWZpbGVFeGlzdChqLmZpbGUpKSB7c2F2ZUltYWdlKGoudXJsLCBqLmZpbGUpO1xuICAgIH1cbn0pOyJ9LHsibmFtZSI6IkhFQUQiLCJtYXJrIjoiIiwibGlzdCI6W3sic3RhdHVzIjp0cnVlLCJwYXR0ZXJuIjowLCJuYW1lIjoi5Lmm562+IiwidGl0bGUiOiLkuabnrb4iLCJ1cmwiOiJoaWtlcjovL2Jvb2ttYXJrIiwiaWNvbiI6Imhpa2VyOi8vaW1hZ2VzL2hvbWVfYm9va21hcmsyIiwiZGVzYyI6IiIsInR5cGUiOiJpY29uXzUifSx7InN0YXR1cyI6dHJ1ZSwicGF0dGVybiI6MCwibmFtZSI6IuS4i+i9vSIsInRpdGxlIjoi5LiL6L29IiwidXJsIjoiaGlrZXI6Ly9kb3dubG9hZCIsImljb24iOiJoaWtlcjovL2ltYWdlcy9ob21lX2Rvd25sb2FkIiwiZGVzYyI6IiIsInR5cGUiOiJpY29uXzUifSx7InN0YXR1cyI6dHJ1ZSwicGF0dGVybiI6MCwibmFtZSI6IuWOhuWPsiIsInRpdGxlIjoi5Y6G5Y+yIiwidXJsIjoiaGlrZXI6Ly9oaXN0b3J5IiwiaWNvbiI6Imhpa2VyOi8vaW1hZ2VzL2hvbWVfaGlzdG9yeTIiLCJkZXNjIjoiIiwidHlwZSI6Imljb25fNSJ9LHsic3RhdHVzIjp0cnVlLCJwYXR0ZXJuIjowLCJuYW1lIjoi5bel5YW3566xIiwidGl0bGUiOiLlt6XlhbfnrrEiLCJ1cmwiOiJoaWtlcjovL3Rvb2xzIiwiaWNvbiI6Imhpa2VyOi8vaW1hZ2VzL2hvbWVfdG9vbHMiLCJkZXNjIjoiIiwidHlwZSI6Imljb25fNSJ9LHsic3RhdHVzIjp0cnVlLCJwYXR0ZXJuIjowLCJuYW1lIjoi5Li76aG16K6+572uIiwidGl0bGUiOiLkuLvpopgiLCJ1cmwiOiJAanM6bGV0IHRpdGxlPVsgICAge3RpdGxlOiBcIuS4u+mhteiuvue9rlwiLGljb246IFwiaGlrZXI6Ly9maWxlcy96Zi9zei8xLnBuZ1wiLHVybDpgJHtzZXR0aW5nfWB9LCB7dGl0bGU6IFwi5pu05aSa6K6+572uXCIsaWNvbjogXCJoaWtlcjovL2ZpbGVzL3pmL3N6LzIucG5nXCIsdXJsOiBcImhpa2VyOi8vc2V0dGluZ01vcmVcIiAgICB9LCAgICB7dGl0bGU6IFwi5paH5Lu2566h55CGXCIsaWNvbjogXCJoaWtlcjovL2ZpbGVzL3pmL3N6LzMucG5nXCIsdXJsOiBcImhpa2VyOi8vZXhwbG9yZVwiICAgIH0sICAgIHt0aXRsZTogXCLmnKzlnLDop4bpopFcIixpY29uOiBcImhpa2VyOi8vZmlsZXMvemYvc3ovNC5wbmdcIix1cmw6IFwiaGlrZXI6Ly9sb2NhbE1lZGlhXCIgICAgfSwgICAge3RpdGxlOiBcIui1hOa6kOeuoeeQhlwiLGljb246IFwiaGlrZXI6Ly9maWxlcy96Zi9zei81LnBuZ1wiLHVybDogXCJoaWtlcjovL2hvbWVA5pys5Zyw6LWE5rqQ566h55CGXCIgICAgfSwgICAge3RpdGxlOiBcIuiTneiOk+Wbvuagh1wiLGljb246IFwiaGlrZXI6Ly9maWxlcy96Zi9zei82LnBuZ1wiLHVybDogXCJoaWtlcjovL2hvbWVA6JOd6I6T5Zu+5qCHXCIgICAgfSwgICAge3RpdGxlOiBcIuaJi+WKqOWkh+S7vVwiLGljb246IFwiaGlrZXI6Ly9maWxlcy96Zi9zei83LnBuZ1wiLHVybDogXCJoaWtlcjovL3dlYmRhdlwiICAgIH0sICAgIHt0aXRsZTogXCLnvZHlnYDov4fmu6RcIixpY29uOiBcImhpa2VyOi8vZmlsZXMvemYvc3ovOC5wbmdcIix1cmw6IFwiaGlrZXI6Ly9hZFVybFwiICAgIH0sICAgIHt0aXRsZTogXCLnvZHpobXmj5Lku7ZcIixpY29uOiBcImhpa2VyOi8vZmlsZXMvemYvc3ovOS5wbmdcIix1cmw6IFwiaGlrZXI6Ly9qc1wiICAgIH0sICAgIHt0aXRsZTogXCLlhYPntKDmi6bmiKpcIixpY29uOiBcImhpa2VyOi8vZmlsZXMvemYvc3ovMC5wbmdcIix1cmw6IFwiaGlrZXI6Ly9hZFJ1bGVcIiAgICB9XTsgICAgICAgICAgICAgJCh0aXRsZSwyLFwi5pu05aSa5Yqf6IO9XCIpLnNlbGVjdCgodGl0bGUpPT57bGV0IGk9dGl0bGUuZmluZEluZGV4KHQ9PnQudGl0bGU9PWlucHV0KTtsZXQgdXJsPXRpdGxlW2kgICAgXS51cmw7cmV0dXJuIHVybH0sdGl0bGUpIiwiaWNvbiI6Imhpa2VyOi8vaW1hZ2VzL2hvbWVfc2V0dGluZyIsImRlc2MiOiIiLCJ0eXBlIjoiaWNvbl81In0seyJzdGF0dXMiOnRydWUsInBhdHRlcm4iOjAsIm5hbWUiOiLnu5PmnZ9IRUFEIiwidGl0bGUiOiIiLCJ1cmwiOiIiLCJpY29uIjoiIiwiZGVzYyI6IiIsInR5cGUiOiJsaW5lIn1dLCJmb2xkX3N0YXR1cyI6dHJ1ZSwicGF0dGVybiI6M30seyJuYW1lIjoi5LqU5qCPIiwibWFyayI6IiIsImxpc3QiOlt7InN0YXR1cyI6dHJ1ZSwicGF0dGVybiI6MCwibmFtZSI6Iue7hDAxIiwidGl0bGUiOiJAanM6ZmFzdEdyYW1tYXJGb3JUZXh0KFwiPFRhYj5AWycg4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9I2ZmOTgwMD7ns7vnu588L2ZvbnQ+JyAsICfns7vnu58nXVwiLFwiPFRhYj5AWyfnu4QxJ11cIixvcmRlcikiLCJ1cmwiOiJAanM6ZmFzdEdyYW1tYXIoXCI8VGFiPkBbJ+e7hDEnLCdBJ11cIixvcmRlcikiLCJpY29uIjoiIiwiZGVzYyI6IiIsInR5cGUiOiJ0ZXh0XzUifSx7InN0YXR1cyI6dHJ1ZSwicGF0dGVybiI6MCwibmFtZSI6Iue7hDAyIiwidGl0bGUiOiJAanM6ZmFzdEdyYW1tYXJGb3JUZXh0KFwiPFRhYj5AWycg4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9I2ZmOTgwMD7lt6Xlhbc8L2ZvbnQ+JyAsICflt6XlhbcnXVwiLFwiPFRhYj5AWyfnu4QyJ11cIixvcmRlcikiLCJ1cmwiOiJAanM6ZmFzdEdyYW1tYXIoXCI8VGFiPkBbJ+e7hDInLCdBJ11cIixvcmRlcikiLCJpY29uIjoiIiwiZGVzYyI6IiIsInR5cGUiOiJ0ZXh0XzUifSx7InN0YXR1cyI6dHJ1ZSwicGF0dGVybiI6MCwibmFtZSI6Iue7hDAzIiwidGl0bGUiOiJAanM6ZmFzdEdyYW1tYXJGb3JUZXh0KFwiPFRhYj5AWycg4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9I2ZmOTgwMD7muLjmiI88L2ZvbnQ+JyAsICfmuLjmiI8nXVwiLFwiPFRhYj5AWyfnu4QzJ11cIixvcmRlcikiLCJ1cmwiOiJAanM6ZmFzdEdyYW1tYXIoXCI8VGFiPkBbJ+e7hDMnLCdBJ11cIixvcmRlcikiLCJpY29uIjoiIiwiZGVzYyI6IiIsInR5cGUiOiJ0ZXh0XzUifSx7InN0YXR1cyI6dHJ1ZSwicGF0dGVybiI6MCwibmFtZSI6Iue7hDA0IiwidGl0bGUiOiJAanM6ZmFzdEdyYW1tYXJGb3JUZXh0KFwiPFRhYj5AWycg4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9I2ZmOTgwMD7lhbblroM8L2ZvbnQ+JyAsICflhbblroMnXVwiLFwiPFRhYj5AWyfnu4Q0J11cIixvcmRlcikiLCJ1cmwiOiJAanM6ZmFzdEdyYW1tYXIoXCI8VGFiPkBbJ+e7hDQnLCdBJ11cIixvcmRlcikiLCJpY29uIjoiIiwiZGVzYyI6IiIsInR5cGUiOiJ0ZXh0XzUifSx7InN0YXR1cyI6dHJ1ZSwicGF0dGVybiI6MCwibmFtZSI6Iue7hDA1IiwidGl0bGUiOiJAanM6ZmFzdEdyYW1tYXJGb3JUZXh0KFwiPFRhYj5AWycg4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9I2ZmOTgwMD7np4HmnIk8L2ZvbnQ+JyAsICfnp4HmnIknXVwiLFwiPFRhYj5AWyfnu4Q1J11cIixvcmRlcikiLCJ1cmwiOiJAanM6ZmFzdEdyYW1tYXIoXCI8VGFiPkBbJ+e7hDUnLCdBJ11cIixvcmRlcikiLCJpY29uIjoiIiwiZGVzYyI6IiIsInR5cGUiOiJ0ZXh0XzUifSx7InN0YXR1cyI6dHJ1ZSwicGF0dGVybiI6MCwibmFtZSI6IuS6lOagj+e7k+adn+e6vyIsInRpdGxlIjoiIiwidXJsIjoiIiwiaWNvbiI6IiIsImRlc2MiOiIiLCJ0eXBlIjoibGluZSJ9XSwiZm9sZF9zdGF0dXMiOnRydWUsInBhdHRlcm4iOjN9LHsibmFtZSI6Iue7hDEiLCJtYXJrIjoiQSIsImxpc3QiOlt7InN0YXR1cyI6ZmFsc2UsInBhdHRlcm4iOjAsIm5hbWUiOiLkupHlpIfku70iLCJ0aXRsZSI6IuS6keWkh+S7vSIsInVybCI6Imhpa2VyOi8vd2ViZGF2IiwiaWNvbiI6Imhpa2VyOi8vZmlsZXMvemYvY3kv6Zi/6YeMLnBuZyIsImRlc2MiOiIiLCJ0eXBlIjoiaWNvbl80In0seyJzdGF0dXMiOmZhbHNlLCJwYXR0ZXJuIjowLCJuYW1lIjoi5o+S5Lu2IiwidGl0bGUiOiLmj5Lku7YiLCJ1cmwiOiJoaWtlcjovL2pzIiwiaWNvbiI6IkBqczogbCsnanMuc3ZnJyIsImRlc2MiOiIiLCJ0eXBlIjoiaWNvbl81In0seyJzdGF0dXMiOmZhbHNlLCJwYXR0ZXJuIjowLCJuYW1lIjoi5pu05aSa6K6+572uIiwidGl0bGUiOiLmm7TlpJrorr7nva4iLCJ1cmwiOiJoaWtlcjovL3NldHRpbmdNb3JlIiwiaWNvbiI6IkBqczogbCsnc2V0dGluZ01vcmUuc3ZnJyIsImRlc2MiOiIiLCJ0eXBlIjoiaWNvbl81In0seyJzdGF0dXMiOmZhbHNlLCJwYXR0ZXJuIjowLCJuYW1lIjoi5bel5YW3566xIiwidGl0bGUiOiLlt6XlhbfnrrEiLCJ1cmwiOiJoaWtlcjovL3Rvb2xzIiwiaWNvbiI6Imhpa2VyOi8vaW1hZ2VzL2hvbWVfdG9vbHMiLCJkZXNjIjoiIiwidHlwZSI6Imljb25fNSJ9LHsic3RhdHVzIjpmYWxzZSwicGF0dGVybiI6MCwibmFtZSI6Iui2s+i/uTEiLCJ0aXRsZSI6Iui2s+i/uSIsInVybCI6IkBqczogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7ICAgICB2YXIgcnVsZXMgPSBnZXRMYXN0UnVsZXMoMTYpLm1hcChyID0+IHsgICAgICAgICByZXR1cm4geyAgICAgICAgICAgICB0aXRsZTogci50aXRsZSwgICAgICAgICAgICAgaWNvbjogci5pY29uICAgICAgICAgfTsgICAgICAgICB9KTsgICAgIHJldHVybiAkKHJ1bGVzLCAyLCAn5pyA6L+R5L2/55SoJykuc2VsZWN0KCgpID0+IHsgICAgICAgICByZXR1cm4gXCJoaWtlcjovL2hvbWVAXCIgKyBpbnB1dCAgICAgfSkgfSkiLCJpY29uIjoiaGlrZXI6Ly9maWxlcy8wMmYvbW9yZS/otrMucG5nIiwiZGVzYyI6IiIsInR5cGUiOiJpY29uXzUifSx7InRpdGxlIjoiMOe7hDEiLCJ1cmwiOiIiLCJpY29uIjoiIiwiZGVzYyI6IiIsInR5cGUiOiJsaW5lIiwibmFtZSI6IjDnu4QxIiwic3RhdHVzIjpmYWxzZSwicGF0dGVybiI6MH0seyJzdGF0dXMiOmZhbHNlLCJwYXR0ZXJuIjowLCJuYW1lIjoi546L6ICF6K+t6Z+z5YyFMSIsInRpdGxlIjoi546L6ICF6K+t6Z+z5YyFIiwidXJsIjoiQGpzOiAkKCdoaWtlcjovL2VtcHR5I25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgc2V0UGFnZVRpdGxlKCfnjovogIXor63pn7MnKTsgICAgIHZhciBkID0gW107ICAgICB2YXIgeXggPSBnZXRJdGVtKCfnjovogIXor63pn7MnLCAn6bKB54+tJyk7ICAgICB0cnkgeyAgICAgICAgIHRyeSB7ICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYWhmaS5jbi9hcGkvd3pyeXl5P21zZz0nICsgeXgpKTsgICAgICAgICB9IGNhdGNoIHsgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3NoYW5oZS5raW0vYXBpL3lvdXhpL3d6eXliLnBocD9tc2c9JyArIHl4KSk7ICAgICAgICAgfSAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIHRpdGxlOiBqc29uLmhlcm8sICAgICAgICAgICAgIGRlc2M6ICcwJywgICAgICAgICAgICAgY29sX3R5cGU6ICdjYXJkX3BpY18xJywgICAgICAgICAgICAgcGljOiBqc29uLmltZywgICAgICAgICAgICAgdXJsOiBqc29uLmltZywgICAgICAgICB9LCB7ICAgICAgICAgICAgIHRpdGxlOiAn5pCc57SiJywgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsICAgICAgICAgICAgIGRlc2M6ICfor7fovpPlhaXnjovogIXoi7Hpm4TlkI0nLCAgICAgICAgICAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4geyAgICAgICAgICAgICAgICAgaWYgKCFpbnB1dCkgcmV0dXJuIFwidG9hc3Q6Ly/or7fovpPlhaXlhbPplK7or41cIjsgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ+eOi+iAheivremfsycsIGlucHV0KTsgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTsgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7ICAgICAgICAgICAgIH0pLCAgICAgICAgIH0pOyAgICAgICAgIGpzb24uZGF0YS5tYXAoeXkgPT4geyAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgdGl0bGU6IHl5LmlkICsgJy4gJyArIHl5LmxpbmVzLCAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLCAgICAgICAgICAgICAgICAgcGljOiBqc29uLmltZywgICAgICAgICAgICAgICAgIHVybDogeXkudm9pY2UsICAgICAgICAgICAgIH0pOyAgICAgICAgIH0pOyAgICAgfSBjYXRjaCB7ICAgICAgICAgdG9hc3QoJ+ayoeacieivpeiLsembhOaIluWHuumUmeS8muaBouWkjem7mOiupO+8gScpOyAgICAgICAgIGNsZWFySXRlbSgn546L6ICF6K+t6Z+zJyk7ICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpOyAgICAgfSAgICAgc2V0UmVzdWx0KGQpOyB9KSIsImljb24iOiJoaWtlcjovL2ZpbGVzLzAyZi9tb3JlL+eOiy5wbmciLCJkZXNjIjoiIiwidHlwZSI6Imljb25fNCJ9LHsic3RhdHVzIjpmYWxzZSwicGF0dGVybiI6MCwibmFtZSI6IuW/q+aJiyIsInRpdGxlIjoi5b+r5omLIiwidXJsIjoiQGpzOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I2Z5cGFnZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICAgICAgc2V0UGFnZVRpdGxlKCflv6vmiYvnn63op4bpopEnKTsgICAgICAgICB2YXIgZCA9IFtdOyAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IDE7IGkrKykgeyAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnd5YTYuY24vYXBpL2t1YWlzaG91P2FwaUtleT04MGY3ZDE0OWM5MzU1Yzg2ZDY5MjIzNGI5NzYwM2RlNycpKTsgICAgICAgICAgICAganNvbi5kYXRhLm1hcChkYXRhID0+IHsgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGRhdGEuY2FwdGlvbiwgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLCAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IGRhdGEuY292ZXIsICAgICAgICAgICAgICAgICAgICAgZGVzYzogZGF0YS5uYW1lLCAgICAgICAgICAgICAgICAgICAgIHVybDogZGF0YS51cmwsICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgfSk7ICAgICAgICAgfSAgICAgICAgIHNldFJlc3VsdChkKTsgICAgIH0pIH0pOyIsImljb24iOiJoaWtlcjovL2ZpbGVzLzAyZi9tb3JlL+W/qy5wbmciLCJkZXNjIjoiIiwidHlwZSI6Imljb25fNCJ9LHsic3RhdHVzIjpmYWxzZSwicGF0dGVybiI6MCwibmFtZSI6IuW+ruinhiIsInRpdGxlIjoi5b6u6KeGIiwidXJsIjoiQGpzOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgICAgIHNldFBhZ2VUaXRsZSgnJyk7ICAgICAgICAgdmFyIGQgPSBbXTsgICAgICAgICB2YXIgaHRtbCA9IEpTT04ucGFyc2UoZmV0Y2goXCJodHRwczovL2FwaS5saW5odW4udmlwL2FwaS93ZWlzaGk/YXBpS2V5PTEzNTczOWVjM2ZlY2FhZDAyYjY1ODY2OTk0ZTAzNmQwXCIpKS52aWRlbzsgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJywgICAgICAgICAgICAgZGVzYzogJzY0MCYmZmxvYXQnLCAgICAgICAgICAgICB1cmw6IGh0bWwsZXh0cmE6IHsgICAgICAgICAgICAgICAgY2FuQmFjazogdHJ1ZSwgICAgICAgICAgICAgICAgYXV0b1BsYXk6IHRydWUsICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgIH0pOyAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJywgICAgICAgICB9KTsgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICB0aXRsZTogJ+aNouS4gOS4qicsICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJywgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTsgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eScgICAgICAgICAgICAgfSksICAgICAgICAgfSk7ICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgdGl0bGU6ICfkuIvovb3op4bpopEnLCAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMicsICAgICAgICAgICAgIHVybDogJ2Rvd25sb2FkOi8vJyArIGh0bWwsICAgICAgICAgfSk7ICAgICAgICAgc2V0UmVzdWx0KGQpOyAgICAgfSkgfSk7IiwiaWNvbiI6Imhpa2VyOi8vZmlsZXMvMDJmL21vcmUv5b6uLnBuZyIsImRlc2MiOiIiLCJ0eXBlIjoiaWNvbl80In0seyJzdGF0dXMiOmZhbHNlLCJwYXR0ZXJuIjowLCJuYW1lIjoi572R56uZIiwidGl0bGUiOiLnvZHnq5kiLCJ1cmwiOiJAanM6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICAgICAgc2V0UGFnZVRpdGxlKCfkuIDkupvnvZHnq5knKTsgICAgICAgICB2YXIgdGl0bGVzID0gWyfnmb3oj5zlpJbpk77nvZHnm5hAQGh0dHA6Ly93cC5hbnh3bC5jbicsICfmlLblvZXova/ku7bnq5lAQGh0dHA6Ly9hcHAuMTAyNjk5LmNvbScsICfmnJ/liIrmnYLlv5dAQGh0dHA6Ly9xaWthbi5saWZ2ZXMuY29tJywgJ+S4gOS4quWbvuaWh0BAaHR0cDovL20ud3VmYXpodWNlLmNvbS9vbmUnLCAnTXlGcmVlTXAzQEBodHRwczovL3Rvb2xzLmxpdW1pbmd5ZS5jbi9tdXNpYy8jLycsICfova/ku7bliIbkuqtAQGh0dHBzOi8vdGV5b25kcy5sYW56b3V3LmNvbS9iMDJqYnM1cmk/dzE/MicsICfpmo/mnLrnvo7lpbPlm75AQGh0dHA6Ly9tbjkuaWN1L2ltZzEucGhwJywgJ+e+juWls+inhumikembhkBAaHR0cDovL21uOS5pY3UvJywgJ+aXpeWOhue9kUBAaHR0cHM6Ly9tLnJpbGkuY29tLmNuLycsICfnlLvmnb9AQGh0dHA6Ly90b29sLm1rYmxvZy5jbi93aGl0ZWJvYXJkLycsICfpn7PpopHnvJbovpFAQGh0dHA6Ly90b29sLm1rYmxvZy5jbi9hdWRpb21hc3MvJywgJ+aUr+S7mOWuneWIsOi0pueUn+aIkEBAaHR0cHM6Ly90b29sd2EuY29tL3JlY2VpcHQvIycsICflt6Xlhbfom5lAQGh0dHBzOi8vdG9vbHdhLmNvbS8nLCAn5pS+5p2+55m95Zmq6Z+zQEBodHRwczovL3Rvb2x3YS5jb20vcmVsYXgvJywgXTsgICAgICAgICB2YXIgdCA9IHRpdGxlczsgICAgICAgICB2YXIgZCA9IFtdOyAgICAgICAgIHZhciBpbWcgPSAnaGlrZXI6Ly9maWxlcy9KbS9sbS9tb3JlLzE0MS5wbmcnOyAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdC5sZW5ndGg7IGkrKykgeyAgICAgICAgICAgICB2YXIgayA9IHRbaV0uc3BsaXQoL1xccypAQFxccyovKTsgICAgICAgICAgICAgaWYgKGsubGVuZ3RoIDwgMikgY29udGludWU7ICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICB0aXRsZToga1swXSwgICAgICAgICAgICAgICAgIHVybDogJ3g1Oi8vJyArIGtbMV0sICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fMl9yb3VuZCcsICAgICAgICAgICAgICAgICBwaWNfdXJsOiBpbWcsICAgICAgICAgICAgIH0pOyAgICAgICAgIH0gICAgICAgICBzZXRIb21lUmVzdWx0KGQpOyAgICAgfSkgfSk7IiwiaWNvbiI6Imhpa2VyOi8vZmlsZXMvMDJmL21vcmUv56uZLnBuZyIsImRlc2MiOiIiLCJ0eXBlIjoiaWNvbl80In0seyJzdGF0dXMiOmZhbHNlLCJwYXR0ZXJuIjoyLCJuYW1lIjoi6Kej5p6QIiwiY29kZSI6ImQgPSBbXTtcbmQucHVzaCh7XG4gICAgdGl0bGU6ICfop6PmnpAnLFxuICAgIGNvbF90eXBlOiAnaWNvbl80JyxcbiAgICBwaWM6ICdoaWtlcjovL2ZpbGVzLzAyZi9tb3JlL+inoy5wbmcnLFxuICAgIHVybDogJChbe1xuICAgICAgICB0aXRsZTogJ+inhumikeino+aekCcsXG4gICAgICAgIGljb246ICdoaWtlcjovL2ZpbGVzL0ptL2xtL3EvMzUucG5nJ1xuICAgIH0sIHtcbiAgICAgICAgdGl0bGU6ICflm77pm4bop6PmnpAnLFxuICAgICAgICBpY29uOiAnaGlrZXI6Ly9maWxlcy9KbS9sbS9xLzUucG5nJ1xuICAgIH0sIHtcbiAgICAgICAgdGl0bGU6ICfpn7PpopHop6PmnpAnLFxuICAgICAgICBpY29uOiAnaGlrZXI6Ly9maWxlcy9KbS9sbS9xLzEyNS5wbmcnXG4gICAgfSwge1xuICAgICAgICB0aXRsZTogJ+WFqOawkUvmrYwnLFxuICAgICAgICBpY29uOiAnaGlrZXI6Ly9maWxlcy9KbS9sbS9xLzIwLnBuZydcbiAgICB9XSwgMiwgJ+ivt+mAieaLqScpLnNlbGVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChpbnB1dCA9PSAn6KeG6aKR6Kej5p6QJykge1xuICAgICAgICAgICAgcmV0dXJuICQoJ3t7Y2xpcGJvYXJkfX0nLCAn5oqW6Z+zL+W/q+aJi+etieinhumikeWIhuS6q+mTvuaOpScpLmlucHV0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlucHV0KSByZXR1cm4gXCJ0b2FzdDovL+ivt+i+k+WFpeWIhuS6q+mTvuaOpVwiO1xuICAgICAgICAgICAgICAgIHZhciB1cmwgPSBpbnB1dC5tYXRjaCgvKGh0dHA6XFwvXFwvfGh0dHBzOlxcL1xcLykoKFxcd3w9fFxcP3xcXC58XFwvfCZ8LSkrKS9nKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNnYW1lVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKHVybCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJycpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3d3dy55dWFueGlhcGkuY24vYXBpL2ppZXhpX3ZpZGVvLz91cmw9JyArIHVybCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNwID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqc29uLmRlc2MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBqc29uLnZpZGVvLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3F0a2oubG92ZS9hcGkvc3BqeC5waHA/bXNnPScgKyB1cmwpKS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNwID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqc29uLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDoganNvbi52aWRlb3VybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSBzcC50aXRsZS5zdWJzdHJpbmcoMCwgNTApLnJlcGxhY2UoLyN8IHwvZywgJycpO1xuXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICdmbG9hdCYmNjQwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogc3AudXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvUGxheTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5LiL6L296KeG6aKRJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdkb3dubG9hZDovLycgKyBzcC51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VUaXRsZTogdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XG4gICAgICAgICAgICAgICAgfSwgdXJsKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSAn5Zu+6ZuG6Kej5p6QJykge1xuICAgICAgICAgICAgcmV0dXJuICQoJ3t7Y2xpcGJvYXJkfX0nLCAn5oqW6Z+zL+W/q+aJi+WbvumbhuWIhuS6q+mTvuaOpScpLmlucHV0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlucHV0KSByZXR1cm4gXCJ0b2FzdDovL+ivt+i+k+WFpeWIhuS6q+mTvuaOpVwiO1xuICAgICAgICAgICAgICAgIHZhciB1cmwgPSBpbnB1dC5tYXRjaCgvKGh0dHA6XFwvXFwvfGh0dHBzOlxcL1xcLykoKFxcd3w9fFxcP3xcXC58XFwvfCZ8LSkrKS9nKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNnYW1lVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKHVybCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJycpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3d3dy5oaGxxaWxvbmd6aHUuY24vYXBpL3NwX2p4L3R1amkucGhwP3VybD0nICsgdXJsKSkuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0aiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXNpYzogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiBqc29uLmltYWdlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYWhmaS5jbi9hcGkvcXN5aW1nP3VybD0nICsgdXJsKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGogPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVzaWM6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzoganNvbi5pbWFnZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICcwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdGoubXVzaWMsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9QbGF5OiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0ai5waWMubWFwKGltZyA9PiBkLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9mdWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogaW1nICsgJyMuanBnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaW1nICsgJyMuanBnJyxcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XG4gICAgICAgICAgICAgICAgfSwgdXJsKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSAn6Z+z6aKR6Kej5p6QJykge1xuICAgICAgICAgICAgcmV0dXJuICQoJ3t7Y2xpcGJvYXJkfX0nLCAn5oqW6Z+zL+W/q+aJi+etiemfs+inhumikeWIhuS6q+mTvuaOpScpLmlucHV0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlucHV0KSByZXR1cm4gXCJ0b2FzdDovL+ivt+i+k+WFpeWIhuS6q+mTvuaOpVwiO1xuICAgICAgICAgICAgICAgIHZhciB1cmwgPSBpbnB1dC5tYXRjaCgvKGh0dHA6XFwvXFwvfGh0dHBzOlxcL1xcLykoKFxcd3w9fFxcP3xcXC58XFwvfCZ8LSkrKS9nKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNnYW1lVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKHVybCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJycpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwOi8vYXBpLnRyZWFzb24uY24vQVBJL3ZpZGVvX2p4LnBocD91cmw9JyArIHVybCkpLm11c2ljO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHlwID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqc29uLm11c2ljTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXNpYzoganNvbi5tdXNpYy5tdXNpY0JnbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6IGpzb24ubXVzaWNBdmF0YXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnRhbmdkb3V6LmNvbS9keS5waHA/cmV0dXJuPWpzb24mbGo9JyArIHVybCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHlwID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXNpYzoganNvbi51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0geXAudGl0bGUuc3Vic3RyaW5nKDAsIDUwKS5yZXBsYWNlKC8jfCB8L2csICcnKTtcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfZnVsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWM6IHlwLnBpYyArICdAUmVmZXJlcj0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykubGF6eVJ1bGUoKHlwKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFg1V2ViVmlldygnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHlwLm11c2ljICsgJyNpc011c2ljPXRydWUjJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgeXApLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJzAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB5cC5tdXNpYyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b1BsYXk6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+S4i+i9vemfs+mikScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnZG93bmxvYWQ6Ly8nICsgeXAubXVzaWMsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VUaXRsZTogdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XG4gICAgICAgICAgICAgICAgfSwgdXJsKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAkKCd7e2NsaXBib2FyZH19JywgJ+ivt+i+k+WFpeWFqOawkUvmrYzliIbkuqvpk77mjqUnKS5pbnB1dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpbnB1dCkgcmV0dXJuIFwidG9hc3Q6Ly/or7fovpPlhaXliIbkuqvpk77mjqVcIjtcbiAgICAgICAgICAgICAgICB2YXIgdXJsID0gaW5wdXQubWF0Y2goLyhodHRwOlxcL1xcL3xodHRwczpcXC9cXC8pKChcXHd8PXxcXD98XFwufFxcL3wmfC0pKykvZyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjZ2FtZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCh1cmwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCcnKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudW9tZy5jb20vYXBpL2dldC5rZz9zb25ndXJsPScgKyB1cmwpKS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGtnID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGpzb24uc29uZ19uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcjoganNvbi5rZ19uaWNrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzoganNvbi5waWMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBqc29uLnBsYXl1cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHA6Ly9hcGkuY212aXAuY24vQVBJL3Fta2d6bGp4LnBocD91cmw9JyArIHVybCkpLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIga2cgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZToganNvbi5zb25nX25hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yOiBqc29uLmF1dGhvci5hdmF0YXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiBqc29uLnBpYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGpzb24ubXVzaWNsaW5rLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZToga2cubmFtZSArICfigKInICsga2cuYXV0aG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9mdWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpYzoga2cucGljICsgJ0BSZWZlcmVyPScsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5sYXp5UnVsZSgoa2cpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0ga2cudXJsICsgJyNpc011c2ljPXRydWUjJzvigItcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbHJjID0gZmV0Y2goJ2h0dHBzOi8vYXBpLjUydm15LmNuL2FwaS9tdXNpYy9scmM/dG9rZW49NDMwZWRjMDNjODc4ZDZjMzU0NWI3MzMyM2RiMDZlZDImbj0xJm1zZz0nICsga2cubmFtZSArICcgJyArIGtnLmF1dGhvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KCfmrYzor43ojrflj5blpLHotKUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFg1V2ViVmlldygnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsczogW3VybF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx5cmljOiBscmNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwga2cpLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJzAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBrZy51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9QbGF5OiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkuIvovb3pn7PpopEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2Rvd25sb2FkOi8vJyArIGtnLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVRpdGxlOiBrZy5uYW1lICsgJ+KAoicgKyBrZy5hdXRob3IsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XG4gICAgICAgICAgICAgICAgfSwgdXJsKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH0pLFxufSk7XG5kIn0seyJzdGF0dXMiOmZhbHNlLCJwYXR0ZXJuIjowLCJuYW1lIjoi5LiA5Liq5Zu+5paHIiwidGl0bGUiOiLlm77mlociLCJ1cmwiOiJAanM6ICQoWyAgICAgeyAgICAgdGl0bGU6ICfku4rml6Xng63mppwnLCAgICAgaWNvbjogJ2hpa2VyOi8vZmlsZXMvMDJmL3N6LzEucG5nJyB9LCAgICAgICAgICAgICAgIHsgICAgIHRpdGxlOiAn54yr55y855S15b2xJywgICAgIGljb246ICdoaWtlcjovL2ZpbGVzLzAyZi9zei8yLnBuZycgfSwgICAgICAgICAgICAgIHsgICAgIHRpdGxlOiAn56eS5oeC5paw6Ze7JywgICAgIGljb246ICdoaWtlcjovL2ZpbGVzLzAyZi9zei8zLnBuZycgfSwgICAgICAgICAgICAgIHsgICAgIHRpdGxlOiAn5pel5bi46IGK5aSpJywgICAgIGljb246ICdoaWtlcjovL2ZpbGVzLzAyZi9zei80LnBuZycgfSwgICAgICAgICAgICAgICB7ICAgICB0aXRsZTogJ+S4gOS4quWbvuaWhycsICAgICBpY29uOiAnaGlrZXI6Ly9maWxlcy8wMmYvc3ovNS5wbmcnIH0sICAgICAgICAgICAgICAgeyAgICAgdGl0bGU6ICflvIDnnLzop4bpopEnLCAgICAgaWNvbjogJ2hpa2VyOi8vZmlsZXMvMDJmL3N6LzYucG5nJyB9LCAgICAgICAgICAgICAgeyAgICAgdGl0bGU6ICfljoblj7Lku4rlpKknLCAgICAgaWNvbjogJ2hpa2VyOi8vZmlsZXMvMDJmL3N6LzcucG5nJyB9LCAgICAgICAgICAgICAgIHsgICAgIHRpdGxlOiAn57uE5Lu25bGV56S6JywgICAgIGljb246ICdoaWtlcjovL2ZpbGVzLzAyZi9zei84LnBuZycgfSwgICAgICAgICAgICAgIHsgICAgIHRpdGxlOiAn54yr55yL55m95Zmq6Z+zJywgICAgIGljb246ICdoaWtlcjovL2ZpbGVzLzAyZi9zei85LnBuZycgfSwgICAgICAgICAgICAgIHsgICAgIHRpdGxlOiAn5LqM57u056CB55Sf5oiQJywgICAgIGljb246ICdoaWtlcjovL2ZpbGVzLzAyZi9zei8xMC5wbmcnIH0sIF0sIDIsICfor7fpgInmi6knKS5zZWxlY3QoKCkgPT4geyAgICAgaWYgKGlucHV0ID09ICfku4rml6Xng63mppwnKSB7ICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjZnVsbFRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgICAgICAgICAgbGV0IGQgPSBbXTsgICAgICAgICAgICAgbGV0IHVybCA9IFwiaHR0cHM6Ly9yZWJhbmcudG9kYXkvXCI7ICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXCJ4NV93ZWJ2aWV3X3NpbmdsZVwiLCAgICAgICAgICAgICAgICAgdXJsOiB1cmwsICAgICAgICAgICAgICAgICBkZXNjOiBcImZsb2F0JiYxMDAlXCIsICAgICAgICAgICAgICAgICB0aXRsZTogXCJcIiwgICAgICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICAgICAgY2FuQmFjazogdHJ1ZSwgICAgICAgICAgICAgICAgICAgICBzaG93UHJvZ3Jlc3M6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgIHVybEludGVyY2VwdG9yOiAkLnRvU3RyaW5nKChteSkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc3RhcnRzV2l0aChteSkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC50b1N0cmluZygodXJsKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmeV9icmlkZ2VfYXBwLm9wZW4oSlNPTi5zdHJpbmdpZnkoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIuivpuaDhVwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXCJoaWtlcjovL2VtcHR5XCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZFJ1bGU6IFwianM6XCIgKyAkJCQudG9TdHJpbmcoKHUpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGpzID0gJC50b1N0cmluZygoKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC50aXRsZSAmJiBkb2N1bWVudC50aXRsZS5sZW5ndGgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHIgPSAkJCQoKS5sYXp5UnVsZSgodCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBkb2N1bWVudC50aXRsZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAucGFyc2VMYXp5UnVsZShyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5sb2coZS50b1N0cmluZygpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChbeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFwieDVfd2Vidmlld19zaW5nbGVcIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuQmFjazogdHJ1ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93UHJvZ3Jlc3M6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiBqcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IFwiMTAwJSYmZmxvYXRcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdXJsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGlucHV0KSAgICAgICAgICAgICAgICAgICAgIH0sIHVybCkgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgfSk7ICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICB9KSAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSAn54yr55y855S15b2xJykgeyAgICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I2Z5cGFnZSNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMjZnVsbFRoZW1lIycpLnJ1bGUoKCkgPT4geyAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJ+eMq+ecvOeUteW9sScpOyAgICAgICAgICAgICBsZXQgZCA9IFtdOyAgICAgICAgICAgICBsZXQgbXlfbGlzdCA9IGdldEl0ZW0oJ21hb3lhbicsICdtb3ZpZU9uSW5mb0xpc3QnKTsgICAgICAgICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKGZjKCdodHRwczovL20ubWFveWFuLmNvbS9hamF4LycgKyBteV9saXN0ICsgJz9jaT0mdG9rZW49JmxpbWl0PTAnLCAxMikpLm1vdmllSWRzOyAgICAgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7ICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn54yr55y855S15b2xJywgICAgICAgICAgICAgICAgICAgICBkZXNjOiBnZXRJdGVtKCdtYW95YW4nLCAnbW92aWVPbkluZm9MaXN0JykgPT0gJ21vdmllT25JbmZvTGlzdCcgPyAn5q2j5Zyo54Ot5pigJyA6ICfljbPlsIbkuIrmmKAnLCAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJywgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2Zhdmljb24ucXFzdXUuY24vaHR0cHM6Ly9tLm1hb3lhbi5jb20vJywgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCdtYW95YW4nLCBnZXRJdGVtKCdtYW95YW4nLCAnbW92aWVPbkluZm9MaXN0JykgPT0gJ21vdmllT25JbmZvTGlzdCcgPyAnY29taW5nTGlzdCcgOiAnbW92aWVPbkluZm9MaXN0Jyk7ICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3QoJ+W3suWIh+aNoicgKyAoZ2V0SXRlbSgnbWFveWFuJywgJ21vdmllT25JbmZvTGlzdCcpID09ICdtb3ZpZU9uSW5mb0xpc3QnID8gJ+ato+WcqOeDreaYoCcgOiAn5Y2z5bCG5LiK5pigJykpOyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknICAgICAgICAgICAgICAgICAgICAgfSksICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJywgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICB9ICAgICAgICAgICAgIGxldCBuID0gTVlfUEFHRTsgICAgICAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkgeyAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBqc29uLnNsaWNlKDAsIDYpOyAgICAgICAgICAgICB9IGVsc2UgaWYgKE1ZX1BBR0UgPT4gMikgeyAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBqc29uLnNsaWNlKG4gKiA2IC0gNiwgbiAqIDYpOyAgICAgICAgICAgICB9ICAgICAgICAgICAgIGRhdGEubWFwKGogPT4geyAgICAgICAgICAgICAgICAgbGV0IGpzID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9tLm1hb3lhbi5jb20vYWpheC9kZXRhaWxtb3ZpZT9tb3ZpZUlkPScgKyBqKSk7ICAgICAgICAgICAgICAgICBsZXQgeHEgPSBqcy5kZXRhaWxNb3ZpZTsgICAgICAgICAgICAgICAgIGxldCBkZXNjID0gKHhxLmNhdCArICdcXG4nICsgeHEuc3RhciArICdcXG4nICsgeHEucHViRGVzYykucmVwbGFjZSgvdW5kZWZpbmVkL2csICcnKTsgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHhxLm5tICsgJ1xcblxcbvCflLknICsgeHEuZGlyLCAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGRlc2MsICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYycsICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogeHEuaW1nID8geHEuaW1nIDogeHEudmlkZW9JbWcsICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IyNmdWxsVGhlbWUjJykucnVsZSgoeHEpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKHhxLm5tKTsgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTsgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB4cS5ubSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICflm77niYcnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiB4cS5pbWcgPyB4cS5pbWcgOiB4cS52aWRlb0ltZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMjZ2FtZVRoZW1lIycpLnJ1bGUoKHhxKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHhxLnBob3RvcyA9PSBudWxsKSByZXR1cm4gJ3RvYXN0Oi8v5pyo5pyJ5Zu+54mH5ZOm44CCJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhxLnBob3Rvcy5tYXAoaW1nID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfZnVsbCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6IGltZyArICcjLmpwZycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGltZyArICcjLmpwZycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHhxKSwgICAgICAgICAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdiaWdfYmxhbmtfYmxvY2snLCAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ2xpc3QmJjIwMCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHhxLnZpZGVvdXJsID8geHEudmQgOiAnJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b1BsYXk6IHRydWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1Byb2dyZXNzOiBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2JpZ19ibGFua19ibG9jaycsICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJywgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsaXN0ID0gc3RvcmFnZTAuZ2V0SXRlbSgnbWFveWFuX3NlYXJjaCcsICdbXCLpnZLosYZcIiwgXCLogZrlvbFcIiwgXCLpo47lvbFcIiwgXCLkupHnm5jlkJsu566AXCJdJyk7ICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QuZm9yRWFjaChmdW5jdGlvbihsKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3NlYXJjaD9ydWxlPScgKyBsICsgJyZzPScgKyB4cS5ubSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+abtOaUueaQnOe0oicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygobGlzdCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKGxpc3QsICfmg7PopoHmm7TmlLnnmoTmkJzntKLlsI/nqIvluo/lkI3np7AnKS5pbnB1dCgoKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oJ21hb3lhbl9zZWFyY2gnLCBpbnB1dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGxpc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBsaXN0KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmgaLlpI3pu5jorqQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbSgnbWFveWFuX3NlYXJjaCcsIGlucHV0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdiaWdfYmxhbmtfYmxvY2snLCAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnLCAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB4cS52aWRlb05hbWUgPyB4cS52aWRlb05hbWUgKyAnXFxuXFxuJyArIHhxLmRyYSA6IHhxLmRyYSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbG9uZ190ZXh0JywgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgICAgICAgICB9LCB4cSksICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICB9KSAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSAn56eS5oeC5paw6Ze7JykgeyAgICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJ+enkuaHguaWsOmXuycpOyAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTsgICAgICAgICAgICAgICAgIGxldCBqc29uID0gSlNPTi5wYXJzZShmYygnaHR0cDovL2V4Y2VycHQucnViYW9vLmNvbS90b29sbWFuL2dldE1pbmlOZXdzJywgOCkpLmRhdGE7ICAgICAgICAgICAgICAgICBsZXQgeXkgPSAnaHR0cHM6Ly95dWFueGlhcGkuY24vYXBpL3ZvaWNlLz9wZXI9MCZwaXQ9LTUmc3BkPTUuNSZ0ZXh0PeeOsOWcqOS4uuaCqOaSreaKpeaWsOmXuycgKyBqc29uLm5ld3M7ICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnLCAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICcwJiZmbG9hdCcsICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9jYXJkJywgICAgICAgICAgICAgICAgICAgICBpbWc6IGpzb24uaGVhZF9pbWFnZSwgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+aXpeacn++8micgKyBqc29uLmRhdGUsICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCh5eSkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoWDVXZWJWaWV3KHl5KTsgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JyAgICAgICAgICAgICAgICAgICAgIH0sIHl5KSAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqc29uLndlaXl1LCAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJywgICAgICAgICAgICAgICAgICAgICB1cmw6ICdjb3B5Oi8vJyArIGpzb24ud2VpeXUsICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgIGpzb24ubmV3cy5tYXAoaXRlbSA9PiB7ICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsb25nX3RleHQnLCAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbSwgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRTaXplOiAnMTcnICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgfSBjYXRjaCB7fSAgICAgICAgIH0pICAgICB9IGVsc2UgaWYgKGlucHV0ID09ICfml6XluLjogYrlpKknKSB7ICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjZ2FtZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCfml6XluLjogYrlpKnlrqQnKTsgICAgICAgICAgICAgbGV0IGQgPSBbXTsgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnLCAgICAgICAgICAgICAgICAgZGVzYzogJ2Zsb2F0JiYxMDAlJywgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vbmljaGlqb3UuY24vJywgICAgICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICAgICAgY2FuQmFjazogdHJ1ZSwgICAgICAgICAgICAgICAgICAgICBhdXRvUGxheTogdHJ1ZSwgICAgICAgICAgICAgICAgICAgICBzaG93UHJvZ3Jlc3M6IGZhbHNlLCAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgc2V0UmVzdWx0KGQpOyAgICAgICAgIH0pICAgICB9IGVsc2UgaWYgKGlucHV0ID09ICfkuIDkuKrlm77mlocnKSB7ICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjZnVsbFRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgICAgICAgICAgbGV0IGQgPSBbXTsgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnLCAgICAgICAgICAgICAgICAgZGVzYzogJ2Zsb2F0JiYxMDAlJywgICAgICAgICAgICAgICAgIHVybDogJ2h0dHA6Ly9tLnd1ZmF6aHVjZS5jb20vb25lJywgICAgICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICAgICAgY2FuQmFjazogdHJ1ZSwgICAgICAgICAgICAgICAgICAgICBzaG93UHJvZ3Jlc3M6IGZhbHNlLCAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgc2V0UmVzdWx0KGQpOyAgICAgICAgIH0pICAgICB9IGVsc2UgaWYgKGlucHV0ID09ICfnjKvnnIvnmb3lmarpn7MnKSB7ICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjZ2FtZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCfnjKvnnIvnmb3lmarpn7MnKTsgICAgICAgICAgICAgbGV0IGQgPSBbXTsgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnLCAgICAgICAgICAgICAgICAgZGVzYzogJ2Zsb2F0JiYxMDAlJywgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vd3d3Lm1hb2thbi5jYy8nLCAgICAgICAgICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgICAgICAgICBjYW5CYWNrOiB0cnVlLCAgICAgICAgICAgICAgICAgICAgIGF1dG9QbGF5OiB0cnVlLCAgICAgICAgICAgICAgICAgICAgIHNob3dQcm9ncmVzczogZmFsc2UsICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7ICAgICAgICAgfSkgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gJ+S6jOe7tOeggeeUn+aIkCcpIHsgICAgICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCfkuoznu7TnoIHnlJ/miJAnKTsgICAgICAgICAgICAgbGV0IGQgPSBbXTsgICAgICAgICAgICAgaWYgKCFmaWxlRXhpc3QoJ2hpa2VyOi8vZmlsZXMvSm0vcG5nL1FSLmpzb24nKSkgeyAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvSm0vcG5nL1FSLmpzb24nLCAnW10nKTsgICAgICAgICAgICAgfSAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvSm0vcG5nL1FSLmpzb24nKSk7ICAgICAgICAgICAgIH0gY2F0Y2gge30gICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgIHRpdGxlOiAn55Sf5oiQJywgICAgICAgICAgICAgICAgIGRlc2M6ICflhoXlrrkoWy5856m65qC8fOaNouihjF3moIfpopgpJywgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLCAgICAgICAgICAgICAgICAgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHsgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHh0ID0gaW5wdXQuc3BsaXQoL1xcbj9cXG58W1xcLl18XFx0Lyk7ICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHh0ID0gaW5wdXQ7ICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgIGxldCB0aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7ICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGUgPSAnaGlrZXI6Ly9maWxlcy9KbS9wbmcvUVIvJyArIHRpbWUgKyAnLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9ICdodHRwczovL2FwaS5zaHdnaWouY29tL2FwaS9xcmNvZGUvZ2V0P2tleT1FMDVVa3hvSGRKR1JwRG5wbzhnMGdxaWJWUiZzaXplPTEwJm1hcmdpbj0yJmxldmVsPTMmdGV4dD0nICsgdHh0WzBdOyAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ+S6jOe7tOeggeWbvueJhycsIHVybCk7ICAgICAgICAgICAgICAgICAgICAgc2F2ZUltYWdlKHVybCwgZmlsZSk7ICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7ICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0eHQgPT0gbnVsbCA/IHR4dCA6IHR4dFsxXSwgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiBmaWxlICAgICAgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgICAgICBRUiA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9KbS9wbmcvUVIuanNvbicpKTsgICAgICAgICAgICAgICAgICAgICBRUiA9IFFSLmNvbmNhdChkYXRhKTsgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9KbS9wbmcvUVIuanNvbicsIEpTT04uc3RyaW5naWZ5KFFSKSk7ICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpOyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eScgICAgICAgICAgICAgICAgIH0pLCAgICAgICAgICAgICB9KTsgICAgICAgICAgICAganNvbi5tYXAoaiA9PiB7ICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqLnRpdGxlIHx8ICfkuI3lj5bkuKrlkI3lrZflkJfvvJ8nLCAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfM19jZW50ZXInLCAgICAgICAgICAgICAgICAgICAgIHBpYzogZ2V0SXRlbSgn5LqM57u056CB5Zu+54mHJykgfHwgai5waWMsICAgICAgICAgICAgICAgICAgICAgZGVzYzogJzAnLCAgICAgICAgICAgICAgICAgICAgIHVybDogXCJzZWxlY3Q6Ly9cIiArIEpTT04uc3RyaW5naWZ5KHsgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1wi5p+l55yLXCIsIFwi5Yig6ZmkXCJdLCAgICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2hWaWV3OiB0cnVlLCAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoaikgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09ICfmn6XnnIsnKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldFBhdGgoai5waWMpICsgJyMuanBnJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRUiA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9KbS9wbmcvUVIuanNvbicpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXhUb1JlbW92ZSA9IFFSLmluZGV4T2Yoai5waWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZW1vdmVkRWxlbWVudHMgPSBRUi5zcGxpY2UoaW5kZXhUb1JlbW92ZSwgMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvSm0vcG5nL1FSLmpzb24nLCBKU09OLnN0cmluZ2lmeShRUikpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUZpbGUoai5waWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5Yig6Zmk5oiQ5YqfficgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgfSwgaikgICAgICAgICAgICAgICAgICAgICB9KSwgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgc2V0UmVzdWx0KGQpOyAgICAgICAgIH0pICAgICB9IGVsc2UgaWYgKGlucHV0ID09ICflvIDnnLzop4bpopEnKSB7ICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjZnlwYWdlI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJ+W8gOecvOinhumikScpOyAgICAgICAgICAgICBsZXQgZCA9IFtdOyAgICAgICAgICAgICAgZnVuY3Rpb24ganNvbih1cmwpIHsgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKHVybCkpOyAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0ganNvbi5pdGVtTGlzdDsgICAgICAgICAgICAgICAgIH0gY2F0Y2gge30gICAgICAgICAgICAgICAgIGl0ZW0uZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHsgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS50eXBlID09IFwidmlkZW9cIikgeyAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW1nID0gaXRlbS5kYXRhLmNvdmVyLmZlZWQucmVwbGFjZSgnYWxpLWFsaS0nLCAnYWxpLScpLnNwbGl0KCc/JylbMF07ICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5kYXRhLnRpdGxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IGltZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ3ZpZGVvOi8vJyArIGl0ZW0uZGF0YS5wbGF5VXJsLCAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICB9OyAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICBwdXRWYXIoJ24nLCBqc29uLm5leHRQYWdlVXJsKTsgICAgICAgICAgICAgfTsgICAgICAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkgeyAgICAgICAgICAgICAgICAganNvbignaHR0cDovL2Jhb2JhYi5rYWl5YW5hcHAuY29tL2FwaS92NC90YWJzL3NlbGVjdGVkJyk7ICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICBuZXh0cCA9IGdldFZhcignbicpOyAgICAgICAgICAgICAgICAganNvbihuZXh0cCk7ICAgICAgICAgICAgIH0gICAgICAgICAgICAgc2V0UmVzdWx0KGQpOyAgICAgICAgIH0pICAgICB9IGVsc2UgaWYgKGlucHV0ID09ICfljoblj7Lku4rlpKknKSB7ICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJ+WOhuWPsuS4iueahOS7iuWkqScpOyAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZjKCdodHRwczovL3FxbHlrbS5jbi9hcGkvaGlzdG9yeS9nZXQ/a2V5PTc5UjhXMDI0ZndFaFBhcWJrY2NweExhTGltJywgOCkpOyAgICAgICAgICAgICB9IGNhdGNoIHt9ICAgICAgICAgICAgIGxldCBkID0gW107ICAgICAgICAgICAgIGxldCBpbWcgPSAnaHR0cHM6Ly9xcWx5a20uY24vYXBpL2JpbmcvZ2V0P2tleT03OVI4VzAyNGZ3RWhQYXFia2NjcHhMYUxpbSZ0eXBlPXJhbmQnICsgJyMnICsgRGF0ZS5ub3coKSArICcjLmpwZyc7ICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICB0aXRsZTogJ+W/hemhu+iupOecn+WvueW+heWOhuWPsuS6i+Wunizku6XmraPop4blkKzmraPpnaLlkJHmnKrmnaXjgIInLCAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJywgICAgICAgICAgICAgICAgIGRlc2M6ICfljoblj7LmmK/kuIDpnaLmsLjkuI3opKroibLnmoTplZzlrZDvvIzlroPlsZXnjrDnnYDkurrnsbvmlofmmI7nmoTov5vnqIvvvIzkuZ/orrDlvZXnnYDkurrnsbvnmoTnvarmgbbkuI7mgrLliafjgIInICsganNvbi5kYXRlLCAgICAgICAgICAgICAgICAgcGljOiBpbWcsICAgICAgICAgICAgICAgICB1cmw6IGltZywgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgIGpzb24uZGF0YS5tYXAodSA9PiBkLnB1c2goeyAgICAgICAgICAgICAgICAgdGl0bGU6IHUueWVhciArICflubQ6ICcgKyB1LnRpdGxlLCAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLCAgICAgICAgICAgICAgICAgZGVzYzogJ+eCueWHu+afpeeci+S6uueJqeivpuaDhScsICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjZnVsbFRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeScpLnJ1bGUoKHUpID0+IHsgICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdOyAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnLCAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAnZmxvYXQmJjEwMCUnLCAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHUudXJsLCAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuQmFjazogdHJ1ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dQcm9ncmVzczogZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7ICAgICAgICAgICAgICAgICB9LCB1KSwgICAgICAgICAgICAgfSkpOyAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7ICAgICAgICAgfSkgICAgIH0gZWxzZSB7ICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICAgICAgICAgIHNldFBhZ2VUaXRsZSgn57uE5Lu25bGV56S6Jyk7ICAgICAgICAgICAgIGxldCBkID0gW107ICAgICAgICAgICAgIGxldCBpbWcgPSAnaGlrZXI6Ly9pbWFnZXMvaG9tZV9iZyc7ICAgICAgICAgICAgIGxldCBiYXNlRWxlbWVudHMgPSBbJ3RleHRfMScsICd0ZXh0X2NlbnRlcl8xJywgJ3RleHRfMicsICd0ZXh0XzMnLCAndGV4dF80JywgJ3RleHRfNScsICdmbGV4X2J1dHRvbicsICdzY3JvbGxfYnV0dG9uJ107ICAgICAgICAgICAgIGxldCBwaWNFbGVtZW50cyA9IFsncGljXzFfZnVsbCcsICdwaWNfMycsICdwaWNfM19zcXVhcmUnXTsgICAgICAgICAgICAgbGV0IGljb25FbGVtZW50cyA9IFsndGV4dF9pY29uJywgJ2F2YXRhcicsICdpY29uXzFfc2VhcmNoJywgJ21vdmllXzEnLCAnbW92aWVfMV9sZWZ0X3BpYycsICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYycsICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJywgJ21vdmllXzInLCAnbW92aWVfMycsICdtb3ZpZV8zX21hcnF1ZWUnLCAncGljXzEnLCAncGljXzFfY2FyZCcsICdwaWNfMicsICdwaWNfMl9jYXJkJywgJ2ljb25fMicsICdpY29uXzJfcm91bmQnLCAnaWNvbl9zbWFsbF8zJywgJ2ljb25fM19yb3VuZF9maWxsJywgJ2ljb25fNCcsICdpY29uXzRfY2FyZCcsICdpY29uX3NtYWxsXzQnLCAnaWNvbl9yb3VuZF80JywgJ2ljb25fcm91bmRfc21hbGxfNCcsICdpY29uXzUnLCAnY2FyZF9waWNfMl8yJywgJ2NhcmRfcGljXzJfMl9sZWZ0JywgJ2NhcmRfcGljXzMnLCAnY2FyZF9waWNfM19jZW50ZXInXTsgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgIHRpdGxlOiAnaW5wdXQnLCAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsICAgICAgICAgICAgICAgICBkZXNjOiAn6K+05piO77ya54K55Ye75Y2z5aSN5Yi25qC35byPIScsICAgICAgICAgICAgICAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4geyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnY29weTovL2lucHV0JyAgICAgICAgICAgICAgICAgfSksICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICBiYXNlRWxlbWVudHMuZm9yRWFjaCh3ID0+IGQucHVzaCh7ICAgICAgICAgICAgICAgICB0aXRsZTogdywgICAgICAgICAgICAgICAgIGNvbF90eXBlOiB3LCAgICAgICAgICAgICAgICAgdXJsOiAnY29weTovLycgKyB3LCAgICAgICAgICAgICB9KSk7ICAgICAgICAgICAgIHBpY0VsZW1lbnRzLmZvckVhY2gocCA9PiB7ICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwLCAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJywgICAgICAgICAgICAgICAgICAgICB1cmw6ICdjb3B5Oi8vJyArIHAsICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IHAsICAgICAgICAgICAgICAgICAgICAgcGljOiBpbWcsICAgICAgICAgICAgICAgICAgICAgdXJsOiAnY29weTovLycgKyBwLCAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICBpY29uRWxlbWVudHMuZm9yRWFjaChpID0+IHsgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGksICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IGksICAgICAgICAgICAgICAgICAgICAgcGljOiBpbWcsICAgICAgICAgICAgICAgICAgICAgdXJsOiAnY29weTovLycgKyBpLCAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgdGl0bGU6ICdjYXJkX3BpY18xJywgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMScsICAgICAgICAgICAgICAgICBkZXNjOiAnMCcsICAgICAgICAgICAgICAgICBwaWM6IGltZywgICAgICAgICAgICAgICAgIHVybDogJ2NvcHk6Ly9jYXJkX3BpY18xJywgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgdGl0bGU6ICdjYXJkX3BpY18yJywgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMicsICAgICAgICAgICAgICAgICBkZXNjOiAnMCcsICAgICAgICAgICAgICAgICBwaWM6IGltZywgICAgICAgICAgICAgICAgIHVybDogJ2NvcHk6Ly9jYXJkX3BpY18yJywgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgdGl0bGU6ICd4NV93ZWJ2aWV3X3NpbmdsZScsICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsICAgICAgICAgICAgICAgICB1cmw6ICdjb3B5Oi8veDVfd2Vidmlld19zaW5nbGUnLCAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICB0aXRsZTogJ2xvbmdfdGV4dCcsICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMicsICAgICAgICAgICAgICAgICB1cmw6ICdjb3B5Oi8vbG9uZ190ZXh0JywgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgdGl0bGU6ICdyaWNoX3RleHQnLCAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInLCAgICAgICAgICAgICAgICAgdXJsOiAnY29weTovL3JpY2hfdGV4dCcsICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgIHRpdGxlOiAnbGluZScsICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJywgICAgICAgICAgICAgICAgIHVybDogJ2NvcHk6Ly9saW5lJywgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJywgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgdGl0bGU6ICdsaW5lX2JsYW5rJywgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nLCAgICAgICAgICAgICAgICAgdXJsOiAnY29weTovL2xpbmVfYmxhbmsnLCAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnLCAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICB0aXRsZTogJ2JsYW5rX2Jsb2NrJywgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nLCAgICAgICAgICAgICAgICAgdXJsOiAnY29weTovL2JsYW5rX2Jsb2NrJywgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaycsICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgIHRpdGxlOiAnYmlnX2JsYW5rX2Jsb2NrJywgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nLCAgICAgICAgICAgICAgICAgdXJsOiAnY29weTovL2JpZ19ibGFua19ibG9jaycsICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJywgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgdGl0bGU6ICdiaWdfYmlnX2JsYW5rX2Jsb2NrJywgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nLCAgICAgICAgICAgICAgICAgdXJsOiAnY29weTovL2JpZ19iaWdfYmxhbmtfYmxvY2snLCAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2JpZ19iaWdfYmxhbmtfYmxvY2snLCAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgc2V0UmVzdWx0KGQpOyAgICAgICAgIH0pICAgICB9IH0pIiwiaWNvbiI6Imhpa2VyOi8vZmlsZXMvMDJmL21vcmUv5Zu+LnBuZyIsImRlc2MiOiIiLCJ0eXBlIjoiaWNvbl81In0seyJ0aXRsZSI6IjHnu4QxIiwidXJsIjoiIiwiaWNvbiI6IiIsImRlc2MiOiIiLCJ0eXBlIjoibGluZSIsIm5hbWUiOiIx57uEMSIsInN0YXR1cyI6ZmFsc2UsInBhdHRlcm4iOjB9LHsic3RhdHVzIjpmYWxzZSwicGF0dGVybiI6MCwibmFtZSI6IuWNs+WwhuS4iuaYoOeahOeUteW9sSIsInRpdGxlIjoi5LiK5pig55S15b2xIiwidXJsIjoiQGpzOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgICAgIHNldFBhZ2VUaXRsZSgn5Y2z5bCG5LiK5pig55qE55S15b2xJyk7ICAgICAgICAgdmFyIGQgPSBbXTsgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vcXFseWttLmNuL2FwaS9qaWppYW5nc2hhbmd5aW5nL2dldD9rZXk9NzlSOFcwMjRmd0VoUGFxYmtjY3B4TGFMaW0nKSk7ICAgICAgICAganNvbi5kYXRhLm1hcChkYXRhID0+IGQucHVzaCh7ICAgICAgICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlICsgJ1xcblxcbicgKyBkYXRhLnJlbGVhc2VEYXRlU3RyICsgJ+S4iuaYoCcsICAgICAgICAgICAgIGRlc2M6ICflr7zmvJTvvJonICsgZGF0YS5kaXJlY3RvciArICdcXG7mvJTlkZjvvJonICsgZGF0YS5hY3RvcnMgKyAnXFxu57G75Z6L77yaJyArIGRhdGEudHlwZSwgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYycsICAgICAgICAgICAgIHBpY191cmw6IGRhdGEucGljVXJsLCAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3NlYXJjaD9zPScgKyBkYXRhLnRpdGxlICsgJyZydWxlPemdkuixhiZzaW1wbGU9ZmFsc2UnLCAgICAgICAgIH0pKTsgICAgICAgICBzZXRSZXN1bHQoZCk7ICAgICB9KSB9KSIsImljb24iOiJoaWtlcjovL2ZpbGVzLzAyZi9tb3JlL+S4ii5wbmciLCJkZXNjIjoiIiwidHlwZSI6Imljb25fNSJ9LHsic3RhdHVzIjpmYWxzZSwicGF0dGVybiI6MCwibmFtZSI6IuaWsOWOu+awtOWNsCIsInRpdGxlIjoi5Y675rC05Y2wIiwidXJsIjoiQGpzOiQoWyfwn5SwIOWOu+mZpOawtOWNsCcsIFwi8J+UiSDmj5Dlj5bpn7PkuZBcIiwgJ/Cfk4Eg5paH5Lu2566h55CGJywgJ/CfjrYg5q2M6K+N6YCC6YWNJ10sIDIsICfpgInmi6nmk43kvZwnKS5zZWxlY3QoKCk9PntcdHJldHVybiAocmMoJ2h0dHBzOi8vaGlrZXJmYW5zLmNvbS93ZWlzeXIv5oqW5L2gX2ludG8uanMnLDI0KSkoKX0pIiwiaWNvbiI6Imhpa2VyOi8vZmlsZXMvemYwMS9wbmcv5oqW6Z+zLnBuZyIsImRlc2MiOiIiLCJ0eXBlIjoiaWNvbl9zbWFsbF80In1dLCJmb2xkX3N0YXR1cyI6ZmFsc2UsInBhdHRlcm4iOjN9LHsibmFtZSI6Iue7hDIiLCJtYXJrIjoiQSIsImxpc3QiOlt7InRpdGxlIjoi57uEMmxpbmUiLCJ1cmwiOiIiLCJpY29uIjoiIiwiZGVzYyI6IiIsInR5cGUiOiJsaW5lIiwibmFtZSI6Iue7hDJsaW5lIiwic3RhdHVzIjpmYWxzZSwicGF0dGVybiI6MH0seyJzdGF0dXMiOmZhbHNlLCJwYXR0ZXJuIjoyLCJuYW1lIjoi5bi455So5bCP56iL5bqP6ZqP5pe25Y+v5re7IiwiY29kZSI6Ilt7XG4gICAgdGl0bGU6IFwi4oCY4oCY4oCZ4oCZIDxzcGFuPuW4uOeUqDwvc3Bhbj5cIixcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xuICAgICAgICBpZiAoIWZpbGVFeGlzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9UaGVtZS9wcm9ncmFtLmpzb24nKSkge1xuICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvVGhlbWUvcHJvZ3JhbS5qc29uJywgJ1tdJyk7XG4gICAgICAgIH1cbiAgICAgICAgcHJvZ3JhbSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9UaGVtZS9wcm9ncmFtLmpzb24nKSk7XG4gICAgICAgIHNlbGVjdF9zaG93ID0gWyfwn5OdJ10uY29uY2F0KHByb2dyYW0pO1xuICAgICAgICByZXR1cm4gJChzZWxlY3Rfc2hvdywgMiwgJ+W4uOeUqOWwj+eoi+W6jycpLnNlbGVjdCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5wdXQgPT0gJ/Cfk50nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHknKS5ydWxlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCfluLjnlKjlsI/nqIvluo/nrqHnkIYnKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9UaGVtZS9wcm9ncmFtLmpzb24nKSk7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW5kZXggKyAnLScgKyBpdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChbJ+e8lui+kScsJ+enu+S9jScsICfliKDpmaQnXSwgMywgJ+ivt+mAieaLqeaTjeS9nCcpLnNlbGVjdCgoaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09ICfnvJbovpEnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgnJywgJ+ivt+i+k+WFpeimgeenu+WKqOWIsOWTquS4quW6j+WPt+WJjemdoicpLmlucHV0KChpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0gPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvVGhlbWUvcHJvZ3JhbS5qc29uJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1baW5kZXhdPWlucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L1RoZW1lL3Byb2dyYW0uanNvbicsIEpTT04uc3RyaW5naWZ5KHByb2dyYW0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+abtOaUueaIkOWKn34nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYgKGlucHV0ID09ICfnp7vkvY0nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgnJywgJ+ivt+i+k+WFpeimgeenu+WKqOWIsOWTquS4quW6j+WPt+WJjemdoicpLmlucHV0KChpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0gPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvVGhlbWUvcHJvZ3JhbS5qc29uJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSBwcm9ncmFtW2luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLnNwbGljZShpbnB1dCwgMCwgdGVtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0PGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0uc3BsaWNlKGluZGV4KzEsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L1RoZW1lL3Byb2dyYW0uanNvbicsIEpTT04uc3RyaW5naWZ5KHByb2dyYW0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+enu+S9jeaIkOWKn34nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L1RoZW1lL3Byb2dyYW0uanNvbicpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L1RoZW1lL3Byb2dyYW0uanNvbicsIEpTT04uc3RyaW5naWZ5KHByb2dyYW0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/liKDpmaTmiJDlip9+JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGluZGV4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4p6V5re75Yqg5pu05aSa5bi455So5bCP56iL5bqPJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHknKS5ydWxlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCfmt7vliqDluLjnlKjlsI/nqIvluo8nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5bCP56iL5bqP5ZCNJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfovpPlhaXpnIDopoHot7PovaznmoTlsI/nqIvluo/lkI0s5L6L5aaCOuiBmua8q++8jOmjjuW9sScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IC0xLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBcInB1dE15VmFyKCduYW1lX3Byb2dyYW0nLGlucHV0KVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiaWc+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkVCODk3XCI+56GuIOiupCDmt7sg5YqgPC9zcGFuPjwvYmlnPicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcignbmFtZV9wcm9ncmFtJykgPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+S4jeiDveS4uuepun4nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV9wcm9ncmFtID0gZ2V0TXlWYXIoJ25hbWVfcHJvZ3JhbScpLnNwbGl0KC8sfO+8jC8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L1RoZW1lL3Byb2dyYW0uanNvbicpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbSA9IHByb2dyYW0uY29uY2F0KG5hbWVfcHJvZ3JhbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L1RoZW1lL3Byb2dyYW0uanNvbicsIEpTT04uc3RyaW5naWZ5KHByb2dyYW0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFjayh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwidG9hc3Q6Ly/luLjnlKjlsI/nqIvluo/mt7vliqDmiJDlip9+XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2hvbWVAJyArIGlucHV0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH0pLFxuXG5waWNfdXJsOidoaWtlcjovL2ZpbGVzLzAyZi9tb3JlL+W4uC5wbmcnLFxuICAgIGNvbF90eXBlOiAnaWNvbl80J1xufV0ifSx7InN0YXR1cyI6ZmFsc2UsInBhdHRlcm4iOjAsIm5hbWUiOiJC56uZ6Kej5p+dIiwidGl0bGUiOiJC56uZ6Kej5p+dIiwidXJsIjoiQGpzOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgICAgdmFyIGQgPSBbXTsgICAgICAgIHZhciB1cmwgPSAoJ2h0dHA6Ly96aG91cWwudmlwL2JpbGliaWxpLycpOyAgICAgICAgIGQucHVzaCh7ICAgIHVybDogdXJsLCAgICBjb2xfdHlwZTogXCJ4NV93ZWJ2aWV3X3NpbmdsZVwiLCAgICBkZXNjOiBcImZsb2F0JiYxMDAlXCIsICAgIGV4dHJhOiB7ICAgICAgICBmbG9hdFZpZGVvOiB0cnVlLCAgICAgICAgY2FuQmFjazogdHJ1ZSwgICAgICAgIGJsb2NrUnVsZXM6IFtcIi5naWZcIiwgXCIvYWQvXCIsIFwiZ29vZ2xlXCIsXCIuR0lGXCIsXCJhZFwiLF0gICAgfX0pOyAgICAgICAgc2V0UmVzdWx0KGQpOyAgICB9KX0pOyIsImljb24iOiJoaWtlcjovL2ZpbGVzL3pmL3BuZy/lk5Tlk6kucG5nIiwiZGVzYyI6IiIsInR5cGUiOiJpY29uXzQifSx7InN0YXR1cyI6ZmFsc2UsInBhdHRlcm4iOjAsIm5hbWUiOiLmtbfpmJTkupHliarliIfmnb8iLCJ0aXRsZSI6Iua1t+mYlOS6keWJquWIh+advyIsInVybCI6Imhpa2VyOi8vaG9tZUDmtbfpmJTkupHliarliIfmnb8iLCJpY29uIjoiIiwiZGVzYyI6IiIsInR5cGUiOiJ0ZXh0XzQifSx7InRpdGxlIjoi5Ymq5YiH5p2/5LuT5bqTIiwidXJsIjoiaGlrZXI6Ly9ob21lQOWJquWIh+adv+S7k+W6kyIsImljb24iOiIiLCJkZXNjIjoiIiwidHlwZSI6InRleHRfNCIsIm5hbWUiOiLliarliIfmnb/ku5PlupMiLCJzdGF0dXMiOmZhbHNlLCJwYXR0ZXJuIjowfSx7InN0YXR1cyI6ZmFsc2UsInBhdHRlcm4iOjAsIm5hbWUiOiLpgZPplb/ku5PlupMiLCJ0aXRsZSI6IumBk+mVv+S7k+W6kyIsInVybCI6Imhpa2VyOi8vaG9tZUDpgZPplb/ku5PlupNQcm8iLCJpY29uIjoiaGlrZXI6Ly9maWxlcy8wMXpmL3N2Zy/pgZPplb/ku5PlupMuc3ZnIiwiZGVzYyI6IiIsInR5cGUiOiJ0ZXh0XzQifSx7InN0YXR1cyI6ZmFsc2UsInBhdHRlcm4iOjAsIm5hbWUiOiLnlLvmnb8yIiwidGl0bGUiOiLnlLvmnb8iLCJ1cmwiOiJAanM6ICQoJ2hpa2VyOi8vZW1wdHkjZ2FtZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgIHNldFBhZ2VUaXRsZSgnJyk7ICAgICBsZXQgZCA9IFtdOyAgICAgZC5wdXNoKHsgICAgICAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJywgICAgICAgICBkZXNjOiAnZmxvYXQmJjEwMCUnLCAgICAgICAgIHVybDogJ2h0dHA6Ly90b29sLm1rYmxvZy5jbi93aGl0ZWJvYXJkLycsICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgY2FuQmFjazogdHJ1ZSwgICAgICAgICAgICAgc2hvd1Byb2dyZXNzOiBmYWxzZSwgICAgICAgICB9ICAgICB9KTsgICAgIHNldFJlc3VsdChkKTsgfSkiLCJpY29uIjoiaGlrZXI6Ly9maWxlcy96Zi9wbmcv55S7LnBuZyIsImRlc2MiOiIiLCJ0eXBlIjoiaWNvbl80In0seyJzdGF0dXMiOmZhbHNlLCJwYXR0ZXJuIjoyLCJuYW1lIjoi5a6J5Y2T5aOB57q4VCIsImNvZGUiOiJ0cnIgPSBbe1xuICAgICd0aXRsZSc6ICfmnIDmlrAnLFxuICAgICdpZCc6ICcnXG59LCB7XG4gICAgJ3RpdGxlJzogJ+e+juWlsycsXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZTRkNjEwY2RmNzE0ZDI5NjYwMDAwMDAnXG59LCB7XG4gICAgJ3RpdGxlJzogJ+WKqOa8qycsXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZTRkNjEwY2RmNzE0ZDI5NjYwMDAwMDMnXG59LCB7XG4gICAgJ3RpdGxlJzogJ+mjjuaZrycsXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZTRkNjEwY2RmNzE0ZDI5NjYwMDAwMDInXG59LCB7XG4gICAgJ3RpdGxlJzogJ+a4uOaIjycsXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZTRkNjEwY2RmNzE0ZDI5NjYwMDAwMDcnXG59LCB7XG4gICAgJ3RpdGxlJzogJ+aWh+WtlycsXG4gICAgJ2lkJzogJy9jYXRlZ29yeS81MTA5ZTA0ZTQ4ZDViOTM2NGFlOWFjNDUnXG59LCB7XG4gICAgJ3RpdGxlJzogJ+inhuiniScsXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZmI0NzlmNzViYTFjNjU1NjEwMDAwMjcnXG59LCB7XG4gICAgJ3RpdGxlJzogJ+aDheaEnycsXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZWYwYTM1YzA1Njk3OTU3NTYwMDAwMDAnXG59LCB7XG4gICAgJ3RpdGxlJzogJ+iuvuiuoScsXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZmI0N2ExOTViYTFjNjBjYTUwMDAyMjInXG59LCB7XG4gICAgJ3RpdGxlJzogJ+aYjuaYnycsXG4gICAgJ2lkJzogJy9jYXRlZ29yeS81MTA5ZTA1MjQ4ZDViOTM2OGJiNTU5ZGMnXG59LCB7XG4gICAgJ3RpdGxlJzogJ+eJqeivrScsXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZmI0N2E0NjViYTFjNjU1NjEwMDAwMjgnXG59LCB7XG4gICAgJ3RpdGxlJzogJ+eUt+S6uicsXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZTRkNjEwY2RmNzE0ZDI5NjYwMDAwMDYnXG59LCB7XG4gICAgJ3RpdGxlJzogJ+acuuaisCcsXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZTRkNjEwY2RmNzE0ZDI5NjYwMDAwMDUnXG59LCB7XG4gICAgJ3RpdGxlJzogJ+WfjuW4gicsXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZmI0N2EzMDViYTFjNjBjYTUwMDAyMjMnXG59LCB7XG4gICAgJ3RpdGxlJzogJ+WKqOeJqScsXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZTRkNjEwY2RmNzE0ZDI5NjYwMDAwMDEnXG59XTtcbnZhciB0aWkgPSBnZXRJdGVtKCd0aWQnLCAnJyk7XG52YXIgdGlkID0gdHJyLm1hcChpID0+IGkuaWQpO1xubm8gPSAnI2dhbWVUaGVtZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJztcbnVybCA9ICdodHRwOi8vc2VydmljZS5waWNhc3NvLmFkZXNrLmNvbS92MS92ZXJ0aWNhbCcgKyB0aWkgKyAnL3ZlcnRpY2FsP2xpbWl0PTMwJnNraXA9ZnlwYWdlQC0xQCozMEAjYXV0b1BhZ2UjJyArIG5vO1xuW3tcbiAgICB0aXRsZTogJ+Wjgee6uCcsXG4gICAgY29sX3R5cGU6ICdpY29uXzQnLFxuICAgIGltZzogJ2hpa2VyOi8vZmlsZXMvemYvY3kv5aOB57q4LnBuZycsXG4gICAgdXJsOiAkKHVybCkucnVsZSgoKSA9PiB7XG4gICAgICAgIGQgPSBKU09OLnBhcnNlKGdldFJlc0NvZGUoKSkucmVzLnZlcnRpY2FsLm1hcChodG1sID0+ICh7XG4gICAgICAgICAgICB0aXRsZTogJycsXG4gICAgICAgICAgICB1cmw6IGh0bWwucHJldmlldyArICcjLmpwZycsXG4gICAgICAgICAgICBpbWc6IGh0bWwucHJldmlldyxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfZnVsbCdcbiAgICAgICAgfSkpO1xuICAgICAgICBzZXRSZXN1bHQoZCk7XG4gICAgfSksXG4gICAgZXh0cmE6IHtcbiAgICAgICAgbG9uZ0NsaWNrOiBbe1xuICAgICAgICAgICAgdGl0bGU6ICfwn5SE5YiH5o2i5YiG57G7JyxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCh0cnIsIHRpZCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBuYW1lID0gdHJyLm1hcCh0ID0+IHQudGl0bGUpO1xuICAgICAgICAgICAgICAgIHJldHVybiAkKG5hbWUsIDMsICfor7fpgInmi6knKS5zZWxlY3QoKHRyciwgdGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IHRyci5maW5kSW5kZXgodCA9PiB0LnRpdGxlID09IGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IHRyclt0aXRsZV0uaWQ7XG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ3RpZCcsIHVybCk7XG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suWIh+aNoidcbiAgICAgICAgICAgICAgICB9LCB0cnIsIHRpZClcbiAgICAgICAgICAgIH0sIHRyciwgdGlkKVxuICAgICAgICB9XVxuICAgIH1cbn1dOyJ9LHsic3RhdHVzIjpmYWxzZSwicGF0dGVybiI6MiwibmFtZSI6IuS6keetviIsImNvZGUiOiJ2YXIgYWxpeXVuID0gW107XG5hbGl5dW4ucHVzaCh7XG4gICAgdGl0bGU6ICfpmL/ph4zkupHnrb4nLFxuICAgIHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcbiAgICAgICAgbGV0IHJlZnJlc2hUb2VrbkFycnkgPSBKU09OLnBhcnNlKGdldEl0ZW0oXCJyZWZyZXNoVG9la25BcnJ5XCIsIFwiW11cIikpO1xuICAgICAgICAvL2xvZyhyZWZyZXNoVG9la25BcnJ5KVxuICAgICAgICBpZiAocmVmcmVzaFRvZWtuQXJyeS5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZWZyZXNoVG9la25BcnJ5ID0gSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvblwiKSk7XG4gICAgICAgICAgICAgICAgLy9sb2cocmVmcmVzaFRvZWtuQXJyeSlcbiAgICAgICAgICAgICAgICAvL3NldEl0ZW0oXCJyZWZyZXNoVG9la25BcnJ5XCIsIEpTT04uc3RyaW5naWZ5KHJlZnJlc2hUb2VrbkFycnkpKTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBhdXRvU2lnbmluKHJlZnJlc2hUb2VrbkFycnkpXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAvL2NsZWFySXRlbShcInJlZnJlc2hUb2VrbkFycnlcIilcbiAgICAgICAgICAgICAgICAgICAgdG9hc3QoXCLmlbDmja7lvILluLjvvIzkvLDorqFyZWZyZXNoVG9la27ov4fmnJ/kuobvvIzor7fku47mlrDnmbvlvZXvvIFcIilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiaGlrZXI6Ly9lbXB0eVwiXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgLy9sb2coZS50b1N0cmluZygpKVxuICAgICAgICAgICAgICAgIHJldHVybiAkKFwiXCIsIFwi6K+36L6T5YWlcmVmcmVzaF90b2tlbu+8jOWkmuS4quWAvOivt+eUqOiLseaWh+mAl+WPtygsKemalOW8gFwiKS5pbnB1dCgoYXV0b1NpZ25pbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVnaGV4ID0gL15bQS1GYS1mMC05XSskLztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ2hleC50ZXN0KGlucHV0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC8sLy50ZXN0KGlucHV0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQuc3BsaXQoXCIsXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRvZWtuQXJyeS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicmVmcmVzaF90b2tlblwiOiBpbnB1dFtpXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRvZWtuQXJyeSA9IFt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicmVmcmVzaF90b2tlblwiOiBpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFwicmVmcmVzaFRvZWtuQXJyeVwiLCBKU09OLnN0cmluZ2lmeShyZWZyZXNoVG9la25BcnJ5KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b1NpZ25pbihyZWZyZXNoVG9la25BcnJ5KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbShcInJlZnJlc2hUb2VrbkFycnlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2FzdChcIuaVsOaNruW8guW4uO+8jOS8sOiuoXJlZnJlc2hUb2Vrbui/h+acn+S6hu+8jOivt+S7juaWsOeZu+W9leaIluiAhei+k+WFpe+8gVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiaGlrZXI6Ly9lbXB0eVwiXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJ0b2FzdDovL+ivt+i+k+WFpeato+ehrueahHJlZnJlc2hfdG9rZW7lgLzvvIFcIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgYXV0b1NpZ25pbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXV0b1NpZ25pbihyZWZyZXNoVG9la25BcnJ5KVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNsZWFySXRlbShcInJlZnJlc2hUb2VrbkFycnlcIilcbiAgICAgICAgICAgICAgICB0b2FzdChcIuaVsOaNruW8guW4uO+8jOS8sOiuoXJlZnJlc2hUb2Vrbui/h+acn+S6hu+8jOivt+S7juaWsOeZu+W9leaIluiAhei+k+WFpe+8gVwiKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFwiaGlrZXI6Ly9lbXB0eVwiXG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBhdXRvU2lnbmluKHJlZnJlc2hUb2VrbkFycnkpIHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZUFjY2Vzc3NUb2tlblVSTCA9IFwiaHR0cHM6Ly9hdXRoLmFsaXl1bmRyaXZlLmNvbS92Mi9hY2NvdW50L3Rva2VuXCI7XG4gICAgICAgICAgICBjb25zdCBzaWduaW5sVVJMID0gXCJodHRwczovL21lbWJlci5hbGl5dW5kcml2ZS5jb20vdjEvYWN0aXZpdHkvc2lnbl9pbl9saXN0XCI7XG4gICAgICAgICAgICBjb25zdCBzaWduaW5yVVJMID0gXCJodHRwczovL21lbWJlci5hbGl5dW5kcml2ZS5jb20vdjEvYWN0aXZpdHkvc2lnbl9pbl9yZXdhcmRcIjtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWZyZXNoVG9la25BcnJ5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcXVlcnlCb2R5ID0ge1xuICAgICAgICAgICAgICAgICAgICAnZ3JhbnRfdHlwZSc6ICdyZWZyZXNoX3Rva2VuJyxcbiAgICAgICAgICAgICAgICAgICAgJ3JlZnJlc2hfdG9rZW4nOiByZWZyZXNoVG9la25BcnJ5W2ldLnJlZnJlc2hfdG9rZW5cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgbGV0IGhlYWRlcnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgbGV0IGNvZGUgPSBmZXRjaCh1cGRhdGVBY2Nlc3NzVG9rZW5VUkwsIHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkocXVlcnlCb2R5KVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgbGV0IGNvZGVKc29uID0gSlNPTi5wYXJzZShjb2RlKTtcbiAgICAgICAgICAgICAgICBsZXQgYWNjZXNzX3Rva2VuID0gY29kZUpzb24uYWNjZXNzX3Rva2VuO1xuXG4gICAgICAgICAgICAgICAgLy/nrb7liLBcbiAgICAgICAgICAgICAgICBsZXQgc2lsRGF0YSA9IEpTT04ucGFyc2UoZmV0Y2goc2lnbmlubFVSTCwge1xuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShxdWVyeUJvZHkpLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIGFjY2Vzc190b2tlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGxldCBkYXkgPSBzaWxEYXRhLnJlc3VsdC5zaWduSW5Db3VudDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgbGV0IGlzUmV3YXJkID0gc2lsRGF0YS5yZXN1bHQuc2lnbkluTG9nc1tkYXkgLTFdLmlzUmV3YXJkO1xuICAgICAgICAgICAgICAgIGlmKGlzUmV3YXJkKXsgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBsZXQgcmV3YXJkID0gc2lsRGF0YS5yZXN1bHQuc2lnbkluTG9nc1tkYXkgLSAxXS5yZXdhcmQ7XG4gICAgICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXdhcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXduYW1lID0gcmV3YXJkLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmV3ZGVzY3JpcHRpb24gPSByZXdhcmQuZGVzY3JpcHRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmV3bm90aWNlID0gcmV3YXJkLm5vdGljZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtc2cgPSBcIuetvuWIsOaIkOWKnyEg6I635b6X5aWW5YqxOlwiICsgcmV3bmFtZSArIFwiKFwiICsgcmV3ZGVzY3JpcHRpb24gKyBcIikg5pys5pyI5bey6L+e57ut562+5YiwOlwiICsgZGF5ICsgXCLlpKlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KG1zZylcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8v5rKh5pyJ5aWW5Yqx77yM5Y+q5pyJ5bm46L+Q562+5ZCN54mHXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdChcIuetvuWIsOaIkOWKn++8geS7iuaXpeW5uOi/kOetvjpcIiArIHNpbERhdGEucmVzdWx0LmJsZXNzaW5nKVxuICAgICAgICAgICAgICAgICAgICB9Ki9cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJld2FyZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJld25vdGljZSA9IHJld2FyZC5ub3RpY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdChcIuS7iuWkqeW3sue7j+etvuWIsO+8jOivt+S4jeimgemHjeWkjeetvuWIsO+8gVxcblwiK3Jld25vdGljZSlcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8v5rKh5pyJ5aWW5Yqx77yM5Y+q5pyJ5bm46L+Q562+5ZCN54mHXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdChcIuS7iuWkqeW3sue7j+etvuWIsO+8jOivt+S4jeimgemHjeWkjeetvuWIsO+8gVxcbuS7iuaXpeWlvei/kOetvjpcIiArIHNpbERhdGEucmVzdWx0LmJsZXNzaW5nKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNpckRhdGEgPSBKU09OLnBhcnNlKGZldGNoKHNpZ25pbnJVUkwsIHtcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICAgICAgYm9keToge1wic2lnbkluRGF5XCI6ZGF5fSxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBhY2Nlc3NfdG9rZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgIGxldCByZXdhcmQgPSBzaXJEYXRhLnJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJld2FyZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJld25hbWUgPSByZXdhcmQubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXdkZXNjcmlwdGlvbiA9IHJld2FyZC5kZXNjcmlwdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXdub3RpY2UgPSByZXdhcmQubm90aWNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1zZyA9IFwi562+5Yiw5oiQ5YqfISDojrflvpflpZblirE6XCIgKyByZXduYW1lICsgXCIoXCIgKyByZXdkZXNjcmlwdGlvbiArIFwiKSDmnKzmnIjlt7Lov57nu63nrb7liLA6XCIgKyBkYXkgKyBcIuWkqVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3QobXNnKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy/msqHmnInlpZblirHvvIzlj6rmnInlubjov5Dnrb7lkI3niYdcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KFwi562+5Yiw5oiQ5Yqf77yB5LuK5pel5bm46L+Q562+OlwiICsgc2lsRGF0YS5yZXN1bHQuYmxlc3NpbmcpXG4gICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBcImhpa2VyOi8vZW1wdHlcIlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSksXG4gICAgaW1nOiAnaGlrZXI6Ly9maWxlcy96Zi9jeS/pmL/ph4wucG5nJyxcbiAgICBjb2xfdHlwZTogJ2ljb25fNCdcbn0pXG5hbGl5dW4ifSx7InN0YXR1cyI6ZmFsc2UsInBhdHRlcm4iOjIsIm5hbWUiOiLmm7TmlrBRIiwiY29kZSI6ImxldCDln5/lkI0gPSAnaHR0cHM6Ly9oYWlrdW8ubGFuem91aS5jb20vJ1xuXG52YXIgZ2V0TmV3ZXN0ID0gZnVuY3Rpb24gKHVybCkge1xuICAgIGxldCBodG1sID0gcmVxdWVzdCh1cmwpO1xuICAgIGV2YWwoaHRtbC5tYXRjaCgvdmFyIHBnczsoW1xcc1xcU10qPylkb2N1bWVudC8pWzFdKTtcbiAgICBldmFsKCd2YXIgYm9keSA9JyArIGh0bWwubWF0Y2goL2RhdGEgOihbXFxzXFxTXSo/XFx9KS8pWzFdKTtcbiAgICBsZXQgYXJyID0gSlNPTi5wYXJzZShwb3N0KHVybC5tYXRjaCgvaHR0cHMqOlxcL1xcL1teXFwvXStcXC8vKVswXSArICdmaWxlbW9yZWFqYXgucGhwJywge1xuICAgICAgICAgICAgICAgIGJvZHk6IGJvZHlcbiAgICAgICAgICAgIH0pKS50ZXh0O1xuICAgIHZhciBuZXdBcnIgPSBhcnIuZmlsdGVyKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiBwLm5hbWVfYWxsLnN0YXJ0c1dpdGgoXCLmtbfpmJTop4bnlYxfXCIpICYmIHAubmFtZV9hbGwuc3BsaXQoJ18nKVsyXS5tYXRjaCgvWzAtOV0rLylbMF0gPiBnZXRBcHBWZXJzaW9uKCk7XG4gICAgfSk7XG4gICAgaWYgKG5ld0Fyci5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCBkaWN0ID0ge307XG4gICAgICAgIGxldCBvcHRpb25zID0gW107XG4gICAgICAgIGZvciAobGV0IGkgaW4gbmV3QXJyKSB7XG4gICAgICAgICAgICBvcHRpb25zLnB1c2gobmV3QXJyW2ldLm5hbWVfYWxsLnJlcGxhY2UoL+a1t+mYlOinhueVjF8vLCAnJykpO1xuICAgICAgICAgICAgZGljdFtuZXdBcnJbaV0ubmFtZV9hbGxdID0gbmV3QXJyW2ldLmlkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAkKG9wdGlvbnMsIDEpLnNlbGVjdCgoZCwgdXJsKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGRpY3QgPSBKU09OLnBhcnNlKGQpO1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGxhenkoZmlsZVVybCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChmaWxlVXJsKS5sYXp5UnVsZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vZGV2ZWxvcGVyLmxhbnpvdWcuY29tL2ZpbGUvJyArIHJlcXVlc3QoaW5wdXQpLm1hdGNoKC8nKFxcPy4qPyknLylbMV0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoSGVhZGVyczogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkuaGVhZGVycy5sb2NhdGlvblswXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhenkodXJsLm1hdGNoKC9odHRwcyo6XFwvXFwvW15cXC9dK1xcLy8pWzBdICsgJ3RwLycgKyBkaWN0WyfmtbfpmJTop4bnlYxfJyArIGlucHV0XSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGljdCksIHVybCk7XG4gICAgfSBlbHNlXG4gICAgICAgIHJldHVybiAndG9hc3Q6Ly/msqHmnInmm7TmlrDnmoTniYjmnKwnXG59XG5sZXQgZyA9IFtdO1xuZy5wdXNoKHtcbiAgICB0aXRsZTogJ+abtOaWsCcsXG4gICAgdXJsOiAkKOWfn+WQjSArIFwidS9Hb2xkUml2ZXJcIikubGF6eVJ1bGUoKGdldE5ld2VzdCkgPT4ge1xuXHRcdHJldHVybiBnZXROZXdlc3QoaW5wdXQpXG5cdH0sZ2V0TmV3ZXN0KSxcbiAgICBpbWc6ICdoaWtlcjovL2ZpbGVzL3pmL2N5L+abtOaWsC5wbmcnLFxuICAgIGNvbF90eXBlOiAnaWNvbl80J1xufSk7XG5nXG4ifV0sImZvbGRfc3RhdHVzIjpmYWxzZSwicGF0dGVybiI6M30seyJuYW1lIjoi57uEMyIsIm1hcmsiOiJBIiwibGlzdCI6W3sic3RhdHVzIjpmYWxzZSwicGF0dGVybiI6MCwibmFtZSI6IuWwj+mcuOeOiyIsInRpdGxlIjoi5bCP6Zy4546LIiwidXJsIjoiaGlrZXI6Ly9ob21lQOWwj+mcuOeOiyIsImljb24iOiJoaWtlcjovL2ZpbGVzLzAxemYvcG5nL+a4uOaIjy5wbmciLCJkZXNjIjoiIiwidHlwZSI6Imljb25fMl9yb3VuZCJ9LHsic3RhdHVzIjpmYWxzZSwicGF0dGVybiI6MCwibmFtZSI6IuixoeajiyIsInRpdGxlIjoi6LGh5qOLIiwidXJsIjoieDU6Ly9odHRwczovL3UuYWxpMjEzLm5ldC9nYW1lcy9jaGluYWNoZXNzL2luZGV4Lmh0bWw/Z2FtZV9jb2RlPTMxMyIsImljb24iOiJoaWtlcjovL2ZpbGVzL3pmL3BuZy/osaHmo4sucG5nIiwiZGVzYyI6IiIsInR5cGUiOiJpY29uXzQifV0sImZvbGRfc3RhdHVzIjpmYWxzZSwicGF0dGVybiI6M30seyJuYW1lIjoi57uENCIsIm1hcmsiOiJBIiwibGlzdCI6W3sic3RhdHVzIjp0cnVlLCJwYXR0ZXJuIjowLCJuYW1lIjoi6JmO54mZ55u05pKtIiwidGl0bGUiOiLomY7niZkiLCJ1cmwiOiJAanM6ICQoJ2hpa2VyOi8vZW1wdHkjZnlwYWdlI2Z1bGxUaGVtZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICBsZXQgZCA9IFtdOyAgICAgbGV0IGdpZCA9IGdldEl0ZW0oJ+iZjueJmScsICcnKTsgICAgIGxldCBpbWcgPSAnaGlrZXI6Ly9maWxlcy8wMmYvbW9yZS/omY4ucG5nJzsgICAgIHZhciBmZW5sZWkgPSBbeyAgICAgICAgIHRpdGxlOiBcIuaYn+engFwiLCAgICAgICAgIGljb246IFwiaHR0cHM6Ly9odXlhaW1nLm1zc3RhdGljLmNvbS9jZG5pbWFnZS9nYW1lLzE2NjMtTVMuanBnXCIsICAgICAgICAgaWQ6IFwiMTY2M1wiICAgICB9LCB7ICAgICAgICAgdGl0bGU6IFwi6aKc5YC8XCIsICAgICAgICAgaWNvbjogXCJodHRwczovL2h1eWFpbWcubXNzdGF0aWMuY29tL2NkbmltYWdlL2dhbWUvMjE2OC1NUy5qcGdcIiwgICAgICAgICBpZDogXCIyMTY4XCIgICAgIH0sIHsgICAgICAgICB0aXRsZTogXCLljp/liJtcIiwgICAgICAgICBpY29uOiBcImh0dHBzOi8vaHV5YWltZy5tc3N0YXRpYy5jb20vY2RuaW1hZ2UvZ2FtZS82ODYxLU1TLmpwZ1wiLCAgICAgICAgIGlkOiBcIjY4NjFcIiAgICAgfSwgeyAgICAgICAgIHRpdGxlOiBcIumfs+S5kFwiLCAgICAgICAgIGljb246IFwiaHR0cHM6Ly9odXlhaW1nLm1zc3RhdGljLmNvbS9jZG5pbWFnZS9nYW1lLzM3OTMtTVMuanBnXCIsICAgICAgICAgaWQ6IFwiMzc5M1wiICAgICB9LCB7ICAgICAgICAgdGl0bGU6IFwi5LiA6LW355yLXCIsICAgICAgICAgaWNvbjogXCJodHRwczovL2h1eWFpbWcubXNzdGF0aWMuY29tL2NkbmltYWdlL2dhbWUvMjEzNS1NUy5qcGdcIiwgICAgICAgICBpZDogXCIyMTM1XCIgICAgIH0sIHsgICAgICAgICB0aXRsZTogXCLkuozmrKHlhYNcIiwgICAgICAgICBpY29uOiBcImh0dHBzOi8vaHV5YWltZy5tc3N0YXRpYy5jb20vY2RuaW1hZ2UvZ2FtZS8yNjMzLU1TLmpwZ1wiLCAgICAgICAgIGlkOiBcIjI2MzNcIiAgICAgfSwgeyAgICAgICAgIHRpdGxlOiBcIuWoseS5kOWkqeWcsFwiLCAgICAgICAgIGljb246IFwiaHR0cHM6Ly9odXlhaW1nLm1zc3RhdGljLmNvbS9jZG5pbWFnZS9nYW1lLzEwMDAyMi1NUy5qcGdcIiwgICAgICAgICBpZDogXCIxMDAwMjJcIiAgICAgfSwgeyAgICAgICAgIHRpdGxlOiBcIuWQg+WWneeOqeS5kFwiLCAgICAgICAgIGljb246IFwiaHR0cHM6Ly9odXlhaW1nLm1zc3RhdGljLmNvbS9jZG5pbWFnZS9nYW1lLzEwMDA0NC1NUy5qcGdcIiwgICAgICAgICBpZDogXCIxMDAwNDRcIiAgICAgfSwgeyAgICAgICAgIHRpdGxlOiBcIuS6pOWPi1wiLCAgICAgICAgIGljb246IFwiaHR0cHM6Ly9odXlhaW1nLm1zc3RhdGljLmNvbS9jZG5pbWFnZS9nYW1lLzQwNzktTVMuanBnXCIsICAgICAgICAgaWQ6IFwiNDA3OVwiICAgICB9LCB7ICAgICAgICAgdGl0bGU6IFwi5oi35aSWXCIsICAgICAgICAgaWNvbjogXCJodHRwczovL2h1eWFpbWcubXNzdGF0aWMuY29tL2NkbmltYWdlL2dhbWUvMjE2NS1NUy5qcGdcIiwgICAgICAgICBpZDogXCIyMTY1XCIgICAgIH0sIHsgICAgICAgICB0aXRsZTogXCLml4XmuLhcIiwgICAgICAgICBpY29uOiBcImh0dHBzOi8vaHV5YWltZy5tc3N0YXRpYy5jb20vY2RuaW1hZ2UvZ2FtZS82NzkxLU1TLmpwZ1wiLCAgICAgICAgIGlkOiBcIjY3OTFcIiAgICAgfSwgeyAgICAgICAgIHRpdGxlOiBcIuS9k+iCslwiLCAgICAgICAgIGljb246IFwiaHR0cHM6Ly9odXlhaW1nLm1zc3RhdGljLmNvbS9jZG5pbWFnZS9nYW1lLzIzNTYtTVMuanBnXCIsICAgICAgICAgaWQ6IFwiMjM1NlwiICAgICB9LCB7ICAgICAgICAgdGl0bGU6IFwi56eR5oqAXCIsICAgICAgICAgaWNvbjogXCJodHRwczovL2h1eWFpbWcubXNzdGF0aWMuY29tL2NkbmltYWdlL2dhbWUvMjQwOC1NUy5qcGdcIiwgICAgICAgICBpZDogXCIyNDA4XCIgICAgIH0sIHsgICAgICAgICB0aXRsZTogXCLmtL7lr7lcIiwgICAgICAgICBpY29uOiBcImh0dHBzOi8vaHV5YWltZy5tc3N0YXRpYy5jb20vY2RuaW1hZ2UvZ2FtZS83Nzg1LU1TLmpwZ1wiLCAgICAgICAgIGlkOiBcIjc3ODVcIiAgICAgfSwgeyAgICAgICAgIHRpdGxlOiBcIuiLsembhOiBlOebn1wiLCAgICAgICAgIGljb246IFwiaHR0cHM6Ly9odXlhaW1nLm1zc3RhdGljLmNvbS9jZG5pbWFnZS9nYW1lLzEtTVMuanBnXCIsICAgICAgICAgaWQ6IFwiMVwiICAgICB9LCB7ICAgICAgICAgdGl0bGU6IFwi546L6ICF6I2j6ICAXCIsICAgICAgICAgaWNvbjogXCJodHRwczovL2h1eWFpbWcubXNzdGF0aWMuY29tL2NkbmltYWdlL2dhbWUvMjMzNi1NUy5qcGdcIiwgICAgICAgICBpZDogXCIyMzM2XCIgICAgIH0sIHsgICAgICAgICB0aXRsZTogXCLlkozlubPnsr7oi7FcIiwgICAgICAgICBpY29uOiBcImh0dHBzOi8vaHV5YWltZy5tc3N0YXRpYy5jb20vY2RuaW1hZ2UvZ2FtZS8zMjAzLU1TLmpwZ1wiLCAgICAgICAgIGlkOiBcIjMyMDNcIiAgICAgfSwgeyAgICAgICAgIHRpdGxlOiBcIkNG5omL5ri4XCIsICAgICAgICAgaWNvbjogXCJodHRwczovL2h1eWFpbWcubXNzdGF0aWMuY29tL2NkbmltYWdlL2dhbWUvMjQxMy1NUy5qcGdcIiwgICAgICAgICBpZDogXCIyNDEzXCIgICAgIH1dOyAgICAgaWYgKE1ZX1BBR0UgPT0gMSkgeyAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIHRpdGxlOiAn6JmO54mZ55u05pKtJywgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLCAgICAgICAgICAgICBkZXNjOiAn5YiH5o2iJywgICAgICAgICAgICAgcGljOiBpbWcsICAgICAgICAgICAgIHVybDogJChmZW5sZWksIDMsICfliIfmjaLliIbnsbsnKS5zZWxlY3QoKGZlbmxlaSkgPT4geyAgICAgICAgICAgICAgICAgbGV0IGkgPSBmZW5sZWkuZmluZEluZGV4KHQgPT4gdC50aXRsZSA9PSBpbnB1dCk7ICAgICAgICAgICAgICAgICBsZXQgdXJsID0gZmVubGVpW2ldLmlkOyAgICAgICAgICAgICAgICAgc2V0SXRlbSgn6JmO54mZJywgdXJsKTsgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTsgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eScgICAgICAgICAgICAgfSwgZmVubGVpKSwgICAgICAgICB9LCB7ICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZScsICAgICAgICAgfSwgeyAgICAgICAgICAgICB0aXRsZTogJ+aQnOe0oicsICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLCAgICAgICAgICAgICBkZXNjOiAn6L6T5YWl5L2g5oOz5pCc57Si55qEJywgICAgICAgICAgICAgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHsgICAgICAgICAgICAgICAgIGlmICghaW5wdXQpIHJldHVybiBcInRvYXN0Oi8v6K+36L6T5YWl5YWz6ZSu6K+N5pCc57SiXCI7ICAgICAgICAgICAgICAgICB2YXIgdHh0ID0gaW5wdXQ7ICAgICAgICAgICAgICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNmeXBhZ2Ujbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgodHh0KSA9PiB7ICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCfmkJzntKInICsgJ+KAnCcgKyB0eHQgKyAn4oCdJyk7ICAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTsgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vc2VhcmNoLmNkbi5odXlhLmNvbS8/bT1TZWFyY2gmZG89Z2V0U2VhcmNoQ29udGVudCZwbHQ9bSZxPScgKyB0eHQgKyAnJnVpZD0wJmFwcD0xMSZ2PTQmdHlwPS01JnN0YXJ0PScgKyBNWV9QQUdFICsgJyZyb3dzPTInKSk7ICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7fSAgICAgICAgICAgICAgICAgICAgIGxldCBqID0ganNvbi5yZXNwb25zZVtcIjNcIl0uZG9jcy5mb3JFYWNoKGogPT4geyAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBqLnJvb21faWQ7ICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBqLmdhbWVfaW50cm9kdWN0aW9uLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGouZ2FtZU5hbWUgKyAn4oCiJyArIGouZ2FtZV9uaWNrLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBqLmdhbWVfc2NyZWVuc2hvdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGlkKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IFsndmlkZW86Ly9odHRwczovL2Nmc3MuY2MvY2RuL2h5LycgKyBpZCArICcuZmx2JywgJ3ZpZGVvOi8vaHR0cHM6Ly9tLmh1eWEuY29tLycgKyBpZCwgJ3ZpZGVvOi8vaHR0cHM6Ly9lcGcuMTEyMTE0Lnh5ei9odXlhLycgKyBpZF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsczogdXJsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpZCksICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgICAgIH0sIHR4dCkgICAgICAgICAgICAgfSksICAgICAgICAgfSk7ICAgICB9ICAgICB0cnkgeyAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly93d3cuaHV5YS5jb20vY2FjaGUucGhwP209TGl2ZUxpc3QmZG89Z2V0TGl2ZUxpc3RCeVBhZ2UmdGFnQWxsPTAmcGFnZT0nICsgTVlfUEFHRSArICcmZ2FtZUlkPScgKyBnaWQpKS5kYXRhLmRhdGFzOyAgICAgfSBjYXRjaCB7fSAgICAganNvbi5tYXAoZGF0YSA9PiB7ICAgICAgICAgdmFyIGlkID0gZGF0YS5wcm9maWxlUm9vbTsgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICB0aXRsZTogZGF0YS5uaWNrLCAgICAgICAgICAgICBkZXNjOiBkYXRhLmludHJvZHVjdGlvbiwgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJywgICAgICAgICAgICAgcGljX3VybDogZGF0YS5zY3JlZW5zaG90LCAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGlkKSA9PiB7ICAgICAgICAgICAgICAgICBsZXQgdXJsID0gWyd2aWRlbzovL2h0dHBzOi8vY2Zzcy5jYy9jZG4vaHkvJyArIGlkICsgJy5mbHYnLCAndmlkZW86Ly9odHRwczovL20uaHV5YS5jb20vJyArIGlkLCAndmlkZW86Ly9odHRwczovL2VwZy4xMTIxMTQueHl6L2h1eWEvJyArIGlkXTsgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgdXJsczogdXJsLCAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgfSwgaWQpLCAgICAgICAgIH0pOyAgICAgfSk7ICAgICBzZXRSZXN1bHQoZCk7IH0pIiwiaWNvbiI6Imhpa2VyOi8vZmlsZXMvemYvcG5nL+iZjueJmS5wbmciLCJkZXNjIjoiIiwidHlwZSI6Imljb25fNCJ9LHsic3RhdHVzIjp0cnVlLCJwYXR0ZXJuIjowLCJuYW1lIjoi5paX6bG855u05pKtIiwidGl0bGUiOiLmlpfpsbwiLCJ1cmwiOiJAanM6ICQoJ2hpa2VyOi8vZW1wdHkjZnlwYWdlI2Z1bGxUaGVtZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICBsZXQgZCA9IFtdOyAgICAgbGV0IGZsX2lkID0gZ2V0SXRlbSgn5paX6bG8JywgJycpOyAgICAgbGV0IGltZyA9ICdodHRwczovL2FwaS54aW5hYy5uZXQvaWNvbi8/dXJsPWh0dHBzOi8vbS5kb3V5dS5jb20nOyAgICAgdmFyIGZlbmxlaSA9IFt7ICAgICAgICAgdGl0bGU6IFwi5Y6f5YibSVBcIiwgICAgICAgICBpY29uOiBcImh0dHBzOi8vY3Mtb3AuZG91eXVjZG4uY24vZHljYXRyLzFjNGY5YjNlMGRiMjQ2MTA4NzlmYWYxZTA0MWQ1M2Q1LmpwZ1wiLCAgICAgICAgIGlkOiBcImlwXCIgICAgIH0sIHsgICAgICAgICB0aXRsZTogXCLkuIDotbfnnItcIiwgICAgICAgICBpY29uOiBcImh0dHBzOi8vc3RhLW9wLmRvdXl1Y2RuLmNuL2R5Y2F0ci9hZjY5ZWViMTk0M2E5NDQ0ZDIzNjJhN2YwNmMyMmRjNi5wbmdcIiwgICAgICAgICBpZDogXCJ5cWtcIiAgICAgfSwgeyAgICAgICAgIHRpdGxlOiBcIuS6jOasoeWFg1wiLCAgICAgICAgIGljb246IFwiaHR0cHM6Ly9zdGEtb3AuZG91eXVjZG4uY24vZHljYXRyLzM0NmY0OGY0Mzc5NDZjZDJlZjJhMDBiYjAzMTRlNmYzLmpwZ1wiLCAgICAgICAgIGlkOiBcImVjeVwiICAgICB9LCB7ICAgICAgICAgdGl0bGU6IFwi6Z+z5LmQXCIsICAgICAgICAgaWNvbjogXCJodHRwczovL2NzLW9wLmRvdXl1Y2RuLmNuL2R5Y2F0ci9nYW1lX2NhdGUvZmUyMTE5M2M3MjUzN2JhZDNjZDk5MTdkNjdlNGIwMmMucG5nXCIsICAgICAgICAgaWQ6IFwibXVzaWNcIiAgICAgfSwgeyAgICAgICAgIHRpdGxlOiBcIuaIt+WkllwiLCAgICAgICAgIGljb246IFwiaHR0cHM6Ly9jcy1vcC5kb3V5dWNkbi5jbi9keWNhdHIvZ2FtZV9jYXRlL2IyNGI3MTZiMmExM2JjMGI3NTg2MzJlNWIyMGUwODM1LnBuZ1wiLCAgICAgICAgIGlkOiBcIkhXXCIgICAgIH0sIHsgICAgICAgICB0aXRsZTogXCLnvo7po59cIiwgICAgICAgICBpY29uOiBcImh0dHBzOi8vc3RhLW9wLmRvdXl1Y2RuLmNuL2R5Y2F0ci82OTU5NDlhNTFkMjI1NDhhMjY4ODAyMzVjYjZmOWMxMy5wbmdcIiwgICAgICAgICBpZDogXCJtc1wiICAgICB9LCB7ICAgICAgICAgdGl0bGU6IFwi5b+D5Yqo5rS+5a+5XCIsICAgICAgICAgaWNvbjogXCJodHRwczovL3N0YS1vcC5kb3V5dWNkbi5jbi9keWNhdHIvMTlkYTFmMjRiYzU0YzNmYzViNWRjYTlhZjM5OTNhODUucG5nXCIsICAgICAgICAgaWQ6IFwieGRwZFwiICAgICB9LCB7ICAgICAgICAgdGl0bGU6IFwi6Z+z6YGH5oGL5Lq6XCIsICAgICAgICAgaWNvbjogXCJodHRwczovL3N0YS1vcC5kb3V5dWNkbi5jbi9keWNhdHIvZmE1NmEyNzEzMDViZmQ4NjQyMWRlZTg4NTFlMGEwNzcucG5nXCIsICAgICAgICAgaWQ6IFwieWlueXVcIiAgICAgfSwgeyAgICAgICAgIHRpdGxlOiBcIuaYn+engFwiLCAgICAgICAgIGljb246IFwiaHR0cHM6Ly9zdGEtb3AuZG91eXVjZG4uY24vZHljYXRyLzEzMDU0YmQ1MDY4YjA4ZDc3MTZhMjA3ZWZlNmU0YjAxLnBuZ1wiLCAgICAgICAgIGlkOiBcInhpbmd4aXVcIiAgICAgfSwgeyAgICAgICAgIHRpdGxlOiBcIuW/g+WKqEZNXCIsICAgICAgICAgaWNvbjogXCJodHRwczovL3N0YS1vcC5kb3V5dWNkbi5jbi9keWNhdHIvZDhjZDRhOWJmZDA0MjVjYmExNzM5YTYzOTJjNDYyMTUucG5nXCIsICAgICAgICAgaWQ6IFwiZHR4c1wiICAgICB9LCB7ICAgICAgICAgdGl0bGU6IFwi5aix5LmQ5o6o6I2QXCIsICAgICAgICAgaWNvbjogXCJodHRwczovL3N0YS1vcC5kb3V5dWNkbi5jbi9keWNhdHIvNmRlZjcyMzVkYzVlMDEwNTc1ZWMzMjU0NDI1Y2MyYmYucG5nXCIsICAgICAgICAgaWQ6IFwieWx0alwiICAgICB9LCB7ICAgICAgICAgdGl0bGU6IFwi6aKc5YC8XCIsICAgICAgICAgaWNvbjogXCJodHRwczovL2NzLW9wLmRvdXl1Y2RuLmNuL2R5Y2F0ci9nYW1lX2NhdGUvZDE1NDZjZmQzZjdmOTg1NzE5Zjg5NDQ5NmYyYTdiMmUucG5nXCIsICAgICAgICAgaWQ6IFwieXpcIiAgICAgfSwgeyAgICAgICAgIHRpdGxlOiBcIuaOqOiNkFwiLCAgICAgICAgIGljb246IFwiaHR0cHM6Ly9jcy1vcC5kb3V5dWNkbi5jbi9keWNhdHIvZ2FtZV9jYXRlLzA2ZDhkNGQ3OWVkMmY0NDRkZDZkODhlMzc0YzdjZDQyLnBuZ1wiLCAgICAgICAgIGlkOiBcIlwiICAgICB9LCB7ICAgICAgICAgdGl0bGU6IFwi546L6ICF6I2j6ICAXCIsICAgICAgICAgaWNvbjogXCJodHRwczovL3N0YS1vcC5kb3V5dWNkbi5jbi9keWNhdHIvMGQ5NmQ2M2VlOTU1MDcyOGFjZDg5OWQ2NmVlZTM2MjUucG5nXCIsICAgICAgICAgaWQ6IFwid3pyeVwiICAgICB9LCB7ICAgICAgICAgdGl0bGU6IFwi5ZKM5bmz57K+6IuxXCIsICAgICAgICAgaWNvbjogXCJodHRwczovL3N0YS1vcC5kb3V5dWNkbi5jbi9keWNhdHIvODU2MGViNGNiYTllNzM0YTBkNzQwOGY2YTliOWVmYjgucG5nXCIsICAgICAgICAgaWQ6IFwiaHBqeVwiICAgICB9LCB7ICAgICAgICAgdGl0bGU6IFwi6Iux6ZuE6IGU55ufXCIsICAgICAgICAgaWNvbjogXCJodHRwczovL3N0YS1vcC5kb3V5dWNkbi5jbi9keWNhdHIvMWRlMWVhNTIxNWI1MTNjZjRmNWIzYzMyNmY1Zjk2NTcucG5nXCIsICAgICAgICAgaWQ6IFwiTE9MXCIgICAgIH0sIHsgICAgICAgICB0aXRsZTogXCLng63pl6jmuLjmiI9cIiwgICAgICAgICBpY29uOiBcImh0dHBzOi8vc3RhLW9wLmRvdXl1Y2RuLmNuL2R5Y2F0ci9lOGQyZjJkZWNhMjAyNWVjMTI4NzRkNmQ2NzkyNDg5YS5wbmdcIiwgICAgICAgICBpZDogXCJybXl4XCIgICAgIH0sIHsgICAgICAgICB0aXRsZTogXCJDRuaJi+a4uFwiLCAgICAgICAgIGljb246IFwiaHR0cHM6Ly9zdGEtb3AuZG91eXVjZG4uY24vZHljYXRyL2ZiMjZjYzc1YjVkODc3N2YyODdiMmNhMDk0N2Y1ZGY2LnBuZ1wiLCAgICAgICAgIGlkOiBcIkNGU1lcIiAgICAgfV07ICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7ICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgdGl0bGU6ICfmlpfpsbznm7Tmkq0nLCAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsICAgICAgICAgICAgIGRlc2M6ICfliIfmjaInLCAgICAgICAgICAgICBwaWM6IGltZywgICAgICAgICAgICAgdXJsOiAkKGZlbmxlaSwgMywgJ+ivt+mAieaLqScpLnNlbGVjdCgoZmVubGVpKSA9PiB7ICAgICAgICAgICAgICAgICBsZXQgaSA9IGZlbmxlaS5maW5kSW5kZXgodCA9PiB0LnRpdGxlID09IGlucHV0KTsgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBmZW5sZWlbaV0uaWQ7ICAgICAgICAgICAgICAgICBzZXRJdGVtKCfmlpfpsbwnLCB1cmwpOyAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpOyAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JyAgICAgICAgICAgICB9LCBmZW5sZWkpLCAgICAgICAgIH0sIHsgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJywgICAgICAgICB9LCB7ICAgICAgICAgICAgIHRpdGxlOiAn5pCc57SiJywgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsICAgICAgICAgICAgIGRlc2M6ICfovpPlhaXkvaDmg7PmkJzntKLnmoQnLCAgICAgICAgICAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4geyAgICAgICAgICAgICAgICAgaWYgKCFpbnB1dCkgcmV0dXJuICd0b2FzdDovL+ivt+i+k+WFpeWFs+mUruivjeaQnOe0oic7ICAgICAgICAgICAgICAgICB2YXIgdHh0ID0gaW5wdXQ7ICAgICAgICAgICAgICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNmeXBhZ2Ujbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgodHh0KSA9PiB7ICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCfmkJzntKInICsgJ+KAnCcgKyB0eHQgKyAn4oCdJyk7ICAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTsgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vd3d3LmRvdXl1LmNvbS9qYXBpL3NlYXJjaC9hcGkvc2VhcmNoU2hvdz9rdz0nICsgdHh0ICsgJyZwYWdlPScgKyBNWV9QQUdFICsgJyZwYWdlU2l6ZT0yMCcpKS5kYXRhOyAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge30gICAgICAgICAgICAgICAgICAgICBsZXQganMgPSBqc29uLnJlbGF0ZVNob3cuZm9yRWFjaChqID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlkID0gai5yaWQ7ICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBqLm5pY2tOYW1lICsgJ/CflLknICsgai5ob3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogai5jYXRlTmFtZSArICfigKInICsgai5yb29tTmFtZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogai5yb29tU3JjLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaWQpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYSA9ICdodHRwOi8venp5Nzg5Lnh5ei9kb3V5dTEucGhwP2lkPScgKyBpZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYiA9ICdodHRwOi8vbWFvbWFvLmthbmRpYW50di5jbi9kb3V5dTEucGhwP2lkPScgKyBpZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gWyd2aWRlbzovLycgKyBhLCAndmlkZW86Ly8nICsgYl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsczogdXJsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpZCksICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgICAgIH0sIHR4dCkgICAgICAgICAgICAgfSksICAgICAgICAgfSk7ICAgICB9ICAgICB0cnkgeyAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9tLmRvdXl1LmNvbS9hcGkvcm9vbS9saXN0P2xpbWl0PTIwJnBhZ2U9JyArIE1ZX1BBR0UgKyAnJnR5cGU9JyArIGZsX2lkKSkuZGF0YTsgICAgIH0gY2F0Y2gge30gICAgIGpzb24ubGlzdC5tYXAoZGF0YSA9PiB7ICAgICAgICAgdmFyIGlkID0gZGF0YS5yaWQ7ICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgdGl0bGU6IGRhdGEucm9vbU5hbWUsICAgICAgICAgICAgIGRlc2M6IGRhdGEubmlja25hbWUgKyAn8J+UuScgKyBkYXRhLmhuLCAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInLCAgICAgICAgICAgICBwaWNfdXJsOiBkYXRhLnJvb21TcmMsICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaWQpID0+IHsgICAgICAgICAgICAgICAgIGxldCBhPSAnaHR0cDovL3p6eTc4OS54eXovZG91eXUxLnBocD9pZD0nICsgaWQ7ICAgICAgICAgICAgICAgICBsZXQgYiA9ICdodHRwOi8vbWFvbWFvLmthbmRpYW50di5jbi9kb3V5dTEucGhwP2lkPScgKyBpZDsgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBbJ3ZpZGVvOi8vJyArIGEsICd2aWRlbzovLycgKyBiXTsgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgdXJsczogdXJsLCAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgfSwgaWQpLCAgICAgICAgIH0pOyAgICAgfSk7ICAgICBzZXRSZXN1bHQoZCk7IH0pIiwiaWNvbiI6Imhpa2VyOi8vZmlsZXMvemYvcG5nL+aWl+mxvC5wbmciLCJkZXNjIjoiIiwidHlwZSI6Imljb25fNCJ9LHsic3RhdHVzIjp0cnVlLCJwYXR0ZXJuIjowLCJuYW1lIjoi5ZOU5ZOp6Iie6LmI6KeG6aKRIiwidGl0bGUiOiLlk5Tlk6kiLCJ1cmwiOiJAanM6ICQoJ2hpa2VyOi8vZW1wdHkjZnlwYWdlI2Z1bGxUaGVtZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICBzZXRQYWdlVGl0bGUoJ0Lnq5noiJ7ouYgnKTsgICAgIGxldCBkID0gW107ICAgICBsZXQgcmlkID0gZ2V0SXRlbSgncmlkJywgJzE5OScpOyAgICAgaWYgKE1ZX1BBR0UgPT0gMSkgeyAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIHRpdGxlOiAn5ZOU5ZOp6Iie6LmIJywgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLCAgICAgICAgICAgICBkZXNjOiAn5YiH5o2iJywgICAgICAgICAgICAgcGljOiAnaGlrZXI6Ly9maWxlcy8wMmYvbW9yZS/lk5QucG5nJywgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgICAgICAgICAgICAgIHZhciBsaXN0ID0gW3sgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5pel5bi4JywgICAgICAgICAgICAgICAgICAgICAncmlkJzogJzIxJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfpn7PkuZAnLCAgICAgICAgICAgICAgICAgICAgICdyaWQnOiAnMjgnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+eOsOWcuicsICAgICAgICAgICAgICAgICAgICAgJ3JpZCc6ICcyOScgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5a6F6IieJywgICAgICAgICAgICAgICAgICAgICAncmlkJzogJzIwJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfooZfoiJ4nLCAgICAgICAgICAgICAgICAgICAgICdyaWQnOiAnMTk4JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfmmI7mmJ8nLCAgICAgICAgICAgICAgICAgICAgICdyaWQnOiAnMTk5JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICflm73po44nLCAgICAgICAgICAgICAgICAgICAgICdyaWQnOiAnMjAwJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfnvZHnuqInLCAgICAgICAgICAgICAgICAgICAgICdyaWQnOiAnMjU1JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfnu7zlkIgnLCAgICAgICAgICAgICAgICAgICAgICdyaWQnOiAnMTU0JyAgICAgICAgICAgICAgICAgfV07ICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBsaXN0Lm1hcChpID0+IGkudGl0bGUpOyAgICAgICAgICAgICAgICAgcmV0dXJuICQodGl0bGUsIDMsICfor7fpgInmi6nkuIDkuKrliIbnsbsnKS5zZWxlY3QoKGxpc3QpID0+IHsgICAgICAgICAgICAgICAgICAgICBsZXQgdSA9IGxpc3QuZmluZEluZGV4KGkgPT4gaS50aXRsZSA9PSBpbnB1dCk7ICAgICAgICAgICAgICAgICAgICAgbGV0IGlkID0gbGlzdFt1XS5yaWQ7ICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgncmlkJywgaWQpOyAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2iJyAgICAgICAgICAgICAgICAgfSwgbGlzdCkgICAgICAgICAgICAgfSksICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7ICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfovpPlhaVDb29raWVfc2Vzc2RhdGEnLCAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJpbGkgPSBnZXRJdGVtKCdiaWxpX2lucHV0JywgJycpOyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChiaWxpLCAnQ29va2ll5Lit55qEc2Vzc2RhdGFcXG7ovpPlhaXlkI7miY3lj6/op4LnnIvpq5jmuIXop4bpopEnKS5pbnB1dCgoKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlucHV0KSByZXR1cm4gXCJ0b2FzdDovL+S4jeiDveS4uuepulwiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR4dCA9IGlucHV0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgnQ29va2llX3Nlc3NkYXRhJywgdHh0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ2JpbGlfaW5wdXQnLCB0eHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+WPr+S7peingueci+mrmOa4heinhumikeWVpicgICAgICAgICAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICAgfV0sICAgICAgICAgICAgIH0gICAgICAgICB9LCB7ICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZScsICAgICAgICAgfSk7ICAgICB9ICAgICBsZXQganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxJLmNvbS94L3dlYi1pbnRlcmZhY2UvbmV3bGlzdD90eXBlPTAmcG49JyArIE1ZX1BBR0UgKyAnJnBzPTEwMCZqc29ucD1qc29ucCZyaWQ9JyArIHJpZCkpLmRhdGE7ICAgICBqc29uLmFyY2hpdmVzLm1hcChodG1sID0+IHsgICAgICAgICB2YXIgYnZpZCA9IGh0bWwuYnZpZDsgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICB0aXRsZTogaHRtbC50aXRsZSwgICAgICAgICAgICAgZGVzYzogaHRtbC50bmFtZSwgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zX21hcnF1ZWUnLCAgICAgICAgICAgICBwaWNfdXJsOiBodG1sLnBpYyArICdAUmVmZXJlcj0nLCAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykubGF6eVJ1bGUoKGJ2aWQpID0+IHsgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYWFnLm1vZS9hcGkvYnpzcGp4P3VybD1odHRwczovL20uYmlsaWJpbGkuY29tL3ZpZGVvLycgKyBidmlkKSk7ICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFsndmlkZW86Ly8nICsganNvbi52aWRlb3VybF07ICAgICAgICAgICAgICAgICAgICAgdmFyIGF1ZGlvID0gW2pzb24uYXVkaW91cmxdOyAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5wZWFya3RydWUuY24vYXBpL2JpbGliaWxpL3BhcnNlLnBocD9idmlkPScgKyBidmlkICsgJyZzZXNzZGF0YT0nICsgZ2V0SXRlbSgnQ29va2llX3Nlc3NkYXRhJykpKS5kYXRhLnZpZGVvcy5tYXAoZGF0YSA9PiBkYXRhLnZpZGVvdXJsKTsgICAgICAgICAgICAgICAgICAgICB2YXIgYXVkaW87ICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHsgICAgICAgICAgICAgICAgICAgICB1cmxzOiB1cmwsICAgICAgICAgICAgICAgICAgICAgYXVkaW9VcmxzOiBhdWRpbyAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgfSwgYnZpZCksICAgICAgICAgfSk7ICAgICB9KTsgICAgIHNldFJlc3VsdChkKTsgfSkiLCJpY29uIjoiaGlrZXI6Ly9maWxlcy96Zi9wbmcv5ZOU5ZOpLnBuZyIsImRlc2MiOiIiLCJ0eXBlIjoiaWNvbl80In0seyJzdGF0dXMiOmZhbHNlLCJwYXR0ZXJuIjowLCJuYW1lIjoi6Z+z5LmQ5q2M5Y2VIiwidGl0bGUiOiLpn7PkuZAiLCJ1cmwiOiJAanM6ICQoJ2hpa2VyOi8vZW1wdHkjZnlwYWdlI2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgIHNldFBhZ2VUaXRsZSgn5Zac5qyi5ZCs6Z+z5LmQ55qE5qKmJyk7ICAgICBsZXQgZCA9IFtdOyAgICAgdHJ5IHsgICAgICAgICBsZXQgaWQgPSBnZXRJdGVtKCdtdXNpY19pbWcnLCAnZG9uZ21hbicpOyAgICAgICAgIHZhciBmaWxlID0gJ2hpa2VyOi8vZmlsZXMvSm0vcG5nLycgKyBpZCArICcuanNvbic7ICAgICAgICAgdmFyIGltZ2xpc3QgPSBKU09OLnBhcnNlKGZldGNoKGZpbGUpKTsgICAgICAgICBsZXQgbWF4ID0gaW1nbGlzdC5sZW5ndGggLSAxOyAgICAgICAgIGxldCBtaW4gPSAwOyAgICAgICAgIGxldCBudW0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkpICsgbWluOyAgICAgICAgIHZhciBzaG93SW1nID0gaW1nbGlzdFtudW1dOyAgICAgfSBjYXRjaCB7fSAgICAgaWYgKE1ZX1BBR0UgPT0gMSkgeyAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIHRpdGxlOiAn5rC46L+c55u45L+h576O5aW955qE5LqL5oOF5Y2z5bCG5Y+R55Sf77yBJywgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJywgICAgICAgICAgICAgZGVzYzogJ/Cfp7gg5Lqs5qKmXFxuXFxu8J+RifCfj7sg5pys5Zyw6Z+z5LmQJywgICAgICAgICAgICAgcGljOiBzaG93SW1nIHx8ICcnLCAgICAgICAgICAgICB1cmw6IFwic2VsZWN0Oi8vXCIgKyBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXCLmnKzlnLDpn7PkuZBcIiwgXCLmm7TmjaLlm77niYdcIl0sICAgICAgICAgICAgICAgICBhdHRhY2hWaWV3OiB0cnVlLCAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4geyAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSAn5pys5Zyw6Z+z5LmQJykgeyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vbG9jYWxNZWRpYScgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBbXCLliqjmvKtcIiwgXCLnvo7lpbNcIiwgXCLpo47mma9cIiwgXCLmsb3ovaZcIiwgXCLliqjlm75cIl07ICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpZCA9IFtcImRvbmdtYW5cIiwgXCJtZWludlwiLCBcImZlbmdqaW5nXCIsIFwicWljaGVcIiwgXCJnaWZcIl07ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsaXN0ID0gdGl0bGUubWFwKChpdGVtLCBpbmRleCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpZFtpbmRleF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IGxpc3QubWFwKGogPT4gai5uYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQobmFtZSwgMiwgJ+Kdl++4j+WbvueJh+W8leeUqOeahOWkqeawlCcpLnNlbGVjdCgobGlzdCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGEgPSBsaXN0LmZpbmRJbmRleChqID0+IGoubmFtZSA9PSBpbnB1dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gbGlzdFthXS5pZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ211c2ljX2ltZycsIHVybCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGxpc3QpICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgfSksICAgICAgICAgfSwgeyAgICAgICAgICAgICBjb2xfdHlwZTogJ2JpZ19ibGFua19ibG9jaycgICAgICAgICB9LCB7ICAgICAgICAgICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJyAgICAgICAgIH0sIHsgICAgICAgICAgICAgdGl0bGU6ICflsI/kuIPmrYzljZUnLCAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fM19yb3VuZF9maWxsJywgICAgICAgICAgICAgcGljOiAnaGlrZXI6Ly9maWxlcy9KbS9sbS9tdXNpYy84NS5zdmcnLCAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICAgICAgICAgICAgICAgaWYgKCFmaWxlRXhpc3QoJ2hpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvbicpKSB7ICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvbicsICdbe1widGl0bGVcIjpcIueDreaQnOatjOabslwiLFwiaWNvblwiOlwiaHR0cDovL3FwaWMueS5xcS5jb20vbXVzaWNfY292ZXIvaEtGcmliTWh3SDRDbHdOV0p4aWN1Q3hqdXdJa2JaUHE0SFZUMFFneHNkYjhKV1FYWEMyVEZzdVEvNjAwP249MVwiLFwiaWRcIjo3NTMyNjcwNTM4fSx7XCJ0aXRsZVwiOlwi5oqW6Z+z54Ot6ZeoXCIsXCJpY29uXCI6XCJodHRwOi8vcXBpYy55LnFxLmNvbS9tdXNpY19jb3Zlci9XcHZkSlhmbjc5OGliRDRnY2ZqdzBOU3VCa0ZUSllwWTVRT2V2M0V4Y0JRaWFtUmNvYmtwTjc3Zy82MDA/bj0xXCIsXCJpZFwiOjc2MzAzMDM0NzR9XScpOyAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgdmFyIGdlZGFuID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb24nKSk7ICAgICAgICAgICAgICAgICByZXR1cm4gJChnZWRhbiwgMiwgJ+Wwj+S4g+atjOWNlScpLnNlbGVjdCgoZ2VkYW4pID0+IHsgICAgICAgICAgICAgICAgICAgICBsZXQgYSA9IGdlZGFuLmZpbmRJbmRleCh0ID0+IHQudGl0bGUgPT0gaW5wdXQpOyAgICAgICAgICAgICAgICAgICAgIHZhciBpZCA9IGdlZGFuW2FdLmlkOyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKChpZCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJ+Wwj+S4g+atjOWNlScpOyAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdOyAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnlhb2h1ZC5jbi9hcGkvcXFtdXNpYy92Mj9rZXk9YVVseWtBMzVLZ213UFVwZWhKS05iRmpvNnYmdHlwZT1zb25nbGlzdCZpZD0nICsgaWQpKS5kYXRhOyAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IGh0bWwubGlzdC5tYXAoaiA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqLnRpdGxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdlcjogai5hdXRob3IsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxidW06IGouYWxidW0ubmFtZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6IGoucGljLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBqLm1pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaHRtbC5pbmZvLnRpdGxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfwn6e4XFx0JyArIGh0bWwuaW5mby5jcmVhdG9yLm5pY2sgKyAnXFxuXFxu8J+OvFxcdCcgKyBodG1sLmluZm8uc29uZ251bSArICfpppYnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiBodG1sLmluZm8ucGljdXJsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcnLCAn5puy5ZCN5oiW5q2M5omLJykuaW5wdXQoKGpzb24pID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBzZWFyY2goYXJyYXksIG5hbWUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5LmZpbHRlcihpdGVtID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLnRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobmFtZS50b0xvd2VyQ2FzZSgpKSB8fCBpdGVtLnNpbmdlci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKG5hbWUudG9Mb3dlckNhc2UoKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBzZWFyY2goanNvbiwgaW5wdXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA+IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHknKS5ydWxlKChyZXN1bHRzKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJ+aQnOe0oue7k+aenCcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuZm9yRWFjaChqID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogai50aXRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBqLmFsYnVtID8gai5zaW5nZXIgKyAnIC0tICcgKyBqLmFsYnVtIDogai5zaW5nZXIgKyAnIC0tICcgKyBqLnRpdGxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6IGoucGljLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGopID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvUVFtdXNpY1ZJUC8/YnI9MTEmbWlkPScgKyBqLmlkKSkuZGF0YS5zcmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtqcyArICcjaXNNdXNpYz10cnVlIyddOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly94aWFvYXBpLmNuL0FQSS9tdl9zcS5waHA/bj0xJm1zZz0nICsgai50aXRsZSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiAyMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLnVybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gW2pzb25bM10gfHwganNvblsyXSB8fCBqc29uWzFdIHx8IGpzb25bMF1dOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbHJjID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkueWFvaHVkLmNuL2FwaS9tdXNpYy9scmM/a2V5PWFVbHlrQTM1S2dtd1BVcGVoSktOYkZqbzZ2JnR5cGU9cXEmbWlkPScgKyBqLmlkKSkuZGF0YTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsczogdXJsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx5cmljOiBscmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGopLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdFRpdGxlOiBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgcmVzdWx0cykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5rKh5pyJ5om+5YiwJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGpzb24pLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn8J+ToOWkjeWItuWbvueJh+mTvuaOpScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChodG1sKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2NvcHk6Ly8nICsgaHRtbC5pbmZvLnBpY3VybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaHRtbCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24ubWFwKGogPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogai50aXRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogai5hbGJ1bSA/IGouc2luZ2VyICsgJyAtLSAnICsgai5hbGJ1bSA6IGouc2luZ2VyICsgJyAtLSAnICsgai50aXRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBqLnBpYyArICdAUmVmZXJlcj0nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykubGF6eVJ1bGUoKGopID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL1FRbXVzaWNWSVAvP2JyPTExJm1pZD0nICsgai5pZCkpLmRhdGEuc3JjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtqcyArICcjaXNNdXNpYz10cnVlIyddOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8veGlhb2FwaS5jbi9BUEkvbXZfc3EucGhwP249MSZtc2c9JyArIGoudGl0bGUsIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiAyMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkudXJsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtqc29uWzNdIHx8IGpzb25bMl0gfHwganNvblsxXSB8fCBqc29uWzBdXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnlhb2h1ZC5jbi9hcGkvbXVzaWMvbHJjP2tleT1hVWx5a0EzNUtnbXdQVXBlaEpLTmJGam82diZ0eXBlPXFxJm1pZD0nICsgai5pZCkpLmRhdGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHM6IHVybCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx5cmljOiBscmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBqKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0VGl0bGU6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+S4i+i9veatjOabsicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoaikgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvUVFtdXNpY1ZJUC8/YnI9MTEmbWlkPScgKyBqLmlkKSkuZGF0YS5zcmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkb3dubG9hZDovLycgKyBqc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBqKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+ingueci01WJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3hpYW9hcGkuY24vQVBJL212X3NxLnBocD9uPTEmbXNnPScgKyBqLnRpdGxlLCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiAyMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS51cmw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbanNvblszXSB8fCBqc29uWzJdIHx8IGpzb25bMV0gfHwganNvblswXV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gW0pTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmNlbmd1aWd1aS5jbi9hcGkvanVoZS9hcGkucGhwP3R5cGU9a2dtdiZuPTEmbXNnPScgKyBqLnRpdGxlLCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiAyMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5kYXRhLnVybF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHM6IHVybCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7ICAgICAgICAgICAgICAgICAgICAgfSwgaWQpICAgICAgICAgICAgICAgICB9LCBnZWRhbikgICAgICAgICAgICAgfSksICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7ICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfwn5KeIOiOt+WPluatjOWNlScsICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgnJywgJ+Kdl++4j+atjOWNleWmguaenOacieaWsOWinu+8jOWImemcgOimgemHjeaWsOiOt+WPllxcblxcblFR6LSm5Y+36I635Y+W5q2M5Y2VJykuaW5wdXQoKCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5jZW5ndWlndWkuY24vYXBpL211c2ljL3FxL3VzZXJfbGlzdC5waHA/cXE9JyArIGlucHV0KSkubXlwbGF5bGlzdC5tYXAoaiA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGoubmFtZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogai5waWMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBqLmlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VkYW4gPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvbicpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuID0gZ2VkYW4uY29uY2F0KGpzb24pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvbicsIEpTT04uc3RyaW5naWZ5KGdlZGFuKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5re75YqgJyAgICAgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfwn5SwIOatjOWNleeuoeeQhicsICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZSgn5q2M5Y2V566h55CGJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+aPkOWPlmlkJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn6K+36L6T5YWl5YiG5Lqr5ZCO5aSN5Yi255qE6ZO+5o6lJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlucHV0KSByZXR1cm4gXCJ0b2FzdDovL+S4jeiDveS4uuepulwiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHh0ID0gaW5wdXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1MSA9IHR4dC5zcGxpdCgnJicpWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPSB1MS5zcGxpdCgnPScpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHkoaWRbMV0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5aSN5Yi2JyArIGlkWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmt7vliqAnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfmmL7npLrlkI3np7BA5Zu+54mH6ZO+5o6lQFFR6Z+z5LmQaWQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJC50b1N0cmluZygoKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5wdXQpIHJldHVybiBcInRvYXN0Oi8v6K+35qC55o2u5o+Q56S66L6T5YWl5YaF5a65XCI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBnZWRhbiA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uJykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbiA9IGlucHV0LnNwbGl0KCdAJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogblswXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IG5bMV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogblsyXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZWRhbiA9IGdlZGFuLmNvbmNhdChkYXRhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvbicsIEpTT04uc3RyaW5naWZ5KGdlZGFuKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3sua3u+WKoCcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmrYzljZXlm77niYfpk77mjqXlj6/ku6XlnKjmrYzljZXkuoznuqfmtbfmiqXplb/mjInlpI3liLbvvIzmiYDku6Xlj6/ku6XlhYjmt7vliqDmrYzljZXlho3nvJbovpHmt7vliqDmrYzljZXlm77niYfvvIzmiJbogIXoh6rlt7HpgInkuIDlvKDlm77kvZzkuLrlsIHpnaLjgIInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBnZWRhbiA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uJykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuLm1hcChqID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IGoudGl0bGUgKyAnQCcgKyBqLmljb24gKyAnQCcgKyBqLmlkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbmRleCArICcuJyArIGoudGl0bGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogai5pY29uLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoWyfnvJbovpEnLCAn56e75L2NJywgJ+WIoOmZpCddLCAzLCAn6K+36YCJ5oupJykuc2VsZWN0KChpbmRleCwgaXRlbSkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09ICfnvJbovpEnKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoaXRlbSwgJ+aDs+imgeabtOaNoueahOatjOWNleWQjSzmrYzljZVpZCzlm77niYfpk77mjqUgJykuaW5wdXQoKGluZGV4KSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBnZWRhbiA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uJykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbiA9IGlucHV0LnNwbGl0KCdAJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuW2luZGV4XSA9IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBuWzBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogblsxXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBuWzJdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb24nLCBKU09OLnN0cmluZ2lmeShnZWRhbikpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mm7TmlLnmiJDlip9+JyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGluZGV4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSAn56e75L2NJykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCcnLCAn6KaB56e75Yqo5Yiw5ZOq5Liq5bqP5Y+35YmN6Z2iL+WQjumdoicpLmlucHV0KChpbmRleCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ2VkYW4gPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvbicpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXAgPSBnZWRhbltpbmRleF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuLnNwbGljZShpbnB1dCwgMCwgdGVtcCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA8IGluZGV4KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZWRhbi5zcGxpY2UoaW5kZXggKyAxLCAxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuLnNwbGljZShpbmRleCwgMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvbicsIEpTT04uc3RyaW5naWZ5KGdlZGFuKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+enu+S9jeaIkOWKn34nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaW5kZXgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBnZWRhbiA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uJykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuLnNwbGljZShpbmRleCwgMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvbicsIEpTT04uc3RyaW5naWZ5KGdlZGFuKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/liKDpmaTmiJDlip9+JyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpbmRleCwgaXRlbSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgrKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpOyAgICAgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfimbvvuI8g5oGi5aSN6buY6K6kJywgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvbicpOyAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LmgaLlpI3pu5jorqQnICAgICAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgICAgIH1dLCAgICAgICAgICAgICB9ICAgICAgICAgfSk7IC8q572R5piT5o6S6KGM5qac5q2M5Y2VX+W8gOWniyovICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgdGl0bGU6ICflsI/oirjmppzljZUnLCAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fM19yb3VuZF9maWxsJywgICAgICAgICAgICAgcGljOiAnaGlrZXI6Ly9maWxlcy9KbS9sbS9tdXNpYy81MS5zdmcnLCAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICAgICAgICAgICAgICAgdmFyIGdlZGFuID0gSlNPTi5wYXJzZShmYygnaHR0cDovL211c2ljLjE2My5jb20vYXBpL3RvcGxpc3QnLCAyNCkpLmxpc3QubWFwKGwgPT4geyAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7ICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsLm5hbWUsICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGwuY292ZXJJbWdVcmwsICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBsLmlkICAgICAgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgcmV0dXJuICQoZ2VkYW4sIDIsICflsI/oirjmjpLooYzmppwnKS5zZWxlY3QoKGdlZGFuKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgbGV0IGEgPSBnZWRhbi5maW5kSW5kZXgodCA9PiB0LnRpdGxlID09IGlucHV0KTsgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPSBnZWRhblthXS5pZDsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNpbW1lcnNpdmVUaGVtZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoaWQpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTsgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCflsI/oirjmrYzljZUnKTsgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGh0bWwgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwOi8vbXVzaWMuMTYzLmNvbS9hcGkvdjYvcGxheWxpc3QvZGV0YWlsP249MTAwMCZpZD0nICsgaWQsIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlVzZXItQWdlbnRcIjogXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEwMi4wLjAuMCBTYWZhcmkvNTM3LjM2XCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb29raWVcIjogXCJvcz1wYzsgTVVTSUNfVT0wMDE3Mzk5N0U1N0RDMTYxMTJEMkUxNTc5RjU1NTQ0NDgxMkU1MTMzRjE2QzM0MjEzRDlCQjVFM0VDRUM4MTg4NDVERjhBMzM2QTNCOUQ0OTVFRTE4MkYzMDAxQUZFQUY5RTk3MTU5MUNDRURDNDcxMzg0MkYzMjk2QTFFNzlERkI3ODE3QThDN0JCODE1NEZGMTU0ODM2NDhGMTg0RDBFNzJEN0QyNkE1NjVFNDQ1MDczODA4MjQ5MDJDMjE1MkNDMEJCNURCOUEzNzlFODBGNkYwM0QwRDk4QjI3OTNBMjAzMjMwMzRERTRBMEJCQjQ2NzJENDhGOTM2Mjk2MEVGMjEzNjE1M0QwMkU3REYxNEM5Q0U4NEYxRjY0QzE2RUIzMDdBNUJCQjU4Njg2QzYwOTUwODJBQTQ1MDU4M0U2NEVBQ0QzRTZCNUJFMERGQ0FDQTkxMjVGMDM1MDU3RkUxN0I1QkRBNjFEODlERjVBQkQ3NzkwNkY1RTVEODU4Qzc0REIyRTE3OEEzQjBFNjA5NURENzU1MThENDgyREM5RDYxMDgwQTYxRDlCNzY1RDdFOThFQkUyMzBDRjAxN0NEOTAyMDgzOTJEM0UxMERFOTY0QTY4MTIxQjZDNjZEMDhDOTAyQTk4RUQ3MTEzQUFFNTlEMUU1NTU5QjA3MURFODMxMjZCOEMyOTVDNzgwQ0NENEIwQjRERTM2RTM1QzA5QUE2MzQzNTVBRURFMkY4ODA5OTg3MTkyNzdFNUVGOUM3QjlDQUZGQzkwRTI3OUFBQTJCQUZDQTQ0QzBBODM1MzdENjA5RTJEQUE1RDVENzc0ODQ4Qzk4REQyODcxMTg4OTVDMUMzRDY1NzQ0NjZGOTI2MkRFQ0UwNzI5MkFDMTU3QzFEQjcwQ0I3MDM5NThBN0ZFNTUzNDRFMjczNDIyRTY5XCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgfSkpLnBsYXlsaXN0OyAgICAgICAgICAgICAgICAgICAgICAgICBsZXQganNvbiA9IGh0bWwudHJhY2tzLm1hcChqID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzaW5nZXIgPSBqLmFyLm1hcChuID0+IG4ubmFtZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqLm5hbWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2VyOiBzaW5nZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxidW06IGoudG5zLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogai5hbC5waWNVcmwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGouaWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkOiBqLm12ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBodG1sLmRlc2NyaXB0aW9uLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfwn6e4XFx0JyArIGh0bWwuY3JlYXRvci5uaWNrbmFtZSArICdcXG5cXG7wn468XFx0JyArIGh0bWwudHJhY2tDb3VudCArICfpppYnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiBodG1sLmNvdmVySW1nVXJsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLm1hcChqID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGoudGl0bGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGouYWxidW0gPyBqLnNpbmdlciArICcgLS0gJyArIGouYWxidW0gOiBqLnNpbmdlciArICcgLS0gJyArIGoudGl0bGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogai5waWMgKyAnQFJlZmVyZXI9JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLmxhenlSdWxlKChqKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS54aW5nemhpZ2UuY29tL0FQSS9OZXRFYXNlX0Nsb3VkTXVzaWNfbmV3Lz9icj01JnNvbmdpZD0nICsgai5pZCkpLmRhdGEuc3JjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganMgPSAoJ2h0dHBzOi8vbXVzaWMuMTYzLmNvbS9zb25nL21lZGlhL291dGVyL3VybD9pZD0nICsgai5pZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IFtqcyArICcjaXNNdXNpYz10cnVlIyddOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHA6Ly9tdXNpYy4xNjMuY29tL2FwaS9zb25nL2x5cmljP29zPXBjJmx2PS0xJmt2PS0xJnR2PS0xJmlkPScgKyBqLmlkKSkubHJjLmx5cmljOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHt9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxzOiB1cmwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBseXJpYzogbHJjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaiksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdFRpdGxlOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkuIvovb3mrYzmm7InLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGopID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL05ldEVhc2VfQ2xvdWRNdXNpY19uZXcvP2JyPTUmc29uZ2lkPScgKyBqLmlkKSkuZGF0YS5zcmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9ICgnaHR0cHM6Ly9tdXNpYy4xNjMuY29tL3NvbmcvbWVkaWEvb3V0ZXIvdXJsP2lkPScgKyBqLmlkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkb3dubG9hZDovLycgKyBqc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBqKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+ingueci01WJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS52cHMwMi50b3AvQVBJL2tnX211c2ljX212LnBocD9uPTEmdHlwZT1qc29uJm1zZz0nICsgai50aXRsZSkpLmRhdGEudXJsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndmlkZW86Ly8nICsganNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7ICAgICAgICAgICAgICAgICAgICAgfSwgaWQpICAgICAgICAgICAgICAgICB9LCBnZWRhbikgICAgICAgICAgICAgfSksICAgICAgICAgfSk7IC8q572R5piT5o6S6KGM5qac5q2M5Y2VX+e7k+adnyovICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgdGl0bGU6IGdldEl0ZW0oJ2t3Z2QnLCAnbmV3JykgPT0gJ25ldycgPyAn5pyA5paw5q2M5Y2VJyA6ICfmnIDng63mrYzljZUnLCAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fM19yb3VuZF9maWxsJywgICAgICAgICAgICAgcGljOiAnaGlrZXI6Ly9maWxlcy9KbS9sbS9tdXNpYy84Mi5zdmcnLCAgICAgICAgICAgICAvKmRlc2M6Z2V0SXRlbSgna3dnZCcsICduZXcnKSA9PSAnbmV3JyA/ICfmnIDmlrDmrYzljZUnIDogJ+acgOeDreatjOWNlScsKi8gICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ2t3Z2QnLCBnZXRJdGVtKCdrd2dkJywgJ25ldycpID09ICduZXcnID8gJ2hvdCcgOiAnbmV3Jyk7ICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7ICAgICAgICAgICAgICAgICB0b2FzdCgn5bey5YiH5o2iJyArIChnZXRJdGVtKCdrd2dkJywgJ25ldycpID09ICduZXcnID8gJ+acgOaWsOatjOWNlScgOiAn5pyA54Ot5q2M5Y2VJykpOyAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JyAgICAgICAgICAgICB9KSwgICAgICAgICB9LCB7ICAgICAgICAgICAgIHRpdGxlOiAn5pCc57SiJywgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsICAgICAgICAgICAgIGRlc2M6ICfwn5GJ8J+PuyDmrYzlkI3jgIHmrYzmiYvjgIHmppzljZXlkI3np7AnLCAgICAgICAgICAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4geyAgICAgICAgICAgICAgICAgaWYgKCFpbnB1dCkgcmV0dXJuIFwidG9hc3Q6Ly/or7fovpPlhaXlhbPplK7or43mkJzntKJcIjsgICAgICAgICAgICAgICAgIHZhciB0eHQgPSBpbnB1dDsgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ3NzcHRfaW5wdXQnLCB0eHQpOyAvKumfs+S5kOaQnOe0ouW8leaTjl/lvIDlp4sqLyAgICAgICAgICAgICAgICAgcmV0dXJuIFwic2VsZWN0Oi8vXCIgKyBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1wi5bCP5LiDXCIsIFwi5bCP6Iq4XCIsIFwi5bCP6I60XCJdLCAgICAgICAgICAgICAgICAgICAgIGF0dGFjaFZpZXc6IHRydWUsICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHR4dCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gJ+Wwj+S4gycpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I2Z5cGFnZSNpbW1lcnNpdmVUaGVtZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgodHh0KSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCflsI/kuIPmkJzntKInKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB5aXlhbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvSm0veWl5YW4uanNvbicpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF4ID0geWl5YW4ubGVuZ3RoIC0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWluID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbnVtID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpKSArIG1pbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgRGlzcGxheSA9IHlpeWFuW251bV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS55YW9odWQuY24vYXBpL3FxbXVzaWMvdjI/a2V5PWFVbHlrQTM1S2dtd1BVcGVoSktOYkZqbzZ2JnR5cGU9c28mcGFnZT0nICsgTVlfUEFHRSArICcmcGVyX3BhZ2U9MzAmd29yZD0nICsgdHh0KSkuZGF0YS5saXN0Lm1hcChqID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqLnRpdGxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2VyOiBqLmF1dGhvciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogai5waWMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGJ1bTogai5hbGJ1bS5uYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGoubWlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfwn5SOXFx0JyArIHR4dCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn8J+nuFxcdOWwj+S4g+mfs+S5kFxcblxcbvCfjqhcXHQnICsgRGlzcGxheS5yZXBsYWNlKC/vvIx844CCL2csICcgJyksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6IGpzb25bMF0ucGljLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLmZvckVhY2goaiA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogai50aXRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGouYWxidW0gPyBqLnNpbmdlciArICcgLS0gJyArIGouYWxidW0gOiBqLnNpbmdlciArICcgLS0gJyArIGoudGl0bGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBqLnBpYyArICdAUmVmZXJlcj0nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5sYXp5UnVsZSgoaikgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL1FRbXVzaWNWSVAvP2JyPTExJm1pZD0nICsgai5pZCkpLmRhdGEuc3JjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gW2pzICsgJyNpc011c2ljPXRydWUjJ107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly94aWFvYXBpLmNuL0FQSS9tdl9zcS5waHA/bj0xJm1zZz0nICsgai50aXRsZSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMjAwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkudXJsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gW2pzb25bM10gfHwganNvblsyXSB8fCBqc29uWzFdIHx8IGpzb25bMF1dOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbHJjID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkueWFvaHVkLmNuL2FwaS9tdXNpYy9scmM/a2V5PWFVbHlrQTM1S2dtd1BVcGVoSktOYkZqbzZ2JnR5cGU9cXEmbWlkPScgKyBqLmlkKSkuZGF0YTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHt9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsczogdXJsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBseXJpYzogbHJjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGopLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0VGl0bGU6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkuIvovb3mrYzmm7InLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoaikgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS54aW5nemhpZ2UuY29tL0FQSS9RUW11c2ljVklQLz9icj0xMSZtaWQ9JyArIGouaWQpKS5kYXRhLnNyYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZG93bmxvYWQ6Ly8nICsganNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBqKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfop4LnnItNVicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly94aWFvYXBpLmNuL0FQSS9tdl9zcS5waHA/bj0xJm1zZz0nICsgai50aXRsZSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiAyMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLnVybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gW2pzb25bM10gfHwganNvblsyXSB8fCBqc29uWzFdIHx8IGpzb25bMF1dOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuY2VuZ3VpZ3VpLmNuL2FwaS9qdWhlL2FwaS5waHA/dHlwZT1rZ212Jm49MSZtc2c9JyArIGoudGl0bGUsIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMjAwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5kYXRhLnVybF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHM6IHVybCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHR4dCkgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSAn5bCP6Iq4JykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKHR4dCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZSgn5bCP6Iq45pCc57SiJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeWl5YW4gPSBKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL2ZpbGVzL0ptL3lpeWFuLmpzb24nKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1heCA9IHlpeWFuLmxlbmd0aCAtIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1pbiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG51bSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSkgKyBtaW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIERpc3BsYXkgPSB5aXlhbltudW1dOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cDovL211c2ljLjE2My5jb20vYXBpL3NlYXJjaC9nZXQvd2ViP3R5cGU9MSZvZmZzZXQ9MCZsaW1pdD05MCZzPScgKyB0eHQpKS5yZXN1bHQuc29uZ3MubWFwKGogPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2luZ2VyID0gai5hcnRpc3RzLm1hcChzID0+IHMubmFtZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogai5uYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2VyOiBzaW5nZXJbMF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL3dhbmdodW4udG9wL3FxbXVzaWMvd3ltdXNpYy5waHA/dHlwZT1waWMmaWQ9JyArIGouaWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGJ1bTogai5hbGJ1bS5uYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGouaWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWQ6IGoubXZpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNWV9QQUdFID09IDEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn8J+UjlxcdCcgKyB0eHQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ/Cfp7hcXHTlsI/oirjpn7PkuZBcXG5cXG7wn46oXFx0JyArIERpc3BsYXkucmVwbGFjZSgv77yMfOOAgi9nLCAnICcpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiBqc29uWzBdLnBpYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5tYXAoaiA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogai50aXRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IGoucGljICsgJ0BSZWZlcmVyPScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBqLmFsYnVtID8gai5zaW5nZXIgKyAnIC0tICcgKyBqLmFsYnVtIDogai5zaW5nZXIgKyAnIC0tICcgKyBqLnRpdGxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5sYXp5UnVsZSgoaikgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL05ldEVhc2VfQ2xvdWRNdXNpY19uZXcvP2JyPTUmc29uZ2lkPScgKyBqLmlkKSkuZGF0YS5zcmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganMgPSAoJ2h0dHBzOi8vbXVzaWMuMTYzLmNvbS9zb25nL21lZGlhL291dGVyL3VybD9pZD0nICsgai5pZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbanMgKyAnI2lzTXVzaWM9dHJ1ZSMnXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbHJjID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cDovL211c2ljLjE2My5jb20vYXBpL3NvbmcvbHlyaWM/b3M9cGMmbHY9LTEma3Y9LTEmdHY9LTEmaWQ9JyArIGouaWQpKS5scmMubHlyaWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHM6IHVybCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHlyaWM6IGxyYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBqKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdFRpdGxlOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5LiL6L295q2M5puyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGopID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS54aW5nemhpZ2UuY29tL0FQSS9OZXRFYXNlX0Nsb3VkTXVzaWNfbmV3Lz9icj01JnNvbmdpZD0nICsgai5pZCkpLmRhdGEuc3JjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gKCdodHRwczovL211c2ljLjE2My5jb20vc29uZy9tZWRpYS9vdXRlci91cmw/aWQ9JyArIGouaWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkb3dubG9hZDovLycgKyBqc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+ingueci01WJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGopID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gdC5zcGxpdCgnICcpWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS52cHMwMi50b3AvQVBJL2tnX211c2ljX212LnBocD9uPTEmdHlwZT1qc29uJm1zZz0nICsgai50aXRsZSkpLmRhdGEudXJsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd2aWRlbzovLycgKyBqc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHR4dCkgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I2Z5cGFnZSNpbW1lcnNpdmVUaGVtZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgodHh0KSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCflsI/ojrTmkJzntKInKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB5aXlhbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvSm0veWl5YW4uanNvbicpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF4ID0geWl5YW4ubGVuZ3RoIC0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWluID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbnVtID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpKSArIG1pbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgRGlzcGxheSA9IHlpeWFuW251bV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3NlYXJjaC5rdXdvLmNuL3Iucz9jbGllbnQ9a3QmcG49JyArIChNWV9QQUdFIC0gMSkgKyAnJnJuPTMwJnZpcHZlcj0xJmZ0PW11c2ljJmVuY29kaW5nPXV0ZjgmcmZvcm1hdD1qc29uJm1vYmk9MSZhbGw9JyArIHR4dCkpLmFic2xpc3QubWFwKGogPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW1nID0gKCdodHRwOi8vaW1nMS5rd2Nkbi5rdXdvLmNuL3N0YXIvYWxidW1jb3Zlci81MDAnICsgai53ZWJfYWxidW1waWNfc2hvcnQuc3BsaXQoJzEyMCcpWzFdKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqLlNPTkdOQU1FLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2VyOiBqLkFSVElTVCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogaW1nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxidW06IGouQUxCVU0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWQ6IGouRENfVEFSR0VUSUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWQ6IGoubXZwYXlpbmZvLnZpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNWV9QQUdFID09IDEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn8J+UjlxcdCcgKyB0eHQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6IGpzb25bMF0ucGljLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfwn6e4XFx05bCP6I606Z+z5LmQXFxuXFxu8J+OqFxcdCcgKyBEaXNwbGF5LnJlcGxhY2UoL++8jHzjgIIvZywgJyAnKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5tYXAoaiA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogai50aXRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogai5waWMgKyAnQFJlZmVyZXI9JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGouYWxidW0gPyBqLnNpbmdlciArICcgLS0gJyArIGouYWxidW0gOiBqLnNpbmdlciArICcgLS0gJyArIGoudGl0bGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLmxhenlSdWxlKChqKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvS3V3b19CRF9uZXcvP249MSZicj01Jm5hbWU9JyArIGoudGl0bGUpKS5kYXRhLnNyYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IGZldGNoKCdodHRwczovL2FudGlzZXJ2ZXIua3V3by5jbi9hbnRpLnM/dHlwZT1jb252ZXJ0X3VybCZmb3JtYXQ9bXAzJnJpZD0nICsgai5yaWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gW2pzICsgJyNpc011c2ljPXRydWUjJ107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IEpTT04ucGFyc2UoZmV0Y2goXCJodHRwczovL20ua3V3by5jbi9uZXdoNS9zaW5nbGVzL3NvbmdpbmZvYW5kbHJjP211c2ljSWQ9XCIgKyBqLnJpZCkpLmRhdGEubHJjbGlzdC5tYXAoZCA9PiB74oCL4oCLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IChkLnRpbWUgJSA2MCkudG9GaXhlZCgyKS5wYWRTdGFydCg1LCAnMCcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG0gPSAoKGQudGltZSAtIHMpIC8gNjApLnRvRml4ZWQoMCkucGFkU3RhcnQoMiwgJzAnKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnWycgKyBtICsgJzonICsgcyArICddJyArIGQubGluZUx5cmlj4oCLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmpvaW4oJ1xcbicpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxzOiB1cmwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx5cmljOiBscmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaiksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRUaXRsZTogZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+S4i+i9veatjOabsicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvS3V3b19CRF9uZXcvP249MSZicj01Jm5hbWU9JyArIGoudGl0bGUpKS5kYXRhLnNyYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IGZldGNoKCdodHRwczovL2FudGlzZXJ2ZXIua3V3by5jbi9hbnRpLnM/dHlwZT1jb252ZXJ0X3VybCZmb3JtYXQ9bXAzJnJpZD0nICsgai5yaWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Rvd25sb2FkOi8vJyArIGpzb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn6KeC55yLTVYnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoaikgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpZCA9PSAnMCcpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudnBzMDIudG9wL0FQSS9rZ19tdXNpY19tdi5waHA/bj0xJnR5cGU9anNvbiZtc2c9JyArIGoudGl0bGUpKS5kYXRhLnVybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGh0bWwgPSBmZXRjaCgnaHR0cHM6Ly9hbnltYXRjaC5rdXdvLmNuL21vYmkucz9mPXdlYiZ1c2VyPTZmMTczY2Y5YTJhOWRhNGMmc291cmNlPWt3cGxheWVyX2FyXzEwLjguMi4yXzEzOC5hcGsmdHlwZT1nZXRfdXJsX2J5X3ZpZCZxdWFsaXR5PU1QNEhWJnAycGlkPTEmdmlkPScgKyBqLnZpZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGEgPSBodG1sLnNwbGl0KCc9JylbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGIgPSBhLnNwbGl0KCc/JylbMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd2aWRlbzovLycgKyB1cmwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdHh0KSAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgfSwgdHh0KSAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgfSksICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldEl0ZW0oJ3NzcHRfaW5wdXQnLCAnJyksICAgICAgICAgICAgIH0gICAgICAgICB9KTsgLyrpn7PkuZDmkJzntKLlvJXmk45f57uT5p2fKi8gICAgIH0gLyrlm7rlrprnv7vpobUx57uT5p2fKi8gLyrphbfmiJHpn7PkuZDmrYzljZVf5byA5aeLKi8gICAgIGxldCBrd2dkID0gZ2V0SXRlbSgna3dnZCcsICduZXcnKTsgICAgIGxldCBodG1sID0gKCdodHRwOi8vd2FwaS5rdXdvLmNuL2FwaS9wYy9jbGFzc2lmeS9wbGF5bGlzdC9nZXRSY21QbGF5TGlzdD9sb2dpblVpZD0wJmxvZ2luU2lkPTAmYXBwVWlkPTc2MDM5NTc2JiZwbj0nICsgTVlfUEFHRSArICcmcm49MzYmb3JkZXI9JyArIGt3Z2QpOyAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKGh0bWwpKS5kYXRhOyAgICAganNvbi5kYXRhLm1hcChkYXRhID0+IHsgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICB0aXRsZTogZGF0YS5uYW1lLCAgICAgICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzMnLCAgICAgICAgICAgICBwaWM6IGRhdGEuaW1nLCAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjZnlwYWdlI2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKChkYXRhKSA9PiB7ICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJ+Wwj+iOtOatjOWNlScpOyAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTsgICAgICAgICAgICAgICAgIGxldCBodG1sID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9tLmt1d28uY24vbmV3aDVhcHAvd2FwaS9hcGkvd3d3L3BsYXlsaXN0L3BsYXlMaXN0SW5mbz9waWQ9JyArIGRhdGEuaWQgKyAnJnJuPTMwJnVhPSZpcD0mcG49JyArIE1ZX1BBR0UpKS5kYXRhOyAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBodG1sLm11c2ljTGlzdC5tYXAoaiA9PiB7ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGoubmFtZSwgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2VyOiBqLmFydGlzdCwgICAgICAgICAgICAgICAgICAgICAgICAgYWxidW06IGouYWxidW0sICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogai5waWMsICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBqLnJpZCwgICAgICAgICAgICAgICAgICAgICAgICAgdmlkOiBqLm12cGF5aW5mby52aWQsICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU6IGouc29uZ1RpbWVNaW51dGVzICAgICAgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkgeyAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBodG1sLm5hbWUsICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cicsICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogaHRtbC5pbWc3MDAgfHwgaHRtbC51UGljLCAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn8J+nuFxcdCcgKyBodG1sLnVzZXJOYW1lICsgJ1xcblxcbvCfjrxcXHQnICsgZGF0YS50b3RhbCArICfpppYnLCAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JywgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgIGpzb24ubWFwKGogPT4geyAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqLnRpdGxlLCAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGouYWxidW0gPyBqLnNpbmdlciArICcgLS0gJyArIGouYWxidW0gOiBqLnNpbmdlciArICcgLS0gJyArIGoudGl0bGUsICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogai5waWMgKyAnQFJlZmVyZXI9JywgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5sYXp5UnVsZSgoaikgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS54aW5nemhpZ2UuY29tL0FQSS9LdXdvX0JEX25ldy8/bj0xJmJyPTUmbmFtZT0nICsgai50aXRsZSkpLmRhdGEuc3JjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IGZldGNoKCdodHRwczovL2FudGlzZXJ2ZXIua3V3by5jbi9hbnRpLnM/dHlwZT1jb252ZXJ0X3VybCZmb3JtYXQ9bXAzJnJpZD0nICsgai5pZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gW2pzICsgJyNpc011c2ljPXRydWUjJ107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBscmMgPSBKU09OLnBhcnNlKGZldGNoKFwiaHR0cHM6Ly9tLmt1d28uY24vbmV3aDUvc2luZ2xlcy9zb25naW5mb2FuZGxyYz9tdXNpY0lkPVwiICsgai5pZCkpLmRhdGEubHJjbGlzdC5tYXAoZCA9PiB74oCL4oCLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gKGQudGltZSAlIDYwKS50b0ZpeGVkKDIpLnBhZFN0YXJ0KDUsICcwJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtID0gKChkLnRpbWUgLSBzKSAvIDYwKS50b0ZpeGVkKDApLnBhZFN0YXJ0KDIsICcwJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnWycgKyBtICsgJzonICsgcyArICddJyArIGQubGluZUx5cmlj4oCLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuam9pbignXFxuJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHt9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHM6IHVybCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBseXJpYzogbHJjICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICAgICAgICAgICB9LCBqKSwgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRUaXRsZTogZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkuIvovb3mrYzmm7InLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL0t1d29fQkRfbmV3Lz9uPTEmYnI9NSZuYW1lPScgKyBqLnRpdGxlKSkuZGF0YS5zcmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gZmV0Y2goJ2h0dHBzOi8vYW50aXNlcnZlci5rdXdvLmNuL2FudGkucz90eXBlPWNvbnZlcnRfdXJsJmZvcm1hdD1tcDMmcmlkPScgKyBqLmlkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Rvd25sb2FkOi8vJyArIGpzb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBqKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn6KeC55yLTVYnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqLnZpZCA9PSAnMCcpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gdC5zcGxpdCgnICcpWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZwczAyLnRvcC9BUEkva2dfbXVzaWNfbXYucGhwP249MSZ0eXBlPWpzb24mbXNnPScgKyBqLnRpdGxlKSkuZGF0YS51cmw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaHRtbCA9IGZldGNoKCdodHRwczovL2FueW1hdGNoLmt1d28uY24vbW9iaS5zP2Y9d2ViJnVzZXI9NmYxNzNjZjlhMmE5ZGE0YyZzb3VyY2U9a3dwbGF5ZXJfYXJfMTAuOC4yLjJfMTM4LmFwayZ0eXBlPWdldF91cmxfYnlfdmlkJnF1YWxpdHk9TVA0SFYmcDJwaWQ9MSZ2aWQ9JyArIGouaWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGEgPSBodG1sLnNwbGl0KCc9JylbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYiA9IGEuc3BsaXQoJz8nKVswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndmlkZW86Ly8nICsgdXJsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLCAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgfSwgZGF0YSksICAgICAgICAgfSk7ICAgICB9KTsgLyrphbfmiJHpn7PkuZDmrYzljZVf57uT5p2fKi8gICAgIHNldFJlc3VsdChkKTsgfSnigIsiLCJpY29uIjoiaGlrZXI6Ly9maWxlcy8wMmYvbW9yZS/pn7MucG5nIiwiZGVzYyI6IiIsInR5cGUiOiJpY29uXzQifSx7InN0YXR1cyI6dHJ1ZSwicGF0dGVybiI6MCwibmFtZSI6IuS6keebmOWQmyIsInRpdGxlIjoi5LqR55uY5ZCbIiwidXJsIjoiaGlrZXI6Ly9ob21lQOS6keebmOWQmy7nroB8fOS6keebmOWQmyIsImljb24iOiJoaWtlcjovL2ZpbGVzL3pmL2N5L+mYv+mHjC5wbmciLCJkZXNjIjoiIiwidHlwZSI6Imljb25fNCJ9XSwiZm9sZF9zdGF0dXMiOmZhbHNlLCJwYXR0ZXJuIjozfSx7Im5hbWUiOiLnu4Q1IiwibWFyayI6IkEiLCJsaXN0IjpbeyJzdGF0dXMiOnRydWUsInBhdHRlcm4iOjAsIm5hbWUiOiLnjKvnnLznlLXlvbEiLCJ0aXRsZSI6IueMq+ecvCIsInVybCI6IkBqczogJCgnaGlrZXI6Ly9lbXB0eSNmeXBhZ2Ujbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjI2Z1bGxUaGVtZSMnKS5ydWxlKCgpID0+IHsgICAgIGV2YWxQcml2YXRlSlMoJ0o5R2JhM3F4NXpwQlBUVlRqbGNKZ2FqOE1EZ0xHZDhyTWFqVG1sSW9GT3FBYUhpbHJWM0p5LzFLemFJY3gwQ1J1OE1SMFh5ZzZqSHZTOGFZLzMrd21IS0xGR3pUVTREN3FQb0Y3dWJjeGgxN0lHclNvRGJsUTRybWR2Wmxxd3hZRGNLZVU0RWRJaE1uaEhqZHVvTis2Ym9XbERrV3AzMTRrNEpENDk2U3FpZkdIdjlWK1FOZ3ljaFhkYzRTYlB4b3VZbHcvUUhPU0JzTFc1aXF4YlR0cFRtYU1FdWlSM0x6TUxKQlluMWVmdjNCV3FSSFlVeVc4U09MU0VJbm9TUGpRUnRSMmlHMXdCTDc4M2x2ZyszendxTmxKOU5kakRDbVFlV2VxL2U1eG0vTVM0R1NWdFV4QXhidE1QamFwZWhvQXc2NDBmZmcrNzdjM3pCaThYQ2FwYjZzN3htemF4aTd5RjZFNlRMa29uN2xFMThOQjBzLzRqRFAvcHluSjJZOGNLT2o0Vk9TVnRNVWExTU4zSllVQkRHVTRMYzBjazZJd24yRFhYRDlodmFOOU00Ymkwa1VjeTloOW5IRHZHRmFxdVhKQ0lLSWd5OS9NRzQ0WnNWanFRSDFId3RxQlZMb3ZnSXlRMnRoK2JoZityNHlEVVFDRit1SHR6TU1nZm12RitJLzZxTWpkRGRSbVJHVi9LMzFIWWp4TWpaUVEwRmppcG5zenlpVStOWmg5SUdIa0gwRG45M1NqaGt1Q0RGbFZpZTZPckYxa1diU1pRQkhPMitqZzl4ZnhiWnBYZ25wbjR4akdObWpsMFdCWEgrUUdzV29hMVNiSG4vaGswaEdjVkUvQmorVHRtUFVqS1M2Z1BLQkhrT1pVOThDeVhVT0xoMUdDRXYvRjlmQXlJQXowU0h3MHAvckRibjVva3BvWCtkTnh2VkRJb1hxbTFHZ1MwZDBhSEtMRkd6VFU0RDdxUG9GN3ViY3hoM2NtQ25XOHRYTDdtUFhiYW0vWEh3VnNIeTJVNnA2eFBabkFheUx2cEdqZWtGVnpXMTg1L2llcmhjenV2c2d6ckhSbkN5UXZscVZyQUhxb1M5Q2VBVmZ5MnZwaHpqbEEwNUY0OXg3cWhYUlVZY2FUUzY3Kzl4dnpEQkp1MGg5U1FaM1RYSUNaSXh5dEZsY3FNblZiallTRlBtanZvVzl1bGhBUHRmdGxyM1pPWWtvTVluM3BXMW95dXBsdnJIYk1MRnlpeFJzMDFPQSs2ajZCZTdtM01ZZDNKZ3AxdkxWeSs1ajEyMnB2MXg4RmJCOHRsT3Flc1QyWndHc2k3NlJvM3BRMDZVL08vcEVCRlNKTU8zUnlRcTFjMkdLL1dLUDBqSDJiVytteGtXNlF3UVdjNW9oOU9GRzg3OXFCSDNZUVd0WmhSMGRvSUhUU3o3OWtkeXR6Vk9mdTRFMkFLNXdQL1p5b2VDc0NETFl3azI5ZmErODEwNXRiYTVCL3YyTW5YRkpyNW95VzZvcWc5b0Q4eEF5MnE2SXhZWDlsR2VBeHJhYWhkaC94czdFb3VxNlVGV1J1SGRUb1BES1VTV1A1UiszUmRpOE1VclRWOHpLM0RYYWpkYTZwRENGVkJIZmxxRmllbWZHMDNTNnFiOFFDV2gvWUo3aHo0bGpXSWE0WndFYjh3SkgvUU14T3orY2E0ZVlGMEJLSC9EZWQ2QmNCZXFzTjF1UEJadDIybHBRcDd2NUFGQTA4QUFuZkNLRDZsVDlXVVBmREozRnFGTjl1VmIyNWQvbFV4Zm4yamdadXpkYXV4Yk51VTZSYUprazlidUVKNFVXVUVDSUVwRlVzNXE4RWxCTFdNUU4zbUlLcUVUYmFsT2tpQXovcmh3UjJSVGlNSXVxcHlqRGlXaGVhbGJKR1FydlRLMi9FWlZYZ0NkQ3J4ZWhkUGdyNzhObzhYeTBESW5lZ2VDZFBCWVd4WTlDVWt1QUZLUFhSZW54RmY0N0ZTN01mWUpnUm1JZGsyb21WTVN5RDRIR1NhU1dRSGt3eTFLWVlpVTNIV3dpZXVQc1hrcCtjaTBMNWlCcFRpUHlvTU9sdXdXby94bGRYbU9GaWgrNllDQVdVaERpV3pGaW5Fa1EzbEVZVVYvVUxlMnlVVXRMZWtkUEd6cjlkd2RvZyt4Vy9vMy9QYVI2amdFQVVJN2o2S0JnZzFnb2NqWW9kWWFNWllLZURMR1FBOE1KUkNXeWxDbFBLdHUraG5qbFVTbk9DVWpOOUZJOWxTTWhWUWY2ZHdEM3h1dVltc1lnSEgvVlcwK0VrUk9zT1lmMHdSUStYL0VodjZtMU5aa0pzRFlpVlp4K21LRVM3MDVKcjVveVc2b3FnOW9EOHhBeTJxNklDRWh3dU4vNGdPOVNlWEtQMFhHdWRlWmQzWEdhT3orRGJCelk0UVYzZDFDeXpid1E1ZDJxRmw4YnREc2dHb1pRM3JIWUc2N0FNcW5pQ0J3SHl5cVlZZDhPOUdHc0IzSFprT051cFJwWnNJRG53TUt2Z0lrdlRHbWlrcGloZXJ1VkErbGtYTXlrdkJOMDRZUWRORXBTV2xOc0JMNWNRelZRN0hJaldWd1RGOTFJU1IzTzQ0bG9VQXBXeDVJL2xVc3E0VVdvUkFLMzlaR3Y2MnJ6MWpJNEN5RHZLeUp2ckg1ZnhQalltUnBib3JnYTBFbE9MbDYrUDh0MDBRMDNWbGNHNnlhZXArQ3FxMnVFTm9wZzBEenhUejE0cDMzaDUrR0xxNTFYTGJtcmtoVGtkSW43aHUwQmRkZlNZTDRTaER2V1BTYzVUdkJQblQrNThUcmVIVDV5T0FXQVFRaTRDbzJkdHZjYnc0Y2g2ME1Gd3BOdW9yeFdZRS9GSW9YSU1nelM4M0FidjdFTnMvMUVGNGtYVDA1VW5ndlBZelB3bHJVL2Nkbi9CMldaRDRkUzRBWFBPTVY1a2NBU2pyZWRFUTZ6T1pTVlVEcDU2bm5LOE9qMGJycm05QjY5RHBJWVdveldaRDltNk1DaUVHUE0yckFSUnl1WnJnWEswUnhIbHhmZkZYNS8rR3NWSUdJMlJHdlN0Z1Iwb2ZSNW1BejV6RE9SUmZmUjlpQm9sQVp5ZkNpbFRRZ211Mk8yTGJMSVhNV3dNcll4bXZqTG1iZHdCaHBxWW93T0c4Q0xmK2FuSlFPb3ljQVdZcGNoZGU5Y2l4WEtNeWY4VFBKRWpmSWUycmM4enBReSt3Nzg4N0RrSnl2djJ3bk9KeEZocWhBTGZORUcrekZ3MlF0UW9ZV3Jnd1QwSFRpOHNrdUFFRDlHeTR2bDBzUjh4SXBiWEFNKzBNVG5sNDI0Y2g1MzJJZi85cVlTaEJGVE5HWldFaFhPbERMN0R2enpzT1FuSysvYkNjNG5TZ0VyNEwyWnU2cWdKeGFuTWQ4MXNjNlVNdnNPL1BPdzVDY3I3OXNKemlkbElINmR5SGRkQlI5MFp6ZnJSU2VrbjlpUDRma2tNeWVJQW5KeWlyMEVhY3NyeTBqV1ZuUDdDSi83MWtnQjFQYmtkSW43aHUwQmRkZlNZTDRTaER2V3l5dkxTTlpXYy9zSW4vdldTQUhVOXNQd2JDVW9JaENSWitxL1FpK0FKbktUZ0pnczJqVEZrRmdzaVJsem5tWE16cFF5K3c3ODg3RGtKeXZ2MnduT0oyZTJjSTNkUEFUcWdBcDdWUGI5dTZ5b0x6RmdJc21yaWk2WG1CaWhZU3dMenBReSt3Nzg4N0RrSnl2djJ3bk9KN25oSDBJNnF2WEx6OUZDOVlHWFczNm9MekZnSXNtcmlpNlhtQmloWVN3THpwUXkrdzc4ODdEa0p5dnYyd25PSjlla1hyVDZkNWlUTEpJQlVJdDdjanZMSzh0STFsWnord2lmKzlaSUFkVDI0Y0xJMjJlSWtCWGltZGRHWGJsWG9DTzJpT0QySm5tVjBsd3oweHNuN0t3L1ZJQ2VmZFZlSUtyNmUvU0swMGI3NC9pRCsvTWJ1bkZIMjFja3NNcWhTbzRmMW1iWitBNHRtMzRWRkpBdGZ2VExLOHRJMWxaeit3aWYrOVpJQWRUMk5PU3JGZVJiWmd4b1Z6ZjB6azNWZDc0YURGc0o3QXR3cWFDTWVPczRWWWJYcEY2MCtuZVlreXlTQVZDTGUzSTd1aWlCamZobXZLMUxxNmorcHZ0c0h6enZjdVhJRXJncjFEL1B1Z0ZtaE9VNVBJdGszdEpwUnNiNGJ2TlRZZ1NSZ2Nyd2t4dnhjRjJWc2p2NFd6NG94TTZVTXZzTy9QT3c1Q2NyNzlzSnppZllJdUN2UjltNE5LOEVWUXcxQzQ2ZHFUVUh0dGIyN1NHalJLVkhZZi9XRkl4NFJESUZvaG8xdHZVZUQrV0kvby9BZjgwSTE2Y0NkdVVtaEZ1VUhKQTd3Rml0SFNoK0VLSkdDTW9VdUZJMjFQWDVKclV0NWF6dmpSZDJqK0dQWEVQTEs4dEkxbFp6K3dpZis5WklBZFQyQ2pQTmx0VUVwbEY2UkZvYWFzcXBQc3NyeTBqV1ZuUDdDSi83MWtnQjFQWmIxNXRQQ3I3QXZiUUFXTXlJYzhPYy80NW5QS3FIU0lqSnhFZFZPamtMcWZUNXQ4WEh5SHRnR0RUUUF5enB5SXFTVEt0cjBIOUxRWjNQc3pGOWdVTlFDODlqTS9DV3RUOXgyZjhIWlprUGh3WkhjNGVXSFM2RVlUNFdCaG5RZDVVU0ZEc3k4L1pBajZrYXdQbWFrcmxKNVh1TW91ZDdJNGg3R2pPNkUvcGtmc1B3YkNVb0loQ1JaK3EvUWkrQUpuSmZXVDVNM1VMVlVEenlLMi9ta1ZCY0doZTQ0WlMxNHF3UFNRYU1TYy9JOFBVT0JEb2tFZ3N5RVFoWHVuS1FMc3FiV2FIeWduY0FFUUdmRFZ3UFMyOVRmbzFPeWtOK0tPWi9ENWd4V2VpRzJob0NXdER1a3dSK2lYNnVyMDdybzlDcjJuRFE2L3dleXNQc2NIaHBtcjRJNXVUUmxBMWZhQlBtUDkzN0h0MWE0OXZ5NzkyTzlPSWpHTE84TVR2SmMySWd2TGhIcU5nYTBTOGlIcFlIc1d4ZXMwYjR5SUQ0TytOVUgybkxzUnFOUXNTUWw0bkVaampVaXhwOEZKb0ZUTnJINEU2K2JKR04zSWhoa1RBRDNkR0pNT25BQW96L0dPSForczhEV0Q1N2ZZQ0xBNFVsSEVPdVZXVVRiZ2owNkpmT2xETDdEdnp6c09RbksrL2JDYzRuQ0kwQjhPK1VybmwwaFp4dWxFSWZ6MEVHUmhPR3hxZzJicnBJREFKVXRtKzU0UjlDT3FyMXk4L1JRdldCbDF0K1FUMHpsWDRZWXF1ZXZKRDFlNFVkS2l5a3pNYjBURm53dmE5UmY2eEhyOWhsQVVUTWJKUFgvU21nQnpFenpzNmxFcFh6OFJYV1I1Sm1VNmRzQWZLWldRRkhFQ3d4ZTdsVjJ3OWJ4WUJQL2tXZldSMGxNdDR0RWFUMXRwYzI2YU1WeXl2TFNOWldjL3NJbi92V1NBSFU5aWhlam5hNVFFbkcyaXpoamlJd0hTTExLOHRJMWxaeit3aWYrOVpJQWRUMnBiYjJwSEk4L3Qzc24yWUVBQVA2aExweWdvMytGaEVkKzI4TnRUZmtjM2pPbERMN0R2enpzT1FuSysvYkNjNG5DdXR1aDk5ZURhRUthT2pLei9BSWhHVlFXajJGbldwYnJaV0FlaVlPMzJETWdySGI4dHV3dWhMT1lnci8rKzQ4eXl2TFNOWldjL3NJbi92V1NBSFU5dUZEditPY1ZxWjhlT2FWTnRQblFBbWxQQzR2akxHekVnbjZ1WHRtTmp4OWZFMkN5dkc2SFNkMHZvL3ZOR2syRFViMUdPay9kM05pWnoybzNFOGNXQndkcU1PajlWSE40YUdhNVJidG9LZ3B5eXZMU05aV2Mvc0luL3ZXU0FIVTlzc3J5MGpXVm5QN0NKLzcxa2dCMVBiNURwRW41bWlUM0p5NmtYMU1pRFZ3SkhMWXc1clZta3ZlV3ZrSnc2OVlTYVZiZzFwbVd0TVgwS2RCa1dXOEtORExLOHRJMWxaeit3aWYrOVpJQWRUMko5ZlVFY1NIV3ZrOGZweW53K0JrWUF2NGozM3BRbUxydlFjVWZ2RlR3UkgxNDQ5M2dzK2NIRzRHRm5aNjdVaGN5eXZMU05aV2Mvc0luL3ZXU0FIVTlsYjZRaVJNR1hpMjNXaXlBSUNDUVJuaG81SzF2TEoxMEVMcGlpZHBTWmpueXl2TFNOWldjL3NJbi92V1NBSFU5aFRzZnI0MG1ZZGtpaWZOUXVianYxbG9vbXhtNG1mc3RCRTY1Z1NYYzN6Qnl5dkxTTlpXYy9zSW4vdldTQUhVOW9SUUtIQVhjM0ZFNWJYdTkxdVdPa0hMSzh0STFsWnord2lmKzlaSUFkVDJSclVQdTR4Zmx4QTFuVGVUM0YvZTdNc3J5MGpXVm5QN0NKLzcxa2dCMVBiRzJzckhLVkNlenhxM04xMFQxR090RmdwRTg4bi9JQVRWTy9kbUZVaTQwc3NyeTBqV1ZuUDdDSi83MWtnQjFQYjF6cGVjWjU3MkF4YVpOTTdqbjBCV1NNT3VIMjdSS2NSWVc2RHgycHNCYzhzcnkwaldWblA3Q0ovNzFrZ0IxUGJMSzh0STFsWnord2lmKzlaSUFkVDJqa3NrcUtIczF0WmVEMXFuRmpoajhVUFhkR0RYYUNKbGVHeTNFeUFhK0FiMTQ0OTNncytjSEc0R0ZuWjY3VWhjeXl2TFNOWldjL3NJbi92V1NBSFU5b2NhVFM2Nys5eHZ6REJKdTBoOVNRWjNUWElDWkl4eXRGbGNxTW5WYmpZU3l5dkxTTlpXYy9zSW4vdldTQUhVOWxiNlFpUk1HWGkyM1dpeUFJQ0NRUm5obzVLMXZMSjEwRUxwaWlkcFNaam55eXZMU05aV2Mvc0luL3ZXU0FIVTlxdmtHODRZQldsTHY1cmE3aVpIOVJmTEs4dEkxbFp6K3dpZis5WklBZFQyaE8rUkxMdzRXSXEwdlRWM0hRclRnVUY0Y0ZRdHFlRHF2TDc5MUZYazNjU2FtNXFkK0tlZ2trRVNPRzhrUVFlcDdHZnNJTTlkSDFPd1BJd0tSUlNXRisvZCtqeEJZUUUzek9zTitJZ2tDT1lVYzRha0piY1hXNFZzWDVQRUNyeUlYL3ErTWcxRUFoZnJoN2N6RElINXI3TzJYS2Jrd3ZBaExJN0ZyanNZMGpkSE03dG9zQlN5Q1ZFTlhXaWpmb25PZ3ZSdVlkSnhVdEVKcHVOYjZsdGZqNnlzQ2Q1dDlZV1NJaFhqZzFXQ0I2ZG91dHpRVDBnN1V4eFo3YkQrT0oxR1VZeEZWUXpBdiswVkREaStDOVNrRU1mZ1RyNXNrWTNjaUdHUk1BUGQwWWt3NmNBQ2pQOFk0ZG42endOWVBudDlFY01nS3NqaEtRTkxmY0NQN0U2VW4yL1dBS1ExWVEzMWFlbXpYL1RnMEdxTzg0bE9teXNFeTFqcGEwNmVNRDd1UGFoWHBDZW1zU2drdy9rS2FpMXZQNFoyaFp6OXBhQUE5NjV5UkNSVDZGUjhyZE50NG9Ya1I1ZSt3R3ZyOWd6N3FLYmd6RFIrTVEzRmRGa1NWbyt6UTNrMFcwYk5EVUV6eFAzZTBWZGxXUDJsRHorc1NPOGVVVXhBRllzYU9WZWM3Y0hZQzZBSlk2WklLeTh6UGI4TnFQMHJQYUFoU2xlQi9KNW9YRUtwSEdZbklCblZvcE5ybE5TcVlhKytzZlFuJyk7IH0pIiwiaWNvbiI6Imhpa2VyOi8vZmlsZXMvemYvcG5nL+eMq+ecvC5wbmciLCJkZXNjIjoiIiwidHlwZSI6Imljb25fNCJ9LHsic3RhdHVzIjp0cnVlLCJwYXR0ZXJuIjowLCJuYW1lIjoi55S15Y+wMSIsInRpdGxlIjoi55S15Y+wIiwidXJsIjoiQGpzOiAkKCdoaWtlcjovL2VtcHR5I25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgc2V0UGFnZVRpdGxlKCfnlLXlj7Dlub/mkq0nKTsgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9tLnhpbWFsYXlhLmNvbS9tLXJldmlzaW9uL2NvbW1vbi9hbGJ1bS9xdWVyeUFsYnVtVHJhY2tSZWNvcmRzQnlQYWdlP2FsYnVtSWQ9Njg1ODkzNTcmcGFnZT0xJnBhZ2VTaXplPTEmYXNjPXRydWUnKSkuZGF0YS50cmFja0RldGFpbEluZm9zLm1hcChkYXRhID0+IGRhdGEudHJhY2tJbmZvLmlkKTsgICAgIHZhciB1cmwgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL21vYmlsZS54aW1hbGF5YS5jb20vbW9iaWxlLXBsYXlwYWdlL3BsYXlwYWdlL3RhYnMvdjIvJyArIGpzb24gKyAnL3RzJykpLmRhdGEucGxheXBhZ2UudHJhY2tJbmZvLnBsYXlVcmw2NDsgICAgIHZhciB0aXRsZXMgPSBbJ+aWsOmXu+aXqemkkEAnICsgdXJsLCAn5riF5pmo6Z+z5LmQQGh0dHBzOi8vbGl2ZS54aW1hbGF5YS5jb20vcmFkaW8tZmlyc3QtcGFnZS1hcHAvbGl2ZS8xMDExLzI0Lm0zdTg/dHJhbnNjb2RlPXRzJywgJ+aWsOmXu+WQrOWkqeS4i0BodHRwczovL2xodHRwLnF0Zm0uY24vbGl2ZS8yMDUwMDE2OS82NGsubXAzJywgJ+eOr+eQg+i1hOiur0BodHRwOi8vc2suY3JpLmNuLzkwNS5tM3U4JywgJ+WMl+S6rOaWsOmXu+W5v+aSrUBodHRwczovL2xpdmUueGltYWxheWEuY29tL3JhZGlvLWZpcnN0LXBhZ2UtYXBwL2xpdmUvMTc4OS8yNC5tM3U4P3RyYW5zY29kZT10cycsICfnrKzkuIDotKLnu49AaHR0cHM6Ly9saXZlLnhpbWFsYXlhLmNvbS9yYWRpby1maXJzdC1wYWdlLWFwcC9saXZlLzU2LzI0Lm0zdTg/dHJhbnNjb2RlPXRzJywgJ+emj+W7uuS6pOmAmuW5v+aSrUBodHRwczovL2xpdmUueGltYWxheWEuY29tL3JhZGlvLWZpcnN0LXBhZ2UtYXBwL2xpdmUvNzkwLzI0Lm0zdTg/dHJhbnNjb2RlPXRzJywgJ+WOpumXqOmfs+S5kOW5v+aSrUBodHRwczovL2xpdmUxYi5reG0ueG10di5jbi9hYWNfeG15eWJmXzFiL3BsYXlsaXN0Lm0zdTgnLCAn5LiK5rW35Yqo5oSfMTAxQGh0dHBzOi8vbGl2ZS54aW1hbGF5YS5jb20vcmFkaW8tZmlyc3QtcGFnZS1hcHAvbGl2ZS81My8yNC5tM3U4P3RyYW5zY29kZT10cycsICfkuIrmtbdMb3ZlIFJhZGlvQGh0dHBzOi8vbGl2ZS54aW1hbGF5YS5jb20vcmFkaW8tZmlyc3QtcGFnZS1hcHAvbGl2ZS81NS8yNC5tM3U4P3RyYW5zY29kZT10cycsICflhajml7bnur/kuIrpn7PkuZBAaHR0cDovL2xodHRwLnFpbmd0aW5nLmZtL2xpdmUvNDkxMy82NGsubXAzJywgJ+WkqeexgeWPpOWFuEBodHRwOi8vbGh0dHAucWluZ3RpbmcuZm0vbGl2ZS8yMDIxMDc1Ni82NGsubXAzJywgJ+aYn+ays+mfs+S5kEBodHRwczovL2xodHRwLnF0Zm0uY24vbGl2ZS8yMDIxMDc1NS82NGsubXAzJywgJ+eypOivreeUteWPsEBodHRwOi8vbGh0dHAucWluZ3RpbmcuZm0vbGl2ZS8xNTMxODU2OS82NGsubXAzJywgJ+aAgOmbhumfs+S5kEBodHRwczovL2xpdmUueGltYWxheWEuY29tL3JhZGlvLWZpcnN0LXBhZ2UtYXBwL2xpdmUvOTY2LzI0Lm0zdTg/dHJhbnNjb2RlPXRzJywgJ+S9m+WxseeUteWPsCBGTTkwNkBodHRwczovL2xodHRwLnF0Zm0uY24vbGl2ZS8xMjY0LzY0ay5tcDMnLCAnQXNpYUZNIOS6mua0sueypOivreWPsEBodHRwczovL2xpdmUueGltYWxheWEuY29tL3JhZGlvLWZpcnN0LXBhZ2UtYXBwL2xpdmUvOTk5LzI0Lm0zdTg/dHJhbnNjb2RlPXRzJywgJ0FzaWFGTSDlpb3lkKzpn7PkuZDlj7BAaHR0cHM6Ly9saXZlLnhpbWFsYXlhLmNvbS9yYWRpby1maXJzdC1wYWdlLWFwcC9saXZlLzE0MjcvMjQubTN1OD90cmFuc2NvZGU9dHMnLCAnQXNpYUZNIOa1geihjOmfs+S5kOWPsEBodHRwczovL2xpdmUueGltYWxheWEuY29tL3JhZGlvLWZpcnN0LXBhZ2UtYXBwL2xpdmUvNzY0LzI0Lm0zdTg/dHJhbnNjb2RlPXRzJywgJ0FzaWFGTSDmrKfnvo7pn7PkuZDlj7BAaHR0cHM6Ly9saHR0cC5xdGZtLmNuL2xpdmUvMjAwNzEvNjRrLm1wMycsICflkKzmoqbmg7NGTUBodHRwczovL2xpdmUueGltYWxheWEuY29tL3JhZGlvLWZpcnN0LXBhZ2UtYXBwL2xpdmUvMTAxNS8yNC5tM3U4P3RyYW5zY29kZT10cycsICfovbvmnb7osIPpopFAaHR0cDovL3NrLmNyaS5jbi85MTUubTN1OCcsICfpsbzkvazpn7PkuZDlnYpAaHR0cDovL2xodHRwLnFpbmd0aW5nLmZtL2xpdmUvMjA1MDAxNTgvNjRrLm1wMycsICflv4PliqjnlLXlj7BAaHR0cDovL2xodHRwLnFpbmd0aW5nLmZtL2xpdmUvMjA1MDAxNjEvNjRrLm1wMycsICc5MOWQjua9rua1gemfs+aCpuWPsEBodHRwOi8vbGh0dHAucWluZ3RpbmcuZm0vbGl2ZS8yMDIwNzc2MC82NGsubXAzJywgJ+WNt+WNt+eMq+aVheS6i+eUteWPsEBodHRwOi8vbGh0dHAucWluZ3RpbmcuZm0vbGl2ZS8yMDUwMDAzOC82NGsubXAzJywgJ+S4reWbveatjOabsuaOkuihjOamnEBodHRwczovL2xpdmUyLmt4bS54bXR2LmNuL2FhY194bXl5L3BsYXlsaXN0Lm0zdTg/X3VwdD0xNGJhZmVhNDE2NjYxMDM2ODknLCAn5aix5LmQ5bm/5pKtQGh0dHA6Ly9uZ2NkbjAxNC5jbnIuY24vbGl2ZS95bGdiL2luZGV4Lm0zdTgnLCAn5Lqk6YCa5bm/5pKtQGh0dHA6Ly9uZ2NkbjAxNi5jbnIuY24vbGl2ZS9nc2dsanRnYi9pbmRleC5tM3U4JywgJ+aWh+iJuuS5i+WjsEBodHRwOi8vbmdjZG4wMTAuY25yLmNuL2xpdmUvd3l6cy9pbmRleC5tM3U4JywgJ+e7j+a1juS5i+WjsEBodHRwOi8vc2suY3JpLmNuL2FtMTAwOC5tM3U4JywgJ+S4reWbveS5i+WjsEBodHRwOi8vbmdjZG4wMDEuY25yLmNuL2xpdmUvemd6cy9pbmRleC5tM3U4JywgJ+S4reWNjuS5i+WjsEBodHRwOi8vbmdjZG4wMDUuY25yLmNuL2xpdmUvemh6cy9pbmRleC5tM3U4JywgJ+WNjuWkj+S5i+WjsEBodHRwOi8vbmdjZG4wMDcuY25yLmNuL2xpdmUvaHh6cy9pbmRleC5tM3U4JywgJ+WNl+a1t+S5i+WjsEBodHRwOi8vc2suY3JpLmNuL25oenMubTN1OCcsICfkuaHmnZHkuYvlo7BAaHR0cDovL25nY2RuMDE3LmNuci5jbi9saXZlL3hjenMvaW5kZXgubTN1OCcsICfkuK3lub/mlrDpl7vnvZFAaHR0cDovL3N0cmVhbS5yY3MucmV2bWEuY29tLzc4Zm05d3l5MnR6dXYnLCAn5Lit5bm/5rWB6KGM572RQGh0dHA6Ly9zdHJlYW0ucmNzLnJldm1hLmNvbS9hdzl1cXl4eTJ0enV2JywgJ+S4reW5v+mfs+S5kOe9kUBodHRwOi8vc3RyZWFtLnJjcy5yZXZtYS5jb20va3M0dnNtZzNxdHp1dicsICflj7Dmub7mtbfls6FAaHR0cDovL3NrLmNyaS5jbi9oeGZoLm0zdTgnLCAn5rWO5Y2X5pWF5LqL5bm/5pKtQGh0dHA6Ly9scy5xaW5ndGluZy5mbS9saXZlLzE2NzIubTN1OCcsICfpmZXopb/mlYXkuovlub/mkq1AaHR0cDovL2xzLnFpbmd0aW5nLmZtL2xpdmUvMTYwOC5tM3U4JywgJ+axn+iLj+aVheS6i+W5v+aSrUBodHRwOi8vbHpsaXZlLnZvanMuY24vcldqeXVzOS85Mi9saXZlLm0zdTgnLCAn6ZW/5pil5pWF5LqL5bm/5pKtQGh0dHA6Ly9scy5xaW5ndGluZy5mbS9saXZlLzUwMTQubTN1OCcsICflronlvr3miI/mm7Llub/mkq1AaHR0cDovL3NhdGVsbGl0ZXB1bGwuQ05SLmNuL2xpdmUvd3hhaHhxZ2IvcGxheWxpc3QubTN1OCcsICfmsrPljZfmiI/mm7JAaHR0cDovL2xodHRwLnFpbmd0aW5nLmZtL2xpdmUvMTUzMTgzOTMvNjRrLm1wMyddOyAgICAgdmFyIGQgPSBbXTsgICAgIHRpdGxlcy5mb3JFYWNoKGZ1bmN0aW9uKHRpdGxlKSB7ICAgICAgICAgdmFyIHQgPSB0aXRsZS5zcGxpdCgnQCcpOyAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIHRpdGxlOiB0WzBdLCAgICAgICAgICAgICB1cmw6IHRbMV0gKyAnI2lzTXVzaWM9dHJ1ZSMnLCAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fMl9yb3VuZCcsICAgICAgICAgICAgIHBpYzogJ2hpa2VyOi8vZmlsZXMvMDJmL21vcmUv5ZCsLnBuZycsICAgICAgICAgfSk7ICAgICB9KTsgICAgIHNldFJlc3VsdChkKTsgfSkiLCJpY29uIjoiaGlrZXI6Ly9maWxlcy96Zi9wbmcv6Jy76JyTLnBuZyIsImRlc2MiOiIiLCJ0eXBlIjoiaWNvbl80In0seyJzdGF0dXMiOnRydWUsInBhdHRlcm4iOjAsIm5hbWUiOiLllpzpqazmi4npm4UiLCJ0aXRsZSI6IuWWnOmprOaLiembhSIsInVybCI6IkBqczogJCgnaGlrZXI6Ly9lbXB0eSNmdWxsVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgc2V0UGFnZVRpdGxlKCcnKTsgICAgIGxldCBkID0gW107ICAgICBkLnB1c2goeyAgICAgICAgIHRpdGxlOiAn5Zac6ams5ouJ6ZuFJywgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsICAgICAgICAgcGljOiAnaGlrZXI6Ly9maWxlcy8wMmYvbW9yZS/llpwucG5nJywgICAgICAgICBkZXNjOiAn566h55CGJywgICAgICAgICB1cmw6IFwic2VsZWN0Oi8vXCIgKyBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgIG9wdGlvbnM6IFtcIueZu+W9lVwiLCBcIueuoeeQhlwiLCBcIum7mOiupFwiXSwgICAgICAgICAgICAgYXR0YWNoVmlldzogdHJ1ZSwgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4geyAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09ICfnmbvlvZUnKSB7ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjbm9IaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdOyAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcImh0dHBzOi8vcGFzc3BvcnQueGltYWxheWEuY29tL3BhZ2UvbS9sb2dpblwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFwieDVfd2Vidmlld19zaW5nbGVcIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IFwiMTAwJSYmZmxvYXRcIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gbG9jYXRpb24uaHJlZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5pbmNsdWRlcyhcImh0dHBzOi8vbS54aW1hbGF5YS5jb20vXCIpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYmEud3JpdGVGaWxlKFwiaGlrZXI6Ly9maWxlcy9KbS94bWx5X2Nvb2tpZS50eHRcIiwgZmJhLmdldENvb2tpZShcIlwiKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydChcIuW3suiOt+WPluWIsGNvb2tpZe+8jOi/lOWbnuWNs+WPr1wiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZiYS5iYWNrKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1YTogTU9CSUxFX1VBLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbkJhY2s6IHRydWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSAn566h55CGJykgeyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCfmlbDmja7nrqHnkIYnKTsgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTsgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5re75YqgJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+WQjeensEBpZEDlm77niYfpk77mjqVA5Li75pKt5ZCN56ewJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJC50b1N0cmluZygoKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnB1dCkgcmV0dXJuIFwidG9hc3Q6Ly/or7fmoLnmja7mj5DnpLrovpPlhaXlhoXlrrlcIjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeG1seSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9KbS94bWx5Lmpzb24nKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1seSA9IHhtbHkuY29uY2F0KGlucHV0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9KbS94bWx5Lmpzb24nLCBKU09OLnN0cmluZ2lmeSh4bWx5KSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mt7vliqDmiJDlip8nICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4bWx5ID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL0ptL3htbHkuanNvbicpKTsgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB4bWx5Lmxlbmd0aDsgaSsrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHhtbHlbaV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IGl0ZW0uc3BsaXQoJ0AnKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGluZGV4ICsgJy4nICsgbGlzdFswXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzMnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogbGlzdFsyXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoWyfnvJbovpEnLCAn56e75L2NJywgJ+WIoOmZpCddLCAzLCAn6K+36YCJ5oup5pON5L2cJykuc2VsZWN0KChpbmRleCwgaXRlbSkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gJ+e8lui+kScpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKGl0ZW0sICfmg7PopoHmm7TmjaLnmoTlhoXlrrlcXG7lkI3np7AtaWQt5Zu+54mH6ZO+5o6lLeS4u+aSreWQjeensCcpLmlucHV0KChpbmRleCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4bWx5ID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL0ptL3htbHkuanNvbicpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWx5W2luZGV4XSA9IGlucHV0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL0ptL3htbHkuanNvbicsIEpTT04uc3RyaW5naWZ5KHhtbHkpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+abtOaUueaIkOWKn34nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpbmRleCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSAn56e75L2NJykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoJycsICfopoHnp7vliqjliLDlk6rkuKrluo/lj7fliY3pnaIv5ZCO6Z2iJykuaW5wdXQoKGluZGV4KSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHhtbHkgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvSm0veG1seS5qc29uJykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wID0geG1seVtpbmRleF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1seS5zcGxpY2UoaW5wdXQsIDAsIHRlbXApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA8IGluZGV4KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbHkuc3BsaWNlKGluZGV4ICsgMSwgMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1seS5zcGxpY2UoaW5kZXgsIDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9KbS94bWx5Lmpzb24nLCBKU09OLnN0cmluZ2lmeSh4bWx5KSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/np7vkvY3miJDlip9+JyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaW5kZXgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeG1seSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9KbS94bWx5Lmpzb24nKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWx5LnNwbGljZShpbmRleCwgMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9KbS94bWx5Lmpzb24nLCBKU09OLnN0cmluZ2lmeSh4bWx5KSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5Yig6Zmk5oiQ5YqfficgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGluZGV4LCBpdGVtKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgrKzsgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7ICAgICAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgZGVsZXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9KbS94bWx5Lmpzb24nKTsgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suaBouWkjem7mOiupCcgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgfSkgICAgICAgICB9KSwgICAgIH0pOyAgICAgZC5wdXNoKHsgICAgICAgICB0aXRsZTogJ+aQnOe0oicsICAgICAgICAgZGVzYzogJ+aQnOe0oumcgOimgeeZu+W9le+8jOS7heaUr+aMgeWFjei0ueOAgicsICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsICAgICAgICAgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHsgICAgICAgICAgICAgaWYgKCFpbnB1dCkgcmV0dXJuIFwidG9hc3Q6Ly/or7fovpPlhaXlhbPplK7or41cIjsgICAgICAgICAgICAgdmFyIHR4dCA9IGlucHV0OyAgICAgICAgICAgICBzZXRJdGVtKCfopb/pqawnLCB0eHQpOyAgICAgICAgICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSMjZnlwYWdlI2Z1bGxUaGVtZSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKHR4dCkgPT4geyAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTsgICAgICAgICAgICAgICAgIGNvbnN0IGNrID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvSm0veG1seV9jb29raWUudHh0Jyk7ICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vbS54aW1hbGF5YS5jb20vbS1yZXZpc2lvbi9wYWdlL3NlYXJjaD9rdz0nICsgdHh0ICsgJyZjb3JlPWFsbCZwYWdlPScgKyBNWV9QQUdFICsgJyZyb3dzPTUnLCB7ICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogeyAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvb2tpZVwiOiBjayAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgIH0pKS5kYXRhLmFsYnVtVmlld3MuYWxidW1zOyAgICAgICAgICAgICAgICAganNvbi5tYXAoaiA9PiB7ICAgICAgICAgICAgICAgICAgICAgbGV0IGwgPSBqLmFsYnVtSW5mbzsgICAgICAgICAgICAgICAgICAgICBsZXQgaW1nID0gbC5jb3Zlcl9wYXRoLnNwbGl0KCchJylbMF07ICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGwudGl0bGUsICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnLCAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9I0ZBNzI5OD4nICsgbC5pbnRybyArICc8L2ZvbnQ+JywgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiBpbWcsICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNmeXBhZ2UjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKGwsIGltZykgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKGwudGl0bGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmYygnaHR0cHM6Ly93d3cuaGhscWlsb25nemh1LmNuL2FwaS94aW1hbGF5YS94aW1hbGF5YS5waHA/YWxidW1JZD0nICsgbC5pZCw2KSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9mdWxsJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiBpbWcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5Li75pKtOiAnICsgbC5uaWNrbmFtZSArICdcXHRcXHToioLnm64oJyArIGpzb24udHJhY2tUb3RhbENvdW50ICsgJyknLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG4gPSBNWV9QQUdFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXRhID0ganNvbi5kYXRhLnNsaWNlKDAsIDIwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoTVlfUEFHRSA9PiAyKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBqc29uLmRhdGEuc2xpY2UobiAqIDIwIC0gMjAsIG4gKiAyMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmZvckVhY2goKGopID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gKCdodHRwczovL21vYmlsZS54aW1hbGF5YS5jb20vbW9iaWxlLXBsYXlwYWdlL3BsYXlwYWdlL3RhYnMvdjIvJyArIGoudHJhY2tJZCArICcvdHMnKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogai50aXRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHVybCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybHMgPSBKU09OLnBhcnNlKGZldGNoKHVybCkpLmRhdGEucGxheXBhZ2UudHJhY2tJbmZvLnBsYXlVcmw2NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxzICsgJyNpc011c2ljPXRydWUjJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB1cmwpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdFRpdGxlOiBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbCwgaW1nKSwgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+a3u+WKoOWIsOmmlumhtScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGwsIGltZykgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGluayA9IChsLnRpdGxlICsgJ0AnICsgbC5pZCArICdAJyArIGltZyArICdAJyArIGwubmlja25hbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWx5ID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL0ptL3htbHkuanNvbicpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1seSA9IHhtbHkuY29uY2F0KGxpbmspOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9KbS94bWx5Lmpzb24nLCBKU09OLnN0cmluZ2lmeSh4bWx5KSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2sodHJ1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mt7vliqDmiJDlip8nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbCwgaW1nKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpOyAgICAgICAgICAgICB9LCB0eHQpICAgICAgICAgfSksICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRJdGVtKCfopb/pqawnLCAnJyksICAgICAgICAgfSAgICAgfSk7ICAgICBpZiAoZmlsZUV4aXN0KCdoaWtlcjovL2ZpbGVzL0ptL3htbHkuanNvbicpID09IGZhbHNlKSB7ICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvSm0veG1seS5qc29uJywgJ1tcIjEw5YiG6ZKf5paw6Ze75pep6aSQQDY4NTg5MzU3QGh0dHBzOi8vaW1hZ2V2Mi54bWNkbi5jb20vc3RvcmFnZXMvMGYzNC1hdWRpb2ZyZWVoaWdocXBzLzlELzY3L0dLd1JJUndHZUhTYkFBRjVsQUZvVENYaS5qcGVnQOWWnOmprOWktOadoVwiLCBcIue7meS9oOatjOS4gOabskAzNjQxNzhAaHR0cHM6Ly9pbWFnZXYyLnhtY2RuLmNvbS9zdG9yYWdlcy81OTJjLWF1ZGlvZnJlZWhpZ2hxcHMvM0YvMzkvR0t3UklEb0k0eGNwQUE3V19BSmUzM1VTLmpwZWdA5byg576KXCIsIFwi6Z+z5LmQ5LyY5ZOBQDI2NTAwMDlAaHR0cHM6Ly9pbWFnZXYyLnhtY2RuLmNvbS9ncm91cDQwL00wQi80Mi85QS93S2dKVkZxanVmRHdKLTI3QUFFdFl6eTJTd3MwMTcuanBnQOS4u+aSreWPtuWtkFwiLCBcIueUn+a0u+adguW/l0AzNjYzMDYwNkBodHRwczovL2ltYWdldjIueG1jZG4uY29tL2dyb3VwNzUvTTA2LzgzLzBFL3dLZ08wMTZSUTRld2l4LU1BQ2FwMV9iX0pLYzIwNy5qcGdATWFrZVZvaWNlXCIsIFwi6Z2e5bi45rqc5L2z5pyffOeIhueskeWQkOanveasouS5kOino+WOi0AyNDkwMjBAaHR0cHM6Ly9pbWFnZXYyLnhtY2RuLmNvbS9ncm91cDMwL00wQi9CRS8xMS93S2dKWGxuU1psemhvdjZyQUFHeVJ0SFBKQmcyNTQuanBnQOS9s+acn1wiLCBcIuauteWtkOadpeS6hkAyMDMzNTVAaHR0cHM6Ly9pbWFnZXYyLnhtY2RuLmNvbS9ncm91cDUvTTAzL0E2L0Q4L3dLZ0R0bFIxTURfVDFEUUhBQU5xWkR5azQ4czcyMC5qcGdA6YeH6YeHXCIsIFwi5LiA5Y2D6Zu25LiA56yR772c552h552A6YO96IO956yR6YaS55qE5q615a2QQDIzNzQyMjY5QGh0dHBzOi8vaW1hZ2V2Mi54bWNkbi5jb20vZ3JvdXA2MC9NMDYvNDAvODMvd0tnTGIxemtISWVnbHI2VkFCLXgwNktoV0pNOTE3LmpwZ0DppbzlubJHQU5cIiwgXCLkuJzljJforrLnrJHor51AMzU1NTg3MEBodHRwczovL2ltYWdldjIueG1jZG4uY29tL2dyb3VwNDQvTTAwL0FGL0JDL3dLZ0tqRnN3THJ2QmlUQ0NBQWhQRUQwemkzUTc4Ni5qcGdA6Zi/5ZOI5Lic5YyXXCIsIFwi5aaZ5a6H6L+e5pyx4pSC6Laj6Ze75ZCQ5qe9IOeIhueskeacieaWme+8gUAyNzA1MzVAaHR0cHM6Ly9pbWFnZXYyLnhtY2RuLmNvbS9ncm91cDc2L00wOS8wNi9CNC93S2dPM2w1R1J2ZUJ5OVBmQUFSRU8tanRXRjAwNDcuanBnQOacseWuh1wiLCBcIuS7iuaZmuiEseWPo+engEA0NzM1NDIyQGh0dHBzOi8vaW1hZ2V2Mi54bWNkbi5jb20vc3RvcmFnZXMvYWE2My1hdWRpb2ZyZWVoaWdocXBzLzlBLzk0L0NNQ29PU1FEeTRfWEFBQ1BoZ0I0X0JpTi5qcGdA5LuK5pma6ISx5Y+j56eAXCIsIFwi5oC75pyJ6L+Z5qC355qE5q2M5Y+q5oOz5LiA5Liq5Lq65ZCsQDM1OTU4NDFAaHR0cHM6Ly9pbWFnZXYyLnhtY2RuLmNvbS9ncm91cDU0L00wMy9CRS84OS93S2dMY2x3MXkyUGpFTkQ4QUFHTjJTS1BQTk0zOTEuanBnQOeBsOWnkeWomOmfs+S5kFwiLCBcIuaAu+acieS4gOmmluatjOS4qOS8muiuqeS9oOWNleabsuW+queOr+WIsOaDs+WTrUA0NTUyNTE5MkBodHRwczovL2ltYWdldjIueG1jZG4uY29tL3N0b3JhZ2VzLzE3M2QtYXVkaW9mcmVlaGlnaHFwcy8xRC9BQy9HS3dSSUpFR0RnX0lBQU9QWVFFdFA3dmkuanBlZ0Dng5/oirHov7fkurrnnLxcIiwgXCLpn7PkuZDorrDkuovmnKx85LiA6aaW5q2M5LiA5Liq5pWF5LqLQDQ3MjEwMDMwQGh0dHBzOi8vaW1hZ2V2Mi54bWNkbi5jb20vc3RvcmFnZXMvOTIzYS1hdWRpb2ZyZWVoaWdocXBzLzlFLzhGL0dLd1JJVUVIakR6R0FBR0dEQUhvMDlNTS5qcGdA5p+g5qqs6aaZ6aaZRk1cIiwgXCLpgqPkupvlpb3lkKznmoTlpbPnlJ/nv7vllLFAMzE3NTE1MjJAaHR0cHM6Ly9pbWFnZXYyLnhtY2RuLmNvbS9ncm91cDY5L00wNS9DRi9EOS93S2dNYjEzM0tNQ0NRbWlTQUFEcUpVS0dmTkUzNzUuanBnQOiKseWwj+Wwj+iMtVwiLCBcIua9rua1gemfs+S5kEAxOTUyMTM2NUBodHRwczovL2ltYWdldjIueG1jZG4uY29tL2dyb3VwNDkvTTA3LzA3L0FEL3dLZ0tsMXYzOWthUVJpT0hBQUZwWE9HazdKazUwMS5wbmdA5bCP5p2+5o6o6I2QXCIsIFwi6YKj5Lqb5LiA5ZCs5bCx5oSf5Yqo55qE57uP5YW455S15b2x5ZCN5puyQDM5MTYzNzI1QGh0dHBzOi8vaW1hZ2V2Mi54bWNkbi5jb20vZ3JvdXA4My9NMDIvRUYvOEQvd0tnNUhWOE5VZjdBOHl6M0FBVGh3OExodVpZNjIxLmpwZ0Dlj7bkupHlt53nmoTnkZ7puKPpn7PkuZDlj7BcIiwgXCLmmZrlronlpojlpojnnaHliY3mlYXkuotAMjYwNzQ0QGh0dHBzOi8vaW1hZ2V2Mi54bWNkbi5jb20vZ3JvdXA1OC9NMDYvMDgvOUIvd0tnTGdselR5VGppT3kwb0FBY09UdjE2b2hnODE1LmpwZ0DmmZrlronlpojlpohcIiwgXCLmsJHpl7Tor6HmlYXkuotAMjk1MzU3NTBAaHR0cHM6Ly9pbWFnZXYyLnhtY2RuLmNvbS9ncm91cDY5L00wOC9CMi9FNS93S2dNZVYzZ2xTVFFQTk1kQUN5dDFfa19sREk4MTMuanBnQOmYv+a1qeivtOS6i+WEv1wiLCBcIuWPpOetneWQjeabsuaso+i1j+WPpOetnee7j+WFuOWQjeabskAxNjc5Mjg1NEBodHRwczovL2ltYWdldjIueG1jZG4uY29tL2dyb3VwNDYvTTA0L0FBL0I4L3dLZ0tsbHRxaWlMQXpqeUpBQURMWk15NnZaSTEzNi5qcGdA5Zac6ams5p2l5ZWmXCIsIFwi57uP5YW45Y+k5LmQLeWPpOeQtOWNgeWkp+WQjeabskA2MzE3MjY1QGh0dHBzOi8vaW1nMi5iYWlkdS5jb20vaXQvdT0xMzMzODA3OTAwLDI5NDg2MzAzMzEmZm09MjUzJmZtdD1hdXRvJmFwcD0xMzgmZj1KUEVHQHhpZXhpZXhpZXhpZVwiLCBcIuOAkOS4lueVjOS4iuacgOe+jueahOmSoueQtOabsuOAkeWCrOecoOmfs+S5kEA0MDUwNjM5QGh0dHBzOi8vaW1hZ2V2Mi54bWNkbi5jb20vZ3JvdXAxMy9NMDAvNDAvRjYvd0tnRFhWY0tDZ19DNm1JbEFBVURydjFmT05rMTQ1LnBuZ0Doi6XkvLzmmbTlpKnnu43pkqdcIiwgXCLjgIrlpJzoibLpkqLnkLTmm7LjgItAMjkxNzE4QGh0dHBzOi8vaW1hZ2V2Mi54bWNkbi5jb20vc3RvcmFnZXMvYjNkMi1hdWRpb2ZyZWVoaWdocXBzLzkxLzhFL0dNQ29PU0FGcXVHMkFBVTR6d0VLTm9oWi5wbmdA5aSc6Imy6ZKi55C05puy6LW15rW35rSLXCIsIFwiOOWIhumSn++8jDNE546v5aKD5YeP5Y6L5Yal5oOzfOmfs+S5kOeWl+aEiEAyODI0NjU3MkBodHRwczovL2ltYWdldjIueG1jZG4uY29tL2dyb3VwNjUvTTAyLzZELzNFL3dLZ01hbDFsX0NyRGQ2MmpBQUlWc2p5bEpUczUwNi5qcGdA6ICz55WMX0Vhcm1lcnNpb25cIiwgXCLov7fkurrnkb4t6L2m6L295Yqy54iGRErnlLXpn7PoiJ7mm7JANTg5OTUwN0BodHRwczovL2ltYWdldjIueG1jZG4uY29tL2dyb3VwODYvTTA1L0MzLzE2L3dLZzVKbDhJWmh1el9hOWtBQUdmc294UzdCODg3Ni5qcGdARErov7fkurrnkb5cIiwgXCLmsJHosKPnsr7pgIkgfCDllLHlsL3kurrpl7Tnmb7mgIFAMzEzODA5NjJAaHR0cHM6Ly9pbWFnZXYyLnhtY2RuLmNvbS9ncm91cDY4L00wMi9CMy9BOS93S2dNYmwzZ3J0U3pNRUdXQUFBNGJILVpuU285MTMuanBnQOiKseWwj+Wwj+iMtVwiLCBcIue7j+WFuOeVmeWjsOacukAyOTA5OTZAaHR0cHM6Ly9pbWFnZXYyLnhtY2RuLmNvbS9ncm91cDUwL00wOC9GQS9EMi93S2dLblZ2cjl2SHptYzJYQUFVdS1XbV9SU2czNTkuanBnQOS4u+aSreWwj0RcIiwgXCLorqnkvaDlvqrnjq/nmb7pgY3ku6XkuIrnmoTnu4/lhbjoi7HmlofmrYxANDg2NjM2MUBodHRwczovL2ltYWdldjIueG1jZG4uY29tL2dyb3VwNzcvTTA3LzU1LzZDL3dLZ08xVjZOeEVTaGx4VkhBQUFKVzJaaHNNODUxNi5qcGdA5LiA54K55oqS5oOF6Z+z5LmQ6aKR6YGTXCIsIFwiMTAwMOmmluWQrOS4jeiFu+eahOWlveatjOS4qOS8mOi0qOatjOWNlUAzMjUxOTgyNEBodHRwczovL2ltYWdldjIueG1jZG4uY29tL3N0b3JhZ2VzLzc4MjQtYXVkaW9mcmVlaGlnaHFwcy84RS8xMC9HS3dSSU1BRmx5RDhBQUhOSmdFRkJvWmEuanBlZ0DpmYjoh7voh7tcIiwgXCLlsI/kuIPnmoTnp4HmiL/mrYxAMjM3NzcxQGh0dHBzOi8vaW1hZ2V2Mi54bWNkbi5jb20vc3RvcmFnZXMvYTc0MC1hdWRpb2ZyZWVoaWdocXBzLzU4LzIwL0dNQ29PUjhIZ3JsekFBTzl0UUhsN2JWcy5qcGVnQOWwj+S4g1wiLCBcIuS4lueVjOS4iuacgOWlveWQrOeahOe6r+mfs+S5kEAxMTY1OTg3M0BodHRwczovL2ltYWdldjIueG1jZG4uY29tL2dyb3VwMzUvTTAzLzhCLzVDL3dLZ0puRm9UNEFxRFp6X0VBQUNfQWFScGp2QTQ5Ny5qcGdA5a2kX+mbtlwiLCBcIue7j+WFuOixq+WJp+WQjeWutuWQjeautTEwMDDpppZANTM0MDM4NzZAaHR0cHM6Ly9pbWFnZXYyLnhtY2RuLmNvbS9zdG9yYWdlcy84M2M3LWF1ZGlvZnJlZWhpZ2hxcHMvNjgvRjUvQ0t3UklXNEZKd2c2QUFFdEVRRG5Fd2hhLmpwZ0DmiI/mm7LkvKDmib/kurpcIiwgXCLpu4TmooXmiI/nu4/lhbjlkI3lrrblkI3mrrUxMDAw6aaWQDUzODMxNjQ0QGh0dHBzOi8vaW1hZ2V2Mi54bWNkbi5jb20vc3RvcmFnZXMvZmU0Ni1hdWRpb2ZyZWVoaWdocXBzL0JGLzdFL0dLd1JJRG9GdS1WV0FBSUdOQUVPUVVhZC5qcGVnQOaIj+absuS8oOaJv+S6ulwiLCBcIuWbveeyueS6rOWJp0AyODIyNDc5QGh0dHBzOi8vaW1hZ2V2Mi54bWNkbi5jb20vZ3JvdXA1Ni9NMDcvMDIvREMvd0tnTGdGeU9DU09CZ0thcUFBS1ZHQkwwU3FrODk0LmpwZ0DlvJjnhLZcIl0nKTsgICAgIH0gICAgIHZhciB4bWx5ID0gZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvSm0veG1seS5qc29uJykpKTsgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeG1seS5sZW5ndGg7IGkrKykgeyAgICAgICAgIHZhciBrID0geG1seVtpXS5zcGxpdCgnQCcpOyAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIHRpdGxlOiBrWzBdLCAgICAgICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzMnLCAgICAgICAgICAgICBwaWM6IGtbMl0sICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNmeXBhZ2Ujbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjI2ltbWVyc2l2ZVRoZW1lIycpLnJ1bGUoKGspID0+IHsgICAgICAgICAgICAgICAgIGxldCBkID0gW107ICAgICAgICAgICAgICAgICBsZXQganNvbiA9IEpTT04ucGFyc2UoZmMoJ2h0dHBzOi8vd3d3LmhobHFpbG9uZ3podS5jbi9hcGkveGltYWxheWEveGltYWxheWEucGhwP2FsYnVtSWQ9JyArIGtbMV0sNikpOyAgICAgICAgICAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkgeyAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfZnVsbCcsICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzoga1syXSwgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkuLvmkq06ICcgKyBrWzNdICsgJ1xcdFxcdOiKguebrignICsganNvbi50cmFja1RvdGFsQ291bnQgKyAnKScsICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJywgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICBsZXQgbiA9IE1ZX1BBR0U7ICAgICAgICAgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7ICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBqc29uLmRhdGEuc2xpY2UoMCwgMjApOyAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChNWV9QQUdFID0+IDIpIHsgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IGpzb24uZGF0YS5zbGljZShuICogMjAgLSAyMCwgbiAqIDIwKTsgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgIGRhdGEuZm9yRWFjaCgoaikgPT4geyAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSAoJ2h0dHBzOi8vbW9iaWxlLnhpbWFsYXlhLmNvbS9tb2JpbGUtcGxheXBhZ2UvcGxheXBhZ2UvdGFicy92Mi8nICsgai50cmFja0lkICsgJy90cycpOyAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqLnRpdGxlLCAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6IGtbMl0sICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJywgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5sYXp5UnVsZSgodXJsKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXJscyA9IEpTT04ucGFyc2UoZmV0Y2godXJsKSkuZGF0YS5wbGF5cGFnZS50cmFja0luZm8ucGxheVVybDY0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybHMgKyAnI2lzTXVzaWM9dHJ1ZSMnICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHVybCksICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0VGl0bGU6IGZhbHNlICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpOyAgICAgICAgICAgICB9LCBrKSAgICAgICAgIH0pOyAgICAgfSAgICAgc2V0UmVzdWx0KGQpOyB9KSIsImljb24iOiJoaWtlcjovL2ZpbGVzL3pmL3BuZy/lkKwucG5nIiwiZGVzYyI6IiIsInR5cGUiOiJpY29uXzQifSx7InN0YXR1cyI6ZmFsc2UsInBhdHRlcm4iOjAsIm5hbWUiOiLnlLXlj7Dlub/mkq0iLCJ0aXRsZSI6IkBqczon4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9IzU3ZjQ1ZD7nlLXlj7A8L2ZvbnQ+JzsiLCJ1cmwiOiJAanM6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgICAgIHNldFBhZ2VUaXRsZSgn55S15Y+w5bm/5pKtJyk7ICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vbS54aW1hbGF5YS5jb20vbS1yZXZpc2lvbi9jb21tb24vYWxidW0vcXVlcnlBbGJ1bVRyYWNrUmVjb3Jkc0J5UGFnZT9hbGJ1bUlkPTY4NTg5MzU3JnBhZ2U9MSZwYWdlU2l6ZT0xJmFzYz10cnVlJykpLmRhdGEudHJhY2tEZXRhaWxJbmZvcy5tYXAoZGF0YSA9PiBkYXRhLnRyYWNrSW5mby5wbGF5UGF0aCk7ICAgICAgICB0aXRsZXMgPSBbJ+aWsOmXu+aXqemkkEBAJyArIGpzb24sICfmuIXmmajpn7PkuZBAQGh0dHBzOi8vbGl2ZS54aW1hbGF5YS5jb20vcmFkaW8tZmlyc3QtcGFnZS1hcHAvbGl2ZS8xMDExLzI0Lm0zdTg/dHJhbnNjb2RlPXRzJywgJ+aWsOmXu+WQrOWkqeS4i0BAaHR0cHM6Ly9saHR0cC5xdGZtLmNuL2xpdmUvMjA1MDAxNjkvNjRrLm1wMycsICfnjq/nkIPotYTorq9AQGh0dHA6Ly9zay5jcmkuY24vOTA1Lm0zdTgnLCAn5YyX5Lqs5paw6Ze75bm/5pKtQEBodHRwczovL2xpdmUueGltYWxheWEuY29tL3JhZGlvLWZpcnN0LXBhZ2UtYXBwL2xpdmUvMTc4OS8yNC5tM3U4P3RyYW5zY29kZT10cycsICfnrKzkuIDotKLnu49AQGh0dHBzOi8vbGl2ZS54aW1hbGF5YS5jb20vcmFkaW8tZmlyc3QtcGFnZS1hcHAvbGl2ZS81Ni8yNC5tM3U4P3RyYW5zY29kZT10cycsICfnpo/lu7rkuqTpgJrlub/mkq1AQGh0dHBzOi8vbGl2ZS54aW1hbGF5YS5jb20vcmFkaW8tZmlyc3QtcGFnZS1hcHAvbGl2ZS83OTAvMjQubTN1OD90cmFuc2NvZGU9dHMnLCAn5Y6m6Zeo6Z+z5LmQ5bm/5pKtQEBodHRwczovL2xpdmUxYi5reG0ueG10di5jbi9hYWNfeG15eWJmXzFiL3BsYXlsaXN0Lm0zdTgnLCAn5LiK5rW35Yqo5oSfMTAxQEBodHRwczovL2xpdmUueGltYWxheWEuY29tL3JhZGlvLWZpcnN0LXBhZ2UtYXBwL2xpdmUvNTMvMjQubTN1OD90cmFuc2NvZGU9dHMnLCAn5LiK5rW3TG92ZSBSYWRpb0BAaHR0cHM6Ly9saXZlLnhpbWFsYXlhLmNvbS9yYWRpby1maXJzdC1wYWdlLWFwcC9saXZlLzU1LzI0Lm0zdTg/dHJhbnNjb2RlPXRzJywgJ+WFqOaXtue6v+S4iumfs+S5kEBAaHR0cDovL2xodHRwLnFpbmd0aW5nLmZtL2xpdmUvNDkxMy82NGsubXAzJywgJ+WkqeexgeWPpOWFuEBAaHR0cDovL2xodHRwLnFpbmd0aW5nLmZtL2xpdmUvMjAyMTA3NTYvNjRrLm1wMycsICfmmJ/msrPpn7PkuZBAQGh0dHBzOi8vbGh0dHAucXRmbS5jbi9saXZlLzIwMjEwNzU1LzY0ay5tcDMnLCAn57Kk6K+t55S15Y+wQEBodHRwOi8vbGh0dHAucWluZ3RpbmcuZm0vbGl2ZS8xNTMxODU2OS82NGsubXAzJywgJ+aAgOmbhumfs+S5kEBAaHR0cHM6Ly9saXZlLnhpbWFsYXlhLmNvbS9yYWRpby1maXJzdC1wYWdlLWFwcC9saXZlLzk2Ni8yNC5tM3U4P3RyYW5zY29kZT10cycsICfkvZvlsbHnlLXlj7AgRk05MDZAQGh0dHBzOi8vbGh0dHAucXRmbS5jbi9saXZlLzEyNjQvNjRrLm1wMycsICdBc2lhRk0g5Lqa5rSy57Kk6K+t5Y+wQEBodHRwczovL2xpdmUueGltYWxheWEuY29tL3JhZGlvLWZpcnN0LXBhZ2UtYXBwL2xpdmUvOTk5LzI0Lm0zdTg/dHJhbnNjb2RlPXRzJywgJ0FzaWFGTSDlpb3lkKzpn7PkuZDlj7BAQGh0dHBzOi8vbGl2ZS54aW1hbGF5YS5jb20vcmFkaW8tZmlyc3QtcGFnZS1hcHAvbGl2ZS8xNDI3LzI0Lm0zdTg/dHJhbnNjb2RlPXRzJywgJ0FzaWFGTSDmtYHooYzpn7PkuZDlj7BAQGh0dHBzOi8vbGl2ZS54aW1hbGF5YS5jb20vcmFkaW8tZmlyc3QtcGFnZS1hcHAvbGl2ZS83NjQvMjQubTN1OD90cmFuc2NvZGU9dHMnLCAnQXNpYUZNIOasp+e+jumfs+S5kOWPsEBAaHR0cHM6Ly9saHR0cC5xdGZtLmNuL2xpdmUvMjAwNzEvNjRrLm1wMycsICflkKzmoqbmg7NGTUBAaHR0cHM6Ly9saXZlLnhpbWFsYXlhLmNvbS9yYWRpby1maXJzdC1wYWdlLWFwcC9saXZlLzEwMTUvMjQubTN1OD90cmFuc2NvZGU9dHMnLCAn6L275p2+6LCD6aKRQEBodHRwOi8vc2suY3JpLmNuLzkxNS5tM3U4JywgJ+mxvOS9rOmfs+S5kOWdikBAaHR0cDovL2xodHRwLnFpbmd0aW5nLmZtL2xpdmUvMjA1MDAxNTgvNjRrLm1wMycsICflv4PliqjnlLXlj7BAQGh0dHA6Ly9saHR0cC5xaW5ndGluZy5mbS9saXZlLzIwNTAwMTYxLzY0ay5tcDMnLCAnOTDlkI7mva7mtYHpn7Pmgqblj7BAQGh0dHA6Ly9saHR0cC5xaW5ndGluZy5mbS9saXZlLzIwMjA3NzYwLzY0ay5tcDMnLCAn5Y235Y2354yr5pWF5LqL55S15Y+wQEBodHRwOi8vbGh0dHAucWluZ3RpbmcuZm0vbGl2ZS8yMDUwMDAzOC82NGsubXAzJywgJ+S4reWbveatjOabsuaOkuihjOamnEBAaHR0cHM6Ly9saXZlMi5reG0ueG10di5jbi9hYWNfeG15eS9wbGF5bGlzdC5tM3U4P191cHQ9MTRiYWZlYTQxNjY2MTAzNjg5JywgJ+WoseS5kOW5v+aSrUBAaHR0cDovL25nY2RuMDE0LmNuci5jbi9saXZlL3lsZ2IvaW5kZXgubTN1OCcsICfkuqTpgJrlub/mkq1AQGh0dHA6Ly9uZ2NkbjAxNi5jbnIuY24vbGl2ZS9nc2dsanRnYi9pbmRleC5tM3U4JywgJ+aWh+iJuuS5i+WjsEBAaHR0cDovL25nY2RuMDEwLmNuci5jbi9saXZlL3d5enMvaW5kZXgubTN1OCcsICfnu4/mtY7kuYvlo7BAQGh0dHA6Ly9zay5jcmkuY24vYW0xMDA4Lm0zdTgnLCAn5Lit5Zu95LmL5aOwQEBodHRwOi8vbmdjZG4wMDEuY25yLmNuL2xpdmUvemd6cy9pbmRleC5tM3U4JywgJ+S4reWNjuS5i+WjsEBAaHR0cDovL25nY2RuMDA1LmNuci5jbi9saXZlL3poenMvaW5kZXgubTN1OCcsICfljY7lpI/kuYvlo7BAQGh0dHA6Ly9uZ2NkbjAwNy5jbnIuY24vbGl2ZS9oeHpzL2luZGV4Lm0zdTgnLCAn5Y2X5rW35LmL5aOwQEBodHRwOi8vc2suY3JpLmNuL25oenMubTN1OCcsICfkuaHmnZHkuYvlo7BAQGh0dHA6Ly9uZ2NkbjAxNy5jbnIuY24vbGl2ZS94Y3pzL2luZGV4Lm0zdTgnLCAn5Lit5bm/5paw6Ze7572RQEBodHRwOi8vc3RyZWFtLnJjcy5yZXZtYS5jb20vNzhmbTl3eXkydHp1dicsICfkuK3lub/mtYHooYznvZFAQGh0dHA6Ly9zdHJlYW0ucmNzLnJldm1hLmNvbS9hdzl1cXl4eTJ0enV2JywgJ+S4reW5v+mfs+S5kOe9kUBAaHR0cDovL3N0cmVhbS5yY3MucmV2bWEuY29tL2tzNHZzbWczcXR6dXYnLCAn5Y+w5rm+5rW35bOhQEBodHRwOi8vc2suY3JpLmNuL2h4ZmgubTN1OCcsICfmtY7ljZfmlYXkuovlub/mkq1AQGh0dHA6Ly9scy5xaW5ndGluZy5mbS9saXZlLzE2NzIubTN1OCcsICfpmZXopb/mlYXkuovlub/mkq1AQGh0dHA6Ly9scy5xaW5ndGluZy5mbS9saXZlLzE2MDgubTN1OCcsICfmsZ/oi4/mlYXkuovlub/mkq1AQGh0dHA6Ly9semxpdmUudm9qcy5jbi9yV2p5dXM5LzkyL2xpdmUubTN1OCcsICfplb/mmKXmlYXkuovlub/mkq1AQGh0dHA6Ly9scy5xaW5ndGluZy5mbS9saXZlLzUwMTQubTN1OCcsICflronlvr3miI/mm7Llub/mkq1AQGh0dHA6Ly9zYXRlbGxpdGVwdWxsLkNOUi5jbi9saXZlL3d4YWh4cWdiL3BsYXlsaXN0Lm0zdTgnLCAn5rKz5Y2X5oiP5puyQEBodHRwOi8vbGh0dHAucWluZ3RpbmcuZm0vbGl2ZS8xNTMxODM5My82NGsubXAzJ107ICAgICAgICB2YXIgdCA9IHRpdGxlczsgICAgICAgIHZhciBkID0gW107ICAgICAgICB2YXIgaW1nID0gJ2hpa2VyOi8vZmlsZXMvMDF6Zi9wbmcvMC/lkKwucG5nJzsgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdC5sZW5ndGg7IGkrKykgeyAgICAgICAgICAgIHZhciBrID0gdFtpXS5zcGxpdCgvXFxzKkBAXFxzKi8pOyAgICAgICAgICAgIGlmIChrLmxlbmd0aCA8IDIpIGNvbnRpbnVlOyAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgIHRpdGxlOiBrWzBdLCAgICAgICAgICAgICAgICB1cmw6IGtbMV0gKyAnI2lzTXVzaWM9dHJ1ZSMnLCAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fMl9yb3VuZCcsICAgICAgICAgICAgICAgIHBpY191cmw6IGltZywgICAgICAgICAgICB9KTsgICAgICAgIH0gICAgICAgIHNldEhvbWVSZXN1bHQoZCk7ICAgIH0pfSkiLCJpY29uIjoiIiwiZGVzYyI6IiIsInR5cGUiOiJ0ZXh0XzQifSx7InN0YXR1cyI6ZmFsc2UsInBhdHRlcm4iOjAsIm5hbWUiOiLnmb7luqbng63mkJzmppwiLCJ0aXRsZSI6IkBqczon4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9I2ZiNmEwOT7ng63mkJw8L2ZvbnQ+JzsiLCJ1cmwiOiJAanM6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNmeXBhZ2UjI25vSGlzdG9yeSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICAgICBzZXRQYWdlVGl0bGUoJ+eZvuW6pueDreaQnOamnCcpOyAgICAgICAgdmFyIGQgPSBbXTsgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudGppdC5uZXQvYXBpL3RvcC8/a2V5PXVGZW9sSUgxTE9VcjhNcldGNGFRUnRkVXZYJykpOyAgICAgICAganNvbi5kYXRhLmNvbnRlbnQubWFwKGRhdGEgPT4geyAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgIHRpdGxlOiBkYXRhLndvcmQsICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfY2FyZCcsICAgICAgICAgICAgICAgIHBpY191cmw6IGRhdGEuaW1nLCAgICAgICAgICAgICAgICBkZXNjOiBkYXRhLmRlc2MsICAgICAgICAgICAgICAgIHVybDogJ3g1Oi8vJyArIGRhdGEudXJsLCAgICAgICAgICAgICAgICBleHRyYTogeyAgICAgICAgICAgICAgICAgICAgZmxvYXRWaWRlbzogdHJ1ZSwgICAgICAgICAgICAgICAgICAgIGNhbkJhY2s6IHRydWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgfSk7ICAgICAgICB9KTsgICAgICAgIHNldFJlc3VsdChkKTsgICAgfSl9KTsiLCJpY29uIjoiIiwiZGVzYyI6IiIsInR5cGUiOiJ0ZXh0XzQifSx7InN0YXR1cyI6ZmFsc2UsInBhdHRlcm4iOjAsIm5hbWUiOiLmlrDpl7vml6nppJAiLCJ0aXRsZSI6IkBqczon4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9I2ZkMjY4YT48Qj7mlrDpl7s8L0I+PC9mb250Pic7IiwidXJsIjoiQGpzOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5IyNnYW1lVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgICAgIHNldFBhZ2VUaXRsZSgnJyk7ICAgICAgICAgdmFyIGQgPSBbXTsgICAgICAgICB2YXIgaW1nID0gJ2hpa2VyOi8vZmlsZXMvMDF6Zi9wbmcv5ZCsLnBuZyc7ICAgICAgICAgdmFyIHBpYyA9ICdoaWtlcjovL2ZpbGVzLzAxemYvcG5nL2xvZ28vMDEuanBnJzsgICAgICAgICB2YXIgaWQgPSBnZXRJdGVtKCfliJfooagnLCAnNjg1ODkzNTcnKTsgICAgICAgICB2YXIgcGFnZSA9IGdldEl0ZW0oJ+e/u+mhtScsICcxJyk7ICAgICAgICAgdmFyIGFzYyA9IGdldEl0ZW0oJ+mhuuW6jycsICd0cnVlJyk7ICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9mdWxsJywgICAgICAgICAgICAgcGljX3VybDogcGljLCAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICAgICAgICAgICAgICAgdmFyIGxpc3QgPSBbeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfmlrDpl7vml6nppJAnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc2ODU4OTM1NycgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn6Z2e5bi45rqc5L2z5pyfJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMjQ5MDIwJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfph4fph4fmrrXlrZAnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICcyMDMzNTUnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+WmmeWuh+i/nuacsScsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzI3MDUzNScgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5LuK5pma6ISx5Y+j56eAJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnNDczNTQyMicgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5LiA5Liq5Lq655qE5q2MJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMzU5NTg0MScgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5oOz5Y2V5puy5b6q546vJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnNDU1MjUxOTInICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+mfs+S5kOiusOS6i+acrCcsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzQ3MjEwMDMwJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICflpbPnlJ/nv7vllLEnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICczMTc1MTUyMicgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5r2u5rWB6Z+z5LmQJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMjI1NTY4JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfnlLXlvbHlkI3mm7InLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICczOTE2MzcyNScgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn552h5YmN5pWF5LqLJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMjYwNzQ0JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfmsJHpl7Tor6HmlYXkuosnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICcyOTUzNTc1MCcgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5Y+k562d57uP5YW4JywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMTY3OTI4NTQnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+mdmeW/g+WPpOeQtCcsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzQ2MzEwMzA0JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfmnIDnvo7pkqLnkLQnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc0MDUwNjM5JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfljp/lo7DpkqLnkLQnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICcxODg5MjA3NicgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5rK755aX6Z+z5LmQJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMjgyNDY1NzInICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+i9pui9vemfs+S5kCcsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzU4OTk1MDcnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+awkeiwo+eyvumAiScsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzMxMzgwOTYyJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfnu4/lhbjnlZnlo7DmnLonLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICcyOTA5OTYnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+e7j+WFuOiLseaWh+atjCcsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzQ4NjYzNjEnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+WQrOS4jeiFu+eahOatjCcsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzMyNTE5ODI0JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICflsI/kuIPnp4HmiL/mrYwnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICcyMzc3NzEnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+ixq+WJp+WQjeautScsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzUzNDAzODc2JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfpu4TmooXmiI/lkI3mrrUnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc1MzgzMTY0NCcgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5Zu957K55Lqs5YmnJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMjgyMjQ3OScgICAgICAgICAgICAgICAgIH1dOyAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBsaXN0Lm1hcChpID0+IGkudGl0bGUpOyAgICAgICAgICAgICAgICAgcmV0dXJuICQobmFtZSwgMywgJ+ivt+mAieaLqeS4gOS4quWIhuexuycpLnNlbGVjdCgobGlzdCkgPT4geyAgICAgICAgICAgICAgICAgICAgIHZhciBsID0gbGlzdC5maW5kSW5kZXgoaSA9PiBpLnRpdGxlID09IGlucHV0KTsgICAgICAgICAgICAgICAgICAgICB2YXIgdSA9IGxpc3RbbF0uaWQ7ICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgn5YiX6KGoJywgdSk7ICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5pu05o2iJyAgICAgICAgICAgICAgICAgfSwgbGlzdCkgICAgICAgICAgICAgfSksICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7ICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfwn5SE5YiH5o2i5o6S5bqPJywgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRJdGVtKFwi6aG65bqPXCIsIFwidHJ1ZVwiKSA9PSBcImZhbHNlXCIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbShcIumhuuW6j1wiKTsgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXCLpobrluo9cIiwgXCJmYWxzZVwiKTsgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpOyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2i5o6S5bqPJyAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICB9XSwgICAgICAgICAgICAgfSAgICAgICAgIH0pOyAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9tLnhpbWFsYXlhLmNvbS9tLXJldmlzaW9uL2NvbW1vbi9hbGJ1bS9xdWVyeUFsYnVtVHJhY2tSZWNvcmRzQnlQYWdlP2FsYnVtSWQ9JyArIGlkICsgJyZwYWdlU2l6ZT0xMDAmYXNjPScgKyBhc2MgKyAnJnBhZ2U9JyArIHBhZ2UpKTsgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICB0aXRsZTogJ+Wwj+aPkOekuu+8muS4u+aSreWFsScgKyBqc29uLmRhdGEudG90YWxDb3VudCArICfkuKrotYTmupAnLCAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsICAgICAgICAgICAgIHBpY191cmw6IGltZywgICAgICAgICAgICAgZGVzYzogJ+esrCcgKyBwYWdlICsgJ+mhtScsICAgICAgICAgICAgIHVybDogJCgnJywgJ+mcgOimgee/u+mhteeahOaVsOWtl++8jOavj+mhtTEwMOOAgicpLmlucHV0KCgpID0+IHsgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ+e/u+mhtScsIGlucHV0KTsgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7ICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey6Lez6L2s6Iez56ysJyArIGlucHV0ICsgJ+mhtScgICAgICAgICAgICAgfSksICAgICAgICAgfSwgeyAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnLCAgICAgICAgIH0pOyAgICAgICAgIGpzb24uZGF0YS50cmFja0RldGFpbEluZm9zLm1hcChkYXRhID0+IHsgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgIHRpdGxlOiBkYXRhLnRyYWNrSW5mby50aXRsZSwgICAgICAgICAgICAgICAgIHBpY191cmw6IGltZywgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJywgICAgICAgICAgICAgICAgIHVybDogZGF0YS50cmFja0luZm8ucGxheVBhdGgsICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZScsICAgICAgICAgICAgIH0pOyAgICAgICAgIH0pOyAgICAgICAgIHNldFJlc3VsdChkKTsgICAgIH0pIH0pOyIsImljb24iOiIiLCJkZXNjIjoiIiwidHlwZSI6InRleHRfNCJ9LHsic3RhdHVzIjpmYWxzZSwicGF0dGVybiI6MCwibmFtZSI6IlFR6Z+z5LmQ5q2M5Y2VIiwidGl0bGUiOiJAanM6J+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPSNiNjAwYTY+5q2M5Y2VPC9mb250Pic7IiwidXJsIjoiQGpzOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5IyNmdWxsVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgICAgIHNldFBhZ2VUaXRsZSgnJyk7ICAgICAgICAgdmFyIGQgPSBbXTsgICAgICAgICB2YXIgaWQgPSBzdG9yYWdlMC5nZXRJdGVtKCdR6Z+z5q2M5Y2VJywgJzc1MzI2NzA1MzgnKTsgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnRqaXQubmV0L2FwaS9xcW11c2ljLz9rZXk9MTE5Mzc1NWFlOTk3MDJiMCZ0eXBlPXNvbmdsaXN0JmNhY2hlPTEmbGlzdG1heD0xMDAwJmlkPScgKyBpZCkpOyAgICAgICAgIHZhciBpbWcgPSAoJ2h0dHBzOi8vd3d3LmhsYXBpLmNuL2FwaS9neGR0JyArICcjJyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpKTsgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICB0aXRsZToganNvbi5uaWNrbmFtZSArICcg4pmlJyArIGpzb24ubGlzdG5hbWUsICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJywgICAgICAgICAgICAgZGVzYzoganNvbi5zb25nbnVtICsgJ+mmlicsICAgICAgICAgICAgIHBpYzogaW1nLCAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICAgICAgICAgICAgICAgdmFyIGxpc3QgPSBbeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfkuqzmoqbmrYzljZUnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc3MjA4NDk4NzMxJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICflvIDlupflv4XlpIcnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc3OTc1MDQ4NDE3JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfng63mkJzmrYzmm7InLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc3NTMyNjcwNTM4JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfng63pl6hCR00nLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc3NTk1OTIzNjI5JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfliqjlkKznsqTor60nLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICcyNjcxNDU2NjA4JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfml7bkuIvmtYHooYwnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc3NTIwMzM0NzQzJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfmipbpn7PmlrDng60nLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc3NjMwMzAzNDc0JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfllK/nvo7lj6Tpo44nLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc3ODAxMDgxMzM1JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfov5HlubTngavniIYnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICcxNTUxMDcxNDA0JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfoioLlpY/mjqcnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICczMjcwOTk4MjY5JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICflhaXogLPmsonphoknLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc0MjQ2OTU4NTY5JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICflj6Plk6jliY3lpY8nLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICcxNzU1MTEyOTMwJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfnlLXpn7PmsqbpmbcnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICcxMTUyMTgyODUyJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfpo5novaZCR00nLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc3OTE3MDA3OTQ2JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfnvo7lppnpn7PkuZAnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc4ODQ2MjMzMDE4JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfnsr7pgInljZXmm7InLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc3MzgyNjI5NDc2ICcgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn6Z2S5pil6K6w5b+GJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMTc5MDUwNDE1OScgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn57uP5YW45Zu96K+tJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMzU2NjgzMDQyNycgICAgICAgICAgICAgICAgIH1dOyAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBsaXN0Lm1hcChsaXN0ID0+IGxpc3QudGl0bGUpOyAgICAgICAgICAgICAgICAgcmV0dXJuICQobmFtZSwgMywgJ+ivt+mAieaLqeS4gOS4quatjOWNlScpLnNlbGVjdCgobGlzdCkgPT4geyAgICAgICAgICAgICAgICAgICAgIHZhciBpID0gbGlzdC5maW5kSW5kZXgobGlzdCA9PiBsaXN0LnRpdGxlID09IGlucHV0KTsgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gbGlzdFtpXS5pZDsgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKCdR6Z+z5q2M5Y2VJywgdXJsKTsgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpOyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LliIfmjaLmrYzljZUnICAgICAgICAgICAgICAgICB9LCBsaXN0KSAgICAgICAgICAgICB9KSwgICAgICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3sgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ/CflI1cXHRcXHR8XFx0XFx06K+36L6T5YWlUemfs+atjOWNlUlEJywgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCcnLCAn6ZyA6KaB5pu05o2i55qEUVHpn7PkuZDmrYzljZVJRFxcbuS+i+Wmgu+8mjc1MjAzMzQ3NDMnKS5pbnB1dCgoKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKCdR6Z+z5q2M5Y2VJywgaW5wdXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+atjOWNleWIh+aNouaIkOWKnyc7ICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgICAgIH1dLCAgICAgICAgICAgICB9ICAgICAgICAgfSk7ICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJywgICAgICAgICB9KTsgICAgICAgICBqc29uLkJvZHkubWFwKGh0bWwgPT4geyAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgdGl0bGU6IGh0bWwudGl0bGUgKyAn4oCiJyArIGh0bWwuYXV0aG9yLCAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zX21hcnF1ZWUnLCAgICAgICAgICAgICAgICAgcGljX3VybDogaHRtbC5waWMgKyAnQFJlZmVyZXI9JywgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaHRtbCkgPT4geyAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly94aWFvYXBpLmNuL0FQSS95eV9zcS5waHA/dHlwZT1qc29uJm49MSZtc2c9JyArIGh0bWwudGl0bGUgKyBodG1sLmF1dGhvcikpLnVybDsgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuc2hzZXJ2ZS5jbi9hcGkvbXVzaWM/bj0xJm1zZz0nICsgaHRtbC50aXRsZSArIGh0bWwuYXV0aG9yKSkudXJsOyAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0ganNvbiArICcjaXNNdXNpYz10cnVlIyc7ICAgICAgICAgICAgICAgICAgICAgIHZhciBscmMgPSBmZXRjaChodG1sLmxyYyk7ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHsgICAgICAgICAgICAgICAgICAgICAgICAgdXJsczogW3VybF0sICAgICAgICAgICAgICAgICAgICAgICAgIGx5cmljOiBscmMgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICAgfSwgaHRtbCksICAgICAgICAgICAgIH0pOyAgICAgICAgIH0pOyAgICAgICAgIHNldFJlc3VsdChkKTsgICAgIH0pIH0pOyIsImljb24iOiJoaWtlcjovL2ZpbGVzL0ptL2xtLzQxLnBuZyIsImRlc2MiOiIiLCJ0eXBlIjoidGV4dF80In0seyJzdGF0dXMiOmZhbHNlLCJwYXR0ZXJuIjowLCJuYW1lIjoi5byA55y86KeG6aKRIiwidGl0bGUiOiJAanM6J+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPSM1OTRiZmQ+5byA55y8PC9mb250Pic7IiwidXJsIjoiQGpzOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5IyNmeXBhZ2UjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgICAgIHNldFBhZ2VUaXRsZSgn5byA55y86KeG6aKRJyk7ICAgICAgICAgdmFyIGQgPSBbXTsgICAgICAgICB2YXIgbmV4dHAgPSBcIlwiOyAgICAgICAgICBmdW5jdGlvbiBqaWEodXJsKSB7ICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCh1cmwpKTsgICAgICAgICAgICAgdmFyIGl0ZW1zID0ganNvbi5pdGVtTGlzdDsgICAgICAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHsgICAgICAgICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT0gXCJ2aWRlb1wiKSB7ICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0uZGF0YS50aXRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJywgICAgICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogaXRlbS5kYXRhLmNvdmVyLmZlZWQsICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ3ZpZGVvOi8vJyArIGl0ZW0uZGF0YS5wbGF5VXJsLCAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgIHB1dFZhcignbicsIGpzb24ubmV4dFBhZ2VVcmwpOyAgICAgICAgIH07ICAgICAgICAgIGlmIChNWV9QQUdFID09IDEpIHsgICAgICAgICAgICAgamlhKCdodHRwOi8vYmFvYmFiLmthaXlhbmFwcC5jb20vYXBpL3Y0L3RhYnMvc2VsZWN0ZWQnKTsgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICBuZXh0cCA9IGdldFZhcignbicpOyAgICAgICAgICAgICBqaWEobmV4dHApOyAgICAgICAgIH0gICAgICAgICBzZXRSZXN1bHQoZCk7ICAgICB9KSB9KSIsImljb24iOiIiLCJkZXNjIjoiIiwidHlwZSI6InRleHRfNCJ9LHsic3RhdHVzIjp0cnVlLCJwYXR0ZXJuIjowLCJuYW1lIjoi6IGa5ZCI6Kej5p6QIiwidGl0bGUiOiLljrvmsLTljbAiLCJ1cmwiOiJAanM6ICQoW3sgICAgIHRpdGxlOiAn5oqW6Z+z5peg5rC05Y2wJywgICAgIGljb246ICdoaWtlcjovL2ZpbGVzL0ptL2xtL3EvMzUucG5nJyB9LCB7ICAgICB0aXRsZTogJ+Wbvumbhuino+aekCcsICAgICBpY29uOiAnaGlrZXI6Ly9maWxlcy9KbS9sbS9xLzUucG5nJyB9LCB7ICAgICB0aXRsZTogJ+mfs+mikeino+aekCcsICAgICBpY29uOiAnaGlrZXI6Ly9maWxlcy9KbS9sbS9xLzEyNS5wbmcnIH0sIHsgICAgIHRpdGxlOiAn5YWo5rCRS+atjCcsICAgICBpY29uOiAnaGlrZXI6Ly9maWxlcy9KbS9sbS9xLzIwLnBuZycgfV0sIDIsICfor7fpgInmi6knKS5zZWxlY3QoKCkgPT4geyAgICAgaWYgKGlucHV0ID09ICfop4bpopHop6PmnpAnKSB7ICAgICAgICAgcmV0dXJuICQoJ3t7Y2xpcGJvYXJkfX0nLCAn5oqW6Z+zL+W/q+aJi+etieinhumikeWIhuS6q+mTvuaOpScpLmlucHV0KCgpID0+IHsgICAgICAgICAgICAgaWYgKCFpbnB1dCkgcmV0dXJuIFwidG9hc3Q6Ly/or7fovpPlhaXliIbkuqvpk77mjqVcIjsgICAgICAgICAgICAgdmFyIHVybCA9IGlucHV0Lm1hdGNoKC8oaHR0cDpcXC9cXC98aHR0cHM6XFwvXFwvKSgoXFx3fD18XFw/fFxcLnxcXC98JnwtKSspL2cpOyAgICAgICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjZ2FtZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCh1cmwpID0+IHsgICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZSgnJyk7ICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdOyAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICBDcnlwdG9VdGlsID0gJC5yZXF1aXJlKFwiaGlrZXI6Ly9hc3NldHMvY3J5cHRvLWphdmEuanNcIik7ICAgICAgICAgICAgICAgICAgICAgc3RyX2tleSA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZVVURjgoXCJCSDZNeEhUR1gyY1VVR1JkV0FnNVZ0MjBhd3VjUXNpUVwiKTsgICAgICAgICAgICAgICAgICAgICBzdHJfaXYgPSBDcnlwdG9VdGlsLkRhdGEucGFyc2VVVEY4KFwiN1JVSzBYUVlMRE1xTldvYlwiKTsgICAgICAgICAgICAgICAgICAgICBhZXMgPSB3b3JkID0+IENyeXB0b1V0aWwuQUVTLmRlY3J5cHQod29yZCwgc3RyX2tleSwgeyAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiBcIkFFUy9DQkMvUEtDUzVQYWRkaW5nXCIsICAgICAgICAgICAgICAgICAgICAgICAgIGl2OiBzdHJfaXYgICAgICAgICAgICAgICAgICAgICB9KS50b1N0cmluZygpOyAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoSlNPTi5wYXJzZShhZXMocmVxdWVzdChcImh0dHBzOi8vYWxsZG93bi5tYWdpY3Rvb2wuY24vcHJvL3FzeUFwaS5waHA/dXJsPVwiICsgdXJsICsgXCIvJnRva2VuPWxLS2xuMjM5V0VPamZ3ZUxMQVAwMkpOc1wiKSkpKS5kYXRhOyAgICAgICAgICAgICAgICAgICAgIHZhciBzcCA9IHsgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGpzb24udGl0bGUsICAgICAgICAgICAgICAgICAgICAgICAgIHVybDoganNvbi52aWRlbyA/IGpzb24udXJsIDoganNvbi5kb3duLCAgICAgICAgICAgICAgICAgICAgIH07ICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7ICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS50YW5nZG91ei5jb20vZHkucGhwP3JldHVybj1qc29uJmxqPScgKyB1cmwpKTsgICAgICAgICAgICAgICAgICAgICB2YXIgc3AgPSB7ICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnJywgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBqc29uLnVybCwgICAgICAgICAgICAgICAgICAgICB9OyAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gc3AudGl0bGUucmVwbGFjZSgvWyBdfCN8JnwvZywgJycpOyAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJywgICAgICAgICAgICAgICAgICAgICBkZXNjOiAnZmxvYXQmJjY0MCcsICAgICAgICAgICAgICAgICAgICAgdXJsOiBzcC51cmwsICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b1BsYXk6IHRydWUgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLCAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0JywgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+S4i+i9veinhumikScsICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJywgICAgICAgICAgICAgICAgICAgICB1cmw6ICdkb3dubG9hZDovLycgKyBzcC51cmwsICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVRpdGxlOiB0aXRsZSxsaW5lVmlzaWJsZTogZmFsc2UgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgfSwgdXJsKSAgICAgICAgIH0pICAgICB9IGVsc2UgaWYgKGlucHV0ID09ICflm77pm4bop6PmnpAnKSB7ICAgICAgICAgcmV0dXJuICQoJ3t7Y2xpcGJvYXJkfX0nLCAn5oqW6Z+zL+W/q+aJi+WbvumbhuWIhuS6q+mTvuaOpScpLmlucHV0KCgpID0+IHsgICAgICAgICAgICAgaWYgKCFpbnB1dCkgcmV0dXJuIFwidG9hc3Q6Ly/or7fovpPlhaXliIbkuqvpk77mjqVcIjsgICAgICAgICAgICAgdmFyIHVybCA9IGlucHV0Lm1hdGNoKC8oaHR0cDpcXC9cXC98aHR0cHM6XFwvXFwvKSgoXFx3fD18XFw/fFxcLnxcXC98JnwtKSspL2cpOyAgICAgICAgICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNnYW1lVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKHVybCkgPT4geyAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCcnKTsgICAgICAgICAgICAgICAgIGxldCBkID0gW107ICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly93d3cuaGhscWlsb25nemh1LmNuL2FwaS9zcF9qeC90dWppLnBocD91cmw9JyArIHVybCkpLmRhdGE7ICAgICAgICAgICAgICAgICAgICAgdmFyIHRqID0geyAgICAgICAgICAgICAgICAgICAgICAgICBtdXNpYzogJycsICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzoganNvbi5pbWFnZXMsICAgICAgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmFoZmkuY24vYXBpL3FzeWltZz91cmw9JyArIHVybCkpOyAgICAgICAgICAgICAgICAgICAgIHZhciB0aiA9IHsgICAgICAgICAgICAgICAgICAgICAgICAgbXVzaWM6ICcnLCAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6IGpzb24uaW1hZ2VzLCAgICAgICAgICAgICAgICAgICAgIH07ICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnLCAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICcwJywgICAgICAgICAgICAgICAgICAgICB1cmw6IHRqLm11c2ljLCAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9QbGF5OiB0cnVlICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICB0ai5waWMubWFwKGltZyA9PiBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfZnVsbCcsICAgICAgICAgICAgICAgICAgICAgcGljOiBpbWcgKyAnIy5qcGcnLCAgICAgICAgICAgICAgICAgICAgIHVybDogaW1nICsgJyMuanBnJywgICAgICAgICAgICAgICAgIH0pKTsgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgfSwgdXJsKSAgICAgICAgIH0pICAgICB9IGVsc2UgaWYgKGlucHV0ID09ICfpn7PpopHop6PmnpAnKSB7ICAgICAgICAgcmV0dXJuICQoJ3t7Y2xpcGJvYXJkfX0nLCAn5oqW6Z+zL+W/q+aJi+etiemfs+inhumikeWIhuS6q+mTvuaOpScpLmlucHV0KCgpID0+IHsgICAgICAgICAgICAgaWYgKCFpbnB1dCkgcmV0dXJuIFwidG9hc3Q6Ly/or7fovpPlhaXliIbkuqvpk77mjqVcIjsgICAgICAgICAgICAgdmFyIHVybCA9IGlucHV0Lm1hdGNoKC8oaHR0cDpcXC9cXC98aHR0cHM6XFwvXFwvKSgoXFx3fD18XFw/fFxcLnxcXC98JnwtKSspL2cpOyAgICAgICAgICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNnYW1lVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKHVybCkgPT4geyAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCcnKTsgICAgICAgICAgICAgICAgIGxldCBkID0gW107ICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgIENyeXB0b1V0aWwgPSAkLnJlcXVpcmUoXCJoaWtlcjovL2Fzc2V0cy9jcnlwdG8tamF2YS5qc1wiKTsgICAgICAgICAgICAgICAgICAgICBzdHJfa2V5ID0gQ3J5cHRvVXRpbC5EYXRhLnBhcnNlVVRGOChcIkJINk14SFRHWDJjVVVHUmRXQWc1VnQyMGF3dWNRc2lRXCIpOyAgICAgICAgICAgICAgICAgICAgIHN0cl9pdiA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZVVURjgoXCI3UlVLMFhRWUxETXFOV29iXCIpOyAgICAgICAgICAgICAgICAgICAgIGFlcyA9IHdvcmQgPT4gQ3J5cHRvVXRpbC5BRVMuZGVjcnlwdCh3b3JkLCBzdHJfa2V5LCB7ICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IFwiQUVTL0NCQy9QS0NTNVBhZGRpbmdcIiwgICAgICAgICAgICAgICAgICAgICAgICAgaXY6IHN0cl9pdiAgICAgICAgICAgICAgICAgICAgIH0pLnRvU3RyaW5nKCk7ICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShKU09OLnBhcnNlKGFlcyhyZXF1ZXN0KFwiaHR0cHM6Ly9hbGxkb3duLm1hZ2ljdG9vbC5jbi9wcm8vcXN5QXBpLnBocD91cmw9XCIgKyB1cmwgKyBcIi8mdG9rZW49bEtLbG4yMzlXRU9qZndlTExBUDAySk5zXCIpKSkpLmRhdGE7ICAgICAgICAgICAgICAgICAgICAgdmFyIHlwID0geyAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZToganNvbi50aXRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgbXVzaWM6IGpzb24udXJsID8ganNvbi5kb3duIDoganNvbi52aWRlbywgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiBqc29uLmNvdmVyID8ganNvbi5jb3ZlciA6IGpzb24uZG93bmxvYWRfaW1hZ2UsICAgICAgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnRhbmdkb3V6LmNvbS9keS5waHA/cmV0dXJuPWpzb24mbGo9JyArIHVybCkpOyAgICAgICAgICAgICAgICAgICAgIHZhciB5cCA9IHsgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICcnLCAgICAgICAgICAgICAgICAgICAgICAgICBtdXNpYzoganNvbi51cmwucmVwbGFjZSgvXFxcXC9nLCAnJyksICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJycsICAgICAgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IHlwLnRpdGxlLnJlcGxhY2UoL1sgXXwjfCZ8L2csICcnKTsgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLCAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfZnVsbCcsICAgICAgICAgICAgICAgICAgICAgcGljOiB5cC5waWMgKyAnQFJlZmVyZXI9JywgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5sYXp5UnVsZSgoeXApID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFg1V2ViVmlldygnJyk7ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB5cC5tdXNpYyArICcjaXNNdXNpYz10cnVlIycgICAgICAgICAgICAgICAgICAgICB9LCB5cCksICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZScsICAgICAgICAgICAgICAgICAgICAgZGVzYzogJzAnLCAgICAgICAgICAgICAgICAgICAgIHVybDogeXAubXVzaWMsICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b1BsYXk6IHRydWUgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkuIvovb3pn7PpopEnLCAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsICAgICAgICAgICAgICAgICAgICAgdXJsOiAnZG93bmxvYWQ6Ly8nICsgeXAubXVzaWMsICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVRpdGxlOiB0aXRsZSwgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgfSwgdXJsKSAgICAgICAgIH0pICAgICB9IGVsc2UgeyAgICAgICAgIHJldHVybiAkKCd7e2NsaXBib2FyZH19JywgJ+ivt+i+k+WFpeWFqOawkUvmrYzliIbkuqvpk77mjqUnKS5pbnB1dCgoKSA9PiB7ICAgICAgICAgICAgIGlmICghaW5wdXQpIHJldHVybiBcInRvYXN0Oi8v6K+36L6T5YWl5YiG5Lqr6ZO+5o6lXCI7ICAgICAgICAgICAgIHZhciB1cmwgPSBpbnB1dC5tYXRjaCgvKGh0dHA6XFwvXFwvfGh0dHBzOlxcL1xcLykoKFxcd3w9fFxcP3xcXC58XFwvfCZ8LSkrKS9nKTsgICAgICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjZ2FtZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCh1cmwpID0+IHsgICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZSgnJyk7ICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdOyAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnVvbWcuY29tL2FwaS9nZXQua2c/c29uZ3VybD0nICsgdXJsKSkuZGF0YTsgICAgICAgICAgICAgICAgICAgICB2YXIga2cgPSB7ICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGpzb24uc29uZ19uYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3I6IGpzb24ua2dfbmljaywgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiBqc29uLnBpYywgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBqc29uLnBsYXl1cmwsICAgICAgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHA6Ly9hcGkuY212aXAuY24vQVBJL3Fta2d6bGp4LnBocD91cmw9JyArIHVybCkpLmRhdGE7ICAgICAgICAgICAgICAgICAgICAgdmFyIGtnID0geyAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBqc29uLnNvbmdfbmFtZSwgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yOiBqc29uLmF1dGhvci5hdmF0YXIsICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzoganNvbi5waWMsICAgICAgICAgICAgICAgICAgICAgICAgIHVybDoganNvbi5tdXNpY2xpbmssICAgICAgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGtnLm5hbWUgKyAn4oCiJyArIGtnLmF1dGhvciwgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3BpY18xX2Z1bGwnLCAgICAgICAgICAgICAgICAgICAgIHBpYzoga2cucGljICsgJ0BSZWZlcmVyPScsICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykubGF6eVJ1bGUoKGtnKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBrZy51cmwgKyAnI2lzTXVzaWM9dHJ1ZSMnO+KAiyAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IGZldGNoKCdodHRwczovL2FwaS41MnZteS5jbi9hcGkvbXVzaWMvbHJjP3Rva2VuPTQzMGVkYzAzYzg3OGQ2YzM1NDViNzMzMjNkYjA2ZWQyJm49MSZtc2c9JyArIGtnLm5hbWUgKyAnICcgKyBrZy5hdXRob3IpOyAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KCfmrYzor43ojrflj5blpLHotKUnKTsgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoWDVXZWJWaWV3KCcnKTsgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHM6IFt1cmxdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHlyaWM6IGxyYyAgICAgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICAgICAgIH0sIGtnKSwgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJywgICAgICAgICAgICAgICAgICAgICBkZXNjOiAnMCcsICAgICAgICAgICAgICAgICAgICAgdXJsOiBrZy51cmwsICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b1BsYXk6IHRydWUgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkuIvovb3pn7PpopEnLCAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsICAgICAgICAgICAgICAgICAgICAgdXJsOiAnZG93bmxvYWQ6Ly8nICsga2cudXJsLCAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VUaXRsZToga2cubmFtZSArICfigKInICsga2cuYXV0aG9yLCAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpOyAgICAgICAgICAgICB9LCB1cmwpICAgICAgICAgfSkgICAgIH0gfSkiLCJpY29uIjoiaGlrZXI6Ly9maWxlcy96Zi9wbmcv5oqW6Z+zLnBuZyIsImRlc2MiOiIiLCJ0eXBlIjoiaWNvbl80In0seyJzdGF0dXMiOnRydWUsInBhdHRlcm4iOjIsIm5hbWUiOiLmnoHoh7TpnZPkuL0iLCJjb2RlIjoiW3tcbiAgICB0aXRsZTogJ+mdk+S4vScsXG4gICAgY29sX3R5cGU6ICdpY29uXzQnLFxuICAgIHBpYzogJ2hpa2VyOi8vZmlsZXMvemYvcG5nL+e+juWlsy5wbmcnLFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XG4gICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I2dhbWVUaGVtZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7XG4gICAgICAgICAgICBsZXQgZCA9IFtdO1xuICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCfmnoHoh7TpnZPkuL0nKTtcbiAgICAgICAgICAgIGxldCDpk77mjqUgPSBnZXRJdGVtKCfmnoHlrqInLCAnaHR0cHM6Ly9wLnR4cXEucHJvLyMvJyk7XG4gICAgICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgICAgICBkZXNjOiAnZmxvYXQmJjEwMCUnLFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnLFxuICAgICAgICAgICAgICAgIHVybDog6ZO+5o6lLFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICAgICAgICAgIGNhbkJhY2s6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGF1dG9QbGF5OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBibG9ja1J1bGVzOiBbJ2JhaWR1LioucG5nJywgJy5qcGcnXSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNldFJlc3VsdChkKTtcbiAgICAgICAgfSlcbiAgICB9KSxcbiAgICBleHRyYToge1xuICAgICAgICBsb25nQ2xpY2s6IFt7XG4gICAgICAgICAgICB0aXRsZTogJ+maj+acuuWnkOWnkCcsXG4gICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0SXRlbSgn5p6B5a6iJywgJ2h0dHA6Ly8xMTkuOTEuMTk2LjI0Nzo3Nzc4L3hqaicpO1xuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2iJ1xuICAgICAgICAgICAgfSlcblxuICAgICAgICB9LCB7XG4gICAgICAgICAgICB0aXRsZTogJ+aegeWuoue+juWlsycsXG4gICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0SXRlbSgn5p6B5a6iJywgJ2h0dHBzOi8vdC54eGdlZWsuY29tL3Rvb2xzL21tdm9kL20ucGhwJyk7XG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LliIfmjaInXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIHRpdGxlOiAn6ZqP5py6576O5aWzJyxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRJdGVtKCfmnoHlrqInLCAnaHR0cHM6Ly9hcGkuY25tY29tLmNvbS9kc3AvJyk7XG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LliIfmjaInXG4gICAgICAgICAgICB9KVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICB0aXRsZTogJ+i+k+WFpeabtOaNoicsXG4gICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIGprID0gZ2V0SXRlbSgnamtfaW5wdXQnLCAnJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQoamssICfmg7PopoHmm7TmjaLnmoTnn63op4bpopHlnLDlnYAnKS5pbnB1dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0eHQgPSBpbnB1dDtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgn5p6B5a6iJywgdHh0KTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgnamtfaW5wdXQnLCB0eHQpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suabtOaNoidcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgdGl0bGU6ICfpu5jorqTpnZPkuL0nLFxuICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNsZWFySXRlbSgn5p6B5a6iJyk7XG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LmgaLlpI3pu5jorqQnXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XSxcbiAgICB9XG59XSJ9LHsic3RhdHVzIjp0cnVlLCJwYXR0ZXJuIjowLCJuYW1lIjoi5bCP5aeQ5aeQIiwidGl0bGUiOiLlsI/lp5Dlp5AiLCJ1cmwiOiJAanM6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjI2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgICAgICBzZXRQYWdlVGl0bGUoJ+mBh+ingScpOyAgICAgICAgIHZhciBkID0gW107ICAgICAgICAgdmFyIGZsID0gZ2V0SXRlbSgn5YiG57G7JywgJ2tzeGpqc3AnKTsgICAgICAgICB2YXIgaHRtbCA9ICgnaHR0cDovL3d3dy55dWpuLmNuL2FwaS8nICsgZmwgKyAnLnBocCcpOyAgICAgICAgIHZhciDmjqXlj6MgPSBnZXRJdGVtKCfmjqXlj6MnLCBodG1sKTsgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJywgICAgICAgICAgICAgZGVzYzogJzY0MCYmZmxvYXQnLCAgICAgICAgICAgICB1cmw6IOaOpeWPoywgICAgICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgICAgIGNhbkJhY2s6IHRydWUsICAgICAgICAgICAgICAgICBhdXRvUGxheTogdHJ1ZSwgICAgICAgICAgICAgfSAgICAgICAgIH0sIHsgICAgICAgICAgICAgY29sX3R5cGU6ICdiaWdfYmxhbmtfYmxvY2snLCAgICAgICAgIH0sIHsgICAgICAgICAgICAgdGl0bGU6ICfmjaLkuIDkuKonLCAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMicsICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7ICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7ICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknICAgICAgICAgICAgIH0pICAgICAgICAgfSwgeyAgICAgICAgICAgICB0aXRsZTogJ+WIh+aNouWIhuexuycsICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJywgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgICAgICAgICAgICAgIHZhciBsaXN0ID0gW3sgICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICflv6vmiYsnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICdrc3hqanNwJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+axieacjScsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJ2hhbmZ1JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+eOiei2sycsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJ3l1enUnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiAn5oWi5pGHJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnbWFueWFvJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+e+juiFvycsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJ2pwbXQnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiAn5ZCK5bimJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnZGlhb2RhaScgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICfmuIXnuq8nLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICdxaW5nY2h1bicgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICfnqb/mkK0nLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICdjaHVhbmRhJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ0NPUycsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJ0NPUycgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICfkuJ3mu5HoiJ7ouYgnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICdzaHdkJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+WujOe+jui6q+adkCcsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJ3dtc2MnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiAn6JCM5aiDJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnbWVuZ3dhJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+e6r+aDheWls+mrmCcsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJ252Z2FvJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+WPjOWAjeW/q+S5kCcsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJ3Nia2wnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiAn5L2g55qE5qyy5qKmJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnbmR5bScgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICfokJ3ojoknLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICdsdW9saScgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICfnlJzlprknLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICd0aWFubWVpJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ2pr5rSb5Li95aGUJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnamtzcCcgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICflsI/lk6Xlk6UnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICd4Z2cnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiAn54Ot6IieJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAncmV3dScgICAgICAgICAgICAgICAgIH1dOyAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBsaXN0Lm1hcChsaXN0ID0+IGxpc3QubmFtZSk7ICAgICAgICAgICAgICAgICByZXR1cm4gJChuYW1lLCAzLCAn6K+36YCJ5oup5YiG57G7Jykuc2VsZWN0KChsaXN0KSA9PiB7ICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBsaXN0LmZpbmRJbmRleChsaXN0ID0+IGxpc3QubmFtZSA9PSBpbnB1dCk7ICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGxpc3Rbb10uaWQ7ICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgn5YiG57G7JywgdXJsKTsgICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ+aOpeWPoycpOyAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2i5YiG57G7JyAgICAgICAgICAgICAgICAgfSwgbGlzdCkgICAgICAgICAgICAgfSksICAgICAgICAgfSwgeyAgICAgICAgICAgICB0aXRsZTogJ+abtOaNouaOpeWPoycsICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJywgICAgICAgICAgICAgdXJsOiAkKCcnLCAn5oOz5pu05o2i55qELnBocOaOpeWPo+WcsOWdgCcpLmlucHV0KCgpID0+IHsgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ+aOpeWPoycsIGlucHV0KTsgICAgICAgICAgICAgICAgIGNsZWFySXRlbSgn5YiG57G7Jyk7ICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7ICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2i5o6l5Y+jJyAgICAgICAgICAgICB9KSwgICAgICAgICB9LCB7ICAgICAgICAgICAgIHRpdGxlOiAn6ZuF6JCM57O75YiXJywgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInLCAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICAgICAgICAgICAgICAgc2V0SXRlbSgn5o6l5Y+jJywgJ2h0dHBzOi8vYXBpLnFxc3V1LmNuL2FwaS9kbS14amo/YXBpS2V5PTU3NjY0MTlmNDU4NTVkY2JlZjY0N2FlNmQ0MmY4MGU5Jyk7ICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ+WIhuexuycpOyAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpOyAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suWIh+aNoumbheiQjOezu+WIlycgICAgICAgICAgICAgfSksICAgICAgICAgfSwgeyAgICAgICAgICAgICB0aXRsZTogJ+W9k+WJjeaOpeWPo++8micgKyDmjqXlj6MsICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsICAgICAgICAgICAgIHVybDogJ2NvcHk6Ly8nICsg5o6l5Y+jLCAgICAgICAgIH0pOyAgICAgICAgIHNldFJlc3VsdChkKTsgICAgIH0pIH0pOyIsImljb24iOiJoaWtlcjovL2ZpbGVzL3pmL3BuZy/lp5Dlp5AucG5nIiwiZGVzYyI6IiIsInR5cGUiOiJpY29uXzQifSx7InN0YXR1cyI6dHJ1ZSwicGF0dGVybiI6MCwibmFtZSI6IuS6keefpSIsInRpdGxlIjoi5LqR55+lIiwidXJsIjoiQGpzOiB2YXIgbWltYT1nZXRWYXIoJ21pbWFfMScsJycpO3ZhciBleHA9bmV3IERhdGUoKTsgICAgICAgIFx0XHRsZXQgaD1leHAuZ2V0SG91cnMoKTtsZXQgbT1leHAuZ2V0TWludXRlcygpO2xldCBzPWV4cC5nZXRTZWNvbmRzKCk7bGV0IG1pPWgrbTtpZihtaW1hPT1taSl7ZmFzdEdyYW1tYXIoXCI8VGFiPkBbJ+S6keefpeS5puetvue7hCcsJ+S/nemZqeeusSddQFsn5L+d6Zmp566x5bey6KKr5omT5byAJywoNjAtbmV3IERhdGUoKS5nZXRTZWNvbmRzKCkpKyfnp5LlkI7oh6rliqjkuIrplIEnXVwiLG9yZGVyKX1lbHNleyQoJycsIFwi5LqR55+l5a+G56CBXCIpLmNsaWNrSW5wdXQobWkgPT4geyAgcHV0VmFyKCdtaW1hXzEnLGlucHV0KTsgIGlmIChpbnB1dCE9bWkpIHsgICAgICAgIHJldHVybiBcInRvYXN0Oi8v4puUIOWvhueggemUmeivr1wiOyAgICB9IGVsc2UgeyAgICAgcmV0dXJuICgocnVsZSwgdG9hc3QpID0+IHsgICAgICAgICAgICBjb25zdCBMb2NhbGZpbGUgPSBIaWtlckhvbWUuZ2V0TG9jYWxmaWxlKCk7ICAgICAgICAgICAgY29uc3QgYm9va01hcmsgPSBIaWtlckhvbWUuZ2V0Qm9va21hcmtzTGlzdChMb2NhbGZpbGUuZ2V0SXRlbShcIkJvb2ttYXJrc0xpc3RcIikpOyAgICAgICAgICAgIGV2YWwoXCJ2YXIgW2gsdGFiXT1cIiArIHJ1bGUgKyBcIjt2YXIgW3RfMSx0XzJdPVwiICsgKHRvYXN0IHx8IFwiWycnLCcnXVwiKSk7ICAgICAgICAgICAgbGV0IGluZGV4ID0gYm9va01hcmsuZ2V0SW5kZXgoaCk7ICAgICAgICAgICAgbGV0IGpzb24gPSBib29rTWFyay5nZXQoaW5kZXgpOyAgICAgICAgICAgIGlmIChqc29uID09PSB1bmRlZmluZWQgfHwganNvbi5wYXR0ZXJuICE9PSAzKSB7ICAgICAgICAgICAgICAgIHJldHVybiBcInRvYXN0Oi8vXFx1NjcyYVxcdTViOWFcXHU0ZTQ5XFx1OGJlNVxcdTRlNjZcXHU3YjdlXFx1N2VjNFwiOyAgICAgICAgICAgIH0gICAgICAgICAgICBpZiAoanNvbi5mb2xkX3N0YXR1cykgeyAgICAgICAgICAgICAgICB2YXIgdG9hc3QgPSB0XzIgfHwgXCJcXHU1ZGYyXFx1NjI5OFxcdTUzZTBcIjsgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICB2YXIgdG9hc3QgPSB0XzEgfHwgXCJcXHU1ZGYyXFx1NWM1NVxcdTVmMDBcIjsgICAgICAgICAgICB9ICAgICAgICAgICAganNvbi5mb2xkX3N0YXR1cyA9ICFqc29uLmZvbGRfc3RhdHVzOyAgICAgICAgICAgIGJvb2tNYXJrLm1vZGlmeShpbmRleCwganNvbik7ICAgICAgICAgICAgbGV0IGxpc3QgPSBib29rTWFyay5nZXRMaXN0KCk7ICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7ICAgICAgICAgICAgICAgIGxldCBpdGVtID0gbGlzdFtpXTsgICAgICAgICAgICAgICAgaWYgKGl0ZW0ucGF0dGVybiA9PT0gMyAmJiBpdGVtLm5hbWUgIT09IGggJiYgaXRlbS5tYXJrICE9PSBcIlwiICYmIGl0ZW0ubWFyayA9PT0gdGFiKSB7ICAgICAgICAgICAgICAgICAgICBpdGVtLmZvbGRfc3RhdHVzID0ganNvbi5mb2xkX3N0YXR1cyA/IGZhbHNlIDogZmFsc2U7ICAgICAgICAgICAgICAgICAgICBib29rTWFyay5tb2RpZnkoaSwgaXRlbSk7ICAgICAgICAgICAgICAgIH0gICAgICAgICAgICB9ICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpOyAgICAgICAgICAgIGlmICh0b2FzdCA9PT0gXCJoaWtlcjovL2VtcHR5XCIpIHsgICAgICAgICAgICAgICAgcmV0dXJuIHRvYXN0OyAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgIHJldHVybiBcInRvYXN0Oi8vXCIgKyB0b2FzdDsgICAgICAgICAgICB9ICAgICAgICB9KShcIlsn5LqR55+l5Lmm562+57uEJywn5L+d6Zmp566xJ11cIiwgXCJbJ+W3suaJk+W8gOS/nemZqeeusScsJ+WFs+mXreS/nemZqeeusSddXCIpOyAgfX0sbWkpfSIsImljb24iOiJoaWtlcjovL2ltYWdlcy9pY29uX2Nsb3VkNiIsImRlc2MiOiIiLCJ0eXBlIjoiaWNvbl80In0seyJzdGF0dXMiOnRydWUsInBhdHRlcm4iOjAsIm5hbWUiOiLnm7Tmkq3oioLnm64iLCJ0aXRsZSI6IuaUvuaYoOWOhSIsInVybCI6IkBqczogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7ICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgICAgICBzZXRQYWdlVGl0bGUoJ+iZjueJmeaUvuaYoOWOheKAoueyvumAieiKguebricpOyAgICAgICAgIHZhciB0aXRsZXMgPSBbJ+iZjueJmeWFq+eCueaho0BAaHR0cDovL2dvby5ia3BjcC50b3AvbWcvY2N0djEnLCAn6Z+z5LmQ5bCP55+z5qa0QEBodHRwczovL20uaHV5YS5jb20vMTcwOTE2ODEnLCAn5ZGo5pif6amwQEBodHRwczovL20uaHV5YS5jb20vMTEzNDI0MTInLCAn5ZGo5pif6amwLeeypOivrUBAaHR0cHM6Ly9tLmh1eWEuY29tLzExMzM2NTg3JywgJ+ael+ato+iLsUBAaHR0cDovL3N0cmVhbS5hcHB3dWhhbi5jb20vanl6Yi9zZC9saXZlLm0zdTgnLCAn5oiQ6b6ZQEBodHRwczovL20uaHV5YS5jb20vMTEzNDIzODYnLCAn5rKI6IW+QEBodHRwczovL20uaHV5YS5jb20vMTE2MDE5NjgnLCAn546L5pm2QEBodHRwczovL20uaHV5YS5jb20vMTE2MDIwNTgnLCAn5p2O6L+e5p2wQEBodHRwczovL20uaHV5YS5jb20vMTEzNDIzOTAnLCAn5Y+k5aSp5LmQQEBodHRwczovL20uaHV5YS5jb20vNTkzODY1JywgJ+eUhOWtkOS4uUBAaHR0cHM6Ly9tLmh1eWEuY29tLzExMzUyOTM1JywgJ+WImOW+t+WNjkBAaHR0cHM6Ly9tLmh1eWEuY29tLzExMzQyNDI0JywgJ+mHkeW6uOezu+WIl0BAaHR0cHM6Ly9tLmh1eWEuY29tLzExMzQyNDI3JywgJ+Wls+elnuezu+WIl0BAaHR0cHM6Ly9tLmh1eWEuY29tLzExMzM2NTcxJywgJ+iuuOawj+S4ieadsEBAaHR0cHM6Ly9tLmh1eWEuY29tLzExNjAyMDMzJywgJ+e7j+WFuOa4r+WJp0BAaHR0cHM6Ly9tLmh1eWEuY29tLzExMzUyOTY1JywgJ+itpuWMqueUteW9sUBAaHR0cHM6Ly9tLmh1eWEuY29tLzI2MDU4MDk3JywgJ+WKqOS9nOeUteW9sUBAaHR0cHM6Ly9tLmh1eWEuY29tLzI2MTgyMDkxJywgJ+WWnOWJp+eUteW9sUBAaHR0cHM6Ly9tLmh1eWEuY29tLzI2OTg5MjQ4JywgJ+aQnueskeeUteW9sUBAaHR0cHM6Ly9tLmh1eWEuY29tLzIzODI5NTQzJywgJ+m7keW4ruWkp+eJh0BAaHR0cHM6Ly9tLmh1eWEuY29tLzExMzM2NzE5JywgJ+m7keW4ruaWl+S6iUBAaHR0cHM6Ly9tLmh1eWEuY29tLzExMzQyNDE5JywgJ+WbveWkluiwjeaImOeJh0BAaHR0cHM6Ly9tLmh1eWEuY29tLzIxMDU5NTg3JywgJ+eOhOW5u+WJp+WcukBAaHR0cHM6Ly9tLmh1eWEuY29tLzExMzQyNDE0JywgJ+a4r+ezu+i0uuWygeeJh0BAaHR0cHM6Ly9tLmh1eWEuY29tLzExNjAxOTcxJywgJ+WPpOWik+ezu+WIl0BAaHR0cHM6Ly9tLmh1eWEuY29tLzExMzUyOTEzJywgJ+aQnueskeaBkOaAluexu0BAaHR0cHM6Ly9tLmh1eWEuY29tLzExNjAxOTYwJywgJ+mHkeW6uOatpuS+oOeJh0BAaHR0cHM6Ly9tLmh1eWEuY29tLzExMzQyNDM1JywgJ+aKl+aXpeaImOS6iUBAaHR0cHM6Ly9tLmh1eWEuY29tLzExMzUyOTEwJywgJ+aKl+aXpeaImOS6iTFAQGh0dHBzOi8vbS5odXlhLmNvbS8xMTM1MjkzNicsICfnu4/lhbjprLzniYdAQGh0dHBzOi8vbS5odXlhLmNvbS8xOTM4MzI5NScsICfnu4/lhbjllpzliadAQGh0dHBzOi8vbS5odXlhLmNvbS8xMTM1Mjg4MycsICfnu4/lhbjmrabkvqBAQGh0dHBzOi8vbS5odXlhLmNvbS8yMzczNDE3NicsICfllpzliafniYflnLpAQGh0dHBzOi8vbS5odXlhLmNvbS8yNTA5ODk1NCcsICflpKnpvpnlhavpg6hAQGh0dHBzOi8vbS5odXlhLmNvbS8yMzkwMzEyMycsICfnpZ7mjqLni4Tku4HmnbBAQGh0dHBzOi8vbS5odXlhLmNvbS8xMTM0MjQyNScsICfnpZ7pm5XkvqDkvqNAQGh0dHBzOi8vbS5odXlhLmNvbS8yMzg2NTE3MScsICflsITpm5Xoi7Hpm4TkvKBAQGh0dHBzOi8vbS5odXlhLmNvbS8yMzcyODY3NCcsICfpk4Hpvb/pk5zniZnnuqrmmZPlsppAQGh0dHBzOi8vbS5odXlhLmNvbS8xMTM0MjM5NicsICfpub/pvI7orrBAQGh0dHBzOi8vbS5odXlhLmNvbS8yMzg2NTA4MCcsICfnjKvlkozogIHpvKBAQGh0dHBzOi8vbS5odXlhLmNvbS8yNzg4MjUzNScsICfpmYjnv5Tlha3ngrnljYpAQGh0dHBzOi8vbS5odXlhLmNvbS8xMTI3NDE1NCcsICfnrJHlgrLluK5AQGh0dHBzOi8vbS5odXlhLmNvbS8xMTM1MjkwOCcsICfnrJHlgrLmsZ/muZZAQGh0dHBzOi8vbS5odXlhLmNvbS8xMTM1MjkzNycsIF07ICAgICAgICAgdmFyIHQgPSB0aXRsZXM7ICAgICAgICAgdmFyIGQgPSBbXTsgICAgICAgICB2YXIgaW1nID0gJ2hpa2VyOi8vZmlsZXMvemYvY3kvemhhbi5wbmcnOyAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdC5sZW5ndGg7IGkrKykgeyAgICAgICAgICAgICB2YXIgayA9IHRbaV0uc3BsaXQoL1xccypAQFxccyovKTsgICAgICAgICAgICAgaWYgKGsubGVuZ3RoIDwgMikgY29udGludWU7ICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICB0aXRsZToga1swXSwgICAgICAgICAgICAgICAgIHVybDogJ3ZpZGVvOi8vJyArIGtbMV0sICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fMl9yb3VuZCcsICAgICAgICAgICAgICAgICBwaWNfdXJsOiBpbWcsICAgICAgICAgICAgIH0pOyAgICAgICAgIH0gICAgICAgICBzZXRIb21lUmVzdWx0KGQpOyAgICAgfSkgfSk7IiwiaWNvbiI6Imhpa2VyOi8vZmlsZXMvemYvcG5nL+aUvuaYoOWOhS5wbmciLCJkZXNjIjoiIiwidHlwZSI6Imljb25fNCJ9LHsic3RhdHVzIjp0cnVlLCJwYXR0ZXJuIjowLCJuYW1lIjoi55S16KeG55S15Y+wIiwidGl0bGUiOiLnlLXop4YiLCJ1cmwiOiJAanM6IHZhciBsaXZlID0gWyAgICB7ICAgICduYW1lJzogJ/Cfk7ogMDEnLCAgICAndXJsJzogJ2hpa2VyOi8vZmlsZXMvemYvanNvbi9jY3R2Lmpzb24nfSwgICAgICAgICAgeyAgICAnbmFtZSc6ICdLVFYnLCAgICAndXJsJzogJ2hpa2VyOi8vZmlsZXMvemYvanNvbi9rdHYuanNvbid9ICAgICAgICAgICAgICAgICBdOyAgICB2YXIgdCA9IGxpdmUubWFwKGwgPT4gbC5uYW1lKTskKHQsIDIsICfor7fpgInmi6knKS5zZWxlY3QoKGxpdmUpID0+IHsgICAgdmFyIHR4dCA9IGlucHV0OyAgICBsZXQgdCA9IGxpdmUuZmluZEluZGV4KGwgPT4gbC5uYW1lID09IHR4dCk7ICAgIHZhciB1ID0gbGl2ZVt0XS51cmw7ICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKHUsIHR4dCkgPT4geyAgICAgICAgc2V0UGFnZVRpdGxlKHR4dCk7ICAgICAgICBsZXQgZCA9IFtdOyAgICAgICAgdHJ5IHsgICAgICAgICAgICBsZXQgZmlsZSA9IGdldFBhdGgodSk7ICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKGZpbGUpKS5kYXRhOyAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgIHRpdGxlOiAn5pCc57SiJywgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsICAgICAgICAgICAgICAgIGRlc2M6ICfor7fovpPlhaXlhbPplK7or40nLCAgICAgICAgICAgICAgICB1cmw6ICQudG9TdHJpbmcoKGpzb24pID0+IHsgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHNlYXJjaChuYW1lKSB7ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpzb24uZmlsdGVyKGl0ZW0gPT4gaXRlbS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobmFtZS50b0xvd2VyQ2FzZSgpKSk7ICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0cyA9IHNlYXJjaChpbnB1dCk7ICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0cy5sZW5ndGggPiAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHknKS5ydWxlKChyZXN1bHRzKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkID0gW107ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbWcgPSAoJ2hpa2VyOi8vZmlsZXMvemYvY3kvemhhbi5wbmcnKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKHIgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogci5uYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl8yX3JvdW5kJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6IGltZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHIpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHM6IHIudXJsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHIpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRUaXRsZTogZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgICAgICAgICAgICB9LCByZXN1bHRzKSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5rKh5pyJ5om+5YiwJyAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICB9LCBqc29uKSAgICAgICAgICAgIH0pOyAgICAgICAgICAgIGpzb24uZm9yRWFjaChhID0+IHsgICAgICAgICAgICAgICAgbGV0IHVybCA9ICgnaGlrZXI6Ly9maWxlcy9KbS9saXZlL2R0Z2IuanNvbicpOyAgICAgICAgICAgICAgICBsZXQgaW1nID0gKCdoaWtlcjovL2ZpbGVzL3pmL2N5L3poYW4ucG5nJyk7ICAgICAgICAgICAgICAgIGxldCBpbWdzID0gKCdoaWtlcjovL2ZpbGVzL3pmL2N5L3poYW4ucG5nJyk7ICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICB0aXRsZTogYS5uYW1lLCAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uXzJfcm91bmQnLCAgICAgICAgICAgICAgICAgICAgcGljOiB1ID09IHVybCA/IGltZ3MgOiBpbWcsICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGEpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYS51cmwgPT0gXCJcIikgcmV0dXJuICd0b2FzdDovL+S9oOWSi+S4jeaUvumTvuaOpeWYnu+8gSc7ICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IGEudXJsOyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHM6IHVybCwgICAgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICAgICAgfSwgYSksICAgICAgICAgICAgICAgICAgICBleHRyYTogeyAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRUaXRsZTogZmFsc2UgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgfSk7ICAgICAgICB9IGNhdGNoIHt9ICAgICAgICBzZXRSZXN1bHQoZCk7ICAgIH0sIHUsIHR4dCl9LCBsaXZlKTsiLCJpY29uIjoiaGlrZXI6Ly9maWxlcy96Zi9wbmcv55S16KeG5a62LnBuZyIsImRlc2MiOiIiLCJ0eXBlIjoiaWNvbl80In1dLCJmb2xkX3N0YXR1cyI6dHJ1ZSwicGF0dGVybiI6M30seyJuYW1lIjoi5pCc57Si5qGGIiwidGl0bGUiOiJAanM6dHJ5e0pTT04ucGFyc2UocmVxdWVzdChcImh0dHBzOi8vYXBpcy5qeGN4aW4uY24vYXBpL2xpc2hpP2Zvcm1hdD1qc29uXCIse3RpbWVvdXQ6MTAwMH0pKS5kYXl9Y2F0Y2goZSl7J+eCueWHu+atpOWkhOi+k+WFpSd9IiwidXJsIjoiaGlrZXI6Ly9zZWFyY2giLCJpY29uIjoiaGlrZXI6Ly9pbWFnZXMvc2VhcmNoIiwidHlwZSI6Imljb25fMV9zZWFyY2gifSx7Im5hbWUiOiLluLjnlKjmjqjojZAiLCJtYXJrIjoiIiwibGlzdCI6W3sic3RhdHVzIjp0cnVlLCJwYXR0ZXJuIjowLCJuYW1lIjoi6Ziy5o6S54mI5re35LmxIiwidGl0bGUiOiIiLCJ1cmwiOiIiLCJpY29uIjoiIiwiZGVzYyI6IiIsInR5cGUiOiJsaW5lX2JsYW5rIn0seyJzdGF0dXMiOmZhbHNlLCJwYXR0ZXJuIjowLCJuYW1lIjoi5aSn57q/IiwidGl0bGUiOiIiLCJ1cmwiOiIiLCJpY29uIjoiIiwiZGVzYyI6IiIsInR5cGUiOiJiaWdfYmxhbmtfYmxvY2sifSx7InN0YXR1cyI6dHJ1ZSwicGF0dGVybiI6MiwibmFtZSI6IuW4uOeUqDEiLCJjb2RlIjoiW3tcbiAgICB0aXRsZTogJ+W4uOeUqCcsXG4gICAgcGljOiAnaGlrZXI6Ly9maWxlcy96Zi9jeS/luLjnlKgucG5nJyxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xuICAgICAgICBpZiAoIWZpbGVFeGlzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9UaGVtZS9wcm9ncmFtLmpzb24nKSkge1xuICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvVGhlbWUvcHJvZ3JhbS5qc29uJywgJ1tdJyk7XG4gICAgICAgIH1cbiAgICAgICAgcHJvZ3JhbSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9UaGVtZS9wcm9ncmFtLmpzb24nKSk7XG4gICAgICAgIHNlbGVjdF9zaG93ID0gWyfinpUnXS5jb25jYXQocHJvZ3JhbSk7XG4gICAgICAgIHJldHVybiAkKHNlbGVjdF9zaG93LCAyLCAn5bi455So56iL5bqPJykuc2VsZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbnB1dCA9PSAn4p6VJykge1xuICAgICAgICAgICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCfluLjnlKjlsI/nqIvluo/nrqHnkIYnKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9UaGVtZS9wcm9ncmFtLmpzb24nKSk7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW5kZXggKyAnLicgKyBpdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChbJ+e8lui+kScsICfnp7vkvY0nLCAn5Yig6ZmkJ10sIDMsICfor7fpgInmi6nmk43kvZwnKS5zZWxlY3QoKGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSAn57yW6L6RJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoJycsICfor7fovpPlhaXmg7Pmm7TmjaLnmoTlsI/nqIvluo/lkI0nKS5pbnB1dCgoaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L1RoZW1lL3Byb2dyYW0uanNvbicpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtW2luZGV4XSA9IGlucHV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L1RoZW1lL3Byb2dyYW0uanNvbicsIEpTT04uc3RyaW5naWZ5KHByb2dyYW0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+abtOaUueaIkOWKn34nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gJ+enu+S9jScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCcnLCAn6K+36L6T5YWl6KaB56e75Yqo5Yiw5ZOq5Liq5bqP5Y+35YmN6Z2iJykuaW5wdXQoKGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9UaGVtZS9wcm9ncmFtLmpzb24nKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IHByb2dyYW1baW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0uc3BsaWNlKGlucHV0LCAwLCB0ZW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLnNwbGljZShpbmRleCArIDEsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvVGhlbWUvcHJvZ3JhbS5qc29uJywgSlNPTi5zdHJpbmdpZnkocHJvZ3JhbSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v56e75L2N5oiQ5Yqffic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0gPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvVGhlbWUvcHJvZ3JhbS5qc29uJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvVGhlbWUvcHJvZ3JhbS5qc29uJywgSlNPTi5zdHJpbmdpZnkocHJvZ3JhbSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+WIoOmZpOaIkOWKn34nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaW5kZXgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdsZWZ0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KelScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMycsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJ1bGVzID0gZ2V0TGFzdFJ1bGVzKDIyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9IHJ1bGVzLm1hcCh0ID0+IHQudGl0bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHRpdGxlLCAyLCAn5pyA6L+R5YiX6KGoJykuc2VsZWN0KCgpID0+IHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignbmFtZV9wcm9ncmFtJywgaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX3Byb2dyYW0gPSBnZXRNeVZhcignbmFtZV9wcm9ncmFtJykuc3BsaXQoLyx877yMLyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0gPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvVGhlbWUvcHJvZ3JhbS5qc29uJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtID0gcHJvZ3JhbS5jb25jYXQobmFtZV9wcm9ncmFtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvVGhlbWUvcHJvZ3JhbS5qc29uJywgSlNPTi5zdHJpbmdpZnkocHJvZ3JhbSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJ0b2FzdDovL+W4uOeUqOWwj+eoi+W6j+a3u+WKoOaIkOWKn35cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2hvbWVAJyArIGlucHV0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH0pLFxuICAgIGNvbF90eXBlOiAnaWNvbl80J1xufV0ifSx7InN0YXR1cyI6dHJ1ZSwicGF0dGVybiI6MiwibmFtZSI6IuS6uuawkeaXpeaKpSIsImNvZGUiOiJsZXQgY2FjaGUgPSBcImhpa2VyOi8vZmlsZXMvY2FjaGUv5Lq65rCR5pel5oqlLmpzb25cIjtcbmxldCBIb3VyID0gbmV3IERhdGUoKS5nZXRIb3VycygpO1xubGV0IE1pbnV0ZSA9IG5ldyBEYXRlKCkuZ2V0TWludXRlcygpO1xuaWYoTWludXRlPDEwKSBNaW51dGU9JzAnK01pbnV0ZTtcbmxldCBUaW1lID0gSlNPTi5zdHJpbmdpZnkoSG91cikrTWludXRlO1xubGV0IFREID0gJC5kYXRlRm9ybWF0KG5ldyBEYXRlLFwiTU1kZFwiKTtcbmZ1bmN0aW9uIOe8k+WtmCgpIHtcbnJlZ2lzdGVyVGFzaygn5Lq65rCR5pel5oqlJywgMTAwMCwgJC50b1N0cmluZygoY2FjaGUsVEQpID0+IHtcbiAgICB0cnkge1xuICAgICAgICBsZXQgcmIgPSByZXF1ZXN0KCdodHRwczovL21wLndlaXhpbi5xcS5jb20vbXAvYXVkaW8/c2NlbmU9MTA1Jl9fYml6PU1qTTVNakF4TkRNNE1BPT0mbWlkPTI2NjY1ODAyNTMmaWR4PTEmdm9pY2VfaWQ9TWpNNU1qQXhORE00TUY4eU5qWTJOVGd3TWpVeSZzbj0xN2Q2YmJjMzM5MTdjNzZkYmMxYzY2M2RmNDIzY2U5MiN3ZWNoYXRfcmVkaXJlY3QnKTtcbiAgICAgICAgcmIgPSByYi5zcGxpdCgnaGlzdG9yeSA6ICcpWzFdLnNwbGl0KCdcXHJcXG52YXIgbmV3X2FwcG1zZyA9JylbMF0uc2xpY2UoMCwgLTQpO1xuICAgICAgICByYiA9IGV2YWwocmIpO1xuICAgICAgICBmb3IgKGxldCBpIGluIHJiKSB7XG4gICAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkocmJbaV0pID09IFwie31cIikgcmIuc3BsaWNlKGksIDEpXG4gICAgICAgIH1cbiAgICAgICAgcmIgPSByYi5zbGljZSgwLCAxKS5tYXAoZSA9PiB7XG4gICAgICAgICAgICB1cGRhdGVJdGVtKFwicm1yYlwiK1RELCB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGUudGl0bGUsXG4gICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9yZXMud3gucXEuY29tL3ZvaWNlL2dldHZvaWNlP21lZGlhaWQ9JyArIGUudm9pY2VpZCArICcjaXNNdXNpYz10cnVlIycsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGUudGl0bGUsXG4gICAgICAgICAgICAgICAgdm9pY2VpZDogZS52b2ljZWlkXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB3cml0ZUZpbGUoY2FjaGUsIEpTT04uc3RyaW5naWZ5KHJiKSk7XG4gICAgfSBjYXRjaCAoZSkge2xvZygn5Lq65rCR5pel5oql6ZO+5o6l5Z2P5LqGJyl9XG4gICAgdW5SZWdpc3RlclRhc2soJ+S6uuawkeaXpeaKpScpO1xufSxjYWNoZSxURCkpXG59O1xudHJ5IHtcbiAgICBsZXQgcm1yYiA9IHJlcXVlc3QoY2FjaGUpO1xuICAgIGlmICghcm1yYikg57yT5a2YKCk7XG4gICAgcm1yYiA9IEpTT04ucGFyc2Uocm1yYilbMF07XG4gICAgaWYgKHJtcmIudGl0bGUuaW5kZXhPZign5paw6Ze75pepJykgPiAtMSkge1xuICAgICAgICBpbWcgPSAnaGlrZXI6Ly9maWxlcy96Zi9jeS/lub/mkq0ucG5nJztcbiAgICAgICAgdGl0bGUgPSBybXJiLnRpdGxlLnNsaWNlKC00KTtcbiAgICAgICAgaWYgKHRpdGxlID09IFREICYmIFRpbWUgPiAyMjE4KSDnvJPlrZgoKTtcbiAgICAgICAgaWYgKHRpdGxlICE9IFREICYmIEhvdXIgPiA1KSDnvJPlrZgoKTtcbiAgICAgICAgdGl0bGUgPSB0aXRsZSArJ+aXqeePrei9pic7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaW1nID0gJ2hpa2VyOi8vZmlsZXMvemYvY3kv5bm/5pKtLnBuZyc7XG4gICAgICAgIHRpdGxlID0gcm1yYi50aXRsZS5yZXBsYWNlKC/jgJDlpJzor7vjgJF877yML2csICcnKS5zbGljZSgwLDQpO1xuICAgICAgICBpZiAoSG91ciA+IDUgJiYgVGltZSA8IDIyMTkpIOe8k+WtmCgpO1xuICAgIH1cbiAgICBbe1xuICAgICAgICB0aXRsZTogdGl0bGUsXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl80JyxcbiAgICAgICAgaW1nOiAnaGlrZXI6Ly9maWxlcy96Zi9jeS/lub/mkq0ucG5nJyxcbiAgICAgICAgdXJsOiAnaHR0cHM6Ly9yZXMud3gucXEuY29tL3ZvaWNlL2dldHZvaWNlP21lZGlhaWQ9JyArIHJtcmIudm9pY2VpZCArICcjaXNNdXNpYz10cnVlIycsXG4gICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICBpZDogJ3JtcmInK1REXG4gICAgICAgIH1cbiAgICB9XVxufSBjYXRjaCAoZSkge1xuICAgIFt7XG4gICAgICAgIHRpdGxlOiAn4p2X5Ye66ZSZJyxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzQnLFxuICAgICAgICBpbWc6ICdoaWtlcjovL2ZpbGVzL3pmL2N5L+W5v+aSrTEucG5nJyxcbiAgICAgICAgdXJsOiBcImhpa2VyOi8vZW1wdHlcIixcbiAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgIGlkOiAncm1yYicrVERcbiAgICAgICAgfVxuICAgIH1dXG59In0seyJzdGF0dXMiOnRydWUsInBhdHRlcm4iOjAsIm5hbWUiOiLogZrnm7Tmkq0iLCJ0aXRsZSI6IuiBmuebtOaSrSIsInVybCI6IkBqczokKCdoaWtlcjovL2VtcHR5I25vUmVjb3JkSGlzdG9yeSMjbm9IaXN0b3J5IycpLnJ1bGUoKCkgPT4ge2luaXRDb25maWcoeyAgICDkvp3otZY6IFwiaHR0cHM6Ly96Zmhpa2VyLm5lb2NpdGllcy5vcmcvemZoaWtlci95aWxhaS9TcmNKdXlpbmcuanNcIn0pO3JlcXVpcmUoJ2h0dHBzOi8vemZoaWtlci5uZW9jaXRpZXMub3JnL3pmaGlrZXIveWlsYWkvU3JjTGl2ZS5qcycpO0xpdmUoKTt9KSIsImljb24iOiJoaWtlcjovL2ZpbGVzL3pmL2N5L+eUteinhi5wbmciLCJkZXNjIjoiIiwidHlwZSI6Imljb25fNCJ9LHsic3RhdHVzIjpmYWxzZSwicGF0dGVybiI6MCwibmFtZSI6IuacgOi/kei2s+i/uSIsInRpdGxlIjoi6Laz6L+5IiwidXJsIjoiQGpzOmZ1bmN0aW9uIGxzKCl7dmFyIHJ1bGVzPWdldExhc3RSdWxlcyg5KTtjb25zdCBhPXJ1bGVzLm1hcChyPT5yLnRpdGxlKTtyZXR1cm4gYTt9OyQobHMoKSwyKS5zZWxlY3QoXz0+IFwiaGlrZXI6Ly9ob21lQFwiK2lucHV0KSIsImljb24iOiJAanM6bCsn5pyA6L+RLnN2ZyciLCJkZXNjIjoiIiwidHlwZSI6Imljb25fc21hbGxfNCJ9LHsic3RhdHVzIjpmYWxzZSwicGF0dGVybiI6MCwibmFtZSI6IuWOhuWPsuS4iueahOS7iuWkqSIsInRpdGxlIjoi5LuK5aSpIiwidXJsIjoiQGpzOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgICAgIHNldFBhZ2VUaXRsZSgn5Y6G5Y+y5LiK55qE5LuK5aSpJyk7ICAgICAgICAgdmFyIGQgPSBbXTsgICAgICAgICB2YXIgaW1nID0gKCdoaWtlcjovL2ZpbGVzL3pmMDEvYnovMDEuanBnJyk7ICAgICAgICAgdmFyIGh0bWwgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3FxbHlrbS5jbi9hcGkvaGlzdG9yeS9nZXQ/a2V5PTc5UjhXMDI0ZndFaFBhcWJrY2NweExhTGltJykpOyAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIHRpdGxlOiBodG1sLmRhdGUsICAgICAgICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMScsICAgICAgICAgICAgIGRlc2M6ICcwJywgICAgICAgICAgICAgcGljX3VybDogaW1nLCAgICAgICAgICAgICB1cmw6IGltZyArICcjLmpwZycsICAgICAgICAgfSwgeyAgICAgICAgICAgICBjb2xfdHlwZTogJ2JpZ19ibGFua19ibG9jaycsICAgICAgICAgfSk7ICAgICAgICAgaHRtbC5kYXRhLm1hcCh1ID0+IGQucHVzaCh7ICAgICAgICAgICAgIHRpdGxlOiB1LnllYXIgKyAn5bm0OiAnICsgdS50aXRsZSwgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLCAgICAgICAgICAgICBkZXNjOiAn54K55Ye75p+l55yL5Lq654mp6K+m5oOFJywgICAgICAgICAgICAgdXJsOiAneDU6Ly8nICsgdS51cmwsICAgICAgICAgfSkpOyAgICAgICAgIHNldFJlc3VsdChkKTsgICAgIH0pIH0pOyIsImljb24iOiJoaWtlcjovL2ZpbGVzL3pmMDEveGl0b25nL+aXpeWOhjEucG5nIiwiZGVzYyI6IiIsInR5cGUiOiJpY29uXzQifSx7InN0YXR1cyI6dHJ1ZSwicGF0dGVybiI6MCwibmFtZSI6Iumfs+S5kOatjOWNlTEiLCJ0aXRsZSI6Iumfs+S5kCIsInVybCI6IkBqczogJCgnaGlrZXI6Ly9lbXB0eSNmeXBhZ2UjZ2FtZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgIHNldFBhZ2VUaXRsZSgn5ZCs54K56Z+z5LmQJyk7ICAgICBsZXQgZCA9IFtdOyAgICAgaWYgKE1ZX1BBR0UgPT0gMSkgeyAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGJpZz48Zm9udCBjb2xvcj1cIiMxQUIxNkJcIj7lkKzngrnpn7PkuZA8L2ZvbnQ+PC9iaWc+PHNtYWxsPiDmrYzljZU8L3NtYWxsPicsICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJywgICAgICAgICAgICAgcGljOiAnaGlrZXI6Ly9maWxlcy96Zi9jeS96aGFuLnBuZycsICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7ICAgICAgICAgICAgICAgICBpZiAoIWZpbGVFeGlzdCgnaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uJykpIHsgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uJywgJ1t7XCJ0aXRsZVwiOlwi54Ot5pCc5q2M5puyXCIsXCJpY29uXCI6XCJodHRwOi8vcXBpYy55LnFxLmNvbS9tdXNpY19jb3Zlci9oS0ZyaWJNaHdINENsd05XSnhpY3VDeGp1d0lrYlpQcTRIVlQwUWd4c2RiOEpXUVhYQzJURnN1US82MDA/bj0xXCIsXCJpZFwiOjc1MzI2NzA1Mzh9LHtcInRpdGxlXCI6XCLmipbpn7Png63pl6hcIixcImljb25cIjpcImh0dHA6Ly9xcGljLnkucXEuY29tL211c2ljX2NvdmVyL1dwdmRKWGZuNzk4aWJENGdjZmp3ME5TdUJrRlRKWXBZNVFPZXYzRXhjQlFpYW1SY29ia3BONzdnLzYwMD9uPTFcIixcImlkXCI6NzYzMDMwMzQ3NH1dJyk7ICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICB2YXIgZ2VkYW4gPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvbicpKTsgICAgICAgICAgICAgICAgIHJldHVybiAkKGdlZGFuLCAyLCAn5bCP5LiD5q2M5Y2VJykuc2VsZWN0KChnZWRhbikgPT4geyAgICAgICAgICAgICAgICAgICAgIGxldCBhID0gZ2VkYW4uZmluZEluZGV4KHQgPT4gdC50aXRsZSA9PSBpbnB1dCk7ICAgICAgICAgICAgICAgICAgICAgdmFyIGlkID0gZ2VkYW5bYV0uaWQ7ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKGlkKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZSgn5bCP5LiD5q2M5Y2VJyk7ICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkID0gW107ICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkueWFvaHVkLmNuL2FwaS9xcW11c2ljL3YyP2tleT1hVWx5a0EzNUtnbXdQVXBlaEpLTmJGam82diZ0eXBlPXNvbmdsaXN0JmlkPScgKyBpZCkpLmRhdGE7ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gaHRtbC5saXN0Lm1hcChqID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGoudGl0bGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2VyOiBqLmF1dGhvciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGJ1bTogai5hbGJ1bS5uYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogai5waWMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGoubWlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBodG1sLmluZm8udGl0bGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ/Cfp7hcXHQnICsgaHRtbC5pbmZvLmNyZWF0b3IubmljayArICdcXG5cXG7wn468XFx0JyArIGh0bWwuaW5mby5zb25nbnVtICsgJ+mmlicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6IGh0bWwuaW5mby5waWN1cmwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJycsICfmm7LlkI3miJbmrYzmiYsnKS5pbnB1dCgoanNvbikgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHNlYXJjaChhcnJheSwgbmFtZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXkuZmlsdGVyKGl0ZW0gPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0udGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhuYW1lLnRvTG93ZXJDYXNlKCkpIHx8IGl0ZW0uc2luZ2VyLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobmFtZS50b0xvd2VyQ2FzZSgpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0cyA9IHNlYXJjaChqc29uLCBpbnB1dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID4gMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eScpLnJ1bGUoKHJlc3VsdHMpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZSgn5pCc57Si57uT5p6cJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKGogPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqLnRpdGxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGouYWxidW0gPyBqLnNpbmdlciArICcgLS0gJyArIGouYWxidW0gOiBqLnNpbmdlciArICcgLS0gJyArIGoudGl0bGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogai5waWMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaikgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3hpYW9hcGkuY24vQVBJL3l5X3NxLnBocD90eXBlPWpzb24mbj0xJm1zZz0nICsgai50aXRsZSkpLnVybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gW2pzICsgJyNpc011c2ljPXRydWUjJ107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnlhb2h1ZC5jbi9hcGkvbXVzaWMvbHJjP2tleT1hVWx5a0EzNUtnbXdQVXBlaEpLTmJGam82diZ0eXBlPXFxJm1pZD0nICsgai5pZCkpLmRhdGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8veGlhb2FwaS5jbi9BUEkvbXZfc3EucGhwP249MSZtc2c9JyArIGoudGl0bGUsIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMjAwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS51cmw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtqc29uWzNdIHx8IGpzb25bMl0gfHwganNvblsxXSB8fCBqc29uWzBdXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsczogdXJsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx5cmljOiBscmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGopLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdFRpdGxlOiBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgcmVzdWx0cykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5rKh5pyJ5om+5YiwJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGpzb24pLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn8J+ToOWkjeWItuWbvueJh+mTvuaOpScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChodG1sKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2NvcHk6Ly8nICsgaHRtbC5pbmZvLnBpY3VybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaHRtbCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24ubWFwKGogPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogai50aXRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogai5hbGJ1bSA/IGouc2luZ2VyICsgJyAtLSAnICsgai5hbGJ1bSA6IGouc2luZ2VyICsgJyAtLSAnICsgai50aXRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBqLnBpYyArICdAUmVmZXJlcj0nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykubGF6eVJ1bGUoKGopID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8veGlhb2FwaS5jbi9BUEkveXlfc3EucGhwP3R5cGU9anNvbiZuPTEmbXNnPScgKyBqLnRpdGxlKSkudXJsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtqcyArICcjaXNNdXNpYz10cnVlIyddOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnlhb2h1ZC5jbi9hcGkvbXVzaWMvbHJjP2tleT1hVWx5a0EzNUtnbXdQVXBlaEpLTmJGam82diZ0eXBlPXFxJm1pZD0nICsgai5pZCkpLmRhdGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly94aWFvYXBpLmNuL0FQSS9tdl9zcS5waHA/bj0xJm1zZz0nICsgai50aXRsZSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDIwMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS51cmw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gW2pzb25bM10gfHwganNvblsyXSB8fCBqc29uWzFdIHx8IGpzb25bMF1dOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxzOiB1cmwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBseXJpYzogbHJjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaiksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdFRpdGxlOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkuIvovb3mrYzmm7InLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGopID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly94aWFvYXBpLmNuL0FQSS95eV9zcS5waHA/dHlwZT1qc29uJm49MSZtc2c9JyArIGoudGl0bGUpKS51cmw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkb3dubG9hZDovLycgKyB1cmwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn6KeC55yLTVYnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGopID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8veGlhb2FwaS5jbi9BUEkvbXZfc3EucGhwP249MSZtc2c9JyArIGoudGl0bGUsIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDIwMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLnVybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtqc29uWzNdIHx8IGpzb25bMl0gfHwganNvblsxXSB8fCBqc29uWzBdXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuY2VuZ3VpZ3VpLmNuL2FwaS9qdWhlL2FwaS5waHA/dHlwZT1rZ212Jm49MSZtc2c9JyArIGoudGl0bGUsIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDIwMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmRhdGEudXJsXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsczogdXJsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBqKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgICAgICAgICB9LCBpZCkgICAgICAgICAgICAgICAgIH0sIGdlZGFuKSAgICAgICAgICAgICB9KSwgICAgICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZSwgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3sgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ/Cfkp4g6I635Y+W5q2M5Y2VJywgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCcnLCAn4p2X77iP5q2M5Y2V5aaC5p6c5pyJ5paw5aKe77yM5YiZ6ZyA6KaB6YeN5paw6I635Y+WXFxuXFxuUVHotKblj7fojrflj5bmrYzljZUnKS5pbnB1dCgoKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmNlbmd1aWd1aS5jbi9hcGkvbXVzaWMvcXEvdXNlcl9saXN0LnBocD9xcT0nICsgaW5wdXQpKS5teXBsYXlsaXN0Lm1hcChqID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogai5uYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBqLnBpYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGouaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZWRhbiA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uJykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VkYW4gPSBnZWRhbi5jb25jYXQoanNvbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uJywgSlNPTi5zdHJpbmdpZnkoZ2VkYW4pKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7Lmt7vliqAnICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ/CflLAg5q2M5Y2V566h55CGJywgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCfmrYzljZXnrqHnkIYnKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkID0gW107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5o+Q5Y+WaWQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfor7fovpPlhaXliIbkuqvlkI7lpI3liLbnmoTpk77mjqUnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJC50b1N0cmluZygoKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5wdXQpIHJldHVybiBcInRvYXN0Oi8v5LiN6IO95Li656m6XCI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0eHQgPSBpbnB1dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHUxID0gdHh0LnNwbGl0KCcmJylbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpZCA9IHUxLnNwbGl0KCc9Jyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weShpZFsxXSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LlpI3liLYnICsgaWRbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+a3u+WKoCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+aYvuekuuWQjeensEDlm77niYfpk77mjqVAUVHpn7PkuZBpZCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnB1dCkgcmV0dXJuIFwidG9hc3Q6Ly/or7fmoLnmja7mj5DnpLrovpPlhaXlhoXlrrlcIjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdlZGFuID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb24nKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuID0gaW5wdXQuc3BsaXQoJ0AnKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBuWzBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogblsxXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBuWzJdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuID0gZ2VkYW4uY29uY2F0KGRhdGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uJywgSlNPTi5zdHJpbmdpZnkoZ2VkYW4pKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5re75YqgJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+atjOWNleWbvueJh+mTvuaOpeWPr+S7peWcqOatjOWNleS6jOe6p+a1t+aKpemVv+aMieWkjeWItu+8jOaJgOS7peWPr+S7peWFiOa3u+WKoOatjOWNleWGjee8lui+kea3u+WKoOatjOWNleWbvueJh++8jOaIluiAheiHquW3semAieS4gOW8oOWbvuS9nOS4uuWwgemdouOAgicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdlZGFuID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb24nKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VkYW4ubWFwKGogPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0gai50aXRsZSArICdAJyArIGouaWNvbiArICdAJyArIGouaWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGluZGV4ICsgJy4nICsgai50aXRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdjYXJkX3BpY18zJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiBqLmljb24sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChbJ+e8lui+kScsICfnp7vkvY0nLCAn5Yig6ZmkJ10sIDMsICfor7fpgInmi6knKS5zZWxlY3QoKGluZGV4LCBpdGVtKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gJ+e8lui+kScpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChpdGVtLCAn5oOz6KaB5pu05o2i55qE5q2M5Y2V5ZCNLOatjOWNlWlkLOWbvueJh+mTvuaOpSAnKS5pbnB1dCgoaW5kZXgpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdlZGFuID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb24nKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuID0gaW5wdXQuc3BsaXQoJ0AnKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VkYW5baW5kZXhdID0geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG5bMF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBuWzFdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG5bMl0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvbicsIEpTT04uc3RyaW5naWZ5KGdlZGFuKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+abtOaUueaIkOWKn34nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaW5kZXgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09ICfnp7vkvY0nKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoJycsICfopoHnp7vliqjliLDlk6rkuKrluo/lj7fliY3pnaIv5ZCO6Z2iJykuaW5wdXQoKGluZGV4KSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBnZWRhbiA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uJykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcCA9IGdlZGFuW2luZGV4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VkYW4uc3BsaWNlKGlucHV0LCAwLCB0ZW1wKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0IDwgaW5kZXgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuLnNwbGljZShpbmRleCArIDEsIDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VkYW4uc3BsaWNlKGluZGV4LCAxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uJywgSlNPTi5zdHJpbmdpZnkoZ2VkYW4pKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v56e75L2N5oiQ5YqfficgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpbmRleCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdlZGFuID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb24nKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VkYW4uc3BsaWNlKGluZGV4LCAxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uJywgSlNPTi5zdHJpbmdpZnkoZ2VkYW4pKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+WIoOmZpOaIkOWKn34nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGluZGV4LCBpdGVtKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7ICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KZu++4jyDmgaLlpI3pu5jorqQnLCAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uJyk7ICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suaBouWkjem7mOiupCcgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICAgfV0sICAgICAgICAgICAgIH0gICAgICAgICB9LCB7ICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZ5bCP5LiDPHNtYWxsPiDmppzljZU8L3NtYWxsPicsICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl8zX3JvdW5kX2ZpbGwnLCAgICAgICAgICAgICBwaWM6ICdoaWtlcjovL2ZpbGVzL3pmL2N5L3poYW4ucG5nJywgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgICAgICAgICAgICAgIGxldCB0b3BsaXN0ID0gSlNPTi5wYXJzZShmYygnaHR0cHM6Ly9hcGkueWFvaHVkLmNuL2FwaS9xcW11c2ljL3YyP2tleT1hVWx5a0EzNUtnbXdQVXBlaEpLTmJGam82diZ0eXBlPXRvcGdyb3VwJywgMjQpKS5kYXRhLm1hcChsaSA9PiB7ICAgICAgICAgICAgICAgICAgICAgbGV0IGwgPSBsaS50b3BsaXN0Lm1hcChkID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBkLnRpdGxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogZC5oZWFkUGljVXJsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkOiBkLnRvcElkICsgJz0nICsgZC5wZXJpb2QgICAgICAgICAgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbDsgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgbGV0IGdlZGFuID0gW107ICAgICAgICAgICAgICAgICB0b3BsaXN0LmZvckVhY2gobGlzdCA9PiB7ICAgICAgICAgICAgICAgICAgICAgZ2VkYW4gPSBnZWRhbi5jb25jYXQobGlzdCk7ICAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gZ2VkYW4uZmluZEluZGV4KGl0ZW0gPT4gaXRlbS50aXRsZSA9PT0gXCJNVuamnFwiKTsgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7ICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuLnNwbGljZShpbmRleCwgMSk7ICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICByZXR1cm4gJChnZWRhbiwgMiwgJ+Wwj+S4g+aOkuihjOamnCcpLnNlbGVjdCgoZ2VkYW4pID0+IHsgICAgICAgICAgICAgICAgICAgICBsZXQgYSA9IGdlZGFuLmZpbmRJbmRleCh0ID0+IHQudGl0bGUgPT0gaW5wdXQpOyAgICAgICAgICAgICAgICAgICAgIGxldCB0aWQgPSBnZWRhblthXS50aWQ7ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKHRpZCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdOyAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJ+Wwj+S4g+amnOWNlScpOyAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPSB0aWQuc3BsaXQoJz0nKTsgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGh0bWwgPSBKU09OLnBhcnNlKGZjKCdodHRwczovL2FwaS55YW9odWQuY24vYXBpL3FxbXVzaWMvdjI/a2V5PWFVbHlrQTM1S2dtd1BVcGVoSktOYkZqbzZ2JnR5cGU9dG9wbGlzdCZwZXJpb2Q9JyArIGlkWzFdICsgJyZ0b3BpZD0nICsgaWRbMF0sIDI0KSkuZGF0YTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbGV0IGpzb24gPSBodG1sLmxpc3QubWFwKGogPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFsYnVtID0gai5hbGJ1bS5tYXAobiA9PiBuLnRpdGxlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGoudGl0bGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2VyOiBqLmF1dGhvciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGJ1bTogYWxidW0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiBqLnBpYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogai5taWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkOiBqLnZpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ki8gICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGpzb24gPSBodG1sLmluZm8uc29uZy5tYXAoaiA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqLnRpdGxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdlcjogai5zaW5nZXJOYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsYnVtOiAnJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW50cm8gPSBodG1sLmluZm8uaW50cm8ucmVwbGFjZSgvPGJyXFxzKlxcLz8+L2dpLCAnJyk7ICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW50cm8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ/Cfp7hcXHQnICsgaHRtbC5pbmZvLnRpdGxlU2hhcmUgKyAnXFxuXFxu8J+OvFxcdCcgKyBodG1sLmluZm8udG90YWxOdW0gKyAn6aaWJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogaHRtbC5pbmZvLmhlYWRQaWNVcmwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JywgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24ubWFwKGogPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogai50aXRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogai5hbGJ1bSA/IGouc2luZ2VyICsgJyAtLSAnICsgai5hbGJ1bSA6IGouc2luZ2VyICsgJyAtLSAnICsgai50aXRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBqLnBpYyArICdAUmVmZXJlcj0nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykubGF6eVJ1bGUoKGopID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8veGlhb2FwaS5jbi9BUEkveXlfc3EucGhwP3R5cGU9anNvbiZuPTEmbXNnPScgKyBqLnRpdGxlKSkudXJsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtqcyArICcjaXNNdXNpYz10cnVlIyddOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9ICcnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8veGlhb2FwaS5jbi9BUEkvbXZfc3EucGhwP249MSZtc2c9JyArIGoudGl0bGUsIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiAyMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkudXJsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtqc29uWzNdIHx8IGpzb25bMl0gfHwganNvblsxXSB8fCBqc29uWzBdXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsczogdXJsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHlyaWM6IGxyYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGopLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRUaXRsZTogZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5LiL6L295q2M5puyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8veGlhb2FwaS5jbi9BUEkveXlfc3EucGhwP3R5cGU9anNvbiZuPTEmbXNnPScgKyBqLnRpdGxlKSkudXJsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9ICcnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Rvd25sb2FkOi8vJyArIHVybCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfop4LnnItNVicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoaikgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly94aWFvYXBpLmNuL0FQSS9tdl9zcS5waHA/bj0xJm1zZz0nICsgai50aXRsZSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMjAwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkudXJsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gW2pzb25bM10gfHwganNvblsyXSB8fCBqc29uWzFdIHx8IGpzb25bMF1dOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5jZW5ndWlndWkuY24vYXBpL2p1aGUvYXBpLnBocD90eXBlPWtnbXYmbj0xJm1zZz0nICsgai50aXRsZSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMjAwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkuZGF0YS51cmxdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3ZpZGVvOi8vJyArIHVybCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7ICAgICAgICAgICAgICAgICAgICAgfSwgdGlkKSAgICAgICAgICAgICAgICAgfSwgZ2VkYW4pICAgICAgICAgICAgIH0pLCAgICAgICAgIH0pOyAvKue9keaYk+aOkuihjOamnOatjOWNlV/lvIDlp4sqLyAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZ5bCP6Iq4PHNtYWxsPiDmppzljZU8L3NtYWxsPicsICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl8zX3JvdW5kX2ZpbGwnLCAgICAgICAgICAgICBwaWM6ICdoaWtlcjovL2ZpbGVzL3pmL2N5L3poYW4ucG5nJywgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgICAgICAgICAgICAgIHZhciBnZWRhbiA9IEpTT04ucGFyc2UoZmMoJ2h0dHA6Ly9tdXNpYy4xNjMuY29tL2FwaS90b3BsaXN0JywgMjQpKS5saXN0Lm1hcChsID0+IHsgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogbC5uYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBsLmNvdmVySW1nVXJsLCAgICAgICAgICAgICAgICAgICAgICAgICBpZDogbC5pZCAgICAgICAgICAgICAgICAgICAgIH07ICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgIHJldHVybiAkKGdlZGFuLCAyLCAn5bCP6Iq45o6S6KGM5qacJykuc2VsZWN0KChnZWRhbikgPT4geyAgICAgICAgICAgICAgICAgICAgIGxldCBhID0gZ2VkYW4uZmluZEluZGV4KHQgPT4gdC50aXRsZSA9PSBpbnB1dCk7ICAgICAgICAgICAgICAgICAgICAgbGV0IGlkID0gZ2VkYW5bYV0uaWQ7ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKGlkKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkID0gW107ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZSgn5bCP6Iq45q2M5Y2VJyk7ICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cDovL211c2ljLjE2My5jb20vYXBpL3Y2L3BsYXlsaXN0L2RldGFpbD9uPTEwMDAmaWQ9JyArIGlkLCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJVc2VyLUFnZW50XCI6IFwiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMDIuMC4wLjAgU2FmYXJpLzUzNy4zNlwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29va2llXCI6IFwib3M9cGM7IE1VU0lDX1U9MDAxNzM5OTdFNTdEQzE2MTEyRDJFMTU3OUY1NTU0NDQ4MTJFNTEzM0YxNkMzNDIxM0Q5QkI1RTNFQ0VDODE4ODQ1REY4QTMzNkEzQjlENDk1RUUxODJGMzAwMUFGRUFGOUU5NzE1OTFDQ0VEQzQ3MTM4NDJGMzI5NkExRTc5REZCNzgxN0E4QzdCQjgxNTRGRjE1NDgzNjQ4RjE4NEQwRTcyRDdEMjZBNTY1RTQ0NTA3MzgwODI0OTAyQzIxNTJDQzBCQjVEQjlBMzc5RTgwRjZGMDNEMEQ5OEIyNzkzQTIwMzIzMDM0REU0QTBCQkI0NjcyRDQ4RjkzNjI5NjBFRjIxMzYxNTNEMDJFN0RGMTRDOUNFODRGMUY2NEMxNkVCMzA3QTVCQkI1ODY4NkM2MDk1MDgyQUE0NTA1ODNFNjRFQUNEM0U2QjVCRTBERkNBQ0E5MTI1RjAzNTA1N0ZFMTdCNUJEQTYxRDg5REY1QUJENzc5MDZGNUU1RDg1OEM3NERCMkUxNzhBM0IwRTYwOTVERDc1NTE4RDQ4MkRDOUQ2MTA4MEE2MUQ5Qjc2NUQ3RTk4RUJFMjMwQ0YwMTdDRDkwMjA4MzkyRDNFMTBERTk2NEE2ODEyMUI2QzY2RDA4QzkwMkE5OEVENzExM0FBRTU5RDFFNTU1OUIwNzFERTgzMTI2QjhDMjk1Qzc4MENDRDRCMEI0REUzNkUzNUMwOUFBNjM0MzU1QUVERTJGODgwOTk4NzE5Mjc3RTVFRjlDN0I5Q0FGRkM5MEUyNzlBQUEyQkFGQ0E0NEMwQTgzNTM3RDYwOUUyREFBNUQ1RDc3NDg0OEM5OEREMjg3MTE4ODk1QzFDM0Q2NTc0NDY2RjkyNjJERUNFMDcyOTJBQzE1N0MxREI3MENCNzAzOTU4QTdGRTU1MzQ0RTI3MzQyMkU2OVwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5wbGF5bGlzdDsgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGpzb24gPSBodG1sLnRyYWNrcy5tYXAoaiA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2luZ2VyID0gai5hci5tYXAobiA9PiBuLm5hbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogai5uYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdlcjogc2luZ2VyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsYnVtOiBqLnRucywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6IGouYWwucGljVXJsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBqLmlkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZDogai5tdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaHRtbC5kZXNjcmlwdGlvbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn8J+nuFxcdCcgKyBodG1sLmNyZWF0b3Iubmlja25hbWUgKyAnXFxuXFxu8J+OvFxcdCcgKyBodG1sLnRyYWNrQ291bnQgKyAn6aaWJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogaHRtbC5jb3ZlckltZ1VybCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLCAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5tYXAoaiA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqLnRpdGxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBqLmFsYnVtID8gai5zaW5nZXIgKyAnIC0tICcgKyBqLmFsYnVtIDogai5zaW5nZXIgKyAnIC0tICcgKyBqLnRpdGxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IGoucGljICsgJ0BSZWZlcmVyPScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5sYXp5UnVsZSgoaikgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly93d3cuaGhscWlsb25nemh1LmNuL2FwaS9kZ193eXltdXNpYy5waHA/YnI9NyZuPTEmbnVtPSZ0eXBlPWpzb24maWQ9JyArIGouaWQpKS5tdXNpY191cmw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9ICgnaHR0cHM6Ly9tdXNpYy4xNjMuY29tL3NvbmcvbWVkaWEvb3V0ZXIvdXJsP2lkPScgKyBqLmlkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gW2pzICsgJyNpc011c2ljPXRydWUjJ107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbHJjID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cDovL211c2ljLjE2My5jb20vYXBpL3NvbmcvbHlyaWM/b3M9cGMmbHY9LTEma3Y9LTEmdHY9LTEmaWQ9JyArIGouaWQpKS5scmMubHlyaWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHM6IHVybCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx5cmljOiBscmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBqKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0VGl0bGU6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+S4i+i9veatjOabsicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoaikgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3d3dy5oaGxxaWxvbmd6aHUuY24vYXBpL2RnX3d5eW11c2ljLnBocD9icj03Jm49MSZudW09JnR5cGU9anNvbiZpZD0nICsgai5pZCkpLm11c2ljX3VybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSAoJ2h0dHBzOi8vbXVzaWMuMTYzLmNvbS9zb25nL21lZGlhL291dGVyL3VybD9pZD0nICsgai5pZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZG93bmxvYWQ6Ly8nICsgdXJsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBqKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+ingueci01WJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGoudmlkID09ICcwJykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuY2VuZ3VpZ3VpLmNuL2FwaS9qdWhlL2FwaS5waHA/dHlwZT1rZ212Jm49MSZtc2c9JyArIGoudGl0bGUpKS5kYXRhLnVybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gJ2h0dHBzOi8vaHViLm9ubWljcm9zb2Z0LmNuL3B1YmxpYy92aWRlby9uY20/cmF3PXRydWUmdmlkPScgKyBqLnZpZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd2aWRlbzovLycgKyB1cmwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpOyAgICAgICAgICAgICAgICAgICAgIH0sIGlkKSAgICAgICAgICAgICAgICAgfSwgZ2VkYW4pICAgICAgICAgICAgIH0pLCAgICAgICAgIH0pOyAvKue9keaYk+aOkuihjOamnOatjOWNlV/nu5PmnZ8qLyAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIHRpdGxlOiBnZXRJdGVtKCdrd2dkJywgJ25ldycpID09ICduZXcnID8gJ+KAmOKAmOKAmeKAmeWwj+iOtDxzbWFsbD4g5pyA5pawPC9zbWFsbD4nIDogJ+KAmOKAmOKAmeKAmeWwj+iOtDxzbWFsbD4g5pyA54OtPC9zbWFsbD4nLCAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fM19yb3VuZF9maWxsJywgICAgICAgICAgICAgcGljOiAnaGlrZXI6Ly9maWxlcy96Zi9jeS96aGFuLnBuZycsICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7ICAgICAgICAgICAgICAgICBzZXRJdGVtKCdrd2dkJywgZ2V0SXRlbSgna3dnZCcsICduZXcnKSA9PSAnbmV3JyA/ICdob3QnIDogJ25ldycpOyAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpOyAgICAgICAgICAgICAgICAgdG9hc3QoJ+W3suWIh+aNoicgKyAoZ2V0SXRlbSgna3dnZCcsICduZXcnKSA9PSAnbmV3JyA/ICfmnIDmlrDmrYzljZUnIDogJ+acgOeDreatjOWNlScpKTsgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eScgICAgICAgICAgICAgfSksICAgICAgICAgfSwgeyAgICAgICAgICAgICB0aXRsZTogJ+aQnOe0oicsICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLCAgICAgICAgICAgICBkZXNjOiAn8J+RifCfj7sg5q2M5ZCN44CB5q2M5omL44CB5qac5Y2V5ZCN56ewJywgICAgICAgICAgICAgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHsgLyppZiAoIWlucHV0KSByZXR1cm4gXCJ0b2FzdDovL+ivt+i+k+WFpeWFs+mUruivjeaQnOe0olwiOyovICAgICAgICAgICAgICAgICBpZiAoIWlucHV0KSByZXR1cm4gJ2hpa2VyOi8vbG9jYWxNZWRpYSc7ICAgICAgICAgICAgICAgICB2YXIgdHh0ID0gaW5wdXQ7ICAgICAgICAgICAgICAgICBzZXRJdGVtKCdzc3B0X2lucHV0JywgdHh0KTsgLyrpn7PkuZDmkJzntKLlvJXmk45f5byA5aeLKi8gICAgICAgICAgICAgICAgIHJldHVybiBcInNlbGVjdDovL1wiICsgSlNPTi5zdHJpbmdpZnkoeyAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcIuWwj+S4g1wiLCBcIuWwj+iKuFwiLCBcIuWwj+iOtFwiXSwgICAgICAgICAgICAgICAgICAgICBhdHRhY2hWaWV3OiB0cnVlLCAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCh0eHQpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09ICflsI/kuIMnKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNmeXBhZ2UjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKHR4dCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZSgn5bCP5LiD5pCc57SiJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeWl5YW4gPSBKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL2ZpbGVzL0ptL3lpeWFuLmpzb24nKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1heCA9IHlpeWFuLmxlbmd0aCAtIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1pbiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG51bSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSkgKyBtaW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIERpc3BsYXkgPSB5aXlhbltudW1dOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkueWFvaHVkLmNuL2FwaS9xcW11c2ljL3YyP2tleT1hVWx5a0EzNUtnbXdQVXBlaEpLTmJGam82diZ0eXBlPXNvJnBhZ2U9JyArIE1ZX1BBR0UgKyAnJnBlcl9wYWdlPTMwJndvcmQ9JyArIHR4dCkpLmRhdGEubGlzdC5tYXAoaiA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogai50aXRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdlcjogai5hdXRob3IsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6IGoucGljLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxidW06IGouYWxidW0ubmFtZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBqLm1pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNWV9QQUdFID09IDEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn8J+UjlxcdCcgKyB0eHQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ/Cfp7hcXHTlsI/kuIPpn7PkuZBcXG5cXG7wn46oXFx0JyArIERpc3BsYXkucmVwbGFjZSgv77yMfOOAgi9nLCAnICcpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiBqc29uWzBdLnBpYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5mb3JFYWNoKGogPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGoudGl0bGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBqLmFsYnVtID8gai5zaW5nZXIgKyAnIC0tICcgKyBqLmFsYnVtIDogai5zaW5nZXIgKyAnIC0tICcgKyBqLnRpdGxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogai5waWMgKyAnQFJlZmVyZXI9JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykubGF6eVJ1bGUoKGopID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3hpYW9hcGkuY24vQVBJL3l5X3NxLnBocD90eXBlPWpzb24mbj0xJm1zZz0nICsgai50aXRsZSkpLnVybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtqcyArICcjaXNNdXNpYz10cnVlIyddOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbHJjID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkueWFvaHVkLmNuL2FwaS9tdXNpYy9scmM/a2V5PWFVbHlrQTM1S2dtd1BVcGVoSktOYkZqbzZ2JnR5cGU9cXEmbWlkPScgKyBqLmlkKSkuZGF0YTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3hpYW9hcGkuY24vQVBJL212X3NxLnBocD9uPTEmbXNnPScgKyBqLnRpdGxlLCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiAyMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS51cmw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbanNvblszXSB8fCBqc29uWzJdIHx8IGpzb25bMV0gfHwganNvblswXV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHM6IHVybCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHlyaWM6IGxyYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBqKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdFRpdGxlOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5LiL6L295q2M5puyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGopID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3hpYW9hcGkuY24vQVBJL3l5X3NxLnBocD90eXBlPWpzb24mbj0xJm1zZz0nICsgai50aXRsZSkpLnVybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZG93bmxvYWQ6Ly8nICsgdXJsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+ingueci01WJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGopID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3hpYW9hcGkuY24vQVBJL212X3NxLnBocD9uPTEmbXNnPScgKyBqLnRpdGxlLCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDIwMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkudXJsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbanNvblszXSB8fCBqc29uWzJdIHx8IGpzb25bMV0gfHwganNvblswXV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5jZW5ndWlndWkuY24vYXBpL2p1aGUvYXBpLnBocD90eXBlPWtnbXYmbj0xJm1zZz0nICsgai50aXRsZSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiAyMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmRhdGEudXJsXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsczogdXJsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdHh0KSAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09ICflsI/oirgnKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNpbW1lcnNpdmVUaGVtZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgodHh0KSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCflsI/oirjmkJzntKInKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB5aXlhbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvSm0veWl5YW4uanNvbicpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF4ID0geWl5YW4ubGVuZ3RoIC0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWluID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbnVtID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpKSArIG1pbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgRGlzcGxheSA9IHlpeWFuW251bV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwOi8vbXVzaWMuMTYzLmNvbS9hcGkvc2VhcmNoL2dldC93ZWI/dHlwZT0xJm9mZnNldD0wJmxpbWl0PTkwJnM9JyArIHR4dCkpLnJlc3VsdC5zb25ncy5tYXAoaiA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzaW5nZXIgPSBqLmFydGlzdHMubWFwKHMgPT4gcy5uYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqLm5hbWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nZXI6IHNpbmdlclswXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vd2FuZ2h1bi50b3AvcXFtdXNpYy93eW11c2ljLnBocD90eXBlPXBpYyZpZD0nICsgai5pZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsYnVtOiBqLmFsYnVtLm5hbWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogai5pZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZDogai5tdmlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfwn5SOXFx0JyArIHR4dCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn8J+nuFxcdOWwj+iKuOmfs+S5kFxcblxcbvCfjqhcXHQnICsgRGlzcGxheS5yZXBsYWNlKC/vvIx844CCL2csICcgJyksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6IGpzb25bMF0ucGljLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLm1hcChqID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqLnRpdGxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogai5waWMgKyAnQFJlZmVyZXI9JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGouYWxidW0gPyBqLnNpbmdlciArICcgLS0gJyArIGouYWxidW0gOiBqLnNpbmdlciArICcgLS0gJyArIGoudGl0bGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLmxhenlSdWxlKChqKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly93d3cuaGhscWlsb25nemh1LmNuL2FwaS9kZ193eXltdXNpYy5waHA/YnI9NyZuPTEmbnVtPSZ0eXBlPWpzb24maWQ9JyArIGouaWQpKS5tdXNpY191cmw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganMgPSAoJ2h0dHBzOi8vbXVzaWMuMTYzLmNvbS9zb25nL21lZGlhL291dGVyL3VybD9pZD0nICsgai5pZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbanMgKyAnI2lzTXVzaWM9dHJ1ZSMnXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbHJjID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cDovL211c2ljLjE2My5jb20vYXBpL3NvbmcvbHlyaWM/b3M9cGMmbHY9LTEma3Y9LTEmdHY9LTEmaWQ9JyArIGouaWQpKS5scmMubHlyaWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHM6IHVybCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHlyaWM6IGxyYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBqKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdFRpdGxlOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5LiL6L295q2M5puyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGopID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vd3d3LmhobHFpbG9uZ3podS5jbi9hcGkvZGdfd3l5bXVzaWMucGhwP2JyPTcmbj0xJm51bT0mdHlwZT1qc29uJmlkPScgKyBqLmlkKSkubXVzaWNfdXJsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSAoJ2h0dHBzOi8vbXVzaWMuMTYzLmNvbS9zb25nL21lZGlhL291dGVyL3VybD9pZD0nICsgai5pZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Rvd25sb2FkOi8vJyArIHVybCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBqKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfop4LnnItNVicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoai52aWQgPT0gJzAnKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmNlbmd1aWd1aS5jbi9hcGkvanVoZS9hcGkucGhwP3R5cGU9a2dtdiZuPTEmbXNnPScgKyBqLnRpdGxlKSkuZGF0YS51cmw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSAnaHR0cHM6Ly9odWIub25taWNyb3NvZnQuY24vcHVibGljL3ZpZGVvL25jbT9yYXc9dHJ1ZSZ2aWQ9JyArIGoudmlkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd2aWRlbzovLycgKyB1cmwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdHh0KSAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjZnlwYWdlI2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCh0eHQpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJ+Wwj+iOtOaQnOe0oicpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkID0gW107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHlpeWFuID0gSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9maWxlcy9KbS95aXlhbi5qc29uJykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXggPSB5aXlhbi5sZW5ndGggLSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtaW4gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBudW0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkpICsgbWluOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBEaXNwbGF5ID0geWl5YW5bbnVtXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vc2VhcmNoLmt1d28uY24vci5zP2NsaWVudD1rdCZwbj0nICsgKE1ZX1BBR0UgLSAxKSArICcmcm49MzAmdmlwdmVyPTEmZnQ9bXVzaWMmZW5jb2Rpbmc9dXRmOCZyZm9ybWF0PWpzb24mbW9iaT0xJmFsbD0nICsgdHh0KSkuYWJzbGlzdC5tYXAoaiA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbWcgPSAoJ2h0dHA6Ly9pbWcxLmt3Y2RuLmt1d28uY24vc3Rhci9hbGJ1bWNvdmVyLzUwMCcgKyBqLndlYl9hbGJ1bXBpY19zaG9ydC5zcGxpdCgnMTIwJylbMV0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGouU09OR05BTUUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nZXI6IGouQVJUSVNULCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiBpbWcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGJ1bTogai5BTEJVTSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZDogai5EQ19UQVJHRVRJRCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZDogai5tdnBheWluZm8udmlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfwn5SOXFx0JyArIHR4dCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzoganNvblswXS5waWMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ/Cfp7hcXHTlsI/ojrTpn7PkuZBcXG5cXG7wn46oXFx0JyArIERpc3BsYXkucmVwbGFjZSgv77yMfOOAgi9nLCAnICcpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLm1hcChqID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqLnRpdGxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiBqLnBpYyArICdAUmVmZXJlcj0nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogai5hbGJ1bSA/IGouc2luZ2VyICsgJyAtLSAnICsgai5hbGJ1bSA6IGouc2luZ2VyICsgJyAtLSAnICsgai50aXRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykubGF6eVJ1bGUoKGopID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3d3dy5oaGxxaWxvbmd6aHUuY24vYXBpL2RnX2t1d29tdXNpYy5waHA/bj0xJnR5cGU9anNvbiZtc2c9JyArIGoudGl0bGUpKS5mbGFjX3VybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vb2lhcGkubmV0L0FQSS9LdXdvLz9uPTEmYnI9MSZtc2c9JyArIGoudGl0bGUpKS5kYXRhLnVybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IFtqcyArICcjaXNNdXNpYz10cnVlIyddOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBscmMgPSBKU09OLnBhcnNlKGZldGNoKFwiaHR0cHM6Ly9tLmt1d28uY24vbmV3aDUvc2luZ2xlcy9zb25naW5mb2FuZGxyYz9tdXNpY0lkPVwiICsgai5yaWQpKS5kYXRhLmxyY2xpc3QubWFwKGQgPT4ge+KAi+KAiyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSAoZC50aW1lICUgNjApLnRvRml4ZWQoMikucGFkU3RhcnQoNSwgJzAnKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtID0gKChkLnRpbWUgLSBzKSAvIDYwKS50b0ZpeGVkKDApLnBhZFN0YXJ0KDIsICcwJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1snICsgbSArICc6JyArIHMgKyAnXScgKyBkLmxpbmVMeXJpY+KAiyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5qb2luKCdcXG4nKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHt9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsczogdXJsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBseXJpYzogbHJjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGopLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0VGl0bGU6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkuIvovb3mrYzmm7InLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoaikgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly93d3cuaGhscWlsb25nemh1LmNuL2FwaS9kZ19rdXdvbXVzaWMucGhwP249MSZ0eXBlPWpzb24mbXNnPScgKyBqLnRpdGxlKSkuZmxhY191cmw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vb2lhcGkubmV0L0FQSS9LdXdvLz9uPTEmYnI9MSZtc2c9JyArIGoudGl0bGUpKS5kYXRhLnVybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZG93bmxvYWQ6Ly8nICsgdXJsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+ingueci01WJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGopID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqLnZpZCA9PSAnMCcpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuc3V5YW53LmNuL2FwaS9rZ19tdi5waHA/bj0xJm1zZz0nICsgai50aXRsZSkpLmRhdGEudXJsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IGZldGNoKCdodHRwczovL2FueW1hdGNoLmt1d28uY24vbW9iaS5zP2Y9d2ViJnVzZXI9NmYxNzNjZjlhMmE5ZGE0YyZzb3VyY2U9a3dwbGF5ZXJfYXJfMTAuOC4yLjJfMTM4LmFwayZ0eXBlPWdldF91cmxfYnlfdmlkJnF1YWxpdHk9TVA0SFYmcDJwaWQ9MSZ2aWQ9JyArIGoudmlkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYSA9IGh0bWwuc3BsaXQoJz0nKVszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYiA9IGEuc3BsaXQoJz8nKVswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gYjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndmlkZW86Ly8nICsgdXJsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHR4dCkgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgIH0sIHR4dCkgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgIH0pLCAgICAgICAgICAgICBleHRyYTogeyAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRJdGVtKCdzc3B0X2lucHV0JywgJycpLCAgICAgICAgICAgICAgICAgb25DaGFuZ2U6ICdzZXRJdGVtKFwic3NwdF9pbnB1dFwiLGlucHV0KScgICAgICAgICAgICAgfSAgICAgICAgIH0pOyAvKumfs+S5kOaQnOe0ouW8leaTjl/nu5PmnZ8qLyAgICAgfSAvKuWbuuWumue/u+mhtTHnu5PmnZ8qLyAvKumFt+aIkemfs+S5kOatjOWNlV/lvIDlp4sqLyAgICAgbGV0IGt3Z2QgPSBnZXRJdGVtKCdrd2dkJywgJ25ldycpOyAgICAgbGV0IGh0bWwgPSAoJ2h0dHA6Ly93YXBpLmt1d28uY24vYXBpL3BjL2NsYXNzaWZ5L3BsYXlsaXN0L2dldFJjbVBsYXlMaXN0P2xvZ2luVWlkPTAmbG9naW5TaWQ9MCZhcHBVaWQ9NzYwMzk1NzYmJnBuPScgKyBNWV9QQUdFICsgJyZybj0zNiZvcmRlcj0nICsga3dnZCk7ICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goaHRtbCkpLmRhdGE7ICAgICBqc29uLmRhdGEubWFwKGRhdGEgPT4geyAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIHRpdGxlOiBkYXRhLm5hbWUsICAgICAgICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMycsICAgICAgICAgICAgIHBpYzogZGF0YS5pbWcsICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNmeXBhZ2UjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKGRhdGEpID0+IHsgICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZSgn5bCP6I605q2M5Y2VJyk7ICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdOyAgICAgICAgICAgICAgICAgbGV0IGh0bWwgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL20ua3V3by5jbi9uZXdoNWFwcC93YXBpL2FwaS93d3cvcGxheWxpc3QvcGxheUxpc3RJbmZvP3BpZD0nICsgZGF0YS5pZCArICcmcm49MzAmdWE9JmlwPSZwbj0nICsgTVlfUEFHRSkpLmRhdGE7ICAgICAgICAgICAgICAgICB2YXIganNvbiA9IGh0bWwubXVzaWNMaXN0Lm1hcChqID0+IHsgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogai5uYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nZXI6IGouYXJ0aXN0LCAgICAgICAgICAgICAgICAgICAgICAgICBhbGJ1bTogai5hbGJ1bSwgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiBqLnBpYywgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGoucmlkLCAgICAgICAgICAgICAgICAgICAgICAgICB2aWQ6IGoubXZwYXlpbmZvLnZpZCwgICAgICAgICAgICAgICAgICAgICAgICAgdGltZTogai5zb25nVGltZU1pbnV0ZXMgICAgICAgICAgICAgICAgICAgICB9OyAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7ICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGh0bWwubmFtZSwgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJywgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiBodG1sLmltZzcwMCB8fCBodG1sLnVQaWMsICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfwn6e4XFx0JyArIGh0bWwudXNlck5hbWUgKyAnXFxuXFxu8J+OvFxcdCcgKyBkYXRhLnRvdGFsICsgJ+mmlicsICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLCAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAganNvbi5tYXAoaiA9PiB7ICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGoudGl0bGUsICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJywgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogai5hbGJ1bSA/IGouc2luZ2VyICsgJyAtLSAnICsgai5hbGJ1bSA6IGouc2luZ2VyICsgJyAtLSAnICsgai50aXRsZSwgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiBqLnBpYyArICdAUmVmZXJlcj0nLCAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLmxhenlSdWxlKChqKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vd3d3LmhobHFpbG9uZ3podS5jbi9hcGkvZGdfa3V3b211c2ljLnBocD9uPTEmdHlwZT1qc29uJm1zZz0nICsgai50aXRsZSkpLmZsYWNfdXJsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vb2lhcGkubmV0L0FQSS9LdXdvLz9uPTEmYnI9MSZtc2c9JyArIGoudGl0bGUpKS5kYXRhLnVybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBbanMgKyAnI2lzTXVzaWM9dHJ1ZSMnXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IEpTT04ucGFyc2UoZmV0Y2goXCJodHRwczovL20ua3V3by5jbi9uZXdoNS9zaW5nbGVzL3NvbmdpbmZvYW5kbHJjP211c2ljSWQ9XCIgKyBqLmlkKSkuZGF0YS5scmNsaXN0Lm1hcChkID0+IHvigIvigIsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSAoZC50aW1lICUgNjApLnRvRml4ZWQoMikucGFkU3RhcnQoNSwgJzAnKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG0gPSAoKGQudGltZSAtIHMpIC8gNjApLnRvRml4ZWQoMCkucGFkU3RhcnQoMiwgJzAnKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbJyArIG0gKyAnOicgKyBzICsgJ10nICsgZC5saW5lTHlyaWPigIsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5qb2luKCdcXG4nKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsczogdXJsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx5cmljOiBscmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGopLCAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdFRpdGxlOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+S4i+i9veatjOabsicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGopID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3d3dy5oaGxxaWxvbmd6aHUuY24vYXBpL2RnX2t1d29tdXNpYy5waHA/bj0xJnR5cGU9anNvbiZtc2c9JyArIGoudGl0bGUpKS5mbGFjX3VybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vb2lhcGkubmV0L0FQSS9LdXdvLz9uPTEmYnI9MSZtc2c9JyArIGoudGl0bGUpKS5kYXRhLnVybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Rvd25sb2FkOi8vJyArIHVybCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGopICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfop4LnnItNVicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGopID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGoudmlkID09ICcwJykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnN1eWFudy5jbi9hcGkva2dfbXYucGhwP249MSZtc2c9JyArIGoudGl0bGUpKS5kYXRhLnVybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0gZmV0Y2goJ2h0dHBzOi8vYW55bWF0Y2gua3V3by5jbi9tb2JpLnM/Zj13ZWImdXNlcj02ZjE3M2NmOWEyYTlkYTRjJnNvdXJjZT1rd3BsYXllcl9hcl8xMC44LjIuMl8xMzguYXBrJnR5cGU9Z2V0X3VybF9ieV92aWQmcXVhbGl0eT1NUDRIViZwMnBpZD0xJnZpZD0nICsgai52aWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGEgPSBodG1sLnNwbGl0KCc9JylbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYiA9IGEuc3BsaXQoJz8nKVswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndmlkZW86Ly8nICsgdXJsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLCAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgfSwgZGF0YSksICAgICAgICAgfSk7ICAgICB9KTsgLyrphbfmiJHpn7PkuZDmrYzljZVf57uT5p2fKi8gICAgIHNldFJlc3VsdChkKTsgfSnigIsiLCJpY29uIjoiaGlrZXI6Ly9maWxlcy96Zi9jeS/pn7PkuZAucG5nIiwiZGVzYyI6IiIsInR5cGUiOiJpY29uXzQifSx7InN0YXR1cyI6ZmFsc2UsInBhdHRlcm4iOjAsIm5hbWUiOiLpn7PkuZAxIiwidGl0bGUiOiLpn7PkuZAiLCJ1cmwiOiJAanM6ICQoJ2hpa2VyOi8vZW1wdHkjZnlwYWdlI2Z1bGxUaGVtZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICB2YXIgZCA9IFtdOyAgICAgaWYgKE1ZX1BBR0UgPT0gMSkgeyAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIHRpdGxlOiAn54ix5ZCs6Z+z5LmQJywgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLCAgICAgICAgICAgICBkZXNjOiAnemZoaWtlcicsICAgICAgICAgICAgIHBpYzogJ2hpa2VyOi8vZmlsZXMvemYwMS9pbWcvcXHpn7PkuZAucG5nJywgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsICAgICAgICAgfSwgeyAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnLCAgICAgICAgIH0sIHsgICAgICAgICAgICAgdGl0bGU6ICfotbDkvaAnLCAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JywgICAgICAgICAgICAgZGVzYzogJ/CfkYnwn4+7IOatjOWQjeOAgeatjOaJi+OAgeamnOWNleWQjeensCcsICAgICAgICAgICAgIHVybDogJC50b1N0cmluZygoKSA9PiB7ICAgICAgICAgICAgICAgICBpZiAoIWlucHV0KSByZXR1cm4gXCJ0b2FzdDovL+ivt+i+k+WFpeWFs+mUruivjeaQnOe0olwiOyAgICAgICAgICAgICAgICAgdmFyIHR4dCA9IGlucHV0OyAgICAgICAgICAgICAgICAgc2V0SXRlbSgnc3NwdF9pbnB1dCcsIHR4dCk7IC8q6Z+z5LmQ5pCc57Si5byV5pOOX+W8gOWniyovICAgICAgICAgICAgICAgICByZXR1cm4gJChbJ+Wwj+S4gycsICflsI/kupEnLCAn5bCP6I60J10sIDMsICfor7fpgInmi6nlvJXmk47mkJzntKInKS5zZWxlY3QoKHR4dCkgPT4geyAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSAn5bCP5LiDJykgeyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNmeXBhZ2UjZnVsbFRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCh0eHQpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZSgnJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IFtdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS55YW9odWQuY24vYXBpL3FxbXVzaWMvdjI/a2V5PWFVbHlrQTM1S2dtd1BVcGVoSktOYkZqbzZ2JnR5cGU9c28mcGFnZT0nICsgTVlfUEFHRSArICcmcGVyX3BhZ2U9MzAmd29yZD0nICsgdHh0KSkuZGF0YTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNWV9QQUdFID09IDEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+Wwj+S4g+mfs+S5kCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzoganNvbi5tZXRhLnF1ZXJ5ICsgJ+KAoicgKyBqc29uLm1ldGEuZXN0aW1hdGVfc3VtICsgJ+mmlicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2hpa2VyOi8vZmlsZXMvemYwMS9pbWcvcXHpn7PkuZAucG5nJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5saXN0Lm1hcChodG1sID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWlkID0gaHRtbC5taWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBodG1sLnRpdGxlICsgJyAnICsgaHRtbC5hdXRob3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGh0bWwudGl0bGUgKyAn4oCiJyArIGh0bWwuYXV0aG9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzNfbWFycXVlZScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IGh0bWwucGljICsgJ0BSZWZlcmVyPScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykubGF6eVJ1bGUoKG1pZCwgdCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL29pYXBpLm5ldC9BUEkvUVFfTXVzaWMvP2JyPTEmbWlkPScgKyBtaWQpKS51cmw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vcXRrai5sb3ZlL2FwaS95eS5waHA/dHlwZT1qc29uJm49MSZtc2c9JyArIHQpKS51cmw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbanMgKyAnI2lzTXVzaWM9dHJ1ZSMnXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gdC5zcGxpdCgnICcpWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly94aWFvYXBpLmNuL0FQSS9tdl9zcS5waHA/bj0xJm1zZz0nICsgbmFtZSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMTUwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkudXJsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IFtKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5jZW5ndWlndWkuY24vYXBpL2p1aGUvYXBpLnBocD90eXBlPWtnbXYmbj0xJm1zZz0nICsgdCwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMTUwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkuZGF0YS51cmxdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0ganNvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnlhb2h1ZC5jbi9hcGkvbXVzaWMvbHJjP2tleT1hVWx5a0EzNUtnbXdQVXBlaEpLTmJGam82diZ0eXBlPXFxJm1pZD0nICsgbWlkKSkuZGF0YTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBscmMgPSAn5q2M6K+N6I635Y+W5aSx6LSlJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsczogdXJsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx5cmljOiBscmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG1pZCwgdCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkuIvovb3mrYzmm7InLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChtaWQsIHQpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9vaWFwaS5uZXQvQVBJL1FRX011c2ljLz9icj0xJm1pZD0nICsgbWlkKSkuZGF0YS5tdXNpYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vcXRrai5sb3ZlL2FwaS95eS5waHA/dHlwZT1qc29uJm49MSZtc2c9JyArIHQpKS5tdXNpY191cmw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkb3dubG9hZDovLycgKyBqc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbWlkLCB0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn6KeC55yLTVYnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCh0KSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gdC5zcGxpdCgnICcpWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3hpYW9hcGkuY24vQVBJL212X3NxLnBocD9uPTEmbXNnPScgKyBuYW1lLCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMTUwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLnVybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IFtKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5jZW5ndWlndWkuY24vYXBpL2p1aGUvYXBpLnBocD90eXBlPWtnbXYmbj0xJm1zZz0nICsgdCwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDE1MDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5kYXRhLnVybF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGpzb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxzOiB1cmwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdHh0KSAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gJ+Wwj+S6kScpIHsgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjZnVsbFRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCh0eHQpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZSgnJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IFtdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwOi8vbXVzaWMuMTYzLmNvbS9hcGkvc2VhcmNoL2dldC93ZWI/dHlwZT0xJm9mZnNldD0wJmxpbWl0PTEwMCZzPScgKyB0eHQpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNWV9QQUdFID09IDEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+Wwj+S6kemfs+S5kCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+aQnOe0ouKAnCcgKyB0eHQgKyAn4oCdJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaGlrZXI6Ly9maWxlcy96ZjAxL2ltZy/nvZHmmJPkupHpn7PkuZAucG5nJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5yZXN1bHQuc29uZ3MubWFwKHMgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuYXJ0aXN0cy5tYXAoYSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpZCA9IHMuaWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWQgPSBzLm12aWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gcy5uYW1lICsgJyAnICsgYS5uYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHMubmFtZSArICfigKInICsgYS5uYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zX21hcnF1ZWUnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vd2FuZ2h1bi50b3AvcXFtdXNpYy93eW11c2ljLnBocD90eXBlPXBpYyZpZD0nICsgaWQgKyAnQFJlZmVyZXI9JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykubGF6eVJ1bGUoKHQsIGlkLCB2aWQpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvTmV0RWFzZV9DbG91ZE11c2ljX25ldy8/YnI9NSZzb25naWQ9JyArIGlkKSkuZGF0YS5zcmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gKCdodHRwczovL211c2ljLjE2My5jb20vc29uZy9tZWRpYS9vdXRlci91cmw/aWQ9JyArIGlkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gW2pzICsgJyNpc011c2ljPXRydWUjJ107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudnBzMDIudG9wL0FQSS9rZ19tdXNpY19tdi5waHA/bj0xJnR5cGU9anNvbiZtc2c9JyArIHQpKS5kYXRhLnVybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpZCA9PSAnMCcpIHJldHVybiBqc29uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gWydodHRwczovL2h1Yi5vbm1pY3Jvc29mdC5jbi9wdWJsaWMvdmlkZW8vbmNtP3Jhdz10cnVlJnZpZD0nICsgdmlkXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHA6Ly9tdXNpYy4xNjMuY29tL2FwaS9zb25nL2x5cmljP29zPXBjJmx2PS0xJmt2PS0xJnR2PS0xJmlkPScgKyBpZCkpLmxyYy5seXJpYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9ICfmrYzor43ojrflj5blpLHotKUnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxzOiB1cmwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx5cmljOiBscmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdCwgaWQsIHZpZCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkuIvovb3mrYzmm7InLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoaWQpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS54aW5nemhpZ2UuY29tL0FQSS9OZXRFYXNlX0Nsb3VkTXVzaWNfbmV3Lz9icj01JnNvbmdpZD0nICsgaWQpKS5kYXRhLnNyYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gKCdodHRwczovL211c2ljLjE2My5jb20vc29uZy9tZWRpYS9vdXRlci91cmw/aWQ9JyArIGlkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZG93bmxvYWQ6Ly8nICsganNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn6KeC55yLTVYnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygodCwgdmlkKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZwczAyLnRvcC9BUEkva2dfbXVzaWNfbXYucGhwP249MSZ0eXBlPWpzb24mbXNnPScgKyB0KSkuZGF0YS51cmw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmlkID09ICcwJykgcmV0dXJuIGpzb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gKCdodHRwczovL2h1Yi5vbm1pY3Jvc29mdC5jbi9wdWJsaWMvdmlkZW8vbmNtP3Jhdz10cnVlJnZpZD0nICsgdmlkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndmlkZW86Ly8nICsgdXJsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQsIHZpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdHh0KSAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I2Z5cGFnZSNmdWxsVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKHR4dCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCcnKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gW107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vc2VhcmNoLmt1d28uY24vci5zP2NsaWVudD1rdCZwbj0nICsgKE1ZX1BBR0UgLSAxKSArICcmcm49MzAmdmlwdmVyPTEmZnQ9bXVzaWMmZW5jb2Rpbmc9dXRmOCZyZm9ybWF0PWpzb24mbW9iaT0xJmFsbD0nICsgdHh0KSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICflsI/ojrTpn7PkuZAnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdoaWtlcjovL2ZpbGVzL3pmMDEvaW1nL+mFt+aIkS5wbmcnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfmkJzntKLigJwnICsgdHh0ICsgJ+KAnScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uYWJzbGlzdC5tYXAobGlzdCA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJpZCA9IGxpc3QuRENfVEFSR0VUSUQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBsaXN0LlNPTkdOQU1FICsgJyAnICsgbGlzdC5BUlRJU1Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IGxpc3Qud2ViX2FsYnVtcGljX3Nob3J0LnNwbGl0KCcxMjAnKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW1nID0gKCdodHRwOi8vaW1nMS5rd2Nkbi5rdXdvLmNuL3N0YXIvYWxidW1jb3Zlci81MDAnICsgcGljWzFdKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmlkID0gbGlzdC5tdnBheWluZm8udmlkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0LlNPTkdOQU1FICsgJ+KAoicgKyBsaXN0LkFSVElTVCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zX21hcnF1ZWUnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6IGltZyArICdAUmVmZXJlcj0nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLmxhenlSdWxlKChyaWQsIHQsIHZpZCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS54aW5nemhpZ2UuY29tL0FQSS9LdXdvX0JEX25ldy8/bj0xJmJyPTUmbmFtZT0nICsgdCkpLmRhdGEuc3JjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganMgPSBmZXRjaCgnaHR0cHM6Ly9hbnRpc2VydmVyLmt1d28uY24vYW50aS5zP3R5cGU9Y29udmVydF91cmwmZm9ybWF0PW1wMyZyaWQ9JyArIHJpZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbanMgKyAnI2lzTXVzaWM9dHJ1ZSMnXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudnBzMDIudG9wL0FQSS9rZ19tdXNpY19tdi5waHA/bj0xJnR5cGU9anNvbiZtc2c9JyArIHQpKS5kYXRhLnVybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmlkID09ICcwJykgcmV0dXJuIGpzb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGh0bWwgPSBmZXRjaCgnaHR0cHM6Ly9hbnltYXRjaC5rdXdvLmNuL21vYmkucz9mPXdlYiZ1c2VyPTZmMTczY2Y5YTJhOWRhNGMmc291cmNlPWt3cGxheWVyX2FyXzEwLjguMi4yXzEzOC5hcGsmdHlwZT1nZXRfdXJsX2J5X3ZpZCZxdWFsaXR5PU1QNEhWJnAycGlkPTEmdmlkPScgKyB2aWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gaHRtbC5zcGxpdCgnPScpWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gYS5zcGxpdCgnPycpWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbYl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBscmMgPSBKU09OLnBhcnNlKGZldGNoKFwiaHR0cHM6Ly9tLmt1d28uY24vbmV3aDUvc2luZ2xlcy9zb25naW5mb2FuZGxyYz9tdXNpY0lkPVwiICsgcmlkKSkuZGF0YS5scmNsaXN0Lm1hcChkID0+IHvigIvigIsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSAoZC50aW1lICUgNjApLnRvRml4ZWQoMikucGFkU3RhcnQoNSwgJzAnKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSAoKGQudGltZSAtIHMpIC8gNjApLnRvRml4ZWQoMCkucGFkU3RhcnQoMiwgJzAnKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbJyArIG0gKyAnOicgKyBzICsgJ10nICsgZC5saW5lTHlyaWPigIsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5qb2luKCdcXG4nKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBscmMgPSAn5q2M6K+N6I635Y+W5aSx6LSlJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsczogdXJsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx5cmljOiBscmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHJpZCwgdCwgdmlkKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+S4i+i9veatjOabsicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHJpZCwgdCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS54aW5nemhpZ2UuY29tL0FQSS9LdXdvX0JEX25ldy8/bj0xJmJyPTUmbmFtZT0nICsgdCkpLmRhdGEuc3JjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly93d3cuaGhscWlsb25nemh1LmNuL2FwaS9kZ19rdXdvbXVzaWMucGhwP249MSZ0eXBlPWpzb24mbXNnPScgKyB0KSkuZmxhY191cmw7IC8qdmFyIGpzb24gPSBmZXRjaCgnaHR0cHM6Ly9hbnRpc2VydmVyLmt1d28uY24vYW50aS5zP3R5cGU9Y29udmVydF91cmwmZm9ybWF0PW1wMyZyaWQ9JyArIHJpZCk7Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Rvd25sb2FkOi8vJyArIGpzb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCByaWQsIHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfop4LnnItNVicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHQsIHZpZCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZwczAyLnRvcC9BUEkva2dfbXVzaWNfbXYucGhwP249MSZ0eXBlPWpzb24mbXNnPScgKyB0KSkuZGF0YS51cmw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2aWQgPT0gJzAnKSByZXR1cm4ganNvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGh0bWwgPSBmZXRjaCgnaHR0cHM6Ly9hbnltYXRjaC5rdXdvLmNuL21vYmkucz9mPXdlYiZ1c2VyPTZmMTczY2Y5YTJhOWRhNGMmc291cmNlPWt3cGxheWVyX2FyXzEwLjguMi4yXzEzOC5hcGsmdHlwZT1nZXRfdXJsX2J5X3ZpZCZxdWFsaXR5PU1QNEhWJnAycGlkPTEmdmlkPScgKyB2aWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGh0bWwuc3BsaXQoJz0nKVszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBhLnNwbGl0KCc/JylbMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3ZpZGVvOi8vJyArIHVybCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHQsIHZpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdHh0KSAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgIH0sIHR4dCkgICAgICAgICAgICAgfSksICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldEl0ZW0oJ3NzcHRfaW5wdXQnLCAnJyksICAgICAgICAgICAgIH0gICAgICAgICB9KTsgLyrpn7PkuZDmkJzntKLlvJXmk45f57uT5p2fKi8gLypRUemfs+S5kOatjOWNlV/lvIDlp4sqLyAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIHRpdGxlOiAn5oiR55qE5q2M5Y2VJywgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInLCAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjZnVsbFRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgICAgICAgICAgICAgIGlmICghZmlsZUV4aXN0KCdoaWtlcjovL2ZpbGVzL0ptL2dkLmpzb24nKSkgeyAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL0ptL2dkLmpzb24nLCAnW1wi5byA5bqX5b+F5aSHQDc5NzUwNDg0MTdAaHR0cDovL3FwaWMueS5xcS5jb20vbXVzaWNfY292ZXIvSnBxR0oxczJ3WTU5dTBwb2ZCanFlYXNtTzUwdmVuTGNIOTNsU2Q1TGlhZkl4bDkxQkx6a3dndy82MDA/bj0xXCIsXCLng63mkJzmrYzmm7JANzUzMjY3MDUzOEBodHRwOi8vcXBpYy55LnFxLmNvbS9tdXNpY19jb3Zlci9oS0ZyaWJNaHdINENsd05XSnhpY3VDeGp1d0lrYlpQcTRIVlQwUWd4c2RiOEpXUVhYQzJURnN1US82MDA/bj0xXCIsXCLliqjlkKznsqTor61AMjY3MTQ1NjYwOEBodHRwOi8vcXBpYy55LnFxLmNvbS9tdXNpY19jb3Zlci9KNE5URllZMUxCSTlleEZDaGRJcFdUaWFVb2NMN2lhSWljOGlhU1MwZHpOVzRrVWtNTk9PdWs4d053LzYwMD9uPTFcIixcIuaKlumfs+eDremXqEA3NjMwMzAzNDc0QGh0dHA6Ly9xcGljLnkucXEuY29tL211c2ljX2NvdmVyL1dwdmRKWGZuNzk4aWJENGdjZmp3ME5TdUJrRlRKWXBZNVFPZXYzRXhjQlFpYW1SY29ia3BONzdnLzYwMD9uPTFcIixcIuWUr+e+juWPpOmjjkA3ODAxMDgxMzM1QGh0dHA6Ly9xcGljLnkucXEuY29tL211c2ljX2NvdmVyL3hMbmxqMHdYYmM2VWZyNHZJZU5BNXVEelR3NXl6Z0l6aENjV041a2tIWjNKQ0l5UlVWSUJ6dy82MDA/bj0xXCIsXCLov5HlubTngavniIZAMTU1MTA3MTQwNEBodHRwOi8vcXBpYy55LnFxLmNvbS9tdXNpY19jb3Zlci9Nd1FQdVV2eUx4V1lLTG1zYTVKRE12VFJHNzVydUI4bGdRM0tHMElTZDBCSE12R0JISlpqaWFnLzYwMD9uPTFcIixcIuWFpeiAs+ayiemGiUA0MjQ2OTU4NTY5QGh0dHA6Ly9xcGljLnkucXEuY29tL211c2ljX2NvdmVyL2JnbFVFRlNNTWhBM2VpYmxmSFh2UVJOSUNNbkE1WDRkMTFscUxubXdndXZRMlpteUJpY3dLNzBRLzYwMD9uPTFcIixcIuWPo+WTqOWJjeWlj0AxNzU1MTEyOTMwQGh0dHA6Ly9xcGljLnkucXEuY29tL211c2ljX2NvdmVyLzJnOGFKem5FUkdkWHJGUmphcW1DSEFBejVrdng5bHlFT0x1VlZGUnQxbXQ2dzRESWdxQ1ZDdy82MDA/bj0xXCIsXCLnlLXpn7PmsqbpmbdAMTE1MjE4Mjg1MkBodHRwOi8vcXBpYy55LnFxLmNvbS9tdXNpY19jb3Zlci9BeTJ3OTJQZWlhTzU3cFpXTXdlY3Y2WEJRQmtUWUhHZnAzQXlIUTdSMHdMNVN1aWFNTE4yOUg4dy82MDA/bj0xXCIsXCLpo5novaZCR01ANzkxNzAwNzk0NkBodHRwOi8vcXBpYy55LnFxLmNvbS9tdXNpY19jb3Zlci8xQUY0V2JVTUc1U2NpY2dlMTI0b0JGQm9wMFl6TnlsRGlhQklaWVdxd21YM1dzODhxbTBSS3JSQS82MDA/bj0xXCIsXCLng63pl6hCR01ANzU5NTkyMzYyOUBodHRwOi8vcXBpYy55LnFxLmNvbS9tdXNpY19jb3Zlci9Rcm1kWERHM1I0akdTRXpxdTBxdFJ6Tld2VGYzMkhrSlUzcldxd2J4c3M0STRmS0d2aWNPeDF3LzYwMD9uPTFcIixcIueyvumAieWNleabskA3MzgyNjI5NDc2QGh0dHA6Ly9xcGljLnkucXEuY29tL211c2ljX2NvdmVyL1o4OWFMQTkzTE9TT2ljejBRT25NYm9xZ0xhaWFGb2hqd2VnbEhoNkpTb0w4aHJqT2ZGT0M2RFh3LzYwMD9uPTFcIl0nKTsgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgIHZhciBkID0gW107ICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5bCP5LiD6Z+z5LmQJywgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+euoeeQhicsICAgICAgICAgICAgICAgICAgICAgcGljOiAnaGlrZXI6Ly9maWxlcy96ZjAxL2ltZy9xcemfs+S5kC5wbmcnLCAgICAgICAgICAgICAgICAgICAgIHVybDogJChbJ+atjOWNleeuoeeQhicsICfmgaLlpI3pu5jorqQnXSwgMiwgJ+ivt+mAieaLqScpLnNlbGVjdCgoKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSAn5q2M5Y2V566h55CGJykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCfmrYzljZXnrqHnkIYnKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IFtdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5o+Q5Y+WaWQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+ivt+i+k+WFpeWIhuS6q+WQjuWkjeWItueahOmTvuaOpScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJC50b1N0cmluZygoKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlucHV0KSByZXR1cm4gXCJ0b2FzdDovL+S4jeiDveS4uuepulwiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHR4dCA9IGlucHV0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUxID0gdHh0LnNwbGl0KCcmJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdTIgPSB1MVs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpZCA9IHUyLnNwbGl0KCc9Jyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5KGlkWzFdKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LlpI3liLYnICsgaWRbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmt7vliqAnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+aYvuekuuWQjeensEBRUemfs+S5kGlkQOWbvueJh+mTvuaOpScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJC50b1N0cmluZygoKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlucHV0KSByZXR1cm4gXCJ0b2FzdDovL+ivt+agueaNruaPkOekuui+k+WFpeWGheWuuVwiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VkYW4gPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvSm0vZ2QuanNvbicpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuID0gZ2VkYW4uY29uY2F0KGlucHV0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL0ptL2dkLmpzb24nLCBKU09OLnN0cmluZ2lmeShnZWRhbikpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3sua3u+WKoCcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+atjOWNleWbvueJh+mTvuaOpeWPr+S7peWcqOatjOWNleS6jOe6p+agh+mimOWkjeWItu+8jOaJgOS7peWPr+S7peWFiOa3u+WKoOatjOWNleWGjee8lui+kea3u+WKoOatjOWNleWbvueJh++8jOaIluiAheiHquW3semAieS4gOW8oOWbvuS9nOS4uuWwgemdouOAgicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL0ptL2dkLmpzb24nKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ2VkYW4ubGVuZ3RoOyBpKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBnZWRhbltpXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxpc3QgPSBpdGVtLnNwbGl0KCdAJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW5kZXggKyAnLicgKyBsaXN0WzBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdjYXJkX3BpY18zJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogbGlzdFsyXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChbJ+e8lui+kScsICfnp7vkvY0nLCAn5Yig6ZmkJ10sIDMsICfor7fpgInmi6knKS5zZWxlY3QoKGluZGV4LCBpdGVtKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09ICfnvJbovpEnKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKGl0ZW0sICfmg7PopoHmm7TmjaLnmoTmrYzljZXlkI0s5q2M5Y2VaWQs5Zu+54mH6ZO+5o6lICcpLmlucHV0KChpbmRleCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VkYW4gPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvSm0vZ2QuanNvbicpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuW2luZGV4XSA9IGlucHV0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvSm0vZ2QuanNvbicsIEpTT04uc3RyaW5naWZ5KGdlZGFuKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5pu05pS55oiQ5YqfficgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaW5kZXgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSAn56e75L2NJykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgnJywgJ+imgeenu+WKqOWIsOWTquS4quW6j+WPt+WJjemdoi/lkI7pnaInKS5pbnB1dCgoaW5kZXgpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL0ptL2dkLmpzb24nKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gZ2VkYW5baW5kZXhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VkYW4uc3BsaWNlKGlucHV0LCAwLCB0ZW1wKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA8IGluZGV4KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VkYW4uc3BsaWNlKGluZGV4ICsgMSwgMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuLnNwbGljZShpbmRleCwgMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9KbS9nZC5qc29uJywgSlNPTi5zdHJpbmdpZnkoZ2VkYW4pKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/np7vkvY3miJDlip9+JyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpbmRleCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZWRhbiA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9KbS9nZC5qc29uJykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZWRhbi5zcGxpY2UoaW5kZXgsIDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9KbS9nZC5qc29uJywgSlNPTi5zdHJpbmdpZnkoZ2VkYW4pKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5Yig6Zmk5oiQ5YqfficgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpbmRleCwgaXRlbSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlRmlsZSgnaGlrZXI6Ly9maWxlcy8vSm0vZ2QuanNvbicpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suaBouWkjem7mOiupCcgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgIH0pLCAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZScgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgdmFyIGdlZGFuID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL0ptL2dkLmpzb24nKSk7ICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdlZGFuLmxlbmd0aDsgaSsrKSB7ICAgICAgICAgICAgICAgICAgICAgdmFyIGxpc3QgPSBnZWRhbltpXS5zcGxpdCgnQCcpOyAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0WzBdLCAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzMnLCAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6IGxpc3RbMl0sICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNmdWxsVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKGxpc3QpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gW107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJycpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS55YW9odWQuY24vYXBpL3FxbXVzaWMvdjI/a2V5PWFVbHlrQTM1S2dtd1BVcGVoSktOYkZqbzZ2JnR5cGU9c29uZ2xpc3QmaWQ9JyArIGxpc3RbMV0pKS5kYXRhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZToganNvbi5pbmZvLnRpdGxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBqc29uLmluZm8uc29uZ251bSArICfpppYnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzoganNvbi5pbmZvLnBpY3VybCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdjb3B5Oi8vJyArIGpzb24uaW5mby5waWN1cmwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5saXN0Lm1hcChodG1sID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWlkID0gaHRtbC5taWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBodG1sLnRpdGxlICsgJyAnICsgaHRtbC5hdXRob3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGh0bWwudGl0bGUgKyAn4oCiJyArIGh0bWwuYXV0aG9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzNfbWFycXVlZScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IGh0bWwucGljICsgJ0BSZWZlcmVyPScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykubGF6eVJ1bGUoKG1pZCwgdCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL29pYXBpLm5ldC9BUEkvUVFfTXVzaWMvP2JyPTEmbWlkPScgKyBtaWQpKS51cmw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vcXRrai5sb3ZlL2FwaS95eS5waHA/dHlwZT1qc29uJm49MSZtc2c9JyArIHQpKS51cmw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbanMgKyAnI2lzTXVzaWM9dHJ1ZSMnXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gdC5zcGxpdCgnICcpWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly94aWFvYXBpLmNuL0FQSS9tdl9zcS5waHA/bj0xJm1zZz0nICsgbmFtZSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMTUwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkudXJsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IFtKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5jZW5ndWlndWkuY24vYXBpL2p1aGUvYXBpLnBocD90eXBlPWtnbXYmbj0xJm1zZz0nICsgdCwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMTUwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkuZGF0YS51cmxdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0ganNvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnlhb2h1ZC5jbi9hcGkvbXVzaWMvbHJjP2tleT1hVWx5a0EzNUtnbXdQVXBlaEpLTmJGam82diZ0eXBlPXFxJm1pZD0nICsgbWlkKSkuZGF0YTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBscmMgPSAn5q2M6K+N6I635Y+W5aSx6LSlJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsczogdXJsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx5cmljOiBscmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG1pZCwgdCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkuIvovb3mrYzmm7InLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChtaWQsIHQpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9vaWFwaS5uZXQvQVBJL1FRX011c2ljLz9icj0xJm1pZD0nICsgbWlkKSkuZGF0YS5tdXNpYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vcXRrai5sb3ZlL2FwaS95eS5waHA/dHlwZT1qc29uJm49MSZtc2c9JyArIHQpKS5tdXNpY191cmw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkb3dubG9hZDovLycgKyBqc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbWlkLCB0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn6KeC55yLTVYnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCh0KSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gdC5zcGxpdCgnICcpWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3hpYW9hcGkuY24vQVBJL212X3NxLnBocD9uPTEmbXNnPScgKyBuYW1lLCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMTUwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLnVybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IFtKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5jZW5ndWlndWkuY24vYXBpL2p1aGUvYXBpLnBocD90eXBlPWtnbXYmbj0xJm1zZz0nICsgdCwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDE1MDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5kYXRhLnVybF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGpzb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxzOiB1cmwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTsgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbGlzdCksICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7ICAgICAgICAgICAgIH0pLCAgICAgICAgIH0pOyAvKlFR6Z+z5LmQ5q2M5Y2VX+e7k+adnyovIC8q6YW35oiR6Z+z5LmQ5q2M5Y2VX+W8gOWniyovICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgdGl0bGU6IGdldEl0ZW0oJ2t3Z2QnLCAn5pyA5pawJykgPT0gJ25ldycgPyAn5pyA5paw5q2M5Y2VJyA6ICfmnIDng63mrYzljZUnLCAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMicsICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7ICAgICAgICAgICAgICAgICBzZXRJdGVtKCdrd2dkJywgZ2V0SXRlbSgna3dnZCcsICfmnIDmlrAnKSA9PSAnbmV3JyA/ICdob3QnIDogJ25ldycpOyAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpOyAgICAgICAgICAgICAgICAgdG9hc3QoJ+W3suWIh+aNoicgKyAoZ2V0SXRlbSgna3dnZCcsICfmnIDmlrAnKSA9PSAnbmV3JyA/ICfmnIDmlrDmrYzljZUnIDogJ+acgOeDreatjOWNlScpKTsgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eScgICAgICAgICAgICAgfSksICAgICAgICAgfSk7IC8q572R5piT5o6S6KGM5qac5q2M5Y2VX+W8gOWniyovICAgICAgICAgdmFyIHd5X2xpc3QgPSBbXCLpo5nljYfmppxAMTk3MjM3NTZcIiwgXCLmlrDmrYzmppxAMzc3OTYyOVwiLCBcIueDreatjOamnEAzNzc4Njc4XCIsIFwi5Y6f5Yib5qacQDI4ODQwMzVcIl07ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3eV9saXN0Lmxlbmd0aDsgaSsrKSB7ICAgICAgICAgICAgIHZhciB3eWxpc3QgPSB3eV9saXN0W2ldLnNwbGl0KCdAJyk7ICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICB0aXRsZTogd3lsaXN0WzBdLCAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnLCAgICAgICAgICAgICAgICAgcGljOiB3eWxpc3RbMV0sICAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjZnVsbFRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCh3eWxpc3QpID0+IHsgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IFtdOyAgICAgICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZSgnJyk7ICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwOi8vbXVzaWMuMTYzLmNvbS9hcGkvdjYvcGxheWxpc3QvZGV0YWlsP249MTAwMCZpZD0nICsgd3lsaXN0WzFdKSk7ICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICflsI/kupHpn7PkuZAnLCAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IHd5bGlzdFswXSwgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaGlrZXI6Ly9maWxlcy96ZjAxL2ltZy/nvZHmmJPkupHpn7PkuZAucG5nJywgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsICAgICAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnLCAgICAgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgICAgIGpzb24ucGxheWxpc3QudHJhY2tzLm1hcChzID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBzLmFyLm1hcChuID0+IG4ubmFtZSk7ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpZCA9IHMuaWQ7ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWQgPSBzLm12OyAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHMubmFtZSArICcgJyArIG5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcy5uYW1lICsgJ+KAoicgKyBuYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zX21hcnF1ZWUnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogcy5hbC5waWNVcmwgKyAnQFJlZmVyZXI9JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykubGF6eVJ1bGUoKGlkLCB2aWQsIHQpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvTmV0RWFzZV9DbG91ZE11c2ljX25ldy8/YnI9NSZzb25naWQ9JyArIGlkKSkuZGF0YS5zcmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gKCdodHRwczovL211c2ljLjE2My5jb20vc29uZy9tZWRpYS9vdXRlci91cmw/aWQ9JyArIGlkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gW2pzICsgJyNpc011c2ljPXRydWUjJ107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudnBzMDIudG9wL0FQSS9rZ19tdXNpY19tdi5waHA/bj0xJnR5cGU9anNvbiZtc2c9JyArIHQpKS5kYXRhLnVybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpZCA9PSAnMCcpIHJldHVybiBqc29uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gWydodHRwczovL2h1Yi5vbm1pY3Jvc29mdC5jbi9wdWJsaWMvdmlkZW8vbmNtP3Jhdz10cnVlJnZpZD0nICsgdmlkXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHA6Ly9tdXNpYy4xNjMuY29tL2FwaS9zb25nL2x5cmljP29zPXBjJmx2PS0xJmt2PS0xJnR2PS0xJmlkPScgKyBpZCkpLmxyYy5seXJpYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9ICfmrYzor43ojrflj5blpLHotKUnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxzOiB1cmwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx5cmljOiBscmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaWQsIHZpZCwgdCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkuIvovb3mrYzmm7InLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoaWQpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS54aW5nemhpZ2UuY29tL0FQSS9OZXRFYXNlX0Nsb3VkTXVzaWNfbmV3Lz9icj01JnNvbmdpZD0nICsgaWQpKS5kYXRhLnNyYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly93d3cuaGhscWlsb25nemh1LmNuL2FwaS9kZ193eXltdXNpYy5waHA/YnI9NyZuPTEmdHlwZT1qc29uJmlkPScgKyBpZCkpLm11c2ljX3VybDsgLyp2YXIganNvbiA9ICgnaHR0cHM6Ly9tdXNpYy4xNjMuY29tL3NvbmcvbWVkaWEvb3V0ZXIvdXJsP2lkPScgKyBpZCk7Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZG93bmxvYWQ6Ly8nICsganNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn6KeC55yLTVYnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygodmlkLCB0KSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZwczAyLnRvcC9BUEkva2dfbXVzaWNfbXYucGhwP249MSZ0eXBlPWpzb24mbXNnPScgKyB0KSkuZGF0YS51cmw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmlkID09ICcwJykgcmV0dXJuIGpzb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gKCdodHRwczovL2h1Yi5vbm1pY3Jvc29mdC5jbi9wdWJsaWMvdmlkZW8vbmNtP3Jhdz10cnVlJnZpZD0nICsgdmlkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndmlkZW86Ly8nICsgdXJsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHZpZCwgdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpOyAgICAgICAgICAgICAgICAgfSwgd3lsaXN0KSwgICAgICAgICAgICAgfSk7ICAgICAgICAgfSAvKue9keaYk+aOkuihjOamnOatjOWNlV/nu5PmnZ8qLyAgICAgfSAvKuWbuuWumue/u+mhtTHnu5PmnZ8qLyAgICAgdmFyIGt3Z2QgPSBnZXRJdGVtKCdrd2dkJywgJ25ldycpOyAgICAgdmFyIGh0bWwgPSAoJ2h0dHA6Ly93YXBpLmt1d28uY24vYXBpL3BjL2NsYXNzaWZ5L3BsYXlsaXN0L2dldFJjbVBsYXlMaXN0P2xvZ2luVWlkPTAmbG9naW5TaWQ9MCZhcHBVaWQ9NzYwMzk1NzYmJnBuPScgKyBNWV9QQUdFICsgJyZybj0zNiZvcmRlcj0nICsga3dnZCk7ICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goaHRtbCkpLmRhdGE7ICAgICBqc29uLmRhdGEubWFwKGRhdGEgPT4geyAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIHRpdGxlOiBkYXRhLm5hbWUsICAgICAgICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMycsICAgICAgICAgICAgIHBpYzogZGF0YS5pbWcsICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNmeXBhZ2UjZnVsbFRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKChkYXRhKSA9PiB7ICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJycpOyAgICAgICAgICAgICAgICAgdmFyIGQgPSBbXTsgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9tLmt1d28uY24vbmV3aDVhcHAvd2FwaS9hcGkvd3d3L3BsYXlsaXN0L3BsYXlMaXN0SW5mbz9waWQ9JyArIGRhdGEuaWQgKyAnJnJuPTMwJnVhPSZpcD0mcG49JyArIE1ZX1BBR0UpKS5kYXRhOyAgICAgICAgICAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkgeyAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBqc29uLm5hbWUsICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJywgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiBqc29uLmltZzUwMCwgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ/CfjIAgJyArIGpzb24udXNlck5hbWUsICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLCAgICAgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJywgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgIGpzb24ubXVzaWNMaXN0LmZvckVhY2gobGlzdCA9PiB7ICAgICAgICAgICAgICAgICAgICAgdmFyIHJpZCA9IGxpc3QucmlkOyAgICAgICAgICAgICAgICAgICAgIHZhciB2aWQgPSBsaXN0Lm12cGF5aW5mby52aWQ7ICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBsaXN0Lm5hbWUgKyAnICcgKyBsaXN0LmFydGlzdDsgICAgICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC5uYW1lICsgJ+KAoicgKyBsaXN0LmFydGlzdCwgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zX21hcnF1ZWUnLCAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6IGxpc3QucGljICsgJ0BSZWZlcmVyPScsICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykubGF6eVJ1bGUoKHJpZCwgdCwgdmlkKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL0t1d29fQkRfbmV3Lz9uPTEmYnI9NSZuYW1lPScgKyB0KSkuZGF0YS5zcmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IGZldGNoKCdodHRwczovL2FudGlzZXJ2ZXIua3V3by5jbi9hbnRpLnM/dHlwZT1jb252ZXJ0X3VybCZmb3JtYXQ9bXAzJnJpZD0nICsgcmlkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtqcyArICcjaXNNdXNpYz10cnVlIyddOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS52cHMwMi50b3AvQVBJL2tnX211c2ljX212LnBocD9uPTEmdHlwZT1qc29uJm1zZz0nICsgdCkpLmRhdGEudXJsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2aWQgPT0gJzAnKSByZXR1cm4ganNvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaHRtbCA9IGZldGNoKCdodHRwczovL2FueW1hdGNoLmt1d28uY24vbW9iaS5zP2Y9d2ViJnVzZXI9NmYxNzNjZjlhMmE5ZGE0YyZzb3VyY2U9a3dwbGF5ZXJfYXJfMTAuOC4yLjJfMTM4LmFwayZ0eXBlPWdldF91cmxfYnlfdmlkJnF1YWxpdHk9TVA0SFYmcDJwaWQ9MSZ2aWQ9JyArIHZpZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBodG1sLnNwbGl0KCc9JylbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBhLnNwbGl0KCc/JylbMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtiXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IEpTT04ucGFyc2UoZmV0Y2goXCJodHRwczovL20ua3V3by5jbi9uZXdoNS9zaW5nbGVzL3NvbmdpbmZvYW5kbHJjP211c2ljSWQ9XCIgKyByaWQpKS5kYXRhLmxyY2xpc3QubWFwKGQgPT4ge+KAi+KAiyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IChkLnRpbWUgJSA2MCkudG9GaXhlZCgyKS5wYWRTdGFydCg1LCAnMCcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbSA9ICgoZC50aW1lIC0gcykgLyA2MCkudG9GaXhlZCgwKS5wYWRTdGFydCgyLCAnMCcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1snICsgbSArICc6JyArIHMgKyAnXScgKyBkLmxpbmVMeXJpY+KAiyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmpvaW4oJ1xcbicpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9ICfmrYzor43ojrflj5blpLHotKUnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxzOiB1cmwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHlyaWM6IGxyYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgICAgICAgICAgICAgfSwgcmlkLCB0LCB2aWQpLCAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5LiL6L295q2M5puyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygocmlkLCB0KSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL0t1d29fQkRfbmV3Lz9uPTEmYnI9NSZuYW1lPScgKyB0KSkuZGF0YS5zcmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3d3dy5oaGxxaWxvbmd6aHUuY24vYXBpL2RnX2t1d29tdXNpYy5waHA/bj0xJnR5cGU9anNvbiZtc2c9JyArIHQpKS5mbGFjX3VybDsgLyp2YXIganNvbiA9IGZldGNoKCdodHRwczovL2FudGlzZXJ2ZXIua3V3by5jbi9hbnRpLnM/dHlwZT1jb252ZXJ0X3VybCZmb3JtYXQ9bXAzJnJpZD0nICsgcmlkKTsqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZG93bmxvYWQ6Ly8nICsganNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHJpZCwgdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+ingueci01WJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygodmlkLCB0KSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudnBzMDIudG9wL0FQSS9rZ19tdXNpY19tdi5waHA/bj0xJnR5cGU9anNvbiZtc2c9JyArIHQpKS5kYXRhLnVybDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpZCA9PSAnMCcpIHJldHVybiBqc29uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaHRtbCA9IGZldGNoKCdodHRwczovL2FueW1hdGNoLmt1d28uY24vbW9iaS5zP2Y9d2ViJnVzZXI9NmYxNzNjZjlhMmE5ZGE0YyZzb3VyY2U9a3dwbGF5ZXJfYXJfMTAuOC4yLjJfMTM4LmFwayZ0eXBlPWdldF91cmxfYnlfdmlkJnF1YWxpdHk9TVA0SFYmcDJwaWQ9MSZ2aWQ9JyArIHZpZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gaHRtbC5zcGxpdCgnPScpWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGEuc3BsaXQoJz8nKVswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndmlkZW86Ly8nICsgdXJsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdmlkLCB0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpOyAgICAgICAgICAgICB9LCBkYXRhKSwgICAgICAgICB9KTsgICAgIH0pOyAvKumFt+aIkemfs+S5kOatjOWNlV/nu5PmnZ8qLyAgICAgc2V0UmVzdWx0KGQpOyB9KeKAiyIsImljb24iOiJoaWtlcjovL2ZpbGVzL3pmMDEvY3kv6Z+z5LmQLnBuZyIsImRlc2MiOiIiLCJ0eXBlIjoiaWNvbl80In0seyJzdGF0dXMiOnRydWUsInBhdHRlcm4iOjAsIm5hbWUiOiLluLjnlKjnu4Tnu5PmnZ/nur8iLCJ0aXRsZSI6IiIsInVybCI6IiIsImljb24iOiIiLCJkZXNjIjoiIiwidHlwZSI6ImxpbmUifV0sImZvbGRfc3RhdHVzIjp0cnVlLCJwYXR0ZXJuIjozfSx7InBhdHRlcm4iOjIsIm5hbWUiOiLluLjnlKjlsI/nqIvluo8iLCJzdGF0dXMiOmZhbHNlLCJjb2RlIjoidmFyIHJ1bGVzPWdldExhc3RSdWxlcygxMik7XG5jb25zdCBkID0gW3tcbmNvbF90eXBlOlwic2Nyb2xsX2J1dHRvblwiLFxudGl0bGU6XCLwn5WSXCIsXG51cmw6XCJoaWtlcjovL2hvbWVcIlxufV07XG5jb25zdCBhPXJ1bGVzLm1hcChyPT57XG5yZXR1cm4ge1xuY29sX3R5cGU6XCJzY3JvbGxfYnV0dG9uXCIsXG50aXRsZTpyLnRpdGxlLFxudXJsOlwiaGlrZXI6Ly9ob21lQFwiK3IudGl0bGVcbn1cbn0pO1xuZm9yKGxldCBiIG9mIGEpe1xuIGQucHVzaChiKVxufVxuZFxuIn0seyJzdGF0dXMiOmZhbHNlLCJuYW1lIjoi5pS26JePIiwidGl0bGUiOiJAanM6J+KAnOKAnOKAneKAneaUtuiXj1xcblxcbjxzbWFsbD4nK2NvbGxlY3Rpb24ubGVuZ3RoKyfmnaHnj43ol488L3NtYWxsPiciLCJ1cmwiOiJoaWtlcjovL2NvbGxlY3Rpb24iLCJpY29uIjoiQGpzOmNvbFBpY1VybCIsImRlc2MiOiIyNSIsInR5cGUiOiJjYXJkX3BpY18yIn0seyJzdGF0dXMiOmZhbHNlLCJuYW1lIjoi5bCP56iL5bqPIiwidGl0bGUiOiJAanM6J+Wwj+eoi+W6j++8iCcrZ2V0UnVsZUNvdW50KCkrJ++8iSciLCJ1cmwiOiJoaWtlcjovL2hvbWUiLCJpY29uIjoiaGlrZXI6Ly9pbWFnZXMvaG9tZV9waWMxIiwiZGVzYyI6IjAiLCJ0eXBlIjoiY2FyZF9waWNfMl8yIn0seyJuYW1lIjoi6K665Z2bIiwidGl0bGUiOiLmr4/ml6XmjqjojZAiLCJzdGF0dXMiOmZhbHNlLCJ1cmwiOiJodHRwczovL2hhaWt1b3NoaWppZS5jbiIsImljb24iOiJoaWtlcjovL2ltYWdlcy9ob21lX3BpYzMiLCJ0eXBlIjoiY2FyZF9waWNfMl8yX2xlZnQifSx7Im5hbWUiOiLmlofku7bnrqHnkIYiLCJzdGF0dXMiOmZhbHNlLCJ1cmwiOiJoaWtlcjovL2V4cGxvcmUiLCJpY29uIjoiaGlrZXI6Ly9pbWFnZXMvaG9tZV9sYXRlIiwidHlwZSI6ImNhcmRfcGljXzJfMl9sZWZ0IiwidGl0bGUiOiJFeHBsb3JlIn0seyJuYW1lIjoi5paw6Ze7Iiwic3RhdHVzIjpmYWxzZSwidGl0bGUiOiJOZXdzIiwidXJsIjoiaGlrZXI6Ly9ob21lQOeDreamnHx8aHR0cHM6Ly9yZWJhbmcudG9kYXkvIiwiaWNvbiI6Imhpa2VyOi8vaW1hZ2VzL2hvbWVfcGljNCIsInR5cGUiOiJjYXJkX3BpY18yIiwiZGVzYyI6IjEwIn1dLCJTZXR0aW5nQ29uZmlnIjp7Im15WWlZYW4iOiLplb/po47noLTmtarkvJrmnInml7bvvIznm7TmjILkupHluIbmtY7msqfmtbfjgIJ8fOS6uueUn+W+l+aEj+mhu+Wwveasou+8jOiOq+S9v+mHkeaoveepuuWvueaciOOAgnx85Lmm5bGx5pyJ6Lev5Yuk5Li65b6E77yM5a2m5rW35peg5rav6Ium5L2c6Iif44CCfHzllK/mnInplb/msZ/msLTvvIzml6Dor63kuJzmtYHjgIJ8fOiOq+aEgeWJjei3r+aXoOefpeW3se+8jOWkqeS4i+iwgeS6uuS4jeivhuWQm+OAgiIsInRvcFBpYyI6Imhpa2VyOi8vaW1hZ2VzL2xvZ28iLCJhdmF0YXJQaWMiOiIiLCJoaXRva290b1N3aXRjaCI6dHJ1ZSwibG9nb1R5cGUiOiJwaWNfMV9jYXJkIiwibWF4SG9tZUNvdW50IjoxMiwibXlWYXJpYWJsZXMiOiIifX0=