Comparing version 1.1.1 to 1.2.0
@@ -0,1 +1,10 @@ | ||
# 1.2.0 (Jun 3, 2020) | ||
* feat(commands): Added syntactic sugar for declaring commands with aliases and arguments. | ||
* feat(help): Added command aliases to the help screen. | ||
* fix(cli): Dynamically resolve 'showHelpOnError'. | ||
* fix(parser): Correctly resolve the parsed argument name in the debug logging. | ||
* style(cli): Capitalized `--version` description. | ||
* chore: Updated dev dependencies. | ||
# 1.1.1 (May 26, 2020) | ||
@@ -2,0 +11,0 @@ |
@@ -72,3 +72,3 @@ "use strict"; | ||
if (typeof cmd !== 'string') { | ||
throw _errors.default.INVALID_ARGUMENT('Command parameters are not allowed when cmd is a string', { | ||
throw _errors.default.INVALID_ARGUMENT('Command parameters are only allowed when command is a string', { | ||
name: 'cmd', | ||
@@ -103,3 +103,3 @@ scope: 'CommandMap.add', | ||
for (let it of commands) { | ||
let cmd = null; | ||
cmd = null; | ||
@@ -145,3 +145,3 @@ if (it instanceof Command) { | ||
if (it.clikit.has('Extension')) { | ||
// extensions not supported here | ||
// actions and extensions not supported here | ||
continue; | ||
@@ -208,3 +208,3 @@ } else if (it.clikit.has('Command')) { | ||
for (const cmd of Array.from(this.keys()).sort()) { | ||
for (const cmd of Array.from(this.keys())) { | ||
const { | ||
@@ -219,5 +219,17 @@ aliases, | ||
if (!hidden && !clikitHelp) { | ||
const labels = [name]; | ||
for (const [alias, display] of Object.entries(aliases)) { | ||
if (display === 'visible') { | ||
labels.push(alias); | ||
} | ||
} | ||
labels.sort((a, b) => { | ||
return a.length === b.length ? a.localeCompare(b) : a.length - b.length; | ||
}); | ||
entries.push({ | ||
name, | ||
desc, | ||
label: labels.join(', '), | ||
aliases: aliases ? Object.keys(aliases) : null | ||
@@ -228,2 +240,3 @@ }); | ||
entries.sort((a, b) => a.label.localeCompare(b.label)); | ||
return { | ||
@@ -238,2 +251,2 @@ count: entries.length, | ||
exports.default = CommandMap; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9jb21tYW5kLW1hcC5qcyJdLCJuYW1lcyI6WyJDb21tYW5kIiwianNSZWdFeHAiLCJDb21tYW5kTWFwIiwiTWFwIiwiY29uc3RydWN0b3IiLCJhZGQiLCJjbWQiLCJwYXJhbXMiLCJFIiwiSU5WQUxJRF9BUkdVTUVOVCIsIm5hbWUiLCJzY29wZSIsInZhbHVlIiwicmVxdWlyZSIsImRlZmF1bHQiLCJ1bmRlZmluZWQiLCJhY3Rpb24iLCJyZXN1bHRzIiwiY29tbWFuZHMiLCJjbGlraXQiLCJTZXQiLCJoYXMiLCJ2YWx1ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJpdCIsInBhdGgiLCJyZXNvbHZlIiwic3RhdCIsImZzIiwic3RhdFN5bmMiLCJkaXIiLCJpc0RpcmVjdG9yeSIsImZpbGVzIiwicmVhZGRpclN5bmMiLCJtIiwiZmlsZW5hbWUiLCJtYXRjaCIsIm1vZHVsZSIsImpvaW4iLCJfX2VzTW9kdWxlIiwic2V0IiwicHVzaCIsImUiLCJjb2RlIiwiRklMRV9OT1RfRk9VTkQiLCJJTlZBTElEX0NPTU1BTkQiLCJmcm9tIiwiT2JqZWN0IiwiZW50cmllcyIsImNvdW50Iiwic2l6ZSIsImdlbmVyYXRlSGVscCIsImtleXMiLCJzb3J0IiwiYWxpYXNlcyIsImNsaWtpdEhlbHAiLCJkZXNjIiwiaGlkZGVuIiwiZ2V0IiwibGVuZ3RoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7QUFFQSxJQUFJQSxPQUFKO0FBRUE7Ozs7OztBQUtBLE1BQU1DLFFBQVEsR0FBRyxZQUFqQjtBQUVBOzs7Ozs7QUFLZSxNQUFNQyxVQUFOLFNBQXlCQyxHQUF6QixDQUE2QjtBQUMzQzs7Ozs7QUFLQUMsRUFBQUEsV0FBVyxHQUFHO0FBQ2I7QUFDQSxrQ0FBbUIsSUFBbkIsRUFBeUIsWUFBekI7QUFDQTtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7QUFhQUMsRUFBQUEsR0FBRyxDQUFDQyxHQUFELEVBQU1DLE1BQU4sRUFBYztBQUNoQixRQUFJ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QSxLQUFLLEVBQUUsZ0JBQTFCO0FBQTRDQyxVQUFBQSxLQUFLLEVBQUVhO0FBQW5ELFNBQWxFLENBQU47QUFDQTtBQUNEOztBQUVELFdBQU9SLE9BQVA7QUFDQTtBQUVEOzs7Ozs7OztBQU1BLE1BQUlpQyxLQUFKLEdBQVk7QUFDWCxXQUFPLEtBQUtDLElBQVo7QUFDQTtBQUVEOzs7Ozs7OztBQU1BQyxFQUFBQSxZQUFZLEdBQUc7QUFDZCxVQUFNSCxPQUFPLEdBQUcsRUFBaEI7O0FBRUEsU0FBSyxNQUFNM0MsR0FBWCxJQUFrQmlCLEtBQUssQ0FBQ3dCLElBQU4sQ0FBVyxLQUFLTSxJQUFMLEVBQVgsRUFBd0JDLElBQXhCLEVBQWxCLEVBQWtEO0FBQ2pELFlBQU07QUFBRUMsUUFBQUEsT0FBRjtBQUFXQyxRQUFBQSxVQUFYO0FBQXVCQyxRQUFBQSxJQUF2QjtBQUE2QkMsUUFBQUEsTUFBN0I7QUFBcUNoRCxRQUFBQTtBQUFyQyxVQUE4QyxLQUFLaUQsR0FBTCxDQUFTckQsR0FBVCxDQUFwRDs7QUFDQSxVQUFJLENBQUNvRCxNQUFELElBQVcsQ0FBQ0YsVUFBaEIsRUFBNEI7QUFDM0JQLFFBQUFBLE9BQU8sQ0FBQ1AsSUFBUixDQUFhO0FBQ1poQyxVQUFBQSxJQURZO0FBRVorQyxVQUFBQSxJQUZZO0FBR1pGLFVBQUFBLE9BQU8sRUFBRUEsT0FBTyxHQUFHUCxNQUFNLENBQUNLLElBQVAsQ0FBWUUsT0FBWixDQUFILEdBQTBCO0FBSDlCLFNBQWI7QUFLQTtBQUNEOztBQUVELFdBQU87QUFDTkwsTUFBQUEsS0FBSyxFQUFFRCxPQUFPLENBQUNXLE1BRFQ7QUFFTlgsTUFBQUE7QUFGTSxLQUFQO0FBSUE7O0FBeEowQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFIGZyb20gJy4uL2xpYi9lcnJvcnMnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyBkZWNsYXJlQ0xJS2l0Q2xhc3MgfSBmcm9tICcuLi9saWIvdXRpbCc7XG5cbmxldCBDb21tYW5kO1xuXG4vKipcbiAqIE1hdGNoZXNcbiAqXG4gKiBAdHlwZSB7UmVnRXhwfVxuICovXG5jb25zdCBqc1JlZ0V4cCA9IC9eKC4rKVxcLmpzJC87XG5cbi8qKlxuICogU3RvcmVzIGEgbWFwIG9mIGBDb21tYW5kYCBpbnN0YW5jZXMgdGhhdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZCBmb3IgYSBjb250ZXh0LlxuICpcbiAqIEBleHRlbmRzIHtNYXB9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbW1hbmRNYXAgZXh0ZW5kcyBNYXAge1xuXHQvKipcblx0ICogRGVjbGFyZXMgdGhlIGNsYXNzIG5hbWUuXG5cdCAqXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHRcdGRlY2xhcmVDTElLaXRDbGFzcyh0aGlzLCAnQ29tbWFuZE1hcCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBjb21tYW5kIHRvIHRoZSBtYXAuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fFN0cmluZ3xDb21tYW5kfENvbW1hbmRNYXB8QXJyYXkuPE9iamVjdHxTdHJpbmd8Q29tbWFuZD59IGNtZCAtIEFuIG9iamVjdCB1c2VkXG5cdCAqIGZvciBgQ29tbWFuZGAgY29uc3RydWN0b3IgcGFyYW1zLCBhIHBhdGggdG8gYSBkaXJlY3Rvcnkgb3IgYSBgLmpzYCBmaWxlLCBhIGBDb21tYW5kYFxuXHQgKiBpbnN0YW5jZSwgb3IgYW4gYXJyYXkgb2YgdGhvc2UgdHlwZXMuIE1heSBhbHNvIGJlIGEgYENvbW1hbmRNYXBgIGluc3RhbmNlLiBJZiBgY21kYCBpcyBhXG5cdCAqIGBTdHJpbmdgIGFuZCBgcGFyYW1zYCBpcyBwcmVzZW50LCB0aGVuIGl0IHdpbGwgdHJlYXQgYGNtZGAgYXMgdGhlIGNvbW1hbmQgbmFtZSwgbm90IGEgZmlsZVxuXHQgKiBwYXRoLlxuXHQgKiBAcGFyYW0ge09iamVjdHxGdW5jdGlvbn0gW3BhcmFtc10gLSBXaGVuIGBjbWRgIGlzIHRoZSBjb21tYW5kIG5hbWUsIHRoZW4gdGhpcyBpcyB0aGUgb3B0aW9uc1xuXHQgKiB0byBwYXNzIGludG8gdGhlIGBDb21tYW5kYCBjb25zdHJ1Y3Rvci5cblx0ICogQHJldHVybnMge0FycmF5LjxDb21tYW5kPn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFkZChjbWQsIHBhcmFtcykge1xuXHRcdGlmICghY21kKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0ludmFsaWQgY29tbWFuZCcsIHsgbmFtZTogJ2NtZCcsIHNjb3BlOiAnQ29tbWFuZE1hcC5hZGQnLCB2YWx1ZTogY21kIH0pO1xuXHRcdH1cblxuXHRcdGlmICghQ29tbWFuZCkge1xuXHRcdFx0Q29tbWFuZCA9IHJlcXVpcmUoJy4vY29tbWFuZCcpLmRlZmF1bHQ7XG5cdFx0fVxuXG5cdFx0aWYgKHBhcmFtcyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAodHlwZW9mIGNtZCAhPT0gJ3N0cmluZycpIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdDb21tYW5kIHBhcmFtZXRlcnMgYXJlIG5vdCBhbGxvd2VkIHdoZW4gY21kIGlzIGEgc3RyaW5nJywgeyBuYW1lOiAnY21kJywgc2NvcGU6ICdDb21tYW5kTWFwLmFkZCcsIHZhbHVlOiB7IGNtZCwgcGFyYW1zIH0gfSk7XG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbXMgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0cGFyYW1zID0geyBhY3Rpb246IHBhcmFtcyB9O1xuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgcGFyYW1zICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGNvbW1hbmQgcGFyYW1ldGVycyB0byBiZSBhbiBvYmplY3Qgb3IgZnVuY3Rpb24nLCB7IG5hbWU6ICdwYXJhbXMnLCBzY29wZTogJ0NvbW1hbmRNYXAuYWRkJywgdmFsdWU6IHsgY21kLCBwYXJhbXMgfSB9KTtcblx0XHRcdH1cblx0XHRcdGNtZCA9IG5ldyBDb21tYW5kKGNtZCwgcGFyYW1zKTtcblx0XHR9XG5cblx0XHRjb25zdCByZXN1bHRzID0gW107XG5cdFx0Y29uc3QgY29tbWFuZHMgPSB0eXBlb2YgY21kID09PSAnb2JqZWN0JyAmJiBjbWQuY2xpa2l0IGluc3RhbmNlb2YgU2V0ICYmIChjbWQuY2xpa2l0LmhhcygnQ29tbWFuZExpc3QnKSB8fCBjbWQuY2xpa2l0LmhhcygnQ29tbWFuZE1hcCcpKSA/XG5cdFx0XHRjbWQudmFsdWVzKCkgOlxuXHRcdFx0QXJyYXkuaXNBcnJheShjbWQpID8gY21kIDogWyBjbWQgXTtcblxuXHRcdGZvciAobGV0IGl0IG9mIGNvbW1hbmRzKSB7XG5cdFx0XHRsZXQgY21kID0gbnVsbDtcblxuXHRcdFx0aWYgKGl0IGluc3RhbmNlb2YgQ29tbWFuZCkge1xuXHRcdFx0XHRjbWQgPSBpdDtcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGl0ID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHQvLyBwYXRoXG5cdFx0XHRcdGl0ID0gcGF0aC5yZXNvbHZlKGl0KTtcblxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGNvbnN0IHN0YXQgPSBmcy5zdGF0U3luYyhpdCk7XG5cdFx0XHRcdFx0Y29uc3QgZGlyID0gc3RhdC5pc0RpcmVjdG9yeSgpID8gaXQgOiAnJztcblx0XHRcdFx0XHRjb25zdCBmaWxlcyA9IGRpciA/IGZzLnJlYWRkaXJTeW5jKGl0KSA6IFsgaXQgXTtcblx0XHRcdFx0XHRsZXQgbTtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZpbGVzKSB7XG5cdFx0XHRcdFx0XHRpZiAobSA9IGZpbGVuYW1lLm1hdGNoKGpzUmVnRXhwKSkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBtb2R1bGUgPSByZXF1aXJlKHBhdGguam9pbihkaXIsIGZpbGVuYW1lKSk7XG5cdFx0XHRcdFx0XHRcdGNtZCA9IG5ldyBDb21tYW5kKG1bMV0sIG1vZHVsZS5fX2VzTW9kdWxlID8gbW9kdWxlLmRlZmF1bHQgOiBtb2R1bGUpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnNldChjbWQubmFtZSwgY21kKTtcblx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKGNtZCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0aWYgKGUuY29kZSA9PT0gJ0VOT0VOVCcpIHtcblx0XHRcdFx0XHRcdHRocm93IEUuRklMRV9OT1RfRk9VTkQoYENvbW1hbmQgcGF0aCBkb2VzIG5vdCBleGlzdDogJHtpdH1gLCB7IG5hbWU6ICdjb21tYW5kJywgc2NvcGU6ICdDb21tYW5kTWFwLmFkZCcsIHZhbHVlOiBpdCB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnRpbnVlO1xuXG5cdFx0XHR9IGVsc2UgaWYgKGl0ICYmIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0Ly8gY3RvciBwYXJhbXMgb3IgQ29tbWFuZC1saWtlXG5cdFx0XHRcdGlmIChpdC5jbGlraXQgaW5zdGFuY2VvZiBTZXQpIHtcblx0XHRcdFx0XHRpZiAoaXQuY2xpa2l0LmhhcygnRXh0ZW5zaW9uJykpIHtcblx0XHRcdFx0XHRcdC8vIGV4dGVuc2lvbnMgbm90IHN1cHBvcnRlZCBoZXJlXG5cdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKGl0LmNsaWtpdC5oYXMoJ0NvbW1hbmQnKSkge1xuXHRcdFx0XHRcdFx0Y21kID0gbmV3IENvbW1hbmQoaXQubmFtZSwgaXQpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBFLklOVkFMSURfQ09NTUFORChgSW52YWxpZCBjb21tYW5kOiBjbGkta2l0IHR5cGUgXCIke0FycmF5LmZyb20oaXQuY2xpa2l0KVswXX1cIiBub3Qgc3VwcG9ydGVkYCwgeyBuYW1lOiAnY29tbWFuZCcsIHNjb3BlOiAnQ29tbWFuZE1hcC5hZGQnLCB2YWx1ZTogaXQgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKGl0Lm5hbWUgJiYgdHlwZW9mIGl0Lm5hbWUgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0Ly8gdGhlIG9iamVjdCBpcyBjb21tYW5kIGN0b3IgcGFyYW1zXG5cdFx0XHRcdFx0Y21kID0gbmV3IENvbW1hbmQoaXQubmFtZSwgaXQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIGFuIG9iamVjdCBvZiBjb21tYW5kIG5hbWVzIHRvIGEgcGF0aCwgY3RvciBwYXJhbXMsIENvbW1hbmQgb2JqZWN0LCBvciBDb21tYW5kLWxpa2Ugb2JqZWN0XG5cblx0XHRcdFx0XHRmb3IgKGNvbnN0IFsgbmFtZSwgdmFsdWUgXSBvZiBPYmplY3QuZW50cmllcyhpdCkpIHtcblx0XHRcdFx0XHRcdGNtZCA9IG5ldyBDb21tYW5kKG5hbWUsIHZhbHVlKTtcblx0XHRcdFx0XHRcdHRoaXMuc2V0KGNtZC5uYW1lLCBjbWQpO1xuXHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKGNtZCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKGNtZCBpbnN0YW5jZW9mIENvbW1hbmQpIHtcblx0XHRcdFx0dGhpcy5zZXQoY21kLm5hbWUsIGNtZCk7XG5cdFx0XHRcdHJlc3VsdHMucHVzaChjbWQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKGBJbnZhbGlkIGNvbW1hbmQgXCIke2l0fVwiLCBleHBlY3RlZCBhbiBvYmplY3RgLCB7IG5hbWU6ICdjb21tYW5kJywgc2NvcGU6ICdDb21tYW5kTWFwLmFkZCcsIHZhbHVlOiBpdCB9KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0cztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY29tbWFuZHMuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtOdW1iZXJ9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZXQgY291bnQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc2l6ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNvbW1hbmRzIGZvciB0aGUgaGVscCBzY3JlZW4uXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtPYmplY3R9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZW5lcmF0ZUhlbHAoKSB7XG5cdFx0Y29uc3QgZW50cmllcyA9IFtdO1xuXG5cdFx0Zm9yIChjb25zdCBjbWQgb2YgQXJyYXkuZnJvbSh0aGlzLmtleXMoKSkuc29ydCgpKSB7XG5cdFx0XHRjb25zdCB7IGFsaWFzZXMsIGNsaWtpdEhlbHAsIGRlc2MsIGhpZGRlbiwgbmFtZSB9ID0gdGhpcy5nZXQoY21kKTtcblx0XHRcdGlmICghaGlkZGVuICYmICFjbGlraXRIZWxwKSB7XG5cdFx0XHRcdGVudHJpZXMucHVzaCh7XG5cdFx0XHRcdFx0bmFtZSxcblx0XHRcdFx0XHRkZXNjLFxuXHRcdFx0XHRcdGFsaWFzZXM6IGFsaWFzZXMgPyBPYmplY3Qua2V5cyhhbGlhc2VzKSA6IG51bGxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGNvdW50OiBlbnRyaWVzLmxlbmd0aCxcblx0XHRcdGVudHJpZXNcblx0XHR9O1xuXHR9XG59XG4iXSwiZmlsZSI6InBhcnNlci9jb21tYW5kLW1hcC5qcyJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9jb21tYW5kLW1hcC5qcyJdLCJuYW1lcyI6WyJDb21tYW5kIiwianNSZWdFeHAiLCJDb21tYW5kTWFwIiwiTWFwIiwiY29uc3RydWN0b3IiLCJhZGQiLCJjbWQiLCJwYXJhbXMiLCJFIiwiSU5WQUxJRF9BUkdVTUVOVCIsIm5hbWUiLCJzY29wZSIsInZhbHVlIiwicmVxdWlyZSIsImRlZmF1bHQiLCJ1bmRlZmluZWQiLCJhY3Rpb24iLCJyZXN1bHRzIiwiY29tbWFuZHMiLCJjbGlraXQiLCJTZXQiLCJoYXMiLCJ2YWx1ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJpdCIsInBhdGgiLCJyZXNvbHZlIiwic3RhdCIsImZzIiwic3RhdFN5bmMiLCJkaXIiLCJpc0RpcmVjdG9yeSIsImZpbGVzIiwicmVhZGRpclN5bmMiLCJtIiwiZmlsZW5hbWUiLCJtYXRjaCIsIm1vZHVsZSIsImpvaW4iLCJfX2VzTW9kdWxlIiwic2V0IiwicHVzaCIsImUiLCJjb2RlIiwiRklMRV9OT1RfRk9VTkQiLCJJTlZBTElEX0NPTU1BTkQiLCJmcm9tIiwiT2JqZWN0IiwiZW50cmllcyIsImNvdW50Iiwic2l6ZSIsImdlbmVyYXRlSGVscCIsImtleXMiLCJhbGlhc2VzIiwiY2xpa2l0SGVscCIsImRlc2MiLCJoaWRkZW4iLCJnZXQiLCJsYWJlbHMiLCJhbGlhcyIsImRpc3BsYXkiLCJzb3J0IiwiYSIsImIiLCJsZW5ndGgiLCJsb2NhbGVDb21wYXJlIiwibGFiZWwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQTs7OztBQUVBLElBQUlBLE9BQUo7QUFFQTs7Ozs7O0FBS0EsTUFBTUMsUUFBUSxHQUFHLFlBQWpCO0FBRUE7Ozs7OztBQUtlLE1BQU1DLFVBQU4sU0FBeUJDLEdBQXpCLENBQTZCO0FBQzNDOzs7OztBQUtBQyxFQUFBQSxXQUFXLEdBQUc7QUFDYjtBQUNBLGtDQUFtQixJQUFuQixFQUF5QixZQUF6QjtBQUNBO0FBRUQ7Ozs7Ozs7Ozs7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QixDQUF4QixHQUE2Q0QsQ0FBQyxDQUFDRSxNQUFGLEdBQVdELENBQUMsQ0FBQ0MsTUFBakU7QUFDQSxTQUZEO0FBSUFoQixRQUFBQSxPQUFPLENBQUNQLElBQVIsQ0FBYTtBQUNaaEMsVUFBQUEsSUFEWTtBQUVaOEMsVUFBQUEsSUFGWTtBQUdaVyxVQUFBQSxLQUFLLEVBQUVSLE1BQU0sQ0FBQ3BCLElBQVAsQ0FBWSxJQUFaLENBSEs7QUFJWmUsVUFBQUEsT0FBTyxFQUFFQSxPQUFPLEdBQUdOLE1BQU0sQ0FBQ0ssSUFBUCxDQUFZQyxPQUFaLENBQUgsR0FBMEI7QUFKOUIsU0FBYjtBQU1BO0FBQ0Q7O0FBRURMLElBQUFBLE9BQU8sQ0FBQ2EsSUFBUixDQUFhLENBQUNDLENBQUQsRUFBSUMsQ0FBSixLQUFVRCxDQUFDLENBQUNJLEtBQUYsQ0FBUUQsYUFBUixDQUFzQkYsQ0FBQyxDQUFDRyxLQUF4QixDQUF2QjtBQUVBLFdBQU87QUFDTmpCLE1BQUFBLEtBQUssRUFBRUQsT0FBTyxDQUFDZ0IsTUFEVDtBQUVOaEIsTUFBQUE7QUFGTSxLQUFQO0FBSUE7O0FBckswQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFIGZyb20gJy4uL2xpYi9lcnJvcnMnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyBkZWNsYXJlQ0xJS2l0Q2xhc3MgfSBmcm9tICcuLi9saWIvdXRpbCc7XG5cbmxldCBDb21tYW5kO1xuXG4vKipcbiAqIE1hdGNoZXNcbiAqXG4gKiBAdHlwZSB7UmVnRXhwfVxuICovXG5jb25zdCBqc1JlZ0V4cCA9IC9eKC4rKVxcLmpzJC87XG5cbi8qKlxuICogU3RvcmVzIGEgbWFwIG9mIGBDb21tYW5kYCBpbnN0YW5jZXMgdGhhdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZCBmb3IgYSBjb250ZXh0LlxuICpcbiAqIEBleHRlbmRzIHtNYXB9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbW1hbmRNYXAgZXh0ZW5kcyBNYXAge1xuXHQvKipcblx0ICogRGVjbGFyZXMgdGhlIGNsYXNzIG5hbWUuXG5cdCAqXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHRcdGRlY2xhcmVDTElLaXRDbGFzcyh0aGlzLCAnQ29tbWFuZE1hcCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBjb21tYW5kIHRvIHRoZSBtYXAuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fFN0cmluZ3xDb21tYW5kfENvbW1hbmRNYXB8QXJyYXkuPE9iamVjdHxTdHJpbmd8Q29tbWFuZD59IGNtZCAtIEFuIG9iamVjdCB1c2VkXG5cdCAqIGZvciBgQ29tbWFuZGAgY29uc3RydWN0b3IgcGFyYW1zLCBhIHBhdGggdG8gYSBkaXJlY3Rvcnkgb3IgYSBgLmpzYCBmaWxlLCBhIGBDb21tYW5kYFxuXHQgKiBpbnN0YW5jZSwgb3IgYW4gYXJyYXkgb2YgdGhvc2UgdHlwZXMuIE1heSBhbHNvIGJlIGEgYENvbW1hbmRNYXBgIGluc3RhbmNlLiBJZiBgY21kYCBpcyBhXG5cdCAqIGBTdHJpbmdgIGFuZCBgcGFyYW1zYCBpcyBwcmVzZW50LCB0aGVuIGl0IHdpbGwgdHJlYXQgYGNtZGAgYXMgdGhlIGNvbW1hbmQgbmFtZSwgbm90IGEgZmlsZVxuXHQgKiBwYXRoLlxuXHQgKiBAcGFyYW0ge09iamVjdHxGdW5jdGlvbn0gW3BhcmFtc10gLSBXaGVuIGBjbWRgIGlzIHRoZSBjb21tYW5kIG5hbWUsIHRoZW4gdGhpcyBpcyB0aGUgb3B0aW9uc1xuXHQgKiB0byBwYXNzIGludG8gdGhlIGBDb21tYW5kYCBjb25zdHJ1Y3Rvci5cblx0ICogQHJldHVybnMge0FycmF5LjxDb21tYW5kPn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFkZChjbWQsIHBhcmFtcykge1xuXHRcdGlmICghY21kKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0ludmFsaWQgY29tbWFuZCcsIHsgbmFtZTogJ2NtZCcsIHNjb3BlOiAnQ29tbWFuZE1hcC5hZGQnLCB2YWx1ZTogY21kIH0pO1xuXHRcdH1cblxuXHRcdGlmICghQ29tbWFuZCkge1xuXHRcdFx0Q29tbWFuZCA9IHJlcXVpcmUoJy4vY29tbWFuZCcpLmRlZmF1bHQ7XG5cdFx0fVxuXG5cdFx0aWYgKHBhcmFtcyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAodHlwZW9mIGNtZCAhPT0gJ3N0cmluZycpIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdDb21tYW5kIHBhcmFtZXRlcnMgYXJlIG9ubHkgYWxsb3dlZCB3aGVuIGNvbW1hbmQgaXMgYSBzdHJpbmcnLCB7IG5hbWU6ICdjbWQnLCBzY29wZTogJ0NvbW1hbmRNYXAuYWRkJywgdmFsdWU6IHsgY21kLCBwYXJhbXMgfSB9KTtcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtcyA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRwYXJhbXMgPSB7IGFjdGlvbjogcGFyYW1zIH07XG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbXMgIT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgY29tbWFuZCBwYXJhbWV0ZXJzIHRvIGJlIGFuIG9iamVjdCBvciBmdW5jdGlvbicsIHsgbmFtZTogJ3BhcmFtcycsIHNjb3BlOiAnQ29tbWFuZE1hcC5hZGQnLCB2YWx1ZTogeyBjbWQsIHBhcmFtcyB9IH0pO1xuXHRcdFx0fVxuXHRcdFx0Y21kID0gbmV3IENvbW1hbmQoY21kLCBwYXJhbXMpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHJlc3VsdHMgPSBbXTtcblx0XHRjb25zdCBjb21tYW5kcyA9IHR5cGVvZiBjbWQgPT09ICdvYmplY3QnICYmIGNtZC5jbGlraXQgaW5zdGFuY2VvZiBTZXQgJiYgKGNtZC5jbGlraXQuaGFzKCdDb21tYW5kTGlzdCcpIHx8IGNtZC5jbGlraXQuaGFzKCdDb21tYW5kTWFwJykpID9cblx0XHRcdGNtZC52YWx1ZXMoKSA6XG5cdFx0XHRBcnJheS5pc0FycmF5KGNtZCkgPyBjbWQgOiBbIGNtZCBdO1xuXG5cdFx0Zm9yIChsZXQgaXQgb2YgY29tbWFuZHMpIHtcblx0XHRcdGNtZCA9IG51bGw7XG5cblx0XHRcdGlmIChpdCBpbnN0YW5jZW9mIENvbW1hbmQpIHtcblx0XHRcdFx0Y21kID0gaXQ7XG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBpdCA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0Ly8gcGF0aFxuXHRcdFx0XHRpdCA9IHBhdGgucmVzb2x2ZShpdCk7XG5cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRjb25zdCBzdGF0ID0gZnMuc3RhdFN5bmMoaXQpO1xuXHRcdFx0XHRcdGNvbnN0IGRpciA9IHN0YXQuaXNEaXJlY3RvcnkoKSA/IGl0IDogJyc7XG5cdFx0XHRcdFx0Y29uc3QgZmlsZXMgPSBkaXIgPyBmcy5yZWFkZGlyU3luYyhpdCkgOiBbIGl0IF07XG5cdFx0XHRcdFx0bGV0IG07XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBmaWxlbmFtZSBvZiBmaWxlcykge1xuXHRcdFx0XHRcdFx0aWYgKG0gPSBmaWxlbmFtZS5tYXRjaChqc1JlZ0V4cCkpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbW9kdWxlID0gcmVxdWlyZShwYXRoLmpvaW4oZGlyLCBmaWxlbmFtZSkpO1xuXHRcdFx0XHRcdFx0XHRjbWQgPSBuZXcgQ29tbWFuZChtWzFdLCBtb2R1bGUuX19lc01vZHVsZSA/IG1vZHVsZS5kZWZhdWx0IDogbW9kdWxlKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZXQoY21kLm5hbWUsIGNtZCk7XG5cdFx0XHRcdFx0XHRcdHJlc3VsdHMucHVzaChjbWQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdGlmIChlLmNvZGUgPT09ICdFTk9FTlQnKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBFLkZJTEVfTk9UX0ZPVU5EKGBDb21tYW5kIHBhdGggZG9lcyBub3QgZXhpc3Q6ICR7aXR9YCwgeyBuYW1lOiAnY29tbWFuZCcsIHNjb3BlOiAnQ29tbWFuZE1hcC5hZGQnLCB2YWx1ZTogaXQgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRocm93IGU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb250aW51ZTtcblxuXHRcdFx0fSBlbHNlIGlmIChpdCAmJiB0eXBlb2YgaXQgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdC8vIGN0b3IgcGFyYW1zIG9yIENvbW1hbmQtbGlrZVxuXHRcdFx0XHRpZiAoaXQuY2xpa2l0IGluc3RhbmNlb2YgU2V0KSB7XG5cdFx0XHRcdFx0aWYgKGl0LmNsaWtpdC5oYXMoJ0V4dGVuc2lvbicpKSB7XG5cdFx0XHRcdFx0XHQvLyBhY3Rpb25zIGFuZCBleHRlbnNpb25zIG5vdCBzdXBwb3J0ZWQgaGVyZVxuXHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChpdC5jbGlraXQuaGFzKCdDb21tYW5kJykpIHtcblx0XHRcdFx0XHRcdGNtZCA9IG5ldyBDb21tYW5kKGl0Lm5hbWUsIGl0KTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0NPTU1BTkQoYEludmFsaWQgY29tbWFuZDogY2xpLWtpdCB0eXBlIFwiJHtBcnJheS5mcm9tKGl0LmNsaWtpdClbMF19XCIgbm90IHN1cHBvcnRlZGAsIHsgbmFtZTogJ2NvbW1hbmQnLCBzY29wZTogJ0NvbW1hbmRNYXAuYWRkJywgdmFsdWU6IGl0IH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmIChpdC5uYW1lICYmIHR5cGVvZiBpdC5uYW1lID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdC8vIHRoZSBvYmplY3QgaXMgY29tbWFuZCBjdG9yIHBhcmFtc1xuXHRcdFx0XHRcdGNtZCA9IG5ldyBDb21tYW5kKGl0Lm5hbWUsIGl0KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBhbiBvYmplY3Qgb2YgY29tbWFuZCBuYW1lcyB0byBhIHBhdGgsIGN0b3IgcGFyYW1zLCBDb21tYW5kIG9iamVjdCwgb3IgQ29tbWFuZC1saWtlIG9iamVjdFxuXG5cdFx0XHRcdFx0Zm9yIChjb25zdCBbIG5hbWUsIHZhbHVlIF0gb2YgT2JqZWN0LmVudHJpZXMoaXQpKSB7XG5cdFx0XHRcdFx0XHRjbWQgPSBuZXcgQ29tbWFuZChuYW1lLCB2YWx1ZSk7XG5cdFx0XHRcdFx0XHR0aGlzLnNldChjbWQubmFtZSwgY21kKTtcblx0XHRcdFx0XHRcdHJlc3VsdHMucHVzaChjbWQpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmIChjbWQgaW5zdGFuY2VvZiBDb21tYW5kKSB7XG5cdFx0XHRcdHRoaXMuc2V0KGNtZC5uYW1lLCBjbWQpO1xuXHRcdFx0XHRyZXN1bHRzLnB1c2goY21kKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVChgSW52YWxpZCBjb21tYW5kIFwiJHtpdH1cIiwgZXhwZWN0ZWQgYW4gb2JqZWN0YCwgeyBuYW1lOiAnY29tbWFuZCcsIHNjb3BlOiAnQ29tbWFuZE1hcC5hZGQnLCB2YWx1ZTogaXQgfSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdHM7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNvbW1hbmRzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7TnVtYmVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Z2V0IGNvdW50KCkge1xuXHRcdHJldHVybiB0aGlzLnNpemU7XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBjb21tYW5kcyBmb3IgdGhlIGhlbHAgc2NyZWVuLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Z2VuZXJhdGVIZWxwKCkge1xuXHRcdGNvbnN0IGVudHJpZXMgPSBbXTtcblxuXHRcdGZvciAoY29uc3QgY21kIG9mIEFycmF5LmZyb20odGhpcy5rZXlzKCkpKSB7XG5cdFx0XHRjb25zdCB7IGFsaWFzZXMsIGNsaWtpdEhlbHAsIGRlc2MsIGhpZGRlbiwgbmFtZSB9ID0gdGhpcy5nZXQoY21kKTtcblx0XHRcdGlmICghaGlkZGVuICYmICFjbGlraXRIZWxwKSB7XG5cdFx0XHRcdGNvbnN0IGxhYmVscyA9IFsgbmFtZSBdO1xuXHRcdFx0XHRmb3IgKGNvbnN0IFsgYWxpYXMsIGRpc3BsYXkgXSBvZiBPYmplY3QuZW50cmllcyhhbGlhc2VzKSkge1xuXHRcdFx0XHRcdGlmIChkaXNwbGF5ID09PSAndmlzaWJsZScpIHtcblx0XHRcdFx0XHRcdGxhYmVscy5wdXNoKGFsaWFzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0bGFiZWxzLnNvcnQoKGEsIGIpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gYS5sZW5ndGggPT09IGIubGVuZ3RoID8gYS5sb2NhbGVDb21wYXJlKGIpIDogYS5sZW5ndGggLSBiLmxlbmd0aDtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0ZW50cmllcy5wdXNoKHtcblx0XHRcdFx0XHRuYW1lLFxuXHRcdFx0XHRcdGRlc2MsXG5cdFx0XHRcdFx0bGFiZWw6IGxhYmVscy5qb2luKCcsICcpLFxuXHRcdFx0XHRcdGFsaWFzZXM6IGFsaWFzZXMgPyBPYmplY3Qua2V5cyhhbGlhc2VzKSA6IG51bGxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0ZW50cmllcy5zb3J0KChhLCBiKSA9PiBhLmxhYmVsLmxvY2FsZUNvbXBhcmUoYi5sYWJlbCkpO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGNvdW50OiBlbnRyaWVzLmxlbmd0aCxcblx0XHRcdGVudHJpZXNcblx0XHR9O1xuXHR9XG59XG4iXSwiZmlsZSI6InBhcnNlci9jb21tYW5kLW1hcC5qcyJ9 |
@@ -22,2 +22,4 @@ "use strict"; | ||
const formatRegExp = /^([@! ]*[\w-_]+(?:\s*,\s*[@! ]*[\w-_]+)*)((?:\s*[<[][\w-_]+[>\]])*)?$/; | ||
const nameRegExp = /^([@! ]*)([\w-_]+)\s*$/; | ||
/** | ||
@@ -28,2 +30,3 @@ * Defines a command and its options and arguments. | ||
*/ | ||
class Command extends _context.default { | ||
@@ -44,3 +47,4 @@ /** | ||
* @param {Function|Command} [params.action] - A function to call when the command is found. | ||
* @param {Array.<String>|String} [params.aliases] - An array of command aliases. | ||
* @param {Set.<String>|Array.<String>|String|Object} [params.aliases] - An array of command | ||
* aliases. | ||
* @param {String|Function} [params.defaultCommand] - The default command to execute when this | ||
@@ -65,3 +69,3 @@ * command has no `action`. When value is a `String`, it looks up the subcommand and calls it. | ||
if (!name || typeof name !== 'string') { | ||
throw _errors.default.INVALID_ARGUMENT('Expected name to be a non-empty string', { | ||
throw _errors.default.INVALID_ARGUMENT('Expected command name to be a non-empty string', { | ||
name: 'name', | ||
@@ -71,2 +75,14 @@ scope: 'Command.constructor', | ||
}); | ||
} // parse the name and create the aliases and args: "ls, list <bar>" | ||
const format = name.trim(); | ||
const m = format.match(formatRegExp); | ||
if (!m || !m[1]) { | ||
throw _errors.default.INVALID_ARGUMENT('Expected command name to be a non-empty string', { | ||
name: 'name', | ||
scope: 'Command.constructor', | ||
value: name | ||
}); | ||
} | ||
@@ -78,4 +94,35 @@ | ||
}; | ||
} // reset the name | ||
name = null; // get the aliases from the format and find the command name | ||
const aliases = new Set(); | ||
for (let alias of m[1].split(',')) { | ||
const n = alias.match(nameRegExp); | ||
if (!n) { | ||
throw _errors.default.INVALID_ARGUMENT('Invalid command alias format', { | ||
name: 'alias', | ||
scope: 'Command.constructor', | ||
value: alias | ||
}); | ||
} | ||
if (!n[1].includes('@') && !name) { | ||
name = n[2]; | ||
} else { | ||
aliases.add(n[1].includes('!') ? `!${n[2]}` : n[2]); | ||
} | ||
} | ||
if (!name) { | ||
throw _errors.default.INVALID_ARGUMENT('Expected command name format to contain at least one non-aliased name', { | ||
name: 'format', | ||
scope: 'Command.constructor', | ||
value: format | ||
}); | ||
} | ||
if (!params || typeof params !== 'object' || Array.isArray(params)) { | ||
@@ -169,2 +216,8 @@ throw _errors.default.INVALID_ARGUMENT('Expected command parameters to be an object', { | ||
params.name = name; | ||
const args = m[2] && m[2].trim().split(/\s+/); | ||
if (args === null || args === void 0 ? void 0 : args.length) { | ||
params.args = params.args ? [...args, ...params.args] : args; | ||
} | ||
super(params); | ||
@@ -182,5 +235,6 @@ | ||
this.action = this.lookup.commands[params.defaultCommand]; | ||
} | ||
} // mix aliases Set with params.aliases | ||
this.aliases = params.aliases; | ||
this._aliases = this.createAliases(aliases, params.aliases); | ||
this.clikitHelp = params.clikitHelp; | ||
@@ -204,16 +258,47 @@ this.help = help; | ||
set aliases(value) { | ||
this._aliases = this.createAliases(value); | ||
} | ||
/** | ||
* Merges multiple alias constructs into a single alias object. | ||
* | ||
* @param {...Set.<String>|Array.<String>|String|Object} values - One or more alias values. | ||
* @returns {Object} | ||
* @access private | ||
*/ | ||
createAliases(...values) { | ||
const result = {}; | ||
if (value) { | ||
for (let value of values) { | ||
if (!value) { | ||
continue; | ||
} | ||
if (value instanceof Set) { | ||
value = Array.from(value); | ||
} | ||
if (typeof value === 'object' && !Array.isArray(value)) { | ||
Object.assign(result, value); | ||
} else { | ||
if (!Array.isArray(value)) { | ||
value = [value]; | ||
continue; | ||
} | ||
if (!Array.isArray(value)) { | ||
value = [value]; | ||
} | ||
for (const alias of value) { | ||
if (!alias || typeof alias !== 'string') { | ||
throw _errors.default.INVALID_ARGUMENT('Expected command aliases to be an array of strings', { | ||
name: 'aliases.alias', | ||
scope: 'Command.constructor', | ||
value: alias | ||
}); | ||
} | ||
for (const alias of value) { | ||
if (!alias || typeof alias !== 'string') { | ||
throw _errors.default.INVALID_ARGUMENT('Expected command aliases to be an array of strings', { | ||
name: 'aliases.alias', | ||
for (const a of alias.split(/[ ,|]+/)) { | ||
if (a === '!') { | ||
throw _errors.default.INVALID_ALIAS(`Invalid command alias "${alias}"`, { | ||
name: 'aliases', | ||
scope: 'Command.constructor', | ||
@@ -224,16 +309,6 @@ value: alias | ||
for (const a of alias.split(/[ ,|]+/)) { | ||
if (a === '!') { | ||
throw _errors.default.INVALID_ALIAS(`Invalid command alias "${alias}"`, { | ||
name: 'aliases', | ||
scope: 'Command.constructor', | ||
value: alias | ||
}); | ||
} | ||
if (a[0] === '!') { | ||
result[a.substring(1)] = 'hidden'; | ||
} else { | ||
result[a] = 'visible'; | ||
} | ||
if (a[0] === '!') { | ||
result[a.substring(1)] = 'hidden'; | ||
} else { | ||
result[a] = 'visible'; | ||
} | ||
@@ -244,3 +319,3 @@ } | ||
this._aliases = result; | ||
return result; | ||
} | ||
@@ -282,2 +357,2 @@ /** | ||
exports.default = Command; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9jb21tYW5kLmpzIl0sIm5hbWVzIjpbIkNvbW1hbmQiLCJDb250ZXh0IiwiY29uc3RydWN0b3IiLCJuYW1lIiwicGFyYW1zIiwiRSIsIklOVkFMSURfQVJHVU1FTlQiLCJzY29wZSIsInZhbHVlIiwiYWN0aW9uIiwiQXJyYXkiLCJpc0FycmF5IiwiZGVmYXVsdENvbW1hbmQiLCJ1bmRlZmluZWQiLCJjbGlraXQiLCJTZXQiLCJoYXMiLCJ0aXRsZSIsInRlcm1pbmFsIiwicGFyc2VyIiwiZ2V0IiwiaGVscENvbW1hbmQiLCJjbWQiLCJjb21tYW5kcyIsIklOVkFMSURfQ0xJS0lUX09CSkVDVCIsImhlbHAiLCJoZWFkZXIiLCJmb290ZXIiLCJsb29rdXAiLCJhbGlhc2VzIiwiY2xpa2l0SGVscCIsImhpZGRlbiIsIl9hbGlhc2VzIiwicmVzdWx0IiwiT2JqZWN0IiwiYXNzaWduIiwiYWxpYXMiLCJhIiwic3BsaXQiLCJJTlZBTElEX0FMSUFTIiwic3Vic3RyaW5nIiwiZ2VuZXJhdGVIZWxwIiwib24iLCJyZXN1bHRzIiwib3B0cyIsInN0eWxlIiwiZGVidWciLCJzdHlsZXMiLCJjYWxsIiwic2NoZW1hIiwiZGVzYyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOzs7Ozs7QUFFQTs7Ozs7QUFLZSxNQUFNQSxPQUFOLFNBQXNCQyxnQkFBdEIsQ0FBOEI7QUFDNUM7Ozs7Ozs7QUFRQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlCQUMsRUFBQUEsV0FBVyxDQUFDQyxJQUFELEVBQU9DLE1BQU0sR0FBRyxFQUFoQixFQUFvQjtBQUM5QixRQUFJLENBQUNELElBQUQsSUFBUyxPQUFPQSxJQUFQLEtBQWdCLFFBQTdCLEVBQXVDO0FBQ3RDLFlBQU1FLGdCQUFFQyxnQkFBRixDQUFtQix3Q0FBbkIsRUFBNkQ7QUFBRUgsUUFBQUEsSUFBSSxFQUFFLE1BQVI7QUFBZ0JJLFFBQUFBLEtBQUssRUFBRSxxQkFBdkI7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QUNJLENBQUQsQ0FBTixHQUFZLFNBQVo7QUFDQTtBQUNEO0FBQ0Q7QUFDRDtBQUNEOztBQUNELFNBQUtMLFFBQUwsR0FBZ0JDLE1BQWhCO0FBQ0E7QUFFRDs7Ozs7Ozs7QUFNQVEsRUFBQUEsWUFBWSxHQUFHO0FBQ2QsU0FBS0MsRUFBTCxDQUFRLGNBQVIsRUFBd0IsTUFBTUMsT0FBTixJQUFpQjtBQUN4QyxZQUFNQyxJQUFJLEdBQUc7QUFDWkMsUUFBQUEsS0FBSyxFQUFFQyxlQUFNQztBQURELE9BQWI7QUFHQUosTUFBQUEsT0FBTyxDQUFDakIsTUFBUixHQUFpQixPQUFPLEtBQUtELElBQUwsQ0FBVUMsTUFBakIsS0FBNEIsVUFBNUIsR0FBeUMsTUFBTSxLQUFLRCxJQUFMLENBQVVDLE1BQVYsQ0FBaUJzQixJQUFqQixDQUFzQixJQUF0QixFQUE0QkosSUFBNUIsQ0FBL0MsR0FBbUYsS0FBS25CLElBQUwsQ0FBVUMsTUFBOUc7QUFDQWlCLE1BQUFBLE9BQU8sQ0FBQ2hCLE1BQVIsR0FBaUIsT0FBTyxLQUFLRixJQUFMLENBQVVFLE1BQWpCLEtBQTRCLFVBQTVCLEdBQXlDLE1BQU0sS0FBS0YsSUFBTCxDQUFVRSxNQUFWLENBQWlCcUIsSUFBakIsQ0FBc0IsSUFBdEIsRUFBNEJKLElBQTVCLENBQS9DLEdBQW1GLEtBQUtuQixJQUFMLENBQVVFLE1BQTlHO0FBQ0EsS0FORDtBQVFBLFdBQU8sTUFBTWMsWUFBTixFQUFQO0FBQ0E7QUFFRDs7Ozs7Ozs7QUFNQVEsRUFBQUEsTUFBTSxHQUFHO0FBQ1IsV0FBTztBQUNOQyxNQUFBQSxJQUFJLEVBQUUsS0FBS0E7QUFETCxLQUFQO0FBR0E7O0FBdE0yQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb250ZXh0IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnLi4vbGliL2RlYnVnJztcbmltcG9ydCBFIGZyb20gJy4uL2xpYi9lcnJvcnMnO1xuaW1wb3J0IGhlbHBDb21tYW5kIGZyb20gJy4uL2NvbW1hbmRzL2hlbHAnO1xuXG5pbXBvcnQgeyBkZWNsYXJlQ0xJS2l0Q2xhc3MgfSBmcm9tICcuLi9saWIvdXRpbCc7XG5cbi8qKlxuICogRGVmaW5lcyBhIGNvbW1hbmQgYW5kIGl0cyBvcHRpb25zIGFuZCBhcmd1bWVudHMuXG4gKlxuICogQGV4dGVuZHMge0NvbnRleHR9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbW1hbmQgZXh0ZW5kcyBDb250ZXh0IHtcblx0LyoqXG5cdCAqIEludGVybmFsIG9iamVjdCBmb3IgdHJhY2tpbmcgYWxpYXNlcy5cblx0ICpcblx0ICogQHR5cGUge09iamVjdH1cblx0ICogQHByaXZhdGVcblx0ICovXG5cdF9hbGlhc2VzID0ge307XG5cblx0LyoqXG5cdCAqIENvbnN0cnVjdHMgYSBjb21tYW5kIGluc3RhbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIFRoZSBjb21tYW5kIG5hbWUuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fENMSXxDb21tYW5kfENvbnRleHR8RnVuY3Rpb259IFtwYXJhbXNdIC0gQ29tbWFuZCBwYXJhbWV0ZXJzIG9yIGFuIGFjdGlvblxuXHQgKiBmdW5jdGlvbi5cblx0ICogQHBhcmFtIHtGdW5jdGlvbnxDb21tYW5kfSBbcGFyYW1zLmFjdGlvbl0gLSBBIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgY29tbWFuZCBpcyBmb3VuZC5cblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPnxTdHJpbmd9IFtwYXJhbXMuYWxpYXNlc10gLSBBbiBhcnJheSBvZiBjb21tYW5kIGFsaWFzZXMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfEZ1bmN0aW9ufSBbcGFyYW1zLmRlZmF1bHRDb21tYW5kXSAtIFRoZSBkZWZhdWx0IGNvbW1hbmQgdG8gZXhlY3V0ZSB3aGVuIHRoaXNcblx0ICogY29tbWFuZCBoYXMgbm8gYGFjdGlvbmAuIFdoZW4gdmFsdWUgaXMgYSBgU3RyaW5nYCwgaXQgbG9va3MgdXAgdGhlIHN1YmNvbW1hbmQgYW5kIGNhbGxzIGl0LlxuXHQgKiBJZiB2YWx1ZSBpcyBhIGBGdW5jdGlvbmAsIGl0IHNpbXBseSBpbnZva2VzIGl0LlxuXHQgKiBAcGFyYW0ge1N0cmluZ3xGdW5jdGlvbnxPYmplY3R9IFtwYXJhbXMuaGVscF0gLSBBZGRpdGlvbmFsIGhlbHAgY29udGVudCB0byBkaXNwbGF5IG9uIHRoZVxuXHQgKiBoZWxwIHNjcmVlbi4gV2hlbiBtYXkgYmUgYW4gb2JqZWN0IHdpdGggdGhlIHByb3BlcnRpZXMgYGhlYWRlcmAgYW5kIGBmb290ZXJgIHdoaWNoIHZhbHVlc1xuXHQgKiB0aGF0IGFyZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gYXN5bmMgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyBhIHN0cmluZy4gV2hlbiB2YWx1ZSBpcyBhIHN0cmluZ1xuXHQgKiBvciBmdW5jdGlvbiwgaXQgaXMgdHJhc25mb3JtZWQgaW50byBhIG9iamVjdCB3aXRoIHRoZSB2YWx1ZSBiZWluZyB1c2VkIGFzIHRoZSBoZWFkZXIuIE5vdGVcblx0ICogdGhhdCB0aGUgY29tbWFuZCBkZXNjcmlwdGlvbiBpcyBub3QgZGlzcGxheWVkIHdoZW4gYSBoZWFkZXIgbWVzc2FnZSBoYXMgYmVlbiBkZWZpbmVkLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtwYXJhbXMuaGlkZGVuPWZhbHNlXSAtIFdoZW4gYHRydWVgLCB0aGUgb3B0aW9uIGlzIG5vdCBkaXNwbGF5ZWQgb24gdGhlXG5cdCAqIGhlbHAgc2NyZWVuIG9yIGF1dG8tc3VnZ2VzdC5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICpcblx0ICogQGV4YW1wbGVcblx0ICogICBuZXcgQ29tbWFuZCgnZm9vJylcblx0ICogICBuZXcgQ29tbWFuZCgnZm9vJywge30pXG5cdCAqICAgbmV3IENvbW1hbmQobmV3IENvbW1hbmQoJ2ZvbycpKVxuXHQgKi9cblx0Y29uc3RydWN0b3IobmFtZSwgcGFyYW1zID0ge30pIHtcblx0XHRpZiAoIW5hbWUgfHwgdHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIG5hbWUgdG8gYmUgYSBub24tZW1wdHkgc3RyaW5nJywgeyBuYW1lOiAnbmFtZScsIHNjb3BlOiAnQ29tbWFuZC5jb25zdHJ1Y3RvcicsIHZhbHVlOiBuYW1lIH0pO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2YgcGFyYW1zID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRwYXJhbXMgPSB7IGFjdGlvbjogcGFyYW1zIH07XG5cdFx0fVxuXG5cdFx0aWYgKCFwYXJhbXMgfHwgKHR5cGVvZiBwYXJhbXMgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkocGFyYW1zKSkpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgY29tbWFuZCBwYXJhbWV0ZXJzIHRvIGJlIGFuIG9iamVjdCcsIHsgbmFtZTogJ3BhcmFtcycsIHNjb3BlOiAnQ29tbWFuZC5jb25zdHJ1Y3RvcicsIHZhbHVlOiBwYXJhbXMgfSk7XG5cdFx0fVxuXG5cdFx0aWYgKHBhcmFtcy5kZWZhdWx0Q29tbWFuZCAhPT0gdW5kZWZpbmVkICYmICghcGFyYW1zLmRlZmF1bHRDb21tYW5kIHx8ICh0eXBlb2YgcGFyYW1zLmRlZmF1bHRDb21tYW5kICE9PSAnc3RyaW5nJyAmJiB0eXBlb2YgcGFyYW1zLmRlZmF1bHRDb21tYW5kICE9PSAnZnVuY3Rpb24nKSkpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgZGVmYXVsdCBjb21tYW5kIHRvIGJlIGEgc3RyaW5nIG9yIGZ1bmN0aW9uJywgeyBuYW1lOiAnZGVmYXVsdENvbW1hbmQnLCBzY29wZTogJ0NvbW1hbmQuY29uc3RydWN0b3InLCB2YWx1ZTogcGFyYW1zLmRlZmF1bHRDb21tYW5kIH0pO1xuXHRcdH1cblxuXHRcdGlmIChwYXJhbXMuY2xpa2l0IGluc3RhbmNlb2YgU2V0KSB7XG5cdFx0XHQvLyBwYXJhbXMgaXMgYSBjbGkta2l0IG9iamVjdFxuXHRcdFx0aWYgKHBhcmFtcy5jbGlraXQuaGFzKCdDTEknKSkge1xuXHRcdFx0XHQvLyBzaW5jZSBhIGNvbW1hbmQgY2Fubm90IGhhdmUgYSB0aXRsZSBcImdsb2JhbFwiIChvbmx5IGEgYENMSWAgb2JqZWN0IGNhbiBoYXZlIHRoYXQpLFxuXHRcdFx0XHQvLyB3ZSBtdXN0IGRlbGV0ZSBpdCBzbyB0aGF0IHRoZSB0aXRsZSBpcyByZXNldCB0byB0aGUgY29tbWFuZCBuYW1lXG5cdFx0XHRcdGlmIChwYXJhbXMudGl0bGUgPT09ICdHbG9iYWwnKSB7XG5cdFx0XHRcdFx0ZGVsZXRlIHBhcmFtcy50aXRsZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGRlbGV0ZSBwYXJhbXMudGVybWluYWw7XG5cblx0XHRcdFx0Ly8gYWRkIGFuIGFjdGlvbiBoYW5kbGVyIHRoYXQgZWl0ZWhyIGV4ZWN1dGVzIGEgc3BlY2lmaWMgY29tbWFuZCBvciB0aGUgaGVscCBmb3Jcblx0XHRcdFx0Ly8gZm9yIHRoaXMgY29tbWFuZCAoZS5nLiB0aGlzIGNvbW1hbmQgaXMgYW4gZXh0ZW5zaW9uKVxuXHRcdFx0XHRwYXJhbXMuYWN0aW9uID0gYXN5bmMgcGFyc2VyID0+IHtcblx0XHRcdFx0XHRjb25zdCB7IGRlZmF1bHRDb21tYW5kIH0gPSBwYXJhbXM7XG5cdFx0XHRcdFx0aWYgKGRlZmF1bHRDb21tYW5kID09PSAnaGVscCcgJiYgdGhpcy5nZXQoJ2hlbHAnKSkge1xuXHRcdFx0XHRcdFx0YXdhaXQgaGVscENvbW1hbmQuYWN0aW9uKHBhcnNlcik7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNvbnN0IGNtZCA9IGRlZmF1bHRDb21tYW5kICYmIHRoaXMuY29tbWFuZHNbZGVmYXVsdENvbW1hbmRdO1xuXHRcdFx0XHRcdFx0aWYgKGNtZCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gY21kLmFjdGlvbihwYXJzZXIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdH0gZWxzZSBpZiAoIXBhcmFtcy5jbGlraXQuaGFzKCdDb21tYW5kJykpIHtcblx0XHRcdFx0Ly8gbXVzdCBiZSBhIGNvbW1hbmQgb3IgZXh0ZW5zaW9uXG5cdFx0XHRcdHRocm93IEUuSU5WQUxJRF9DTElLSVRfT0JKRUNUKCdFeHBlY3RlZCBjb21tYW5kIG9wdGlvbnMgdG8gYmUgYSBDTEkgb3IgQ29tbWFuZCBvYmplY3QnLCB7IG5hbWU6ICdjbGlraXQnLCBzY29wZTogJ0NvbW1hbmQuY29uc3RydWN0b3InLCB2YWx1ZTogcGFyYW1zLmNsaWtpdCB9KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAocGFyYW1zLmFjdGlvbiAmJiB0eXBlb2YgcGFyYW1zLmFjdGlvbiAhPT0gJ2Z1bmN0aW9uJyAmJiAhKHBhcmFtcy5hY3Rpb24gaW5zdGFuY2VvZiBDb21tYW5kKSkge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBjb21tYW5kIGFjdGlvbiB0byBiZSBhIGZ1bmN0aW9uIG9yIENvbW1hbmQgaW5zdGFuY2UnLCB7IG5hbWU6ICdhY3Rpb24nLCBzY29wZTogJ0NvbW1hbmQuY29uc3RydWN0b3InLCB2YWx1ZTogcGFyYW1zLmFjdGlvbiB9KTtcblx0XHR9XG5cblx0XHRjb25zdCBoZWxwID0ge307XG5cdFx0aWYgKHBhcmFtcy5oZWxwKSB7XG5cdFx0XHRpZiAodHlwZW9mIHBhcmFtcy5oZWxwID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgcGFyYW1zLmhlbHAgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0aGVscC5oZWFkZXIgPSBwYXJhbXMuaGVscDtcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtcy5oZWxwID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRpZiAocGFyYW1zLmhlbHAuaGVhZGVyKSB7XG5cdFx0XHRcdFx0aWYgKHR5cGVvZiBwYXJhbXMuaGVscC5oZWFkZXIgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBwYXJhbXMuaGVscC5oZWFkZXIgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRcdGhlbHAuaGVhZGVyID0gcGFyYW1zLmhlbHAuaGVhZGVyO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGhlbHAgY29udGVudCBoZWFkZXIgdG8gYmUgYSBzdHJpbmcgb3IgZnVuY3Rpb24nKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHBhcmFtcy5oZWxwLmZvb3Rlcikge1xuXHRcdFx0XHRcdGlmICh0eXBlb2YgcGFyYW1zLmhlbHAuZm9vdGVyID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgcGFyYW1zLmhlbHAuZm9vdGVyID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0XHRoZWxwLmZvb3RlciA9IHBhcmFtcy5oZWxwLmZvb3Rlcjtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBoZWxwIGNvbnRlbnQgZm9vdGVyIHRvIGJlIGEgc3RyaW5nIG9yIGZ1bmN0aW9uJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGhlbHAgY29udGVudCB0byBiZSBhIHN0cmluZywgZnVuY3Rpb24sIG9yIG9iamVjdCBjb250YWluaW5nIGEgaGVhZGVyIG9yIGZvb3RlcicpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHBhcmFtcy5uYW1lID0gbmFtZTtcblxuXHRcdHN1cGVyKHBhcmFtcyk7XG5cdFx0ZGVjbGFyZUNMSUtpdENsYXNzKHRoaXMsICdDb21tYW5kJyk7XG5cblx0XHRpZiAocGFyYW1zLmFjdGlvbikge1xuXHRcdFx0dGhpcy5hY3Rpb24gPSBwYXJhbXMuYWN0aW9uO1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtcy5kZWZhdWx0Q29tbWFuZCA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0dGhpcy5hY3Rpb24gPSBwYXJhbXMuZGVmYXVsdENvbW1hbmQ7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgcGFyYW1zLmRlZmF1bHRDb21tYW5kID09PSAnc3RyaW5nJykge1xuXHRcdFx0dGhpcy5hY3Rpb24gPSB0aGlzLmxvb2t1cC5jb21tYW5kc1twYXJhbXMuZGVmYXVsdENvbW1hbmRdO1xuXHRcdH1cblxuXHRcdHRoaXMuYWxpYXNlcyAgICAgICAgPSBwYXJhbXMuYWxpYXNlcztcblx0XHR0aGlzLmNsaWtpdEhlbHAgICAgID0gcGFyYW1zLmNsaWtpdEhlbHA7XG5cdFx0dGhpcy5oZWxwICAgICAgICAgICA9IGhlbHA7XG5cdFx0dGhpcy5kZWZhdWx0Q29tbWFuZCA9IHBhcmFtcy5kZWZhdWx0Q29tbWFuZDtcblx0XHR0aGlzLmhpZGRlbiAgICAgICAgID0gISFwYXJhbXMuaGlkZGVuO1xuXHR9XG5cblx0LyoqXG5cdCAqIEEgbWFwIG9mIGFsaWFzZXMgYW4gd2hldGhlciB0aGV5IGFyZSB2aXNpYmxlLlxuXHQgKlxuXHQgKiBAdHlwZSB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Z2V0IGFsaWFzZXMoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2FsaWFzZXM7XG5cdH1cblxuXHRzZXQgYWxpYXNlcyh2YWx1ZSkge1xuXHRcdGNvbnN0IHJlc3VsdCA9IHt9O1xuXHRcdGlmICh2YWx1ZSkge1xuXHRcdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRcdE9iamVjdC5hc3NpZ24ocmVzdWx0LCB2YWx1ZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRcdFx0dmFsdWUgPSBbIHZhbHVlIF07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmb3IgKGNvbnN0IGFsaWFzIG9mIHZhbHVlKSB7XG5cdFx0XHRcdFx0aWYgKCFhbGlhcyB8fCB0eXBlb2YgYWxpYXMgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGNvbW1hbmQgYWxpYXNlcyB0byBiZSBhbiBhcnJheSBvZiBzdHJpbmdzJywgeyBuYW1lOiAnYWxpYXNlcy5hbGlhcycsIHNjb3BlOiAnQ29tbWFuZC5jb25zdHJ1Y3RvcicsIHZhbHVlOiBhbGlhcyB9KTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRmb3IgKGNvbnN0IGEgb2YgYWxpYXMuc3BsaXQoL1sgLHxdKy8pKSB7XG5cdFx0XHRcdFx0XHRpZiAoYSA9PT0gJyEnKSB7XG5cdFx0XHRcdFx0XHRcdHRocm93IEUuSU5WQUxJRF9BTElBUyhgSW52YWxpZCBjb21tYW5kIGFsaWFzIFwiJHthbGlhc31cImAsIHsgbmFtZTogJ2FsaWFzZXMnLCBzY29wZTogJ0NvbW1hbmQuY29uc3RydWN0b3InLCB2YWx1ZTogYWxpYXMgfSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoYVswXSA9PT0gJyEnKSB7XG5cdFx0XHRcdFx0XHRcdHJlc3VsdFthLnN1YnN0cmluZygxKV0gPSAnaGlkZGVuJztcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJlc3VsdFthXSA9ICd2aXNpYmxlJztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0dGhpcy5fYWxpYXNlcyA9IHJlc3VsdDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW5kZXJzIHRoZSBoZWxwIHNjcmVlbiBmb3IgdGhpcyBjb250ZXh0IGluY2x1ZGluZyB0aGUgcGFyZW50IGNvbnRleHRzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZTxPYmplY3Q+fVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGdlbmVyYXRlSGVscCgpIHtcblx0XHR0aGlzLm9uKCdnZW5lcmF0ZUhlbHAnLCBhc3luYyByZXN1bHRzID0+IHtcblx0XHRcdGNvbnN0IG9wdHMgPSB7XG5cdFx0XHRcdHN0eWxlOiBkZWJ1Zy5zdHlsZXNcblx0XHRcdH07XG5cdFx0XHRyZXN1bHRzLmhlYWRlciA9IHR5cGVvZiB0aGlzLmhlbHAuaGVhZGVyID09PSAnZnVuY3Rpb24nID8gYXdhaXQgdGhpcy5oZWxwLmhlYWRlci5jYWxsKHRoaXMsIG9wdHMpIDogdGhpcy5oZWxwLmhlYWRlcjtcblx0XHRcdHJlc3VsdHMuZm9vdGVyID0gdHlwZW9mIHRoaXMuaGVscC5mb290ZXIgPT09ICdmdW5jdGlvbicgPyBhd2FpdCB0aGlzLmhlbHAuZm9vdGVyLmNhbGwodGhpcywgb3B0cykgOiB0aGlzLmhlbHAuZm9vdGVyO1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHN1cGVyLmdlbmVyYXRlSGVscCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIHNjaGVtYSBmb3IgdGhpcyBjb21tYW5kIGFuZCBhbGwgY2hpbGQgY29udGV4dHMuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtPYmplY3R9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzY2hlbWEoKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGRlc2M6IHRoaXMuZGVzY1xuXHRcdH07XG5cdH1cbn1cbiJdLCJmaWxlIjoicGFyc2VyL2NvbW1hbmQuanMifQ== | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9jb21tYW5kLmpzIl0sIm5hbWVzIjpbImZvcm1hdFJlZ0V4cCIsIm5hbWVSZWdFeHAiLCJDb21tYW5kIiwiQ29udGV4dCIsImNvbnN0cnVjdG9yIiwibmFtZSIsInBhcmFtcyIsIkUiLCJJTlZBTElEX0FSR1VNRU5UIiwic2NvcGUiLCJ2YWx1ZSIsImZvcm1hdCIsInRyaW0iLCJtIiwibWF0Y2giLCJhY3Rpb24iLCJhbGlhc2VzIiwiU2V0IiwiYWxpYXMiLCJzcGxpdCIsIm4iLCJpbmNsdWRlcyIsImFkZCIsIkFycmF5IiwiaXNBcnJheSIsImRlZmF1bHRDb21tYW5kIiwidW5kZWZpbmVkIiwiY2xpa2l0IiwiaGFzIiwidGl0bGUiLCJ0ZXJtaW5hbCIsInBhcnNlciIsImdldCIsImhlbHBDb21tYW5kIiwiY21kIiwiY29tbWFuZHMiLCJJTlZBTElEX0NMSUtJVF9PQkpFQ1QiLCJoZWxwIiwiaGVhZGVyIiwiZm9vdGVyIiwiYXJncyIsImxlbmd0aCIsImxvb2t1cCIsIl9hbGlhc2VzIiwiY3JlYXRlQWxpYXNlcyIsImNsaWtpdEhlbHAiLCJoaWRkZW4iLCJ2YWx1ZXMiLCJyZXN1bHQiLCJmcm9tIiwiT2JqZWN0IiwiYXNzaWduIiwiYSIsIklOVkFMSURfQUxJQVMiLCJzdWJzdHJpbmciLCJnZW5lcmF0ZUhlbHAiLCJvbiIsInJlc3VsdHMiLCJvcHRzIiwic3R5bGUiLCJkZWJ1ZyIsInN0eWxlcyIsImNhbGwiLCJzY2hlbWEiLCJkZXNjIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7OztBQUVBLE1BQU1BLFlBQVksR0FBRyx1RUFBckI7QUFDQSxNQUFNQyxVQUFVLEdBQUcsd0JBQW5CO0FBRUE7Ozs7OztBQUtlLE1BQU1DLE9BQU4sU0FBc0JDLGdCQUF0QixDQUE4QjtBQUM1Qzs7Ozs7OztBQVFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBCQUMsRUFBQUEsV0FBVyxDQUFDQyxJQUFELEVB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LElBQUksRUFBRSxLQUFLQTtBQURMLEtBQVA7QUFHQTs7QUEvUDJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbnRleHQgZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCBkZWJ1ZyBmcm9tICcuLi9saWIvZGVidWcnO1xuaW1wb3J0IEUgZnJvbSAnLi4vbGliL2Vycm9ycyc7XG5pbXBvcnQgaGVscENvbW1hbmQgZnJvbSAnLi4vY29tbWFuZHMvaGVscCc7XG5cbmltcG9ydCB7IGRlY2xhcmVDTElLaXRDbGFzcyB9IGZyb20gJy4uL2xpYi91dGlsJztcblxuY29uc3QgZm9ybWF0UmVnRXhwID0gL14oW0AhIF0qW1xcdy1fXSsoPzpcXHMqLFxccypbQCEgXSpbXFx3LV9dKykqKSgoPzpcXHMqWzxbXVtcXHctX10rWz5cXF1dKSopPyQvO1xuY29uc3QgbmFtZVJlZ0V4cCA9IC9eKFtAISBdKikoW1xcdy1fXSspXFxzKiQvO1xuXG4vKipcbiAqIERlZmluZXMgYSBjb21tYW5kIGFuZCBpdHMgb3B0aW9ucyBhbmQgYXJndW1lbnRzLlxuICpcbiAqIEBleHRlbmRzIHtDb250ZXh0fVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb21tYW5kIGV4dGVuZHMgQ29udGV4dCB7XG5cdC8qKlxuXHQgKiBJbnRlcm5hbCBvYmplY3QgZm9yIHRyYWNraW5nIGFsaWFzZXMuXG5cdCAqXG5cdCAqIEB0eXBlIHtPYmplY3R9XG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfYWxpYXNlcyA9IHt9O1xuXG5cdC8qKlxuXHQgKiBDb25zdHJ1Y3RzIGEgY29tbWFuZCBpbnN0YW5jZS5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBUaGUgY29tbWFuZCBuYW1lLlxuXHQgKiBAcGFyYW0ge09iamVjdHxDTEl8Q29tbWFuZHxDb250ZXh0fEZ1bmN0aW9ufSBbcGFyYW1zXSAtIENvbW1hbmQgcGFyYW1ldGVycyBvciBhbiBhY3Rpb25cblx0ICogZnVuY3Rpb24uXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb258Q29tbWFuZH0gW3BhcmFtcy5hY3Rpb25dIC0gQSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGNvbW1hbmQgaXMgZm91bmQuXG5cdCAqIEBwYXJhbSB7U2V0LjxTdHJpbmc+fEFycmF5LjxTdHJpbmc+fFN0cmluZ3xPYmplY3R9IFtwYXJhbXMuYWxpYXNlc10gLSBBbiBhcnJheSBvZiBjb21tYW5kXG5cdCAqIGFsaWFzZXMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfEZ1bmN0aW9ufSBbcGFyYW1zLmRlZmF1bHRDb21tYW5kXSAtIFRoZSBkZWZhdWx0IGNvbW1hbmQgdG8gZXhlY3V0ZSB3aGVuIHRoaXNcblx0ICogY29tbWFuZCBoYXMgbm8gYGFjdGlvbmAuIFdoZW4gdmFsdWUgaXMgYSBgU3RyaW5nYCwgaXQgbG9va3MgdXAgdGhlIHN1YmNvbW1hbmQgYW5kIGNhbGxzIGl0LlxuXHQgKiBJZiB2YWx1ZSBpcyBhIGBGdW5jdGlvbmAsIGl0IHNpbXBseSBpbnZva2VzIGl0LlxuXHQgKiBAcGFyYW0ge1N0cmluZ3xGdW5jdGlvbnxPYmplY3R9IFtwYXJhbXMuaGVscF0gLSBBZGRpdGlvbmFsIGhlbHAgY29udGVudCB0byBkaXNwbGF5IG9uIHRoZVxuXHQgKiBoZWxwIHNjcmVlbi4gV2hlbiBtYXkgYmUgYW4gb2JqZWN0IHdpdGggdGhlIHByb3BlcnRpZXMgYGhlYWRlcmAgYW5kIGBmb290ZXJgIHdoaWNoIHZhbHVlc1xuXHQgKiB0aGF0IGFyZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gYXN5bmMgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyBhIHN0cmluZy4gV2hlbiB2YWx1ZSBpcyBhIHN0cmluZ1xuXHQgKiBvciBmdW5jdGlvbiwgaXQgaXMgdHJhc25mb3JtZWQgaW50byBhIG9iamVjdCB3aXRoIHRoZSB2YWx1ZSBiZWluZyB1c2VkIGFzIHRoZSBoZWFkZXIuIE5vdGVcblx0ICogdGhhdCB0aGUgY29tbWFuZCBkZXNjcmlwdGlvbiBpcyBub3QgZGlzcGxheWVkIHdoZW4gYSBoZWFkZXIgbWVzc2FnZSBoYXMgYmVlbiBkZWZpbmVkLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtwYXJhbXMuaGlkZGVuPWZhbHNlXSAtIFdoZW4gYHRydWVgLCB0aGUgb3B0aW9uIGlzIG5vdCBkaXNwbGF5ZWQgb24gdGhlXG5cdCAqIGhlbHAgc2NyZWVuIG9yIGF1dG8tc3VnZ2VzdC5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICpcblx0ICogQGV4YW1wbGVcblx0ICogICBuZXcgQ29tbWFuZCgnZm9vJylcblx0ICogICBuZXcgQ29tbWFuZCgnZm9vJywge30pXG5cdCAqICAgbmV3IENvbW1hbmQobmV3IENvbW1hbmQoJ2ZvbycpKVxuXHQgKi9cblx0Y29uc3RydWN0b3IobmFtZSwgcGFyYW1zID0ge30pIHtcblx0XHRpZiAoIW5hbWUgfHwgdHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGNvbW1hbmQgbmFtZSB0byBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnLCB7IG5hbWU6ICduYW1lJywgc2NvcGU6ICdDb21tYW5kLmNvbnN0cnVjdG9yJywgdmFsdWU6IG5hbWUgfSk7XG5cdFx0fVxuXG5cdFx0Ly8gcGFyc2UgdGhlIG5hbWUgYW5kIGNyZWF0ZSB0aGUgYWxpYXNlcyBhbmQgYXJnczogXCJscywgbGlzdCA8YmFyPlwiXG5cdFx0Y29uc3QgZm9ybWF0ID0gbmFtZS50cmltKCk7XG5cdFx0Y29uc3QgbSA9IGZvcm1hdC5tYXRjaChmb3JtYXRSZWdFeHApO1xuXHRcdGlmICghbSB8fCAhbVsxXSkge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBjb21tYW5kIG5hbWUgdG8gYmUgYSBub24tZW1wdHkgc3RyaW5nJywgeyBuYW1lOiAnbmFtZScsIHNjb3BlOiAnQ29tbWFuZC5jb25zdHJ1Y3RvcicsIHZhbHVlOiBuYW1lIH0pO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2YgcGFyYW1zID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRwYXJhbXMgPSB7IGFjdGlvbjogcGFyYW1zIH07XG5cdFx0fVxuXG5cdFx0Ly8gcmVzZXQgdGhlIG5hbWVcblx0XHRuYW1lID0gbnVsbDtcblxuXHRcdC8vIGdldCB0aGUgYWxpYXNlcyBmcm9tIHRoZSBmb3JtYXQgYW5kIGZpbmQgdGhlIGNvbW1hbmQgbmFtZVxuXHRcdGNvbnN0IGFsaWFzZXMgPSBuZXcgU2V0KCk7XG5cdFx0Zm9yIChsZXQgYWxpYXMgb2YgbVsxXS5zcGxpdCgnLCcpKSB7XG5cdFx0XHRjb25zdCBuID0gYWxpYXMubWF0Y2gobmFtZVJlZ0V4cCk7XG5cdFx0XHRpZiAoIW4pIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdJbnZhbGlkIGNvbW1hbmQgYWxpYXMgZm9ybWF0JywgeyBuYW1lOiAnYWxpYXMnLCBzY29wZTogJ0NvbW1hbmQuY29uc3RydWN0b3InLCB2YWx1ZTogYWxpYXMgfSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIW5bMV0uaW5jbHVkZXMoJ0AnKSAmJiAhbmFtZSkge1xuXHRcdFx0XHRuYW1lID0gblsyXTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGFsaWFzZXMuYWRkKG5bMV0uaW5jbHVkZXMoJyEnKSA/IGAhJHtuWzJdfWAgOiBuWzJdKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIW5hbWUpIHtcblx0XHRcdHRocm93ICBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGNvbW1hbmQgbmFtZSBmb3JtYXQgdG8gY29udGFpbiBhdCBsZWFzdCBvbmUgbm9uLWFsaWFzZWQgbmFtZScsIHsgbmFtZTogJ2Zvcm1hdCcsIHNjb3BlOiAnQ29tbWFuZC5jb25zdHJ1Y3RvcicsIHZhbHVlOiBmb3JtYXQgfSk7XG5cdFx0fVxuXG5cdFx0aWYgKCFwYXJhbXMgfHwgKHR5cGVvZiBwYXJhbXMgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkocGFyYW1zKSkpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgY29tbWFuZCBwYXJhbWV0ZXJzIHRvIGJlIGFuIG9iamVjdCcsIHsgbmFtZTogJ3BhcmFtcycsIHNjb3BlOiAnQ29tbWFuZC5jb25zdHJ1Y3RvcicsIHZhbHVlOiBwYXJhbXMgfSk7XG5cdFx0fVxuXG5cdFx0aWYgKHBhcmFtcy5kZWZhdWx0Q29tbWFuZCAhPT0gdW5kZWZpbmVkICYmICghcGFyYW1zLmRlZmF1bHRDb21tYW5kIHx8ICh0eXBlb2YgcGFyYW1zLmRlZmF1bHRDb21tYW5kICE9PSAnc3RyaW5nJyAmJiB0eXBlb2YgcGFyYW1zLmRlZmF1bHRDb21tYW5kICE9PSAnZnVuY3Rpb24nKSkpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgZGVmYXVsdCBjb21tYW5kIHRvIGJlIGEgc3RyaW5nIG9yIGZ1bmN0aW9uJywgeyBuYW1lOiAnZGVmYXVsdENvbW1hbmQnLCBzY29wZTogJ0NvbW1hbmQuY29uc3RydWN0b3InLCB2YWx1ZTogcGFyYW1zLmRlZmF1bHRDb21tYW5kIH0pO1xuXHRcdH1cblxuXHRcdGlmIChwYXJhbXMuY2xpa2l0IGluc3RhbmNlb2YgU2V0KSB7XG5cdFx0XHQvLyBwYXJhbXMgaXMgYSBjbGkta2l0IG9iamVjdFxuXHRcdFx0aWYgKHBhcmFtcy5jbGlraXQuaGFzKCdDTEknKSkge1xuXHRcdFx0XHQvLyBzaW5jZSBhIGNvbW1hbmQgY2Fubm90IGhhdmUgYSB0aXRsZSBcImdsb2JhbFwiIChvbmx5IGEgYENMSWAgb2JqZWN0IGNhbiBoYXZlIHRoYXQpLFxuXHRcdFx0XHQvLyB3ZSBtdXN0IGRlbGV0ZSBpdCBzbyB0aGF0IHRoZSB0aXRsZSBpcyByZXNldCB0byB0aGUgY29tbWFuZCBuYW1lXG5cdFx0XHRcdGlmIChwYXJhbXMudGl0bGUgPT09ICdHbG9iYWwnKSB7XG5cdFx0XHRcdFx0ZGVsZXRlIHBhcmFtcy50aXRsZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGRlbGV0ZSBwYXJhbXMudGVybWluYWw7XG5cblx0XHRcdFx0Ly8gYWRkIGFuIGFjdGlvbiBoYW5kbGVyIHRoYXQgZWl0ZWhyIGV4ZWN1dGVzIGEgc3BlY2lmaWMgY29tbWFuZCBvciB0aGUgaGVscCBmb3Jcblx0XHRcdFx0Ly8gZm9yIHRoaXMgY29tbWFuZCAoZS5nLiB0aGlzIGNvbW1hbmQgaXMgYW4gZXh0ZW5zaW9uKVxuXHRcdFx0XHRwYXJhbXMuYWN0aW9uID0gYXN5bmMgcGFyc2VyID0+IHtcblx0XHRcdFx0XHRjb25zdCB7IGRlZmF1bHRDb21tYW5kIH0gPSBwYXJhbXM7XG5cdFx0XHRcdFx0aWYgKGRlZmF1bHRDb21tYW5kID09PSAnaGVscCcgJiYgdGhpcy5nZXQoJ2hlbHAnKSkge1xuXHRcdFx0XHRcdFx0YXdhaXQgaGVscENvbW1hbmQuYWN0aW9uKHBhcnNlcik7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNvbnN0IGNtZCA9IGRlZmF1bHRDb21tYW5kICYmIHRoaXMuY29tbWFuZHNbZGVmYXVsdENvbW1hbmRdO1xuXHRcdFx0XHRcdFx0aWYgKGNtZCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gY21kLmFjdGlvbihwYXJzZXIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdH0gZWxzZSBpZiAoIXBhcmFtcy5jbGlraXQuaGFzKCdDb21tYW5kJykpIHtcblx0XHRcdFx0Ly8gbXVzdCBiZSBhIGNvbW1hbmQgb3IgZXh0ZW5zaW9uXG5cdFx0XHRcdHRocm93IEUuSU5WQUxJRF9DTElLSVRfT0JKRUNUKCdFeHBlY3RlZCBjb21tYW5kIG9wdGlvbnMgdG8gYmUgYSBDTEkgb3IgQ29tbWFuZCBvYmplY3QnLCB7IG5hbWU6ICdjbGlraXQnLCBzY29wZTogJ0NvbW1hbmQuY29uc3RydWN0b3InLCB2YWx1ZTogcGFyYW1zLmNsaWtpdCB9KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAocGFyYW1zLmFjdGlvbiAmJiB0eXBlb2YgcGFyYW1zLmFjdGlvbiAhPT0gJ2Z1bmN0aW9uJyAmJiAhKHBhcmFtcy5hY3Rpb24gaW5zdGFuY2VvZiBDb21tYW5kKSkge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBjb21tYW5kIGFjdGlvbiB0byBiZSBhIGZ1bmN0aW9uIG9yIENvbW1hbmQgaW5zdGFuY2UnLCB7IG5hbWU6ICdhY3Rpb24nLCBzY29wZTogJ0NvbW1hbmQuY29uc3RydWN0b3InLCB2YWx1ZTogcGFyYW1zLmFjdGlvbiB9KTtcblx0XHR9XG5cblx0XHRjb25zdCBoZWxwID0ge307XG5cdFx0aWYgKHBhcmFtcy5oZWxwKSB7XG5cdFx0XHRpZiAodHlwZW9mIHBhcmFtcy5oZWxwID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgcGFyYW1zLmhlbHAgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0aGVscC5oZWFkZXIgPSBwYXJhbXMuaGVscDtcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtcy5oZWxwID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRpZiAocGFyYW1zLmhlbHAuaGVhZGVyKSB7XG5cdFx0XHRcdFx0aWYgKHR5cGVvZiBwYXJhbXMuaGVscC5oZWFkZXIgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBwYXJhbXMuaGVscC5oZWFkZXIgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRcdGhlbHAuaGVhZGVyID0gcGFyYW1zLmhlbHAuaGVhZGVyO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGhlbHAgY29udGVudCBoZWFkZXIgdG8gYmUgYSBzdHJpbmcgb3IgZnVuY3Rpb24nKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHBhcmFtcy5oZWxwLmZvb3Rlcikge1xuXHRcdFx0XHRcdGlmICh0eXBlb2YgcGFyYW1zLmhlbHAuZm9vdGVyID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgcGFyYW1zLmhlbHAuZm9vdGVyID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0XHRoZWxwLmZvb3RlciA9IHBhcmFtcy5oZWxwLmZvb3Rlcjtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBoZWxwIGNvbnRlbnQgZm9vdGVyIHRvIGJlIGEgc3RyaW5nIG9yIGZ1bmN0aW9uJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGhlbHAgY29udGVudCB0byBiZSBhIHN0cmluZywgZnVuY3Rpb24sIG9yIG9iamVjdCBjb250YWluaW5nIGEgaGVhZGVyIG9yIGZvb3RlcicpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHBhcmFtcy5uYW1lID0gbmFtZTtcblxuXHRcdGNvbnN0IGFyZ3MgPSBtWzJdICYmIG1bMl0udHJpbSgpLnNwbGl0KC9cXHMrLyk7XG5cdFx0aWYgKGFyZ3M/Lmxlbmd0aCkge1xuXHRcdFx0cGFyYW1zLmFyZ3MgPSBwYXJhbXMuYXJncyA/IFsgLi4uYXJncywgLi4ucGFyYW1zLmFyZ3MgXSA6IGFyZ3M7XG5cdFx0fVxuXG5cdFx0c3VwZXIocGFyYW1zKTtcblx0XHRkZWNsYXJlQ0xJS2l0Q2xhc3ModGhpcywgJ0NvbW1hbmQnKTtcblxuXHRcdGlmIChwYXJhbXMuYWN0aW9uKSB7XG5cdFx0XHR0aGlzLmFjdGlvbiA9IHBhcmFtcy5hY3Rpb247XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgcGFyYW1zLmRlZmF1bHRDb21tYW5kID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHR0aGlzLmFjdGlvbiA9IHBhcmFtcy5kZWZhdWx0Q29tbWFuZDtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbXMuZGVmYXVsdENvbW1hbmQgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aGlzLmFjdGlvbiA9IHRoaXMubG9va3VwLmNvbW1hbmRzW3BhcmFtcy5kZWZhdWx0Q29tbWFuZF07XG5cdFx0fVxuXG5cdFx0Ly8gbWl4IGFsaWFzZXMgU2V0IHdpdGggcGFyYW1zLmFsaWFzZXNcblx0XHR0aGlzLl9hbGlhc2VzICAgICAgID0gdGhpcy5jcmVhdGVBbGlhc2VzKGFsaWFzZXMsIHBhcmFtcy5hbGlhc2VzKTtcblx0XHR0aGlzLmNsaWtpdEhlbHAgICAgID0gcGFyYW1zLmNsaWtpdEhlbHA7XG5cdFx0dGhpcy5oZWxwICAgICAgICAgICA9IGhlbHA7XG5cdFx0dGhpcy5kZWZhdWx0Q29tbWFuZCA9IHBhcmFtcy5kZWZhdWx0Q29tbWFuZDtcblx0XHR0aGlzLmhpZGRlbiAgICAgICAgID0gISFwYXJhbXMuaGlkZGVuO1xuXHR9XG5cblx0LyoqXG5cdCAqIEEgbWFwIG9mIGFsaWFzZXMgYW4gd2hldGhlciB0aGV5IGFyZSB2aXNpYmxlLlxuXHQgKlxuXHQgKiBAdHlwZSB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Z2V0IGFsaWFzZXMoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2FsaWFzZXM7XG5cdH1cblxuXHRzZXQgYWxpYXNlcyh2YWx1ZSkge1xuXHRcdHRoaXMuX2FsaWFzZXMgPSB0aGlzLmNyZWF0ZUFsaWFzZXModmFsdWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1lcmdlcyBtdWx0aXBsZSBhbGlhcyBjb25zdHJ1Y3RzIGludG8gYSBzaW5nbGUgYWxpYXMgb2JqZWN0LlxuXHQgKlxuXHQgKiBAcGFyYW0gey4uLlNldC48U3RyaW5nPnxBcnJheS48U3RyaW5nPnxTdHJpbmd8T2JqZWN0fSB2YWx1ZXMgLSBPbmUgb3IgbW9yZSBhbGlhcyB2YWx1ZXMuXG5cdCAqIEByZXR1cm5zIHtPYmplY3R9XG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0Y3JlYXRlQWxpYXNlcyguLi52YWx1ZXMpIHtcblx0XHRjb25zdCByZXN1bHQgPSB7fTtcblxuXHRcdGZvciAobGV0IHZhbHVlIG9mIHZhbHVlcykge1xuXHRcdFx0aWYgKCF2YWx1ZSkge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHZhbHVlIGluc3RhbmNlb2YgU2V0KSB7XG5cdFx0XHRcdHZhbHVlID0gQXJyYXkuZnJvbSh2YWx1ZSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuXHRcdFx0XHRPYmplY3QuYXNzaWduKHJlc3VsdCwgdmFsdWUpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuXHRcdFx0XHR2YWx1ZSA9IFsgdmFsdWUgXTtcblx0XHRcdH1cblxuXHRcdFx0Zm9yIChjb25zdCBhbGlhcyBvZiB2YWx1ZSkge1xuXHRcdFx0XHRpZiAoIWFsaWFzIHx8IHR5cGVvZiBhbGlhcyAhPT0gJ3N0cmluZycpIHtcblx0XHRcdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGNvbW1hbmQgYWxpYXNlcyB0byBiZSBhbiBhcnJheSBvZiBzdHJpbmdzJywgeyBuYW1lOiAnYWxpYXNlcy5hbGlhcycsIHNjb3BlOiAnQ29tbWFuZC5jb25zdHJ1Y3RvcicsIHZhbHVlOiBhbGlhcyB9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGZvciAoY29uc3QgYSBvZiBhbGlhcy5zcGxpdCgvWyAsfF0rLykpIHtcblx0XHRcdFx0XHRpZiAoYSA9PT0gJyEnKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBFLklOVkFMSURfQUxJQVMoYEludmFsaWQgY29tbWFuZCBhbGlhcyBcIiR7YWxpYXN9XCJgLCB7IG5hbWU6ICdhbGlhc2VzJywgc2NvcGU6ICdDb21tYW5kLmNvbnN0cnVjdG9yJywgdmFsdWU6IGFsaWFzIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoYVswXSA9PT0gJyEnKSB7XG5cdFx0XHRcdFx0XHRyZXN1bHRbYS5zdWJzdHJpbmcoMSldID0gJ2hpZGRlbic7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJlc3VsdFthXSA9ICd2aXNpYmxlJztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbmRlcnMgdGhlIGhlbHAgc2NyZWVuIGZvciB0aGlzIGNvbnRleHQgaW5jbHVkaW5nIHRoZSBwYXJlbnQgY29udGV4dHMuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdD59XG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0Z2VuZXJhdGVIZWxwKCkge1xuXHRcdHRoaXMub24oJ2dlbmVyYXRlSGVscCcsIGFzeW5jIHJlc3VsdHMgPT4ge1xuXHRcdFx0Y29uc3Qgb3B0cyA9IHtcblx0XHRcdFx0c3R5bGU6IGRlYnVnLnN0eWxlc1xuXHRcdFx0fTtcblx0XHRcdHJlc3VsdHMuaGVhZGVyID0gdHlwZW9mIHRoaXMuaGVscC5oZWFkZXIgPT09ICdmdW5jdGlvbicgPyBhd2FpdCB0aGlzLmhlbHAuaGVhZGVyLmNhbGwodGhpcywgb3B0cykgOiB0aGlzLmhlbHAuaGVhZGVyO1xuXHRcdFx0cmVzdWx0cy5mb290ZXIgPSB0eXBlb2YgdGhpcy5oZWxwLmZvb3RlciA9PT0gJ2Z1bmN0aW9uJyA/IGF3YWl0IHRoaXMuaGVscC5mb290ZXIuY2FsbCh0aGlzLCBvcHRzKSA6IHRoaXMuaGVscC5mb290ZXI7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gc3VwZXIuZ2VuZXJhdGVIZWxwKCk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgc2NoZW1hIGZvciB0aGlzIGNvbW1hbmQgYW5kIGFsbCBjaGlsZCBjb250ZXh0cy5cblx0ICpcblx0ICogQHJldHVybnMge09iamVjdH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHNjaGVtYSgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZGVzYzogdGhpcy5kZXNjXG5cdFx0fTtcblx0fVxufVxuIl0sImZpbGUiOiJwYXJzZXIvY29tbWFuZC5qcyJ9 |
@@ -32,3 +32,4 @@ "use strict"; | ||
const { | ||
highlight | ||
highlight, | ||
note | ||
} = _debug.default.styles; | ||
@@ -119,3 +120,3 @@ /** | ||
for (const cmd of cmds) { | ||
log(`Adding command: ${highlight(cmd.name)}`); | ||
log(`Adding command: ${highlight(cmd.name)} ${note(`(${this.name})`)}`); | ||
this.register(cmd); | ||
@@ -146,3 +147,3 @@ } | ||
for (const ext of exts) { | ||
log(`Adding extension: ${highlight(ext.name)}`); | ||
log(`Adding extension: ${highlight(ext.name)} ${note(`(${this.name})`)}`); | ||
this.register(ext); | ||
@@ -225,3 +226,3 @@ } | ||
results.commands.count += ext.count; | ||
results.commands.entries.push.apply(results.commands.entries, ext.entries); // update the default command | ||
results.commands.entries.push(...ext.entries); // update the default command | ||
@@ -429,3 +430,14 @@ if (this.defaultCommand) { | ||
register(it) { | ||
const dest = it.clikit.has('Extension') ? 'extensions' : 'commands'; | ||
let dest; | ||
if (it.clikit.has('Extension')) { | ||
dest = 'extensions'; | ||
} else if (it.clikit.has('Command')) { | ||
dest = 'commands'; | ||
} | ||
if (!dest) { | ||
return; | ||
} | ||
it.parent = this; | ||
@@ -446,2 +458,2 @@ this.lookup[dest][it.name] = it; | ||
exports.default = Context; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9jb250ZXh0LmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsImRlYnVnIiwic3R5bGVzIiwiQ29udGV4dCIsIkhvb2tFbWl0dGVyIiwiY29uc3RydWN0b3IiLCJwYXJhbXMiLCJpbml0IiwiYXJndW1lbnQiLCJhcmciLCJhcmdzIiwiYWRkIiwicmV2IiwiY29tbWFuZCIsImNtZCIsImNtZHMiLCJjb21tYW5kcyIsIm5hbWUiLCJyZWdpc3RlciIsImV4dGVuc2lvbiIsImV4dCIsImV4dHMiLCJleHRlbnNpb25zIiwiZ2VuZXJhdGVIZWxwIiwib3B0cyIsImhvb2siLCJyZXN1bHRzIiwic2NvcGVzIiwiY3R4IiwicHVzaCIsInRpdGxlIiwib3B0aW9ucyIsImNvbnRleHRzIiwidW5zaGlmdCIsInBhcmVudCIsImxvbmdzIiwiU2V0Iiwic2hvcnRzIiwiaiIsImxlbmd0aCIsIk9iamVjdCIsInZhbHVlcyIsImdyb3VwcyIsImkiLCJsb25nIiwic2hvcnQiLCJudWtlIiwiaGFzIiwiY291bnQiLCJzcGxpY2UiLCJkZXNjIiwiU3RyaW5nIiwidHJpbSIsInJlcGxhY2UiLCJjIiwidG9Mb2NhbGVVcHBlckNhc2UiLCJlbnRyaWVzIiwiYXBwbHkiLCJkZWZhdWx0Q29tbWFuZCIsImRlZmF1bHQiLCJhcmd1bWVudHMiLCJyZWR1Y2UiLCJwIiwidXNhZ2UiLCJBcnJheSIsImlzQXJyYXkiLCJwYXJlbnRDb250ZXh0TmFtZXMiLCJzbGljZSIsIm1hcCIsIm11bHRpcGxlIiwicmVxdWlyZWQiLCJ0ZXh0Iiwiam9pbiIsImVycm9yIiwidW5kZWZpbmVkIiwic3VnZ2VzdGlvbnMiLCJ3YXJuaW5ncyIsImdldCIsImRlZmF1bHRWYWx1ZSIsInZhbHVlIiwiY2xpa2l0IiwiRSIsIklOVkFMSURfQVJHVU1FTlQiLCJzY29wZSIsIkFyZ3VtZW50TGlzdCIsImF1dG9IaWRlQmFubmVyIiwiYmFubmVyIiwiQ29tbWFuZE1hcCIsImVycm9ySWZVbmtub3duQ29tbWFuZCIsIkV4dGVuc2lvbk1hcCIsImhlbHBFeGl0Q29kZSIsImhlbHBUZW1wbGF0ZUZpbGUiLCJoaWRlTm9CYW5uZXJPcHRpb24iLCJoaWRlTm9Db2xvck9wdGlvbiIsImxvb2t1cCIsIkxvb2t1cCIsIm5vZGVWZXJzaW9uIiwiT3B0aW9uTWFwIiwic2hvd0Jhbm5lckZvckV4dGVybmFsQ0xJcyIsInNob3dIZWxwT25FcnJvciIsInRyZWF0VW5rbm93bk9wdGlvbnNBc0FyZ3VtZW50cyIsInZlcnNpb24iLCJvcHRpb24iLCJmb3JtYXQiLCJvcHQiLCJhbGlhcyIsInZpc2libGUiLCJhbGlhc2VzIiwicHJvcCIsIml0IiwiZGVzdCIsImtleXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7OztBQUVBLE1BQU07QUFBRUEsRUFBQUE7QUFBRixJQUFVLG9CQUFNLGlCQUFOLENBQWhCO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQWdCQyxlQUFNQyxNQUE1QjtBQUVBOzs7Ozs7O0FBTWUsTUFBTUMsT0FBTixTQUFzQkMsb0JBQXRCLENBQWtDO0FBQ2hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1DQUMsRUFBQUEsV0FBVyxDQUFDQyxNQUFNLEdBQUcsRUFBVixFQUFjO0FBQ3hCO0FBQ0Esa0NBQW1CLElBQW5CLEVBQXlCLFNBQXpCO0FBQ0EsU0FBS0MsSUFBTCxDQUFVRCxNQUFWO0FBQ0E7QUFFRDs7Ozs7Ozs7Ozs7O0FBVUFFLEVBQUFBLFFBQVEsQ0FBQ0MsR0FBRCxFQUFNO0FBQ2IsU0FBS0MsSUFBTCxDQUFVQyxHQUFWLENBQWNGLEdBQWQ7QUFDQSxTQUFLRyxHQUFMO0FBQ0EsV0FBTyxJQUFQO0FBQ0E7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O0FBYUFDLEVBQUFBLE9BQU8sQ0FBQ0MsR0FBRCxFQUFNUixNQUFOLEVBQWM7QUFDcEIsVUFBTVMsSUFBSSxHQUFHLEtBQUtDLFFBQUwsQ0FB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RUFBVy9ELEdBQVgsQ0FBZTBELEtBQWYsQ0FBTCxFQUE0QjtBQUMzQixlQUFLWCxNQUFMLENBQVlnQixJQUFaLEVBQWtCTCxLQUFsQixJQUEyQkksRUFBM0I7QUFDQTtBQUNEO0FBQ0Q7QUFDRDs7QUFqWCtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFyZ3VtZW50TGlzdCBmcm9tICcuL2FyZ3VtZW50LWxpc3QnO1xuaW1wb3J0IENvbW1hbmRNYXAgZnJvbSAnLi9jb21tYW5kLW1hcCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnLi4vbGliL2RlYnVnJztcbmltcG9ydCBFIGZyb20gJy4uL2xpYi9lcnJvcnMnO1xuaW1wb3J0IEV4dGVuc2lvbk1hcCBmcm9tICcuL2V4dGVuc2lvbi1tYXAnO1xuaW1wb3J0IEhvb2tFbWl0dGVyIGZyb20gJ2hvb2stZW1pdHRlcic7XG5pbXBvcnQgTG9va3VwIGZyb20gJy4vbG9va3VwJztcbmltcG9ydCBPcHRpb25NYXAgZnJvbSAnLi9vcHRpb24tbWFwJztcblxuaW1wb3J0IHsgZGVjbGFyZUNMSUtpdENsYXNzIH0gZnJvbSAnLi4vbGliL3V0aWwnO1xuXG5jb25zdCB7IGxvZyB9ID0gZGVidWcoJ2NsaS1raXQ6Y29udGV4dCcpO1xuY29uc3QgeyBoaWdobGlnaHQgfSA9IGRlYnVnLnN0eWxlcztcblxuLyoqXG4gKiBEZWZpbmVzIGEgY29udGV4dCB0aGF0IGNvbnRhaW5zIGNvbW1hbmRzLCBvcHRpb25zLCBhbmQgYXJncy4gU2VydmVzIGFzIHRoZVxuICogYmFzZSBjbGFzcyBmb3IgYENMSWAgYW5kIGBDb250ZXh0YCBvYmplY3RzLlxuICpcbiAqIEBleHRlbmRzIHtIb29rRW1pdHRlcn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29udGV4dCBleHRlbmRzIEhvb2tFbWl0dGVyIHtcblx0LyoqXG5cdCAqIENvbnN0cnVjdHMgYSBjb250ZXh0IGluc3RhbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdHxDb250ZXh0fSBbcGFyYW1zXSAtIFZhcmlvdXMgcGFyYW1ldGVycy5cblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEFyZ3VtZW50fEFyZ3VtZW50TGlzdHxBcnJheTxPYmplY3R8U3RyaW5nfEFyZ3VtZW50Pn0gW3BhcmFtcy5hcmdzXSAtXG5cdCAqIEFuIG9iamVjdCBvZiBhcmd1bWVudCBuYW1lcyB0byBhcmd1bWVudCBkZXNjcmlwdG9ycywgYW4gYXJndW1lbnQgbmFtZSwgYW4gYEFyZ3VtZW50YFxuXHQgKiBpbnN0YW5jZSwgYW4gYEFyZ3VtZW50TGlzdGAgaW5zdGFuY2UsIG9yIGFycmF5IG9mIG9iamVjdCBkZXNjcmlwdG9ycywgYXJndW1lbnQgbmFtZXMsIGFuZFxuXHQgKiBgQXJndW1lbnRgIGluc3RhbmNlcy5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbcGFyYW1zLmNhbWVsQ2FzZT10cnVlXSAtIENhbWVsIGNhc2Ugb3B0aW9uIG5hbWVzLlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8Q29tbWFuZHxDb21tYW5kTWFwfEFycmF5LjxPYmplY3R8U3RyaW5nfENvbW1hbmQ+fSBbcGFyYW1zLmNvbW1hbmRzXSAtXG5cdCAqIEFuIG9iamVjdCB1c2VkIGZvciBgQ29tbWFuZGAgY29uc3RydWN0b3IgcGFyYW1zLCBhIHBhdGggdG8gYSBkaXJlY3Rvcnkgb3IgYSBgLmpzYCBmaWxlLCBhXG5cdCAqIGBDb21tYW5kYCBpbnN0YW5jZSwgb3IgYW4gYXJyYXkgb2YgdGhvc2UgdHlwZXMuIE1heSBhbHNvIGJlIGEgYENvbW1hbmRNYXBgIGluc3RhbmNlLiBJZlxuXHQgKiBgY21kYCBpcyBhIGBTdHJpbmdgIGFuZCBgcGFyYW1zYCBpcyBwcmVzZW50LCB0aGVuIGl0IHdpbGwgdHJlYXQgYGNtZGAgYXMgdGhlIGNvbW1hbmQgbmFtZSxcblx0ICogbm90IGEgZmlsZSBwYXRoLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy5kZXNjXSAtIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgQ0xJIG9yIGNvbW1hbmQgZGlzcGxheWVkIGluIHRoZSBoZWxwXG5cdCAqIG91dHB1dC4gSWYgY29udGV4dCBpcyBhIGNvbW1hbmQgd2l0aCBhIGhlbHAgaGVhZGVyIGRlZmluZWQsIHRoaXMgZGVzY3JpcHRpb24gaXMgbm90XG5cdCAqIGRpc3BsYXllZC5cblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEV4dGVuc2lvbnxFeHRlbnNpb25NYXB8QXJyYXkuPFN0cmluZ3xFeHRlbnNpb24+fSBbcGFyYW1zLmV4dGVuc2lvbnNdIC1cblx0ICogQW4gb2JqZWN0IG9mIGV4dGVuc2lvbiBuYW1lcyB0byBleHRlbnNpb24gcGF0aHMgb3IgaW5zdGFuY2VzLCBhbiBleHRlbnNpb24gcGF0aCwgYW5cblx0ICogYEV4dGVuc2lvbmAgaW5zdGFuY2UsIG9yIGFuIGFycmF5IG9mIHRob3NlIHR5cGVzLiBBbiBleHRlbnNpb24gcGF0aCBtYXkgYmUgYSBkaXJlY3Rvcnlcblx0ICogY29udGFpbmluZyBhIE5vZGUuanMgbW9kdWxlLCBhIHBhdGggdG8gYSBgLmpzYCBmaWxlLCBvciB0aGUgbmFtZSBvZiBhIGV4ZWN1dGFibGUuIE1heSBhbHNvXG5cdCAqIGJlIGFuIGBFeHRlbnNpb25NYXBgIGluc3RhbmNlLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy5uYW1lXSAtIFRoZSBuYW1lIG9mIHRoZSBjb250ZXh0IHN1Y2ggYXMgdGhlIHByb2dyYW0gb3IgdGhlIGNvbW1hbmRcblx0ICogbmFtZS5cblx0ICogQHBhcmFtIHtPYmplY3R8T3B0aW9ufE9wdGlvbk1hcHxBcnJheTxPYmplY3R8T3B0aW9ufFN0cmluZz59IFtwYXJhbXMub3B0aW9uc10gLSBBbiBvYmplY3Qgb2Zcblx0ICogZm9ybWF0IHRvIGBPcHRpb25gIGNvbnN0cnVjdG9yIHBhcmFtcywgYW4gYE9wdGlvbmAgaW5zdGFuY2UsIG9yIGFuIGFycmF5IG9mIGBPcHRpb25gXG5cdCAqIGNvbnN0cnVjdG9yIHBhcmFtcyBhbmQgYE9wdGlvbmAgaW5zdGFuY2VzIGdyb3VwZWQgYnkgYFN0cmluZ2AgbGFiZWxzLlxuXHQgKiBAcGFyYW0ge0NvbnRleHR9IFtwYXJhbXMucGFyZW50XSAtIFRoZSBwYXJlbnQgY29udGV4dC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtwYXJhbXMudGl0bGVdIC0gVGhlIGNvbnRleHQgdGl0bGUuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW3BhcmFtcy50cmVhdFVua25vd25PcHRpb25zQXNBcmd1bWVudHM9ZmFsc2VdIC0gV2hlbiBgdHJ1ZWAsIGFueSBhcmd1bWVudCBpc1xuXHQgKiBlbmNvdW50ZXJlZCBkdXJpbmcgcGFyc2luZyB0aGF0IHJlc2VtYmxlcyBhIG9wdGlvbiB0aGF0IGRvZXMgbm90IGV4aXN0LCBpdCB3aWxsIGFkZCBpdFxuXHQgKiB1bnRvdWNoZWQgdG8gYF9gIGFzIGFuIGFyZ3VtZW50IGFzIHdlbGwgYXMgdG8gYGFyZ3ZgIGFzIGEgYm9vbGVhbiBmbGFnLiBXaGVuIGBmYWxzZWAsIGl0IHdpbGxcblx0ICogb25seSBhZGQgdGhlIGFyZ3VtZW50IHRvIGBhcmd2YCBhcyBhIGJvb2xlYW4gZmxhZy5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbnN0cnVjdG9yKHBhcmFtcyA9IHt9KSB7XG5cdFx0c3VwZXIoKTtcblx0XHRkZWNsYXJlQ0xJS2l0Q2xhc3ModGhpcywgJ0NvbnRleHQnKTtcblx0XHR0aGlzLmluaXQocGFyYW1zKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGFuIGFyZ3VtZW50IHRvIHRoaXMgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEFyZ3VtZW50fEFyZ3VtZW50TGlzdHxBcnJheTxPYmplY3R8U3RyaW5nfEFyZ3VtZW50Pn0gYXJnIC0gQW4gb2JqZWN0XG5cdCAqIG9mIGFyZ3VtZW50IG5hbWVzIHRvIGFyZ3VtZW50IGRlc2NyaXB0b3JzLCBhbiBhcmd1bWVudCBuYW1lLCBhbiBgQXJndW1lbnRgIGluc3RhbmNlLCBhblxuXHQgKiBgQXJndW1lbnRMaXN0YCBpbnN0YW5jZSwgb3IgYXJyYXkgb2Ygb2JqZWN0IGRlc2NyaXB0b3JzLCBhcmd1bWVudCBuYW1lcywgYW5kIGBBcmd1bWVudGBcblx0ICogaW5zdGFuY2VzLlxuXHQgKiBAcmV0dXJucyB7Q29udGV4dH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFyZ3VtZW50KGFyZykge1xuXHRcdHRoaXMuYXJncy5hZGQoYXJnKTtcblx0XHR0aGlzLnJldisrO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBjb21tYW5kIHRvIHRoaXMgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfENvbW1hbmR8Q29tbWFuZE1hcHxBcnJheS48T2JqZWN0fFN0cmluZ3xDb21tYW5kPn0gY21kIC0gQW4gb2JqZWN0XG5cdCAqIHVzZWQgZm9yIGBDb21tYW5kYCBjb25zdHJ1Y3RvciBwYXJhbXMsIGEgcGF0aCB0byBhIGRpcmVjdG9yeSBvciBhIGAuanNgIGZpbGUsIGEgYENvbW1hbmRgXG5cdCAqIGluc3RhbmNlLCBvciBhbiBhcnJheSBvZiB0aG9zZSB0eXBlcy4gTWF5IGFsc28gYmUgYSBgQ29tbWFuZE1hcGAgaW5zdGFuY2UuIElmIGBjbWRgIGlzIGFcblx0ICogYFN0cmluZ2AgYW5kIGBwYXJhbXNgIGlzIHByZXNlbnQsIHRoZW4gaXQgd2lsbCB0cmVhdCBgY21kYCBhcyB0aGUgY29tbWFuZCBuYW1lLCBub3QgYSBmaWxlXG5cdCAqIHBhdGguXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zXSAtIFdoZW4gYGNtZGAgaXMgdGhlIGNvbW1hbmQgbmFtZSwgdGhlbiB0aGlzIGlzIHRoZSBvcHRpb25zIHRvIHBhc3Ncblx0ICogaW50byB0aGUgYENvbW1hbmRgIGNvbnN0cnVjdG9yLlxuXHQgKiBAcmV0dXJucyB7Q29udGV4dH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbW1hbmQoY21kLCBwYXJhbXMpIHtcblx0XHRjb25zdCBjbWRzID0gdGhpcy5jb21tYW5kcy5hZGQoY21kLCBwYXJhbXMpO1xuXHRcdGZvciAoY29uc3QgY21kIG9mIGNtZHMpIHtcblx0XHRcdGxvZyhgQWRkaW5nIGNvbW1hbmQ6ICR7aGlnaGxpZ2h0KGNtZC5uYW1lKX1gKTtcblx0XHRcdHRoaXMucmVnaXN0ZXIoY21kKTtcblx0XHR9XG5cdFx0dGhpcy5yZXYrKztcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgYW4gZXh0ZXJuYWwgcGFja2FnZSBhcyBhIGNvbW1hbmQgY29udGV4dCB0aGF0IGludm9rZXMgdGhlIHBhY2thZ2UuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fFN0cmluZ3xFeHRlbnNpb258RXh0ZW5zaW9uTWFwfEFycmF5LjxTdHJpbmd8RXh0ZW5zaW9uPn0gZXh0IC0gQW4gb2JqZWN0IG9mXG5cdCAqIGV4dGVuc2lvbiBuYW1lcyB0byBleHRlbnNpb24gcGF0aHMgb3IgaW5zdGFuY2VzLCBhbiBleHRlbnNpb24gcGF0aCwgYW4gYEV4dGVuc2lvbmAgaW5zdGFuY2UsXG5cdCAqIG9yIGFuIGFycmF5IG9mIHRob3NlIHR5cGVzLiBBbiBleHRlbnNpb24gcGF0aCBtYXkgYmUgYSBkaXJlY3RvcnkgY29udGFpbmluZyBhIE5vZGUuanNcblx0ICogbW9kdWxlLCBhIHBhdGggdG8gYSBgLmpzYCBmaWxlLCBvciB0aGUgbmFtZSBvZiBhIGV4ZWN1dGFibGUuIE1heSBhbHNvIGJlIGFuIGBFeHRlbnNpb25NYXBgXG5cdCAqIGluc3RhbmNlLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW25hbWVdIC0gVGhlIGV4dGVuc2lvbiBuYW1lIHVzZWQgZm9yIHRoZSBjb250ZXh0IG5hbWUuIElmIG5vdCBzZXQsIGl0IHdpbGxcblx0ICogYXR0ZW1wdCB0byBmaW5kIGEgYHBhY2thZ2UuanNvbmAgd2l0aCBhIGBjbGkta2l0Lm5hbWVgIHZhbHVlLlxuXHQgKiBAcmV0dXJucyB7Q29udGV4dH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGV4dGVuc2lvbihleHQsIG5hbWUpIHtcblx0XHRjb25zdCBleHRzID0gdGhpcy5leHRlbnNpb25zLmFkZChleHQsIG5hbWUpO1xuXHRcdGZvciAoY29uc3QgZXh0IG9mIGV4dHMpIHtcblx0XHRcdGxvZyhgQWRkaW5nIGV4dGVuc2lvbjogJHtoaWdobGlnaHQoZXh0Lm5hbWUpfWApO1xuXHRcdFx0dGhpcy5yZWdpc3RlcihleHQpO1xuXHRcdH1cblx0XHR0aGlzLnJldisrO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbmRlcnMgdGhlIGhlbHAgc2NyZWVuIGZvciB0aGlzIGNvbnRleHQgaW5jbHVkaW5nIHRoZSBwYXJlbnQgY29udGV4dHMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIHBhcmFtZXRlcnMuXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdD59XG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0Z2VuZXJhdGVIZWxwKG9wdHMgPSB7fSkge1xuXHRcdHJldHVybiB0aGlzLmhvb2soJ2dlbmVyYXRlSGVscCcsIHJlc3VsdHMgPT4ge1xuXHRcdFx0Y29uc3Qgc2NvcGVzID0gW107XG5cdFx0XHRsZXQgY3R4ID0gdGhpcztcblxuXHRcdFx0d2hpbGUgKGN0eCkge1xuXHRcdFx0XHRzY29wZXMucHVzaCh7XG5cdFx0XHRcdFx0dGl0bGU6IGAke2N0eC50aXRsZX0gb3B0aW9uc2AsXG5cdFx0XHRcdFx0bmFtZTogY3R4Lm5hbWUsXG5cdFx0XHRcdFx0Li4uY3R4Lm9wdGlvbnMuZ2VuZXJhdGVIZWxwKClcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJlc3VsdHMuY29udGV4dHMudW5zaGlmdChjdHgubmFtZSk7XG5cdFx0XHRcdGN0eCA9IGN0eC5wYXJlbnQ7XG5cdFx0XHR9XG5cblx0XHRcdC8vIHJlbW92ZSBkdXBsaWNhdGUgb3B0aW9uc1xuXHRcdFx0Y29uc3QgbG9uZ3MgPSBuZXcgU2V0KCk7XG5cdFx0XHRjb25zdCBzaG9ydHMgPSBuZXcgU2V0KCk7XG5cdFx0XHRsZXQgaiA9IHNjb3Blcy5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoai0tKSB7XG5cdFx0XHRcdGZvciAoY29uc3Qgb3B0aW9ucyBvZiBPYmplY3QudmFsdWVzKHNjb3Blc1tqXS5ncm91cHMpKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB7IGxvbmcsIHNob3J0IH0gPSBvcHRpb25zW2ldO1xuXHRcdFx0XHRcdFx0bGV0IG51a2UgPSBmYWxzZTtcblx0XHRcdFx0XHRcdGlmIChsb25nICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChsb25ncy5oYXMobG9uZykpIHtcblx0XHRcdFx0XHRcdFx0XHRudWtlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRsb25ncy5hZGQobG9uZyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChzaG9ydCAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0XHRpZiAoc2hvcnRzLmhhcyhzaG9ydCkpIHtcblx0XHRcdFx0XHRcdFx0XHRudWtlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRzaG9ydHMuYWRkKHNob3J0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKG51a2UpIHtcblx0XHRcdFx0XHRcdFx0c2NvcGVzW2pdLmNvdW50LS07XG5cdFx0XHRcdFx0XHRcdG9wdGlvbnMuc3BsaWNlKGktLSwgMSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIHNldCB0aGUgZGVzY3JpcHRpb25cblx0XHRcdHJlc3VsdHMuZGVzYyA9IHRoaXMuZGVzYyA/IFN0cmluZyh0aGlzLmRlc2MpLnRyaW0oKS5yZXBsYWNlKC9eXFx3LywgYyA9PiBjLnRvTG9jYWxlVXBwZXJDYXNlKCkpIDogbnVsbDtcblxuXHRcdFx0Ly8gc2V0IHRoZSBjb21tYW5kc1xuXHRcdFx0cmVzdWx0cy5jb21tYW5kcyA9IHtcblx0XHRcdFx0dGl0bGU6IHRoaXMucGFyZW50ID8gYCR7dGhpcy50aXRsZX0gY29tbWFuZHNgIDogJ0NvbW1hbmRzJyxcblx0XHRcdFx0Li4udGhpcy5jb21tYW5kcy5nZW5lcmF0ZUhlbHAoKVxuXHRcdFx0fTtcblxuXHRcdFx0Y29uc3QgZXh0ID0gdGhpcy5leHRlbnNpb25zLmdlbmVyYXRlSGVscCgpO1xuXHRcdFx0cmVzdWx0cy5jb21tYW5kcy5jb3VudCArPSBleHQuY291bnQ7XG5cdFx0XHRyZXN1bHRzLmNvbW1hbmRzLmVudHJpZXMucHVzaC5hcHBseShyZXN1bHRzLmNvbW1hbmRzLmVudHJpZXMsIGV4dC5lbnRyaWVzKTtcblxuXHRcdFx0Ly8gdXBkYXRlIHRoZSBkZWZhdWx0IGNvbW1hbmRcblx0XHRcdGlmICh0aGlzLmRlZmF1bHRDb21tYW5kKSB7XG5cdFx0XHRcdGZvciAoY29uc3QgY21kIG9mIHJlc3VsdHMuY29tbWFuZHMuZW50cmllcykge1xuXHRcdFx0XHRcdGlmIChjbWQubmFtZSA9PT0gdGhpcy5kZWZhdWx0Q29tbWFuZCkge1xuXHRcdFx0XHRcdFx0Y21kLmRlZmF1bHQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIHNldCB0aGUgYXJndW1lbnRzXG5cdFx0XHRyZXN1bHRzLmFyZ3VtZW50cyA9IHtcblx0XHRcdFx0dGl0bGU6IHRoaXMucGFyZW50ID8gYCR7dGhpcy50aXRsZX0gYXJndW1lbnRzYCA6ICdBcmd1bWVudHMnLFxuXHRcdFx0XHQuLi50aGlzLmFyZ3MuZ2VuZXJhdGVIZWxwKClcblx0XHRcdH07XG5cblx0XHRcdC8vIHNldCB0aGUgb3B0aW9uc1xuXHRcdFx0cmVzdWx0cy5vcHRpb25zID0ge1xuXHRcdFx0XHRjb3VudDogc2NvcGVzLnJlZHVjZSgocCwgYykgPT4gcCArIGMuY291bnQsIDApLFxuXHRcdFx0XHRzY29wZXNcblx0XHRcdH07XG5cblx0XHRcdC8vIHNldCB0aGUgdXNhZ2UgbGluZVxuXHRcdFx0Y29uc3QgdXNhZ2UgPSBbXTtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KG9wdHMucGFyZW50Q29udGV4dE5hbWVzKSkge1xuXHRcdFx0XHR1c2FnZS5wdXNoLmFwcGx5KHVzYWdlLCBvcHRzLnBhcmVudENvbnRleHROYW1lcyk7XG5cdFx0XHR9XG5cdFx0XHR1c2FnZS5wdXNoLmFwcGx5KHVzYWdlLCByZXN1bHRzLmNvbnRleHRzLnNsaWNlKCkpO1xuXHRcdFx0cmVzdWx0cy5jb21tYW5kcy5jb3VudCAmJiB1c2FnZS5wdXNoKCc8Y29tbWFuZD4nKTtcblx0XHRcdHJlc3VsdHMub3B0aW9ucy5jb3VudCAmJiB1c2FnZS5wdXNoKCdbb3B0aW9uc10nKTtcblx0XHRcdHVzYWdlLnB1c2guYXBwbHkodXNhZ2UsIHJlc3VsdHMuYXJndW1lbnRzLmVudHJpZXMubWFwKGFyZyA9PiB7XG5cdFx0XHRcdGNvbnN0IG5hbWUgPSBgPCR7YXJnLm5hbWV9JHthcmcubXVsdGlwbGUgPyAnLi4uJyA6ICcnfT5gO1xuXHRcdFx0XHRyZXR1cm4gYXJnLnJlcXVpcmVkID8gbmFtZSA6IGBbJHtuYW1lfV1gO1xuXHRcdFx0fSkpO1xuXHRcdFx0cmVzdWx0cy51c2FnZSA9IHtcblx0XHRcdFx0dGl0bGU6ICdVc2FnZScsXG5cdFx0XHRcdHRleHQ6IHVzYWdlLmpvaW4oJyAnKVxuXHRcdFx0fTtcblxuXHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0fSkoe1xuXHRcdFx0Y29udGV4dHM6IFtdLFxuXHRcdFx0ZXJyb3I6IHVuZGVmaW5lZCxcblx0XHRcdHN1Z2dlc3Rpb25zOiBbXSxcblx0XHRcdHdhcm5pbmdzOiB1bmRlZmluZWRcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTY2FuIHBhcmVudCBjb250ZXh0cyB0byBmaW5kIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkgaW4gdGhlIHRvcC1tb3N0IGNvbnRleHQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUuXG5cdCAqIEBwYXJhbSB7Kn0gZGVmYXVsdFZhbHVlIC0gQSBkZWZhdWx0IHZhbHVlIGlmIG5vIHZhbHVlIGlzIGZvdW5kLlxuXHQgKiBAcmV0dXJucyB7Kn1cblx0ICogQGFjY2VzcyBwcml2YXRlXG5cdCAqL1xuXHRnZXQobmFtZSwgZGVmYXVsdFZhbHVlKSB7XG5cdFx0bGV0IHZhbHVlID0gdGhpc1tuYW1lXTtcblx0XHRmb3IgKGxldCBwID0gdGhpcy5wYXJlbnQ7IHA7IHAgPSBwLnBhcmVudCkge1xuXHRcdFx0dmFsdWUgPSBwLmdldChuYW1lLCB2YWx1ZSk7XG5cdFx0fVxuXHRcdHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiBkZWZhdWx0VmFsdWU7XG5cdH1cblxuXHQvKipcblx0ICogSW5pdGlhbGl6ZXMgdGhpcyBjb250ZXh0IHdpdGggcGFyYW1zLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdHxDb250ZXh0fSBwYXJhbXMgLSBWYXJpb3VzIHBhcmFtZXRlcnNcblx0ICogQGFjY2VzcyBwcml2YXRlXG5cdCAqL1xuXHRpbml0KHBhcmFtcykge1xuXHRcdGlmICghcGFyYW1zIHx8IHR5cGVvZiBwYXJhbXMgIT09ICdvYmplY3QnIHx8IChwYXJhbXMuY2xpa2l0IGluc3RhbmNlb2YgU2V0ICYmICFwYXJhbXMuY2xpa2l0LmhhcygnQ29udGV4dCcpKSkge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBwYXJhbWV0ZXJzIHRvIGJlIGFuIG9iamVjdCBvciBDb250ZXh0JywgeyBuYW1lOiAncGFyYW1zJywgc2NvcGU6ICdDb250ZXh0LmluaXQnLCB2YWx1ZTogcGFyYW1zIH0pO1xuXHRcdH1cblxuXHRcdGlmIChwYXJhbXMuY2xpa2l0IGluc3RhbmNlb2YgU2V0ICYmICFwYXJhbXMuY2xpa2l0LmhhcygnQ29udGV4dCcpKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIHBhcmFtZXRlcnMgdG8gYmUgYW4gb2JqZWN0IG9yIENvbnRleHQnLCB7IG5hbWU6ICdwYXJhbXMnLCBzY29wZTogJ0NvbnRleHQuaW5pdCcsIHZhbHVlOiBwYXJhbXMgfSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5hcmdzICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgQXJndW1lbnRMaXN0KCk7XG5cdFx0dGhpcy5hdXRvSGlkZUJhbm5lciAgICAgICAgICAgICAgICAgPSBwYXJhbXMuYXV0b0hpZGVCYW5uZXI7XG5cdFx0dGhpcy5iYW5uZXIgICAgICAgICAgICAgICAgICAgICAgICAgPSBwYXJhbXMuYmFubmVyO1xuXHRcdHRoaXMuY29tbWFuZHMgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IENvbW1hbmRNYXAoKTtcblx0XHR0aGlzLmRlZmF1bHRDb21tYW5kICAgICAgICAgICAgICAgICA9IHBhcmFtcy5kZWZhdWx0Q29tbWFuZDtcblx0XHR0aGlzLmRlc2MgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBhcmFtcy5kZXNjO1xuXHRcdHRoaXMuZXJyb3JJZlVua25vd25Db21tYW5kICAgICAgICAgID0gcGFyYW1zLmVycm9ySWZVbmtub3duQ29tbWFuZDtcblx0XHR0aGlzLmV4dGVuc2lvbnMgICAgICAgICAgICAgICAgICAgICA9IG5ldyBFeHRlbnNpb25NYXAoKTtcblx0XHR0aGlzLmhlbHBFeGl0Q29kZSAgICAgICAgICAgICAgICAgICA9IHBhcmFtcy5oZWxwRXhpdENvZGU7XG5cdFx0dGhpcy5oZWxwVGVtcGxhdGVGaWxlICAgICAgICAgICAgICAgPSBwYXJhbXMuaGVscFRlbXBsYXRlRmlsZTtcblx0XHR0aGlzLmhpZGVOb0Jhbm5lck9wdGlvbiAgICAgICAgICAgICA9IHBhcmFtcy5oaWRlTm9CYW5uZXJPcHRpb247XG5cdFx0dGhpcy5oaWRlTm9Db2xvck9wdGlvbiAgICAgICAgICAgICAgPSBwYXJhbXMuaGlkZU5vQ29sb3JPcHRpb247XG5cdFx0dGhpcy5sb29rdXAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgTG9va3VwKCk7XG5cdFx0dGhpcy5uYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwYXJhbXMubmFtZTtcblx0XHR0aGlzLm5vZGVWZXJzaW9uICAgICAgICAgICAgICAgICAgICA9IHBhcmFtcy5ub2RlVmVyc2lvbjtcblx0XHR0aGlzLm9wdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBPcHRpb25NYXAoKTtcblx0XHR0aGlzLnBhcmVudCAgICAgICAgICAgICAgICAgICAgICAgICA9IHBhcmFtcy5wYXJlbnQ7XG5cdFx0dGhpcy5yZXYgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwO1xuXHRcdHRoaXMuc2hvd0Jhbm5lckZvckV4dGVybmFsQ0xJcyAgICAgID0gcGFyYW1zLnNob3dCYW5uZXJGb3JFeHRlcm5hbENMSXM7XG5cdFx0dGhpcy5zaG93SGVscE9uRXJyb3IgICAgICAgICAgICAgICAgPSBwYXJhbXMuc2hvd0hlbHBPbkVycm9yO1xuXHRcdHRoaXMudGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgID0gcGFyYW1zLnRpdGxlIHx8IHBhcmFtcy5uYW1lO1xuXHRcdHRoaXMudHJlYXRVbmtub3duT3B0aW9uc0FzQXJndW1lbnRzID0gISFwYXJhbXMudHJlYXRVbmtub3duT3B0aW9uc0FzQXJndW1lbnRzO1xuXHRcdHRoaXMudmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgID0gcGFyYW1zLnZlcnNpb247XG5cblx0XHRwYXJhbXMuYXJncyAgICAgICAmJiB0aGlzLmFyZ3VtZW50KHBhcmFtcy5hcmdzKTtcblx0XHRwYXJhbXMuY29tbWFuZHMgICAmJiB0aGlzLmNvbW1hbmQocGFyYW1zLmNvbW1hbmRzKTtcblx0XHRwYXJhbXMuZXh0ZW5zaW9ucyAmJiB0aGlzLmV4dGVuc2lvbihwYXJhbXMuZXh0ZW5zaW9ucyk7XG5cdFx0cGFyYW1zLm9wdGlvbnMgICAgJiYgdGhpcy5vcHRpb24ocGFyYW1zLm9wdGlvbnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYW4gb3B0aW9uIHRvIHRoaXMgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fE9wdGlvbnxPcHRpb25NYXB8QXJyYXk8T2JqZWN0fE9wdGlvbnxTdHJpbmc+fSBmb3JtYXQgLSBBbiBvcHRpb25cblx0ICogZm9ybWF0LCBhbiBvYmplY3Qgb2YgZm9ybWF0IHRvIG9wdGlvbiBkZXNjcmlwdGlvbnMsIGBPcHRpb25gIGNvbnN0cnVjdG9yIHBhcmFtcyBvciBgT3B0aW9uYFxuXHQgKiBpbnN0YW5jZXMsIGFuIGBPcHRpb25gIGluc3RhbmNlLCBhbiBgT3B0aW9uTWFwYCBpbnN0YW5jZSwgb3IgYW4gYXJyYXkgb2YgYE9wdGlvbmBcblx0ICogY29uc3RydWN0b3IgcGFyYW1zIGFuZCBgT3B0aW9uYCBpbnN0YW5jZXMgZ3JvdXBlZCBieSBgU3RyaW5nYCBsYWJlbHMuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fE9wdGlvbnxTdHJpbmd9IFtwYXJhbXNdIC0gV2hlbiBgZm9ybWF0YCBpcyBhIGZvcm1hdCBzdHJpbmcsIHRoZW4gdGhpc1xuXHQgKiBhcmd1bWVudCBpcyBlaXRoZXIgYE9wdGlvbmAgY29uc3RydWN0b3IgcGFyYW1ldGVycywgYW4gYE9wdGlvbmAgaW5zdGFuY2UsIG9yIGFuIG9wdGlvblxuXHQgKiBkZXNjcmlwdGlvbi5cblx0ICogQHJldHVybnMge0NvbnRleHR9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqXG5cdCAqIEBleGFtcGxlXG5cdCAqICAgY3R4Lm9wdGlvbignLS1mb28nKTsgLy8gZm9ybWF0IGZsYWdcblx0ICogICBjdHgub3B0aW9uKCctLWZvbycsICdlbmFibGVzIGZvbyBtb2RlJyk7IC8vIGZvcm1hdCB3aXRoIGRlc2NyaXB0aW9uXG5cdCAqICAgY3R4Lm9wdGlvbignLS1mb28nLCB7IGRlc2M6ICdlbmFibGVzIGZvbyBtb2RlJyB9KTsgLy8gZm9ybWF0IHdpdGggT3B0aW9uIGN0b3IgcGFyYW1zXG5cdCAqICAgY3R4Lm9wdGlvbih7ICctLWZvbyc6IG51bGwgfSk7IC8vIG9iamVjdCB3aXRoIGZvcm1hdCBmbGFnXG5cdCAqICAgY3R4Lm9wdGlvbih7ICctLWZvbyc6IHsgZGVzYzogJ2VuYWJsZXMgZm9vIG1vZGUnIH0gfSk7IC8vIG9iamVjdCB3aXRoIE9wdGlvbiBjdG9yIHBhcmFtc1xuXHQgKiAgIGN0eC5vcHRpb24oeyAnLS1mb28nOiBuZXcgT3B0aW9uKCkgfSk7IC8vIG9iamVjdCBvZiBgT3B0aW9uYCBpbnN0YW5jZVxuXHQgKiAgIGN0eC5vcHRpb24obmV3IE9wdGlvbignLS1mb28nKSk7IC8vIGBPcHRpb25gIGluc3RhbmNlXG5cdCAqICAgY3R4Lm9wdGlvbihuZXcgT3B0aW9uTWFwKCkpOyAvLyBgT3B0aW9uTWFwYCBmcm9tIGFub3RoZXIgaW5zdGFuY2Vcblx0ICogICBjdHgub3B0aW9uKFsgJ1NvbWUgR3JvdXAnLCBuZXcgT3B0aW9uKCctLWZvbycpLCAnQW5vdGhlciBHcm91cCcsIHsgJy0tYmFyJzogbnVsbCB9IF0pOyAvLyBhbiBhcnJheSBvZiBncm91cGVkIG9wdGlvbnNcblx0ICovXG5cdG9wdGlvbihmb3JtYXQsIHBhcmFtcykge1xuXHRcdGNvbnN0IG9wdHMgPSB0aGlzLm9wdGlvbnMuYWRkKGZvcm1hdCwgcGFyYW1zKTtcblxuXHRcdGZvciAoY29uc3Qgb3B0IG9mIG9wdHMpIHtcblx0XHRcdG9wdC5wYXJlbnQgPSB0aGlzO1xuXG5cdFx0XHRpZiAob3B0LmxvbmcpIHtcblx0XHRcdFx0dGhpcy5sb29rdXAubG9uZ1tvcHQubG9uZ10gPSBvcHQ7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChvcHQuc2hvcnQpIHtcblx0XHRcdFx0dGhpcy5sb29rdXAuc2hvcnRbb3B0LnNob3J0XSA9IG9wdDtcblx0XHRcdH1cblxuXHRcdFx0Zm9yIChjb25zdCBbIGFsaWFzLCB2aXNpYmxlIF0gb2YgT2JqZWN0LmVudHJpZXMob3B0LmFsaWFzZXMubG9uZykpIHtcblx0XHRcdFx0aWYgKHZpc2libGUpIHtcblx0XHRcdFx0XHR0aGlzLmxvb2t1cC5sb25nW2FsaWFzXSA9IG9wdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGNvbnN0IFsgYWxpYXMsIHZpc2libGUgXSBvZiBPYmplY3QuZW50cmllcyhvcHQuYWxpYXNlcy5zaG9ydCkpIHtcblx0XHRcdFx0aWYgKHZpc2libGUpIHtcblx0XHRcdFx0XHR0aGlzLmxvb2t1cC5zaG9ydFthbGlhc10gPSBvcHQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLnJldisrO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2NhbiBwYXJlbnQgY29udGV4dHMgdG8gZmluZCB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IGluIHRoZSBib3R0b20tbW9zdCBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lLlxuXHQgKiBAcGFyYW0geyp9IGRlZmF1bHRWYWx1ZSAtIEEgZGVmYXVsdCB2YWx1ZSBpZiBubyB2YWx1ZSBpcyBmb3VuZC5cblx0ICogQHJldHVybnMgeyp9XG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0cHJvcChuYW1lLCBkZWZhdWx0VmFsdWUpIHtcblx0XHRsZXQgdmFsdWUgPSB0aGlzW25hbWVdO1xuXHRcdGZvciAobGV0IHAgPSB0aGlzLnBhcmVudDsgdmFsdWUgPT09IHVuZGVmaW5lZCAmJiBwOyBwID0gcC5wYXJlbnQpIHtcblx0XHRcdHZhbHVlID0gcC5wcm9wKG5hbWUsIHZhbHVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IGRlZmF1bHRWYWx1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgYSBjb21tYW5kIG9yIGV4dGVuc2lvbiB0byBhZGQgdG8gdGhlIGxvb2t1cC5cblx0ICpcblx0ICogQHBhcmFtIHtDb21tYW5kfEV4dGVuc2lvbn0gaXQgLSBUaGUgY29tbWFuZCBvciBleHRlbnNpb24gaW5zdGFuY2UuXG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0cmVnaXN0ZXIoaXQpIHtcblx0XHRjb25zdCBkZXN0ID0gaXQuY2xpa2l0LmhhcygnRXh0ZW5zaW9uJykgPyAnZXh0ZW5zaW9ucycgOiAnY29tbWFuZHMnO1xuXHRcdGl0LnBhcmVudCA9IHRoaXM7XG5cdFx0dGhpcy5sb29rdXBbZGVzdF1baXQubmFtZV0gPSBpdDtcblxuXHRcdGlmIChpdC5hbGlhc2VzKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGFsaWFzIG9mIE9iamVjdC5rZXlzKGl0LmFsaWFzZXMpKSB7XG5cdFx0XHRcdGlmICghdGhpc1tkZXN0XS5oYXMoYWxpYXMpKSB7XG5cdFx0XHRcdFx0dGhpcy5sb29rdXBbZGVzdF1bYWxpYXNdID0gaXQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiJdLCJmaWxlIjoicGFyc2VyL2NvbnRleHQuanMifQ== | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9jb250ZXh0LmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsIm5vdGUiLCJkZWJ1ZyIsInN0eWxlcyIsIkNvbnRleHQiLCJIb29rRW1pdHRlciIsImNvbnN0cnVjdG9yIiwicGFyYW1zIiwiaW5pdCIsImFyZ3VtZW50IiwiYXJnIiwiYXJncyIsImFkZCIsInJldiIsImNvbW1hbmQiLCJjbWQiLCJjbWRzIiwiY29tbWFuZHMiLCJuYW1lIiwicmVnaXN0ZXIiLCJleHRlbnNpb24iLCJleHQiLCJleHRzIiwiZXh0ZW5zaW9ucyIsImdlbmVyYXRlSGVscCIsIm9wdHMiLCJob29rIiwicmVzdWx0cyIsInNjb3BlcyIsImN0eCIsInB1c2giLCJ0aXRsZSIsIm9wdGlvbnMiLCJjb250ZXh0cyIsInVuc2hpZnQiLCJwYXJlbnQiLCJsb25ncyIsIlNldCIsInNob3J0cyIsImoiLCJsZW5ndGgiLCJPYmplY3QiLCJ2YWx1ZXMiLCJncm91cHMiLCJpIiwibG9uZyIsInNob3J0IiwibnVrZSIsImhhcyIsImNvdW50Iiwic3BsaWNlIiwiZGVzYyIsIlN0cmluZyIsInRyaW0iLCJyZXBsYWNlIiwiYyIsInRvTG9jYWxlVXBwZXJDYXNlIiwiZW50cmllcyIsImRlZmF1bHRDb21tYW5kIiwiZGVmYXVsdCIsImFyZ3VtZW50cyIsInJlZHVjZSIsInAiLCJ1c2FnZSIsIkFycmF5IiwiaXNBcnJheSIsInBhcmVudENvbnRleHROYW1lcyIsImFwcGx5Iiwic2xpY2UiLCJtYXAiLCJtdWx0aXBsZSIsInJlcXVpcmVkIiwidGV4dCIsImpvaW4iLCJlcnJvciIsInVuZGVmaW5lZCIsInN1Z2dlc3Rpb25zIiwid2FybmluZ3MiLCJnZXQiLCJkZWZhdWx0VmFsdWUiLCJ2YWx1ZSIsImNsaWtpdCIsIkUiLCJJTlZBTElEX0FSR1VNRU5UIiwic2NvcGUiLCJBcmd1bWVudExpc3QiLCJhdXRvSGlkZUJhbm5lciIsImJhbm5lciIsIkNvbW1hbmRNYXAiLCJlcnJvcklmVW5rbm93bkNvbW1hbmQiLCJFeHRlbnNpb25NYXAiLCJoZWxwRXhpdENvZGUiLCJoZWxwVGVtcGxhdGVGaWxlIiwiaGlkZU5vQmFubmVyT3B0aW9uIiwiaGlkZU5vQ29sb3JPcHRpb24iLCJsb29rdXAiLCJMb29rdXAiLCJub2RlVmVyc2lvbiIsIk9wdGlvbk1hcCIsInNob3dCYW5uZXJGb3JFeHRlcm5hbENMSXMiLCJzaG93SGVscE9uRXJyb3IiLCJ0cmVhdFVua25vd25PcHRpb25zQXNBcmd1bWVudHMiLCJ2ZXJzaW9uIiwib3B0aW9uIiwiZm9ybWF0Iiwib3B0IiwiYWxpYXMiLCJ2aXNpYmxlIiwiYWxpYXNlcyIsInByb3AiLCJpdCIsImRlc3QiLCJrZXlzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7QUFFQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBVSxvQkFBTSxpQkFBTixDQUFoQjtBQUNBLE1BQU07QUFBRUMsRUFBQUEsU0FBRjtBQUFhQyxFQUFBQTtBQUFiLElBQXNCQyxlQUFNQyxNQUFsQztBQUVBOzs7Ozs7O0FBTWUsTUFBTUMsT0FBTixTQUFzQkMsb0JBQXRCLENBQWtDO0FBQ2hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1DQUMsRUFBQUEsV0FBVyxDQUFDQyxNQUFNLEdBQUcsRUFBVixFQUFjO0FBQ3hCO0FBQ0Esa0NBQW1CLElBQW5CLEVBQXlCLFNBQXpCO0FBQ0EsU0FBS0MsSUFBTCxDQUFVRCxNQUFWO0FBQ0E7QUFFRDs7Ozs7Ozs7Ozs7O0FBVUFFLEVBQUFBLFFBQVEsQ0FBQ0MsR0FBRCxFQUFNO0FBQ2IsU0FBS0MsSUFBTCxDQUFVQyxHQUFWLENBQWNGLEdBQWQ7QUFDQSxTQUFLRyxHQUFMO0FBQ0EsV0FBTyxJQUFQO0FBQ0E7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O0FBYUFDLEVBQUFBLE9BQU8sQ0FBQ0MsR0FBRCxFQUFNUixNQUFOLEVBQWM7QUFDcEIsVUFBTVMs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Q0FBQzNFLE1BQUgsR0FBWSxJQUFaO0FBQ0EsU0FBSzRELE1BQUwsQ0FBWWdCLElBQVosRUFBa0JELEVBQUUsQ0FBQzVGLElBQXJCLElBQTZCNEYsRUFBN0I7O0FBRUEsUUFBSUEsRUFBRSxDQUFDRixPQUFQLEVBQWdCO0FBQ2YsV0FBSyxNQUFNRixLQUFYLElBQW9CakUsTUFBTSxDQUFDdUUsSUFBUCxDQUFZRixFQUFFLENBQUNGLE9BQWYsQ0FBcEIsRUFBNkM7QUFDNUMsWUFBSSxDQUFDLEtBQUtHLElBQUwsRUFBVy9ELEdBQVgsQ0FBZTBELEtBQWYsQ0FBTCxFQUE0QjtBQUMzQixlQUFLWCxNQUFMLENBQVlnQixJQUFaLEVBQWtCTCxLQUFsQixJQUEyQkksRUFBM0I7QUFDQTtBQUNEO0FBQ0Q7QUFDRDs7QUEzWCtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFyZ3VtZW50TGlzdCBmcm9tICcuL2FyZ3VtZW50LWxpc3QnO1xuaW1wb3J0IENvbW1hbmRNYXAgZnJvbSAnLi9jb21tYW5kLW1hcCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnLi4vbGliL2RlYnVnJztcbmltcG9ydCBFIGZyb20gJy4uL2xpYi9lcnJvcnMnO1xuaW1wb3J0IEV4dGVuc2lvbk1hcCBmcm9tICcuL2V4dGVuc2lvbi1tYXAnO1xuaW1wb3J0IEhvb2tFbWl0dGVyIGZyb20gJ2hvb2stZW1pdHRlcic7XG5pbXBvcnQgTG9va3VwIGZyb20gJy4vbG9va3VwJztcbmltcG9ydCBPcHRpb25NYXAgZnJvbSAnLi9vcHRpb24tbWFwJztcblxuaW1wb3J0IHsgZGVjbGFyZUNMSUtpdENsYXNzIH0gZnJvbSAnLi4vbGliL3V0aWwnO1xuXG5jb25zdCB7IGxvZyB9ID0gZGVidWcoJ2NsaS1raXQ6Y29udGV4dCcpO1xuY29uc3QgeyBoaWdobGlnaHQsIG5vdGUgfSA9IGRlYnVnLnN0eWxlcztcblxuLyoqXG4gKiBEZWZpbmVzIGEgY29udGV4dCB0aGF0IGNvbnRhaW5zIGNvbW1hbmRzLCBvcHRpb25zLCBhbmQgYXJncy4gU2VydmVzIGFzIHRoZVxuICogYmFzZSBjbGFzcyBmb3IgYENMSWAgYW5kIGBDb250ZXh0YCBvYmplY3RzLlxuICpcbiAqIEBleHRlbmRzIHtIb29rRW1pdHRlcn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29udGV4dCBleHRlbmRzIEhvb2tFbWl0dGVyIHtcblx0LyoqXG5cdCAqIENvbnN0cnVjdHMgYSBjb250ZXh0IGluc3RhbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdHxDb250ZXh0fSBbcGFyYW1zXSAtIFZhcmlvdXMgcGFyYW1ldGVycy5cblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEFyZ3VtZW50fEFyZ3VtZW50TGlzdHxBcnJheTxPYmplY3R8U3RyaW5nfEFyZ3VtZW50Pn0gW3BhcmFtcy5hcmdzXSAtXG5cdCAqIEFuIG9iamVjdCBvZiBhcmd1bWVudCBuYW1lcyB0byBhcmd1bWVudCBkZXNjcmlwdG9ycywgYW4gYXJndW1lbnQgbmFtZSwgYW4gYEFyZ3VtZW50YFxuXHQgKiBpbnN0YW5jZSwgYW4gYEFyZ3VtZW50TGlzdGAgaW5zdGFuY2UsIG9yIGFycmF5IG9mIG9iamVjdCBkZXNjcmlwdG9ycywgYXJndW1lbnQgbmFtZXMsIGFuZFxuXHQgKiBgQXJndW1lbnRgIGluc3RhbmNlcy5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbcGFyYW1zLmNhbWVsQ2FzZT10cnVlXSAtIENhbWVsIGNhc2Ugb3B0aW9uIG5hbWVzLlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8Q29tbWFuZHxDb21tYW5kTWFwfEFycmF5LjxPYmplY3R8U3RyaW5nfENvbW1hbmQ+fSBbcGFyYW1zLmNvbW1hbmRzXSAtXG5cdCAqIEFuIG9iamVjdCB1c2VkIGZvciBgQ29tbWFuZGAgY29uc3RydWN0b3IgcGFyYW1zLCBhIHBhdGggdG8gYSBkaXJlY3Rvcnkgb3IgYSBgLmpzYCBmaWxlLCBhXG5cdCAqIGBDb21tYW5kYCBpbnN0YW5jZSwgb3IgYW4gYXJyYXkgb2YgdGhvc2UgdHlwZXMuIE1heSBhbHNvIGJlIGEgYENvbW1hbmRNYXBgIGluc3RhbmNlLiBJZlxuXHQgKiBgY21kYCBpcyBhIGBTdHJpbmdgIGFuZCBgcGFyYW1zYCBpcyBwcmVzZW50LCB0aGVuIGl0IHdpbGwgdHJlYXQgYGNtZGAgYXMgdGhlIGNvbW1hbmQgbmFtZSxcblx0ICogbm90IGEgZmlsZSBwYXRoLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy5kZXNjXSAtIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgQ0xJIG9yIGNvbW1hbmQgZGlzcGxheWVkIGluIHRoZSBoZWxwXG5cdCAqIG91dHB1dC4gSWYgY29udGV4dCBpcyBhIGNvbW1hbmQgd2l0aCBhIGhlbHAgaGVhZGVyIGRlZmluZWQsIHRoaXMgZGVzY3JpcHRpb24gaXMgbm90XG5cdCAqIGRpc3BsYXllZC5cblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEV4dGVuc2lvbnxFeHRlbnNpb25NYXB8QXJyYXkuPFN0cmluZ3xFeHRlbnNpb24+fSBbcGFyYW1zLmV4dGVuc2lvbnNdIC1cblx0ICogQW4gb2JqZWN0IG9mIGV4dGVuc2lvbiBuYW1lcyB0byBleHRlbnNpb24gcGF0aHMgb3IgaW5zdGFuY2VzLCBhbiBleHRlbnNpb24gcGF0aCwgYW5cblx0ICogYEV4dGVuc2lvbmAgaW5zdGFuY2UsIG9yIGFuIGFycmF5IG9mIHRob3NlIHR5cGVzLiBBbiBleHRlbnNpb24gcGF0aCBtYXkgYmUgYSBkaXJlY3Rvcnlcblx0ICogY29udGFpbmluZyBhIE5vZGUuanMgbW9kdWxlLCBhIHBhdGggdG8gYSBgLmpzYCBmaWxlLCBvciB0aGUgbmFtZSBvZiBhIGV4ZWN1dGFibGUuIE1heSBhbHNvXG5cdCAqIGJlIGFuIGBFeHRlbnNpb25NYXBgIGluc3RhbmNlLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy5uYW1lXSAtIFRoZSBuYW1lIG9mIHRoZSBjb250ZXh0IHN1Y2ggYXMgdGhlIHByb2dyYW0gb3IgdGhlIGNvbW1hbmRcblx0ICogbmFtZS5cblx0ICogQHBhcmFtIHtPYmplY3R8T3B0aW9ufE9wdGlvbk1hcHxBcnJheTxPYmplY3R8T3B0aW9ufFN0cmluZz59IFtwYXJhbXMub3B0aW9uc10gLSBBbiBvYmplY3Qgb2Zcblx0ICogZm9ybWF0IHRvIGBPcHRpb25gIGNvbnN0cnVjdG9yIHBhcmFtcywgYW4gYE9wdGlvbmAgaW5zdGFuY2UsIG9yIGFuIGFycmF5IG9mIGBPcHRpb25gXG5cdCAqIGNvbnN0cnVjdG9yIHBhcmFtcyBhbmQgYE9wdGlvbmAgaW5zdGFuY2VzIGdyb3VwZWQgYnkgYFN0cmluZ2AgbGFiZWxzLlxuXHQgKiBAcGFyYW0ge0NvbnRleHR9IFtwYXJhbXMucGFyZW50XSAtIFRoZSBwYXJlbnQgY29udGV4dC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtwYXJhbXMudGl0bGVdIC0gVGhlIGNvbnRleHQgdGl0bGUuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW3BhcmFtcy50cmVhdFVua25vd25PcHRpb25zQXNBcmd1bWVudHM9ZmFsc2VdIC0gV2hlbiBgdHJ1ZWAsIGFueSBhcmd1bWVudCBpc1xuXHQgKiBlbmNvdW50ZXJlZCBkdXJpbmcgcGFyc2luZyB0aGF0IHJlc2VtYmxlcyBhIG9wdGlvbiB0aGF0IGRvZXMgbm90IGV4aXN0LCBpdCB3aWxsIGFkZCBpdFxuXHQgKiB1bnRvdWNoZWQgdG8gYF9gIGFzIGFuIGFyZ3VtZW50IGFzIHdlbGwgYXMgdG8gYGFyZ3ZgIGFzIGEgYm9vbGVhbiBmbGFnLiBXaGVuIGBmYWxzZWAsIGl0IHdpbGxcblx0ICogb25seSBhZGQgdGhlIGFyZ3VtZW50IHRvIGBhcmd2YCBhcyBhIGJvb2xlYW4gZmxhZy5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbnN0cnVjdG9yKHBhcmFtcyA9IHt9KSB7XG5cdFx0c3VwZXIoKTtcblx0XHRkZWNsYXJlQ0xJS2l0Q2xhc3ModGhpcywgJ0NvbnRleHQnKTtcblx0XHR0aGlzLmluaXQocGFyYW1zKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGFuIGFyZ3VtZW50IHRvIHRoaXMgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEFyZ3VtZW50fEFyZ3VtZW50TGlzdHxBcnJheTxPYmplY3R8U3RyaW5nfEFyZ3VtZW50Pn0gYXJnIC0gQW4gb2JqZWN0XG5cdCAqIG9mIGFyZ3VtZW50IG5hbWVzIHRvIGFyZ3VtZW50IGRlc2NyaXB0b3JzLCBhbiBhcmd1bWVudCBuYW1lLCBhbiBgQXJndW1lbnRgIGluc3RhbmNlLCBhblxuXHQgKiBgQXJndW1lbnRMaXN0YCBpbnN0YW5jZSwgb3IgYXJyYXkgb2Ygb2JqZWN0IGRlc2NyaXB0b3JzLCBhcmd1bWVudCBuYW1lcywgYW5kIGBBcmd1bWVudGBcblx0ICogaW5zdGFuY2VzLlxuXHQgKiBAcmV0dXJucyB7Q29udGV4dH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFyZ3VtZW50KGFyZykge1xuXHRcdHRoaXMuYXJncy5hZGQoYXJnKTtcblx0XHR0aGlzLnJldisrO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBjb21tYW5kIHRvIHRoaXMgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfENvbW1hbmR8Q29tbWFuZE1hcHxBcnJheS48T2JqZWN0fFN0cmluZ3xDb21tYW5kPn0gY21kIC0gQW4gb2JqZWN0XG5cdCAqIHVzZWQgZm9yIGBDb21tYW5kYCBjb25zdHJ1Y3RvciBwYXJhbXMsIGEgcGF0aCB0byBhIGRpcmVjdG9yeSBvciBhIGAuanNgIGZpbGUsIGEgYENvbW1hbmRgXG5cdCAqIGluc3RhbmNlLCBvciBhbiBhcnJheSBvZiB0aG9zZSB0eXBlcy4gTWF5IGFsc28gYmUgYSBgQ29tbWFuZE1hcGAgaW5zdGFuY2UuIElmIGBjbWRgIGlzIGFcblx0ICogYFN0cmluZ2AgYW5kIGBwYXJhbXNgIGlzIHByZXNlbnQsIHRoZW4gaXQgd2lsbCB0cmVhdCBgY21kYCBhcyB0aGUgY29tbWFuZCBuYW1lLCBub3QgYSBmaWxlXG5cdCAqIHBhdGguXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zXSAtIFdoZW4gYGNtZGAgaXMgdGhlIGNvbW1hbmQgbmFtZSwgdGhlbiB0aGlzIGlzIHRoZSBvcHRpb25zIHRvIHBhc3Ncblx0ICogaW50byB0aGUgYENvbW1hbmRgIGNvbnN0cnVjdG9yLlxuXHQgKiBAcmV0dXJucyB7Q29udGV4dH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbW1hbmQoY21kLCBwYXJhbXMpIHtcblx0XHRjb25zdCBjbWRzID0gdGhpcy5jb21tYW5kcy5hZGQoY21kLCBwYXJhbXMpO1xuXHRcdGZvciAoY29uc3QgY21kIG9mIGNtZHMpIHtcblx0XHRcdGxvZyhgQWRkaW5nIGNvbW1hbmQ6ICR7aGlnaGxpZ2h0KGNtZC5uYW1lKX0gJHtub3RlKGAoJHt0aGlzLm5hbWV9KWApfWApO1xuXHRcdFx0dGhpcy5yZWdpc3RlcihjbWQpO1xuXHRcdH1cblx0XHR0aGlzLnJldisrO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVycyBhbiBleHRlcm5hbCBwYWNrYWdlIGFzIGEgY29tbWFuZCBjb250ZXh0IHRoYXQgaW52b2tlcyB0aGUgcGFja2FnZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEV4dGVuc2lvbnxFeHRlbnNpb25NYXB8QXJyYXkuPFN0cmluZ3xFeHRlbnNpb24+fSBleHQgLSBBbiBvYmplY3Qgb2Zcblx0ICogZXh0ZW5zaW9uIG5hbWVzIHRvIGV4dGVuc2lvbiBwYXRocyBvciBpbnN0YW5jZXMsIGFuIGV4dGVuc2lvbiBwYXRoLCBhbiBgRXh0ZW5zaW9uYCBpbnN0YW5jZSxcblx0ICogb3IgYW4gYXJyYXkgb2YgdGhvc2UgdHlwZXMuIEFuIGV4dGVuc2lvbiBwYXRoIG1heSBiZSBhIGRpcmVjdG9yeSBjb250YWluaW5nIGEgTm9kZS5qc1xuXHQgKiBtb2R1bGUsIGEgcGF0aCB0byBhIGAuanNgIGZpbGUsIG9yIHRoZSBuYW1lIG9mIGEgZXhlY3V0YWJsZS4gTWF5IGFsc28gYmUgYW4gYEV4dGVuc2lvbk1hcGBcblx0ICogaW5zdGFuY2UuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbbmFtZV0gLSBUaGUgZXh0ZW5zaW9uIG5hbWUgdXNlZCBmb3IgdGhlIGNvbnRleHQgbmFtZS4gSWYgbm90IHNldCwgaXQgd2lsbFxuXHQgKiBhdHRlbXB0IHRvIGZpbmQgYSBgcGFja2FnZS5qc29uYCB3aXRoIGEgYGNsaS1raXQubmFtZWAgdmFsdWUuXG5cdCAqIEByZXR1cm5zIHtDb250ZXh0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0ZXh0ZW5zaW9uKGV4dCwgbmFtZSkge1xuXHRcdGNvbnN0IGV4dHMgPSB0aGlzLmV4dGVuc2lvbnMuYWRkKGV4dCwgbmFtZSk7XG5cdFx0Zm9yIChjb25zdCBleHQgb2YgZXh0cykge1xuXHRcdFx0bG9nKGBBZGRpbmcgZXh0ZW5zaW9uOiAke2hpZ2hsaWdodChleHQubmFtZSl9ICR7bm90ZShgKCR7dGhpcy5uYW1lfSlgKX1gKTtcblx0XHRcdHRoaXMucmVnaXN0ZXIoZXh0KTtcblx0XHR9XG5cdFx0dGhpcy5yZXYrKztcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW5kZXJzIHRoZSBoZWxwIHNjcmVlbiBmb3IgdGhpcyBjb250ZXh0IGluY2x1ZGluZyB0aGUgcGFyZW50IGNvbnRleHRzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gVmFyaW91cyBwYXJhbWV0ZXJzLlxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZTxPYmplY3Q+fVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGdlbmVyYXRlSGVscChvcHRzID0ge30pIHtcblx0XHRyZXR1cm4gdGhpcy5ob29rKCdnZW5lcmF0ZUhlbHAnLCByZXN1bHRzID0+IHtcblx0XHRcdGNvbnN0IHNjb3BlcyA9IFtdO1xuXHRcdFx0bGV0IGN0eCA9IHRoaXM7XG5cblx0XHRcdHdoaWxlIChjdHgpIHtcblx0XHRcdFx0c2NvcGVzLnB1c2goe1xuXHRcdFx0XHRcdHRpdGxlOiBgJHtjdHgudGl0bGV9IG9wdGlvbnNgLFxuXHRcdFx0XHRcdG5hbWU6IGN0eC5uYW1lLFxuXHRcdFx0XHRcdC4uLmN0eC5vcHRpb25zLmdlbmVyYXRlSGVscCgpXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXN1bHRzLmNvbnRleHRzLnVuc2hpZnQoY3R4Lm5hbWUpO1xuXHRcdFx0XHRjdHggPSBjdHgucGFyZW50O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyByZW1vdmUgZHVwbGljYXRlIG9wdGlvbnNcblx0XHRcdGNvbnN0IGxvbmdzID0gbmV3IFNldCgpO1xuXHRcdFx0Y29uc3Qgc2hvcnRzID0gbmV3IFNldCgpO1xuXHRcdFx0bGV0IGogPSBzY29wZXMubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKGotLSkge1xuXHRcdFx0XHRmb3IgKGNvbnN0IG9wdGlvbnMgb2YgT2JqZWN0LnZhbHVlcyhzY29wZXNbal0uZ3JvdXBzKSkge1xuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0Y29uc3QgeyBsb25nLCBzaG9ydCB9ID0gb3B0aW9uc1tpXTtcblx0XHRcdFx0XHRcdGxldCBudWtlID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRpZiAobG9uZyAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0XHRpZiAobG9uZ3MuaGFzKGxvbmcpKSB7XG5cdFx0XHRcdFx0XHRcdFx0bnVrZSA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0bG9uZ3MuYWRkKGxvbmcpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoc2hvcnQgIT09IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0aWYgKHNob3J0cy5oYXMoc2hvcnQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0bnVrZSA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0c2hvcnRzLmFkZChzaG9ydCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChudWtlKSB7XG5cdFx0XHRcdFx0XHRcdHNjb3Blc1tqXS5jb3VudC0tO1xuXHRcdFx0XHRcdFx0XHRvcHRpb25zLnNwbGljZShpLS0sIDEpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBzZXQgdGhlIGRlc2NyaXB0aW9uXG5cdFx0XHRyZXN1bHRzLmRlc2MgPSB0aGlzLmRlc2MgPyBTdHJpbmcodGhpcy5kZXNjKS50cmltKCkucmVwbGFjZSgvXlxcdy8sIGMgPT4gYy50b0xvY2FsZVVwcGVyQ2FzZSgpKSA6IG51bGw7XG5cblx0XHRcdC8vIHNldCB0aGUgY29tbWFuZHNcblx0XHRcdHJlc3VsdHMuY29tbWFuZHMgPSB7XG5cdFx0XHRcdHRpdGxlOiB0aGlzLnBhcmVudCA/IGAke3RoaXMudGl0bGV9IGNvbW1hbmRzYCA6ICdDb21tYW5kcycsXG5cdFx0XHRcdC4uLnRoaXMuY29tbWFuZHMuZ2VuZXJhdGVIZWxwKClcblx0XHRcdH07XG5cblx0XHRcdGNvbnN0IGV4dCA9IHRoaXMuZXh0ZW5zaW9ucy5nZW5lcmF0ZUhlbHAoKTtcblx0XHRcdHJlc3VsdHMuY29tbWFuZHMuY291bnQgKz0gZXh0LmNvdW50O1xuXHRcdFx0cmVzdWx0cy5jb21tYW5kcy5lbnRyaWVzLnB1c2goLi4uZXh0LmVudHJpZXMpO1xuXG5cdFx0XHQvLyB1cGRhdGUgdGhlIGRlZmF1bHQgY29tbWFuZFxuXHRcdFx0aWYgKHRoaXMuZGVmYXVsdENvbW1hbmQpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBjbWQgb2YgcmVzdWx0cy5jb21tYW5kcy5lbnRyaWVzKSB7XG5cdFx0XHRcdFx0aWYgKGNtZC5uYW1lID09PSB0aGlzLmRlZmF1bHRDb21tYW5kKSB7XG5cdFx0XHRcdFx0XHRjbWQuZGVmYXVsdCA9IHRydWU7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gc2V0IHRoZSBhcmd1bWVudHNcblx0XHRcdHJlc3VsdHMuYXJndW1lbnRzID0ge1xuXHRcdFx0XHR0aXRsZTogdGhpcy5wYXJlbnQgPyBgJHt0aGlzLnRpdGxlfSBhcmd1bWVudHNgIDogJ0FyZ3VtZW50cycsXG5cdFx0XHRcdC4uLnRoaXMuYXJncy5nZW5lcmF0ZUhlbHAoKVxuXHRcdFx0fTtcblxuXHRcdFx0Ly8gc2V0IHRoZSBvcHRpb25zXG5cdFx0XHRyZXN1bHRzLm9wdGlvbnMgPSB7XG5cdFx0XHRcdGNvdW50OiBzY29wZXMucmVkdWNlKChwLCBjKSA9PiBwICsgYy5jb3VudCwgMCksXG5cdFx0XHRcdHNjb3Blc1xuXHRcdFx0fTtcblxuXHRcdFx0Ly8gc2V0IHRoZSB1c2FnZSBsaW5lXG5cdFx0XHRjb25zdCB1c2FnZSA9IFtdO1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkob3B0cy5wYXJlbnRDb250ZXh0TmFtZXMpKSB7XG5cdFx0XHRcdHVzYWdlLnB1c2guYXBwbHkodXNhZ2UsIG9wdHMucGFyZW50Q29udGV4dE5hbWVzKTtcblx0XHRcdH1cblx0XHRcdHVzYWdlLnB1c2guYXBwbHkodXNhZ2UsIHJlc3VsdHMuY29udGV4dHMuc2xpY2UoKSk7XG5cdFx0XHRyZXN1bHRzLmNvbW1hbmRzLmNvdW50ICYmIHVzYWdlLnB1c2goJzxjb21tYW5kPicpO1xuXHRcdFx0cmVzdWx0cy5vcHRpb25zLmNvdW50ICYmIHVzYWdlLnB1c2goJ1tvcHRpb25zXScpO1xuXHRcdFx0dXNhZ2UucHVzaC5hcHBseSh1c2FnZSwgcmVzdWx0cy5hcmd1bWVudHMuZW50cmllcy5tYXAoYXJnID0+IHtcblx0XHRcdFx0Y29uc3QgbmFtZSA9IGA8JHthcmcubmFtZX0ke2FyZy5tdWx0aXBsZSA/ICcuLi4nIDogJyd9PmA7XG5cdFx0XHRcdHJldHVybiBhcmcucmVxdWlyZWQgPyBuYW1lIDogYFske25hbWV9XWA7XG5cdFx0XHR9KSk7XG5cdFx0XHRyZXN1bHRzLnVzYWdlID0ge1xuXHRcdFx0XHR0aXRsZTogJ1VzYWdlJyxcblx0XHRcdFx0dGV4dDogdXNhZ2Uuam9pbignICcpXG5cdFx0XHR9O1xuXG5cdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHR9KSh7XG5cdFx0XHRjb250ZXh0czogW10sXG5cdFx0XHRlcnJvcjogdW5kZWZpbmVkLFxuXHRcdFx0c3VnZ2VzdGlvbnM6IFtdLFxuXHRcdFx0d2FybmluZ3M6IHVuZGVmaW5lZFxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNjYW4gcGFyZW50IGNvbnRleHRzIHRvIGZpbmQgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eSBpbiB0aGUgdG9wLW1vc3QgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBUaGUgcHJvcGVydHkgbmFtZS5cblx0ICogQHBhcmFtIHsqfSBkZWZhdWx0VmFsdWUgLSBBIGRlZmF1bHQgdmFsdWUgaWYgbm8gdmFsdWUgaXMgZm91bmQuXG5cdCAqIEByZXR1cm5zIHsqfVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGdldChuYW1lLCBkZWZhdWx0VmFsdWUpIHtcblx0XHRsZXQgdmFsdWUgPSB0aGlzW25hbWVdO1xuXHRcdGZvciAobGV0IHAgPSB0aGlzLnBhcmVudDsgcDsgcCA9IHAucGFyZW50KSB7XG5cdFx0XHR2YWx1ZSA9IHAuZ2V0KG5hbWUsIHZhbHVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IGRlZmF1bHRWYWx1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyB0aGlzIGNvbnRleHQgd2l0aCBwYXJhbXMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fENvbnRleHR9IHBhcmFtcyAtIFZhcmlvdXMgcGFyYW1ldGVyc1xuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGluaXQocGFyYW1zKSB7XG5cdFx0aWYgKCFwYXJhbXMgfHwgdHlwZW9mIHBhcmFtcyAhPT0gJ29iamVjdCcgfHwgKHBhcmFtcy5jbGlraXQgaW5zdGFuY2VvZiBTZXQgJiYgIXBhcmFtcy5jbGlraXQuaGFzKCdDb250ZXh0JykpKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIHBhcmFtZXRlcnMgdG8gYmUgYW4gb2JqZWN0IG9yIENvbnRleHQnLCB7IG5hbWU6ICdwYXJhbXMnLCBzY29wZTogJ0NvbnRleHQuaW5pdCcsIHZhbHVlOiBwYXJhbXMgfSk7XG5cdFx0fVxuXG5cdFx0aWYgKHBhcmFtcy5jbGlraXQgaW5zdGFuY2VvZiBTZXQgJiYgIXBhcmFtcy5jbGlraXQuaGFzKCdDb250ZXh0JykpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgcGFyYW1ldGVycyB0byBiZSBhbiBvYmplY3Qgb3IgQ29udGV4dCcsIHsgbmFtZTogJ3BhcmFtcycsIHNjb3BlOiAnQ29udGV4dC5pbml0JywgdmFsdWU6IHBhcmFtcyB9KTtcblx0XHR9XG5cblx0XHR0aGlzLmFyZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBBcmd1bWVudExpc3QoKTtcblx0XHR0aGlzLmF1dG9IaWRlQmFubmVyICAgICAgICAgICAgICAgICA9IHBhcmFtcy5hdXRvSGlkZUJhbm5lcjtcblx0XHR0aGlzLmJhbm5lciAgICAgICAgICAgICAgICAgICAgICAgICA9IHBhcmFtcy5iYW5uZXI7XG5cdFx0dGhpcy5jb21tYW5kcyAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgQ29tbWFuZE1hcCgpO1xuXHRcdHRoaXMuZGVmYXVsdENvbW1hbmQgICAgICAgICAgICAgICAgID0gcGFyYW1zLmRlZmF1bHRDb21tYW5kO1xuXHRcdHRoaXMuZGVzYyAgICAgICAgICAgICAgICAgICAgICAgICAgID0gcGFyYW1zLmRlc2M7XG5cdFx0dGhpcy5lcnJvcklmVW5rbm93bkNvbW1hbmQgICAgICAgICAgPSBwYXJhbXMuZXJyb3JJZlVua25vd25Db21tYW5kO1xuXHRcdHRoaXMuZXh0ZW5zaW9ucyAgICAgICAgICAgICAgICAgICAgID0gbmV3IEV4dGVuc2lvbk1hcCgpO1xuXHRcdHRoaXMuaGVscEV4aXRDb2RlICAgICAgICAgICAgICAgICAgID0gcGFyYW1zLmhlbHBFeGl0Q29kZTtcblx0XHR0aGlzLmhlbHBUZW1wbGF0ZUZpbGUgICAgICAgICAgICAgICA9IHBhcmFtcy5oZWxwVGVtcGxhdGVGaWxlO1xuXHRcdHRoaXMuaGlkZU5vQmFubmVyT3B0aW9uICAgICAgICAgICAgID0gcGFyYW1zLmhpZGVOb0Jhbm5lck9wdGlvbjtcblx0XHR0aGlzLmhpZGVOb0NvbG9yT3B0aW9uICAgICAgICAgICAgICA9IHBhcmFtcy5oaWRlTm9Db2xvck9wdGlvbjtcblx0XHR0aGlzLmxvb2t1cCAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBMb29rdXAoKTtcblx0XHR0aGlzLm5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBhcmFtcy5uYW1lO1xuXHRcdHRoaXMubm9kZVZlcnNpb24gICAgICAgICAgICAgICAgICAgID0gcGFyYW1zLm5vZGVWZXJzaW9uO1xuXHRcdHRoaXMub3B0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IE9wdGlvbk1hcCgpO1xuXHRcdHRoaXMucGFyZW50ICAgICAgICAgICAgICAgICAgICAgICAgID0gcGFyYW1zLnBhcmVudDtcblx0XHR0aGlzLnJldiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDA7XG5cdFx0dGhpcy5zaG93QmFubmVyRm9yRXh0ZXJuYWxDTElzICAgICAgPSBwYXJhbXMuc2hvd0Jhbm5lckZvckV4dGVybmFsQ0xJcztcblx0XHR0aGlzLnNob3dIZWxwT25FcnJvciAgICAgICAgICAgICAgICA9IHBhcmFtcy5zaG93SGVscE9uRXJyb3I7XG5cdFx0dGhpcy50aXRsZSAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwYXJhbXMudGl0bGUgfHwgcGFyYW1zLm5hbWU7XG5cdFx0dGhpcy50cmVhdFVua25vd25PcHRpb25zQXNBcmd1bWVudHMgPSAhIXBhcmFtcy50cmVhdFVua25vd25PcHRpb25zQXNBcmd1bWVudHM7XG5cdFx0dGhpcy52ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgPSBwYXJhbXMudmVyc2lvbjtcblxuXHRcdHBhcmFtcy5hcmdzICAgICAgICYmIHRoaXMuYXJndW1lbnQocGFyYW1zLmFyZ3MpO1xuXHRcdHBhcmFtcy5jb21tYW5kcyAgICYmIHRoaXMuY29tbWFuZChwYXJhbXMuY29tbWFuZHMpO1xuXHRcdHBhcmFtcy5leHRlbnNpb25zICYmIHRoaXMuZXh0ZW5zaW9uKHBhcmFtcy5leHRlbnNpb25zKTtcblx0XHRwYXJhbXMub3B0aW9ucyAgICAmJiB0aGlzLm9wdGlvbihwYXJhbXMub3B0aW9ucyk7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhbiBvcHRpb24gdG8gdGhpcyBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R8T3B0aW9ufE9wdGlvbk1hcHxBcnJheTxPYmplY3R8T3B0aW9ufFN0cmluZz59IGZvcm1hdCAtIEFuIG9wdGlvblxuXHQgKiBmb3JtYXQsIGFuIG9iamVjdCBvZiBmb3JtYXQgdG8gb3B0aW9uIGRlc2NyaXB0aW9ucywgYE9wdGlvbmAgY29uc3RydWN0b3IgcGFyYW1zIG9yIGBPcHRpb25gXG5cdCAqIGluc3RhbmNlcywgYW4gYE9wdGlvbmAgaW5zdGFuY2UsIGFuIGBPcHRpb25NYXBgIGluc3RhbmNlLCBvciBhbiBhcnJheSBvZiBgT3B0aW9uYFxuXHQgKiBjb25zdHJ1Y3RvciBwYXJhbXMgYW5kIGBPcHRpb25gIGluc3RhbmNlcyBncm91cGVkIGJ5IGBTdHJpbmdgIGxhYmVscy5cblx0ICogQHBhcmFtIHtPYmplY3R8T3B0aW9ufFN0cmluZ30gW3BhcmFtc10gLSBXaGVuIGBmb3JtYXRgIGlzIGEgZm9ybWF0IHN0cmluZywgdGhlbiB0aGlzXG5cdCAqIGFyZ3VtZW50IGlzIGVpdGhlciBgT3B0aW9uYCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzLCBhbiBgT3B0aW9uYCBpbnN0YW5jZSwgb3IgYW4gb3B0aW9uXG5cdCAqIGRlc2NyaXB0aW9uLlxuXHQgKiBAcmV0dXJucyB7Q29udGV4dH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICpcblx0ICogQGV4YW1wbGVcblx0ICogICBjdHgub3B0aW9uKCctLWZvbycpOyAvLyBmb3JtYXQgZmxhZ1xuXHQgKiAgIGN0eC5vcHRpb24oJy0tZm9vJywgJ2VuYWJsZXMgZm9vIG1vZGUnKTsgLy8gZm9ybWF0IHdpdGggZGVzY3JpcHRpb25cblx0ICogICBjdHgub3B0aW9uKCctLWZvbycsIHsgZGVzYzogJ2VuYWJsZXMgZm9vIG1vZGUnIH0pOyAvLyBmb3JtYXQgd2l0aCBPcHRpb24gY3RvciBwYXJhbXNcblx0ICogICBjdHgub3B0aW9uKHsgJy0tZm9vJzogbnVsbCB9KTsgLy8gb2JqZWN0IHdpdGggZm9ybWF0IGZsYWdcblx0ICogICBjdHgub3B0aW9uKHsgJy0tZm9vJzogeyBkZXNjOiAnZW5hYmxlcyBmb28gbW9kZScgfSB9KTsgLy8gb2JqZWN0IHdpdGggT3B0aW9uIGN0b3IgcGFyYW1zXG5cdCAqICAgY3R4Lm9wdGlvbih7ICctLWZvbyc6IG5ldyBPcHRpb24oKSB9KTsgLy8gb2JqZWN0IG9mIGBPcHRpb25gIGluc3RhbmNlXG5cdCAqICAgY3R4Lm9wdGlvbihuZXcgT3B0aW9uKCctLWZvbycpKTsgLy8gYE9wdGlvbmAgaW5zdGFuY2Vcblx0ICogICBjdHgub3B0aW9uKG5ldyBPcHRpb25NYXAoKSk7IC8vIGBPcHRpb25NYXBgIGZyb20gYW5vdGhlciBpbnN0YW5jZVxuXHQgKiAgIGN0eC5vcHRpb24oWyAnU29tZSBHcm91cCcsIG5ldyBPcHRpb24oJy0tZm9vJyksICdBbm90aGVyIEdyb3VwJywgeyAnLS1iYXInOiBudWxsIH0gXSk7IC8vIGFuIGFycmF5IG9mIGdyb3VwZWQgb3B0aW9uc1xuXHQgKi9cblx0b3B0aW9uKGZvcm1hdCwgcGFyYW1zKSB7XG5cdFx0Y29uc3Qgb3B0cyA9IHRoaXMub3B0aW9ucy5hZGQoZm9ybWF0LCBwYXJhbXMpO1xuXG5cdFx0Zm9yIChjb25zdCBvcHQgb2Ygb3B0cykge1xuXHRcdFx0b3B0LnBhcmVudCA9IHRoaXM7XG5cblx0XHRcdGlmIChvcHQubG9uZykge1xuXHRcdFx0XHR0aGlzLmxvb2t1cC5sb25nW29wdC5sb25nXSA9IG9wdDtcblx0XHRcdH1cblxuXHRcdFx0aWYgKG9wdC5zaG9ydCkge1xuXHRcdFx0XHR0aGlzLmxvb2t1cC5zaG9ydFtvcHQuc2hvcnRdID0gb3B0O1xuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGNvbnN0IFsgYWxpYXMsIHZpc2libGUgXSBvZiBPYmplY3QuZW50cmllcyhvcHQuYWxpYXNlcy5sb25nKSkge1xuXHRcdFx0XHRpZiAodmlzaWJsZSkge1xuXHRcdFx0XHRcdHRoaXMubG9va3VwLmxvbmdbYWxpYXNdID0gb3B0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGZvciAoY29uc3QgWyBhbGlhcywgdmlzaWJsZSBdIG9mIE9iamVjdC5lbnRyaWVzKG9wdC5hbGlhc2VzLnNob3J0KSkge1xuXHRcdFx0XHRpZiAodmlzaWJsZSkge1xuXHRcdFx0XHRcdHRoaXMubG9va3VwLnNob3J0W2FsaWFzXSA9IG9wdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRoaXMucmV2Kys7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBTY2FuIHBhcmVudCBjb250ZXh0cyB0byBmaW5kIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkgaW4gdGhlIGJvdHRvbS1tb3N0IGNvbnRleHQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUuXG5cdCAqIEBwYXJhbSB7Kn0gZGVmYXVsdFZhbHVlIC0gQSBkZWZhdWx0IHZhbHVlIGlmIG5vIHZhbHVlIGlzIGZvdW5kLlxuXHQgKiBAcmV0dXJucyB7Kn1cblx0ICogQGFjY2VzcyBwcml2YXRlXG5cdCAqL1xuXHRwcm9wKG5hbWUsIGRlZmF1bHRWYWx1ZSkge1xuXHRcdGxldCB2YWx1ZSA9IHRoaXNbbmFtZV07XG5cdFx0Zm9yIChsZXQgcCA9IHRoaXMucGFyZW50OyB2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIHA7IHAgPSBwLnBhcmVudCkge1xuXHRcdFx0dmFsdWUgPSBwLnByb3AobmFtZSwgdmFsdWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDogZGVmYXVsdFZhbHVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVycyBhIGNvbW1hbmQgb3IgZXh0ZW5zaW9uIHRvIGFkZCB0byB0aGUgbG9va3VwLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0NvbW1hbmR8RXh0ZW5zaW9ufSBpdCAtIFRoZSBjb21tYW5kIG9yIGV4dGVuc2lvbiBpbnN0YW5jZS5cblx0ICogQGFjY2VzcyBwcml2YXRlXG5cdCAqL1xuXHRyZWdpc3RlcihpdCkge1xuXHRcdGxldCBkZXN0O1xuXHRcdGlmIChpdC5jbGlraXQuaGFzKCdFeHRlbnNpb24nKSkge1xuXHRcdFx0ZGVzdCA9ICdleHRlbnNpb25zJztcblx0XHR9IGVsc2UgaWYgKGl0LmNsaWtpdC5oYXMoJ0NvbW1hbmQnKSkge1xuXHRcdFx0ZGVzdCA9ICdjb21tYW5kcyc7XG5cdFx0fVxuXG5cdFx0aWYgKCFkZXN0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aXQucGFyZW50ID0gdGhpcztcblx0XHR0aGlzLmxvb2t1cFtkZXN0XVtpdC5uYW1lXSA9IGl0O1xuXG5cdFx0aWYgKGl0LmFsaWFzZXMpIHtcblx0XHRcdGZvciAoY29uc3QgYWxpYXMgb2YgT2JqZWN0LmtleXMoaXQuYWxpYXNlcykpIHtcblx0XHRcdFx0aWYgKCF0aGlzW2Rlc3RdLmhhcyhhbGlhcykpIHtcblx0XHRcdFx0XHR0aGlzLmxvb2t1cFtkZXN0XVthbGlhc10gPSBpdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIl0sImZpbGUiOiJwYXJzZXIvY29udGV4dC5qcyJ9 |
@@ -132,3 +132,3 @@ "use strict"; | ||
for (const cmd of Array.from(this.keys()).sort()) { | ||
for (const cmd of Array.from(this.keys())) { | ||
const { | ||
@@ -143,5 +143,17 @@ aliases, | ||
if (!hidden && !clikitHelp) { | ||
const labels = [name]; | ||
for (const [alias, display] of Object.entries(aliases)) { | ||
if (display === 'visible') { | ||
labels.push(alias); | ||
} | ||
} | ||
labels.sort((a, b) => { | ||
return a.length === b.length ? a.localeCompare(b) : a.length - b.length; | ||
}); | ||
entries.push({ | ||
name, | ||
desc, | ||
label: labels.join(', '), | ||
aliases: aliases ? Object.keys(aliases) : null | ||
@@ -152,2 +164,3 @@ }); | ||
entries.sort((a, b) => a.label.localeCompare(b.label)); | ||
return { | ||
@@ -162,2 +175,2 @@ count: entries.length, | ||
exports.default = ExtensionMap; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9leHRlbnNpb24tbWFwLmpzIl0sIm5hbWVzIjpbIkV4dGVuc2lvbiIsIkV4dGVuc2lvbk1hcCIsIk1hcCIsImNvbnN0cnVjdG9yIiwiYWRkIiwiZXh0IiwibmFtZSIsIkUiLCJJTlZBTElEX0FSR1VNRU5UIiwic2NvcGUiLCJ2YWx1ZSIsInJlcXVpcmUiLCJkZWZhdWx0IiwicmVzdWx0cyIsImV4dGVuc2lvbnMiLCJjbGlraXQiLCJTZXQiLCJoYXMiLCJlbnRyaWVzIiwiT2JqZWN0IiwiQXJyYXkiLCJpc0FycmF5IiwiaXQiLCJwYXRoT3JFeHQiLCJzZXQiLCJwdXNoIiwiY291bnQiLCJzaXplIiwiZ2VuZXJhdGVIZWxwIiwiY21kIiwiZnJvbSIsImtleXMiLCJzb3J0IiwiYWxpYXNlcyIsImNsaWtpdEhlbHAiLCJkZXNjIiwiaGlkZGVuIiwiZ2V0IiwibGVuZ3RoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBRUE7Ozs7QUFFQSxJQUFJQSxTQUFKO0FBRUE7Ozs7OztBQUtlLE1BQU1DLFlBQU4sU0FBMkJDLEdBQTNCLENBQStCO0FBQzdDOzs7OztBQUtBQyxFQUFBQSxXQUFXLEdBQUc7QUFDYjtBQUNBLGtDQUFtQixJQUFuQixFQUF5QixjQUF6QjtBQUNBO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJBQyxFQUFBQSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsSUFBTixFQUFZO0FBQ2QsUUFBSSxDQUFDRCxHQUFMLEVBQVU7QUFDVCxZQUFNRSxnQkFBRUMsZ0JBQUYsQ0FBbUIsMERBQW5CLEVBQStFO0FBQUVGLFFBQUFBLElBQUksRUFBRSxLQUFSO0FBQWVHLFFBQUFBLEtBQUssRUFBRSxrQkFBdEI7QUFBMENDLFFBQUFBLEtBQUssRUFBRUw7QUFBakQsT0FBL0UsQ0FBTjtBQUNBOztBQUVELFFBQUlDLElBQUksSUFBSSxPQUFPQSxJQUFQLEtBQWdCLFFBQTVCLEVBQXNDO0FBQ3JDLFlBQU1DLGdCQUFFQyxnQkFBRixDQUFtQix3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LE9BQUY7QUFBV0MsUUFBQUEsVUFBWDtBQUF1QkMsUUFBQUEsSUFBdkI7QUFBNkJDLFFBQUFBLE1BQTdCO0FBQXFDOUIsUUFBQUE7QUFBckMsVUFBOEMsS0FBSytCLEdBQUwsQ0FBU1IsR0FBVCxDQUFwRDs7QUFDQSxVQUFJLENBQUNPLE1BQUQsSUFBVyxDQUFDRixVQUFoQixFQUE0QjtBQUMzQmhCLFFBQUFBLE9BQU8sQ0FBQ08sSUFBUixDQUFhO0FBQ1puQixVQUFBQSxJQURZO0FBRVo2QixVQUFBQSxJQUZZO0FBR1pGLFVBQUFBLE9BQU8sRUFBRUEsT0FBTyxHQUFHZCxNQUFNLENBQUNZLElBQVAsQ0FBWUUsT0FBWixDQUFILEdBQTBCO0FBSDlCLFNBQWI7QUFLQTtBQUNEOztBQUVELFdBQU87QUFDTlAsTUFBQUEsS0FBSyxFQUFFUixPQUFPLENBQUNvQixNQURUO0FBRU5wQixNQUFBQTtBQUZNLEtBQVA7QUFJQTs7QUFySDRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEUgZnJvbSAnLi4vbGliL2Vycm9ycyc7XG5cbmltcG9ydCB7IGRlY2xhcmVDTElLaXRDbGFzcyB9IGZyb20gJy4uL2xpYi91dGlsJztcblxubGV0IEV4dGVuc2lvbjtcblxuLyoqXG4gKiBTdG9yZXMgYSBtYXAgb2YgYEV4dGVuc2lvbmAgaW5zdGFuY2VzIHRoYXQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWQgZm9yIGEgY29udGV4dC5cbiAqXG4gKiBAZXh0ZW5kcyB7TWFwfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFeHRlbnNpb25NYXAgZXh0ZW5kcyBNYXAge1xuXHQvKipcblx0ICogRGVjbGFyZXMgdGhlIGNsYXNzIG5hbWUuXG5cdCAqXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHRcdGRlY2xhcmVDTElLaXRDbGFzcyh0aGlzLCAnRXh0ZW5zaW9uTWFwJyk7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhbiBleHRlbnNpb24gdG8gdGhlIG1hcC5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEV4dGVuc2lvbnxFeHRlbnNpb25NYXB8QXJyYXkuPFN0cmluZ3xFeHRlbnNpb24+fSBleHQgLSBBbiBvYmplY3Qgb2Zcblx0ICogZXh0ZW5zaW9uIG5hbWVzIHRvIGV4dGVuc2lvbiBwYXRocyBvciBpbnN0YW5jZXMsIGFuIGV4dGVuc2lvbiBwYXRoLCBhbiBgRXh0ZW5zaW9uYCBpbnN0YW5jZSxcblx0ICogb3IgYW4gYXJyYXkgb2YgdGhvc2UgdHlwZXMuIEFuIGV4dGVuc2lvbiBwYXRoIG1heSBiZSBhIGRpcmVjdG9yeSBjb250YWluaW5nIGEgTm9kZS5qc1xuXHQgKiBtb2R1bGUsIGEgcGF0aCB0byBhIGAuanNgIGZpbGUsIG9yIHRoZSBuYW1lIG9mIGEgZXhlY3V0YWJsZS4gTWF5IGFsc28gYmUgYW4gYEV4dGVuc2lvbk1hcGBcblx0ICogaW5zdGFuY2UuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbbmFtZV0gLSBUaGUgZXh0ZW5zaW9uIG5hbWUgdXNlZCBmb3IgdGhlIGNvbnRleHQgbmFtZS4gSWYgbm90IHNldCwgaXQgd2lsbFxuXHQgKiBhdHRlbXB0IHRvIGZpbmQgYSBgcGFja2FnZS5qc29uYCB3aXRoIGEgYGNsaS1raXQubmFtZWAgdmFsdWUuXG5cdCAqIEByZXR1cm5zIHtBcnJheS48RXh0ZW5zaW9uPn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICpcblx0ICogQGV4YW1wbGVcblx0ICogICAuYWRkKHsgZm9vOiAnL3BhdGgvdG8vZXh0JywgYmFyOiBuZXcgRXh0ZW5zaW9uKCkgfSlcblx0ICogICAuYWRkKCcvcGF0aC90by9leHQnKTtcblx0ICogICAuYWRkKCcvcGF0aC90by9leHQnLCAnZm9vJyk7XG5cdCAqICAgLmFkZChuZXcgRXh0ZW5zaW9uKCkpXG5cdCAqICAgLmFkZChuZXcgRXh0ZW5zaW9uTWFwKCkpXG5cdCAqICAgLmFkZChbICcvcGF0aC90by9leHQnLCBuZXcgRXh0ZW5zaW9uKCkgXSlcblx0ICovXG5cdGFkZChleHQsIG5hbWUpIHtcblx0XHRpZiAoIWV4dCkge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBleHRlbnNpb24gdG8gYmUgYW4gZXh0ZW5zaW9uIGluc3RhbmNlIG9yIGEgcGF0aCcsIHsgbmFtZTogJ2V4dCcsIHNjb3BlOiAnRXh0ZW5zaW9uTWFwLmFkZCcsIHZhbHVlOiBleHQgfSk7XG5cdFx0fVxuXG5cdFx0aWYgKG5hbWUgJiYgdHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGV4dGVuc2lvbiBuYW1lIHRvIGJlIGEgc3RyaW5nJywgeyBuYW1lOiAnbmFtZScsIHNjb3BlOiAnRXh0ZW5zaW9uTWFwLmFkZCcsIHZhbHVlOiBuYW1lIH0pO1xuXHRcdH1cblxuXHRcdGlmICghRXh0ZW5zaW9uKSB7XG5cdFx0XHRFeHRlbnNpb24gPSByZXF1aXJlKCcuL2V4dGVuc2lvbicpLmRlZmF1bHQ7XG5cdFx0fVxuXG5cdFx0Y29uc3QgcmVzdWx0cyA9IFtdO1xuXHRcdGNvbnN0IGV4dGVuc2lvbnMgPSB0eXBlb2YgZXh0ID09PSAnb2JqZWN0J1xuXHRcdFx0PyAoXG5cdFx0XHRcdGV4dC5jbGlraXQgaW5zdGFuY2VvZiBTZXQgJiYgZXh0LmNsaWtpdC5oYXMoJ0V4dGVuc2lvbicpXG5cdFx0XHRcdFx0PyBbIGV4dCBdXG5cdFx0XHRcdFx0OiBleHQuY2xpa2l0IGluc3RhbmNlb2YgU2V0ICYmIGV4dC5jbGlraXQuaGFzKCdFeHRlbnNpb25NYXAnKVxuXHRcdFx0XHRcdFx0PyBleHQuZW50cmllcygpXG5cdFx0XHRcdFx0XHQ6IE9iamVjdC5lbnRyaWVzKGV4dClcblx0XHRcdClcblx0XHRcdDogQXJyYXkuaXNBcnJheShleHQpID8gZXh0IDogWyBleHQgXTtcblxuXHRcdC8vIGF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgYW4gYXJyYXkgb2YgYFN0cmluZ3NgIChwYXRocyksIEFycmF5IFtuYW1lLGV4dF0sIGFuZCBFeHRlbnNpb24gaW5zdGFuY2VzXG5cblx0XHRmb3IgKGxldCBpdCBvZiBleHRlbnNpb25zKSB7XG5cdFx0XHRsZXQgZXh0ID0gbnVsbDtcblxuXHRcdFx0aWYgKGl0IGluc3RhbmNlb2YgRXh0ZW5zaW9uKSB7XG5cdFx0XHRcdGV4dCA9IGl0O1xuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGl0KSkge1xuXHRcdFx0XHQvLyBbbmFtZSxleHRdXG5cdFx0XHRcdGNvbnN0IFsgbmFtZSwgcGF0aE9yRXh0IF0gPSBpdDtcblx0XHRcdFx0ZXh0ID0gcGF0aE9yRXh0IGluc3RhbmNlb2YgRXh0ZW5zaW9uID8gcGF0aE9yRXh0IDogbmV3IEV4dGVuc2lvbihwYXRoT3JFeHQsIHsgbmFtZSB9KTtcblx0XHRcdH0gZWxzZSBpZiAoaXQgJiYgKHR5cGVvZiBpdCA9PT0gJ3N0cmluZycgfHwgKHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgJiYgaXQuY2xpa2l0IGluc3RhbmNlb2YgU2V0ICYmIGl0LmNsaWtpdC5oYXMoJ0V4dGVuc2lvbicpKSkpIHtcblx0XHRcdFx0Ly8gcGF0aCBvciBwYXJhbXNcblx0XHRcdFx0ZXh0ID0gbmV3IEV4dGVuc2lvbihpdCwgeyBuYW1lIH0pO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoZXh0KSB7XG5cdFx0XHRcdHRoaXMuc2V0KGV4dC5uYW1lLCBleHQpO1xuXHRcdFx0XHRyZXN1bHRzLnB1c2goZXh0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVChgSW52YWxpZCBleHRlbnNpb24gXCIke2l0fVwiLCBleHBlY3RlZCBhIHZhbGlkIHBhdGggb3IgYW4gb2JqZWN0YCwgeyBuYW1lOiAnZXh0ZW5zaW9uJywgc2NvcGU6ICdFeHRlbnNpb25NYXAuYWRkJywgdmFsdWU6IGl0IH0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHRzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIG51bWJlciBvZiBleHRlbnNpb25zLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7TnVtYmVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Z2V0IGNvdW50KCkge1xuXHRcdHJldHVybiB0aGlzLnNpemU7XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBleHRlbnNpb25zIGZvciB0aGUgaGVscCBzY3JlZW4uXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtPYmplY3R9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZW5lcmF0ZUhlbHAoKSB7XG5cdFx0Y29uc3QgZW50cmllcyA9IFtdO1xuXG5cdFx0Zm9yIChjb25zdCBjbWQgb2YgQXJyYXkuZnJvbSh0aGlzLmtleXMoKSkuc29ydCgpKSB7XG5cdFx0XHRjb25zdCB7IGFsaWFzZXMsIGNsaWtpdEhlbHAsIGRlc2MsIGhpZGRlbiwgbmFtZSB9ID0gdGhpcy5nZXQoY21kKTtcblx0XHRcdGlmICghaGlkZGVuICYmICFjbGlraXRIZWxwKSB7XG5cdFx0XHRcdGVudHJpZXMucHVzaCh7XG5cdFx0XHRcdFx0bmFtZSxcblx0XHRcdFx0XHRkZXNjLFxuXHRcdFx0XHRcdGFsaWFzZXM6IGFsaWFzZXMgPyBPYmplY3Qua2V5cyhhbGlhc2VzKSA6IG51bGxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGNvdW50OiBlbnRyaWVzLmxlbmd0aCxcblx0XHRcdGVudHJpZXNcblx0XHR9O1xuXHR9XG59XG4iXSwiZmlsZSI6InBhcnNlci9leHRlbnNpb24tbWFwLmpzIn0= | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9leHRlbnNpb24tbWFwLmpzIl0sIm5hbWVzIjpbIkV4dGVuc2lvbiIsIkV4dGVuc2lvbk1hcCIsIk1hcCIsImNvbnN0cnVjdG9yIiwiYWRkIiwiZXh0IiwibmFtZSIsIkUiLCJJTlZBTElEX0FSR1VNRU5UIiwic2NvcGUiLCJ2YWx1ZSIsInJlcXVpcmUiLCJkZWZhdWx0IiwicmVzdWx0cyIsImV4dGVuc2lvbnMiLCJjbGlraXQiLCJTZXQiLCJoYXMiLCJlbnRyaWVzIiwiT2JqZWN0IiwiQXJyYXkiLCJpc0FycmF5IiwiaXQiLCJwYXRoT3JFeHQiLCJzZXQiLCJwdXNoIiwiY291bnQiLCJzaXplIiwiZ2VuZXJhdGVIZWxwIiwiY21kIiwiZnJvbSIsImtleXMiLCJhbGlhc2VzIiwiY2xpa2l0SGVscCIsImRlc2MiLCJoaWRkZW4iLCJnZXQiLCJsYWJlbHMiLCJhbGlhcyIsImRpc3BsYXkiLCJzb3J0IiwiYSIsImIiLCJsZW5ndGgiLCJsb2NhbGVDb21wYXJlIiwibGFiZWwiLCJqb2luIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBRUE7Ozs7QUFFQSxJQUFJQSxTQUFKO0FBRUE7Ozs7OztBQUtlLE1BQU1DLFlBQU4sU0FBMkJDLEdBQTNCLENBQStCO0FBQzdDOzs7OztBQUtBQyxFQUFBQSxXQUFXLEdBQUc7QUFDYjtBQUNBLGtDQUFtQixJQUFuQixFQUF5QixjQUF6QjtBQUNBO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJBQyxFQUFBQSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsSUFBTixFQUFZO0FBQ2QsUUFBSSxDQUFDRCxHQUFMLEVBQVU7QUFDVCxZQUFNRSxnQkFBRUMsZ0JBQUYsQ0FBbUIsMERBQW5CLEVBQStFO0FBQUVGLFFBQUFBLElBQUksRUFBRSxLQUFSO0FBQWVHLFFBQUFBLEtBQUssRUFBRSxrQkFBdEI7QUFBMENDLFFBQUFBLEtBQUssRUFBRUw7QUFBakQsT0FBL0UsQ0FBTjtBQUNBOztBQUVELFFBQUlDLElBQUks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LEVBQUlDLENBQUosS0FBVUQsQ0FBQyxDQUFDSSxLQUFGLENBQVFELGFBQVIsQ0FBc0JGLENBQUMsQ0FBQ0csS0FBeEIsQ0FBdkI7QUFFQSxXQUFPO0FBQ05uQixNQUFBQSxLQUFLLEVBQUVSLE9BQU8sQ0FBQ3lCLE1BRFQ7QUFFTnpCLE1BQUFBO0FBRk0sS0FBUDtBQUlBOztBQWxJNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRSBmcm9tICcuLi9saWIvZXJyb3JzJztcblxuaW1wb3J0IHsgZGVjbGFyZUNMSUtpdENsYXNzIH0gZnJvbSAnLi4vbGliL3V0aWwnO1xuXG5sZXQgRXh0ZW5zaW9uO1xuXG4vKipcbiAqIFN0b3JlcyBhIG1hcCBvZiBgRXh0ZW5zaW9uYCBpbnN0YW5jZXMgdGhhdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZCBmb3IgYSBjb250ZXh0LlxuICpcbiAqIEBleHRlbmRzIHtNYXB9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV4dGVuc2lvbk1hcCBleHRlbmRzIE1hcCB7XG5cdC8qKlxuXHQgKiBEZWNsYXJlcyB0aGUgY2xhc3MgbmFtZS5cblx0ICpcblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cdFx0ZGVjbGFyZUNMSUtpdENsYXNzKHRoaXMsICdFeHRlbnNpb25NYXAnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGFuIGV4dGVuc2lvbiB0byB0aGUgbWFwLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8RXh0ZW5zaW9ufEV4dGVuc2lvbk1hcHxBcnJheS48U3RyaW5nfEV4dGVuc2lvbj59IGV4dCAtIEFuIG9iamVjdCBvZlxuXHQgKiBleHRlbnNpb24gbmFtZXMgdG8gZXh0ZW5zaW9uIHBhdGhzIG9yIGluc3RhbmNlcywgYW4gZXh0ZW5zaW9uIHBhdGgsIGFuIGBFeHRlbnNpb25gIGluc3RhbmNlLFxuXHQgKiBvciBhbiBhcnJheSBvZiB0aG9zZSB0eXBlcy4gQW4gZXh0ZW5zaW9uIHBhdGggbWF5IGJlIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYSBOb2RlLmpzXG5cdCAqIG1vZHVsZSwgYSBwYXRoIHRvIGEgYC5qc2AgZmlsZSwgb3IgdGhlIG5hbWUgb2YgYSBleGVjdXRhYmxlLiBNYXkgYWxzbyBiZSBhbiBgRXh0ZW5zaW9uTWFwYFxuXHQgKiBpbnN0YW5jZS5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtuYW1lXSAtIFRoZSBleHRlbnNpb24gbmFtZSB1c2VkIGZvciB0aGUgY29udGV4dCBuYW1lLiBJZiBub3Qgc2V0LCBpdCB3aWxsXG5cdCAqIGF0dGVtcHQgdG8gZmluZCBhIGBwYWNrYWdlLmpzb25gIHdpdGggYSBgY2xpLWtpdC5uYW1lYCB2YWx1ZS5cblx0ICogQHJldHVybnMge0FycmF5LjxFeHRlbnNpb24+fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKlxuXHQgKiBAZXhhbXBsZVxuXHQgKiAgIC5hZGQoeyBmb286ICcvcGF0aC90by9leHQnLCBiYXI6IG5ldyBFeHRlbnNpb24oKSB9KVxuXHQgKiAgIC5hZGQoJy9wYXRoL3RvL2V4dCcpO1xuXHQgKiAgIC5hZGQoJy9wYXRoL3RvL2V4dCcsICdmb28nKTtcblx0ICogICAuYWRkKG5ldyBFeHRlbnNpb24oKSlcblx0ICogICAuYWRkKG5ldyBFeHRlbnNpb25NYXAoKSlcblx0ICogICAuYWRkKFsgJy9wYXRoL3RvL2V4dCcsIG5ldyBFeHRlbnNpb24oKSBdKVxuXHQgKi9cblx0YWRkKGV4dCwgbmFtZSkge1xuXHRcdGlmICghZXh0KSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGV4dGVuc2lvbiB0byBiZSBhbiBleHRlbnNpb24gaW5zdGFuY2Ugb3IgYSBwYXRoJywgeyBuYW1lOiAnZXh0Jywgc2NvcGU6ICdFeHRlbnNpb25NYXAuYWRkJywgdmFsdWU6IGV4dCB9KTtcblx0XHR9XG5cblx0XHRpZiAobmFtZSAmJiB0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgZXh0ZW5zaW9uIG5hbWUgdG8gYmUgYSBzdHJpbmcnLCB7IG5hbWU6ICduYW1lJywgc2NvcGU6ICdFeHRlbnNpb25NYXAuYWRkJywgdmFsdWU6IG5hbWUgfSk7XG5cdFx0fVxuXG5cdFx0aWYgKCFFeHRlbnNpb24pIHtcblx0XHRcdEV4dGVuc2lvbiA9IHJlcXVpcmUoJy4vZXh0ZW5zaW9uJykuZGVmYXVsdDtcblx0XHR9XG5cblx0XHRjb25zdCByZXN1bHRzID0gW107XG5cdFx0Y29uc3QgZXh0ZW5zaW9ucyA9IHR5cGVvZiBleHQgPT09ICdvYmplY3QnXG5cdFx0XHQ/IChcblx0XHRcdFx0ZXh0LmNsaWtpdCBpbnN0YW5jZW9mIFNldCAmJiBleHQuY2xpa2l0LmhhcygnRXh0ZW5zaW9uJylcblx0XHRcdFx0XHQ/IFsgZXh0IF1cblx0XHRcdFx0XHQ6IGV4dC5jbGlraXQgaW5zdGFuY2VvZiBTZXQgJiYgZXh0LmNsaWtpdC5oYXMoJ0V4dGVuc2lvbk1hcCcpXG5cdFx0XHRcdFx0XHQ/IGV4dC5lbnRyaWVzKClcblx0XHRcdFx0XHRcdDogT2JqZWN0LmVudHJpZXMoZXh0KVxuXHRcdFx0KVxuXHRcdFx0OiBBcnJheS5pc0FycmF5KGV4dCkgPyBleHQgOiBbIGV4dCBdO1xuXG5cdFx0Ly8gYXQgdGhpcyBwb2ludCwgd2UgaGF2ZSBhbiBhcnJheSBvZiBgU3RyaW5nc2AgKHBhdGhzKSwgQXJyYXkgW25hbWUsZXh0XSwgYW5kIEV4dGVuc2lvbiBpbnN0YW5jZXNcblxuXHRcdGZvciAobGV0IGl0IG9mIGV4dGVuc2lvbnMpIHtcblx0XHRcdGxldCBleHQgPSBudWxsO1xuXG5cdFx0XHRpZiAoaXQgaW5zdGFuY2VvZiBFeHRlbnNpb24pIHtcblx0XHRcdFx0ZXh0ID0gaXQ7XG5cdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaXQpKSB7XG5cdFx0XHRcdC8vIFtuYW1lLGV4dF1cblx0XHRcdFx0Y29uc3QgWyBuYW1lLCBwYXRoT3JFeHQgXSA9IGl0O1xuXHRcdFx0XHRleHQgPSBwYXRoT3JFeHQgaW5zdGFuY2VvZiBFeHRlbnNpb24gPyBwYXRoT3JFeHQgOiBuZXcgRXh0ZW5zaW9uKHBhdGhPckV4dCwgeyBuYW1lIH0pO1xuXHRcdFx0fSBlbHNlIGlmIChpdCAmJiAodHlwZW9mIGl0ID09PSAnc3RyaW5nJyB8fCAodHlwZW9mIGl0ID09PSAnb2JqZWN0JyAmJiBpdC5jbGlraXQgaW5zdGFuY2VvZiBTZXQgJiYgaXQuY2xpa2l0LmhhcygnRXh0ZW5zaW9uJykpKSkge1xuXHRcdFx0XHQvLyBwYXRoIG9yIHBhcmFtc1xuXHRcdFx0XHRleHQgPSBuZXcgRXh0ZW5zaW9uKGl0LCB7IG5hbWUgfSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChleHQpIHtcblx0XHRcdFx0dGhpcy5zZXQoZXh0Lm5hbWUsIGV4dCk7XG5cdFx0XHRcdHJlc3VsdHMucHVzaChleHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKGBJbnZhbGlkIGV4dGVuc2lvbiBcIiR7aXR9XCIsIGV4cGVjdGVkIGEgdmFsaWQgcGF0aCBvciBhbiBvYmplY3RgLCB7IG5hbWU6ICdleHRlbnNpb24nLCBzY29wZTogJ0V4dGVuc2lvbk1hcC5hZGQnLCB2YWx1ZTogaXQgfSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdHM7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGV4dGVuc2lvbnMuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtOdW1iZXJ9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZXQgY291bnQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc2l6ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGV4dGVuc2lvbnMgZm9yIHRoZSBoZWxwIHNjcmVlbi5cblx0ICpcblx0ICogQHJldHVybnMge09iamVjdH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGdlbmVyYXRlSGVscCgpIHtcblx0XHRjb25zdCBlbnRyaWVzID0gW107XG5cblx0XHRmb3IgKGNvbnN0IGNtZCBvZiBBcnJheS5mcm9tKHRoaXMua2V5cygpKSkge1xuXHRcdFx0Y29uc3QgeyBhbGlhc2VzLCBjbGlraXRIZWxwLCBkZXNjLCBoaWRkZW4sIG5hbWUgfSA9IHRoaXMuZ2V0KGNtZCk7XG5cdFx0XHRpZiAoIWhpZGRlbiAmJiAhY2xpa2l0SGVscCkge1xuXHRcdFx0XHRjb25zdCBsYWJlbHMgPSBbIG5hbWUgXTtcblx0XHRcdFx0Zm9yIChjb25zdCBbIGFsaWFzLCBkaXNwbGF5IF0gb2YgT2JqZWN0LmVudHJpZXMoYWxpYXNlcykpIHtcblx0XHRcdFx0XHRpZiAoZGlzcGxheSA9PT0gJ3Zpc2libGUnKSB7XG5cdFx0XHRcdFx0XHRsYWJlbHMucHVzaChhbGlhcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGxhYmVscy5zb3J0KChhLCBiKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGEubGVuZ3RoID09PSBiLmxlbmd0aCA/IGEubG9jYWxlQ29tcGFyZShiKSA6IGEubGVuZ3RoIC0gYi5sZW5ndGg7XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGVudHJpZXMucHVzaCh7XG5cdFx0XHRcdFx0bmFtZSxcblx0XHRcdFx0XHRkZXNjLFxuXHRcdFx0XHRcdGxhYmVsOiBsYWJlbHMuam9pbignLCAnKSxcblx0XHRcdFx0XHRhbGlhc2VzOiBhbGlhc2VzID8gT2JqZWN0LmtleXMoYWxpYXNlcykgOiBudWxsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGVudHJpZXMuc29ydCgoYSwgYikgPT4gYS5sYWJlbC5sb2NhbGVDb21wYXJlKGIubGFiZWwpKTtcblxuXHRcdHJldHVybiB7XG5cdFx0XHRjb3VudDogZW50cmllcy5sZW5ndGgsXG5cdFx0XHRlbnRyaWVzXG5cdFx0fTtcblx0fVxufVxuIl0sImZpbGUiOiJwYXJzZXIvZXh0ZW5zaW9uLW1hcC5qcyJ9 |
{ | ||
"name": "cli-kit", | ||
"version": "1.1.1", | ||
"version": "1.2.0", | ||
"description": "Everything you need to create awesome command line interfaces", | ||
@@ -56,6 +56,7 @@ "main": "./dist/index.js", | ||
"devDependencies": { | ||
"@babel/core": "^7.10.0", | ||
"@babel/plugin-proposal-class-properties": "^7.8.3", | ||
"@babel/plugin-transform-modules-commonjs": "^7.9.6", | ||
"@babel/register": "^7.9.0", | ||
"@babel/core": "^7.10.1", | ||
"@babel/plugin-proposal-class-properties": "^7.10.1", | ||
"@babel/plugin-proposal-optional-chaining": "^7.10.1", | ||
"@babel/plugin-transform-modules-commonjs": "^7.10.1", | ||
"@babel/register": "^7.10.1", | ||
"babel-eslint": "^10.1.0", | ||
@@ -62,0 +63,0 @@ "babel-loader": "^8.1.0", |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
588374
6310
32