yds-tool 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/main.js +2 -2
- package/package.json +1 -1
- package/src/main.ts +1 -1
package/bin/main.js
CHANGED
|
@@ -59,7 +59,7 @@ const execCmd = (command, cwd) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
59
59
|
let start = Date.now();
|
|
60
60
|
child_process.execSync(command, {
|
|
61
61
|
cwd, encoding: 'utf-8',
|
|
62
|
-
timeout:
|
|
62
|
+
timeout: 0,
|
|
63
63
|
stdio: [0, 1, 2]
|
|
64
64
|
});
|
|
65
65
|
logger.info(`执行命令 ${command} 耗时 \x1B[34m <${Date.now() - start}ms>]`);
|
|
@@ -469,4 +469,4 @@ class Main {
|
|
|
469
469
|
}
|
|
470
470
|
}
|
|
471
471
|
exports.default = Main;
|
|
472
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQWtDO0FBQ2xDLGlEQUFtQztBQUNuQyx5Q0FBOEM7QUFDOUMsZ0RBQWtDO0FBQ2xDLGtFQUFvRDtBQUNwRCw0Q0FBOEI7QUFDOUIsNENBQThCO0FBQzlCLG1DQUFpQztBQUVqQyxNQUFNLFNBQVMsR0FBRyx1QkFBdUIsQ0FBQztBQUMxQyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUN2QyxNQUFNLE1BQU0sR0FBRyw2QkFBNkIsQ0FBQztBQUU3QyxNQUFNLE1BQU0sR0FBVyx5QkFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUV0RCxNQUFNLE9BQU8sR0FBRyxDQUFPLE9BQWUsRUFBRSxHQUFZLEVBQUUsRUFBRTtJQUNwRCxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUEsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzRCxJQUFJLEtBQUssR0FBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDeEIsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUU7UUFDNUIsR0FBRyxFQUFFLFFBQVEsRUFBRSxPQUFPO1FBQ3RCLE9BQU8sRUFBRSxNQUFNO1FBQ2YsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDbkIsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLE9BQU8saUJBQWlCLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLE1BQU0sQ0FBQyxDQUFBO0FBQ3pFLENBQUMsQ0FBQSxDQUFBO0FBRUQsTUFBTSxRQUFR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QkFFOUQsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLFVBQVUsRUFBRSxDQUFDLENBQUE7Z0JBQ3BDLE1BQU0sT0FBTyxDQUFDLElBQUksS0FBSyxNQUFNLFVBQVUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUN2RCxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQ3pCLENBQUM7WUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JCLE1BQU0sT0FBTyxDQUFDLElBQUksT0FBTyxvQkFBb0IsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUUzRCxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO1lBQ3ZELE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtRQUN2QyxDQUFDLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWpELG1CQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMvQixDQUFDO0NBQ0o7QUE1YUQsdUJBNGFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtwcm9ncmFtfSBmcm9tIFwiY29tbWFuZGVyXCI7XHJcbmltcG9ydCAqIGFzIHByb2Nlc3MgZnJvbSBcInByb2Nlc3NcIjtcclxuaW1wb3J0IHtMb2dnZXJGYWN0b3J5LCB1dGlsfSBmcm9tIFwidndlYi1jb3JlXCI7XHJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xyXG5pbXBvcnQgKiBhcyBjaGlsZF9wcm9jZXNzIGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcclxuaW1wb3J0ICogYXMgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcclxuaW1wb3J0ICogYXMgb3MgZnJvbSAnbm9kZTpvcyc7XHJcbmltcG9ydCB7cmFuZG9tVVVJRH0gZnJvbSAnY3J5cHRvJ1xyXG5cclxuY29uc3QgZG9tYWluS2V5ID0gJ3AtaGNjLWkwMDAtcDAwYS1ocmNwZSc7XHJcbmNvbnN0IHBrZyA9IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpO1xyXG5jb25zdCBSU19VUkwgPSAnaHR0cHM6Ly9kZnMuemhpcGVyLmNvbS92M3I2JztcclxuXHJcbmNvbnN0IGxvZ2dlcjogTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1lEUycpO1xyXG5cclxuY29uc3QgZXhlY0NtZCA9IGFzeW5jIChjb21tYW5kOiBzdHJpbmcsIGN3ZD86IHN0cmluZykgPT4ge1xyXG4gICAgbG9nZ2VyLmluZm8oYOaJp+ihjOWRveS7pCAke2NvbW1hbmR9ICR7Y3dkID8gYO+8jOaJp+ihjOebruW9leS4uiR7Y3dkfWAgOicnfWApO1xyXG4gICAgbGV0IHN0YXJ0ICA9IERhdGUubm93KCk7XHJcbiAgICBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKGNvbW1hbmQsIHtcclxuICAgICAgICBjd2QsIGVuY29kaW5nOiAndXRmLTgnLFxyXG4gICAgICAgIHRpbWVvdXQ6IDYwMDAwMCxcclxuICAgICAgICBzdGRpbzogWzAsIDEsIDJdXHJcbiAgICB9KTtcclxuICAgIGxvZ2dlci5pbmZvKGDmiafooYzlkb3ku6QgJHtjb21tYW5kfSDogJfml7YgXFx4MUJbMzRtIDwke0RhdGUubm93KCkgLSBzdGFydH1tcz5dYClcclxufVxyXG5cclxuY29uc3QgcGxhdGZvcm0gPSBvcy5wbGF0Zm9ybSgpXHJcbmlmIChwbGF0Zm9ybSAhPT0gJ3dpbjMyJykge1xyXG4gICAgbG9nZ2VyLmVycm9yKCflvZPliY3lt6Xlhbfku4XmlK/mjIF3aW5kb3dz57O757ufJyk7XHJcbiAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbn1cclxuXHJcbmNvbnN0IGlzQWRtaW4gPSAoKSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIC8vIOWwneivleaJp+ihjOS4gOS4quWPquacieeuoeeQhuWRmOaJjeiDvei/kOihjOeahOWRveS7pFxyXG4gICAgICAgIC8vIOS9v+eUqCA+bnVsIDI+JjEg5p2l5oqR5Yi26L6T5Ye6XHJcbiAgICAgICAgY2hpbGRfcHJvY2Vzcy5leGVjU3luYygnbmV0IHNlc3Npb24gPm51bCAyPiYxJyk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIOaIkOWKn+aJp+ihjFxyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyDmiafooYzlpLHotKXvvIzmnYPpmZDkuI3otrNcclxuICAgIH1cclxufVxyXG5cclxubGV0IHdnZXQgPSBwYXRoLmpvaW4oX19kaXJuYW1lICwnLi4vd2dldC5leGUnKTtcclxubGV0IHppcCA9IHBhdGguam9pbihfX2Rpcm5hbWUgLCcuLi96aXAuZXhlJyk7XHJcbmxldCB1bnppcCA9IHBhdGguam9pbihfX2Rpcm5hbWUgLCcuLi91bnppcC5leGUnKTtcclxuXHJcbnByb2dyYW0ubmFtZShcInlkc1wiKVxyXG4gICAgLnVzYWdlKFwiW2NvbW1hbmRdIFtvcHRpb25zXVwiKVxyXG4gICAgLmRlc2NyaXB0aW9uKFwieWRzIOWItuebmOW3peWFtyDlpoLmnpzlkb3ku6Tlj4LmlbDkuK3lrZjlnKjnqbrmoLwg5L2/55So5Y+M5byV5Y+3XFxcIlxcXCLljIXoo7lcIilcclxuICAgIC52ZXJzaW9uKGB5ZHMgJHtwa2cudmVyc2lvbn1gKTtcclxuXHJcbnR5cGUgTWljcm9TZXJ2aWNlID0gJ2hyY3BlJyB8ICdmZWNvZGUnO1xyXG5cclxudHlwZSBHaXQgPSB7XHJcbiAgICB1cmw6IHN0cmluZyxcclxuICAgIGJyYW5jaDogc3RyaW5nXHJcbn1cclxuXHJcbnR5cGUgWWRzQ29uZmlnID0ge1xyXG4gICAgaG9zdHM6IEFycmF5PHN0cmluZz47XHJcbiAgICBnaXQ6IFJlY29yZDxNaWNyb1NlcnZpY2UsIHN0cmluZz47XHJcbiAgICBjYXRhbG9nczoge1xyXG4gICAgICAgIFtjYXRhbG9nOiBzdHJpbmddOiBSZWNvcmQ8TWljcm9TZXJ2aWNlLCBzdHJpbmcgfCBHaXQ+XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1haW4ge1xyXG5cclxuICAgIHN0YXJ0dXAoKSB7XHJcbiAgICAgICAgcHJvZ3JhbVxyXG4gICAgICAgICAgICAuY29tbWFuZCgnY2xlYW4gW3dvcmtkaXJdJylcclxuICAgICAgICAgICAgLnVzYWdlKCdjbGVhbiBbd29ya2Rpcl0nKVxyXG4gICAgICAgICAgICAuZGVzY3JpcHRpb24oJ+a4heeQhuWItuebmOW3peS9nOebruW9lSwgd29ya2RpcuihqOekuuWItuebmOW3peS9nOebruW9le+8jOWmguaenOS4jeaMh+WumuWImeS9v+eUqOW9k+WJjeebruW9lScpXHJcbiAgICAgICAgICAgIC5hY3Rpb24oYXN5bmMgKHdvcmtkaXI6IHN0cmluZyA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpKSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGlyID0gcGF0aC5yZXNvbHZlKHdvcmtkaXIpO1xyXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOa4heeQhuWItuebmOW3peS9nOebruW9lSAke2Rpcn1gKTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGZpbGUgb2YgZnMucmVhZGRpclN5bmMoZGlyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWxlU3RhdCA9IGZzLnN0YXRTeW5jKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGZzLnJtU3luYyhmaWxlLCB7cmVjdXJzaXZlOiBmaWxlU3RhdC5pc0RpcmVjdG9yeSgpfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5Yi255uY5bel5L2c55uu5b2V5riF55CG5a6M5oiQYCk7XHJcbiAgICAgICAgICAgIH0pLmhvb2soJ3Bvc3RBY3Rpb24nLCAoKSA9PiBwcm9jZXNzLmV4aXQoMCkpO1xyXG5cclxuICAgICAgICBwcm9ncmFtXHJcbiAgICAgICAgICAgIC5jb21tYW5kKCdpbml0IFt3b3JrZGlyXScpXHJcbiAgICAgICAgICAgIC51c2FnZSgnaW5pdCBbd29ya2Rpcl0nKVxyXG4gICAgICAgICAgICAuZGVzY3JpcHRpb24oJ+WIneWni+WMlllEU+WItuebmOeOr+Wigywgd29ya2RpcuihqOekuuWItuebmOW3peS9nOebruW9le+8jOWmguaenOS4jeaMh+WumuWImeS9v+eUqOW9k+WJjeebruW9lScpXHJcbiAgICAgICAgICAgIC5hY3Rpb24oYXN5bmMgKHdvcmtkaXI6IHN0cmluZyA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpKSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGlyID0gcGF0aC5yZXNvbHZlKHdvcmtkaXIpO1xyXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOWIneWni+WMlllEU+WItuebmOeOr+WigyDlt6XkvZznm67lvZXvvJoke2Rpcn1gKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBnaXRFeGlzdHMgPSBhd2FpdCB1dGlsLmNtZC5leGlzdHMoJ2dpdCcpO1xyXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOajgOafpeaYr+WQpuWuieijheS6hmdpdCA+PiAke2dpdEV4aXN0cyA/ICflt7Llronoo4UnIDogJ+acquWuieijhSd9YCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWdpdEV4aXN0cyAmJiAhZnMuZXhpc3RzU3luYyhgJHtkaXJ9L2dpdC1mb3Itd2luZG93c2ApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2l0WmlwTmFtZSA9ICdnaXQtZm9yLXdpbmRvd3MuemlwJ1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDkuIvovb1naXQg5a6J6KOF5YyFICR7Z2l0WmlwTmFtZX1gKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBnaXRaaXBGaWxlID0gYCR7ZGlyfS8ke2dpdFppcE5hbWV9YDtcclxuICAgICAgICAgICAgICAgICAgICAvLyDmo4Dmn6XmmK/lkKblt7Lnu4/lrZjlnKjlronoo4XljIUg5aaC5p6c5pyJ5YWI5Yig6ZmkXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoZ2l0WmlwRmlsZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOWIoOmZpOW3suWtmOWcqOWuieijheWMhSAke2dpdFppcEZpbGV9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZzLnJtU3luYyhnaXRaaXBGaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5LiL6L295a6J6KOF5YyF5bm26L6T5Ye65pel5b+XXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXhlY0NtZChgJHt3Z2V0fSAke1JTX1VSTH0vJHtnaXRaaXBOYW1lfSAtTyBcIiR7Z2l0WmlwRmlsZX1cImApO1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDop6Pljovlronoo4XljIUgJHtnaXRaaXBGaWxlfWApXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXhlY0NtZChgXCIke3VuemlwfVwiIFwiJHtnaXRaaXBGaWxlfVwiIC1kIFwiJHtkaXJ9XCJgKTtcclxuICAgICAgICAgICAgICAgICAgICBmcy5ybVN5bmMoZ2l0WmlwRmlsZSlcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhgZ2l0IOWuieijheWujOaIkGApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGphdmFFeGlzdHMgPSBhd2FpdCB1dGlsLmNtZC5leGlzdHMoJ2phdmEnKTtcclxuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDmo4Dmn6XmmK/lkKblronoo4XkuoZqYXZhID4+ICR7amF2YUV4aXN0cyA/ICflt7Llronoo4UnIDogJ+acquWuieijhSd9YCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWphdmFFeGlzdHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygn5pyq5om+5YiwamF2Ye+8jOWHhuWkh+WuieijhWphdmHvvIzlvIDlp4vkuIvovb1qZGsnKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBqZGtaaXBOYW1lID0gJ2pkay0xMS4wLjE1LjFfd2luZG93cy14NjRfYmluLnppcCdcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKGAke3dnZXR9ICR7UlNfVVJMfS8ke2pka1ppcE5hbWV9IC1PIFwiJHtkaXJ9LyR7amRrWmlwTmFtZX1cImApO1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDop6PljotqZGsg5a6J6KOF5YyFICR7ZGlyfS8ke2pka1ppcE5hbWV9YClcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKGBcIiR7dW56aXB9XCIgXCIke2Rpcn0vJHtqZGtaaXBOYW1lfVwiYCwgZGlyKTtcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg6YWN572uamF2YeeOr+Wig+WPmOmHj2ApO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBqYXZhSG9tZSA9IGAke2Rpcn0vamRrLTExLjAuMTUuMWA7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXhlY0NtZChgc2V0eCBKQVZBX0hPTUUgXCIke2phdmFIb21lfVwiYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXhlY0NtZChgc2V0eCBDTEFTU19QQVRIIFwiLjslSkFWQV9IT01FJVxcbGliO1wiYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXhlY0NtZCggYHNldHggUEFUSCBcIiVQQVRIJTslSkFWQV9IT01FJVxcYmluO1wiYCApO1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3MuZW52LkpBVkFfSE9NRSA9IGphdmFIb21lO1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBqYXZhIOWuieijheWujOaIkGApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDmo4Dmn6VqYXZh54mI5pysYCk7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKCdqYXZhIC12ZXJzaW9uJyk7XHJcbiAgICAgICAgICAgICAgICAvLyDlr7zlhaXor4HkuabliLBqYXZhIOWmguaenGphdmHmmK8xLjjniYjmnKwg6ZyA6KaB5a+85YWl5YiwIEpBVkFfSE9NRS9qcmUvbGliL3NlY3VyaXR5L2NhY2VydHMg5aaC5p6c5pivMTHniYjmnKwg6ZyA6KaB5a+85YWl5YiwIEpBVkFfSE9NRS9saWIvc2VjdXJpdHkvY2FjZXJ0c1xyXG4gICAgICAgICAgICAgICAgY29uc3QgamF2YUhvbWUgPSBwcm9jZXNzLmVudi5KQVZBX0hPTUU7XHJcbiAgICAgICAgICAgICAgICBpZiAoamF2YUhvbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY2VydHNGaWxlbmFtZSA9ICdsaWIvc2VjdXJpdHkvY2FjZXJ0cyc7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNlcnRzRmlsZSA9IGAke2phdmFIb21lfS8ke2NlcnRzRmlsZW5hbWV9YDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoY2VydHNGaWxlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjZXJ0c0ZpbGUgPSBgJHtqYXZhSG9tZX0vanJlLyR7Y2VydHNGaWxlbmFtZX1gO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5qOA5p+lamF2YeivgeS5puebruW9lSAke2NlcnRzRmlsZX1gKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhjZXJ0c0ZpbGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWIpOaWreivgeS5puaYr+WQpuW3sue7j+WvvOWFpVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXhlY0NtZChga2V5dG9vbCAtbGlzdCAtdiAta2V5c3RvcmUgXCIke2NlcnRzRmlsZX1cIiAtc3RvcmVwYXNzIGNoYW5nZWl0IC0tYWxpYXMgeXlyZGApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhgeXlyZC5jcnQg6K+B5Lmm5bey5a2Y5ZyoYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOivgeS5puS4jeWtmOWcqFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOWvvOWFpSB5eXJkLmNydCDor4HkuabliLBqYXZhICR7Y2VydHNGaWxlfWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXhlY0NtZChga2V5dG9vbCAtaW1wb3J0Y2VydCAtZmlsZSBcIiR7ZGlyfS95eXJkLmNydFwiIC1rZXlzdG9yZSBcIiR7Y2VydHNGaWxlfVwiIC1zdG9yZXBhc3MgY2hhbmdlaXQgLW5vcHJvbXB0YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhgeXlyZC5jcnQg6K+B5Lmm5a+85YWl5a6M5oiQYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgbWF2ZW5Ib21lID0gYCR7ZGlyfS9tYXZlbi0zLjguNmA7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtYXZlbkV4aXN0cyA9IHV0aWwuY21kLmV4aXN0cygnbXZuJyk7XHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5qOA5p+l5piv5ZCm5a6J6KOF5LqGbWF2ZW4gPj4gJHttYXZlbkV4aXN0cyA/ICflt7Llronoo4UnIDogJ+acquWuieijhSd9YCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIW1hdmVuRXhpc3RzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF2ZW5aaXBOYW1lID0gJ21hdmVuLTMuOC42LnppcCdcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5LiL6L29bWF2ZW4g5a6J6KOF5YyFICR7bWF2ZW5aaXBOYW1lfWApO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdmVuWmlwRmlsZSA9IGAke2Rpcn0vJHttYXZlblppcE5hbWV9YDtcclxuICAgICAgICAgICAgICAgICAgICAvLyDmo4Dmn6XmmK/lkKblt7Lnu4/lrZjlnKjlronoo4XljIUg5aaC5p6c5pyJ5YWI5Yig6ZmkXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMobWF2ZW5aaXBGaWxlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5Yig6Zmk5bey5a2Y5Zyo5a6J6KOF5YyFICR7bWF2ZW5aaXBGaWxlfWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmcy5ybVN5bmMobWF2ZW5aaXBGaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5LiL6L295a6J6KOF5YyF5bm26L6T5Ye65pel5b+XXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXhlY0NtZChgJHt3Z2V0fSAke1JTX1VSTH0vJHttYXZlblppcE5hbWV9IC1PIFwiJHttYXZlblppcEZpbGV9XCJgKTtcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg6Kej5Y6L5a6J6KOF5YyFICR7bWF2ZW5aaXBGaWxlfWApXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXhlY0NtZChgXCIke3VuemlwfVwiIFwiJHttYXZlblppcEZpbGV9XCIgLWQgXCIke2Rpcn1cImApO1xyXG4gICAgICAgICAgICAgICAgICAgIGZzLnJtU3luYyhtYXZlblppcEZpbGUpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyDmt7vliqBtYXZlbiDnjq/looPlj5jph49cclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXaW5kb3dz5qC45b+D5ZG95Luk77ya5rC45LmF6L+95Yqg6Lev5b6E5Yiw44CQ55So5oi3546v5aKD5Y+Y6YePUEFUSOOAke+8jOawuOS5heeUn+aViFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbXZuUGF0aCA9IHBhdGgucmVzb2x2ZShgJHttYXZlbkhvbWV9L2JpbmApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKCBgc2V0eCBQQVRIIFwiJVBBVEglOyR7bXZuUGF0aH1cImAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOKchSDmiJDlip/vvIFNYXZlbui3r+W+hOOAkCR7bXZuUGF0aH3jgJHlt7Lmt7vliqDliLDns7vnu59QQVRI546v5aKD5Y+Y6YePYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+KdjCDmt7vliqDlpLHotKXvvJonLCBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhgbWF2ZW4g5a6J6KOF5a6M5oiQYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOWIneWni+WMlm5vZGXnjq/looNgKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGV4ZWNDbWQoJ25wbSBpbnN0YWxsIC1nIHBucG0gdHlwZXNjcmlwdCAtLXJlZ2lzdHJ5PWh0dHBzOi8vcmVnaXN0cnkubnBtbWlycm9yLmNvbScpO1xyXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOWIneWni+WMlm5vZGXnjq/looPlrozmiJBgKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5qOA5rWLY29kZeaYr+WQpuWtmOWcqGApXHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2RlRGlyID0gYCR7ZGlyfS95ZHMtMS4wLjNgO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGNvZGVEaXIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29kZVppcE5hbWUgPSAneWRzLTEuMC4zLWpkay04LXdpbmRvd3MteDg2XzY0LnppcCdcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5LiL6L29Y29kZSBJREUg5a6J6KOF5YyFICR7Y29kZVppcE5hbWV9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29kZVppcEZpbGUgPSBgJHtkaXJ9LyR7Y29kZVppcE5hbWV9YDtcclxuICAgICAgICAgICAgICAgICAgICAvLyDmo4Dmn6XmmK/lkKblt7Lnu4/lrZjlnKjlronoo4XljIUg5aaC5p6c5pyJ5YWI5Yig6ZmkXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoY29kZVppcEZpbGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDliKDpmaTlt7LlrZjlnKjlronoo4XljIUgJHtjb2RlWmlwRmlsZX1gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnMucm1TeW5jKGNvZGVaaXBGaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5LiL6L295a6J6KOF5YyF5bm26L6T5Ye65pel5b+XXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXhlY0NtZChgJHt3Z2V0fSBodHRwczovL3lvbmNvbW11bml0eS55b255b3VjbG91ZC5jb20vWURTRG93bmxvYWQvV2luZG93L3g2NC8ke2NvZGVaaXBOYW1lfSAtTyBcIiR7Y29kZVppcEZpbGV9XCJgKTtcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg6Kej5Y6L5a6J6KOF5YyFICR7Y29kZVppcEZpbGV9YClcclxuICAgICAgICAgICAgICAgICAgICBmcy5ta2RpclN5bmMoY29kZURpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXhlY0NtZChgXCIke3VuemlwfVwiIFwiJHtjb2RlWmlwRmlsZX1cIiAtZCBcIiR7Y29kZURpcn1cImApO1xyXG4gICAgICAgICAgICAgICAgICAgIGZzLnJtU3luYyhjb2RlWmlwRmlsZSlcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCA1MDAwKSlcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhgY29kZSBJREUg5a6J6KOF5a6M5oiQYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5Yid5aeL5YyWWURTIElERSDlhajlsYDphY3nva5gKVxyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2V0dGluZ3NKc29uID0gYCR7Y29kZURpcn0vQ29kZS9kYXRhL3VzZXItZGF0YS9Vc2VyL3NldHRpbmdzLmpzb25gO1xyXG4gICAgICAgICAgICAgICAgbGV0IHNldHRpbmdzSnNvbk9iaiA9IHt9O1xyXG4gICAgICAgICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoc2V0dGluZ3NKc29uKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzSnNvbk9iaiA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHNldHRpbmdzSnNvbikudG9TdHJpbmcoJ3V0Zi04JykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IHNldHRpbmdYbWwgPSBwYXRoLnJlc29sdmUoYCR7bWF2ZW5Ib21lfS9jb25mL3NldHRpbmdzLnhtbGApO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHNldHRpbmdYbWwpICYmICFmcy5leGlzdHNTeW5jKGAke2Rpcn0vc2V0dGluZ3MueG1sYCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKGAke3dnZXR9ICR7UlNfVVJMfS9zZXR0aW5ncy54bWxgKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5nWG1sID0gcGF0aC5yZXNvbHZlKGAke2Rpcn0vc2V0dGluZ3MueG1sYClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHNldHRpbmdzSnNvbk9ialtcImphdmEuY29uZmlndXJhdGlvbi5tYXZlbi5nbG9iYWxTZXR0aW5nc1wiXSA9IHNldHRpbmdYbWw7XHJcbiAgICAgICAgICAgICAgICBzZXR0aW5nc0pzb25PYmpbXCJqYXZhLmNvbmZpZ3VyYXRpb24ubWF2ZW4udXNlclNldHRpbmdzXCJdID0gc2V0dGluZ1htbDtcclxuICAgICAgICAgICAgICAgIHNldHRpbmdzSnNvbk9ialtcIm1hdmVuLnNldHRpbmdzRmlsZVwiXSA9IHNldHRpbmdYbWw7XHJcbiAgICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHNldHRpbmdzSnNvbiwgSlNPTi5zdHJpbmdpZnkoc2V0dGluZ3NKc29uT2JqLCBudWxsLCA0KSk7XHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5Yid5aeL5YyWWURTIElERSDlhajlsYDphY3nva7lrozmiJBgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyDmo4Dmn6XlvZPliY3nlKjmiLfnm67lvZXkuIsuc3No5piv5ZCm5a2Y5ZyoIGlkX2VkMjU1MTkucHViIOWvhumSpeaWh+S7tu+8jOWmguaenOayoeacieWImeaUvuWIsC5zc2gg55uu5b2V5LiLXHJcbiAgICAgICAgICAgICAgICBjb25zdCBzc2hEaXIgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5lbnYuVVNFUlBST0ZJTEUsICcuc3NoJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoc3NoRGlyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZzLm1rZGlyU3luYyhzc2hEaXIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGAke3NzaERpcn0vaWRfZWQyNTUxOS5wdWJgKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDmi7fotJ3lr4bpkqXmlofku7ZgKTtcclxuICAgICAgICAgICAgICAgICAgICBmcy5jb3B5RmlsZVN5bmMoYCR7ZGlyfS9pZF9lZDI1NTE5LnB1YmAsIGAke3NzaERpcn0vaWRfZWQyNTUxOS5wdWJgKTtcclxuICAgICAgICAgICAgICAgICAgICBmcy5jb3B5RmlsZVN5bmMoYCR7ZGlyfS9pZF9lZDI1NTE5YCwgYCR7c3NoRGlyfS9pZF9lZDI1NTE5YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOaLt+i0neWvhumSpeaWh+S7tuWujOaIkGApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDliJ3lp4vljJZZRFPliLbnm5jnjq/looPlrozmiJBgKVxyXG4gICAgICAgICAgICB9KS5ob29rKCdwb3N0QWN0aW9uJywgKCkgPT4gcHJvY2Vzcy5leGl0KDApKTtcclxuXHJcbiAgICAgICAgcHJvZ3JhbVxyXG4gICAgICAgICAgICAuY29tbWFuZCgnc3RhcnQgPGNhdGFsb2c+IFt3b3JrZGlyXScpXHJcbiAgICAgICAgICAgIC51c2FnZSgnc3RhcnQgPGNhdGFsb2c+IFt3b3JrZGlyXScpXHJcbiAgICAgICAgICAgIC5vcHRpb24oJy1mLCAtLWZpbGUgPGZpbGU+JywgJ+mFjee9ruaWh+S7ticpXHJcbiAgICAgICAgICAgIC5hZGRIZWxwVGV4dCgnYWZ0ZXInLCBgXHJcbumFjee9ruaWh+S7tuWGheWuueekuuS+i++8mlxyXG57XHJcbiAgICBob3N0cz86IEFycmF5PHN0cmluZz47XHJcbiAgICBnaXQ6IFJlY29yZDwnaHJjcGUnIHwgJ2ZlY29kZScsIHN0cmluZz47XHJcbiAgICBjYXRhbG9nczoge1xyXG4gICAgICAgIFtjYXRhbG9nOiBzdHJpbmddOiBSZWNvcmQ8J2hyY3BlJyB8ICdmZWNvZGUnLCBzdHJpbmcgfCB7IHVybDogc3RyaW5nLCBicmFuY2g6IHN0cmluZyB9PlxyXG4gICAgfVxyXG59YClcclxuICAgICAgICAgICAgLmRlc2NyaXB0aW9uKCflkK/liqjliLbnm5jnjq/looPvvIxjYXRhbG9n6KGo56S66ZyA6KaB5Yi255uY55qE5qih5Z2X77yM5a+55bqU6YWN572u5paH5Lu25LitY2F0YWxvZ3PnmoRrZXnlgLzvvIznlKjkuo7mjIflrprpnIDopoHlh7rnm5jnmoTkv6Hmga/vvIx3b3JrZGly6KGo56S65Yi255uY5bel5L2c55uu5b2V77yM5aaC5p6c5LiN5oyH5a6a5YiZ5L2/55So5b2T5YmN55uu5b2VJylcclxuICAgICAgICAgICAgLmFjdGlvbihhc3luYyAoY2F0YWxvZzogc3RyaW5nLCB3b3JrZGlyOiBzdHJpbmcgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSksIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgIGZpbGU6IHN0cmluZ1xyXG4gICAgICAgICAgICB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkaXIgPSBwYXRoLnJlc29sdmUod29ya2Rpcik7XHJcblxyXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOW8gOWni+ajgOa1i+WItuebmOeOr+Wig+ajgOa1i2ApO1xyXG4gICAgICAgICAgICAgICAgbGV0IGdpdENtZCA9ICdnaXQnO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZ2l0RXhpc3RzID0gYXdhaXQgdXRpbC5jbWQuZXhpc3RzKGdpdENtZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWdpdEV4aXN0cykge1xyXG4gICAgICAgICAgICAgICAgICAgIGdpdENtZCA9IGAke2Rpcn0vZ2l0LWZvci13aW5kb3dzL2Jpbi9naXQuZXhlYDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZ2l0Q21kKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoYOacquaJvuWIsGdpdOWRveS7pCAke2dpdENtZH0sIOivt+WFiOaJp+ihjCBpbml0IOWIneWni+WMluWItuebmOeOr+Wig2ApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHNldHRpbmdYbWwgPSBwYXRoLnJlc29sdmUoYCR7ZGlyfS9zZXR0aW5ncy54bWxgKTtcclxuICAgICAgICAgICAgICAgIGxldCBtdm5DbWQgPSAnbXZuJztcclxuICAgICAgICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhzZXR0aW5nWG1sKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBtYXZlbkhvbWUgPSBgJHtkaXJ9L21hdmVuLTMuOC42YDtcclxuICAgICAgICAgICAgICAgICAgICBtdm5DbWQgPSBgXCIke21hdmVuSG9tZX0vYmluL212bi5jbWRcImA7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZ1htbCA9IGAke21hdmVuSG9tZX0vY29uZi9zZXR0aW5ncy54bWxgO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhtdm5DbWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihg5pyq5om+5YiwbXZu5ZG95LukICR7bXZuQ21kfSwg6K+35YWI5omn6KGMIGluaXQg5Yid5aeL5YyW5Yi255uY546v5aKDYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgaWRlUGF0aCA9IGAke2Rpcn0veWRzLTEuMC4zYFxyXG4gICAgICAgICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGlkZVBhdGgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGDmnKrmib7liLBJREUgJHtpZGVQYXRofSwg6K+35YWI5omn6KGMIGluaXQg5Yid5aeL5YyW5Yi255uY546v5aKDYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOWItuebmOeOr+Wig+ajgOa1i+WujOaIkGApXHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgeWRzSnNvbiA9IHBhdGgucmVzb2x2ZShvcHRpb25zLmZpbGUgfHwgYCR7ZGlyfS95ZHMuanNvbmApO1xyXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOW8gOWni+WItuebmCAke2NhdGFsb2d9IOW3peS9nOebruW9le+8miR7ZGlyfWApO1xyXG4gICAgICAgICAgICAgICAgLy8g6K+75Y+W6YWN572u5paH5Lu2XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoeWRzSnNvbikpIHtcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoYOacquaJvuWIsOmFjee9ruaWh+S7tiAke3lkc0pzb259YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgeWRzSnNvblN0ciA9IGZzLnJlYWRGaWxlU3luYyh5ZHNKc29uKS50b1N0cmluZygndXRmLTgnKTtcclxuICAgICAgICAgICAgICAgIC8vIOajgOa1i+mFjee9ruaWh+S7tuaYr+WQpuWujOaVtFxyXG4gICAgICAgICAgICAgICAgbGV0IGNvbmZpZzogWWRzQ29uZmlnO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hlY2tDb25maWdFcnJvciA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoYOmFjee9ruaWh+S7tiAke3lkc0pzb259IOagvOW8j+mUmeivryDlj4LogIPnpLrkvovvvJpcclxue1xyXG4gICAgaG9zdHM/OiBBcnJheTxzdHJpbmc+O1xyXG4gICAgZ2l0OiBSZWNvcmQ8J2hyY3BlJyB8ICdmZWNvZGUnLCBzdHJpbmc+O1xyXG4gICAgY2F0YWxvZ3M6IHtcclxuICAgICAgICBbY2F0YWxvZzogc3RyaW5nXTogUmVjb3JkPCdocmNwZScgfCAnZmVjb2RlJywgc3RyaW5nIHwgeyB1cmw6IHN0cmluZywgYnJhbmNoOiBzdHJpbmcgfT5cclxuICAgIH1cclxufWApO1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnID0gSlNPTi5wYXJzZSh5ZHNKc29uU3RyKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmZpZy5jYXRhbG9ncykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja0NvbmZpZ0Vycm9yKClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tDb25maWdFcnJvcigpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBnaXQgPSBjb25maWcuZ2l0O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2F0YWxvZ0NvbmZpZyA9IGNvbmZpZy5jYXRhbG9nc1tjYXRhbG9nXTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2F0YWxvZ0NvbmZpZyA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoYOmFjee9ruaWh+S7tiAke3lkc0pzb259IOaJvuS4jeWIsCBjYXRhbG9ncy4ke2NhdGFsb2d9IOWFiOWFs+mFjee9rmApO1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2F0YWxvZ0NvbmZpZy5ocmNwZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIGNhdGFsb2dDb25maWcuZmVjb2RlID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihg6YWN572u5paH5Lu2ICR7eWRzSnNvbn0gY2F0YWxvZ3MuJHtjYXRhbG9nfS5ocmNwZSDmiJYgY2F0YWxvZ3MuJHtjYXRhbG9nfS5mZWNvZGUg5a2X5q6157y65aSxYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IG5hbWVzcGFjZSA9IGAke2Rpcn0vJHtjYXRhbG9nfWA7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMobmFtZXNwYWNlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDliJvlu7rnm67lvZUgJHtuYW1lc3BhY2V9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZnMubWtkaXJTeW5jKG5hbWVzcGFjZSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDnm67lvZUgJHtuYW1lc3BhY2V9IOW3suWtmOWcqGApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IGhyY3BlVXJsID0gdHlwZW9mIGNhdGFsb2dDb25maWcuaHJjcGUgPT09ICdzdHJpbmcnID8gZ2l0Py5ocmNwZSA6IGNhdGFsb2dDb25maWcuaHJjcGUudXJsO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFocmNwZVVybCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihg6YWN572u5paH5Lu2ICR7eWRzSnNvbn0gY2F0YWxvZ3MuJHtjYXRhbG9nfSDlkI7nq6/mnI3liqEg5pyq5oyH5a6a5LuT5bqT5Zyw5Z2A77yM6K+36YCa6L+HIGdpdC5ocmNwZSDmiJbogIUgY2F0YWxvZ3MuJHtjYXRhbG9nfS5ocmNwZS51cmwg5oyH5a6a5LuT5bqT5Zyw5Z2AYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5byA5aeL5ouJ5Y+W5ZCO56uv5pyN5Yqh5LuT5bqTICR7aHJjcGVVcmx9YCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhgJHtuYW1lc3BhY2V9Ly5naXRgKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDnm67lvZUgJHtuYW1lc3BhY2V9IOW3suWtmOWcqO+8jOW8gOWni+abtOaWsOS7k+W6k2ApO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGV4ZWNDbWQoYFwiJHtnaXRDbWR9XCIgcHVsbGAsIG5hbWVzcGFjZSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDnm67lvZUgJHtuYW1lc3BhY2V9IOS4jeWtmOWcqO+8jOW8gOWni+WIm+W7uuS7k+W6k2ApO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBicmFuY2ggPSB0eXBlb2YgY2F0YWxvZ0NvbmZpZy5ocmNwZSA9PT0gJ3N0cmluZycgPyBjYXRhbG9nQ29uZmlnLmhyY3BlIDogY2F0YWxvZ0NvbmZpZy5ocmNwZS5icmFuY2g7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFicmFuY2gpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGDphY3nva7mlofku7YgJHt5ZHNKc29ufSBjYXRhbG9ncy4ke2NhdGFsb2d9IOWQjuerr+acjeWKoSDmnKrmjIflrprliIbmlK/vvIzor7fpgJrov4cgZ2l0LmhyY3BlIOaIluiAhSBjYXRhbG9ncy4ke2NhdGFsb2d9LmhyY3BlLmJyYW5jaCDphY3nva7liIbmlK9gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKGBcIiR7Z2l0Q21kfVwiIGNsb25lIC1iICR7YnJhbmNofSAke2hyY3BlVXJsfSAke25hbWVzcGFjZX1gLCBuYW1lc3BhY2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOaLieWPluWQjuerr+acjeWKoeS7k+W6k+WujOaIkGApO1xyXG4gICAgICAgICAgICAgICAgbGV0IGJvb3N0cmFwUG9tWG1sID0gYCR7bmFtZXNwYWNlfS8ke2RvbWFpbktleX0tYmUvZGV2LSR7ZG9tYWluS2V5fS1ib290c3RyYXAvcG9tLnhtbGA7XHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5pu/5o2i5paH5Lu2ICR7Ym9vc3RyYXBQb21YbWx9IOS4reeahFJPT1TkuLpkb21haW5LZXnvvIzlkKbliJnkvJrlr7zoh7TliLbnm5jlpLHotKXvvIzml6Dms5Xmib7liLDliLblk4FgKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGJvb3N0cmFwUG9tWG1sU3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGJvb3N0cmFwUG9tWG1sKS50b1N0cmluZygndXRmLTgnKTtcclxuICAgICAgICAgICAgICAgIGlmIChib29zdHJhcFBvbVhtbFN0cmluZy5pbmNsdWRlcygnUk9PVCcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhib29zdHJhcFBvbVhtbCwgYm9vc3RyYXBQb21YbWxTdHJpbmcucmVwbGFjZSgvUk9PVC9nLCBkb21haW5LZXkpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmhvc3RzICYmIGNvbmZpZy5ob3N0cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5a2Y5ZyoaG9zdHPphY3nva7vvIzmo4DmtYvns7vnu59ob3N0c+mFjee9ruaWh+S7tuaYr+WQpuW3sue7j+mFjee9rmApO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBob3N0c0ZpbGUgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5lbnYuV0lORElSLCAnU3lzdGVtMzInLCAnZHJpdmVycycsICdldGMnLCAnaG9zdHMnKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBob3N0TGlzdCA9IGZzLnJlYWRGaWxlU3luYyhob3N0c0ZpbGUpLnRvU3RyaW5nKCd1dGYtOCcpLnNwbGl0KCdcXG4nKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYXBwZW5kSG9zdHMgPSBbLi4uY29uZmlnLmhvc3RzXVxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGhvc3RJdGVtIG9mIGhvc3RMaXN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvIy8udGVzdChob3N0SXRlbSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGFwcGVuZEhvc3Qgb2YgY29uZmlnLmhvc3RzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbaXAsIGRvbWFpbl0gPSBhcHBlbmRIb3N0LnNwbGl0KCcgJykuZmlsdGVyKGl0ZW0gPT4gaXRlbSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChob3N0SXRlbS5pbmNsdWRlcyhpcCkgJiYgaG9zdEl0ZW0uaW5jbHVkZXMoZG9tYWluKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDns7vnu59ob3N0c+mFjee9ruaWh+S7tuW3suWtmOWcqCAke2FwcGVuZEhvc3R9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSG9zdHMucmVtb3ZlKGFwcGVuZEhvc3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOivu+WPluezu+e7n2hvc3Rz6YWN572u5paH5Lu2XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFwcGVuZEhvc3RzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNBZG1pbigpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcy5hcHBlbmRGaWxlU3luYyhob3N0c0ZpbGUsIGBcXG4ke2FwcGVuZEhvc3RzLmpvaW4oJ1xcbicpfVxcbmAsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZzogJ3V0Zi04J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihg5b2T5YmN6Z2e566h55CG5ZGY5ZCv5Yqo5peg5rOV5pu05pS5aG9zdHPmlofku7bvvIzor7fkvb/nlKjnrqHnkIblkZjlkK/liqjmiJbogIXmiYvliqjmt7vliqAgJHthcHBlbmRIb3N0cy5qb2luKCdcXG4nKX0g5Yiw5paH5Lu2ICR7aG9zdHNGaWxlfWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBob3N0cyDphY3nva7mo4DmtYvlrozmiJBgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygn5Yid5aeL5YyW6aG555uubWF2ZW7njq/looMnKTtcclxuICAgICAgICAgICAgICAgIGxldCBtdm5Db25maWdEaXIgPSBgJHtuYW1lc3BhY2V9Ly5tdm5gO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKG12bkNvbmZpZ0RpcikpIHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKGAke212bkNtZH0gLU4gaW8udGFrYXJpOm1hdmVuOndyYXBwZXIgLURtYXZlbj0zLjguNmAsIG5hbWVzcGFjZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyDlhpnlhaVtYXZlbumFjee9ruWIsCAubXZuL21hdmVuLmNvbmZpZ1xyXG4gICAgICAgICAgICAgICAgbGV0IGNvbmZpZ0ZpbGUgPSBgJHttdm5Db25maWdEaXJ9L21hdmVuLmNvbmZpZ2A7XHJcbiAgICAgICAgICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhjb25maWdGaWxlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZzLnJtU3luYyhjb25maWdGaWxlKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhgJHttdm5Db25maWdEaXJ9L21hdmVuLmNvbmZpZ2AsIGAtc1xcbiR7c2V0dGluZ1htbH1cXG4tRG1hdmVuLndhZ29uLmh0dHAuc3NsLmluc2VjdXJlPXRydWVcXG4tRG1hdmVuLndhZ29uLmh0dHAuc3NsLmFsbG93YWxsPXRydWVgKTtcclxuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDlvZPliY1tYXZlbuS/oeaBr2ApXHJcbiAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKGAke212bkNtZH0gLS12ZXJzaW9uYCwgbmFtZXNwYWNlKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygn6aG555uubWF2ZW7muIXnkIYnKVxyXG4gICAgICAgICAgICAgICAgYXdhaXQgZXhlY0NtZChgJHttdm5DbWR9IGNsZWFuIC1Ec2tpcFRlc3RzYCwgYCR7bmFtZXNwYWNlfS8ke2RvbWFpbktleX0tYmVgKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygn5aSE55CG5YmN56uv5p6E5bu677yM5aKe5Yqg5p6E5bu65paH5Lu2Jyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgZmVEaXIgPSBgJHtuYW1lc3BhY2V9LyR7ZG9tYWluS2V5fS1mZWA7XHJcbiAgICAgICAgICAgICAgICBsZXQgZmVCdWlsZEpzID0gYCR7ZmVEaXJ9L2J1aWxkLmpzYDtcclxuICAgICAgICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhmZUJ1aWxkSnMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZnMuY3BTeW5jKGAke2Rpcn0vZmUtYnVpbGQuanNgLCBmZUJ1aWxkSnMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IGZlUGFja2FnZUpzb24gPSBgJHtmZURpcn0vcGFja2FnZS5qc29uYDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhY2thZ2VTdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoZmVQYWNrYWdlSnNvbikudG9TdHJpbmcoJ3V0Zi04Jyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXBhY2thZ2VTdHJpbmcuaW5jbHVkZXMoJ2J1aWxkLmpzJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5L+u5pS5JHtmZVBhY2thZ2VKc29ufWApO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhY2thZ2VKc29uID0gSlNPTi5wYXJzZShwYWNrYWdlU3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICBwYWNrYWdlSnNvbi5zY3JpcHRzWydidWlsZDpleHRlbmQnXSArPSAnICYmIG5vZGUgYnVpbGQuanMnO1xyXG4gICAgICAgICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZmVQYWNrYWdlSnNvbiwgSlNPTi5zdHJpbmdpZnkocGFja2FnZUpzb24sIG51bGwsIDQpKTtcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5L+u5pS5JHtmZVBhY2thZ2VKc29ufeWujOaIkGApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgZmVjb2RlVXJsID0gdHlwZW9mIGNhdGFsb2dDb25maWcuZmVjb2RlID09PSAnc3RyaW5nJyA/IGdpdD8uZmVjb2RlIDogY2F0YWxvZ0NvbmZpZy5mZWNvZGUudXJsO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFmZWNvZGVVcmwpIHtcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoYOmFjee9ruaWh+S7tiAke3lkc0pzb259IGNhdGFsb2dzLiR7Y2F0YWxvZ30g5ZCO56uv5pyN5YqhIOacquaMh+WumuS7k+W6k+WcsOWdgO+8jOivt+mAmui/hyBnaXQuZmVjb2RlIOaIluiAhSBjYXRhbG9ncy4ke2NhdGFsb2d9LmZlY29kZS51cmwg5oyH5a6a5LuT5bqT5Zyw5Z2AYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5byA5aeL5ouJ5Y+W5oql5ZGK5pyN5Yqh5LuT5bqTICR7ZmVjb2RlVXJsfWApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlcG9ydE5hbWVzcGFjZSA9IGAke25hbWVzcGFjZX0veW9uYmlwLXlpc3YtaXpwMS1kZXYtZmVjb2RlYDtcclxuICAgICAgICAgICAgICAgIGlmIChmcy5leGlzdHNTeW5jKGAke3JlcG9ydE5hbWVzcGFjZX0vLmdpdGApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOebruW9lSAke3JlcG9ydE5hbWVzcGFjZX0g5bey5a2Y5Zyo77yM5byA5aeL5pu05paw5LuT5bqTYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXhlY0NtZChgXCIke2dpdENtZH1cIiBwdWxsYCwgcmVwb3J0TmFtZXNwYWNlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOebruW9lSAke3JlcG9ydE5hbWVzcGFjZX0g5LiN5a2Y5Zyo77yM5byA5aeL5Yib5bu65LuT5bqTYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGJyYW5jaCA9IHR5cGVvZiBjYXRhbG9nQ29uZmlnLmZlY29kZSA9PT0gJ3N0cmluZycgPyBjYXRhbG9nQ29uZmlnLmZlY29kZSA6IGNhdGFsb2dDb25maWcuZmVjb2RlLmJyYW5jaDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWJyYW5jaCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoYOmFjee9ruaWh+S7tiAke3lkc0pzb259IGNhdGFsb2dzLiR7Y2F0YWxvZ30g5oql5ZGK5pyN5Yqh5pyq5oyH5a6a5YiG5pSv77yM6K+36YCa6L+HIGdpdC5mZWNvZGUg5oiW6ICFIGNhdGFsb2dzLiR7Y2F0YWxvZ30uZmVjb2RlLmJyYW5jaCDphY3nva7liIbmlK9gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKGBcIiR7Z2l0Q21kfVwiIGNsb25lIC1iICR7YnJhbmNofSAke2ZlY29kZVVybH0gJHtyZXBvcnROYW1lc3BhY2V9YCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5ouJ5Y+W5oql5ZGK5pyN5Yqh5LuT5bqT5a6M5oiQYCk7XHJcblxyXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ+WkhOeQhuaKpeWRiuaehOW7uu+8jOWinuWKoOaehOW7uuaWh+S7ticpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGZlY29kZUJ1aWxkSnMgPSBgJHtyZXBvcnROYW1lc3BhY2V9L2J1aWxkLmpzYDtcclxuICAgICAgICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhmZWNvZGVCdWlsZEpzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZzLmNwU3luYyhgJHtkaXJ9L2ZlY29kZS1idWlsZC5qc2AsIGZlY29kZUJ1aWxkSnMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IGZlY29kZVBhY2thZ2VKc29uID0gYCR7cmVwb3J0TmFtZXNwYWNlfS9wYWNrYWdlLmpzb25gO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmVjb2RlUGFja2FnZVN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhmZWNvZGVQYWNrYWdlSnNvbikudG9TdHJpbmcoJ3V0Zi04Jyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZlY29kZVBhY2thZ2VTdHJpbmcuaW5jbHVkZXMoJ2J1aWxkLmpzJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5L+u5pS5JHtmZWNvZGVQYWNrYWdlSnNvbn1gKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UoZmVjb2RlUGFja2FnZVN0cmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFja2FnZUpzb24uc2NyaXB0c1snYnVpbGQnXSArPSAnICYmIG5vZGUgYnVpbGQuanMnO1xyXG4gICAgICAgICAgICAgICAgICAgIHBhY2thZ2VKc29uLmRvbWFpbktleSA9IGRvbWFpbktleTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDliKDpmaTmraTkvp3otZYg5Lya5a+86Ie0bnBtIGkg5aSx6LSlXHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBhY2thZ2VKc29uLmRlcGVuZGVuY2llcy56bGliXHJcbiAgICAgICAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhmZWNvZGVQYWNrYWdlSnNvbiwgSlNPTi5zdHJpbmdpZnkocGFja2FnZUpzb24sIG51bGwsIDQpKTtcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5L+u5pS5JHtmZWNvZGVQYWNrYWdlSnNvbn3lrozmiJBgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5a6J6KOF5oql5ZGK5pyN5Yqh5L6d6LWWYCk7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKCducG0gaScsIHJlcG9ydE5hbWVzcGFjZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOeUn+aIkHZlcnNpb24uanNvbiDmlofku7ZgKVxyXG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IHJhbmRvbVVVSUQoKS50b1N0cmluZygpXHJcbiAgICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGAke3JlcG9ydE5hbWVzcGFjZX0vdmVyc2lvbi5qc29uYCwgYHtcInZlcnNpb25cIjogXCIke3V1aWR9XCJ9YCk7XHJcblxyXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ+WIneWni+WMlumhueebrueOr+Wig+i1hOa6kCcpO1xyXG4gICAgICAgICAgICAgICAgLy8g5aaC5p6cIG5hbWVzcGFjZS8oZGlza3xkaXNrcykg5aaC5p6c5a2Y5ZyoIOi3s+i/h1xyXG4gICAgICAgICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoYCR7bmFtZXNwYWNlfS9kaXNrYCkgfHwgZnMuZXhpc3RzU3luYyhgJHtuYW1lc3BhY2V9L2Rpc2tzYCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5bey5a2Y5Zyo77yM6Lez6L+H546v5aKD6LWE5rqQ5paH5Lu25LiL6L29YCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZGZzLnpoaXBlci5jb20vdjNyNi9lbnYuemlwXHJcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOW8gOWni+S4i+i9vemhueebrueOr+Wig+i1hOa6kOaWh+S7tmApXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGdpdFppcEZpbGUgPSBgJHtuYW1lc3BhY2V9L2Vudi56aXBgO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGV4ZWNDbWQoYCR7d2dldH0gJHtSU19VUkx9L2Vudi56aXAgLU8gXCIke2dpdFppcEZpbGV9XCJgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOino+WOi+i1hOa6kOaWh+S7tuWMhSAke2dpdFppcEZpbGV9YClcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKGBcIiR7dW56aXB9XCIgXCIke2dpdFppcEZpbGV9XCJgLCBuYW1lc3BhY2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIGZzLnJtU3luYyhnaXRaaXBGaWxlKVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCflkK/liqhJREUnKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGV4ZWNDbWQoYFwiJHtpZGVQYXRofS9Db2RlL0NvZGUuZXhlXCIgXCIke25hbWVzcGFjZX1cImApO1xyXG4gICAgICAgICAgICAgICAgLy8g6ZyA6KaB562J5b6FSURF5ZCv5Yqo5a6M5oiQ5ZCO5YWz6ZetXHJcbiAgICAgICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMzAwMCkpXHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygn5bey5ZCv5YqoSURF77yM6K+35oyJ54Wn5paH5qGj6K+05piO6L+b6KGM5Yi255uY5pON5L2cJylcclxuICAgICAgICAgICAgfSkuaG9vaygncG9zdEFjdGlvbicsICgpID0+IHByb2Nlc3MuZXhpdCgwKSk7XHJcblxyXG4gICAgICAgIHByb2dyYW0ucGFyc2UocHJvY2Vzcy5hcmd2KVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
472
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQWtDO0FBQ2xDLGlEQUFtQztBQUNuQyx5Q0FBOEM7QUFDOUMsZ0RBQWtDO0FBQ2xDLGtFQUFvRDtBQUNwRCw0Q0FBOEI7QUFDOUIsNENBQThCO0FBQzlCLG1DQUFpQztBQUVqQyxNQUFNLFNBQVMsR0FBRyx1QkFBdUIsQ0FBQztBQUMxQyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUN2QyxNQUFNLE1BQU0sR0FBRyw2QkFBNkIsQ0FBQztBQUU3QyxNQUFNLE1BQU0sR0FBVyx5QkFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUV0RCxNQUFNLE9BQU8sR0FBRyxDQUFPLE9BQWUsRUFBRSxHQUFZLEVBQUUsRUFBRTtJQUNwRCxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUEsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzRCxJQUFJLEtBQUssR0FBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDeEIsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUU7UUFDNUIsR0FBRyxFQUFFLFFBQVEsRUFBRSxPQUFPO1FBQ3RCLE9BQU8sRUFBRSxDQUFDO1FBQ1YsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDbkIsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLE9BQU8saUJBQWlCLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLE1BQU0sQ0FBQyxDQUFBO0FBQ3pFLENBQUMsQ0FBQSxDQUFBO0FBRUQsTUFBTSxRQUFR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QkFFOUQsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLFVBQVUsRUFBRSxDQUFDLENBQUE7Z0JBQ3BDLE1BQU0sT0FBTyxDQUFDLElBQUksS0FBSyxNQUFNLFVBQVUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUN2RCxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQ3pCLENBQUM7WUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JCLE1BQU0sT0FBTyxDQUFDLElBQUksT0FBTyxvQkFBb0IsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUUzRCxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO1lBQ3ZELE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtRQUN2QyxDQUFDLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWpELG1CQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMvQixDQUFDO0NBQ0o7QUE1YUQsdUJBNGFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtwcm9ncmFtfSBmcm9tIFwiY29tbWFuZGVyXCI7XHJcbmltcG9ydCAqIGFzIHByb2Nlc3MgZnJvbSBcInByb2Nlc3NcIjtcclxuaW1wb3J0IHtMb2dnZXJGYWN0b3J5LCB1dGlsfSBmcm9tIFwidndlYi1jb3JlXCI7XHJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xyXG5pbXBvcnQgKiBhcyBjaGlsZF9wcm9jZXNzIGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcclxuaW1wb3J0ICogYXMgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcclxuaW1wb3J0ICogYXMgb3MgZnJvbSAnbm9kZTpvcyc7XHJcbmltcG9ydCB7cmFuZG9tVVVJRH0gZnJvbSAnY3J5cHRvJ1xyXG5cclxuY29uc3QgZG9tYWluS2V5ID0gJ3AtaGNjLWkwMDAtcDAwYS1ocmNwZSc7XHJcbmNvbnN0IHBrZyA9IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpO1xyXG5jb25zdCBSU19VUkwgPSAnaHR0cHM6Ly9kZnMuemhpcGVyLmNvbS92M3I2JztcclxuXHJcbmNvbnN0IGxvZ2dlcjogTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1lEUycpO1xyXG5cclxuY29uc3QgZXhlY0NtZCA9IGFzeW5jIChjb21tYW5kOiBzdHJpbmcsIGN3ZD86IHN0cmluZykgPT4ge1xyXG4gICAgbG9nZ2VyLmluZm8oYOaJp+ihjOWRveS7pCAke2NvbW1hbmR9ICR7Y3dkID8gYO+8jOaJp+ihjOebruW9leS4uiR7Y3dkfWAgOicnfWApO1xyXG4gICAgbGV0IHN0YXJ0ICA9IERhdGUubm93KCk7XHJcbiAgICBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKGNvbW1hbmQsIHtcclxuICAgICAgICBjd2QsIGVuY29kaW5nOiAndXRmLTgnLFxyXG4gICAgICAgIHRpbWVvdXQ6IDAsIC8vIOiuvuS4uuS4jei/h+acn++8jOS4i+i9vemAn+W6pui/h+aFouS8muWvvOiHtOi2heaXtlxyXG4gICAgICAgIHN0ZGlvOiBbMCwgMSwgMl1cclxuICAgIH0pO1xyXG4gICAgbG9nZ2VyLmluZm8oYOaJp+ihjOWRveS7pCAke2NvbW1hbmR9IOiAl+aXtiBcXHgxQlszNG0gPCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zPl1gKVxyXG59XHJcblxyXG5jb25zdCBwbGF0Zm9ybSA9IG9zLnBsYXRmb3JtKClcclxuaWYgKHBsYXRmb3JtICE9PSAnd2luMzInKSB7XHJcbiAgICBsb2dnZXIuZXJyb3IoJ+W9k+WJjeW3peWFt+S7heaUr+aMgXdpbmRvd3Pns7vnu58nKTtcclxuICAgIHByb2Nlc3MuZXhpdCgxKTtcclxufVxyXG5cclxuY29uc3QgaXNBZG1pbiA9ICgpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgLy8g5bCd6K+V5omn6KGM5LiA5Liq5Y+q5pyJ566h55CG5ZGY5omN6IO96L+Q6KGM55qE5ZG95LukXHJcbiAgICAgICAgLy8g5L2/55SoID5udWwgMj4mMSDmnaXmipHliLbovpPlh7pcclxuICAgICAgICBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKCduZXQgc2Vzc2lvbiA+bnVsIDI+JjEnKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTsgLy8g5oiQ5Yqf5omn6KGMXHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7IC8vIOaJp+ihjOWksei0pe+8jOadg+mZkOS4jei2s1xyXG4gICAgfVxyXG59XHJcblxyXG5sZXQgd2dldCA9IHBhdGguam9pbihfX2Rpcm5hbWUgLCcuLi93Z2V0LmV4ZScpO1xyXG5sZXQgemlwID0gcGF0aC5qb2luKF9fZGlybmFtZSAsJy4uL3ppcC5leGUnKTtcclxubGV0IHVuemlwID0gcGF0aC5qb2luKF9fZGlybmFtZSAsJy4uL3VuemlwLmV4ZScpO1xyXG5cclxucHJvZ3JhbS5uYW1lKFwieWRzXCIpXHJcbiAgICAudXNhZ2UoXCJbY29tbWFuZF0gW29wdGlvbnNdXCIpXHJcbiAgICAuZGVzY3JpcHRpb24oXCJ5ZHMg5Yi255uY5bel5YW3IOWmguaenOWRveS7pOWPguaVsOS4reWtmOWcqOepuuagvCDkvb/nlKjlj4zlvJXlj7dcXFwiXFxcIuWMheijuVwiKVxyXG4gICAgLnZlcnNpb24oYHlkcyAke3BrZy52ZXJzaW9ufWApO1xyXG5cclxudHlwZSBNaWNyb1NlcnZpY2UgPSAnaHJjcGUnIHwgJ2ZlY29kZSc7XHJcblxyXG50eXBlIEdpdCA9IHtcclxuICAgIHVybDogc3RyaW5nLFxyXG4gICAgYnJhbmNoOiBzdHJpbmdcclxufVxyXG5cclxudHlwZSBZZHNDb25maWcgPSB7XHJcbiAgICBob3N0czogQXJyYXk8c3RyaW5nPjtcclxuICAgIGdpdDogUmVjb3JkPE1pY3JvU2VydmljZSwgc3RyaW5nPjtcclxuICAgIGNhdGFsb2dzOiB7XHJcbiAgICAgICAgW2NhdGFsb2c6IHN0cmluZ106IFJlY29yZDxNaWNyb1NlcnZpY2UsIHN0cmluZyB8IEdpdD5cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWFpbiB7XHJcblxyXG4gICAgc3RhcnR1cCgpIHtcclxuICAgICAgICBwcm9ncmFtXHJcbiAgICAgICAgICAgIC5jb21tYW5kKCdjbGVhbiBbd29ya2Rpcl0nKVxyXG4gICAgICAgICAgICAudXNhZ2UoJ2NsZWFuIFt3b3JrZGlyXScpXHJcbiAgICAgICAgICAgIC5kZXNjcmlwdGlvbign5riF55CG5Yi255uY5bel5L2c55uu5b2VLCB3b3JrZGly6KGo56S65Yi255uY5bel5L2c55uu5b2V77yM5aaC5p6c5LiN5oyH5a6a5YiZ5L2/55So5b2T5YmN55uu5b2VJylcclxuICAgICAgICAgICAgLmFjdGlvbihhc3luYyAod29ya2Rpcjogc3RyaW5nID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCkpKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkaXIgPSBwYXRoLnJlc29sdmUod29ya2Rpcik7XHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5riF55CG5Yi255uY5bel5L2c55uu5b2VICR7ZGlyfWApO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZmlsZSBvZiBmcy5yZWFkZGlyU3luYyhkaXIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGVTdGF0ID0gZnMuc3RhdFN5bmMoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZnMucm1TeW5jKGZpbGUsIHtyZWN1cnNpdmU6IGZpbGVTdGF0LmlzRGlyZWN0b3J5KCl9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDliLbnm5jlt6XkvZznm67lvZXmuIXnkIblrozmiJBgKTtcclxuICAgICAgICAgICAgfSkuaG9vaygncG9zdEFjdGlvbicsICgpID0+IHByb2Nlc3MuZXhpdCgwKSk7XHJcblxyXG4gICAgICAgIHByb2dyYW1cclxuICAgICAgICAgICAgLmNvbW1hbmQoJ2luaXQgW3dvcmtkaXJdJylcclxuICAgICAgICAgICAgLnVzYWdlKCdpbml0IFt3b3JrZGlyXScpXHJcbiAgICAgICAgICAgIC5kZXNjcmlwdGlvbign5Yid5aeL5YyWWURT5Yi255uY546v5aKDLCB3b3JrZGly6KGo56S65Yi255uY5bel5L2c55uu5b2V77yM5aaC5p6c5LiN5oyH5a6a5YiZ5L2/55So5b2T5YmN55uu5b2VJylcclxuICAgICAgICAgICAgLmFjdGlvbihhc3luYyAod29ya2Rpcjogc3RyaW5nID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCkpKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkaXIgPSBwYXRoLnJlc29sdmUod29ya2Rpcik7XHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5Yid5aeL5YyWWURT5Yi255uY546v5aKDIOW3peS9nOebruW9le+8miR7ZGlyfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGdpdEV4aXN0cyA9IGF3YWl0IHV0aWwuY21kLmV4aXN0cygnZ2l0Jyk7XHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5qOA5p+l5piv5ZCm5a6J6KOF5LqGZ2l0ID4+ICR7Z2l0RXhpc3RzID8gJ+W3suWuieijhScgOiAn5pyq5a6J6KOFJ31gKTtcclxuICAgICAgICAgICAgICAgIGlmICghZ2l0RXhpc3RzICYmICFmcy5leGlzdHNTeW5jKGAke2Rpcn0vZ2l0LWZvci13aW5kb3dzYCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBnaXRaaXBOYW1lID0gJ2dpdC1mb3Itd2luZG93cy56aXAnXHJcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOS4i+i9vWdpdCDlronoo4XljIUgJHtnaXRaaXBOYW1lfWApO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdpdFppcEZpbGUgPSBgJHtkaXJ9LyR7Z2l0WmlwTmFtZX1gO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOajgOafpeaYr+WQpuW3sue7j+WtmOWcqOWuieijheWMhSDlpoLmnpzmnInlhYjliKDpmaRcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhnaXRaaXBGaWxlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5Yig6Zmk5bey5a2Y5Zyo5a6J6KOF5YyFICR7Z2l0WmlwRmlsZX1gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnMucm1TeW5jKGdpdFppcEZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyDkuIvovb3lronoo4XljIXlubbovpPlh7rml6Xlv5dcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKGAke3dnZXR9ICR7UlNfVVJMfS8ke2dpdFppcE5hbWV9IC1PIFwiJHtnaXRaaXBGaWxlfVwiYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOino+WOi+WuieijheWMhSAke2dpdFppcEZpbGV9YClcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKGBcIiR7dW56aXB9XCIgXCIke2dpdFppcEZpbGV9XCIgLWQgXCIke2Rpcn1cImApO1xyXG4gICAgICAgICAgICAgICAgICAgIGZzLnJtU3luYyhnaXRaaXBGaWxlKVxyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBnaXQg5a6J6KOF5a6M5oiQYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgamF2YUV4aXN0cyA9IGF3YWl0IHV0aWwuY21kLmV4aXN0cygnamF2YScpO1xyXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOajgOafpeaYr+WQpuWuieijheS6hmphdmEgPj4gJHtqYXZhRXhpc3RzID8gJ+W3suWuieijhScgOiAn5pyq5a6J6KOFJ31gKTtcclxuICAgICAgICAgICAgICAgIGlmICghamF2YUV4aXN0cykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCfmnKrmib7liLBqYXZh77yM5YeG5aSH5a6J6KOFamF2Ye+8jOW8gOWni+S4i+i9vWpkaycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGpka1ppcE5hbWUgPSAnamRrLTExLjAuMTUuMV93aW5kb3dzLXg2NF9iaW4uemlwJ1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGV4ZWNDbWQoYCR7d2dldH0gJHtSU19VUkx9LyR7amRrWmlwTmFtZX0gLU8gXCIke2Rpcn0vJHtqZGtaaXBOYW1lfVwiYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOino+WOi2pkayDlronoo4XljIUgJHtkaXJ9LyR7amRrWmlwTmFtZX1gKVxyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGV4ZWNDbWQoYFwiJHt1bnppcH1cIiBcIiR7ZGlyfS8ke2pka1ppcE5hbWV9XCJgLCBkaXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDphY3nva5qYXZh546v5aKD5Y+Y6YePYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGphdmFIb21lID0gYCR7ZGlyfS9qZGstMTEuMC4xNS4xYDtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKGBzZXR4IEpBVkFfSE9NRSBcIiR7amF2YUhvbWV9XCJgKTtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKGBzZXR4IENMQVNTX1BBVEggXCIuOyVKQVZBX0hPTUUlXFxsaWI7XCJgKTtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKCBgc2V0eCBQQVRIIFwiJVBBVEglOyVKQVZBX0hPTUUlXFxiaW47XCJgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5lbnYuSkFWQV9IT01FID0gamF2YUhvbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYGphdmEg5a6J6KOF5a6M5oiQYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOajgOafpWphdmHniYjmnKxgKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGV4ZWNDbWQoJ2phdmEgLXZlcnNpb24nKTtcclxuICAgICAgICAgICAgICAgIC8vIOWvvOWFpeivgeS5puWIsGphdmEg5aaC5p6camF2YeaYrzEuOOeJiOacrCDpnIDopoHlr7zlhaXliLAgSkFWQV9IT01FL2pyZS9saWIvc2VjdXJpdHkvY2FjZXJ0cyDlpoLmnpzmmK8xMeeJiOacrCDpnIDopoHlr7zlhaXliLAgSkFWQV9IT01FL2xpYi9zZWN1cml0eS9jYWNlcnRzXHJcbiAgICAgICAgICAgICAgICBjb25zdCBqYXZhSG9tZSA9IHByb2Nlc3MuZW52LkpBVkFfSE9NRTtcclxuICAgICAgICAgICAgICAgIGlmIChqYXZhSG9tZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjZXJ0c0ZpbGVuYW1lID0gJ2xpYi9zZWN1cml0eS9jYWNlcnRzJztcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY2VydHNGaWxlID0gYCR7amF2YUhvbWV9LyR7Y2VydHNGaWxlbmFtZX1gO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhjZXJ0c0ZpbGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRzRmlsZSA9IGAke2phdmFIb21lfS9qcmUvJHtjZXJ0c0ZpbGVuYW1lfWA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDmo4Dmn6VqYXZh6K+B5Lmm55uu5b2VICR7Y2VydHNGaWxlfWApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmcy5leGlzdHNTeW5jKGNlcnRzRmlsZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Yik5pat6K+B5Lmm5piv5ZCm5bey57uP5a+85YWlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKGBrZXl0b29sIC1saXN0IC12IC1rZXlzdG9yZSBcIiR7Y2VydHNGaWxlfVwiIC1zdG9yZXBhc3MgY2hhbmdlaXQgLS1hbGlhcyB5eXJkYClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGB5eXJkLmNydCDor4Hkuablt7LlrZjlnKhgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g6K+B5Lmm5LiN5a2Y5ZyoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5a+85YWlIHl5cmQuY3J0IOivgeS5puWIsGphdmEgJHtjZXJ0c0ZpbGV9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKGBrZXl0b29sIC1pbXBvcnRjZXJ0IC1maWxlIFwiJHtkaXJ9L3l5cmQuY3J0XCIgLWtleXN0b3JlIFwiJHtjZXJ0c0ZpbGV9XCIgLXN0b3JlcGFzcyBjaGFuZ2VpdCAtbm9wcm9tcHRgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGB5eXJkLmNydCDor4Hkuablr7zlhaXlrozmiJBgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBtYXZlbkhvbWUgPSBgJHtkaXJ9L21hdmVuLTMuOC42YDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1hdmVuRXhpc3RzID0gdXRpbC5jbWQuZXhpc3RzKCdtdm4nKTtcclxuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDmo4Dmn6XmmK/lkKblronoo4XkuoZtYXZlbiA+PiAke21hdmVuRXhpc3RzID8gJ+W3suWuieijhScgOiAn5pyq5a6J6KOFJ31gKTtcclxuICAgICAgICAgICAgICAgIGlmICghbWF2ZW5FeGlzdHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXZlblppcE5hbWUgPSAnbWF2ZW4tMy44LjYuemlwJ1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDkuIvovb1tYXZlbiDlronoo4XljIUgJHttYXZlblppcE5hbWV9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF2ZW5aaXBGaWxlID0gYCR7ZGlyfS8ke21hdmVuWmlwTmFtZX1gO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOajgOafpeaYr+WQpuW3sue7j+WtmOWcqOWuieijheWMhSDlpoLmnpzmnInlhYjliKDpmaRcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhtYXZlblppcEZpbGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDliKDpmaTlt7LlrZjlnKjlronoo4XljIUgJHttYXZlblppcEZpbGV9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZzLnJtU3luYyhtYXZlblppcEZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyDkuIvovb3lronoo4XljIXlubbovpPlh7rml6Xlv5dcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKGAke3dnZXR9ICR7UlNfVVJMfS8ke21hdmVuWmlwTmFtZX0gLU8gXCIke21hdmVuWmlwRmlsZX1cImApO1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDop6Pljovlronoo4XljIUgJHttYXZlblppcEZpbGV9YClcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKGBcIiR7dW56aXB9XCIgXCIke21hdmVuWmlwRmlsZX1cIiAtZCBcIiR7ZGlyfVwiYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZnMucm1TeW5jKG1hdmVuWmlwRmlsZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOa3u+WKoG1hdmVuIOeOr+Wig+WPmOmHj1xyXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdpbmRvd3PmoLjlv4Plkb3ku6TvvJrmsLjkuYXov73liqDot6/lvoTliLDjgJDnlKjmiLfnjq/looPlj5jph49QQVRI44CR77yM5rC45LmF55Sf5pWIXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtdm5QYXRoID0gcGF0aC5yZXNvbHZlKGAke21hdmVuSG9tZX0vYmluYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGV4ZWNDbWQoIGBzZXR4IFBBVEggXCIlUEFUSCU7JHttdm5QYXRofVwiYCApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg4pyFIOaIkOWKn++8gU1hdmVu6Lev5b6E44CQJHttdm5QYXRofeOAkeW3sua3u+WKoOWIsOezu+e7n1BBVEjnjq/looPlj5jph49gKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign4p2MIOa3u+WKoOWksei0pe+8micsIGVyci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBtYXZlbiDlronoo4XlrozmiJBgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5Yid5aeL5YyWbm9kZeeOr+Wig2ApO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgZXhlY0NtZCgnbnBtIGluc3RhbGwgLWcgcG5wbSB0eXBlc2NyaXB0IC0tcmVnaXN0cnk9aHR0cHM6Ly9yZWdpc3RyeS5ucG1taXJyb3IuY29tJyk7XHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5Yid5aeL5YyWbm9kZeeOr+Wig+WujOaIkGApO1xyXG5cclxuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDmo4DmtYtjb2Rl5piv5ZCm5a2Y5ZyoYClcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVEaXIgPSBgJHtkaXJ9L3lkcy0xLjAuM2A7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoY29kZURpcikpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2RlWmlwTmFtZSA9ICd5ZHMtMS4wLjMtamRrLTgtd2luZG93cy14ODZfNjQuemlwJ1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDkuIvovb1jb2RlIElERSDlronoo4XljIUgJHtjb2RlWmlwTmFtZX1gKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2RlWmlwRmlsZSA9IGAke2Rpcn0vJHtjb2RlWmlwTmFtZX1gO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOajgOafpeaYr+WQpuW3sue7j+WtmOWcqOWuieijheWMhSDlpoLmnpzmnInlhYjliKDpmaRcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhjb2RlWmlwRmlsZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOWIoOmZpOW3suWtmOWcqOWuieijheWMhSAke2NvZGVaaXBGaWxlfWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmcy5ybVN5bmMoY29kZVppcEZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyDkuIvovb3lronoo4XljIXlubbovpPlh7rml6Xlv5dcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKGAke3dnZXR9IGh0dHBzOi8veW9uY29tbXVuaXR5LnlvbnlvdWNsb3VkLmNvbS9ZRFNEb3dubG9hZC9XaW5kb3cveDY0LyR7Y29kZVppcE5hbWV9IC1PIFwiJHtjb2RlWmlwRmlsZX1cImApO1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDop6Pljovlronoo4XljIUgJHtjb2RlWmlwRmlsZX1gKVxyXG4gICAgICAgICAgICAgICAgICAgIGZzLm1rZGlyU3luYyhjb2RlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKGBcIiR7dW56aXB9XCIgXCIke2NvZGVaaXBGaWxlfVwiIC1kIFwiJHtjb2RlRGlyfVwiYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZnMucm1TeW5jKGNvZGVaaXBGaWxlKVxyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDUwMDApKVxyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBjb2RlIElERSDlronoo4XlrozmiJBgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDliJ3lp4vljJZZRFMgSURFIOWFqOWxgOmFjee9rmApXHJcbiAgICAgICAgICAgICAgICBjb25zdCBzZXR0aW5nc0pzb24gPSBgJHtjb2RlRGlyfS9Db2RlL2RhdGEvdXNlci1kYXRhL1VzZXIvc2V0dGluZ3MuanNvbmA7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2V0dGluZ3NKc29uT2JqID0ge307XHJcbiAgICAgICAgICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhzZXR0aW5nc0pzb24pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3NKc29uT2JqID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoc2V0dGluZ3NKc29uKS50b1N0cmluZygndXRmLTgnKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgc2V0dGluZ1htbCA9IHBhdGgucmVzb2x2ZShgJHttYXZlbkhvbWV9L2NvbmYvc2V0dGluZ3MueG1sYCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoc2V0dGluZ1htbCkgJiYgIWZzLmV4aXN0c1N5bmMoYCR7ZGlyfS9zZXR0aW5ncy54bWxgKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGV4ZWNDbWQoYCR7d2dldH0gJHtSU19VUkx9L3NldHRpbmdzLnhtbGApO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdYbWwgPSBwYXRoLnJlc29sdmUoYCR7ZGlyfS9zZXR0aW5ncy54bWxgKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgc2V0dGluZ3NKc29uT2JqW1wiamF2YS5jb25maWd1cmF0aW9uLm1hdmVuLmdsb2JhbFNldHRpbmdzXCJdID0gc2V0dGluZ1htbDtcclxuICAgICAgICAgICAgICAgIHNldHRpbmdzSnNvbk9ialtcImphdmEuY29uZmlndXJhdGlvbi5tYXZlbi51c2VyU2V0dGluZ3NcIl0gPSBzZXR0aW5nWG1sO1xyXG4gICAgICAgICAgICAgICAgc2V0dGluZ3NKc29uT2JqW1wibWF2ZW4uc2V0dGluZ3NGaWxlXCJdID0gc2V0dGluZ1htbDtcclxuICAgICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoc2V0dGluZ3NKc29uLCBKU09OLnN0cmluZ2lmeShzZXR0aW5nc0pzb25PYmosIG51bGwsIDQpKTtcclxuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDliJ3lp4vljJZZRFMgSURFIOWFqOWxgOmFjee9ruWujOaIkGApO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIOajgOafpeW9k+WJjeeUqOaIt+ebruW9leS4iy5zc2jmmK/lkKblrZjlnKggaWRfZWQyNTUxOS5wdWIg5a+G6ZKl5paH5Lu277yM5aaC5p6c5rKh5pyJ5YiZ5pS+5YiwLnNzaCDnm67lvZXkuItcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNzaERpciA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmVudi5VU0VSUFJPRklMRSwgJy5zc2gnKTtcclxuICAgICAgICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhzc2hEaXIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZnMubWtkaXJTeW5jKHNzaERpcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoYCR7c3NoRGlyfS9pZF9lZDI1NTE5LnB1YmApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOaLt+i0neWvhumSpeaWh+S7tmApO1xyXG4gICAgICAgICAgICAgICAgICAgIGZzLmNvcHlGaWxlU3luYyhgJHtkaXJ9L2lkX2VkMjU1MTkucHViYCwgYCR7c3NoRGlyfS9pZF9lZDI1NTE5LnB1YmApO1xyXG4gICAgICAgICAgICAgICAgICAgIGZzLmNvcHlGaWxlU3luYyhgJHtkaXJ9L2lkX2VkMjU1MTlgLCBgJHtzc2hEaXJ9L2lkX2VkMjU1MTlgKTtcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5ou36LSd5a+G6ZKl5paH5Lu25a6M5oiQYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOWIneWni+WMlllEU+WItuebmOeOr+Wig+WujOaIkGApXHJcbiAgICAgICAgICAgIH0pLmhvb2soJ3Bvc3RBY3Rpb24nLCAoKSA9PiBwcm9jZXNzLmV4aXQoMCkpO1xyXG5cclxuICAgICAgICBwcm9ncmFtXHJcbiAgICAgICAgICAgIC5jb21tYW5kKCdzdGFydCA8Y2F0YWxvZz4gW3dvcmtkaXJdJylcclxuICAgICAgICAgICAgLnVzYWdlKCdzdGFydCA8Y2F0YWxvZz4gW3dvcmtkaXJdJylcclxuICAgICAgICAgICAgLm9wdGlvbignLWYsIC0tZmlsZSA8ZmlsZT4nLCAn6YWN572u5paH5Lu2JylcclxuICAgICAgICAgICAgLmFkZEhlbHBUZXh0KCdhZnRlcicsIGBcclxu6YWN572u5paH5Lu25YaF5a6556S65L6L77yaXHJcbntcclxuICAgIGhvc3RzPzogQXJyYXk8c3RyaW5nPjtcclxuICAgIGdpdDogUmVjb3JkPCdocmNwZScgfCAnZmVjb2RlJywgc3RyaW5nPjtcclxuICAgIGNhdGFsb2dzOiB7XHJcbiAgICAgICAgW2NhdGFsb2c6IHN0cmluZ106IFJlY29yZDwnaHJjcGUnIHwgJ2ZlY29kZScsIHN0cmluZyB8IHsgdXJsOiBzdHJpbmcsIGJyYW5jaDogc3RyaW5nIH0+XHJcbiAgICB9XHJcbn1gKVxyXG4gICAgICAgICAgICAuZGVzY3JpcHRpb24oJ+WQr+WKqOWItuebmOeOr+Wig++8jGNhdGFsb2fooajnpLrpnIDopoHliLbnm5jnmoTmqKHlnZfvvIzlr7nlupTphY3nva7mlofku7bkuK1jYXRhbG9nc+eahGtleeWAvO+8jOeUqOS6juaMh+WumumcgOimgeWHuuebmOeahOS/oeaBr++8jHdvcmtkaXLooajnpLrliLbnm5jlt6XkvZznm67lvZXvvIzlpoLmnpzkuI3mjIflrprliJnkvb/nlKjlvZPliY3nm67lvZUnKVxyXG4gICAgICAgICAgICAuYWN0aW9uKGFzeW5jIChjYXRhbG9nOiBzdHJpbmcsIHdvcmtkaXI6IHN0cmluZyA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpKSwgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgZmlsZTogc3RyaW5nXHJcbiAgICAgICAgICAgIH0pID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRpciA9IHBhdGgucmVzb2x2ZSh3b3JrZGlyKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5byA5aeL5qOA5rWL5Yi255uY546v5aKD5qOA5rWLYCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgZ2l0Q21kID0gJ2dpdCc7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBnaXRFeGlzdHMgPSBhd2FpdCB1dGlsLmNtZC5leGlzdHMoZ2l0Q21kKTtcclxuICAgICAgICAgICAgICAgIGlmICghZ2l0RXhpc3RzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZ2l0Q21kID0gYCR7ZGlyfS9naXQtZm9yLXdpbmRvd3MvYmluL2dpdC5leGVgO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhnaXRDbWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihg5pyq5om+5YiwZ2l05ZG95LukICR7Z2l0Q21kfSwg6K+35YWI5omn6KGMIGluaXQg5Yid5aeL5YyW5Yi255uY546v5aKDYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgc2V0dGluZ1htbCA9IHBhdGgucmVzb2x2ZShgJHtkaXJ9L3NldHRpbmdzLnhtbGApO1xyXG4gICAgICAgICAgICAgICAgbGV0IG12bkNtZCA9ICdtdm4nO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHNldHRpbmdYbWwpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1hdmVuSG9tZSA9IGAke2Rpcn0vbWF2ZW4tMy44LjZgO1xyXG4gICAgICAgICAgICAgICAgICAgIG12bkNtZCA9IGBcIiR7bWF2ZW5Ib21lfS9iaW4vbXZuLmNtZFwiYDtcclxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5nWG1sID0gYCR7bWF2ZW5Ib21lfS9jb25mL3NldHRpbmdzLnhtbGA7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKG12bkNtZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGDmnKrmib7liLBtdm7lkb3ku6QgJHttdm5DbWR9LCDor7flhYjmiafooYwgaW5pdCDliJ3lp4vljJbliLbnm5jnjq/looNgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBpZGVQYXRoID0gYCR7ZGlyfS95ZHMtMS4wLjNgXHJcbiAgICAgICAgICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoaWRlUGF0aCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoYOacquaJvuWIsElERSAke2lkZVBhdGh9LCDor7flhYjmiafooYwgaW5pdCDliJ3lp4vljJbliLbnm5jnjq/looNgKTtcclxuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSlcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5Yi255uY546v5aKD5qOA5rWL5a6M5oiQYClcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB5ZHNKc29uID0gcGF0aC5yZXNvbHZlKG9wdGlvbnMuZmlsZSB8fCBgJHtkaXJ9L3lkcy5qc29uYCk7XHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5byA5aeL5Yi255uYICR7Y2F0YWxvZ30g5bel5L2c55uu5b2V77yaJHtkaXJ9YCk7XHJcbiAgICAgICAgICAgICAgICAvLyDor7vlj5bphY3nva7mlofku7ZcclxuICAgICAgICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyh5ZHNKc29uKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihg5pyq5om+5Yiw6YWN572u5paH5Lu2ICR7eWRzSnNvbn1gKTtcclxuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCB5ZHNKc29uU3RyID0gZnMucmVhZEZpbGVTeW5jKHlkc0pzb24pLnRvU3RyaW5nKCd1dGYtOCcpO1xyXG4gICAgICAgICAgICAgICAgLy8g5qOA5rWL6YWN572u5paH5Lu25piv5ZCm5a6M5pW0XHJcbiAgICAgICAgICAgICAgICBsZXQgY29uZmlnOiBZZHNDb25maWc7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGVja0NvbmZpZ0Vycm9yID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihg6YWN572u5paH5Lu2ICR7eWRzSnNvbn0g5qC85byP6ZSZ6K+vIOWPguiAg+ekuuS+i++8mlxyXG57XHJcbiAgICBob3N0cz86IEFycmF5PHN0cmluZz47XHJcbiAgICBnaXQ6IFJlY29yZDwnaHJjcGUnIHwgJ2ZlY29kZScsIHN0cmluZz47XHJcbiAgICBjYXRhbG9nczoge1xyXG4gICAgICAgIFtjYXRhbG9nOiBzdHJpbmddOiBSZWNvcmQ8J2hyY3BlJyB8ICdmZWNvZGUnLCBzdHJpbmcgfCB7IHVybDogc3RyaW5nLCBicmFuY2g6IHN0cmluZyB9PlxyXG4gICAgfVxyXG59YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25maWcgPSBKU09OLnBhcnNlKHlkc0pzb25TdHIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghY29uZmlnLmNhdGFsb2dzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrQ29uZmlnRXJyb3IoKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGVja0NvbmZpZ0Vycm9yKClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGdpdCA9IGNvbmZpZy5naXQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjYXRhbG9nQ29uZmlnID0gY29uZmlnLmNhdGFsb2dzW2NhdGFsb2ddO1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYXRhbG9nQ29uZmlnID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihg6YWN572u5paH5Lu2ICR7eWRzSnNvbn0g5om+5LiN5YiwIGNhdGFsb2dzLiR7Y2F0YWxvZ30g5YWI5YWz6YWN572uYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYXRhbG9nQ29uZmlnLmhyY3BlID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgY2F0YWxvZ0NvbmZpZy5mZWNvZGUgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGDphY3nva7mlofku7YgJHt5ZHNKc29ufSBjYXRhbG9ncy4ke2NhdGFsb2d9LmhyY3BlIOaIliBjYXRhbG9ncy4ke2NhdGFsb2d9LmZlY29kZSDlrZfmrrXnvLrlpLFgKTtcclxuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZXNwYWNlID0gYCR7ZGlyfS8ke2NhdGFsb2d9YDtcclxuICAgICAgICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhuYW1lc3BhY2UpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOWIm+W7uuebruW9lSAke25hbWVzcGFjZX1gKTtcclxuICAgICAgICAgICAgICAgICAgICBmcy5ta2RpclN5bmMobmFtZXNwYWNlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOebruW9lSAke25hbWVzcGFjZX0g5bey5a2Y5ZyoYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgaHJjcGVVcmwgPSB0eXBlb2YgY2F0YWxvZ0NvbmZpZy5ocmNwZSA9PT0gJ3N0cmluZycgPyBnaXQ/LmhyY3BlIDogY2F0YWxvZ0NvbmZpZy5ocmNwZS51cmw7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWhyY3BlVXJsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGDphY3nva7mlofku7YgJHt5ZHNKc29ufSBjYXRhbG9ncy4ke2NhdGFsb2d9IOWQjuerr+acjeWKoSDmnKrmjIflrprku5PlupPlnLDlnYDvvIzor7fpgJrov4cgZ2l0LmhyY3BlIOaIluiAhSBjYXRhbG9ncy4ke2NhdGFsb2d9LmhyY3BlLnVybCDmjIflrprku5PlupPlnLDlnYBgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDlvIDlp4vmi4nlj5blkI7nq6/mnI3liqHku5PlupMgJHtocmNwZVVybH1gKTtcclxuICAgICAgICAgICAgICAgIGlmIChmcy5leGlzdHNTeW5jKGAke25hbWVzcGFjZX0vLmdpdGApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOebruW9lSAke25hbWVzcGFjZX0g5bey5a2Y5Zyo77yM5byA5aeL5pu05paw5LuT5bqTYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXhlY0NtZChgXCIke2dpdENtZH1cIiBwdWxsYCwgbmFtZXNwYWNlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOebruW9lSAke25hbWVzcGFjZX0g5LiN5a2Y5Zyo77yM5byA5aeL5Yib5bu65LuT5bqTYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGJyYW5jaCA9IHR5cGVvZiBjYXRhbG9nQ29uZmlnLmhyY3BlID09PSAnc3RyaW5nJyA/IGNhdGFsb2dDb25maWcuaHJjcGUgOiBjYXRhbG9nQ29uZmlnLmhyY3BlLmJyYW5jaDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWJyYW5jaCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoYOmFjee9ruaWh+S7tiAke3lkc0pzb259IGNhdGFsb2dzLiR7Y2F0YWxvZ30g5ZCO56uv5pyN5YqhIOacquaMh+WumuWIhuaUr++8jOivt+mAmui/hyBnaXQuaHJjcGUg5oiW6ICFIGNhdGFsb2dzLiR7Y2F0YWxvZ30uaHJjcGUuYnJhbmNoIOmFjee9ruWIhuaUr2ApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGV4ZWNDbWQoYFwiJHtnaXRDbWR9XCIgY2xvbmUgLWIgJHticmFuY2h9ICR7aHJjcGVVcmx9ICR7bmFtZXNwYWNlfWAsIG5hbWVzcGFjZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5ouJ5Y+W5ZCO56uv5pyN5Yqh5LuT5bqT5a6M5oiQYCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgYm9vc3RyYXBQb21YbWwgPSBgJHtuYW1lc3BhY2V9LyR7ZG9tYWluS2V5fS1iZS9kZXYtJHtkb21haW5LZXl9LWJvb3RzdHJhcC9wb20ueG1sYDtcclxuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDmm7/mjaLmlofku7YgJHtib29zdHJhcFBvbVhtbH0g5Lit55qEUk9PVOS4umRvbWFpbktlee+8jOWQpuWImeS8muWvvOiHtOWItuebmOWksei0pe+8jOaXoOazleaJvuWIsOWItuWTgWApO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYm9vc3RyYXBQb21YbWxTdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYm9vc3RyYXBQb21YbWwpLnRvU3RyaW5nKCd1dGYtOCcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGJvb3N0cmFwUG9tWG1sU3RyaW5nLmluY2x1ZGVzKCdST09UJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGJvb3N0cmFwUG9tWG1sLCBib29zdHJhcFBvbVhtbFN0cmluZy5yZXBsYWNlKC9ST09UL2csIGRvbWFpbktleSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChjb25maWcuaG9zdHMgJiYgY29uZmlnLmhvc3RzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDlrZjlnKhob3N0c+mFjee9ru+8jOajgOa1i+ezu+e7n2hvc3Rz6YWN572u5paH5Lu25piv5ZCm5bey57uP6YWN572uYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGhvc3RzRmlsZSA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmVudi5XSU5ESVIsICdTeXN0ZW0zMicsICdkcml2ZXJzJywgJ2V0YycsICdob3N0cycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhvc3RMaXN0ID0gZnMucmVhZEZpbGVTeW5jKGhvc3RzRmlsZSkudG9TdHJpbmcoJ3V0Zi04Jykuc3BsaXQoJ1xcbicpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBhcHBlbmRIb3N0cyA9IFsuLi5jb25maWcuaG9zdHNdXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaG9zdEl0ZW0gb2YgaG9zdExpc3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC8jLy50ZXN0KGhvc3RJdGVtKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgYXBwZW5kSG9zdCBvZiBjb25maWcuaG9zdHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFtpcCwgZG9tYWluXSA9IGFwcGVuZEhvc3Quc3BsaXQoJyAnKS5maWx0ZXIoaXRlbSA9PiBpdGVtKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhvc3RJdGVtLmluY2x1ZGVzKGlwKSAmJiBob3N0SXRlbS5pbmNsdWRlcyhkb21haW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOezu+e7n2hvc3Rz6YWN572u5paH5Lu25bey5a2Y5ZyoICR7YXBwZW5kSG9zdH1gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRIb3N0cy5yZW1vdmUoYXBwZW5kSG9zdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6K+75Y+W57O757ufaG9zdHPphY3nva7mlofku7ZcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYXBwZW5kSG9zdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0FkbWluKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZzLmFwcGVuZEZpbGVTeW5jKGhvc3RzRmlsZSwgYFxcbiR7YXBwZW5kSG9zdHMuam9pbignXFxuJyl9XFxuYCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiAndXRmLTgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGDlvZPliY3pnZ7nrqHnkIblkZjlkK/liqjml6Dms5Xmm7TmlLlob3N0c+aWh+S7tu+8jOivt+S9v+eUqOeuoeeQhuWRmOWQr+WKqOaIluiAheaJi+WKqOa3u+WKoCAke2FwcGVuZEhvc3RzLmpvaW4oJ1xcbicpfSDliLDmlofku7YgJHtob3N0c0ZpbGV9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYGhvc3RzIOmFjee9ruajgOa1i+WujOaIkGApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCfliJ3lp4vljJbpobnnm65tYXZlbueOr+WigycpO1xyXG4gICAgICAgICAgICAgICAgbGV0IG12bkNvbmZpZ0RpciA9IGAke25hbWVzcGFjZX0vLm12bmA7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMobXZuQ29uZmlnRGlyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGV4ZWNDbWQoYCR7bXZuQ21kfSAtTiBpby50YWthcmk6bWF2ZW46d3JhcHBlciAtRG1hdmVuPTMuOC42YCwgbmFtZXNwYWNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIOWGmeWFpW1hdmVu6YWN572u5YiwIC5tdm4vbWF2ZW4uY29uZmlnXHJcbiAgICAgICAgICAgICAgICBsZXQgY29uZmlnRmlsZSA9IGAke212bkNvbmZpZ0Rpcn0vbWF2ZW4uY29uZmlnYDtcclxuICAgICAgICAgICAgICAgIGlmIChmcy5leGlzdHNTeW5jKGNvbmZpZ0ZpbGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZnMucm1TeW5jKGNvbmZpZ0ZpbGUpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGAke212bkNvbmZpZ0Rpcn0vbWF2ZW4uY29uZmlnYCwgYC1zXFxuJHtzZXR0aW5nWG1sfVxcbi1EbWF2ZW4ud2Fnb24uaHR0cC5zc2wuaW5zZWN1cmU9dHJ1ZVxcbi1EbWF2ZW4ud2Fnb24uaHR0cC5zc2wuYWxsb3dhbGw9dHJ1ZWApO1xyXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYOW9k+WJjW1hdmVu5L+h5oGvYClcclxuICAgICAgICAgICAgICAgIGF3YWl0IGV4ZWNDbWQoYCR7bXZuQ21kfSAtLXZlcnNpb25gLCBuYW1lc3BhY2UpO1xyXG5cclxuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCfpobnnm65tYXZlbua4heeQhicpXHJcbiAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKGAke212bkNtZH0gY2xlYW4gLURza2lwVGVzdHNgLCBgJHtuYW1lc3BhY2V9LyR7ZG9tYWluS2V5fS1iZWApO1xyXG5cclxuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCflpITnkIbliY3nq6/mnoTlu7rvvIzlop7liqDmnoTlu7rmlofku7YnKTtcclxuICAgICAgICAgICAgICAgIGxldCBmZURpciA9IGAke25hbWVzcGFjZX0vJHtkb21haW5LZXl9LWZlYDtcclxuICAgICAgICAgICAgICAgIGxldCBmZUJ1aWxkSnMgPSBgJHtmZURpcn0vYnVpbGQuanNgO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGZlQnVpbGRKcykpIHtcclxuICAgICAgICAgICAgICAgICAgICBmcy5jcFN5bmMoYCR7ZGlyfS9mZS1idWlsZC5qc2AsIGZlQnVpbGRKcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgZmVQYWNrYWdlSnNvbiA9IGAke2ZlRGlyfS9wYWNrYWdlLmpzb25gO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFja2FnZVN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhmZVBhY2thZ2VKc29uKS50b1N0cmluZygndXRmLTgnKTtcclxuICAgICAgICAgICAgICAgIGlmICghcGFja2FnZVN0cmluZy5pbmNsdWRlcygnYnVpbGQuanMnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDkv67mlLkke2ZlUGFja2FnZUpzb259YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFja2FnZUpzb24gPSBKU09OLnBhcnNlKHBhY2thZ2VTdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgIHBhY2thZ2VKc29uLnNjcmlwdHNbJ2J1aWxkOmV4dGVuZCddICs9ICcgJiYgbm9kZSBidWlsZC5qcyc7XHJcbiAgICAgICAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhmZVBhY2thZ2VKc29uLCBKU09OLnN0cmluZ2lmeShwYWNrYWdlSnNvbiwgbnVsbCwgNCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDkv67mlLkke2ZlUGFja2FnZUpzb2595a6M5oiQYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBmZWNvZGVVcmwgPSB0eXBlb2YgY2F0YWxvZ0NvbmZpZy5mZWNvZGUgPT09ICdzdHJpbmcnID8gZ2l0Py5mZWNvZGUgOiBjYXRhbG9nQ29uZmlnLmZlY29kZS51cmw7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZlY29kZVVybCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihg6YWN572u5paH5Lu2ICR7eWRzSnNvbn0gY2F0YWxvZ3MuJHtjYXRhbG9nfSDlkI7nq6/mnI3liqEg5pyq5oyH5a6a5LuT5bqT5Zyw5Z2A77yM6K+36YCa6L+HIGdpdC5mZWNvZGUg5oiW6ICFIGNhdGFsb2dzLiR7Y2F0YWxvZ30uZmVjb2RlLnVybCDmjIflrprku5PlupPlnLDlnYBgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDlvIDlp4vmi4nlj5bmiqXlkYrmnI3liqHku5PlupMgJHtmZWNvZGVVcmx9YCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmVwb3J0TmFtZXNwYWNlID0gYCR7bmFtZXNwYWNlfS95b25iaXAteWlzdi1penAxLWRldi1mZWNvZGVgO1xyXG4gICAgICAgICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoYCR7cmVwb3J0TmFtZXNwYWNlfS8uZ2l0YCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg55uu5b2VICR7cmVwb3J0TmFtZXNwYWNlfSDlt7LlrZjlnKjvvIzlvIDlp4vmm7TmlrDku5PlupNgKTtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjQ21kKGBcIiR7Z2l0Q21kfVwiIHB1bGxgLCByZXBvcnROYW1lc3BhY2UpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg55uu5b2VICR7cmVwb3J0TmFtZXNwYWNlfSDkuI3lrZjlnKjvvIzlvIDlp4vliJvlu7rku5PlupNgKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYnJhbmNoID0gdHlwZW9mIGNhdGFsb2dDb25maWcuZmVjb2RlID09PSAnc3RyaW5nJyA/IGNhdGFsb2dDb25maWcuZmVjb2RlIDogY2F0YWxvZ0NvbmZpZy5mZWNvZGUuYnJhbmNoO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghYnJhbmNoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihg6YWN572u5paH5Lu2ICR7eWRzSnNvbn0gY2F0YWxvZ3MuJHtjYXRhbG9nfSDmiqXlkYrmnI3liqHmnKrmjIflrprliIbmlK/vvIzor7fpgJrov4cgZ2l0LmZlY29kZSDmiJbogIUgY2F0YWxvZ3MuJHtjYXRhbG9nfS5mZWNvZGUuYnJhbmNoIOmFjee9ruWIhuaUr2ApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGV4ZWNDbWQoYFwiJHtnaXRDbWR9XCIgY2xvbmUgLWIgJHticmFuY2h9ICR7ZmVjb2RlVXJsfSAke3JlcG9ydE5hbWVzcGFjZX1gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDmi4nlj5bmiqXlkYrmnI3liqHku5PlupPlrozmiJBgKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygn5aSE55CG5oql5ZGK5p6E5bu677yM5aKe5Yqg5p6E5bu65paH5Lu2Jyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgZmVjb2RlQnVpbGRKcyA9IGAke3JlcG9ydE5hbWVzcGFjZX0vYnVpbGQuanNgO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGZlY29kZUJ1aWxkSnMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZnMuY3BTeW5jKGAke2Rpcn0vZmVjb2RlLWJ1aWxkLmpzYCwgZmVjb2RlQnVpbGRKcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgZmVjb2RlUGFja2FnZUpzb24gPSBgJHtyZXBvcnROYW1lc3BhY2V9L3BhY2thZ2UuanNvbmA7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmZWNvZGVQYWNrYWdlU3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGZlY29kZVBhY2thZ2VKc29uKS50b1N0cmluZygndXRmLTgnKTtcclxuICAgICAgICAgICAgICAgIGlmICghZmVjb2RlUGFja2FnZVN0cmluZy5pbmNsdWRlcygnYnVpbGQuanMnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDkv67mlLkke2ZlY29kZVBhY2thZ2VKc29ufWApO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhY2thZ2VKc29uID0gSlNPTi5wYXJzZShmZWNvZGVQYWNrYWdlU3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICBwYWNrYWdlSnNvbi5zY3JpcHRzWydidWlsZCddICs9ICcgJiYgbm9kZSBidWlsZC5qcyc7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFja2FnZUpzb24uZG9tYWluS2V5ID0gZG9tYWluS2V5O1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOWIoOmZpOatpOS+nei1liDkvJrlr7zoh7RucG0gaSDlpLHotKVcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcGFja2FnZUpzb24uZGVwZW5kZW5jaWVzLnpsaWJcclxuICAgICAgICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGZlY29kZVBhY2thZ2VKc29uLCBKU09OLnN0cmluZ2lmeShwYWNrYWdlSnNvbiwgbnVsbCwgNCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDkv67mlLkke2ZlY29kZVBhY2thZ2VKc29ufeWujOaIkGApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDlronoo4XmiqXlkYrmnI3liqHkvp3otZZgKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGV4ZWNDbWQoJ25wbSBpJywgcmVwb3J0TmFtZXNwYWNlKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg55Sf5oiQdmVyc2lvbi5qc29uIOaWh+S7tmApXHJcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gcmFuZG9tVVVJRCgpLnRvU3RyaW5nKClcclxuICAgICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoYCR7cmVwb3J0TmFtZXNwYWNlfS92ZXJzaW9uLmpzb25gLCBge1widmVyc2lvblwiOiBcIiR7dXVpZH1cIn1gKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygn5Yid5aeL5YyW6aG555uu546v5aKD6LWE5rqQJyk7XHJcbiAgICAgICAgICAgICAgICAvLyDlpoLmnpwgbmFtZXNwYWNlLyhkaXNrfGRpc2tzKSDlpoLmnpzlrZjlnKgg6Lez6L+HXHJcbiAgICAgICAgICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhgJHtuYW1lc3BhY2V9L2Rpc2tgKSB8fCBmcy5leGlzdHNTeW5jKGAke25hbWVzcGFjZX0vZGlza3NgKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDlt7LlrZjlnKjvvIzot7Pov4fnjq/looPotYTmupDmlofku7bkuIvovb1gKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9kZnMuemhpcGVyLmNvbS92M3I2L2Vudi56aXBcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg5byA5aeL5LiL6L296aG555uu546v5aKD6LWE5rqQ5paH5Lu2YClcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZ2l0WmlwRmlsZSA9IGAke25hbWVzcGFjZX0vZW52LnppcGA7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXhlY0NtZChgJHt3Z2V0fSAke1JTX1VSTH0vZW52LnppcCAtTyBcIiR7Z2l0WmlwRmlsZX1cImApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhg6Kej5Y6L6LWE5rqQ5paH5Lu25YyFICR7Z2l0WmlwRmlsZX1gKVxyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGV4ZWNDbWQoYFwiJHt1bnppcH1cIiBcIiR7Z2l0WmlwRmlsZX1cImAsIG5hbWVzcGFjZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZnMucm1TeW5jKGdpdFppcEZpbGUpXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ+WQr+WKqElERScpO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgZXhlY0NtZChgXCIke2lkZVBhdGh9L0NvZGUvQ29kZS5leGVcIiBcIiR7bmFtZXNwYWNlfVwiYCk7XHJcbiAgICAgICAgICAgICAgICAvLyDpnIDopoHnrYnlvoVJREXlkK/liqjlrozmiJDlkI7lhbPpl61cclxuICAgICAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAzMDAwKSlcclxuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCflt7LlkK/liqhJREXvvIzor7fmjInnhafmlofmoaPor7TmmI7ov5vooYzliLbnm5jmk43kvZwnKVxyXG4gICAgICAgICAgICB9KS5ob29rKCdwb3N0QWN0aW9uJywgKCkgPT4gcHJvY2Vzcy5leGl0KDApKTtcclxuXHJcbiAgICAgICAgcHJvZ3JhbS5wYXJzZShwcm9jZXNzLmFyZ3YpXHJcbiAgICB9XHJcbn1cclxuIl19
|
package/package.json
CHANGED
package/src/main.ts
CHANGED
|
@@ -18,7 +18,7 @@ const execCmd = async (command: string, cwd?: string) => {
|
|
|
18
18
|
let start = Date.now();
|
|
19
19
|
child_process.execSync(command, {
|
|
20
20
|
cwd, encoding: 'utf-8',
|
|
21
|
-
timeout:
|
|
21
|
+
timeout: 0, // 设为不过期,下载速度过慢会导致超时
|
|
22
22
|
stdio: [0, 1, 2]
|
|
23
23
|
});
|
|
24
24
|
logger.info(`执行命令 ${command} 耗时 \x1B[34m <${Date.now() - start}ms>]`)
|