@mnaoumov/typescript-dev-toolkit 3.0.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/biome.json +49 -0
- package/assets/prettier.json +13 -0
- package/dist/lib/cjs/docs-site/docs-links.cjs +6 -3
- package/dist/lib/cjs/docs-site/docs-site-commands.cjs +24 -5
- package/dist/lib/cjs/docs-site/docs-site-commands.d.cts +8 -3
- package/dist/lib/cjs/docs-site/docs-site-config.cjs +4 -1
- package/dist/lib/cjs/docs-site/docs-site-config.d.cts +17 -0
- package/dist/lib/cjs/docs-site/index.cjs +4 -1
- package/dist/lib/cjs/docs-site/index.d.cts +1 -0
- package/dist/lib/cjs/docs-site/link-check.cjs +88 -11
- package/dist/lib/cjs/docs-site/link-check.d.cts +91 -2
- package/dist/lib/cjs/docs-site/repo-homepage.cjs +108 -0
- package/dist/lib/cjs/docs-site/repo-homepage.d.cts +50 -0
- package/dist/lib/cjs/formatters/auto.cjs +59 -0
- package/dist/lib/cjs/formatters/auto.d.cts +51 -0
- package/dist/lib/cjs/formatters/biome.cjs +121 -0
- package/dist/lib/cjs/formatters/biome.d.cts +69 -0
- package/dist/lib/cjs/formatters/index.cjs +12 -3
- package/dist/lib/cjs/formatters/index.d.cts +3 -0
- package/dist/lib/cjs/formatters/prettier.cjs +93 -0
- package/dist/lib/cjs/formatters/prettier.d.cts +56 -0
- package/dist/lib/cjs/index.cjs +4 -1
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/linters/auto.cjs +52 -0
- package/dist/lib/cjs/linters/auto.d.cts +49 -0
- package/dist/lib/cjs/linters/biome.cjs +50 -0
- package/dist/lib/cjs/linters/biome.d.cts +36 -0
- package/dist/lib/cjs/linters/eslint-config.cjs +1 -1
- package/dist/lib/cjs/linters/eslint.cjs +15 -14
- package/dist/lib/cjs/linters/eslint.d.cts +6 -0
- package/dist/lib/cjs/linters/index.cjs +7 -1
- package/dist/lib/cjs/linters/index.d.cts +2 -0
- package/dist/lib/cjs/nano-staged-config.cjs +33 -16
- package/dist/lib/cjs/nano-staged-config.d.cts +6 -0
- package/dist/lib/cjs/repo-paths.cjs +3 -1
- package/dist/lib/cjs/repo-paths.d.cts +8 -0
- package/dist/lib/cjs/shared-config-files.cjs +68 -0
- package/dist/lib/cjs/shared-config-files.d.cts +29 -0
- package/dist/lib/cjs/test-runners/auto.cjs +83 -0
- package/dist/lib/cjs/test-runners/auto.d.cts +82 -0
- package/dist/lib/cjs/test-runners/index.cjs +10 -1
- package/dist/lib/cjs/test-runners/index.d.cts +3 -0
- package/dist/lib/cjs/test-runners/jest-config.cjs +86 -0
- package/dist/lib/cjs/test-runners/jest-config.d.cts +71 -0
- package/dist/lib/cjs/test-runners/jest.cjs +111 -0
- package/dist/lib/cjs/test-runners/jest.d.cts +77 -0
- package/dist/lib/esm/docs-site/docs-links.mjs +7 -3
- package/dist/lib/esm/docs-site/docs-site-commands.d.mts +8 -3
- package/dist/lib/esm/docs-site/docs-site-commands.mjs +14 -5
- package/dist/lib/esm/docs-site/docs-site-config.d.mts +17 -0
- package/dist/lib/esm/docs-site/docs-site-config.mjs +4 -1
- package/dist/lib/esm/docs-site/index.d.mts +1 -0
- package/dist/lib/esm/docs-site/index.mjs +3 -1
- package/dist/lib/esm/docs-site/link-check.d.mts +91 -2
- package/dist/lib/esm/docs-site/link-check.mjs +83 -11
- package/dist/lib/esm/docs-site/repo-homepage.d.mts +50 -0
- package/dist/lib/esm/docs-site/repo-homepage.mjs +84 -0
- package/dist/lib/esm/formatters/auto.d.mts +51 -0
- package/dist/lib/esm/formatters/auto.mjs +40 -0
- package/dist/lib/esm/formatters/biome.d.mts +69 -0
- package/dist/lib/esm/formatters/biome.mjs +107 -0
- package/dist/lib/esm/formatters/index.d.mts +3 -0
- package/dist/lib/esm/formatters/index.mjs +8 -2
- package/dist/lib/esm/formatters/prettier.d.mts +56 -0
- package/dist/lib/esm/formatters/prettier.mjs +75 -0
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/linters/auto.d.mts +49 -0
- package/dist/lib/esm/linters/auto.mjs +30 -0
- package/dist/lib/esm/linters/biome.d.mts +36 -0
- package/dist/lib/esm/linters/biome.mjs +29 -0
- package/dist/lib/esm/linters/eslint-config.mjs +1 -1
- package/dist/lib/esm/linters/eslint.d.mts +6 -0
- package/dist/lib/esm/linters/eslint.mjs +14 -14
- package/dist/lib/esm/linters/index.d.mts +2 -0
- package/dist/lib/esm/linters/index.mjs +5 -1
- package/dist/lib/esm/nano-staged-config.d.mts +6 -0
- package/dist/lib/esm/nano-staged-config.mjs +33 -16
- package/dist/lib/esm/repo-paths.d.mts +8 -0
- package/dist/lib/esm/repo-paths.mjs +3 -1
- package/dist/lib/esm/shared-config-files.d.mts +29 -0
- package/dist/lib/esm/shared-config-files.mjs +36 -0
- package/dist/lib/esm/test-runners/auto.d.mts +82 -0
- package/dist/lib/esm/test-runners/auto.mjs +64 -0
- package/dist/lib/esm/test-runners/index.d.mts +3 -0
- package/dist/lib/esm/test-runners/index.mjs +7 -1
- package/dist/lib/esm/test-runners/jest-config.d.mts +71 -0
- package/dist/lib/esm/test-runners/jest-config.mjs +58 -0
- package/dist/lib/esm/test-runners/jest.d.mts +77 -0
- package/dist/lib/esm/test-runners/jest.mjs +75 -0
- package/docs-site/repo-homepage/package.json +6 -0
- package/formatters/auto/package.json +6 -0
- package/formatters/biome/package.json +6 -0
- package/formatters/prettier/package.json +6 -0
- package/linters/auto/package.json +6 -0
- package/linters/biome/package.json +6 -0
- package/package.json +21 -1
- package/test-runners/auto/package.json +6 -0
- package/test-runners/jest/package.json +6 -0
- package/test-runners/jest-config/package.json +6 -0
|
@@ -59,6 +59,7 @@ __export(eslint_exports, {
|
|
|
59
59
|
LINT_PROBLEMS_MESSAGE: () => LINT_PROBLEMS_MESSAGE,
|
|
60
60
|
classifyEslintExit: () => classifyEslintExit,
|
|
61
61
|
describeFailureToLint: () => describeFailureToLint,
|
|
62
|
+
hasEslintConfig: () => hasEslintConfig,
|
|
62
63
|
lint: () => lint
|
|
63
64
|
});
|
|
64
65
|
module.exports = __toCommonJS(eslint_exports);
|
|
@@ -69,6 +70,14 @@ var import_promises = require('node:fs/promises');
|
|
|
69
70
|
var import_package_manager = require('../package-manager.cjs');
|
|
70
71
|
var import_repo_paths = require('../repo-paths.cjs');
|
|
71
72
|
var import_root = require('../root.cjs');
|
|
73
|
+
const ESLINT_CONFIG_FILE_NAMES = [
|
|
74
|
+
import_repo_paths.RepoPaths.EslintConfigJs,
|
|
75
|
+
import_repo_paths.RepoPaths.EslintConfigMjs,
|
|
76
|
+
import_repo_paths.RepoPaths.EslintConfigCjs,
|
|
77
|
+
import_repo_paths.RepoPaths.EslintConfigTs,
|
|
78
|
+
import_repo_paths.RepoPaths.EslintConfigMts,
|
|
79
|
+
import_repo_paths.RepoPaths.EslintConfigCts
|
|
80
|
+
];
|
|
72
81
|
const ESLINT_WARNINGS_AS_FINDINGS_ARGUMENTS = ["--max-warnings", "0", "--no-warn-ignored"];
|
|
73
82
|
const LINT_PROBLEMS_MESSAGE = "ESLint reported lint problems. The findings are printed above.";
|
|
74
83
|
const ESLINT_EXIT_CODE_CLEAN = 0;
|
|
@@ -98,21 +107,12 @@ function describeFailureToLint(result) {
|
|
|
98
107
|
...details.map((detail) => ` ${detail}`)
|
|
99
108
|
].join("\n");
|
|
100
109
|
}
|
|
110
|
+
function hasEslintConfig() {
|
|
111
|
+
return ESLINT_CONFIG_FILE_NAMES.some((fileName) => (0, import_node_fs.existsSync)((0, import_root.resolvePathFromRootSafe)({ path: fileName })));
|
|
112
|
+
}
|
|
101
113
|
async function lint(options) {
|
|
102
114
|
const { defaultConfigFilePath, paths, shouldFix } = options ?? {};
|
|
103
|
-
|
|
104
|
-
import_repo_paths.RepoPaths.EslintConfigJs,
|
|
105
|
-
import_repo_paths.RepoPaths.EslintConfigMjs,
|
|
106
|
-
import_repo_paths.RepoPaths.EslintConfigCjs,
|
|
107
|
-
import_repo_paths.RepoPaths.EslintConfigTs,
|
|
108
|
-
import_repo_paths.RepoPaths.EslintConfigMts,
|
|
109
|
-
import_repo_paths.RepoPaths.EslintConfigCts
|
|
110
|
-
];
|
|
111
|
-
const doesConfigFileExist = configFiles.some((configFile) => {
|
|
112
|
-
const configFilePath = (0, import_root.resolvePathFromRootSafe)({ path: configFile });
|
|
113
|
-
return (0, import_node_fs.existsSync)(configFilePath);
|
|
114
|
-
});
|
|
115
|
-
if (!doesConfigFileExist && defaultConfigFilePath) {
|
|
115
|
+
if (!hasEslintConfig() && defaultConfigFilePath) {
|
|
116
116
|
(0, import_debug.getLibDebugger)("ESLint:lint")("ESLint configuration file not found. Creating default config...");
|
|
117
117
|
await (0, import_promises.cp)(defaultConfigFilePath, (0, import_root.resolvePathFromRootSafe)({ path: (0, import_path.basename)(defaultConfigFilePath) }));
|
|
118
118
|
}
|
|
@@ -169,6 +169,7 @@ function getFailureHeadline(result) {
|
|
|
169
169
|
LINT_PROBLEMS_MESSAGE,
|
|
170
170
|
classifyEslintExit,
|
|
171
171
|
describeFailureToLint,
|
|
172
|
+
hasEslintConfig,
|
|
172
173
|
lint
|
|
173
174
|
});
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogTGludGluZyB1dGlsaXR5IGZvciBFU0xpbnQgY29uZmlndXJhdGlvbiB3aXRoIHN1cHBvcnQgZm9yIGF1dG9tYXRpYyBmaXhpbmcuXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBmdW5jdGlvbiB0byBsaW50IGZpbGVzIGJhc2VkIG9uIHRoZSBFU0xpbnQgY29uZmlndXJhdGlvbiBkZWZpbmVkIGluIGBlc2xpbnQuY29uZmlnLnRzYC5cbiAqIEl0IGNhbiBhdXRvbWF0aWNhbGx5IGZpeCBsaW50aW5nIGlzc3VlcyBpZiBzcGVjaWZpZWQsIGFuZCBsb2dzIHJlc3VsdHMgdG8gdGhlIGNvbnNvbGUuXG4gKlxuICogSXQgYWxzbyBrZWVwcyBhIGNyYXNoZWQgbGludGVyIGFwYXJ0IGZyb20gYSByZWQgY29kZWJhc2UuIEhhbmRpbmcgRVNMaW50J3MgZXhpdCBjb2RlIHN0cmFpZ2h0IHRvXG4gKiB7QGxpbmsgZXhlY0Zyb21Sb290fSBhbmQgbGV0dGluZyBpdCB0aHJvdyByZXBvcnRzIGV2ZXJ5IG5vbi16ZXJvIGNvZGUgdGhlIHNhbWUgd2F5IC0tIGBDb21tYW5kIGZhaWxlZCB3aXRoXG4gKiBleGl0IGNvZGUgTmAgLS0gd2hpY2ggcHV0cyBhIHJ1bGUgdGhhdCB0aHJldywgYSBicm9rZW4gY29uZmlnIGFuZCBhbiBPUy1sZXZlbCBkZWF0aCBpbiB0aGUgc2FtZSBidWNrZXQgYXNcbiAqIHJlYWwgZmluZGluZ3MuIFRoZSByZWFkZXIgdGhlbiBnb2VzIGh1bnRpbmcgZm9yIGEgZGVmZWN0IGluIHNvdXJjZSBjb2RlIHRoYXQgd2FzIG5ldmVyIGp1ZGdlZCBhdCBhbGwuXG4gKi9cblxuaW1wb3J0IHsgZ2V0TGliRGVidWdnZXIgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZGVidWcnO1xuaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBjcCB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuXG5pbXBvcnQgdHlwZSB7IEV4ZWNSZXN1bHQgfSBmcm9tICcuLi9leGVjLnRzJztcblxuaW1wb3J0IHsgcmVzb2x2ZVRvb2xDb21tYW5kIH0gZnJvbSAnLi4vcGFja2FnZS1tYW5hZ2VyLnRzJztcbmltcG9ydCB7IFJlcG9QYXRocyB9IGZyb20gJy4uL3JlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZXhlY0Zyb21Sb290LFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICcuLi9yb290LnRzJztcblxuLyoqXG4gKiBUaGUgZmxhZ3MgdGhhdCBtYWtlIGEgV0FSTklORyBjb3VudCBhcyBhIGZpbmRpbmcsIHBhc3NlZCBvbiBldmVyeSBydW4uXG4gKlxuICogRVNMaW50IGV4aXRzIGAwYCB3aGVuIGEgcnVuIHJlcG9ydGVkIHdhcm5pbmdzIGFuZCBubyBlcnJvcnMsIHNvIHdpdGhvdXQgYC0tbWF4LXdhcm5pbmdzIDBgIHRoZSBnYXRlIHJlYWRzIGFcbiAqIHdhcm5pbmcgYXMgYSBjbGVhbiB0cmVlOiBgbGludGAgcHJpbnRzIGl0LCByZXR1cm5zIHN1Y2Nlc3MsIGFuZCBDSSwgdGhlIHByZS1jb21taXQgaG9vayBhbmQgZXZlcnkgc3dlZXBcbiAqIGFncmVlIHRoZSB0cmVlIGlzIGNsZWFuLiBBIHdhcm5pbmcgdGhhdCBub3RoaW5nIGV2ZXIgZmFpbHMgb24gaXMgYSB3YXJuaW5nIHRoYXQgc3RhbmRzIGZvciBldmVyLCBhbmQgdGhlXG4gKiBmbGVldCBoYXMgY2FycmllZCBzZXZlcmFsIHRoYXQgZWFjaCBuZWVkZWQgYSBwZXJzb24gcmF0aGVyIHRoYW4gYSBnYXRlIHRvIG5vdGljZSB0aGVtLlxuICpcbiAqIEl0IGlzIHBhc3NlZCB1bmNvbmRpdGlvbmFsbHkgYW5kIHRoZXJlIGlzIG5vIG9wdGlvbiB0byByYWlzZSBpdDogYSBjZWlsaW5nIGEgcmVwbyBjYW4gcmFpc2UgaXMgYSBnYXRlXG4gKiBzb21lYm9keSB0dXJucyBvZmYuIEl0IGlzIHBhc3NlZCBvbiB0aGUgYC0tZml4YCBydW5zIHRvbywgYmVjYXVzZSB3aGF0ZXZlciBpcyBsZWZ0IGFmdGVyIGZpeGluZyBpcyBleGFjdGx5XG4gKiB3aGF0IHRoZSBuby1maXggcnVuIHdvdWxkIGhhdmUganVkZ2VkLCBzbyB0aGUgdHdvIGNhbm5vdCBkaXNhZ3JlZSBhYm91dCB3aGF0IGNvdW50cy4gSXQgaXMgYSBzdGF0aWMgY29tbWFuZFxuICogcGFydCByYXRoZXIgdGhhbiBhIGJhdGNoZWQgYXJndW1lbnQsIHNvIGV2ZXJ5IGJhdGNoIG9mIGEgc3BsaXQgY29tbWFuZCBsaW5lIGNhcnJpZXMgaXQuXG4gKlxuICogYC0tbm8td2Fybi1pZ25vcmVkYCBoYXMgdG8gdHJhdmVsIHdpdGggaXQuIFRoZSBwcmUtY29tbWl0IGhvb2sgaGFuZHMgRVNMaW50IGV4cGxpY2l0IGZpbGUgbGlzdHMsIGFuZCBFU0xpbnRcbiAqIHJlcG9ydHMgYW4gZXhwbGljaXRseSBwYXNzZWQsIGdsb2JhbGx5IGlnbm9yZWQgcGF0aCAoYSBgdGVtcGxhdGVzL2AgZmlsZSwgc2F5KSBhcyBhIFdBUk5JTkcgcmF0aGVyIHRoYW5cbiAqIHNraXBwaW5nIGl0LiBVbmRlciBgLS1tYXgtd2FybmluZ3MgMGAgdGhhdCB3YXJuaW5nIGFsb25lIHdvdWxkIGZhaWwgdGhlIGNvbW1pdCwgYWx0aG91Z2ggaXQgc2F5cyBub3RoaW5nXG4gKiBhYm91dCB0aGUgY29kZS5cbiAqL1xuY29uc3QgRVNMSU5UX1dBUk5JTkdTX0FTX0ZJTkRJTkdTX0FSR1VNRU5UUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbJy0tbWF4LXdhcm5pbmdzJywgJzAnLCAnLS1uby13YXJuLWlnbm9yZWQnXTtcblxuLyoqXG4gKiBXaGF0IGFuIEVTTGludCBydW4gYWN0dWFsbHkgZXN0YWJsaXNoZWQuXG4gKlxuICogLSBgY2xlYW5gIC0tIGl0IGxpbnRlZCBldmVyeXRoaW5nIGFuZCBmb3VuZCBub3RoaW5nLCB3YXJuaW5ncyBpbmNsdWRlZDogc2VlXG4gKiAgIHtAbGluayBFU0xJTlRfV0FSTklOR1NfQVNfRklORElOR1NfQVJHVU1FTlRTfSBmb3Igd2hhdCBtYWtlcyB0aGUgXCJpbmNsdWRlZFwiIGhhbGYgdHJ1ZS5cbiAqIC0gYGxpbnQtcHJvYmxlbXNgIC0tIGl0IGxpbnRlZCBldmVyeXRoaW5nIGFuZCB0aGUgU09VUkNFIGlzIHJlZC5cbiAqIC0gYGRpZC1ub3QtbGludGAgLS0gaXQgbmV2ZXIgZ290IHRocm91Z2ggdGhlIGxpbnQsIHNvIHRoZSBzb3VyY2UgaGFzIG5vdCBiZWVuIGp1ZGdlZCBhdCBhbGwuXG4gKi9cbmV4cG9ydCB0eXBlIEVzbGludEV4aXRLaW5kID0gJ2NsZWFuJyB8ICdkaWQtbm90LWxpbnQnIHwgJ2xpbnQtcHJvYmxlbXMnO1xuXG4vKipcbiAqIFRoZSBtZXNzYWdlIHRocm93biBmb3IgcmVhbCBmaW5kaW5ncywga2VwdCBhcGFydCBmcm9tIHtAbGluayBkZXNjcmliZUZhaWx1cmVUb0xpbnR9J3MuXG4gKi9cbmV4cG9ydCBjb25zdCBMSU5UX1BST0JMRU1TX01FU1NBR0UgPSAnRVNMaW50IHJlcG9ydGVkIGxpbnQgcHJvYmxlbXMuIFRoZSBmaW5kaW5ncyBhcmUgcHJpbnRlZCBhYm92ZS4nO1xuXG4vKipcbiAqIEVTTGludCdzIGV4aXQtY29kZSBjb250cmFjdDogYDBgIGlzIGNsZWFuLCBgMWAgbWVhbnMgaXQgZmluaXNoZWQgYW5kIHJlcG9ydGVkIGxpbnQgcHJvYmxlbXMsIGFuZCBldmVyeVxuICogb3RoZXIgY29kZSBtZWFucyBpdCBuZXZlciBmaW5pc2hlZCBsaW50aW5nIGF0IGFsbCAtLSBhIHJ1bGUgdGhyZXcsIHRoZSBjb25maWcgaXMgYnJva2VuLCBvciB0aGUgT1Mga2lsbGVkXG4gKiB0aGUgcHJvY2Vzcy4gT25seSBgMWAgaXMgZXZpZGVuY2UgYWJvdXQgdGhlIHNvdXJjZTsgdGhlIHJlc3QgYXJlIGV2aWRlbmNlIGFib3V0IHRoZSBsaW50ZXIsIGFuZCBhIGNhbGxlclxuICogdGhhdCByZWFkcyB0aGVtIGFzIGZpbmRpbmdzIGdvZXMgaHVudGluZyBmb3IgYSBkZWZlY3QgdGhhdCBpcyBub3QgdGhlcmUuXG4gKlxuICogYDBgIGlzIG9ubHkgYXMgc3Ryb25nIGFzIHtAbGluayBFU0xJTlRfV0FSTklOR1NfQVNfRklORElOR1NfQVJHVU1FTlRTfSBtYWtlcyBpdDogb24gaXRzIG93biBFU0xpbnQgZXhpdHMgYDBgXG4gKiBmb3IgYSBydW4gdGhhdCByZXBvcnRlZCBXQVJOSU5HUyBhbmQgbm8gZXJyb3JzLCB3aGljaCB0aGlzIHdvdWxkIHJlYWQgYXMgYGNsZWFuYC5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2VzbGludC5vcmcvZG9jcy9sYXRlc3QvdXNlL2NvbW1hbmQtbGluZS1pbnRlcmZhY2UjZXhpdC1jb2Rlc31cbiAqL1xuY29uc3QgRVNMSU5UX0VYSVRfQ09ERV9DTEVBTiA9IDA7XG5cbmNvbnN0IEVTTElOVF9FWElUX0NPREVfTElOVF9QUk9CTEVNUyA9IDE7XG5cbi8qKlxuICogVGhlIGJhbm5lciBFU0xpbnQncyBmYXRhbC1lcnJvciBoYW5kbGVyIHdyaXRlcyB0byBzdGRlcnIgYmVmb3JlIGV4aXRpbmcuIEl0IGlzIE5PVCBjcmFzaC1zcGVjaWZpYzogRVNMaW50XG4gKiBwcmludHMgaXQgZm9yIGEgbWlzdHlwZWQgcGF0aCBhbmQgYSBicm9rZW4gY29uZmlnIGp1c3QgYXMgcmVhZGlseSBhcyBmb3IgYSBydWxlIHRoYXQgdGhyZXcsIHNvIGl0IGFuc3dlcnNcbiAqIFwiRVNMaW50IHRocmV3IGluc3RlYWQgb2YgZmluaXNoaW5nXCIgYW5kIG5vdGhpbmcgZmluZXIuIHtAbGluayBSVUxFX0NSQVNIX1JFR19FWFB9IGlzIHdoYXQgc2VwYXJhdGVzIHRoZVxuICogcnVsZSBjcmFzaCBvdXQgb2YgdGhhdCBzZXQuXG4gKi9cbmNvbnN0IEVTTElOVF9BQk9SVF9CQU5ORVIgPSAnT29wcyEgU29tZXRoaW5nIHdlbnQgd3JvbmchJztcblxuLyoqXG4gKiBFU0xpbnQgbmFtZXMgdGhlIG9mZmVuZGluZyBydWxlIG9uIGl0cyBvd24gbGluZSwgYW5kIG9ubHkgd2hlbiBhIFJVTEUgaXMgd2hhdCB0aHJldy5cbiAqL1xuY29uc3QgUlVMRV9DUkFTSF9SRUdfRVhQID0gL15SdWxlOiBcIi9tO1xuXG4vKipcbiAqIFRoZSBucG0gY2hhdHRlciB0aGF0IHNoYXJlcyB0aGUgY2hpbGQncyBzdGRlcnIgYW5kIHNheXMgbm90aGluZyBhYm91dCB3aHkgdGhlIGxpbnQgZmFpbGVkLlxuICovXG5jb25zdCBOUE1fTk9USUNFX1BSRUZJWCA9ICducG0gbm90aWNlJztcblxuLyoqXG4gKiBBIHN0YWNrIGZyYW1lIGluIEVTTGludCdzIG93biBvdXRwdXQgLS0gdGhlIGxpbmVzIGFib3ZlIGl0IHNheSB3aGF0IGhhcHBlbmVkLCB0aGVzZSBzYXkgb25seSB3aGVyZS5cbiAqL1xuY29uc3QgU1RBQ0tfRlJBTUVfUkVHX0VYUCA9IC9eYXRcXHMvO1xuXG5jb25zdCBNQVhfRkFJTFVSRV9ERVRBSUxfTElORVMgPSA2O1xuXG4vKipcbiAqIEV4aXQgY29kZXMgYXQgb3IgYWJvdmUgdGhpcyBhcmUgV2luZG93cyBOVCBzdGF0dXMgdmFsdWVzIHJhdGhlciB0aGFuIG9yZGluYXJ5IHByb2Nlc3MgZXhpdCBjb2RlcyAtLVxuICogbm90YWJseSBgMzIyMTIyNTQ3N2AgKGAweEMwMDAwMDA1YCwgYW4gYWNjZXNzIHZpb2xhdGlvbikuIFRoZSBFU0xpbnQgY2hpbGQgcmVhbGx5IGRvZXMgZGllIHRoYXQgd2F5IG9uXG4gKiBXaW5kb3dzIChtZWFzdXJlZCBhdCAxIHJ1biBpbiAzMCBvbiBhbiB1bmNoYW5nZWQsIGxpbnQtY2xlYW4gdHJlZSksIGFuZCBucG0gdGhlbiByZXBvcnRzIGl0IHRvIGl0cyBvd25cbiAqIGNhbGxlciBhcyBhIHBsYWluIGV4aXQgYDFgIC0tIHdoaWNoIGlzIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gXCJ0aGUgY29kZSBpcyByZWRcIiB1bmxlc3Mgc29tZXRoaW5nIHNheXNcbiAqIG90aGVyd2lzZS4gVGhhdCBpcyB3aGF0IHtAbGluayBkZXNjcmliZUZhaWx1cmVUb0xpbnR9IGlzIGZvci5cbiAqL1xuY29uc3QgTUlOX05UX1NUQVRVU19FWElUX0NPREUgPSAweDFfMDBfMDA7XG5cbmNvbnN0IEhFWF9SQURJWCA9IDE2O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHRoZSB7QGxpbmsgbGludH0gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGludE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBjb3BpZWQgdG8gdGhlIHByb2plY3Qgcm9vdCB3aGVuIHRoZSBwcm9qZWN0IGhhcyBub25lLiBXaXRob3V0IGl0LCBFU0xpbnQgcnVuc1xuICAgKiBhZ2FpbnN0IHdoYXRldmVyIGl0IGZpbmRzLCBhbmQgcmVwb3J0cyBhIG1pc3NpbmcgY29uZmlndXJhdGlvbiBpdHNlbGYuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0Q29uZmlnRmlsZVBhdGg/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGZpbGUgcGF0aHMgdG8gbGludC4gSWYgb21pdHRlZCwgbGludHMgdGhlIGVudGlyZSBwcm9qZWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aHM/OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBmaXggbGludGluZyBpc3N1ZXMgYXV0b21hdGljYWxseS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkRml4PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBEZWNpZGVzIHdoaWNoIG9mIHRoZSB0aHJlZSB0aGluZ3MgYW4gRVNMaW50IHJ1biBlc3RhYmxpc2hlZC5cbiAqXG4gKiBBIGtpbGxlZCBwcm9jZXNzIGlzIGBkaWQtbm90LWxpbnRgIHdoYXRldmVyIGl0cyBleGl0IGNvZGUgc2F5cywgYmVjYXVzZSBhIHNpZ25hbCBtZWFucyBpdCB3YXMgc3RvcHBlZFxuICogcmF0aGVyIHRoYW4gdGhhdCBpdCBmaW5pc2hlZC4gQW4gZXhpdCBgMWAgY2FycnlpbmcgRVNMaW50J3MgZmF0YWwtZXJyb3IgYmFubmVyIGlzIGBkaWQtbm90LWxpbnRgIHRvbzogdGhhdFxuICogaXMgYSBjcmFzaCBucG0gcmVsYXllZCBhcyBhIHBsYWluIGAxYCwgbm90IGEgZmluZGluZy5cbiAqXG4gKiBAcGFyYW0gcmVzdWx0IC0gV2hhdCB0aGUgRVNMaW50IGNoaWxkIGRpZC5cbiAqIEByZXR1cm5zIFRoZSBraW5kIG9mIGVuZGluZyBpdCB3YXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFzc2lmeUVzbGludEV4aXQocmVzdWx0OiBFeGVjUmVzdWx0KTogRXNsaW50RXhpdEtpbmQge1xuICBpZiAocmVzdWx0LmV4aXRDb2RlID09PSBFU0xJTlRfRVhJVF9DT0RFX0NMRUFOICYmIHJlc3VsdC5leGl0U2lnbmFsID09PSBudWxsKSB7XG4gICAgcmV0dXJuICdjbGVhbic7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0LmV4aXRDb2RlID09PSBFU0xJTlRfRVhJVF9DT0RFX0xJTlRfUFJPQkxFTVMgJiYgIXJlc3VsdC5zdGRlcnIuaW5jbHVkZXMoRVNMSU5UX0FCT1JUX0JBTk5FUilcbiAgICA/ICdsaW50LXByb2JsZW1zJ1xuICAgIDogJ2RpZC1ub3QtbGludCc7XG59XG5cbi8qKlxuICogU2F5cyB3aGljaCBvZiB0aGUgZm91ciBmYWlsdXJlcyB0byBsaW50IGhhcHBlbmVkLCBhbmQgcXVvdGVzIGJhY2sgd2hhdCBFU0xpbnQgc2FpZCBhYm91dCBpdC5cbiAqXG4gKiBAcGFyYW0gcmVzdWx0IC0gV2hhdCB0aGUgRVNMaW50IGNoaWxkIGRpZC5cbiAqIEByZXR1cm5zIFRoZSBtZXNzYWdlIHRvIHRocm93LCB3aGljaCBzYXlzIG91dHJpZ2h0IHRoYXQgaXQgaXMgbm90IGEgZmluZGluZyBhYm91dCB0aGUgc291cmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVzY3JpYmVGYWlsdXJlVG9MaW50KHJlc3VsdDogRXhlY1Jlc3VsdCk6IHN0cmluZyB7XG4gIGNvbnN0IGRldGFpbHMgPSBleHRyYWN0RmFpbHVyZURldGFpbHMocmVzdWx0LnN0ZGVycik7XG5cbiAgcmV0dXJuIFtcbiAgICBnZXRGYWlsdXJlSGVhZGxpbmUocmVzdWx0KSxcbiAgICAnVGhpcyBpcyBOT1QgYSBsaW50IGZpbmRpbmc6IHRoZSBzb3VyY2UgY29kZSBoYXMgbm90IGJlZW4ganVkZ2VkLCBzbyBkbyBub3QgZ28gbG9va2luZyBmb3IgYSBkZWZlY3QgaW4gaXQuJyxcbiAgICAnUmUtcnVuIHRoZSBjb21tYW5kLiBPbmx5IGlmIGl0IHJlcHJvZHVjZXMgaXMgdGhlcmUgc29tZXRoaW5nIHRvIGZpeCwgYW5kIHRoZSB0aGluZyB0byBmaXggaXMgdGhlIGxpbnRlci4nLFxuICAgIGAgIGV4aXQgY29kZTogJHtmb3JtYXRFeGl0Q29kZShyZXN1bHQuZXhpdENvZGUpfWAsXG4gICAgLi4ucmVzdWx0LmV4aXRTaWduYWwgPT09IG51bGwgPyBbXSA6IFtgICB0ZXJtaW5hdGVkIGJ5IHNpZ25hbDogJHtyZXN1bHQuZXhpdFNpZ25hbH1gXSxcbiAgICBkZXRhaWxzLmxlbmd0aCA+IDAgPyAnICBFU0xpbnQgc2FpZDonIDogJyAgRVNMaW50IHByaW50ZWQgbm8gZGlhZ25vc3RpYyBhdCBhbGwuJyxcbiAgICAuLi5kZXRhaWxzLm1hcCgoZGV0YWlsKSA9PiBgICAgICR7ZGV0YWlsfWApXG4gIF0uam9pbignXFxuJyk7XG59XG5cbi8qKlxuICogTGludCB0aGUgcHJvamVjdCB3aXRoIEVTTGludC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB7QGxpbmsgTGludE9wdGlvbnN9LlxuICogQHRocm93cyBBbiBgRXJyb3JgIGNhcnJ5aW5nIHtAbGluayBMSU5UX1BST0JMRU1TX01FU1NBR0V9IHdoZW4gdGhlIHNvdXJjZSBpcyByZWQsIGFuZFxuICoge0BsaW5rIGRlc2NyaWJlRmFpbHVyZVRvTGludH0ncyBtZXNzYWdlIHdoZW4gRVNMaW50IG5ldmVyIGZpbmlzaGVkIGxpbnRpbmcgYXQgYWxsLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGludChvcHRpb25zPzogTGludE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBkZWZhdWx0Q29uZmlnRmlsZVBhdGgsIHBhdGhzLCBzaG91bGRGaXggfSA9IG9wdGlvbnMgPz8ge307XG4gIGNvbnN0IGNvbmZpZ0ZpbGVzID0gW1xuICAgIFJlcG9QYXRocy5Fc2xpbnRDb25maWdKcyxcbiAgICBSZXBvUGF0aHMuRXNsaW50Q29uZmlnTWpzLFxuICAgIFJlcG9QYXRocy5Fc2xpbnRDb25maWdDanMsXG4gICAgUmVwb1BhdGhzLkVzbGludENvbmZpZ1RzLFxuICAgIFJlcG9QYXRocy5Fc2xpbnRDb25maWdNdHMsXG4gICAgUmVwb1BhdGhzLkVzbGludENvbmZpZ0N0c1xuICBdO1xuXG4gIGNvbnN0IGRvZXNDb25maWdGaWxlRXhpc3QgPSBjb25maWdGaWxlcy5zb21lKChjb25maWdGaWxlKSA9PiB7XG4gICAgY29uc3QgY29uZmlnRmlsZVBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IGNvbmZpZ0ZpbGUgfSk7XG4gICAgcmV0dXJuIGV4aXN0c1N5bmMoY29uZmlnRmlsZVBhdGgpO1xuICB9KTtcblxuICBpZiAoIWRvZXNDb25maWdGaWxlRXhpc3QgJiYgZGVmYXVsdENvbmZpZ0ZpbGVQYXRoKSB7XG4gICAgZ2V0TGliRGVidWdnZXIoJ0VTTGludDpsaW50JykoJ0VTTGludCBjb25maWd1cmF0aW9uIGZpbGUgbm90IGZvdW5kLiBDcmVhdGluZyBkZWZhdWx0IGNvbmZpZy4uLicpO1xuICAgIGF3YWl0IGNwKGRlZmF1bHRDb25maWdGaWxlUGF0aCwgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBiYXNlbmFtZShkZWZhdWx0Q29uZmlnRmlsZVBhdGgpIH0pKTtcbiAgfVxuXG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBUaGUgcGF0aHMtcHJvdmlkZWQgYnJhbmNoIGlzIG9ubHkgZXhlcmNpc2VkIGJ5IGNvbnN1bWVyIHByb2plY3RzIHBhc3NpbmcgZmlsZSBsaXN0cy4gKi9cbiAgY29uc3QgdGFyZ2V0cyA9IHBhdGhzPy5sZW5ndGggPyBwYXRocyA6IFtSZXBvUGF0aHMuQ3VycmVudEZvbGRlcl07XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGV4ZWNGcm9tUm9vdChbXG4gICAgLi4ucmVzb2x2ZVRvb2xDb21tYW5kKHsgdG9vbDogJ2VzbGludCcgfSksXG4gICAgLi4uRVNMSU5UX1dBUk5JTkdTX0FTX0ZJTkRJTkdTX0FSR1VNRU5UUyxcbiAgICAuLi4oc2hvdWxkRml4ID8gWyctLWZpeCddIDogW10pLFxuICAgIHsgYmF0Y2hlZEFyZ3VtZW50czogdGFyZ2V0cyB9XG4gIF0sIHtcbiAgICBzaG91bGRJZ25vcmVFeGl0Q29kZTogdHJ1ZSxcbiAgICBzaG91bGRJbmNsdWRlRGV0YWlsczogdHJ1ZVxuICB9KTtcblxuICBjb25zdCBraW5kID0gY2xhc3NpZnlFc2xpbnRFeGl0KHJlc3VsdCk7XG5cbiAgaWYgKGtpbmQgPT09ICdjbGVhbicpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3Ioa2luZCA9PT0gJ2xpbnQtcHJvYmxlbXMnID8gTElOVF9QUk9CTEVNU19NRVNTQUdFIDogZGVzY3JpYmVGYWlsdXJlVG9MaW50KHJlc3VsdCkpO1xufVxuXG4vKipcbiAqIFF1b3RlcyBiYWNrIGV2ZXJ5dGhpbmcgRVNMaW50IHNhaWQgdGhhdCBjYXJyaWVzIGluZm9ybWF0aW9uLiBJdCBkcm9wcyBvbmx5IHRoZSBiYW5uZXIgaXRzZWxmLCBucG0ncyBjaGF0dGVyXG4gKiBhbmQgdGhlIHN0YWNrIGZyYW1lcywgYW5kIGtlZXBzIHdoYXRldmVyIGlzIGxlZnQ6IGxpc3Rpbmcga25vd24gcHJlZml4ZXMgaW5zdGVhZCBjb3ZlcmVkIHRoZSBydWxlIGNyYXNoIGFuZFxuICogZHJvcHBlZCB0aGUgb25lIGxpbmUgdGhhdCBtYXR0ZXJlZCBmb3IgYSBtaXN0eXBlZCBwYXRoIChgTm8gZmlsZXMgbWF0Y2hpbmcgdGhlIHBhdHRlcm4gLi4uYCkuXG4gKlxuICogQHBhcmFtIHN0ZGVyciAtIEV2ZXJ5dGhpbmcgdGhlIGNoaWxkIHdyb3RlIHRvIHN0ZGVyci5cbiAqIEByZXR1cm5zIFRoZSBpbmZvcm1hdGl2ZSBsaW5lcywgZGUtZHVwbGljYXRlZCBhbmQgY2FwcGVkLlxuICovXG5mdW5jdGlvbiBleHRyYWN0RmFpbHVyZURldGFpbHMoc3RkZXJyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGRldGFpbHM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCByYXdMaW5lIG9mIHN0ZGVyci5zcGxpdCgnXFxuJykpIHtcbiAgICBpZiAoZGV0YWlscy5sZW5ndGggPT09IE1BWF9GQUlMVVJFX0RFVEFJTF9MSU5FUykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY29uc3QgbGluZSA9IHJhd0xpbmUudHJpbSgpO1xuICAgIGNvbnN0IGlzTm9pc2UgPSBsaW5lID09PSAnJ1xuICAgICAgfHwgbGluZS5zdGFydHNXaXRoKEVTTElOVF9BQk9SVF9CQU5ORVIpXG4gICAgICB8fCBsaW5lLnN0YXJ0c1dpdGgoTlBNX05PVElDRV9QUkVGSVgpXG4gICAgICB8fCBTVEFDS19GUkFNRV9SRUdfRVhQLnRlc3QobGluZSk7XG4gICAgaWYgKCFpc05vaXNlICYmICFkZXRhaWxzLmluY2x1ZGVzKGxpbmUpKSB7XG4gICAgICBkZXRhaWxzLnB1c2gobGluZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRldGFpbHM7XG59XG5cbi8qKlxuICogU3BlbGxzIGFuIGV4aXQgY29kZSwgYWRkaW5nIHRoZSBoZXggZm9ybSBmb3IgdGhlIE5UIHN0YXR1cyB2YWx1ZXMgYSByZWFkZXIgY2Fubm90IHJlY29nbml6ZSBpbiBkZWNpbWFsLlxuICpcbiAqIEBwYXJhbSBleGl0Q29kZSAtIFRoZSBjaGlsZCdzIGV4aXQgY29kZSwgb3IgYG51bGxgIHdoZW4gYSBzaWduYWwgZW5kZWQgaXQgZmlyc3QuXG4gKiBAcmV0dXJucyBUaGUgY29kZSBhcyBpdCBzaG91bGQgYmUgcmVhZCBiYWNrLlxuICovXG5mdW5jdGlvbiBmb3JtYXRFeGl0Q29kZShleGl0Q29kZTogbnVsbCB8IG51bWJlcik6IHN0cmluZyB7XG4gIGlmIChleGl0Q29kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiAnKG5vbmUgLSB0aGUgcHJvY2VzcyB3YXMgdGVybWluYXRlZCBiZWZvcmUgaXQgY291bGQgZXhpdCknO1xuICB9XG5cbiAgcmV0dXJuIGV4aXRDb2RlIDwgTUlOX05UX1NUQVRVU19FWElUX0NPREUgPyBTdHJpbmcoZXhpdENvZGUpIDogYCR7U3RyaW5nKGV4aXRDb2RlKX0gKDB4JHtleGl0Q29kZS50b1N0cmluZyhIRVhfUkFESVgpLnRvVXBwZXJDYXNlKCl9KWA7XG59XG5cbi8qKlxuICogTmFtZXMgd2hpY2ggb2YgdGhlIGZvdXIgd2F5cyBFU0xpbnQgZmFpbGVkIHRvIGxpbnQgdGhpcyB3YXMuXG4gKlxuICogQHBhcmFtIHJlc3VsdCAtIFdoYXQgdGhlIEVTTGludCBjaGlsZCBkaWQuXG4gKiBAcmV0dXJucyBUaGUgZmlyc3QgbGluZSBvZiB7QGxpbmsgZGVzY3JpYmVGYWlsdXJlVG9MaW50fSdzIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIGdldEZhaWx1cmVIZWFkbGluZShyZXN1bHQ6IEV4ZWNSZXN1bHQpOiBzdHJpbmcge1xuICBpZiAocmVzdWx0LmV4aXRTaWduYWwgIT09IG51bGwpIHtcbiAgICByZXR1cm4gJ0VTTGludCB3YXMgS0lMTEVEIGJlZm9yZSBpdCBmaW5pc2hlZCBsaW50aW5nLic7XG4gIH1cblxuICBpZiAocmVzdWx0LmV4aXRDb2RlICE9PSBudWxsICYmIHJlc3VsdC5leGl0Q29kZSA+PSBNSU5fTlRfU1RBVFVTX0VYSVRfQ09ERSkge1xuICAgIHJldHVybiAnRVNMaW50IERJRUQgYXQgdGhlIE9TIGxldmVsIC0gYW4gYWNjZXNzIHZpb2xhdGlvbiBvciBzaW1pbGFyLCB3aXRoIG5vIGRpYWdub3N0aWMgb2YgaXRzIG93bi4nO1xuICB9XG5cbiAgaWYgKFJVTEVfQ1JBU0hfUkVHX0VYUC50ZXN0KHJlc3VsdC5zdGRlcnIpKSB7XG4gICAgcmV0dXJuICdFU0xpbnQgQ1JBU0hFRDogYSBydWxlIHRocmV3IHdoaWxlIGxpbnRpbmcuIFRoZSBydWxlIGFuZCB0aGUgZmlsZSBpdCB3YXMgb24gYXJlIG5hbWVkIGJlbG93Lic7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0LnN0ZGVyci5pbmNsdWRlcyhFU0xJTlRfQUJPUlRfQkFOTkVSKVxuICAgID8gJ0VTTGludCBBQk9SVEVEOiBpdCB0aHJldyBpbnN0ZWFkIG9mIGZpbmlzaGluZyAtIGEgYnJva2VuIGNvbmZpZyBvciBjb21tYW5kIGxpbmUsIG9yIGFuIGludGVybmFsIGVycm9yLidcbiAgICA6ICdFU0xpbnQgZXhpdGVkIG5vbi16ZXJvIHdpdGhvdXQgcmVwb3J0aW5nIGZpbmRpbmdzLCBzbyBpdCBkaWQgbm90IGZpbmlzaCBsaW50aW5nLic7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWNBLG1CQUErQjtBQUMvQixrQkFBeUI7QUFDekIscUJBQTJCO0FBQzNCLHNCQUFtQjtBQUluQiw2QkFBbUM7QUFDbkMsd0JBQTBCO0FBQzFCLGtCQUdPO0FBb0JQLE1BQU0sd0NBQTJELENBQUMsa0JBQWtCLEtBQUssbUJBQW1CO0FBZXJHLE1BQU0sd0JBQXdCO0FBYXJD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
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogTGludGluZyB1dGlsaXR5IGZvciBFU0xpbnQgY29uZmlndXJhdGlvbiB3aXRoIHN1cHBvcnQgZm9yIGF1dG9tYXRpYyBmaXhpbmcuXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBmdW5jdGlvbiB0byBsaW50IGZpbGVzIGJhc2VkIG9uIHRoZSBFU0xpbnQgY29uZmlndXJhdGlvbiBkZWZpbmVkIGluIGBlc2xpbnQuY29uZmlnLnRzYC5cbiAqIEl0IGNhbiBhdXRvbWF0aWNhbGx5IGZpeCBsaW50aW5nIGlzc3VlcyBpZiBzcGVjaWZpZWQsIGFuZCBsb2dzIHJlc3VsdHMgdG8gdGhlIGNvbnNvbGUuXG4gKlxuICogSXQgYWxzbyBrZWVwcyBhIGNyYXNoZWQgbGludGVyIGFwYXJ0IGZyb20gYSByZWQgY29kZWJhc2UuIEhhbmRpbmcgRVNMaW50J3MgZXhpdCBjb2RlIHN0cmFpZ2h0IHRvXG4gKiB7QGxpbmsgZXhlY0Zyb21Sb290fSBhbmQgbGV0dGluZyBpdCB0aHJvdyByZXBvcnRzIGV2ZXJ5IG5vbi16ZXJvIGNvZGUgdGhlIHNhbWUgd2F5IC0tIGBDb21tYW5kIGZhaWxlZCB3aXRoXG4gKiBleGl0IGNvZGUgTmAgLS0gd2hpY2ggcHV0cyBhIHJ1bGUgdGhhdCB0aHJldywgYSBicm9rZW4gY29uZmlnIGFuZCBhbiBPUy1sZXZlbCBkZWF0aCBpbiB0aGUgc2FtZSBidWNrZXQgYXNcbiAqIHJlYWwgZmluZGluZ3MuIFRoZSByZWFkZXIgdGhlbiBnb2VzIGh1bnRpbmcgZm9yIGEgZGVmZWN0IGluIHNvdXJjZSBjb2RlIHRoYXQgd2FzIG5ldmVyIGp1ZGdlZCBhdCBhbGwuXG4gKi9cblxuaW1wb3J0IHsgZ2V0TGliRGVidWdnZXIgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZGVidWcnO1xuaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBjcCB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuXG5pbXBvcnQgdHlwZSB7IEV4ZWNSZXN1bHQgfSBmcm9tICcuLi9leGVjLnRzJztcblxuaW1wb3J0IHsgcmVzb2x2ZVRvb2xDb21tYW5kIH0gZnJvbSAnLi4vcGFja2FnZS1tYW5hZ2VyLnRzJztcbmltcG9ydCB7IFJlcG9QYXRocyB9IGZyb20gJy4uL3JlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZXhlY0Zyb21Sb290LFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICcuLi9yb290LnRzJztcblxuLyoqXG4gKiBUaGUgZmxhdCBjb25maWd1cmF0aW9uIGZpbGVzIEVTTGludCByZWFkcy5cbiAqL1xuY29uc3QgRVNMSU5UX0NPTkZJR19GSUxFX05BTUVTOiByZWFkb25seSBzdHJpbmdbXSA9IFtcbiAgUmVwb1BhdGhzLkVzbGludENvbmZpZ0pzLFxuICBSZXBvUGF0aHMuRXNsaW50Q29uZmlnTWpzLFxuICBSZXBvUGF0aHMuRXNsaW50Q29uZmlnQ2pzLFxuICBSZXBvUGF0aHMuRXNsaW50Q29uZmlnVHMsXG4gIFJlcG9QYXRocy5Fc2xpbnRDb25maWdNdHMsXG4gIFJlcG9QYXRocy5Fc2xpbnRDb25maWdDdHNcbl07XG5cbi8qKlxuICogVGhlIGZsYWdzIHRoYXQgbWFrZSBhIFdBUk5JTkcgY291bnQgYXMgYSBmaW5kaW5nLCBwYXNzZWQgb24gZXZlcnkgcnVuLlxuICpcbiAqIEVTTGludCBleGl0cyBgMGAgd2hlbiBhIHJ1biByZXBvcnRlZCB3YXJuaW5ncyBhbmQgbm8gZXJyb3JzLCBzbyB3aXRob3V0IGAtLW1heC13YXJuaW5ncyAwYCB0aGUgZ2F0ZSByZWFkcyBhXG4gKiB3YXJuaW5nIGFzIGEgY2xlYW4gdHJlZTogYGxpbnRgIHByaW50cyBpdCwgcmV0dXJucyBzdWNjZXNzLCBhbmQgQ0ksIHRoZSBwcmUtY29tbWl0IGhvb2sgYW5kIGV2ZXJ5IHN3ZWVwXG4gKiBhZ3JlZSB0aGUgdHJlZSBpcyBjbGVhbi4gQSB3YXJuaW5nIHRoYXQgbm90aGluZyBldmVyIGZhaWxzIG9uIGlzIGEgd2FybmluZyB0aGF0IHN0YW5kcyBmb3IgZXZlciwgYW5kIHRoZVxuICogZmxlZXQgaGFzIGNhcnJpZWQgc2V2ZXJhbCB0aGF0IGVhY2ggbmVlZGVkIGEgcGVyc29uIHJhdGhlciB0aGFuIGEgZ2F0ZSB0byBub3RpY2UgdGhlbS5cbiAqXG4gKiBJdCBpcyBwYXNzZWQgdW5jb25kaXRpb25hbGx5IGFuZCB0aGVyZSBpcyBubyBvcHRpb24gdG8gcmFpc2UgaXQ6IGEgY2VpbGluZyBhIHJlcG8gY2FuIHJhaXNlIGlzIGEgZ2F0ZVxuICogc29tZWJvZHkgdHVybnMgb2ZmLiBJdCBpcyBwYXNzZWQgb24gdGhlIGAtLWZpeGAgcnVucyB0b28sIGJlY2F1c2Ugd2hhdGV2ZXIgaXMgbGVmdCBhZnRlciBmaXhpbmcgaXMgZXhhY3RseVxuICogd2hhdCB0aGUgbm8tZml4IHJ1biB3b3VsZCBoYXZlIGp1ZGdlZCwgc28gdGhlIHR3byBjYW5ub3QgZGlzYWdyZWUgYWJvdXQgd2hhdCBjb3VudHMuIEl0IGlzIGEgc3RhdGljIGNvbW1hbmRcbiAqIHBhcnQgcmF0aGVyIHRoYW4gYSBiYXRjaGVkIGFyZ3VtZW50LCBzbyBldmVyeSBiYXRjaCBvZiBhIHNwbGl0IGNvbW1hbmQgbGluZSBjYXJyaWVzIGl0LlxuICpcbiAqIGAtLW5vLXdhcm4taWdub3JlZGAgaGFzIHRvIHRyYXZlbCB3aXRoIGl0LiBUaGUgcHJlLWNvbW1pdCBob29rIGhhbmRzIEVTTGludCBleHBsaWNpdCBmaWxlIGxpc3RzLCBhbmQgRVNMaW50XG4gKiByZXBvcnRzIGFuIGV4cGxpY2l0bHkgcGFzc2VkLCBnbG9iYWxseSBpZ25vcmVkIHBhdGggKGEgYHRlbXBsYXRlcy9gIGZpbGUsIHNheSkgYXMgYSBXQVJOSU5HIHJhdGhlciB0aGFuXG4gKiBza2lwcGluZyBpdC4gVW5kZXIgYC0tbWF4LXdhcm5pbmdzIDBgIHRoYXQgd2FybmluZyBhbG9uZSB3b3VsZCBmYWlsIHRoZSBjb21taXQsIGFsdGhvdWdoIGl0IHNheXMgbm90aGluZ1xuICogYWJvdXQgdGhlIGNvZGUuXG4gKi9cbmNvbnN0IEVTTElOVF9XQVJOSU5HU19BU19GSU5ESU5HU19BUkdVTUVOVFM6IHJlYWRvbmx5IHN0cmluZ1tdID0gWyctLW1heC13YXJuaW5ncycsICcwJywgJy0tbm8td2Fybi1pZ25vcmVkJ107XG5cbi8qKlxuICogV2hhdCBhbiBFU0xpbnQgcnVuIGFjdHVhbGx5IGVzdGFibGlzaGVkLlxuICpcbiAqIC0gYGNsZWFuYCAtLSBpdCBsaW50ZWQgZXZlcnl0aGluZyBhbmQgZm91bmQgbm90aGluZywgd2FybmluZ3MgaW5jbHVkZWQ6IHNlZVxuICogICB7QGxpbmsgRVNMSU5UX1dBUk5JTkdTX0FTX0ZJTkRJTkdTX0FSR1VNRU5UU30gZm9yIHdoYXQgbWFrZXMgdGhlIFwiaW5jbHVkZWRcIiBoYWxmIHRydWUuXG4gKiAtIGBsaW50LXByb2JsZW1zYCAtLSBpdCBsaW50ZWQgZXZlcnl0aGluZyBhbmQgdGhlIFNPVVJDRSBpcyByZWQuXG4gKiAtIGBkaWQtbm90LWxpbnRgIC0tIGl0IG5ldmVyIGdvdCB0aHJvdWdoIHRoZSBsaW50LCBzbyB0aGUgc291cmNlIGhhcyBub3QgYmVlbiBqdWRnZWQgYXQgYWxsLlxuICovXG5leHBvcnQgdHlwZSBFc2xpbnRFeGl0S2luZCA9ICdjbGVhbicgfCAnZGlkLW5vdC1saW50JyB8ICdsaW50LXByb2JsZW1zJztcblxuLyoqXG4gKiBUaGUgbWVzc2FnZSB0aHJvd24gZm9yIHJlYWwgZmluZGluZ3MsIGtlcHQgYXBhcnQgZnJvbSB7QGxpbmsgZGVzY3JpYmVGYWlsdXJlVG9MaW50fSdzLlxuICovXG5leHBvcnQgY29uc3QgTElOVF9QUk9CTEVNU19NRVNTQUdFID0gJ0VTTGludCByZXBvcnRlZCBsaW50IHByb2JsZW1zLiBUaGUgZmluZGluZ3MgYXJlIHByaW50ZWQgYWJvdmUuJztcblxuLyoqXG4gKiBFU0xpbnQncyBleGl0LWNvZGUgY29udHJhY3Q6IGAwYCBpcyBjbGVhbiwgYDFgIG1lYW5zIGl0IGZpbmlzaGVkIGFuZCByZXBvcnRlZCBsaW50IHByb2JsZW1zLCBhbmQgZXZlcnlcbiAqIG90aGVyIGNvZGUgbWVhbnMgaXQgbmV2ZXIgZmluaXNoZWQgbGludGluZyBhdCBhbGwgLS0gYSBydWxlIHRocmV3LCB0aGUgY29uZmlnIGlzIGJyb2tlbiwgb3IgdGhlIE9TIGtpbGxlZFxuICogdGhlIHByb2Nlc3MuIE9ubHkgYDFgIGlzIGV2aWRlbmNlIGFib3V0IHRoZSBzb3VyY2U7IHRoZSByZXN0IGFyZSBldmlkZW5jZSBhYm91dCB0aGUgbGludGVyLCBhbmQgYSBjYWxsZXJcbiAqIHRoYXQgcmVhZHMgdGhlbSBhcyBmaW5kaW5ncyBnb2VzIGh1bnRpbmcgZm9yIGEgZGVmZWN0IHRoYXQgaXMgbm90IHRoZXJlLlxuICpcbiAqIGAwYCBpcyBvbmx5IGFzIHN0cm9uZyBhcyB7QGxpbmsgRVNMSU5UX1dBUk5JTkdTX0FTX0ZJTkRJTkdTX0FSR1VNRU5UU30gbWFrZXMgaXQ6IG9uIGl0cyBvd24gRVNMaW50IGV4aXRzIGAwYFxuICogZm9yIGEgcnVuIHRoYXQgcmVwb3J0ZWQgV0FSTklOR1MgYW5kIG5vIGVycm9ycywgd2hpY2ggdGhpcyB3b3VsZCByZWFkIGFzIGBjbGVhbmAuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9lc2xpbnQub3JnL2RvY3MvbGF0ZXN0L3VzZS9jb21tYW5kLWxpbmUtaW50ZXJmYWNlI2V4aXQtY29kZXN9XG4gKi9cbmNvbnN0IEVTTElOVF9FWElUX0NPREVfQ0xFQU4gPSAwO1xuXG5jb25zdCBFU0xJTlRfRVhJVF9DT0RFX0xJTlRfUFJPQkxFTVMgPSAxO1xuXG4vKipcbiAqIFRoZSBiYW5uZXIgRVNMaW50J3MgZmF0YWwtZXJyb3IgaGFuZGxlciB3cml0ZXMgdG8gc3RkZXJyIGJlZm9yZSBleGl0aW5nLiBJdCBpcyBOT1QgY3Jhc2gtc3BlY2lmaWM6IEVTTGludFxuICogcHJpbnRzIGl0IGZvciBhIG1pc3R5cGVkIHBhdGggYW5kIGEgYnJva2VuIGNvbmZpZyBqdXN0IGFzIHJlYWRpbHkgYXMgZm9yIGEgcnVsZSB0aGF0IHRocmV3LCBzbyBpdCBhbnN3ZXJzXG4gKiBcIkVTTGludCB0aHJldyBpbnN0ZWFkIG9mIGZpbmlzaGluZ1wiIGFuZCBub3RoaW5nIGZpbmVyLiB7QGxpbmsgUlVMRV9DUkFTSF9SRUdfRVhQfSBpcyB3aGF0IHNlcGFyYXRlcyB0aGVcbiAqIHJ1bGUgY3Jhc2ggb3V0IG9mIHRoYXQgc2V0LlxuICovXG5jb25zdCBFU0xJTlRfQUJPUlRfQkFOTkVSID0gJ09vcHMhIFNvbWV0aGluZyB3ZW50IHdyb25nISc7XG5cbi8qKlxuICogRVNMaW50IG5hbWVzIHRoZSBvZmZlbmRpbmcgcnVsZSBvbiBpdHMgb3duIGxpbmUsIGFuZCBvbmx5IHdoZW4gYSBSVUxFIGlzIHdoYXQgdGhyZXcuXG4gKi9cbmNvbnN0IFJVTEVfQ1JBU0hfUkVHX0VYUCA9IC9eUnVsZTogXCIvbTtcblxuLyoqXG4gKiBUaGUgbnBtIGNoYXR0ZXIgdGhhdCBzaGFyZXMgdGhlIGNoaWxkJ3Mgc3RkZXJyIGFuZCBzYXlzIG5vdGhpbmcgYWJvdXQgd2h5IHRoZSBsaW50IGZhaWxlZC5cbiAqL1xuY29uc3QgTlBNX05PVElDRV9QUkVGSVggPSAnbnBtIG5vdGljZSc7XG5cbi8qKlxuICogQSBzdGFjayBmcmFtZSBpbiBFU0xpbnQncyBvd24gb3V0cHV0IC0tIHRoZSBsaW5lcyBhYm92ZSBpdCBzYXkgd2hhdCBoYXBwZW5lZCwgdGhlc2Ugc2F5IG9ubHkgd2hlcmUuXG4gKi9cbmNvbnN0IFNUQUNLX0ZSQU1FX1JFR19FWFAgPSAvXmF0XFxzLztcblxuY29uc3QgTUFYX0ZBSUxVUkVfREVUQUlMX0xJTkVTID0gNjtcblxuLyoqXG4gKiBFeGl0IGNvZGVzIGF0IG9yIGFib3ZlIHRoaXMgYXJlIFdpbmRvd3MgTlQgc3RhdHVzIHZhbHVlcyByYXRoZXIgdGhhbiBvcmRpbmFyeSBwcm9jZXNzIGV4aXQgY29kZXMgLS1cbiAqIG5vdGFibHkgYDMyMjEyMjU0NzdgIChgMHhDMDAwMDAwNWAsIGFuIGFjY2VzcyB2aW9sYXRpb24pLiBUaGUgRVNMaW50IGNoaWxkIHJlYWxseSBkb2VzIGRpZSB0aGF0IHdheSBvblxuICogV2luZG93cyAobWVhc3VyZWQgYXQgMSBydW4gaW4gMzAgb24gYW4gdW5jaGFuZ2VkLCBsaW50LWNsZWFuIHRyZWUpLCBhbmQgbnBtIHRoZW4gcmVwb3J0cyBpdCB0byBpdHMgb3duXG4gKiBjYWxsZXIgYXMgYSBwbGFpbiBleGl0IGAxYCAtLSB3aGljaCBpcyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIFwidGhlIGNvZGUgaXMgcmVkXCIgdW5sZXNzIHNvbWV0aGluZyBzYXlzXG4gKiBvdGhlcndpc2UuIFRoYXQgaXMgd2hhdCB7QGxpbmsgZGVzY3JpYmVGYWlsdXJlVG9MaW50fSBpcyBmb3IuXG4gKi9cbmNvbnN0IE1JTl9OVF9TVEFUVVNfRVhJVF9DT0RFID0gMHgxXzAwXzAwO1xuXG5jb25zdCBIRVhfUkFESVggPSAxNjtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB0aGUge0BsaW5rIGxpbnR9IGZ1bmN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpbnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZpbGUgY29waWVkIHRvIHRoZSBwcm9qZWN0IHJvb3Qgd2hlbiB0aGUgcHJvamVjdCBoYXMgbm9uZS4gV2l0aG91dCBpdCwgRVNMaW50IHJ1bnNcbiAgICogYWdhaW5zdCB3aGF0ZXZlciBpdCBmaW5kcywgYW5kIHJlcG9ydHMgYSBtaXNzaW5nIGNvbmZpZ3VyYXRpb24gaXRzZWxmLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdENvbmZpZ0ZpbGVQYXRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBmaWxlIHBhdGhzIHRvIGxpbnQuIElmIG9taXR0ZWQsIGxpbnRzIHRoZSBlbnRpcmUgcHJvamVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhzPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZml4IGxpbnRpbmcgaXNzdWVzIGF1dG9tYXRpY2FsbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEZpeD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogRGVjaWRlcyB3aGljaCBvZiB0aGUgdGhyZWUgdGhpbmdzIGFuIEVTTGludCBydW4gZXN0YWJsaXNoZWQuXG4gKlxuICogQSBraWxsZWQgcHJvY2VzcyBpcyBgZGlkLW5vdC1saW50YCB3aGF0ZXZlciBpdHMgZXhpdCBjb2RlIHNheXMsIGJlY2F1c2UgYSBzaWduYWwgbWVhbnMgaXQgd2FzIHN0b3BwZWRcbiAqIHJhdGhlciB0aGFuIHRoYXQgaXQgZmluaXNoZWQuIEFuIGV4aXQgYDFgIGNhcnJ5aW5nIEVTTGludCdzIGZhdGFsLWVycm9yIGJhbm5lciBpcyBgZGlkLW5vdC1saW50YCB0b286IHRoYXRcbiAqIGlzIGEgY3Jhc2ggbnBtIHJlbGF5ZWQgYXMgYSBwbGFpbiBgMWAsIG5vdCBhIGZpbmRpbmcuXG4gKlxuICogQHBhcmFtIHJlc3VsdCAtIFdoYXQgdGhlIEVTTGludCBjaGlsZCBkaWQuXG4gKiBAcmV0dXJucyBUaGUga2luZCBvZiBlbmRpbmcgaXQgd2FzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xhc3NpZnlFc2xpbnRFeGl0KHJlc3VsdDogRXhlY1Jlc3VsdCk6IEVzbGludEV4aXRLaW5kIHtcbiAgaWYgKHJlc3VsdC5leGl0Q29kZSA9PT0gRVNMSU5UX0VYSVRfQ09ERV9DTEVBTiAmJiByZXN1bHQuZXhpdFNpZ25hbCA9PT0gbnVsbCkge1xuICAgIHJldHVybiAnY2xlYW4nO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5leGl0Q29kZSA9PT0gRVNMSU5UX0VYSVRfQ09ERV9MSU5UX1BST0JMRU1TICYmICFyZXN1bHQuc3RkZXJyLmluY2x1ZGVzKEVTTElOVF9BQk9SVF9CQU5ORVIpXG4gICAgPyAnbGludC1wcm9ibGVtcydcbiAgICA6ICdkaWQtbm90LWxpbnQnO1xufVxuXG4vKipcbiAqIFNheXMgd2hpY2ggb2YgdGhlIGZvdXIgZmFpbHVyZXMgdG8gbGludCBoYXBwZW5lZCwgYW5kIHF1b3RlcyBiYWNrIHdoYXQgRVNMaW50IHNhaWQgYWJvdXQgaXQuXG4gKlxuICogQHBhcmFtIHJlc3VsdCAtIFdoYXQgdGhlIEVTTGludCBjaGlsZCBkaWQuXG4gKiBAcmV0dXJucyBUaGUgbWVzc2FnZSB0byB0aHJvdywgd2hpY2ggc2F5cyBvdXRyaWdodCB0aGF0IGl0IGlzIG5vdCBhIGZpbmRpbmcgYWJvdXQgdGhlIHNvdXJjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaWJlRmFpbHVyZVRvTGludChyZXN1bHQ6IEV4ZWNSZXN1bHQpOiBzdHJpbmcge1xuICBjb25zdCBkZXRhaWxzID0gZXh0cmFjdEZhaWx1cmVEZXRhaWxzKHJlc3VsdC5zdGRlcnIpO1xuXG4gIHJldHVybiBbXG4gICAgZ2V0RmFpbHVyZUhlYWRsaW5lKHJlc3VsdCksXG4gICAgJ1RoaXMgaXMgTk9UIGEgbGludCBmaW5kaW5nOiB0aGUgc291cmNlIGNvZGUgaGFzIG5vdCBiZWVuIGp1ZGdlZCwgc28gZG8gbm90IGdvIGxvb2tpbmcgZm9yIGEgZGVmZWN0IGluIGl0LicsXG4gICAgJ1JlLXJ1biB0aGUgY29tbWFuZC4gT25seSBpZiBpdCByZXByb2R1Y2VzIGlzIHRoZXJlIHNvbWV0aGluZyB0byBmaXgsIGFuZCB0aGUgdGhpbmcgdG8gZml4IGlzIHRoZSBsaW50ZXIuJyxcbiAgICBgICBleGl0IGNvZGU6ICR7Zm9ybWF0RXhpdENvZGUocmVzdWx0LmV4aXRDb2RlKX1gLFxuICAgIC4uLnJlc3VsdC5leGl0U2lnbmFsID09PSBudWxsID8gW10gOiBbYCAgdGVybWluYXRlZCBieSBzaWduYWw6ICR7cmVzdWx0LmV4aXRTaWduYWx9YF0sXG4gICAgZGV0YWlscy5sZW5ndGggPiAwID8gJyAgRVNMaW50IHNhaWQ6JyA6ICcgIEVTTGludCBwcmludGVkIG5vIGRpYWdub3N0aWMgYXQgYWxsLicsXG4gICAgLi4uZGV0YWlscy5tYXAoKGRldGFpbCkgPT4gYCAgICAke2RldGFpbH1gKVxuICBdLmpvaW4oJ1xcbicpO1xufVxuXG4vKipcbiAqIFNheXMgd2hldGhlciB0aGUgcHJvamVjdCBjb25maWd1cmVzIEVTTGludCBpdHNlbGYuXG4gKlxuICogQHJldHVybnMgV2hldGhlciBhbiBgZXNsaW50LmNvbmZpZy4qYCBmaWxlIGV4aXN0cyBhdCB0aGUgcHJvamVjdCByb290LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzRXNsaW50Q29uZmlnKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gRVNMSU5UX0NPTkZJR19GSUxFX05BTUVTLnNvbWUoKGZpbGVOYW1lKSA9PiBleGlzdHNTeW5jKHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogZmlsZU5hbWUgfSkpKTtcbn1cblxuLyoqXG4gKiBMaW50IHRoZSBwcm9qZWN0IHdpdGggRVNMaW50LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHtAbGluayBMaW50T3B0aW9uc30uXG4gKiBAdGhyb3dzIEFuIGBFcnJvcmAgY2Fycnlpbmcge0BsaW5rIExJTlRfUFJPQkxFTVNfTUVTU0FHRX0gd2hlbiB0aGUgc291cmNlIGlzIHJlZCwgYW5kXG4gKiB7QGxpbmsgZGVzY3JpYmVGYWlsdXJlVG9MaW50fSdzIG1lc3NhZ2Ugd2hlbiBFU0xpbnQgbmV2ZXIgZmluaXNoZWQgbGludGluZyBhdCBhbGwuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaW50KG9wdGlvbnM/OiBMaW50T3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGRlZmF1bHRDb25maWdGaWxlUGF0aCwgcGF0aHMsIHNob3VsZEZpeCB9ID0gb3B0aW9ucyA/PyB7fTtcbiAgaWYgKCFoYXNFc2xpbnRDb25maWcoKSAmJiBkZWZhdWx0Q29uZmlnRmlsZVBhdGgpIHtcbiAgICBnZXRMaWJEZWJ1Z2dlcignRVNMaW50OmxpbnQnKSgnRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZSBub3QgZm91bmQuIENyZWF0aW5nIGRlZmF1bHQgY29uZmlnLi4uJyk7XG4gICAgYXdhaXQgY3AoZGVmYXVsdENvbmZpZ0ZpbGVQYXRoLCByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IGJhc2VuYW1lKGRlZmF1bHRDb25maWdGaWxlUGF0aCkgfSkpO1xuICB9XG5cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIFRoZSBwYXRocy1wcm92aWRlZCBicmFuY2ggaXMgb25seSBleGVyY2lzZWQgYnkgY29uc3VtZXIgcHJvamVjdHMgcGFzc2luZyBmaWxlIGxpc3RzLiAqL1xuICBjb25zdCB0YXJnZXRzID0gcGF0aHM/Lmxlbmd0aCA/IHBhdGhzIDogW1JlcG9QYXRocy5DdXJyZW50Rm9sZGVyXTtcbiAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXhlY0Zyb21Sb290KFtcbiAgICAuLi5yZXNvbHZlVG9vbENvbW1hbmQoeyB0b29sOiAnZXNsaW50JyB9KSxcbiAgICAuLi5FU0xJTlRfV0FSTklOR1NfQVNfRklORElOR1NfQVJHVU1FTlRTLFxuICAgIC4uLihzaG91bGRGaXggPyBbJy0tZml4J10gOiBbXSksXG4gICAgeyBiYXRjaGVkQXJndW1lbnRzOiB0YXJnZXRzIH1cbiAgXSwge1xuICAgIHNob3VsZElnbm9yZUV4aXRDb2RlOiB0cnVlLFxuICAgIHNob3VsZEluY2x1ZGVEZXRhaWxzOiB0cnVlXG4gIH0pO1xuXG4gIGNvbnN0IGtpbmQgPSBjbGFzc2lmeUVzbGludEV4aXQocmVzdWx0KTtcblxuICBpZiAoa2luZCA9PT0gJ2NsZWFuJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihraW5kID09PSAnbGludC1wcm9ibGVtcycgPyBMSU5UX1BST0JMRU1TX01FU1NBR0UgOiBkZXNjcmliZUZhaWx1cmVUb0xpbnQocmVzdWx0KSk7XG59XG5cbi8qKlxuICogUXVvdGVzIGJhY2sgZXZlcnl0aGluZyBFU0xpbnQgc2FpZCB0aGF0IGNhcnJpZXMgaW5mb3JtYXRpb24uIEl0IGRyb3BzIG9ubHkgdGhlIGJhbm5lciBpdHNlbGYsIG5wbSdzIGNoYXR0ZXJcbiAqIGFuZCB0aGUgc3RhY2sgZnJhbWVzLCBhbmQga2VlcHMgd2hhdGV2ZXIgaXMgbGVmdDogbGlzdGluZyBrbm93biBwcmVmaXhlcyBpbnN0ZWFkIGNvdmVyZWQgdGhlIHJ1bGUgY3Jhc2ggYW5kXG4gKiBkcm9wcGVkIHRoZSBvbmUgbGluZSB0aGF0IG1hdHRlcmVkIGZvciBhIG1pc3R5cGVkIHBhdGggKGBObyBmaWxlcyBtYXRjaGluZyB0aGUgcGF0dGVybiAuLi5gKS5cbiAqXG4gKiBAcGFyYW0gc3RkZXJyIC0gRXZlcnl0aGluZyB0aGUgY2hpbGQgd3JvdGUgdG8gc3RkZXJyLlxuICogQHJldHVybnMgVGhlIGluZm9ybWF0aXZlIGxpbmVzLCBkZS1kdXBsaWNhdGVkIGFuZCBjYXBwZWQuXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RGYWlsdXJlRGV0YWlscyhzdGRlcnI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgZGV0YWlsczogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHJhd0xpbmUgb2Ygc3RkZXJyLnNwbGl0KCdcXG4nKSkge1xuICAgIGlmIChkZXRhaWxzLmxlbmd0aCA9PT0gTUFYX0ZBSUxVUkVfREVUQUlMX0xJTkVTKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCBsaW5lID0gcmF3TGluZS50cmltKCk7XG4gICAgY29uc3QgaXNOb2lzZSA9IGxpbmUgPT09ICcnXG4gICAgICB8fCBsaW5lLnN0YXJ0c1dpdGgoRVNMSU5UX0FCT1JUX0JBTk5FUilcbiAgICAgIHx8IGxpbmUuc3RhcnRzV2l0aChOUE1fTk9USUNFX1BSRUZJWClcbiAgICAgIHx8IFNUQUNLX0ZSQU1FX1JFR19FWFAudGVzdChsaW5lKTtcbiAgICBpZiAoIWlzTm9pc2UgJiYgIWRldGFpbHMuaW5jbHVkZXMobGluZSkpIHtcbiAgICAgIGRldGFpbHMucHVzaChsaW5lKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGV0YWlscztcbn1cblxuLyoqXG4gKiBTcGVsbHMgYW4gZXhpdCBjb2RlLCBhZGRpbmcgdGhlIGhleCBmb3JtIGZvciB0aGUgTlQgc3RhdHVzIHZhbHVlcyBhIHJlYWRlciBjYW5ub3QgcmVjb2duaXplIGluIGRlY2ltYWwuXG4gKlxuICogQHBhcmFtIGV4aXRDb2RlIC0gVGhlIGNoaWxkJ3MgZXhpdCBjb2RlLCBvciBgbnVsbGAgd2hlbiBhIHNpZ25hbCBlbmRlZCBpdCBmaXJzdC5cbiAqIEByZXR1cm5zIFRoZSBjb2RlIGFzIGl0IHNob3VsZCBiZSByZWFkIGJhY2suXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEV4aXRDb2RlKGV4aXRDb2RlOiBudWxsIHwgbnVtYmVyKTogc3RyaW5nIHtcbiAgaWYgKGV4aXRDb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuICcobm9uZSAtIHRoZSBwcm9jZXNzIHdhcyB0ZXJtaW5hdGVkIGJlZm9yZSBpdCBjb3VsZCBleGl0KSc7XG4gIH1cblxuICByZXR1cm4gZXhpdENvZGUgPCBNSU5fTlRfU1RBVFVTX0VYSVRfQ09ERSA/IFN0cmluZyhleGl0Q29kZSkgOiBgJHtTdHJpbmcoZXhpdENvZGUpfSAoMHgke2V4aXRDb2RlLnRvU3RyaW5nKEhFWF9SQURJWCkudG9VcHBlckNhc2UoKX0pYDtcbn1cblxuLyoqXG4gKiBOYW1lcyB3aGljaCBvZiB0aGUgZm91ciB3YXlzIEVTTGludCBmYWlsZWQgdG8gbGludCB0aGlzIHdhcy5cbiAqXG4gKiBAcGFyYW0gcmVzdWx0IC0gV2hhdCB0aGUgRVNMaW50IGNoaWxkIGRpZC5cbiAqIEByZXR1cm5zIFRoZSBmaXJzdCBsaW5lIG9mIHtAbGluayBkZXNjcmliZUZhaWx1cmVUb0xpbnR9J3MgbWVzc2FnZS5cbiAqL1xuZnVuY3Rpb24gZ2V0RmFpbHVyZUhlYWRsaW5lKHJlc3VsdDogRXhlY1Jlc3VsdCk6IHN0cmluZyB7XG4gIGlmIChyZXN1bHQuZXhpdFNpZ25hbCAhPT0gbnVsbCkge1xuICAgIHJldHVybiAnRVNMaW50IHdhcyBLSUxMRUQgYmVmb3JlIGl0IGZpbmlzaGVkIGxpbnRpbmcuJztcbiAgfVxuXG4gIGlmIChyZXN1bHQuZXhpdENvZGUgIT09IG51bGwgJiYgcmVzdWx0LmV4aXRDb2RlID49IE1JTl9OVF9TVEFUVVNfRVhJVF9DT0RFKSB7XG4gICAgcmV0dXJuICdFU0xpbnQgRElFRCBhdCB0aGUgT1MgbGV2ZWwgLSBhbiBhY2Nlc3MgdmlvbGF0aW9uIG9yIHNpbWlsYXIsIHdpdGggbm8gZGlhZ25vc3RpYyBvZiBpdHMgb3duLic7XG4gIH1cblxuICBpZiAoUlVMRV9DUkFTSF9SRUdfRVhQLnRlc3QocmVzdWx0LnN0ZGVycikpIHtcbiAgICByZXR1cm4gJ0VTTGludCBDUkFTSEVEOiBhIHJ1bGUgdGhyZXcgd2hpbGUgbGludGluZy4gVGhlIHJ1bGUgYW5kIHRoZSBmaWxlIGl0IHdhcyBvbiBhcmUgbmFtZWQgYmVsb3cuJztcbiAgfVxuXG4gIHJldHVybiByZXN1bHQuc3RkZXJyLmluY2x1ZGVzKEVTTElOVF9BQk9SVF9CQU5ORVIpXG4gICAgPyAnRVNMaW50IEFCT1JURUQ6IGl0IHRocmV3IGluc3RlYWQgb2YgZmluaXNoaW5nIC0gYSBicm9rZW4gY29uZmlnIG9yIGNvbW1hbmQgbGluZSwgb3IgYW4gaW50ZXJuYWwgZXJyb3IuJ1xuICAgIDogJ0VTTGludCBleGl0ZWQgbm9uLXplcm8gd2l0aG91dCByZXBvcnRpbmcgZmluZGluZ3MsIHNvIGl0IGRpZCBub3QgZmluaXNoIGxpbnRpbmcuJztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtB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
|
|
@@ -64,6 +64,12 @@ export declare function classifyEslintExit(result: ExecResult): EslintExitKind;
|
|
|
64
64
|
* @returns The message to throw, which says outright that it is not a finding about the source.
|
|
65
65
|
*/
|
|
66
66
|
export declare function describeFailureToLint(result: ExecResult): string;
|
|
67
|
+
/**
|
|
68
|
+
* Says whether the project configures ESLint itself.
|
|
69
|
+
*
|
|
70
|
+
* @returns Whether an `eslint.config.*` file exists at the project root.
|
|
71
|
+
*/
|
|
72
|
+
export declare function hasEslintConfig(): boolean;
|
|
67
73
|
/**
|
|
68
74
|
* Lint the project with ESLint.
|
|
69
75
|
*
|
|
@@ -33,6 +33,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
33
33
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
34
34
|
var linters_exports = {};
|
|
35
35
|
__export(linters_exports, {
|
|
36
|
+
auto: () => auto,
|
|
37
|
+
biome: () => biome,
|
|
36
38
|
cspell: () => cspell,
|
|
37
39
|
"cspell-content": () => cspell_content,
|
|
38
40
|
eslint: () => eslint,
|
|
@@ -49,6 +51,8 @@ __export(linters_exports, {
|
|
|
49
51
|
"over-exposure": () => over_exposure
|
|
50
52
|
});
|
|
51
53
|
module.exports = __toCommonJS(linters_exports);
|
|
54
|
+
var auto = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./auto.cjs')), 1);
|
|
55
|
+
var biome = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./biome.cjs')), 1);
|
|
52
56
|
var cspell_content = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./cspell-content.cjs')), 1);
|
|
53
57
|
var cspell = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./cspell.cjs')), 1);
|
|
54
58
|
var eslint_agnostic_core_boundary = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./eslint-agnostic-core-boundary.cjs')), 1);
|
|
@@ -65,6 +69,8 @@ var markdownlint = __toESM(((module) => module && module.__esModule && 'default'
|
|
|
65
69
|
var over_exposure = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./over-exposure.cjs')), 1);
|
|
66
70
|
// Annotate the CommonJS export names for ESM import in node:
|
|
67
71
|
0 && (module.exports = {
|
|
72
|
+
auto,
|
|
73
|
+
biome,
|
|
68
74
|
cspell,
|
|
69
75
|
"cspell-content": null,
|
|
70
76
|
eslint,
|
|
@@ -80,4 +86,4 @@ var over_exposure = __toESM(((module) => module && module.__esModule && 'default
|
|
|
80
86
|
"markdownlint-rules": null,
|
|
81
87
|
"over-exposure": null
|
|
82
88
|
});
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAnYXV0bycgZnJvbSAnLi9hdXRvLnRzJztcbmV4cG9ydCAqIGFzICdiaW9tZScgZnJvbSAnLi9iaW9tZS50cyc7XG5leHBvcnQgKiBhcyAnY3NwZWxsLWNvbnRlbnQnIGZyb20gJy4vY3NwZWxsLWNvbnRlbnQudHMnO1xuZXhwb3J0ICogYXMgJ2NzcGVsbCcgZnJvbSAnLi9jc3BlbGwudHMnO1xuZXhwb3J0ICogYXMgJ2VzbGludC1hZ25vc3RpYy1jb3JlLWJvdW5kYXJ5JyBmcm9tICcuL2VzbGludC1hZ25vc3RpYy1jb3JlLWJvdW5kYXJ5LnRzJztcbmV4cG9ydCAqIGFzICdlc2xpbnQtY29uZmlnJyBmcm9tICcuL2VzbGludC1jb25maWcudHMnO1xuZXhwb3J0ICogYXMgJ2VzbGludC1uby1yZXN0cmljdGVkLXN5bnRheCcgZnJvbSAnLi9lc2xpbnQtbm8tcmVzdHJpY3RlZC1zeW50YXgudHMnO1xuZXhwb3J0ICogYXMgJ2VzbGludC1ydWxlcycgZnJvbSAnLi9lc2xpbnQtcnVsZXMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ2VzbGludCcgZnJvbSAnLi9lc2xpbnQudHMnO1xuZXhwb3J0ICogYXMgJ2xpbnQtaWdub3JlcycgZnJvbSAnLi9saW50LWlnbm9yZXMudHMnO1xuZXhwb3J0ICogYXMgJ21hcmtkb3dubGludC1jbGkyLWNvbmZpZycgZnJvbSAnLi9tYXJrZG93bmxpbnQtY2xpMi1jb25maWcudHMnO1xuZXhwb3J0ICogYXMgJ21hcmtkb3dubGludC1jb250ZW50JyBmcm9tICcuL21hcmtkb3dubGludC1jb250ZW50LnRzJztcbmV4cG9ydCAqIGFzICdtYXJrZG93bmxpbnQtaWdub3JlcycgZnJvbSAnLi9tYXJrZG93bmxpbnQtaWdub3Jlcy50cyc7XG5leHBvcnQgKiBhcyAnbWFya2Rvd25saW50LXJ1bGVzJyBmcm9tICcuL21hcmtkb3dubGludC1ydWxlcy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnbWFya2Rvd25saW50JyBmcm9tICcuL21hcmtkb3dubGludC50cyc7XG5leHBvcnQgKiBhcyAnb3Zlci1leHBvc3VyZScgZnJvbSAnLi9vdmVyLWV4cG9zdXJlLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQkFBQUE7QUFBQSxFQUFBO0FBQUEseUNBQUFDO0FBQUEsRUFBQSx1QkFBQUM7QUFBQSxFQUFBLHFDQUFBQztBQUFBLEVBQUEsc0JBQUFDO0FBQUEsRUFBQSxzQkFBQUM7QUFBQSxFQUFBO0FBQUEsb0NBQUFDO0FBQUEsRUFBQSw4QkFBQUM7QUFBQSxFQUFBLDhCQUFBQztBQUFBLEVBQUEsNEJBQUFDO0FBQUEsRUFBQSx1QkFBQUM7QUFBQTtBQUFBO0FBRUEsV0FBd0I7QUFDeEIsWUFBeUI7QUFDekIsSUFBQVYsaUJBQWtDO0FBQ2xDLGFBQTBCO0FBQzFCLElBQUFDLGdDQUFpRDtBQUNqRCxJQUFBQyxnQkFBaUM7QUFDakMsSUFBQUMsOEJBQStDO0FBQy9DLElBQUFDLGVBQWdDO0FBQ2hDLGFBQTBCO0FBQzFCLElBQUFDLGVBQWdDO0FBQ2hDLElBQUFDLDJCQUE0QztBQUM1QyxJQUFBQyx1QkFBd0M7QUFDeEMsSUFBQUMsdUJBQXdDO0FBQ3hDLElBQUFDLHFCQUFzQztBQUN0QyxtQkFBZ0M7QUFDaEMsSUFBQUMsZ0JBQWlDOyIsCiAgIm5hbWVzIjogWyJjc3BlbGwtY29udGVudCIsICJlc2xpbnQtYWdub3N0aWMtY29yZS1ib3VuZGFyeSIsICJlc2xpbnQtY29uZmlnIiwgImVzbGludC1uby1yZXN0cmljdGVkLXN5bnRheCIsICJlc2xpbnQtcnVsZXMiLCAibGludC1pZ25vcmVzIiwgIm1hcmtkb3dubGludC1jbGkyLWNvbmZpZyIsICJtYXJrZG93bmxpbnQtY29udGVudCIsICJtYXJrZG93bmxpbnQtaWdub3JlcyIsICJtYXJrZG93bmxpbnQtcnVsZXMiLCAib3Zlci1leHBvc3VyZSJdCn0K
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
/// <reference path="../library-references.d.cts" />
|
|
2
|
+
export * as 'auto' from './auto.cjs';
|
|
3
|
+
export * as 'biome' from './biome.cjs';
|
|
2
4
|
export * as 'cspell-content' from './cspell-content.cjs';
|
|
3
5
|
export * as 'cspell' from './cspell.cjs';
|
|
4
6
|
export * as 'eslint-agnostic-core-boundary' from './eslint-agnostic-core-boundary.cjs';
|
|
@@ -41,21 +41,19 @@ var import_node_path = require('node:path');
|
|
|
41
41
|
var import_node_process = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('node:process')), 1);
|
|
42
42
|
var import_env_toggle = require('./env-toggle.cjs');
|
|
43
43
|
var import_exec = require('./exec.cjs');
|
|
44
|
+
var import_npm = require('./npm.cjs');
|
|
44
45
|
var import_package_manager = require('./package-manager.cjs');
|
|
45
46
|
const PACKAGE_MANAGER_RUN_COMMAND = (0, import_package_manager.getPackageManagerRunCommand)().join(" ");
|
|
46
|
-
const
|
|
47
|
+
const SPELLCHECK_SCRIPT_NAME = "spellcheck";
|
|
48
|
+
const SPELLCHECK_COMMAND = toScriptCommand(SPELLCHECK_SCRIPT_NAME);
|
|
47
49
|
const EXECUTABLE_PATH_RESERVE = 260;
|
|
48
50
|
const TOKENIZER_UNSAFE_CHARACTERS_REG_EXP = /[\s"']/g;
|
|
49
|
-
const
|
|
50
|
-
"*.{ts,tsx,mts}": [
|
|
51
|
-
|
|
52
|
-
`${PACKAGE_MANAGER_RUN_COMMAND} format --`
|
|
53
|
-
],
|
|
54
|
-
"*.md": [
|
|
55
|
-
`${PACKAGE_MANAGER_RUN_COMMAND} lint:md:fix --`
|
|
56
|
-
]
|
|
51
|
+
const WRITER_SCRIPT_NAMES = {
|
|
52
|
+
"*.{ts,tsx,mts}": ["lint:fix", "format"],
|
|
53
|
+
"*.md": ["lint:md:fix"]
|
|
57
54
|
};
|
|
58
|
-
const
|
|
55
|
+
const WRITER_TASKS = toWriterTasks(() => true);
|
|
56
|
+
const obsidianDevUtilsConfig = partitionSpellcheck(WRITER_TASKS, true);
|
|
59
57
|
const NANO_STAGED_ENV_VARIABLE = "NANO_STAGED";
|
|
60
58
|
function getNanoStagedConfig(options) {
|
|
61
59
|
(0, import_env_toggle.loadEnvFileIfExists)();
|
|
@@ -64,15 +62,18 @@ function getNanoStagedConfig(options) {
|
|
|
64
62
|
`);
|
|
65
63
|
import_node_process.default.exit(0);
|
|
66
64
|
}
|
|
65
|
+
const scriptNames = new Set(Object.keys((0, import_npm.readPackageJsonSync)().scripts ?? {}));
|
|
66
|
+
const hasAllSharedScripts = [SPELLCHECK_SCRIPT_NAME, ...Object.values(WRITER_SCRIPT_NAMES).flat()].every((scriptName) => scriptNames.has(scriptName));
|
|
67
67
|
const additionalWriterTasks = options?.additionalWriterTasks ?? {};
|
|
68
|
-
if (Object.keys(additionalWriterTasks).length === 0) {
|
|
68
|
+
if (hasAllSharedScripts && Object.keys(additionalWriterTasks).length === 0) {
|
|
69
69
|
return obsidianDevUtilsConfig;
|
|
70
70
|
}
|
|
71
|
-
const
|
|
71
|
+
const writerTasks = toWriterTasks((scriptName) => scriptNames.has(scriptName));
|
|
72
|
+
const duplicatePattern = Object.keys(additionalWriterTasks).find((pattern) => Object.hasOwn(writerTasks, pattern));
|
|
72
73
|
if (duplicatePattern !== void 0) {
|
|
73
74
|
throw new Error(`nano-staged writer pattern '${duplicatePattern}' is already a shared writer pattern.`);
|
|
74
75
|
}
|
|
75
|
-
return partitionSpellcheck({ ...
|
|
76
|
+
return partitionSpellcheck({ ...writerTasks, ...additionalWriterTasks }, scriptNames.has(SPELLCHECK_SCRIPT_NAME));
|
|
76
77
|
}
|
|
77
78
|
function batchCommandArguments(prefix, commandArguments) {
|
|
78
79
|
const emptyLength = (0, import_exec.getEffectiveCommandLineLength)("");
|
|
@@ -95,13 +96,16 @@ function batchCommandArguments(prefix, commandArguments) {
|
|
|
95
96
|
}
|
|
96
97
|
return batches;
|
|
97
98
|
}
|
|
98
|
-
function partitionSpellcheck(writerTasks) {
|
|
99
|
+
function partitionSpellcheck(writerTasks, shouldSpellcheck) {
|
|
100
|
+
if (!shouldSpellcheck) {
|
|
101
|
+
return Object.fromEntries(Object.entries(writerTasks).map(([pattern, commands]) => [pattern, toBatchedTask(commands)]));
|
|
102
|
+
}
|
|
99
103
|
const patterns = Object.keys(writerTasks);
|
|
100
104
|
const patternWithSlash = patterns.find((pattern) => pattern.includes("/"));
|
|
101
105
|
if (patternWithSlash !== void 0) {
|
|
102
106
|
throw new Error(`nano-staged writer pattern '${patternWithSlash}' contains '/', which the spellcheck partition cannot express.`);
|
|
103
107
|
}
|
|
104
|
-
const complementPattern = `!(${patterns.map((pattern) => `${pattern}!(?)`).join("|")})*`;
|
|
108
|
+
const complementPattern = patterns.length === 0 ? "*" : `!(${patterns.map((pattern) => `${pattern}!(?)`).join("|")})*`;
|
|
105
109
|
const config = {
|
|
106
110
|
[complementPattern]: toBatchedTask([SPELLCHECK_COMMAND])
|
|
107
111
|
};
|
|
@@ -124,9 +128,22 @@ function toCommandArgument(filename) {
|
|
|
124
128
|
}
|
|
125
129
|
return commandArgument.replaceAll(TOKENIZER_UNSAFE_CHARACTERS_REG_EXP, "?");
|
|
126
130
|
}
|
|
131
|
+
function toScriptCommand(scriptName) {
|
|
132
|
+
return `${PACKAGE_MANAGER_RUN_COMMAND} ${scriptName} --`;
|
|
133
|
+
}
|
|
134
|
+
function toWriterTasks(shouldIncludeScript) {
|
|
135
|
+
const writerTasks = {};
|
|
136
|
+
for (const [pattern, scriptNames] of Object.entries(WRITER_SCRIPT_NAMES)) {
|
|
137
|
+
const commands = scriptNames.filter((scriptName) => shouldIncludeScript(scriptName)).map((scriptName) => toScriptCommand(scriptName));
|
|
138
|
+
if (commands.length > 0) {
|
|
139
|
+
writerTasks[pattern] = commands;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return writerTasks;
|
|
143
|
+
}
|
|
127
144
|
// Annotate the CommonJS export names for ESM import in node:
|
|
128
145
|
0 && (module.exports = {
|
|
129
146
|
getNanoStagedConfig,
|
|
130
147
|
obsidianDevUtilsConfig
|
|
131
148
|
});
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL25hbm8tc3RhZ2VkLWNvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFNoYXJlZCBuYW5vLXN0YWdlZCBjb25maWd1cmF0aW9uIGZvciBwcmUtY29tbWl0IGhvb2tzLlxuICovXG5cbmltcG9ydCB7XG4gIGlzQWJzb2x1dGUsXG4gIHJlbGF0aXZlXG59IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG5pbXBvcnQge1xuICBpc0VudlZhcmlhYmxlT2ZmLFxuICBsb2FkRW52RmlsZUlmRXhpc3RzXG59IGZyb20gJy4vZW52LXRvZ2dsZS50cyc7XG5pbXBvcnQge1xuICBnZXRFZmZlY3RpdmVDb21tYW5kTGluZUxlbmd0aCxcbiAgZ2V0TWF4QmF0Y2hDb21tYW5kTGVuZ3RoXG59IGZyb20gJy4vZXhlYy50cyc7XG5pbXBvcnQgeyBnZXRQYWNrYWdlTWFuYWdlclJ1bkNvbW1hbmQgfSBmcm9tICcuL3BhY2thZ2UtbWFuYWdlci50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGdldE5hbm9TdGFnZWRDb25maWd9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldE5hbm9TdGFnZWRDb25maWdPcHRpb25zIHtcbiAgLyoqXG4gICAqIFJlcG8tc3BlY2lmaWMgZmlsZS1yZXdyaXRpbmcgdGFza3MsIGtleWVkIGJ5IHRoZSBuYW5vLXN0YWdlZCBwYXR0ZXJuIHRoYXQgY2xhaW1zIHRoZWlyIGZpbGVzLlxuICAgKlxuICAgKiBFYWNoIGdldHMgc3BlbGxjaGVjayBhcHBlbmRlZCBhbmQgaXRzIGZpbGVzIHJlbW92ZWQgZnJvbSB0aGUgc3BlbGxjaGVjay1vbmx5IGtleSwgZXhhY3RseSBsaWtlIHRoZSBzaGFyZWRcbiAgICogd3JpdGVycy4gQSBwYXR0ZXJuIG11c3Qgbm90IGNvbnRhaW4gYC9gLCBhbmQgbXVzdCBub3QgcmVwZWF0IGEgc2hhcmVkIHdyaXRlciBwYXR0ZXJuLiBFYWNoIGNvbW1hbmQgaXMgYVxuICAgKiBwcmVmaXggdGhlIHN0YWdlZCBwYXRocyBhcmUgYXBwZW5kZWQgdG8sIGluIGJhdGNoZXMsIGxpa2UgdGhlIHNoYXJlZCBvbmVzIChgbnBtIHJ1biBsaW50OmZpeCAtLWApLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbFdyaXRlclRhc2tzPzogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgc3RyaW5nW10+Pjtcbn1cblxuLyoqXG4gKiBBIG5hbm8tc3RhZ2VkIGNvbmZpZ3VyYXRpb24gd2hvc2UgZXZlcnkga2V5IGlzIGEge0BsaW5rIE5hbm9TdGFnZWRUYXNrfS5cbiAqL1xuZXhwb3J0IHR5cGUgTmFub1N0YWdlZENvbmZpZyA9IFJlY29yZDxzdHJpbmcsIE5hbm9TdGFnZWRUYXNrPjtcblxuLyoqXG4gKiBBIGZ1bmN0aW9uLXZhbHVlZCBuYW5vLXN0YWdlZCB0YXNrOiBpdCByZWNlaXZlcyB0aGUgc3RhZ2VkIGZpbGVzIGl0cyBwYXR0ZXJuIGNsYWltcyBhbmQgcmV0dXJucyB0aGVcbiAqIGNvbW1hbmRzIHRvIHJ1biBvdmVyIHRoZW0sIGluIG9yZGVyLlxuICovXG5leHBvcnQgdHlwZSBOYW5vU3RhZ2VkVGFzayA9IChjb250ZXh0OiBOYW5vU3RhZ2VkVGFza0NvbnRleHQpID0+IHN0cmluZ1tdO1xuXG4vKipcbiAqIFdoYXQgbmFuby1zdGFnZWQgcGFzc2VzIHRvIGEgZnVuY3Rpb24tdmFsdWVkIHRhc2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmFub1N0YWdlZFRhc2tDb250ZXh0IHtcbiAgLyoqXG4gICAqIFRoZSBhYnNvbHV0ZSBwYXRocyBvZiB0aGUgc3RhZ2VkIGZpbGVzIHRoZSB0YXNrJ3MgcGF0dGVybiBjbGFpbXMuXG4gICAqL1xuICByZWFkb25seSBmaWxlbmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRoZSBgPG1hbmFnZXI+IHJ1bmAgcHJlZml4IGV2ZXJ5IHRhc2sgYmVsb3cgaXMgYnVpbHQgb24sIHJlc29sdmVkIG9uY2UgZm9yIHRoZSBwcm9jZXNzLlxuICpcbiAqIERldGVjdGlvbiBwcm9iZXMgZm9yIGEgbG9ja2ZpbGUgYmVzaWRlIGBwYWNrYWdlLmpzb25gLCBzbyBpdCBpcyBhIGhhbmRmdWwgb2YgYGV4aXN0c1N5bmNgIGNhbGxzIGFuZFxuICogbm90aGluZyBtb3JlIFx1MjAxNCBubyBgLmVudmAgcmVhZCBhbmQgbm8gYHByb2Nlc3MuZXhpdGAsIHdoaWNoIGlzIHdoYXQgbGV0cyBpdCBzaXQgYXQgbW9kdWxlIHNjb3BlLlxuICovXG5jb25zdCBQQUNLQUdFX01BTkFHRVJfUlVOX0NPTU1BTkQgPSBnZXRQYWNrYWdlTWFuYWdlclJ1bkNvbW1hbmQoKS5qb2luKCcgJyk7XG5cbmNvbnN0IFNQRUxMQ0hFQ0tfQ09NTUFORCA9IGAke1BBQ0tBR0VfTUFOQUdFUl9SVU5fQ09NTUFORH0gc3BlbGxjaGVjayAtLWA7XG5cbi8qKlxuICogUm9vbSBsZWZ0IGluIGV2ZXJ5IGJhdGNoIGZvciB0aGUgcmVzb2x2ZWQgcGF0aCBvZiB0aGUgcGFja2FnZSBtYW5hZ2VyJ3MgZXhlY3V0YWJsZS5cbiAqXG4gKiBuYW5vLXN0YWdlZCBydW5zIGBucG1gIGFzIHRoZSBhYnNvbHV0ZSBwYXRoIG9mIGBucG0uY21kYCAoYDxjb21zcGVjPiAvRCAvUyAvQyBcIjxwYXRoPlwiIFwiPGFyZz5cIiBcdTIwMjZgKSwgd2hpY2hcbiAqIHRoZSBiYXRjaCBjYW5ub3Qgc2VlLCBzbyBhIGZ1bGwgV2luZG93cyBgTUFYX1BBVEhgIGlzIHNldCBhc2lkZSBmb3IgaXQuXG4gKi9cbmNvbnN0IEVYRUNVVEFCTEVfUEFUSF9SRVNFUlZFID0gMjYwO1xuXG4vKipcbiAqIFRoZSBjaGFyYWN0ZXJzIG5hbm8tc3RhZ2VkJ3MgY29tbWFuZCB0b2tlbml6ZXIgY2Fubm90IGNhcnJ5IGluc2lkZSBhbiBhcmd1bWVudC5cbiAqXG4gKiBBIGZ1bmN0aW9uLXZhbHVlZCB0YXNrIHJldHVybnMgaXRzIGNvbW1hbmRzIGFzIFNUUklOR1MsIGFuZCBuYW5vLXN0YWdlZCBzcGxpdHMgZWFjaCBvbmUgd2l0aFxuICogYHN0cmluZ0FyZ3ZUb0FycmF5YCwgd2hpY2ggZW1pdHMgYSBxdW90ZWQgdG9rZW4gdHdpY2UgKG9uY2UgYmFyZSwgb25jZSB3aXRoIGl0cyBxdW90ZXMpIGFuZCBoYXMgbm8gZXNjYXBlLlxuICogU28gYSBwYXRoIGhvbGRpbmcgd2hpdGVzcGFjZSBvciBhIHF1b3RlIGNhbm5vdCBiZSBwYXNzZWQgYXMgaXRzZWxmLlxuICovXG5jb25zdCBUT0tFTklaRVJfVU5TQUZFX0NIQVJBQ1RFUlNfUkVHX0VYUCA9IC9bXFxzXCInXS9nO1xuXG4vKipcbiAqIFRoZSB0YXNrcyB0aGF0IFJFV1JJVEUgYSBzdGFnZWQgZmlsZSwga2V5ZWQgYnkgdGhlIG5hbm8tc3RhZ2VkIHBhdHRlcm4gdGhhdCBjbGFpbXMgaXQuXG4gKlxuICogYGxpbnQ6Zml4YCBhbmQgYGZvcm1hdGAgYm90aCByZXdyaXRlIHRoZSBmaWxlLCBzbyB0aGV5IGhhdmUgdG8gc2hhcmUgb25lIGtleTogbmFuby1zdGFnZWQgcnVucyBpdHNcbiAqIHBlci1wYXR0ZXJuIGdyb3VwcyB1bmRlciBgUHJvbWlzZS5hbGxgIChgcnVuKClgIGluIGBuYW5vLXN0YWdlZC9saWIvY21kLXJ1bm5lci5qc2ApLCBhbmQgc2VxdWVuY2VzIG9ubHlcbiAqIHRoZSBjb21tYW5kcyBJTlNJREUgYSBzaW5nbGUga2V5J3MgYXJyYXkgKGBydW5UYXNrKClgLCBhIGBmb3IgLi4uIG9mIGF3YWl0YCkuIFNwbGl0IGFjcm9zcyB0d28ga2V5cyB0aGV5XG4gKiByYWNlLCB3aGljaGV2ZXIgZmluaXNoZXMgbGFzdCB3aW5zLCBhbmQgdGhlIGNvbW1pdCBzdGFnZXMgYnl0ZXMgdGhhdCBuZWl0aGVyIHRvb2wgd291bGQgaGF2ZSBwcm9kdWNlZCBvblxuICogaXRzIG93bi5cbiAqXG4gKiBTbyBkbyBOT1QgZXhwcmVzcyBhIGRpcmVjdG9yeSBleGNsdXNpb24gYnkgZ2l2aW5nIG9uZSBvZiB0aGVzZSB0d28gaXRzIG93biBuZWdhdGVkIGtleSAtLSB0aGF0IHNpbGVudGx5XG4gKiB0YWtlcyB0aGUgb3JkZXJpbmcgYXdheS4gQW4gZXhjbHVzaW9uIGJlbG9uZ3MgaW4gdGhlIGV4Y2x1ZGVkIHRvb2wncyBvd24gY29uZmlnLCB3aGVyZSBFU0xpbnQnc1xuICogYGdsb2JhbElnbm9yZXNgIGFscmVhZHkgcHV0cyBpdDogYSBwYXRoIEVTTGludCBpZ25vcmVzIGlzIHJlcG9ydGVkIGFzIGEgd2FybmluZyBhbmQgZXhpdHMgMCB3aGVuIGl0IGlzXG4gKiBwYXNzZWQgZXhwbGljaXRseSwgc28gaXQgY29zdHMgYSBjb25zb2xlIGxpbmUgcmF0aGVyIHRoYW4gYSBmYWlsZWQgY29tbWl0IGFuZCBuZWVkcyBubyBrZXkgaGVyZS5cbiAqL1xuY29uc3QgV1JJVEVSX1RBU0tTOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSBzdHJpbmdbXT4+ID0ge1xuICAnKi57dHMsdHN4LG10c30nOiBbXG4gICAgYCR7UEFDS0FHRV9NQU5BR0VSX1JVTl9DT01NQU5EfSBsaW50OmZpeCAtLWAsXG4gICAgYCR7UEFDS0FHRV9NQU5BR0VSX1JVTl9DT01NQU5EfSBmb3JtYXQgLS1gXG4gIF0sXG4gICcqLm1kJzogW1xuICAgIGAke1BBQ0tBR0VfTUFOQUdFUl9SVU5fQ09NTUFORH0gbGludDptZDpmaXggLS1gXG4gIF1cbn07XG5cbi8qKlxuICogTmFuby1zdGFnZWQgY29uZmlndXJhdGlvbiB0aGF0IHJ1bnMgZmlsZS1iYXNlZCBsaW50LCBmb3JtYXQsIGFuZCBzcGVsbGNoZWNrIG9uIHN0YWdlZCBmaWxlcy5cbiAqXG4gKiBPbmx5IGluY2x1ZGVzIHRvb2xzIHRoYXQgY2FuIG9wZXJhdGUgb24gaW5kaXZpZHVhbCBmaWxlcy4gV2hvbGUtcHJvamVjdCBjaGVja3NcbiAqIChUeXBlU2NyaXB0IGNvbXBpbGF0aW9uLCB1bml0IHRlc3RzKSBhcmUgbGVmdCB0byBDSS5cbiAqXG4gKiBDb21tYW5kcyBydW4gdGhyb3VnaCB0aGUgcGFja2FnZSBtYW5hZ2VyIHRoYXQgb3ducyB0aGUgdHJlZSBcdTIwMTQgYG5wbSBydW4gLi4uIC0tYCwgYGJ1biBydW4gLi4uIC0tYCwgYW5kXG4gKiBzbyBvbiBcdTIwMTQgc28gbmFuby1zdGFnZWQgZmlsZSBwYXRocyBhcmUgZm9yd2FyZGVkIGFzIENMSSBhcmd1bWVudHMsIGJhdGNoZWQgdG8gZml0IHRoZSBjb21tYW5kIGxpbmUgKHNlZVxuICogYHRvQmF0Y2hlZFRhc2tgKS5cbiAqXG4gKiBTcGVsbGNoZWNrIGlzIHBhcnRpdGlvbmVkIGFjcm9zcyB0aGUga2V5cyByYXRoZXIgdGhhbiBnaXZlbiBhIGNhdGNoLWFsbCBgJyonYCBrZXkgKHNlZVxuICogYHBhcnRpdGlvblNwZWxsY2hlY2tgKS4gQSByZXBvIGFkZGluZyBhIGZpbGUtcmV3cml0aW5nIHRhc2sgb2YgaXRzIG93biBwYXNzZXMgaXQgdG9cbiAqIHtAbGluayBnZXROYW5vU3RhZ2VkQ29uZmlnfSBhcyBgYWRkaXRpb25hbFdyaXRlclRhc2tzYCByYXRoZXIgdGhhbiBzcHJlYWRpbmcgdGhpcyBvYmplY3QgYW5kIGFkZGluZyBhIGtleSxcbiAqIHdoaWNoIHdvdWxkIHJlaW50cm9kdWNlIHRoZSBvdmVybGFwIGZvciB0aGF0IGtleSdzIGZpbGVzLlxuICovXG5leHBvcnQgY29uc3Qgb2JzaWRpYW5EZXZVdGlsc0NvbmZpZzogTmFub1N0YWdlZENvbmZpZyA9IHBhcnRpdGlvblNwZWxsY2hlY2soV1JJVEVSX1RBU0tTKTtcblxuY29uc3QgTkFOT19TVEFHRURfRU5WX1ZBUklBQkxFID0gJ05BTk9fU1RBR0VEJztcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgbmFuby1zdGFnZWQgY29uZmlndXJhdGlvbiB0byB1c2UsIGhvbm9yaW5nIGEgcGVyLWRldmVsb3BlciBvcHQtb3V0LlxuICpcbiAqIExvYWRzIGEgZ2l0aWdub3JlZCBgLmVudmAgaWYgcHJlc2VudCwgdGhlbiBcdTIwMTQgd2hlbiBgTkFOT19TVEFHRURgIGlzIHNldCB0byBhbiBvZmYgdmFsdWUgKGAwYCwgYGZhbHNlYCxcbiAqIGBvZmZgLCBvciBgbm9gKSBcdTIwMTQgcHJpbnRzIGEgbm90aWNlIGFuZCBleGl0cyB0aGUgcHJvY2VzcyBzdWNjZXNzZnVsbHkgc28gdGhlIHByZS1jb21taXQgY2hlY2tzIGFyZVxuICogc2tpcHBlZC4gVGhpcyBtaXJyb3JzIGh1c2t5J3Mgb3duIGBIVVNLWT0wYCBzd2l0Y2gsIGJ1dCBzY29wZWQgdG8gdGhlIG5hbm8tc3RhZ2VkIHN0ZXAgKHNvIHRoZVxuICogY29tbWl0LW1zZyBob29rIHN0aWxsIHJ1bnMpLiBPdGhlcndpc2UgaXQgcmV0dXJucyB7QGxpbmsgb2JzaWRpYW5EZXZVdGlsc0NvbmZpZ30sIG9yIFx1MjAxNCB3aGVuXG4gKiBgYWRkaXRpb25hbFdyaXRlclRhc2tzYCBhcmUgZ2l2ZW4gXHUyMDE0IHRoZSBzYW1lIGNvbmZpZ3VyYXRpb24gcmUtcGFydGl0aW9uZWQgd2l0aCB0aG9zZSB3cml0ZXJzIGFkZGVkLlxuICpcbiAqIGBOQU5PX1NUQUdFRGAgaXMgbm90IGFuIG5wbSBzY3JpcHQsIHNvIGl0IGNhcnJpZXMgaXRzIG93biBzd2l0Y2ggcmF0aGVyIHRoYW4gdGhlIHNjcmlwdC1uYW1lLWRlcml2ZWQgb25lXG4gKiBldmVyeSBucG0gc2NyaXB0IGdldHMgXHUyMDE0IGJ1dCBib3RoIHNoYXJlIHRoZSBzYW1lIG5vdGlvbiBvZiBhbiBvZmYgdmFsdWUsIHZpYSB7QGxpbmsgaXNFbnZWYXJpYWJsZU9mZn0uXG4gKlxuICogVGhpcyBpcyBhIGZ1bmN0aW9uIHJhdGhlciB0aGFuIG1vZHVsZS1sZXZlbCBjb2RlIHNvIGltcG9ydGluZyB0aGUgcGFja2FnZSBiYXJyZWwgbmV2ZXIgdHJpZ2dlcnMgdGhlXG4gKiBgLmVudmAgcmVhZCBvciB0aGUgcHJvY2VzcyBleGl0OyBjYWxsIGl0IGZyb20gdGhlIHRoaW4gYHNjcmlwdHMvbmFuby1zdGFnZWQtY29uZmlnLnRzYCBlbnRyeS4gUmVzb2x2aW5nIHRoZVxuICogcGFja2FnZSBtYW5hZ2VyIGlzIHRoZSBvbmUgdGhpbmcgdGhhdCBkb2VzIHJ1biBhdCBtb2R1bGUgc2NvcGUsIGFuZCBpdCBkb2VzIG5laXRoZXIgb2YgdGhvc2UgdHdvXG4gKiB0aGluZ3MgXHUyMDE0IGl0IG9ubHkgcHJvYmVzIGZvciBhIGxvY2tmaWxlLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbmFsIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgbmFuby1zdGFnZWQgdGFzayBjb25maWd1cmF0aW9uLiBEb2VzIG5vdCByZXR1cm4gd2hlbiB0aGUgb3B0LW91dCBpcyBhY3RpdmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROYW5vU3RhZ2VkQ29uZmlnKG9wdGlvbnM/OiBHZXROYW5vU3RhZ2VkQ29uZmlnT3B0aW9ucyk6IE5hbm9TdGFnZWRDb25maWcge1xuICBsb2FkRW52RmlsZUlmRXhpc3RzKCk7XG5cbiAgaWYgKGlzRW52VmFyaWFibGVPZmYoTkFOT19TVEFHRURfRU5WX1ZBUklBQkxFKSkge1xuICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGBuYW5vLXN0YWdlZDogc2tpcHBlZCAoJHtOQU5PX1NUQUdFRF9FTlZfVkFSSUFCTEV9IGlzIG9mZikuXFxuYCk7XG4gICAgcHJvY2Vzcy5leGl0KDApO1xuICB9XG5cbiAgY29uc3QgYWRkaXRpb25hbFdyaXRlclRhc2tzID0gb3B0aW9ucz8uYWRkaXRpb25hbFdyaXRlclRhc2tzID8/IHt9O1xuICBpZiAoT2JqZWN0LmtleXMoYWRkaXRpb25hbFdyaXRlclRhc2tzKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gb2JzaWRpYW5EZXZVdGlsc0NvbmZpZztcbiAgfVxuXG4gIGNvbnN0IGR1cGxpY2F0ZVBhdHRlcm4gPSBPYmplY3Qua2V5cyhhZGRpdGlvbmFsV3JpdGVyVGFza3MpLmZpbmQoKHBhdHRlcm4pID0+IE9iamVjdC5oYXNPd24oV1JJVEVSX1RBU0tTLCBwYXR0ZXJuKSk7XG4gIGlmIChkdXBsaWNhdGVQYXR0ZXJuICE9PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG5hbm8tc3RhZ2VkIHdyaXRlciBwYXR0ZXJuICcke2R1cGxpY2F0ZVBhdHRlcm59JyBpcyBhbHJlYWR5IGEgc2hhcmVkIHdyaXRlciBwYXR0ZXJuLmApO1xuICB9XG5cbiAgcmV0dXJuIHBhcnRpdGlvblNwZWxsY2hlY2soeyAuLi5XUklURVJfVEFTS1MsIC4uLmFkZGl0aW9uYWxXcml0ZXJUYXNrcyB9KTtcbn1cblxuLyoqXG4gKiBTcGxpdHMgY29tbWFuZCBhcmd1bWVudHMgaW50byBiYXRjaGVzIHRoYXQgZWFjaCBmaXQgb25lIGNvbW1hbmQgbGluZSBhZnRlciBhIGdpdmVuIHByZWZpeC5cbiAqXG4gKiBFYWNoIGFyZ3VtZW50IGlzIGNvc3RlZCBhcyBuYW5vLXN0YWdlZCBwYXNzZXMgaXQgb24gV2luZG93cyBcdTIwMTQgcXVvdGVkLCB0aGVuIGBeYC1lc2NhcGVkIGJ5IGBjbWQuZXhlYCdzXG4gKiBydWxlcyBcdTIwMTQgdGhyb3VnaCB7QGxpbmsgZ2V0RWZmZWN0aXZlQ29tbWFuZExpbmVMZW5ndGh9LCBhbmQgdGhlIGJ1ZGdldCBpcyB7QGxpbmsgZ2V0TWF4QmF0Y2hDb21tYW5kTGVuZ3RofSxcbiAqIHdoaWNoIGFscmVhZHkgaG9sZHMgYmFjayB0aGUgcmVzZXJ2ZSBmb3IgdGhlIGBucG1gIFx1MjE5MiBgY21kLmV4ZWAgXHUyMTkyIGAuYmluYCBzaGltIGNoYWluIHJlLWV4cGFuZGluZyB0aGVcbiAqIGFyZ3VtZW50cy4gQW4gYXJndW1lbnQgdG9vIGxvbmcgZm9yIGFueSBiYXRjaCBzdGlsbCBnZXRzIGEgYmF0Y2ggb2YgaXRzIG93bjogaXQgZmFpbHMgbG91ZGx5IHRoZXJlLCB3aGljaFxuICogZHJvcHBpbmcgaXQgd291bGQgbm90LlxuICpcbiAqIEBwYXJhbSBwcmVmaXggLSBUaGUgY29tbWFuZCB0aGUgYXJndW1lbnRzIGFyZSBhcHBlbmRlZCB0by5cbiAqIEBwYXJhbSBjb21tYW5kQXJndW1lbnRzIC0gVGhlIGFyZ3VtZW50cyB0byBzcGxpdC5cbiAqIEByZXR1cm5zIFRoZSBiYXRjaGVzLCBpbiBvcmRlciwgdG9nZXRoZXIgaG9sZGluZyBldmVyeSBhcmd1bWVudCBvbmNlLlxuICovXG5mdW5jdGlvbiBiYXRjaENvbW1hbmRBcmd1bWVudHMocHJlZml4OiBzdHJpbmcsIGNvbW1hbmRBcmd1bWVudHM6IHJlYWRvbmx5IHN0cmluZ1tdKTogc3RyaW5nW11bXSB7XG4gIGNvbnN0IGVtcHR5TGVuZ3RoID0gZ2V0RWZmZWN0aXZlQ29tbWFuZExpbmVMZW5ndGgoJycpO1xuICBjb25zdCBidWRnZXQgPSBnZXRNYXhCYXRjaENvbW1hbmRMZW5ndGgoKSAtIEVYRUNVVEFCTEVfUEFUSF9SRVNFUlZFIC0gZ2V0RWZmZWN0aXZlQ29tbWFuZExpbmVMZW5ndGgocHJlZml4KTtcbiAgY29uc3QgYmF0Y2hlczogc3RyaW5nW11bXSA9IFtdO1xuICBsZXQgYmF0Y2g6IHN0cmluZ1tdID0gW107XG4gIGxldCBiYXRjaExlbmd0aCA9IDA7XG5cbiAgZm9yIChjb25zdCBjb21tYW5kQXJndW1lbnQgb2YgY29tbWFuZEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGFyZ3VtZW50TGVuZ3RoID0gZ2V0RWZmZWN0aXZlQ29tbWFuZExpbmVMZW5ndGgoYCBcIiR7Y29tbWFuZEFyZ3VtZW50fVwiYCkgLSBlbXB0eUxlbmd0aDtcbiAgICBpZiAoYmF0Y2gubGVuZ3RoID4gMCAmJiBiYXRjaExlbmd0aCArIGFyZ3VtZW50TGVuZ3RoID4gYnVkZ2V0KSB7XG4gICAgICBiYXRjaGVzLnB1c2goYmF0Y2gpO1xuICAgICAgYmF0Y2ggPSBbXTtcbiAgICAgIGJhdGNoTGVuZ3RoID0gMDtcbiAgICB9XG4gICAgYmF0Y2gucHVzaChjb21tYW5kQXJndW1lbnQpO1xuICAgIGJhdGNoTGVuZ3RoICs9IGFyZ3VtZW50TGVuZ3RoO1xuICB9XG5cbiAgaWYgKGJhdGNoLmxlbmd0aCA+IDApIHtcbiAgICBiYXRjaGVzLnB1c2goYmF0Y2gpO1xuICB9XG5cbiAgcmV0dXJuIGJhdGNoZXM7XG59XG5cbi8qKlxuICogQnVpbGRzIGEgbmFuby1zdGFnZWQgY29uZmlndXJhdGlvbiBpbiB3aGljaCBzcGVsbGNoZWNrIG5ldmVyIHJlYWRzIGEgZmlsZSB3aGlsZSBhbm90aGVyIHRhc2sgcmV3cml0ZXMgaXQuXG4gKlxuICogVGhlIHNhbWUgYFByb21pc2UuYWxsYCB0aGF0IGZvcmNlcyB0d28gd3JpdGVycyBpbnRvIG9uZSBrZXkgbWFrZXMgYSBjYXRjaC1hbGwgYCcqJ2Agc3BlbGxjaGVjayBrZXkgcnVuXG4gKiBDT05DVVJSRU5UTFkgd2l0aCBldmVyeSB3cml0ZXIga2V5LCBzbyBjc3BlbGwgd291bGQgcmVhZCBhIGZpbGUgdGhhdCBFU0xpbnQgb3IgZHByaW50IGlzIHJld3JpdGluZyBpblxuICogcGxhY2UgLS0gYSBzcHVyaW91cyBmaW5kaW5nIG9uIGEgaGFsZi13cml0dGVuIGZpbGUsIG9yIGEgcGFzcyBvdmVyIGNvbnRlbnQgdGhhdCBpcyBub3Qgd2hhdCBnZXRzXG4gKiBjb21taXR0ZWQuIFNvIHRoZSBzdGFnZWQgZmlsZXMgYXJlIFBBUlRJVElPTkVEIGluc3RlYWQ6XG4gKlxuICogLSBldmVyeSB3cml0ZXIga2V5IGdldHMgc3BlbGxjaGVjayBhcHBlbmRlZCBhcyBpdHMgTEFTVCBjb21tYW5kLCBzbyBpdCByZWFkcyB0aGF0IGtleSdzIGZpbGVzIGFmdGVyIHRoZXlcbiAqICAgaGF2ZSBiZWVuIHJld3JpdHRlbjtcbiAqIC0gb25lIGNvbXBsZW1lbnQga2V5IHNwZWxsY2hlY2tzIGV4YWN0bHkgdGhlIGZpbGVzIG5vIHdyaXRlciBrZXkgY2xhaW1zLlxuICpcbiAqIFRoZSBjb21wbGVtZW50IGlzIHdyaXR0ZW4gaW4gbmFuby1zdGFnZWQncyBvd24gZ2xvYiBkaWFsZWN0LCB3aGljaCBjb21waWxlcyBgISguLi4pYCB0byBhIGxvb2thaGVhZCB0aGF0XG4gKiBpcyBOT1QgYW5jaG9yZWQgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aDogYCEoKi5tZCkqYCB3b3VsZCBleGNsdWRlIGBub3Rlcy5tZC5iYWtgIHRvby4gQSBuZXN0ZWQgYCEoPylgXG4gKiBjb21waWxlcyB0byBgKD8hLilgLCB3aGljaCBJUyBhbiBlbmQgYW5jaG9yLCBzbyBlYWNoIGFsdGVybmF0aXZlIGlzIHN1ZmZpeGVkIHdpdGggaXQuIEEgd3JpdGVyIHBhdHRlcm5cbiAqIGNvbnRhaW5pbmcgYC9gIHdvdWxkIHN3aXRjaCBuYW5vLXN0YWdlZCBpbnRvIGdsb2JzdGFyIG1vZGUsIHdoZXJlIGAqYCBzdG9wcyBjcm9zc2luZyBkaXJlY3RvcmllcyBhbmQgdGhlXG4gKiBjb25zdHJ1Y3Rpb24gbm8gbG9uZ2VyIGhvbGRzIC0tIGhlbmNlIHRoZSB0aHJvdy4gVGhlIHVuaXQgdGVzdCBwaW5zIHRoZSBwYXJ0aXRpb24gYWdhaW5zdCB0aGUgaW5zdGFsbGVkXG4gKiBuYW5vLXN0YWdlZCBjb21waWxlciwgc28gYSByZWxlYXNlIHRoYXQgY2hhbmdlcyBpdHMgZGlhbGVjdCBmYWlscyB0aGVyZSByYXRoZXIgdGhhbiBpbiBhIGNvbW1pdC5cbiAqXG4gKiBAcGFyYW0gd3JpdGVyVGFza3MgLSBUaGUgZmlsZS1yZXdyaXRpbmcgdGFza3MsIGtleWVkIGJ5IHRoZSBwYXR0ZXJuIHRoYXQgY2xhaW1zIHRoZWlyIGZpbGVzLlxuICogQHJldHVybnMgVGhlIGNvbmZpZ3VyYXRpb24sIHdpdGggdGhlIHNwZWxsY2hlY2sgc3RlcCBwYXJ0aXRpb25lZCBhY3Jvc3MgdGhlIGtleXMuXG4gKi9cbmZ1bmN0aW9uIHBhcnRpdGlvblNwZWxsY2hlY2sod3JpdGVyVGFza3M6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHN0cmluZ1tdPj4pOiBOYW5vU3RhZ2VkQ29uZmlnIHtcbiAgY29uc3QgcGF0dGVybnMgPSBPYmplY3Qua2V5cyh3cml0ZXJUYXNrcyk7XG4gIGNvbnN0IHBhdHRlcm5XaXRoU2xhc2ggPSBwYXR0ZXJucy5maW5kKChwYXR0ZXJuKSA9PiBwYXR0ZXJuLmluY2x1ZGVzKCcvJykpO1xuICBpZiAocGF0dGVybldpdGhTbGFzaCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBuYW5vLXN0YWdlZCB3cml0ZXIgcGF0dGVybiAnJHtwYXR0ZXJuV2l0aFNsYXNofScgY29udGFpbnMgJy8nLCB3aGljaCB0aGUgc3BlbGxjaGVjayBwYXJ0aXRpb24gY2Fubm90IGV4cHJlc3MuYCk7XG4gIH1cblxuICBjb25zdCBjb21wbGVtZW50UGF0dGVybiA9IGAhKCR7cGF0dGVybnMubWFwKChwYXR0ZXJuKSA9PiBgJHtwYXR0ZXJufSEoPylgKS5qb2luKCd8Jyl9KSpgO1xuICBjb25zdCBjb25maWc6IE5hbm9TdGFnZWRDb25maWcgPSB7XG4gICAgW2NvbXBsZW1lbnRQYXR0ZXJuXTogdG9CYXRjaGVkVGFzayhbU1BFTExDSEVDS19DT01NQU5EXSlcbiAgfTtcblxuICBmb3IgKGNvbnN0IFtwYXR0ZXJuLCBjb21tYW5kc10gb2YgT2JqZWN0LmVudHJpZXMod3JpdGVyVGFza3MpKSB7XG4gICAgY29uZmlnW3BhdHRlcm5dID0gdG9CYXRjaGVkVGFzayhbLi4uY29tbWFuZHMsIFNQRUxMQ0hFQ0tfQ09NTUFORF0pO1xuICB9XG5cbiAgcmV0dXJuIGNvbmZpZztcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSB0YXNrIHRoYXQgcnVucyBlYWNoIGNvbW1hbmQgb3ZlciBldmVyeSBzdGFnZWQgZmlsZSBpdCByZWNlaXZlcywgaW4gYXMgbWFueSBiYXRjaGVzIGFzIHRoZSBjb21tYW5kXG4gKiBsaW5lIG5lZWRzLlxuICpcbiAqIG5hbm8tc3RhZ2VkIGFwcGVuZHMgYSBzdHJpbmcgdGFzaydzIGZpbGVzIHRvIE9ORSBjb21tYW5kLCBzbyBhIGNvbW1pdCBzdGFnaW5nIGEgZmV3IGh1bmRyZWQgZmlsZXMgcmFuXG4gKiBgbnBtIHJ1biBsaW50OmZpeCAtLSA8ZXZlcnkgcGF0aD5gIGFuZCBmYWlsZWQgb24gV2luZG93cyB3aXRoIGBUaGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nLmAsIHJlZnVzaW5nXG4gKiBleGFjdGx5IHRoZSB3aG9sZS1yZXBvIGNvbW1pdHMgdGhhdCBtb3N0IG5lZWQgdGhlIGhvb2suIEEgZnVuY3Rpb24tdmFsdWVkIHRhc2sgYnVpbGRzIGl0cyBvd24gY29tbWFuZHNcbiAqIGluc3RlYWQsIGFuZCB0aGVzZSBhcmUgYmF0Y2hlZCBhZ2FpbnN0IHRoZSBzYW1lIGJ1ZGdldCBgZXhlYygpYCB1c2VzIChzZWUgYGJhdGNoQ29tbWFuZEFyZ3VtZW50c2ApLlxuICpcbiAqIFRoZSBjb21tYW5kcyBrZWVwIHRoZWlyIG9yZGVyOiBldmVyeSBiYXRjaCBvZiB0aGUgZmlyc3QgY29tbWFuZCBydW5zIGJlZm9yZSBhbnkgYmF0Y2ggb2YgdGhlIHNlY29uZCxcbiAqIGJlY2F1c2UgbmFuby1zdGFnZWQgcnVucyBvbmUga2V5J3MgY29tbWFuZHMgb25lIGFmdGVyIGFub3RoZXIsIHNvIGEgd3JpdGVyIHN0aWxsIGZpbmlzaGVzIGJlZm9yZSB0aGUgbmV4dFxuICogd3JpdGVyLCBhbmQgc3BlbGxjaGVjayBzdGlsbCByZWFkcyB0aGUgcmV3cml0dGVuIGZpbGVzLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kcyAtIFRoZSBjb21tYW5kIHByZWZpeGVzLCBpbiB0aGUgb3JkZXIgdGhleSBydW4uXG4gKiBAcmV0dXJucyBUaGUgdGFzay5cbiAqL1xuZnVuY3Rpb24gdG9CYXRjaGVkVGFzayhjb21tYW5kczogcmVhZG9ubHkgc3RyaW5nW10pOiBOYW5vU3RhZ2VkVGFzayB7XG4gIHJldHVybiAoeyBmaWxlbmFtZXMgfSkgPT4ge1xuICAgIGNvbnN0IGNvbW1hbmRBcmd1bWVudHMgPSBmaWxlbmFtZXMubWFwKChmaWxlbmFtZSkgPT4gdG9Db21tYW5kQXJndW1lbnQoZmlsZW5hbWUpKTtcbiAgICByZXR1cm4gY29tbWFuZHMuZmxhdE1hcCgoY29tbWFuZCkgPT4gYmF0Y2hDb21tYW5kQXJndW1lbnRzKGNvbW1hbmQsIGNvbW1hbmRBcmd1bWVudHMpLm1hcCgoYmF0Y2gpID0+IGAke2NvbW1hbmR9ICR7YmF0Y2guam9pbignICcpfWApKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBUdXJucyBhIHN0YWdlZCBmaWxlJ3MgYWJzb2x1dGUgcGF0aCBpbnRvIHRoZSBhcmd1bWVudCBhIGJhdGNoZWQgdGFzayBwYXNzZXMgZm9yIGl0LlxuICpcbiAqIFRoZSBwYXRoIGlzIG1hZGUgcmVsYXRpdmUgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LCB3aGVyZSBuYW5vLXN0YWdlZCBhbmQgdGhlIHRhc2sgYm90aCBydW4sIHdoaWNoIHJvdWdobHlcbiAqIGhhbHZlcyBpdHMgbGVuZ3RoIGFuZCBzbyB0aGUgbnVtYmVyIG9mIGJhdGNoZXM7IGEgcGF0aCBvdXRzaWRlIGl0IHN0YXlzIGFic29sdXRlLiBBIHJlbGF0aXZlIHBhdGggc3RhcnRpbmdcbiAqIHdpdGggYC1gIGdldHMgYC4vYCwgc28gbm8gdG9vbCByZWFkcyBpdCBhcyBhbiBvcHRpb24uXG4gKlxuICogV2hpdGVzcGFjZSBhbmQgcXVvdGVzIGJlY29tZSBgP2AsIGJlY2F1c2UgbmFuby1zdGFnZWQncyB0b2tlbml6ZXIgY2Fubm90IGNhcnJ5IHRoZW0gKHNlZVxuICoge0BsaW5rIFRPS0VOSVpFUl9VTlNBRkVfQ0hBUkFDVEVSU19SRUdfRVhQfSkuIEV2ZXJ5IHRvb2wgdGhlIHRhc2tzIHJ1biAoRVNMaW50LCBkcHJpbnQsIGNzcGVsbCxcbiAqIG1hcmtkb3dubGludC1jbGkyKSB0YWtlcyBpdHMgcGF0aHMgYXMgZ2xvYnMsIGFuZCBgP2AgbWF0Y2hlcyBleGFjdGx5IHRoZSBvbmUgY2hhcmFjdGVyIGl0IHJlcGxhY2VkLCBzbyB0aGVcbiAqIGZpbGUgaXMgc3RpbGwgZm91bmQ7IGEgc2libGluZyBkaWZmZXJpbmcgb25seSBpbiB0aGF0IGNoYXJhY3RlciB3b3VsZCBtYXRjaCB0b28sIHdoaWNoIGNvc3RzIGEgbGludCBvZiBhblxuICogZXh0cmEgZmlsZSwgbm90IGEgbWlzc2VkIG9uZS5cbiAqXG4gKiBAcGFyYW0gZmlsZW5hbWUgLSBUaGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgc3RhZ2VkIGZpbGUuXG4gKiBAcmV0dXJucyBUaGUgYXJndW1lbnQuXG4gKi9cbmZ1bmN0aW9uIHRvQ29tbWFuZEFyZ3VtZW50KGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCByZWxhdGl2ZVBhdGggPSByZWxhdGl2ZShwcm9jZXNzLmN3ZCgpLCBmaWxlbmFtZSk7XG4gIGxldCBjb21tYW5kQXJndW1lbnQgPSAocmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoJy4uJykgfHwgaXNBYnNvbHV0ZShyZWxhdGl2ZVBhdGgpID8gZmlsZW5hbWUgOiByZWxhdGl2ZVBhdGgpLnJlcGxhY2VBbGwoJ1xcXFwnLCAnLycpO1xuICBpZiAoY29tbWFuZEFyZ3VtZW50LnN0YXJ0c1dpdGgoJy0nKSkge1xuICAgIGNvbW1hbmRBcmd1bWVudCA9IGAuLyR7Y29tbWFuZEFyZ3VtZW50fWA7XG4gIH1cbiAgcmV0dXJuIGNvbW1hbmRBcmd1bWVudC5yZXBsYWNlQWxsKFRPS0VOSVpFUl9VTlNBRkVfQ0hBUkFDVEVSU19SRUdfRVhQLCAnPycpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsdUJBR087QUFDUCwwQkFBb0I7QUFFcEIsd0JBR087QUFDUCxrQkFHTztBQUNQLDZCQUE0QztBQTJDNUMsTUFBTSxrQ0FBOEIsb0RBQTRCLEVBQUUsS0FBSyxHQUFHO0FBRTFFLE1BQU0scUJBQXFCLEdBQUcsMkJBQTJCO0FBUXpELE1BQU0sMEJBQTBCO0FBU2hDLE1BQU0sc0NBQXNDO0FBZ0I1QyxNQUFNLGVBQTREO0FBQUEsRUFDaEUsa0JBQWtCO0FBQUEsSUFDaEIsR0FBRywyQkFBMkI7QUFBQSxJQUM5QixHQUFHLDJCQUEyQjtBQUFBLEVBQ2hDO0FBQUEsRUFDQSxRQUFRO0FBQUEsSUFDTixHQUFHLDJCQUEyQjtBQUFBLEVBQ2hDO0FBQ0Y7QUFpQk8sTUFBTSx5QkFBMkMsb0JBQW9CLFlBQVk7QUFFeEYsTUFBTSwyQkFBMkI7QUFzQjFCLFNBQVMsb0JBQW9CLFNBQXdEO0FBQzFGLDZDQUFvQjtBQUVwQixVQUFJLG9DQUFpQix3QkFBd0IsR0FBRztBQUM5Qyx3QkFBQUEsUUFBUSxPQUFPLE1BQU0seUJBQXlCLHdCQUF3QjtBQUFBLENBQWE7QUFDbkYsd0JBQUFBLFFBQVEsS0FBSyxDQUFDO0FBQUEsRUFDaEI7QUFFQSxRQUFNLHdCQUF3QixTQUFTLHlCQUF5QixDQUFDO0FBQ2pFLE1BQUksT0FBTyxLQUFLLHFCQUFxQixFQUFFLFdBQVcsR0FBRztBQUNuRCxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sbUJBQW1CLE9BQU8sS0FBSyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsWUFBWSxPQUFPLE9BQU8sY0FBYyxPQUFPLENBQUM7QUFDbEgsTUFBSSxxQkFBcUIsUUFBVztBQUNsQyxVQUFNLElBQUksTUFBTSwrQkFBK0IsZ0JBQWdCLHVDQUF1QztBQUFBLEVBQ3hHO0FBRUEsU0FBTyxvQkFBb0IsRUFBRSxHQUFHLGNBQWMsR0FBRyxzQkFBc0IsQ0FBQztBQUMxRTtBQWVBLFNBQVMsc0JBQXNCLFFBQWdCLGtCQUFpRDtBQUM5RixRQUFNLGtCQUFjLDJDQUE4QixFQUFFO0FBQ3BELFFBQU0sYUFBUyxzQ0FBeUIsSUFBSSw4QkFBMEIsMkNBQThCLE1BQU07QUFDMUcsUUFBTSxVQUFzQixDQUFDO0FBQzdCLE1BQUksUUFBa0IsQ0FBQztBQUN2QixNQUFJLGNBQWM7QUFFbEIsYUFBVyxtQkFBbUIsa0JBQWtCO0FBQzlDLFVBQU0scUJBQWlCLDJDQUE4QixLQUFLLGVBQWUsR0FBRyxJQUFJO0FBQ2hGLFFBQUksTUFBTSxTQUFTLEtBQUssY0FBYyxpQkFBaUIsUUFBUTtBQUM3RCxjQUFRLEtBQUssS0FBSztBQUNsQixjQUFRLENBQUM7QUFDVCxvQkFBYztBQUFBLElBQ2hCO0FBQ0EsVUFBTSxLQUFLLGVBQWU7QUFDMUIsbUJBQWU7QUFBQSxFQUNqQjtBQUVBLE1BQUksTUFBTSxTQUFTLEdBQUc7QUFDcEIsWUFBUSxLQUFLLEtBQUs7QUFBQSxFQUNwQjtBQUVBLFNBQU87QUFDVDtBQXdCQSxTQUFTLG9CQUFvQixhQUE0RTtBQUN2RyxRQUFNLFdBQVcsT0FBTyxLQUFLLFdBQVc7QUFDeEMsUUFBTSxtQkFBbUIsU0FBUyxLQUFLLENBQUMsWUFBWSxRQUFRLFNBQVMsR0FBRyxDQUFDO0FBQ3pFLE1BQUkscUJBQXFCLFFBQVc7QUFDbEMsVUFBTSxJQUFJLE1BQU0sK0JBQStCLGdCQUFnQixnRUFBZ0U7QUFBQSxFQUNqSTtBQUVBLFFBQU0sb0JBQW9CLEtBQUssU0FBUyxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sTUFBTSxFQUFFLEtBQUssR0FBRyxDQUFDO0FBQ3BGLFFBQU0sU0FBMkI7QUFBQSxJQUMvQixDQUFDLGlCQUFpQixHQUFHLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQztBQUFBLEVBQ3pEO0FBRUEsYUFBVyxDQUFDLFNBQVMsUUFBUSxLQUFLLE9BQU8sUUFBUSxXQUFXLEdBQUc7QUFDN0QsV0FBTyxPQUFPLElBQUksY0FBYyxDQUFDLEdBQUcsVUFBVSxrQkFBa0IsQ0FBQztBQUFBLEVBQ25FO0FBRUEsU0FBTztBQUNUO0FBa0JBLFNBQVMsY0FBYyxVQUE2QztBQUNsRSxTQUFPLENBQUMsRUFBRSxVQUFVLE1BQU07QUFDeEIsVUFBTSxtQkFBbUIsVUFBVSxJQUFJLENBQUMsYUFBYSxrQkFBa0IsUUFBUSxDQUFDO0FBQ2hGLFdBQU8sU0FBUyxRQUFRLENBQUMsWUFBWSxzQkFBc0IsU0FBUyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sSUFBSSxNQUFNLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztBQUFBLEVBQ3ZJO0FBQ0Y7QUFrQkEsU0FBUyxrQkFBa0IsVUFBMEI7QUFDbkQsUUFBTSxtQkFBZSwyQkFBUyxvQkFBQUEsUUFBUSxJQUFJLEdBQUcsUUFBUTtBQUNyRCxNQUFJLG1CQUFtQixhQUFhLFdBQVcsSUFBSSxTQUFLLDZCQUFXLFlBQVksSUFBSSxXQUFXLGNBQWMsV0FBVyxNQUFNLEdBQUc7QUFDaEksTUFBSSxnQkFBZ0IsV0FBVyxHQUFHLEdBQUc7QUFDbkMsc0JBQWtCLEtBQUssZUFBZTtBQUFBLEVBQ3hDO0FBQ0EsU0FBTyxnQkFBZ0IsV0FBVyxxQ0FBcUMsR0FBRztBQUM1RTsiLAogICJuYW1lcyI6IFsicHJvY2VzcyJdCn0K
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL25hbm8tc3RhZ2VkLWNvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFNoYXJlZCBuYW5vLXN0YWdlZCBjb25maWd1cmF0aW9uIGZvciBwcmUtY29tbWl0IGhvb2tzLlxuICovXG5cbmltcG9ydCB7XG4gIGlzQWJzb2x1dGUsXG4gIHJlbGF0aXZlXG59IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG5pbXBvcnQge1xuICBpc0VudlZhcmlhYmxlT2ZmLFxuICBsb2FkRW52RmlsZUlmRXhpc3RzXG59IGZyb20gJy4vZW52LXRvZ2dsZS50cyc7XG5pbXBvcnQge1xuICBnZXRFZmZlY3RpdmVDb21tYW5kTGluZUxlbmd0aCxcbiAgZ2V0TWF4QmF0Y2hDb21tYW5kTGVuZ3RoXG59IGZyb20gJy4vZXhlYy50cyc7XG5pbXBvcnQgeyByZWFkUGFja2FnZUpzb25TeW5jIH0gZnJvbSAnLi9ucG0udHMnO1xuaW1wb3J0IHsgZ2V0UGFja2FnZU1hbmFnZXJSdW5Db21tYW5kIH0gZnJvbSAnLi9wYWNrYWdlLW1hbmFnZXIudHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBnZXROYW5vU3RhZ2VkQ29uZmlnfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXROYW5vU3RhZ2VkQ29uZmlnT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBSZXBvLXNwZWNpZmljIGZpbGUtcmV3cml0aW5nIHRhc2tzLCBrZXllZCBieSB0aGUgbmFuby1zdGFnZWQgcGF0dGVybiB0aGF0IGNsYWltcyB0aGVpciBmaWxlcy5cbiAgICpcbiAgICogRWFjaCBnZXRzIHNwZWxsY2hlY2sgYXBwZW5kZWQgYW5kIGl0cyBmaWxlcyByZW1vdmVkIGZyb20gdGhlIHNwZWxsY2hlY2stb25seSBrZXksIGV4YWN0bHkgbGlrZSB0aGUgc2hhcmVkXG4gICAqIHdyaXRlcnMuIEEgcGF0dGVybiBtdXN0IG5vdCBjb250YWluIGAvYCwgYW5kIG11c3Qgbm90IHJlcGVhdCBhIHNoYXJlZCB3cml0ZXIgcGF0dGVybi4gRWFjaCBjb21tYW5kIGlzIGFcbiAgICogcHJlZml4IHRoZSBzdGFnZWQgcGF0aHMgYXJlIGFwcGVuZGVkIHRvLCBpbiBiYXRjaGVzLCBsaWtlIHRoZSBzaGFyZWQgb25lcyAoYG5wbSBydW4gbGludDpmaXggLS1gKS5cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxXcml0ZXJUYXNrcz86IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHN0cmluZ1tdPj47XG59XG5cbi8qKlxuICogQSBuYW5vLXN0YWdlZCBjb25maWd1cmF0aW9uIHdob3NlIGV2ZXJ5IGtleSBpcyBhIHtAbGluayBOYW5vU3RhZ2VkVGFza30uXG4gKi9cbmV4cG9ydCB0eXBlIE5hbm9TdGFnZWRDb25maWcgPSBSZWNvcmQ8c3RyaW5nLCBOYW5vU3RhZ2VkVGFzaz47XG5cbi8qKlxuICogQSBmdW5jdGlvbi12YWx1ZWQgbmFuby1zdGFnZWQgdGFzazogaXQgcmVjZWl2ZXMgdGhlIHN0YWdlZCBmaWxlcyBpdHMgcGF0dGVybiBjbGFpbXMgYW5kIHJldHVybnMgdGhlXG4gKiBjb21tYW5kcyB0byBydW4gb3ZlciB0aGVtLCBpbiBvcmRlci5cbiAqL1xuZXhwb3J0IHR5cGUgTmFub1N0YWdlZFRhc2sgPSAoY29udGV4dDogTmFub1N0YWdlZFRhc2tDb250ZXh0KSA9PiBzdHJpbmdbXTtcblxuLyoqXG4gKiBXaGF0IG5hbm8tc3RhZ2VkIHBhc3NlcyB0byBhIGZ1bmN0aW9uLXZhbHVlZCB0YXNrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hbm9TdGFnZWRUYXNrQ29udGV4dCB7XG4gIC8qKlxuICAgKiBUaGUgYWJzb2x1dGUgcGF0aHMgb2YgdGhlIHN0YWdlZCBmaWxlcyB0aGUgdGFzaydzIHBhdHRlcm4gY2xhaW1zLlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZW5hbWVzOiByZWFkb25seSBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBUaGUgYDxtYW5hZ2VyPiBydW5gIHByZWZpeCBldmVyeSB0YXNrIGJlbG93IGlzIGJ1aWx0IG9uLCByZXNvbHZlZCBvbmNlIGZvciB0aGUgcHJvY2Vzcy5cbiAqXG4gKiBEZXRlY3Rpb24gcHJvYmVzIGZvciBhIGxvY2tmaWxlIGJlc2lkZSBgcGFja2FnZS5qc29uYCwgc28gaXQgaXMgYSBoYW5kZnVsIG9mIGBleGlzdHNTeW5jYCBjYWxscyBhbmRcbiAqIG5vdGhpbmcgbW9yZSBcdTIwMTQgbm8gYC5lbnZgIHJlYWQgYW5kIG5vIGBwcm9jZXNzLmV4aXRgLCB3aGljaCBpcyB3aGF0IGxldHMgaXQgc2l0IGF0IG1vZHVsZSBzY29wZS5cbiAqL1xuY29uc3QgUEFDS0FHRV9NQU5BR0VSX1JVTl9DT01NQU5EID0gZ2V0UGFja2FnZU1hbmFnZXJSdW5Db21tYW5kKCkuam9pbignICcpO1xuXG5jb25zdCBTUEVMTENIRUNLX1NDUklQVF9OQU1FID0gJ3NwZWxsY2hlY2snO1xuXG5jb25zdCBTUEVMTENIRUNLX0NPTU1BTkQgPSB0b1NjcmlwdENvbW1hbmQoU1BFTExDSEVDS19TQ1JJUFRfTkFNRSk7XG5cbi8qKlxuICogUm9vbSBsZWZ0IGluIGV2ZXJ5IGJhdGNoIGZvciB0aGUgcmVzb2x2ZWQgcGF0aCBvZiB0aGUgcGFja2FnZSBtYW5hZ2VyJ3MgZXhlY3V0YWJsZS5cbiAqXG4gKiBuYW5vLXN0YWdlZCBydW5zIGBucG1gIGFzIHRoZSBhYnNvbHV0ZSBwYXRoIG9mIGBucG0uY21kYCAoYDxjb21zcGVjPiAvRCAvUyAvQyBcIjxwYXRoPlwiIFwiPGFyZz5cIiBcdTIwMjZgKSwgd2hpY2hcbiAqIHRoZSBiYXRjaCBjYW5ub3Qgc2VlLCBzbyBhIGZ1bGwgV2luZG93cyBgTUFYX1BBVEhgIGlzIHNldCBhc2lkZSBmb3IgaXQuXG4gKi9cbmNvbnN0IEVYRUNVVEFCTEVfUEFUSF9SRVNFUlZFID0gMjYwO1xuXG4vKipcbiAqIFRoZSBjaGFyYWN0ZXJzIG5hbm8tc3RhZ2VkJ3MgY29tbWFuZCB0b2tlbml6ZXIgY2Fubm90IGNhcnJ5IGluc2lkZSBhbiBhcmd1bWVudC5cbiAqXG4gKiBBIGZ1bmN0aW9uLXZhbHVlZCB0YXNrIHJldHVybnMgaXRzIGNvbW1hbmRzIGFzIFNUUklOR1MsIGFuZCBuYW5vLXN0YWdlZCBzcGxpdHMgZWFjaCBvbmUgd2l0aFxuICogYHN0cmluZ0FyZ3ZUb0FycmF5YCwgd2hpY2ggZW1pdHMgYSBxdW90ZWQgdG9rZW4gdHdpY2UgKG9uY2UgYmFyZSwgb25jZSB3aXRoIGl0cyBxdW90ZXMpIGFuZCBoYXMgbm8gZXNjYXBlLlxuICogU28gYSBwYXRoIGhvbGRpbmcgd2hpdGVzcGFjZSBvciBhIHF1b3RlIGNhbm5vdCBiZSBwYXNzZWQgYXMgaXRzZWxmLlxuICovXG5jb25zdCBUT0tFTklaRVJfVU5TQUZFX0NIQVJBQ1RFUlNfUkVHX0VYUCA9IC9bXFxzXCInXS9nO1xuXG4vKipcbiAqIFRoZSBucG0gc2NyaXB0cyB0aGF0IFJFV1JJVEUgYSBzdGFnZWQgZmlsZSwgaW4gdGhlIG9yZGVyIHRoZXkgcnVuLCBrZXllZCBieSB0aGUgbmFuby1zdGFnZWQgcGF0dGVybiB0aGF0XG4gKiBjbGFpbXMgaXQuXG4gKlxuICogYGxpbnQ6Zml4YCBhbmQgYGZvcm1hdGAgYm90aCByZXdyaXRlIHRoZSBmaWxlLCBzbyB0aGV5IGhhdmUgdG8gc2hhcmUgb25lIGtleTogbmFuby1zdGFnZWQgcnVucyBpdHNcbiAqIHBlci1wYXR0ZXJuIGdyb3VwcyB1bmRlciBgUHJvbWlzZS5hbGxgIChgcnVuKClgIGluIGBuYW5vLXN0YWdlZC9saWIvY21kLXJ1bm5lci5qc2ApLCBhbmQgc2VxdWVuY2VzIG9ubHlcbiAqIHRoZSBjb21tYW5kcyBJTlNJREUgYSBzaW5nbGUga2V5J3MgYXJyYXkgKGBydW5UYXNrKClgLCBhIGBmb3IgLi4uIG9mIGF3YWl0YCkuIFNwbGl0IGFjcm9zcyB0d28ga2V5cyB0aGV5XG4gKiByYWNlLCB3aGljaGV2ZXIgZmluaXNoZXMgbGFzdCB3aW5zLCBhbmQgdGhlIGNvbW1pdCBzdGFnZXMgYnl0ZXMgdGhhdCBuZWl0aGVyIHRvb2wgd291bGQgaGF2ZSBwcm9kdWNlZCBvblxuICogaXRzIG93bi5cbiAqXG4gKiBTbyBkbyBOT1QgZXhwcmVzcyBhIGRpcmVjdG9yeSBleGNsdXNpb24gYnkgZ2l2aW5nIG9uZSBvZiB0aGVzZSB0d28gaXRzIG93biBuZWdhdGVkIGtleSAtLSB0aGF0IHNpbGVudGx5XG4gKiB0YWtlcyB0aGUgb3JkZXJpbmcgYXdheS4gQW4gZXhjbHVzaW9uIGJlbG9uZ3MgaW4gdGhlIGV4Y2x1ZGVkIHRvb2wncyBvd24gY29uZmlnLCB3aGVyZSBFU0xpbnQnc1xuICogYGdsb2JhbElnbm9yZXNgIGFscmVhZHkgcHV0cyBpdDogYSBwYXRoIEVTTGludCBpZ25vcmVzIGlzIHJlcG9ydGVkIGFzIGEgd2FybmluZyBhbmQgZXhpdHMgMCB3aGVuIGl0IGlzXG4gKiBwYXNzZWQgZXhwbGljaXRseSwgc28gaXQgY29zdHMgYSBjb25zb2xlIGxpbmUgcmF0aGVyIHRoYW4gYSBmYWlsZWQgY29tbWl0IGFuZCBuZWVkcyBubyBrZXkgaGVyZS5cbiAqL1xuY29uc3QgV1JJVEVSX1NDUklQVF9OQU1FUzogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgc3RyaW5nW10+PiA9IHtcbiAgJyoue3RzLHRzeCxtdHN9JzogWydsaW50OmZpeCcsICdmb3JtYXQnXSxcbiAgJyoubWQnOiBbJ2xpbnQ6bWQ6Zml4J11cbn07XG5cbmNvbnN0IFdSSVRFUl9UQVNLUzogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgc3RyaW5nW10+PiA9IHRvV3JpdGVyVGFza3MoKCkgPT4gdHJ1ZSk7XG5cbi8qKlxuICogTmFuby1zdGFnZWQgY29uZmlndXJhdGlvbiB0aGF0IHJ1bnMgZmlsZS1iYXNlZCBsaW50LCBmb3JtYXQsIGFuZCBzcGVsbGNoZWNrIG9uIHN0YWdlZCBmaWxlcy5cbiAqXG4gKiBPbmx5IGluY2x1ZGVzIHRvb2xzIHRoYXQgY2FuIG9wZXJhdGUgb24gaW5kaXZpZHVhbCBmaWxlcy4gV2hvbGUtcHJvamVjdCBjaGVja3NcbiAqIChUeXBlU2NyaXB0IGNvbXBpbGF0aW9uLCB1bml0IHRlc3RzKSBhcmUgbGVmdCB0byBDSS5cbiAqXG4gKiBDb21tYW5kcyBydW4gdGhyb3VnaCB0aGUgcGFja2FnZSBtYW5hZ2VyIHRoYXQgb3ducyB0aGUgdHJlZSBcdTIwMTQgYG5wbSBydW4gLi4uIC0tYCwgYGJ1biBydW4gLi4uIC0tYCwgYW5kXG4gKiBzbyBvbiBcdTIwMTQgc28gbmFuby1zdGFnZWQgZmlsZSBwYXRocyBhcmUgZm9yd2FyZGVkIGFzIENMSSBhcmd1bWVudHMsIGJhdGNoZWQgdG8gZml0IHRoZSBjb21tYW5kIGxpbmUgKHNlZVxuICogYHRvQmF0Y2hlZFRhc2tgKS5cbiAqXG4gKiBTcGVsbGNoZWNrIGlzIHBhcnRpdGlvbmVkIGFjcm9zcyB0aGUga2V5cyByYXRoZXIgdGhhbiBnaXZlbiBhIGNhdGNoLWFsbCBgJyonYCBrZXkgKHNlZVxuICogYHBhcnRpdGlvblNwZWxsY2hlY2tgKS4gQSByZXBvIGFkZGluZyBhIGZpbGUtcmV3cml0aW5nIHRhc2sgb2YgaXRzIG93biBwYXNzZXMgaXQgdG9cbiAqIHtAbGluayBnZXROYW5vU3RhZ2VkQ29uZmlnfSBhcyBgYWRkaXRpb25hbFdyaXRlclRhc2tzYCByYXRoZXIgdGhhbiBzcHJlYWRpbmcgdGhpcyBvYmplY3QgYW5kIGFkZGluZyBhIGtleSxcbiAqIHdoaWNoIHdvdWxkIHJlaW50cm9kdWNlIHRoZSBvdmVybGFwIGZvciB0aGF0IGtleSdzIGZpbGVzLlxuICovXG5leHBvcnQgY29uc3Qgb2JzaWRpYW5EZXZVdGlsc0NvbmZpZzogTmFub1N0YWdlZENvbmZpZyA9IHBhcnRpdGlvblNwZWxsY2hlY2soV1JJVEVSX1RBU0tTLCB0cnVlKTtcblxuY29uc3QgTkFOT19TVEFHRURfRU5WX1ZBUklBQkxFID0gJ05BTk9fU1RBR0VEJztcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgbmFuby1zdGFnZWQgY29uZmlndXJhdGlvbiB0byB1c2UsIGhvbm9yaW5nIGEgcGVyLWRldmVsb3BlciBvcHQtb3V0LlxuICpcbiAqIExvYWRzIGEgZ2l0aWdub3JlZCBgLmVudmAgaWYgcHJlc2VudCwgdGhlbiBcdTIwMTQgd2hlbiBgTkFOT19TVEFHRURgIGlzIHNldCB0byBhbiBvZmYgdmFsdWUgKGAwYCwgYGZhbHNlYCxcbiAqIGBvZmZgLCBvciBgbm9gKSBcdTIwMTQgcHJpbnRzIGEgbm90aWNlIGFuZCBleGl0cyB0aGUgcHJvY2VzcyBzdWNjZXNzZnVsbHkgc28gdGhlIHByZS1jb21taXQgY2hlY2tzIGFyZVxuICogc2tpcHBlZC4gVGhpcyBtaXJyb3JzIGh1c2t5J3Mgb3duIGBIVVNLWT0wYCBzd2l0Y2gsIGJ1dCBzY29wZWQgdG8gdGhlIG5hbm8tc3RhZ2VkIHN0ZXAgKHNvIHRoZVxuICogY29tbWl0LW1zZyBob29rIHN0aWxsIHJ1bnMpLiBPdGhlcndpc2UgaXQgcmV0dXJucyB7QGxpbmsgb2JzaWRpYW5EZXZVdGlsc0NvbmZpZ30sIG9yIFx1MjAxNCB3aGVuXG4gKiBgYWRkaXRpb25hbFdyaXRlclRhc2tzYCBhcmUgZ2l2ZW4gXHUyMDE0IHRoZSBzYW1lIGNvbmZpZ3VyYXRpb24gcmUtcGFydGl0aW9uZWQgd2l0aCB0aG9zZSB3cml0ZXJzIGFkZGVkLlxuICpcbiAqIEEgc2hhcmVkIHRhc2sgd2hvc2UgbnBtIHNjcmlwdCB0aGUgcHJvamVjdCdzIGBwYWNrYWdlLmpzb25gIGRvZXMgbm90IGRlY2xhcmUgaXMgbGVmdCBvdXQsIHNvIGEgcHJvamVjdFxuICogd2l0aG91dCwgc2F5LCBtYXJrZG93bmxpbnQgZG9lcyBub3QgZmFpbCBpdHMgZmlyc3QgY29tbWl0IHRoYXQgc3RhZ2VzIGEgYC5tZGAgZmlsZSBvbiBhIG1pc3Npbmcgc2NyaXB0LiBBXG4gKiB3cml0ZXIgcGF0dGVybiBsZWZ0IHdpdGggbm8gd3JpdGVyIGlzIGRyb3BwZWQsIGFuZCBzcGVsbGNoZWNrIHJ1bnMgb25seSB3aGVuIGBzcGVsbGNoZWNrYCBpcyBkZWNsYXJlZCwgaW5cbiAqIHdoaWNoIGNhc2UgaXRzIGZpbGVzIGZhbGwgdG8gdGhlIHNwZWxsY2hlY2stb25seSBrZXkuIFRoZSBgYWRkaXRpb25hbFdyaXRlclRhc2tzYCBhcmUgdGhlIGNhbGxlcidzIG93biBhbmRcbiAqIGFyZSBrZXB0IGFzIGdpdmVuLlxuICpcbiAqIGBOQU5PX1NUQUdFRGAgaXMgbm90IGFuIG5wbSBzY3JpcHQsIHNvIGl0IGNhcnJpZXMgaXRzIG93biBzd2l0Y2ggcmF0aGVyIHRoYW4gdGhlIHNjcmlwdC1uYW1lLWRlcml2ZWQgb25lXG4gKiBldmVyeSBucG0gc2NyaXB0IGdldHMgXHUyMDE0IGJ1dCBib3RoIHNoYXJlIHRoZSBzYW1lIG5vdGlvbiBvZiBhbiBvZmYgdmFsdWUsIHZpYSB7QGxpbmsgaXNFbnZWYXJpYWJsZU9mZn0uXG4gKlxuICogVGhpcyBpcyBhIGZ1bmN0aW9uIHJhdGhlciB0aGFuIG1vZHVsZS1sZXZlbCBjb2RlIHNvIGltcG9ydGluZyB0aGUgcGFja2FnZSBiYXJyZWwgbmV2ZXIgdHJpZ2dlcnMgdGhlXG4gKiBgLmVudmAgcmVhZCBvciB0aGUgcHJvY2VzcyBleGl0OyBjYWxsIGl0IGZyb20gdGhlIHRoaW4gYHNjcmlwdHMvbmFuby1zdGFnZWQtY29uZmlnLnRzYCBlbnRyeS4gUmVzb2x2aW5nIHRoZVxuICogcGFja2FnZSBtYW5hZ2VyIGlzIHRoZSBvbmUgdGhpbmcgdGhhdCBkb2VzIHJ1biBhdCBtb2R1bGUgc2NvcGUsIGFuZCBpdCBkb2VzIG5laXRoZXIgb2YgdGhvc2UgdHdvXG4gKiB0aGluZ3MgXHUyMDE0IGl0IG9ubHkgcHJvYmVzIGZvciBhIGxvY2tmaWxlLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbmFsIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgbmFuby1zdGFnZWQgdGFzayBjb25maWd1cmF0aW9uLiBEb2VzIG5vdCByZXR1cm4gd2hlbiB0aGUgb3B0LW91dCBpcyBhY3RpdmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROYW5vU3RhZ2VkQ29uZmlnKG9wdGlvbnM/OiBHZXROYW5vU3RhZ2VkQ29uZmlnT3B0aW9ucyk6IE5hbm9TdGFnZWRDb25maWcge1xuICBsb2FkRW52RmlsZUlmRXhpc3RzKCk7XG5cbiAgaWYgKGlzRW52VmFyaWFibGVPZmYoTkFOT19TVEFHRURfRU5WX1ZBUklBQkxFKSkge1xuICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGBuYW5vLXN0YWdlZDogc2tpcHBlZCAoJHtOQU5PX1NUQUdFRF9FTlZfVkFSSUFCTEV9IGlzIG9mZikuXFxuYCk7XG4gICAgcHJvY2Vzcy5leGl0KDApO1xuICB9XG5cbiAgY29uc3Qgc2NyaXB0TmFtZXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKHJlYWRQYWNrYWdlSnNvblN5bmMoKS5zY3JpcHRzID8/IHt9KSk7XG4gIGNvbnN0IGhhc0FsbFNoYXJlZFNjcmlwdHMgPSBbU1BFTExDSEVDS19TQ1JJUFRfTkFNRSwgLi4uT2JqZWN0LnZhbHVlcyhXUklURVJfU0NSSVBUX05BTUVTKS5mbGF0KCldXG4gICAgLmV2ZXJ5KChzY3JpcHROYW1lKSA9PiBzY3JpcHROYW1lcy5oYXMoc2NyaXB0TmFtZSkpO1xuICBjb25zdCBhZGRpdGlvbmFsV3JpdGVyVGFza3MgPSBvcHRpb25zPy5hZGRpdGlvbmFsV3JpdGVyVGFza3MgPz8ge307XG4gIGlmIChoYXNBbGxTaGFyZWRTY3JpcHRzICYmIE9iamVjdC5rZXlzKGFkZGl0aW9uYWxXcml0ZXJUYXNrcykubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG9ic2lkaWFuRGV2VXRpbHNDb25maWc7XG4gIH1cblxuICBjb25zdCB3cml0ZXJUYXNrcyA9IHRvV3JpdGVyVGFza3MoKHNjcmlwdE5hbWUpID0+IHNjcmlwdE5hbWVzLmhhcyhzY3JpcHROYW1lKSk7XG4gIGNvbnN0IGR1cGxpY2F0ZVBhdHRlcm4gPSBPYmplY3Qua2V5cyhhZGRpdGlvbmFsV3JpdGVyVGFza3MpLmZpbmQoKHBhdHRlcm4pID0+IE9iamVjdC5oYXNPd24od3JpdGVyVGFza3MsIHBhdHRlcm4pKTtcbiAgaWYgKGR1cGxpY2F0ZVBhdHRlcm4gIT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgbmFuby1zdGFnZWQgd3JpdGVyIHBhdHRlcm4gJyR7ZHVwbGljYXRlUGF0dGVybn0nIGlzIGFscmVhZHkgYSBzaGFyZWQgd3JpdGVyIHBhdHRlcm4uYCk7XG4gIH1cblxuICByZXR1cm4gcGFydGl0aW9uU3BlbGxjaGVjayh7IC4uLndyaXRlclRhc2tzLCAuLi5hZGRpdGlvbmFsV3JpdGVyVGFza3MgfSwgc2NyaXB0TmFtZXMuaGFzKFNQRUxMQ0hFQ0tfU0NSSVBUX05BTUUpKTtcbn1cblxuLyoqXG4gKiBTcGxpdHMgY29tbWFuZCBhcmd1bWVudHMgaW50byBiYXRjaGVzIHRoYXQgZWFjaCBmaXQgb25lIGNvbW1hbmQgbGluZSBhZnRlciBhIGdpdmVuIHByZWZpeC5cbiAqXG4gKiBFYWNoIGFyZ3VtZW50IGlzIGNvc3RlZCBhcyBuYW5vLXN0YWdlZCBwYXNzZXMgaXQgb24gV2luZG93cyBcdTIwMTQgcXVvdGVkLCB0aGVuIGBeYC1lc2NhcGVkIGJ5IGBjbWQuZXhlYCdzXG4gKiBydWxlcyBcdTIwMTQgdGhyb3VnaCB7QGxpbmsgZ2V0RWZmZWN0aXZlQ29tbWFuZExpbmVMZW5ndGh9LCBhbmQgdGhlIGJ1ZGdldCBpcyB7QGxpbmsgZ2V0TWF4QmF0Y2hDb21tYW5kTGVuZ3RofSxcbiAqIHdoaWNoIGFscmVhZHkgaG9sZHMgYmFjayB0aGUgcmVzZXJ2ZSBmb3IgdGhlIGBucG1gIFx1MjE5MiBgY21kLmV4ZWAgXHUyMTkyIGAuYmluYCBzaGltIGNoYWluIHJlLWV4cGFuZGluZyB0aGVcbiAqIGFyZ3VtZW50cy4gQW4gYXJndW1lbnQgdG9vIGxvbmcgZm9yIGFueSBiYXRjaCBzdGlsbCBnZXRzIGEgYmF0Y2ggb2YgaXRzIG93bjogaXQgZmFpbHMgbG91ZGx5IHRoZXJlLCB3aGljaFxuICogZHJvcHBpbmcgaXQgd291bGQgbm90LlxuICpcbiAqIEBwYXJhbSBwcmVmaXggLSBUaGUgY29tbWFuZCB0aGUgYXJndW1lbnRzIGFyZSBhcHBlbmRlZCB0by5cbiAqIEBwYXJhbSBjb21tYW5kQXJndW1lbnRzIC0gVGhlIGFyZ3VtZW50cyB0byBzcGxpdC5cbiAqIEByZXR1cm5zIFRoZSBiYXRjaGVzLCBpbiBvcmRlciwgdG9nZXRoZXIgaG9sZGluZyBldmVyeSBhcmd1bWVudCBvbmNlLlxuICovXG5mdW5jdGlvbiBiYXRjaENvbW1hbmRBcmd1bWVudHMocHJlZml4OiBzdHJpbmcsIGNvbW1hbmRBcmd1bWVudHM6IHJlYWRvbmx5IHN0cmluZ1tdKTogc3RyaW5nW11bXSB7XG4gIGNvbnN0IGVtcHR5TGVuZ3RoID0gZ2V0RWZmZWN0aXZlQ29tbWFuZExpbmVMZW5ndGgoJycpO1xuICBjb25zdCBidWRnZXQgPSBnZXRNYXhCYXRjaENvbW1hbmRMZW5ndGgoKSAtIEVYRUNVVEFCTEVfUEFUSF9SRVNFUlZFIC0gZ2V0RWZmZWN0aXZlQ29tbWFuZExpbmVMZW5ndGgocHJlZml4KTtcbiAgY29uc3QgYmF0Y2hlczogc3RyaW5nW11bXSA9IFtdO1xuICBsZXQgYmF0Y2g6IHN0cmluZ1tdID0gW107XG4gIGxldCBiYXRjaExlbmd0aCA9IDA7XG5cbiAgZm9yIChjb25zdCBjb21tYW5kQXJndW1lbnQgb2YgY29tbWFuZEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGFyZ3VtZW50TGVuZ3RoID0gZ2V0RWZmZWN0aXZlQ29tbWFuZExpbmVMZW5ndGgoYCBcIiR7Y29tbWFuZEFyZ3VtZW50fVwiYCkgLSBlbXB0eUxlbmd0aDtcbiAgICBpZiAoYmF0Y2gubGVuZ3RoID4gMCAmJiBiYXRjaExlbmd0aCArIGFyZ3VtZW50TGVuZ3RoID4gYnVkZ2V0KSB7XG4gICAgICBiYXRjaGVzLnB1c2goYmF0Y2gpO1xuICAgICAgYmF0Y2ggPSBbXTtcbiAgICAgIGJhdGNoTGVuZ3RoID0gMDtcbiAgICB9XG4gICAgYmF0Y2gucHVzaChjb21tYW5kQXJndW1lbnQpO1xuICAgIGJhdGNoTGVuZ3RoICs9IGFyZ3VtZW50TGVuZ3RoO1xuICB9XG5cbiAgaWYgKGJhdGNoLmxlbmd0aCA+IDApIHtcbiAgICBiYXRjaGVzLnB1c2goYmF0Y2gpO1xuICB9XG5cbiAgcmV0dXJuIGJhdGNoZXM7XG59XG5cbi8qKlxuICogQnVpbGRzIGEgbmFuby1zdGFnZWQgY29uZmlndXJhdGlvbiBpbiB3aGljaCBzcGVsbGNoZWNrIG5ldmVyIHJlYWRzIGEgZmlsZSB3aGlsZSBhbm90aGVyIHRhc2sgcmV3cml0ZXMgaXQuXG4gKlxuICogVGhlIHNhbWUgYFByb21pc2UuYWxsYCB0aGF0IGZvcmNlcyB0d28gd3JpdGVycyBpbnRvIG9uZSBrZXkgbWFrZXMgYSBjYXRjaC1hbGwgYCcqJ2Agc3BlbGxjaGVjayBrZXkgcnVuXG4gKiBDT05DVVJSRU5UTFkgd2l0aCBldmVyeSB3cml0ZXIga2V5LCBzbyBjc3BlbGwgd291bGQgcmVhZCBhIGZpbGUgdGhhdCBFU0xpbnQgb3IgZHByaW50IGlzIHJld3JpdGluZyBpblxuICogcGxhY2UgLS0gYSBzcHVyaW91cyBmaW5kaW5nIG9uIGEgaGFsZi13cml0dGVuIGZpbGUsIG9yIGEgcGFzcyBvdmVyIGNvbnRlbnQgdGhhdCBpcyBub3Qgd2hhdCBnZXRzXG4gKiBjb21taXR0ZWQuIFNvIHRoZSBzdGFnZWQgZmlsZXMgYXJlIFBBUlRJVElPTkVEIGluc3RlYWQ6XG4gKlxuICogLSBldmVyeSB3cml0ZXIga2V5IGdldHMgc3BlbGxjaGVjayBhcHBlbmRlZCBhcyBpdHMgTEFTVCBjb21tYW5kLCBzbyBpdCByZWFkcyB0aGF0IGtleSdzIGZpbGVzIGFmdGVyIHRoZXlcbiAqICAgaGF2ZSBiZWVuIHJld3JpdHRlbjtcbiAqIC0gb25lIGNvbXBsZW1lbnQga2V5IHNwZWxsY2hlY2tzIGV4YWN0bHkgdGhlIGZpbGVzIG5vIHdyaXRlciBrZXkgY2xhaW1zLlxuICpcbiAqIFRoZSBjb21wbGVtZW50IGlzIHdyaXR0ZW4gaW4gbmFuby1zdGFnZWQncyBvd24gZ2xvYiBkaWFsZWN0LCB3aGljaCBjb21waWxlcyBgISguLi4pYCB0byBhIGxvb2thaGVhZCB0aGF0XG4gKiBpcyBOT1QgYW5jaG9yZWQgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aDogYCEoKi5tZCkqYCB3b3VsZCBleGNsdWRlIGBub3Rlcy5tZC5iYWtgIHRvby4gQSBuZXN0ZWQgYCEoPylgXG4gKiBjb21waWxlcyB0byBgKD8hLilgLCB3aGljaCBJUyBhbiBlbmQgYW5jaG9yLCBzbyBlYWNoIGFsdGVybmF0aXZlIGlzIHN1ZmZpeGVkIHdpdGggaXQuIEEgd3JpdGVyIHBhdHRlcm5cbiAqIGNvbnRhaW5pbmcgYC9gIHdvdWxkIHN3aXRjaCBuYW5vLXN0YWdlZCBpbnRvIGdsb2JzdGFyIG1vZGUsIHdoZXJlIGAqYCBzdG9wcyBjcm9zc2luZyBkaXJlY3RvcmllcyBhbmQgdGhlXG4gKiBjb25zdHJ1Y3Rpb24gbm8gbG9uZ2VyIGhvbGRzIC0tIGhlbmNlIHRoZSB0aHJvdy4gVGhlIHVuaXQgdGVzdCBwaW5zIHRoZSBwYXJ0aXRpb24gYWdhaW5zdCB0aGUgaW5zdGFsbGVkXG4gKiBuYW5vLXN0YWdlZCBjb21waWxlciwgc28gYSByZWxlYXNlIHRoYXQgY2hhbmdlcyBpdHMgZGlhbGVjdCBmYWlscyB0aGVyZSByYXRoZXIgdGhhbiBpbiBhIGNvbW1pdC5cbiAqXG4gKiBXaXRob3V0IHNwZWxsY2hlY2sgdGhlcmUgaXMgbm90aGluZyB0byBwYXJ0aXRpb246IGVhY2ggd3JpdGVyIGtleSBydW5zIGl0cyBvd24gY29tbWFuZHMsIGFuZCBubyBjb21wbGVtZW50XG4gKiBrZXkgaXMgZW1pdHRlZC5cbiAqXG4gKiBAcGFyYW0gd3JpdGVyVGFza3MgLSBUaGUgZmlsZS1yZXdyaXRpbmcgdGFza3MsIGtleWVkIGJ5IHRoZSBwYXR0ZXJuIHRoYXQgY2xhaW1zIHRoZWlyIGZpbGVzLlxuICogQHBhcmFtIHNob3VsZFNwZWxsY2hlY2sgLSBXaGV0aGVyIHRoZSBwcm9qZWN0IGhhcyBhIGBzcGVsbGNoZWNrYCBzY3JpcHQgdG8gcnVuLlxuICogQHJldHVybnMgVGhlIGNvbmZpZ3VyYXRpb24sIHdpdGggdGhlIHNwZWxsY2hlY2sgc3RlcCBwYXJ0aXRpb25lZCBhY3Jvc3MgdGhlIGtleXMuXG4gKi9cbmZ1bmN0aW9uIHBhcnRpdGlvblNwZWxsY2hlY2sod3JpdGVyVGFza3M6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHN0cmluZ1tdPj4sIHNob3VsZFNwZWxsY2hlY2s6IGJvb2xlYW4pOiBOYW5vU3RhZ2VkQ29uZmlnIHtcbiAgaWYgKCFzaG91bGRTcGVsbGNoZWNrKSB7XG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh3cml0ZXJUYXNrcykubWFwKChbcGF0dGVybiwgY29tbWFuZHNdKSA9PiBbcGF0dGVybiwgdG9CYXRjaGVkVGFzayhjb21tYW5kcyldKSk7XG4gIH1cblxuICBjb25zdCBwYXR0ZXJucyA9IE9iamVjdC5rZXlzKHdyaXRlclRhc2tzKTtcbiAgY29uc3QgcGF0dGVybldpdGhTbGFzaCA9IHBhdHRlcm5zLmZpbmQoKHBhdHRlcm4pID0+IHBhdHRlcm4uaW5jbHVkZXMoJy8nKSk7XG4gIGlmIChwYXR0ZXJuV2l0aFNsYXNoICE9PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG5hbm8tc3RhZ2VkIHdyaXRlciBwYXR0ZXJuICcke3BhdHRlcm5XaXRoU2xhc2h9JyBjb250YWlucyAnLycsIHdoaWNoIHRoZSBzcGVsbGNoZWNrIHBhcnRpdGlvbiBjYW5ub3QgZXhwcmVzcy5gKTtcbiAgfVxuXG4gIC8vIGAhKCkqYCB3b3VsZCBjb21waWxlIHRvIGEgbG9va2FoZWFkIHRoYXQgcmVqZWN0cyBldmVyeSBwYXRoLCBzbyB3aXRoIG5vIHdyaXRlciB0aGUgY29tcGxlbWVudCBpcyBldmVyeXRoaW5nLlxuICBjb25zdCBjb21wbGVtZW50UGF0dGVybiA9IHBhdHRlcm5zLmxlbmd0aCA9PT0gMCA/ICcqJyA6IGAhKCR7cGF0dGVybnMubWFwKChwYXR0ZXJuKSA9PiBgJHtwYXR0ZXJufSEoPylgKS5qb2luKCd8Jyl9KSpgO1xuICBjb25zdCBjb25maWc6IE5hbm9TdGFnZWRDb25maWcgPSB7XG4gICAgW2NvbXBsZW1lbnRQYXR0ZXJuXTogdG9CYXRjaGVkVGFzayhbU1BFTExDSEVDS19DT01NQU5EXSlcbiAgfTtcblxuICBmb3IgKGNvbnN0IFtwYXR0ZXJuLCBjb21tYW5kc10gb2YgT2JqZWN0LmVudHJpZXMod3JpdGVyVGFza3MpKSB7XG4gICAgY29uZmlnW3BhdHRlcm5dID0gdG9CYXRjaGVkVGFzayhbLi4uY29tbWFuZHMsIFNQRUxMQ0hFQ0tfQ09NTUFORF0pO1xuICB9XG5cbiAgcmV0dXJuIGNvbmZpZztcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSB0YXNrIHRoYXQgcnVucyBlYWNoIGNvbW1hbmQgb3ZlciBldmVyeSBzdGFnZWQgZmlsZSBpdCByZWNlaXZlcywgaW4gYXMgbWFueSBiYXRjaGVzIGFzIHRoZSBjb21tYW5kXG4gKiBsaW5lIG5lZWRzLlxuICpcbiAqIG5hbm8tc3RhZ2VkIGFwcGVuZHMgYSBzdHJpbmcgdGFzaydzIGZpbGVzIHRvIE9ORSBjb21tYW5kLCBzbyBhIGNvbW1pdCBzdGFnaW5nIGEgZmV3IGh1bmRyZWQgZmlsZXMgcmFuXG4gKiBgbnBtIHJ1biBsaW50OmZpeCAtLSA8ZXZlcnkgcGF0aD5gIGFuZCBmYWlsZWQgb24gV2luZG93cyB3aXRoIGBUaGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nLmAsIHJlZnVzaW5nXG4gKiBleGFjdGx5IHRoZSB3aG9sZS1yZXBvIGNvbW1pdHMgdGhhdCBtb3N0IG5lZWQgdGhlIGhvb2suIEEgZnVuY3Rpb24tdmFsdWVkIHRhc2sgYnVpbGRzIGl0cyBvd24gY29tbWFuZHNcbiAqIGluc3RlYWQsIGFuZCB0aGVzZSBhcmUgYmF0Y2hlZCBhZ2FpbnN0IHRoZSBzYW1lIGJ1ZGdldCBgZXhlYygpYCB1c2VzIChzZWUgYGJhdGNoQ29tbWFuZEFyZ3VtZW50c2ApLlxuICpcbiAqIFRoZSBjb21tYW5kcyBrZWVwIHRoZWlyIG9yZGVyOiBldmVyeSBiYXRjaCBvZiB0aGUgZmlyc3QgY29tbWFuZCBydW5zIGJlZm9yZSBhbnkgYmF0Y2ggb2YgdGhlIHNlY29uZCxcbiAqIGJlY2F1c2UgbmFuby1zdGFnZWQgcnVucyBvbmUga2V5J3MgY29tbWFuZHMgb25lIGFmdGVyIGFub3RoZXIsIHNvIGEgd3JpdGVyIHN0aWxsIGZpbmlzaGVzIGJlZm9yZSB0aGUgbmV4dFxuICogd3JpdGVyLCBhbmQgc3BlbGxjaGVjayBzdGlsbCByZWFkcyB0aGUgcmV3cml0dGVuIGZpbGVzLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kcyAtIFRoZSBjb21tYW5kIHByZWZpeGVzLCBpbiB0aGUgb3JkZXIgdGhleSBydW4uXG4gKiBAcmV0dXJucyBUaGUgdGFzay5cbiAqL1xuZnVuY3Rpb24gdG9CYXRjaGVkVGFzayhjb21tYW5kczogcmVhZG9ubHkgc3RyaW5nW10pOiBOYW5vU3RhZ2VkVGFzayB7XG4gIHJldHVybiAoeyBmaWxlbmFtZXMgfSkgPT4ge1xuICAgIGNvbnN0IGNvbW1hbmRBcmd1bWVudHMgPSBmaWxlbmFtZXMubWFwKChmaWxlbmFtZSkgPT4gdG9Db21tYW5kQXJndW1lbnQoZmlsZW5hbWUpKTtcbiAgICByZXR1cm4gY29tbWFuZHMuZmxhdE1hcCgoY29tbWFuZCkgPT4gYmF0Y2hDb21tYW5kQXJndW1lbnRzKGNvbW1hbmQsIGNvbW1hbmRBcmd1bWVudHMpLm1hcCgoYmF0Y2gpID0+IGAke2NvbW1hbmR9ICR7YmF0Y2guam9pbignICcpfWApKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBUdXJucyBhIHN0YWdlZCBmaWxlJ3MgYWJzb2x1dGUgcGF0aCBpbnRvIHRoZSBhcmd1bWVudCBhIGJhdGNoZWQgdGFzayBwYXNzZXMgZm9yIGl0LlxuICpcbiAqIFRoZSBwYXRoIGlzIG1hZGUgcmVsYXRpdmUgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LCB3aGVyZSBuYW5vLXN0YWdlZCBhbmQgdGhlIHRhc2sgYm90aCBydW4sIHdoaWNoIHJvdWdobHlcbiAqIGhhbHZlcyBpdHMgbGVuZ3RoIGFuZCBzbyB0aGUgbnVtYmVyIG9mIGJhdGNoZXM7IGEgcGF0aCBvdXRzaWRlIGl0IHN0YXlzIGFic29sdXRlLiBBIHJlbGF0aXZlIHBhdGggc3RhcnRpbmdcbiAqIHdpdGggYC1gIGdldHMgYC4vYCwgc28gbm8gdG9vbCByZWFkcyBpdCBhcyBhbiBvcHRpb24uXG4gKlxuICogV2hpdGVzcGFjZSBhbmQgcXVvdGVzIGJlY29tZSBgP2AsIGJlY2F1c2UgbmFuby1zdGFnZWQncyB0b2tlbml6ZXIgY2Fubm90IGNhcnJ5IHRoZW0gKHNlZVxuICoge0BsaW5rIFRPS0VOSVpFUl9VTlNBRkVfQ0hBUkFDVEVSU19SRUdfRVhQfSkuIEV2ZXJ5IHRvb2wgdGhlIHRhc2tzIHJ1biAoRVNMaW50LCBkcHJpbnQsIGNzcGVsbCxcbiAqIG1hcmtkb3dubGludC1jbGkyKSB0YWtlcyBpdHMgcGF0aHMgYXMgZ2xvYnMsIGFuZCBgP2AgbWF0Y2hlcyBleGFjdGx5IHRoZSBvbmUgY2hhcmFjdGVyIGl0IHJlcGxhY2VkLCBzbyB0aGVcbiAqIGZpbGUgaXMgc3RpbGwgZm91bmQ7IGEgc2libGluZyBkaWZmZXJpbmcgb25seSBpbiB0aGF0IGNoYXJhY3RlciB3b3VsZCBtYXRjaCB0b28sIHdoaWNoIGNvc3RzIGEgbGludCBvZiBhblxuICogZXh0cmEgZmlsZSwgbm90IGEgbWlzc2VkIG9uZS5cbiAqXG4gKiBAcGFyYW0gZmlsZW5hbWUgLSBUaGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgc3RhZ2VkIGZpbGUuXG4gKiBAcmV0dXJucyBUaGUgYXJndW1lbnQuXG4gKi9cbmZ1bmN0aW9uIHRvQ29tbWFuZEFyZ3VtZW50KGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCByZWxhdGl2ZVBhdGggPSByZWxhdGl2ZShwcm9jZXNzLmN3ZCgpLCBmaWxlbmFtZSk7XG4gIGxldCBjb21tYW5kQXJndW1lbnQgPSAocmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoJy4uJykgfHwgaXNBYnNvbHV0ZShyZWxhdGl2ZVBhdGgpID8gZmlsZW5hbWUgOiByZWxhdGl2ZVBhdGgpLnJlcGxhY2VBbGwoJ1xcXFwnLCAnLycpO1xuICBpZiAoY29tbWFuZEFyZ3VtZW50LnN0YXJ0c1dpdGgoJy0nKSkge1xuICAgIGNvbW1hbmRBcmd1bWVudCA9IGAuLyR7Y29tbWFuZEFyZ3VtZW50fWA7XG4gIH1cbiAgcmV0dXJuIGNvbW1hbmRBcmd1bWVudC5yZXBsYWNlQWxsKFRPS0VOSVpFUl9VTlNBRkVfQ0hBUkFDVEVSU19SRUdfRVhQLCAnPycpO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgY29tbWFuZCBwcmVmaXggdGhhdCBydW5zIGFuIG5wbSBzY3JpcHQgb3ZlciB0aGUgcGF0aHMgYXBwZW5kZWQgdG8gaXQuXG4gKlxuICogQHBhcmFtIHNjcmlwdE5hbWUgLSBUaGUgc2NyaXB0IG5hbWUuXG4gKiBAcmV0dXJucyBUaGUgY29tbWFuZCBwcmVmaXgsIHN1Y2ggYXMgYG5wbSBydW4gbGludDpmaXggLS1gLlxuICovXG5mdW5jdGlvbiB0b1NjcmlwdENvbW1hbmQoc2NyaXB0TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke1BBQ0tBR0VfTUFOQUdFUl9SVU5fQ09NTUFORH0gJHtzY3JpcHROYW1lfSAtLWA7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBzaGFyZWQgd3JpdGVyIHRhc2tzIGZyb20ge0BsaW5rIFdSSVRFUl9TQ1JJUFRfTkFNRVN9LCBrZWVwaW5nIG9ubHkgdGhlIHNjcmlwdHMgYSBmaWx0ZXIgYWNjZXB0c1xuICogYW5kIGRyb3BwaW5nIGEgcGF0dGVybiBsZWZ0IHdpdGggbm9uZS5cbiAqXG4gKiBAcGFyYW0gc2hvdWxkSW5jbHVkZVNjcmlwdCAtIFdoZXRoZXIgdG8gcnVuIGEgZ2l2ZW4gc2NyaXB0LlxuICogQHJldHVybnMgVGhlIHdyaXRlciB0YXNrcywga2V5ZWQgYnkgdGhlIHBhdHRlcm4gdGhhdCBjbGFpbXMgdGhlaXIgZmlsZXMuXG4gKi9cbmZ1bmN0aW9uIHRvV3JpdGVyVGFza3Moc2hvdWxkSW5jbHVkZVNjcmlwdDogKHNjcmlwdE5hbWU6IHN0cmluZykgPT4gYm9vbGVhbik6IFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHN0cmluZ1tdPiB7XG4gIGNvbnN0IHdyaXRlclRhc2tzOiBSZWNvcmQ8c3RyaW5nLCByZWFkb25seSBzdHJpbmdbXT4gPSB7fTtcbiAgZm9yIChjb25zdCBbcGF0dGVybiwgc2NyaXB0TmFtZXNdIG9mIE9iamVjdC5lbnRyaWVzKFdSSVRFUl9TQ1JJUFRfTkFNRVMpKSB7XG4gICAgY29uc3QgY29tbWFuZHMgPSBzY3JpcHROYW1lcy5maWx0ZXIoKHNjcmlwdE5hbWUpID0+IHNob3VsZEluY2x1ZGVTY3JpcHQoc2NyaXB0TmFtZSkpLm1hcCgoc2NyaXB0TmFtZSkgPT4gdG9TY3JpcHRDb21tYW5kKHNjcmlwdE5hbWUpKTtcbiAgICBpZiAoY29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgd3JpdGVyVGFza3NbcGF0dGVybl0gPSBjb21tYW5kcztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHdyaXRlclRhc2tzO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsdUJBR087QUFDUCwwQkFBb0I7QUFFcEIsd0JBR087QUFDUCxrQkFHTztBQUNQLGlCQUFvQztBQUNwQyw2QkFBNEM7QUEyQzVDLE1BQU0sa0NBQThCLG9EQUE0QixFQUFFLEtBQUssR0FBRztBQUUxRSxNQUFNLHlCQUF5QjtBQUUvQixNQUFNLHFCQUFxQixnQkFBZ0Isc0JBQXNCO0FBUWpFLE1BQU0sMEJBQTBCO0FBU2hDLE1BQU0sc0NBQXNDO0FBaUI1QyxNQUFNLHNCQUFtRTtBQUFBLEVBQ3ZFLGtCQUFrQixDQUFDLFlBQVksUUFBUTtBQUFBLEVBQ3ZDLFFBQVEsQ0FBQyxhQUFhO0FBQ3hCO0FBRUEsTUFBTSxlQUE0RCxjQUFjLE1BQU0sSUFBSTtBQWlCbkYsTUFBTSx5QkFBMkMsb0JBQW9CLGNBQWMsSUFBSTtBQUU5RixNQUFNLDJCQUEyQjtBQTRCMUIsU0FBUyxvQkFBb0IsU0FBd0Q7QUFDMUYsNkNBQW9CO0FBRXBCLFVBQUksb0NBQWlCLHdCQUF3QixHQUFHO0FBQzlDLHdCQUFBQSxRQUFRLE9BQU8sTUFBTSx5QkFBeUIsd0JBQXdCO0FBQUEsQ0FBYTtBQUNuRix3QkFBQUEsUUFBUSxLQUFLLENBQUM7QUFBQSxFQUNoQjtBQUVBLFFBQU0sY0FBYyxJQUFJLElBQUksT0FBTyxTQUFLLGdDQUFvQixFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDNUUsUUFBTSxzQkFBc0IsQ0FBQyx3QkFBd0IsR0FBRyxPQUFPLE9BQU8sbUJBQW1CLEVBQUUsS0FBSyxDQUFDLEVBQzlGLE1BQU0sQ0FBQyxlQUFlLFlBQVksSUFBSSxVQUFVLENBQUM7QUFDcEQsUUFBTSx3QkFBd0IsU0FBUyx5QkFBeUIsQ0FBQztBQUNqRSxNQUFJLHVCQUF1QixPQUFPLEtBQUsscUJBQXFCLEVBQUUsV0FBVyxHQUFHO0FBQzFFLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxjQUFjLGNBQWMsQ0FBQyxlQUFlLFlBQVksSUFBSSxVQUFVLENBQUM7QUFDN0UsUUFBTSxtQkFBbUIsT0FBTyxLQUFLLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxZQUFZLE9BQU8sT0FBTyxhQUFhLE9BQU8sQ0FBQztBQUNqSCxNQUFJLHFCQUFxQixRQUFXO0FBQ2xDLFVBQU0sSUFBSSxNQUFNLCtCQUErQixnQkFBZ0IsdUNBQXVDO0FBQUEsRUFDeEc7QUFFQSxTQUFPLG9CQUFvQixFQUFFLEdBQUcsYUFBYSxHQUFHLHNCQUFzQixHQUFHLFlBQVksSUFBSSxzQkFBc0IsQ0FBQztBQUNsSDtBQWVBLFNBQVMsc0JBQXNCLFFBQWdCLGtCQUFpRDtBQUM5RixRQUFNLGtCQUFjLDJDQUE4QixFQUFFO0FBQ3BELFFBQU0sYUFBUyxzQ0FBeUIsSUFBSSw4QkFBMEIsMkNBQThCLE1BQU07QUFDMUcsUUFBTSxVQUFzQixDQUFDO0FBQzdCLE1BQUksUUFBa0IsQ0FBQztBQUN2QixNQUFJLGNBQWM7QUFFbEIsYUFBVyxtQkFBbUIsa0JBQWtCO0FBQzlDLFVBQU0scUJBQWlCLDJDQUE4QixLQUFLLGVBQWUsR0FBRyxJQUFJO0FBQ2hGLFFBQUksTUFBTSxTQUFTLEtBQUssY0FBYyxpQkFBaUIsUUFBUTtBQUM3RCxjQUFRLEtBQUssS0FBSztBQUNsQixjQUFRLENBQUM7QUFDVCxvQkFBYztBQUFBLElBQ2hCO0FBQ0EsVUFBTSxLQUFLLGVBQWU7QUFDMUIsbUJBQWU7QUFBQSxFQUNqQjtBQUVBLE1BQUksTUFBTSxTQUFTLEdBQUc7QUFDcEIsWUFBUSxLQUFLLEtBQUs7QUFBQSxFQUNwQjtBQUVBLFNBQU87QUFDVDtBQTRCQSxTQUFTLG9CQUFvQixhQUEwRCxrQkFBNkM7QUFDbEksTUFBSSxDQUFDLGtCQUFrQjtBQUNyQixXQUFPLE9BQU8sWUFBWSxPQUFPLFFBQVEsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsUUFBUSxNQUFNLENBQUMsU0FBUyxjQUFjLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFBQSxFQUN4SDtBQUVBLFFBQU0sV0FBVyxPQUFPLEtBQUssV0FBVztBQUN4QyxRQUFNLG1CQUFtQixTQUFTLEtBQUssQ0FBQyxZQUFZLFFBQVEsU0FBUyxHQUFHLENBQUM7QUFDekUsTUFBSSxxQkFBcUIsUUFBVztBQUNsQyxVQUFNLElBQUksTUFBTSwrQkFBK0IsZ0JBQWdCLGdFQUFnRTtBQUFBLEVBQ2pJO0FBR0EsUUFBTSxvQkFBb0IsU0FBUyxXQUFXLElBQUksTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLE1BQU0sRUFBRSxLQUFLLEdBQUcsQ0FBQztBQUNsSCxRQUFNLFNBQTJCO0FBQUEsSUFDL0IsQ0FBQyxpQkFBaUIsR0FBRyxjQUFjLENBQUMsa0JBQWtCLENBQUM7QUFBQSxFQUN6RDtBQUVBLGFBQVcsQ0FBQyxTQUFTLFFBQVEsS0FBSyxPQUFPLFFBQVEsV0FBVyxHQUFHO0FBQzdELFdBQU8sT0FBTyxJQUFJLGNBQWMsQ0FBQyxHQUFHLFVBQVUsa0JBQWtCLENBQUM7QUFBQSxFQUNuRTtBQUVBLFNBQU87QUFDVDtBQWtCQSxTQUFTLGNBQWMsVUFBNkM7QUFDbEUsU0FBTyxDQUFDLEVBQUUsVUFBVSxNQUFNO0FBQ3hCLFVBQU0sbUJBQW1CLFVBQVUsSUFBSSxDQUFDLGFBQWEsa0JBQWtCLFFBQVEsQ0FBQztBQUNoRixXQUFPLFNBQVMsUUFBUSxDQUFDLFlBQVksc0JBQXNCLFNBQVMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLElBQUksTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFBQSxFQUN2STtBQUNGO0FBa0JBLFNBQVMsa0JBQWtCLFVBQTBCO0FBQ25ELFFBQU0sbUJBQWUsMkJBQVMsb0JBQUFBLFFBQVEsSUFBSSxHQUFHLFFBQVE7QUFDckQsTUFBSSxtQkFBbUIsYUFBYSxXQUFXLElBQUksU0FBSyw2QkFBVyxZQUFZLElBQUksV0FBVyxjQUFjLFdBQVcsTUFBTSxHQUFHO0FBQ2hJLE1BQUksZ0JBQWdCLFdBQVcsR0FBRyxHQUFHO0FBQ25DLHNCQUFrQixLQUFLLGVBQWU7QUFBQSxFQUN4QztBQUNBLFNBQU8sZ0JBQWdCLFdBQVcscUNBQXFDLEdBQUc7QUFDNUU7QUFRQSxTQUFTLGdCQUFnQixZQUE0QjtBQUNuRCxTQUFPLEdBQUcsMkJBQTJCLElBQUksVUFBVTtBQUNyRDtBQVNBLFNBQVMsY0FBYyxxQkFBeUY7QUFDOUcsUUFBTSxjQUFpRCxDQUFDO0FBQ3hELGFBQVcsQ0FBQyxTQUFTLFdBQVcsS0FBSyxPQUFPLFFBQVEsbUJBQW1CLEdBQUc7QUFDeEUsVUFBTSxXQUFXLFlBQVksT0FBTyxDQUFDLGVBQWUsb0JBQW9CLFVBQVUsQ0FBQyxFQUFFLElBQUksQ0FBQyxlQUFlLGdCQUFnQixVQUFVLENBQUM7QUFDcEksUUFBSSxTQUFTLFNBQVMsR0FBRztBQUN2QixrQkFBWSxPQUFPLElBQUk7QUFBQSxJQUN6QjtBQUFBLEVBQ0Y7QUFDQSxTQUFPO0FBQ1Q7IiwKICAibmFtZXMiOiBbInByb2Nlc3MiXQp9Cg==
|
|
@@ -60,6 +60,12 @@ export declare const obsidianDevUtilsConfig: NanoStagedConfig;
|
|
|
60
60
|
* commit-msg hook still runs). Otherwise it returns {@link obsidianDevUtilsConfig}, or — when
|
|
61
61
|
* `additionalWriterTasks` are given — the same configuration re-partitioned with those writers added.
|
|
62
62
|
*
|
|
63
|
+
* A shared task whose npm script the project's `package.json` does not declare is left out, so a project
|
|
64
|
+
* without, say, markdownlint does not fail its first commit that stages a `.md` file on a missing script. A
|
|
65
|
+
* writer pattern left with no writer is dropped, and spellcheck runs only when `spellcheck` is declared, in
|
|
66
|
+
* which case its files fall to the spellcheck-only key. The `additionalWriterTasks` are the caller's own and
|
|
67
|
+
* are kept as given.
|
|
68
|
+
*
|
|
63
69
|
* `NANO_STAGED` is not an npm script, so it carries its own switch rather than the script-name-derived one
|
|
64
70
|
* every npm script gets — but both share the same notion of an off value, via {@link isEnvVariableOff}.
|
|
65
71
|
*
|
|
@@ -39,6 +39,8 @@ var RepoPaths = /* @__PURE__ */ ((RepoPaths2) => {
|
|
|
39
39
|
RepoPaths2["AnyTsx"] = "*.tsx";
|
|
40
40
|
RepoPaths2["BatExtension"] = ".bat";
|
|
41
41
|
RepoPaths2["Bin"] = ".bin";
|
|
42
|
+
RepoPaths2["BiomeJson"] = "biome.json";
|
|
43
|
+
RepoPaths2["BiomeJsonc"] = "biome.jsonc";
|
|
42
44
|
RepoPaths2["BunLock"] = "bun.lock";
|
|
43
45
|
RepoPaths2["BunLockb"] = "bun.lockb";
|
|
44
46
|
RepoPaths2["ChangelogMd"] = "CHANGELOG.md";
|
|
@@ -109,4 +111,4 @@ var RepoPaths = /* @__PURE__ */ ((RepoPaths2) => {
|
|
|
109
111
|
0 && (module.exports = {
|
|
110
112
|
RepoPaths
|
|
111
113
|
});
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3JlcG8tcGF0aHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb21tb24gZmlsZSBwYXRocyBhbmQgcGF0dGVybnMgdGhlIFR5cGVTY3JpcHQgcHJvamVjdCB0b29saW5nIHVzZXMsIHNvIHRoZSB0b29saW5nIG5ldmVyIHNwZWxscyB0aGVtIGFzXG4gKiBoYXJkY29kZWQgc3RyaW5ncy5cbiAqL1xuXG4vKipcbiAqIENvbW1vbiBmaWxlIHBhdGhzIGFuZCBwYXR0ZXJucyB1c2VkIGJ5IHRoZSBUeXBlU2NyaXB0IHByb2plY3QgdG9vbGluZy5cbiAqL1xuZXhwb3J0IGVudW0gUmVwb1BhdGhzIHtcbiAgLyoqXG4gIEFueSBmaWxlIG9yIGZvbGRlci5cbiAgICovXG4gIEFueSA9ICcqJyxcblxuICAvKipcbiAgQ29tbW9uSlMgZmlsZS5cbiAgICovXG4gIEFueUNqcyA9ICcqLmNqcycsXG5cbiAgLyoqXG4gIENvbW1vbkpTIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZS5cbiAgICovXG4gIEFueURjdHMgPSAnKi5kLmN0cycsXG5cbiAgLyoqXG4gIEVTTSBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUuXG4gICAqL1xuICBBbnlEbXRzID0gJyouZC5tdHMnLFxuXG4gIC8qKlxuICBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUuXG4gICAqL1xuICBBbnlEdHMgPSAnKi5kLnRzJyxcblxuICAvKipcbiAgRVNNIEphdmFTY3JpcHQgZmlsZS5cbiAgICovXG4gIEFueU1qcyA9ICcqLm1qcycsXG5cbiAgLyoqXG4gIEFueSBwYXRoIHJlY3Vyc2l2ZWx5LlxuICAgKi9cbiAgQW55UGF0aCA9ICcqKicsXG5cbiAgLyoqXG4gIEFueSB0ZXN0IFR5cGVTY3JpcHQgZmlsZS5cbiAgICovXG4gIEFueVRlc3RUcyA9ICcqLnRlc3QudHMnLFxuXG4gIC8qKlxuICBBbnkgVHlwZVNjcmlwdCBmaWxlLlxuICAgKi9cbiAgQW55VHMgPSAnKi50cycsXG5cbiAgLyoqXG4gIEFueSBUU1ggZmlsZS5cbiAgICovXG4gIEFueVRzeCA9ICcqLnRzeCcsXG5cbiAgLyoqXG4gIFdpbmRvd3MgYmF0Y2ggZmlsZSBleHRlbnNpb24uXG4gICAqL1xuICBCYXRFeHRlbnNpb24gPSAnLmJhdCcsXG5cbiAgLyoqXG4gIEZvbGRlciBob2xkaW5nIHRoZSBleGVjdXRhYmxlIHNoaW1zIG9mIGxvY2FsbHktaW5zdGFsbGVkIHBhY2thZ2VzLlxuICAgKi9cbiAgQmluID0gJy5iaW4nLFxuXG4gIC8qKlxuICBCdW4gbG9ja2ZpbGUuXG4gICAqL1xuICBCdW5Mb2NrID0gJ2J1bi5sb2NrJyxcblxuICAvKipcbiAgQmluYXJ5IGJ1biBsb2NrZmlsZSwgd3JpdHRlbiBieSBidW4gYmVmb3JlIHYxLjIuXG4gICAqL1xuICBCdW5Mb2NrYiA9ICdidW4ubG9ja2InLFxuXG4gIC8qKlxuICBDaGFuZ2Vsb2cgZmlsZS5cbiAgICovXG4gIENoYW5nZWxvZ01kID0gJ0NIQU5HRUxPRy5tZCcsXG5cbiAgLyoqXG4gIENvbW1vbkpTIGZvbGRlci5cbiAgICovXG4gIENqcyA9ICdjanMnLFxuXG4gIC8qKlxuICBDb21tb25KUyBmaWxlIGV4dGVuc2lvbi5cbiAgICovXG4gIENqc0V4dGVuc2lvbiA9ICcuY2pzJyxcblxuICAvKipcbiAgQ2xhdWRlIENvZGUncyB3b3JrdHJlZSBmb2xkZXIuIGBnaXQgd29ya3RyZWUgYWRkYCBwdXRzIGEgc2Vjb25kLCBjb21wbGV0ZSBjaGVja291dCBvZiB0aGUgcmVwb3NpdG9yeVxuICBoZXJlLCBJTlNJREUgdGhlIHJlcG9zaXRvcnksIHdoaWNoIGlzIHRoZSBvbmx5IHJlYXNvbiBhIHJlcG8gZXZlciBjb250YWlucyBhIGNvcHkgb2YgaXRzZWxmLiBOZXZlclxuICBzb3VyY2UsIHNvIGV2ZXJ5IGxpbnRlciB0aGF0IHdhbGtzIHRoZSB0cmVlIGhhcyB0byBza2lwIGl0LlxuICAgKi9cbiAgQ2xhdWRlV29ya3RyZWVzID0gJy5jbGF1ZGUvd29ya3RyZWVzJyxcblxuICAvKipcbiAgV2luZG93cyBjb21tYW5kIHNjcmlwdCBleHRlbnNpb24uXG4gICAqL1xuICBDb21tYW5kRXh0ZW5zaW9uID0gJy5jbWQnLFxuXG4gIC8qKlxuICBDb21taXRsaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIENvbW1pdGxpbnRDb25maWdUcyA9ICdjb21taXRsaW50LmNvbmZpZy50cycsXG5cbiAgLyoqXG4gIEN1cnJlbnQgZm9sZGVyLlxuICAgKi9cbiAgQ3VycmVudEZvbGRlciA9ICcuJyxcblxuICAvKipcbiAgQ29tbW9uSlMgVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlIGV4dGVuc2lvbi5cbiAgICovXG4gIERjdHNFeHRlbnNpb24gPSAnLmQuY3RzJyxcblxuICAvKipcbiAgRGlzdHJpYnV0aW9uIGZvbGRlci5cbiAgICovXG4gIERpc3QgPSAnZGlzdCcsXG5cbiAgLyoqXG4gIEEgcGF0aCB0byB0aGUgYGxpYmAgZm9sZGVyIHdpdGhpbiB0aGUge0BsaW5rIERpc3R9IGZvbGRlci5cbiAgICovXG4gIERpc3RMaWIgPSAnZGlzdC9saWInLFxuXG4gIC8qKlxuICBBIHBhdGggdG8gdGhlIGB0ZW1wbGF0ZXNgIGZvbGRlciB3aXRoaW4gdGhlIHtAbGluayBEaXN0fSBmb2xkZXIsIGhvbGRpbmcgdGhlIGNvbnN1bWVyLWZhY2luZyB0ZW1wbGF0ZXMuXG4gICAqL1xuICBEaXN0VGVtcGxhdGVzID0gJ2Rpc3QvdGVtcGxhdGVzJyxcblxuICAvKipcbiAgVHJhbnNwaWxlZCBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUgZXh0ZW5zaW9uLlxuICAgKi9cbiAgRGpzRXh0ZW5zaW9uID0gJy5kLmpzJyxcblxuICAvKipcbiAgRVNNIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZSBleHRlbnNpb24uXG4gICAqL1xuICBEbXRzRXh0ZW5zaW9uID0gJy5kLm10cycsXG5cbiAgLyoqXG4gIE9ic2lkaWFuIGNvbmZpZ3VyYXRpb24gZm9sZGVyIHdpdGhpbiBhIHZhdWx0LlxuICAgKi9cbiAgRG90T2JzaWRpYW4gPSAnLm9ic2lkaWFuJyxcblxuICAvKipcbiAgRHByaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIERwcmludEpzb24gPSAnZHByaW50Lmpzb24nLFxuXG4gIC8qKlxuICBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUgZXh0ZW5zaW9uLlxuICAgKi9cbiAgRHRzRXh0ZW5zaW9uID0gJy5kLnRzJyxcblxuICAvKipcbiAgQ29tbW9uSlMgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ0NqcyA9ICdlc2xpbnQuY29uZmlnLmNqcycsXG5cbiAgLyoqXG4gIENvbW1vbkpTIFR5cGVTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ0N0cyA9ICdlc2xpbnQuY29uZmlnLmN0cycsXG5cbiAgLyoqXG4gIEphdmFTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ0pzID0gJ2VzbGludC5jb25maWcuanMnLFxuXG4gIC8qKlxuICBFU00gSmF2YVNjcmlwdCBFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgRXNsaW50Q29uZmlnTWpzID0gJ2VzbGludC5jb25maWcubWpzJyxcblxuICAvKipcbiAgRVNNIFR5cGVTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ010cyA9ICdlc2xpbnQuY29uZmlnLm10cycsXG5cbiAgLyoqXG4gIFR5cGVTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ1RzID0gJ2VzbGludC5jb25maWcudHMnLFxuXG4gIC8qKlxuICBFU00gSmF2YVNjcmlwdCBmb2xkZXIuXG4gICAqL1xuICBFc20gPSAnZXNtJyxcblxuICAvKipcbiAgV2luZG93cyBleGVjdXRhYmxlIGV4dGVuc2lvbi5cbiAgICovXG4gIEV4ZUV4dGVuc2lvbiA9ICcuZXhlJyxcblxuICAvKipcbiAgQ29tbW9uSlMgSmF2YVNjcmlwdCBpbmRleCBmaWxlLlxuICAgKi9cbiAgSW5kZXhDanMgPSAnaW5kZXguY2pzJyxcblxuICAvKipcbiAgQ29tbW9uSlMgVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlIGluZGV4IGZpbGUuXG4gICAqL1xuICBJbmRleERjdHMgPSAnaW5kZXguZC5jdHMnLFxuXG4gIC8qKlxuICBFU00gVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlIGluZGV4IGZpbGUuXG4gICAqL1xuICBJbmRleERtdHMgPSAnaW5kZXguZC5tdHMnLFxuXG4gIC8qKlxuICBFU00gSmF2YVNjcmlwdCBpbmRleCBmaWxlLlxuICAgKi9cbiAgSW5kZXhNanMgPSAnaW5kZXgubWpzJyxcblxuICAvKipcbiAgVHlwZVNjcmlwdCBpbmRleCBmaWxlLlxuICAgKi9cbiAgSW5kZXhUcyA9ICdpbmRleC50cycsXG5cbiAgLyoqXG4gIEphdmFTY3JpcHQgZmlsZSBleHRlbnNpb24uXG4gICAqL1xuICBKc0V4dGVuc2lvbiA9ICcuanMnLFxuXG4gIC8qKlxuICBDb21tb25KUyBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDbGkyQ29uZmlnQ2pzID0gJy5tYXJrZG93bmxpbnQtY2xpMi5janMnLFxuXG4gIC8qKlxuICBKU09OQyBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDbGkyQ29uZmlnSnNvbmMgPSAnLm1hcmtkb3dubGludC1jbGkyLmpzb25jJyxcblxuICAvKipcbiAgRVNNIE1hcmtkb3dubGludCBDTEkyIGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIE1hcmtkb3dubGludENsaTJDb25maWdNanMgPSAnLm1hcmtkb3dubGludC1jbGkyLm1qcycsXG5cbiAgLyoqXG4gIFlBTUwgTWFya2Rvd25saW50IENMSTIgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q2xpMkNvbmZpZ1lhbWwgPSAnLm1hcmtkb3dubGludC1jbGkyLnlhbWwnLFxuXG4gIC8qKlxuICBDb21tb25KUyBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnQ2pzID0gJy5tYXJrZG93bmxpbnQuY2pzJyxcblxuICAvKipcbiAgSlNPTiBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnSnNvbiA9ICcubWFya2Rvd25saW50Lmpzb24nLFxuXG4gIC8qKlxuICBKU09OQyBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnSnNvbmMgPSAnLm1hcmtkb3dubGludC5qc29uYycsXG5cbiAgLyoqXG4gIEVTTSBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnTWpzID0gJy5tYXJrZG93bmxpbnQubWpzJyxcblxuICAvKipcbiAgWUFNTCBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnWWFtbCA9ICcubWFya2Rvd25saW50LnlhbWwnLFxuXG4gIC8qKlxuICBZQU1MIE1hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDb25maWdZbWwgPSAnLm1hcmtkb3dubGludC55bWwnLFxuXG4gIC8qKlxuICBFU00gSmF2YVNjcmlwdCBmaWxlIGV4dGVuc2lvbi5cbiAgICovXG4gIE1qc0V4dGVuc2lvbiA9ICcubWpzJyxcblxuICAvKipcbiAgVGVzdCBtb2NrcyBmb2xkZXIuXG4gICAqL1xuICBNb2NrcyA9ICdzcmMvdGVzdC1oZWxwZXJzJyxcblxuICAvKipcbiAgTm9kZSBtb2R1bGVzIGZvbGRlci5cbiAgICovXG4gIE5vZGVNb2R1bGVzID0gJ25vZGVfbW9kdWxlcycsXG5cbiAgLyoqXG4gIE5QTSBzaHJpbmt3cmFwIGZpbGUuXG4gICAqL1xuICBOcG1TaHJpbmt3cmFwSnNvbiA9ICducG0tc2hyaW5rd3JhcC5qc29uJyxcblxuICAvKipcbiAgUGFja2FnZSBKU09OIGZpbGUuXG4gICAqL1xuICBQYWNrYWdlSnNvbiA9ICdwYWNrYWdlLmpzb24nLFxuXG4gIC8qKlxuICBOUE0gbG9ja2ZpbGUuXG4gICAqL1xuICBQYWNrYWdlTG9ja0pzb24gPSAncGFja2FnZS1sb2NrLmpzb24nLFxuXG4gIC8qKlxuICBQbnBtIGxvY2tmaWxlLlxuICAgKi9cbiAgUG5wbUxvY2tZYW1sID0gJ3BucG0tbG9jay55YW1sJyxcblxuICAvKipcbiAgUm9vdCBmb2xkZXIuXG4gICAqL1xuICBSb290Rm9sZGVyID0gJy8nLFxuXG4gIC8qKlxuICBTY3JpcHRzIGZvbGRlci5cbiAgICovXG4gIFNjcmlwdHMgPSAnc2NyaXB0cycsXG5cbiAgLyoqXG4gIFNvdXJjZSBmb2xkZXIuXG4gICAqL1xuICBTcmMgPSAnc3JjJyxcblxuICAvKipcbiAgU3R5bGVzIGZvbGRlci5cbiAgICovXG4gIFN0eWxlcyA9ICdzdHlsZXMnLFxuXG4gIC8qKlxuICBTdHlsZXMgQ1NTIGZpbGUuXG4gICAqL1xuICBTdHlsZXNDc3MgPSAnc3R5bGVzLmNzcycsXG5cbiAgLyoqXG4gIFRlbXBsYXRlcyBmb2xkZXIuXG4gICAqL1xuICBUZW1wbGF0ZXMgPSAndGVtcGxhdGVzJyxcblxuICAvKipcbiAgVGVzdCBoZWxwZXJzIGZvbGRlci5cbiAgICovXG4gIFRlc3RIZWxwZXJzID0gJ3Rlc3QtaGVscGVycycsXG5cbiAgLyoqXG4gIFRlc3RzIGZvbGRlci5cbiAgICovXG4gIFRlc3RzID0gJ19fdGVzdHNfXycsXG5cbiAgLyoqXG4gIFR5cGVTY3JpcHQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgVHNDb25maWdKc29uID0gJ3RzY29uZmlnLmpzb24nLFxuXG4gIC8qKlxuICBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZSB0aGF0IHZhbGlkYXRlcyB0aGUgZ2VuZXJhdGVkIENvbW1vbkpTIGRlY2xhcmF0aW9ucy5cbiAgICovXG4gIFRzQ29uZmlnVmFsaWRhdGVEZWNsYXJhdGlvbnNDanNKc29uID0gJ3RzY29uZmlnLnZhbGlkYXRlLWRlY2xhcmF0aW9ucy1janMuanNvbicsXG5cbiAgLyoqXG4gIFR5cGVTY3JpcHQgY29uZmlndXJhdGlvbiBmaWxlIHRoYXQgdmFsaWRhdGVzIHRoZSBnZW5lcmF0ZWQgRVNNIGRlY2xhcmF0aW9ucy5cbiAgICovXG4gIFRzQ29uZmlnVmFsaWRhdGVEZWNsYXJhdGlvbnNKc29uID0gJ3RzY29uZmlnLnZhbGlkYXRlLWRlY2xhcmF0aW9ucy5qc29uJyxcblxuICAvKipcbiAgVHlwZVNjcmlwdCBmaWxlIGV4dGVuc2lvbi5cbiAgICovXG4gIFRzRXh0ZW5zaW9uID0gJy50cycsXG5cbiAgLyoqXG4gIFR5cGVzIGZvbGRlci5cbiAgICovXG4gIFR5cGVzID0gJ0B0eXBlcycsXG5cbiAgLyoqXG4gIFZpdGVzdCBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBWaXRlc3RDb25maWdUcyA9ICd2aXRlc3QuY29uZmlnLnRzJyxcblxuICAvKipcbiAgWWFybiBsb2NrZmlsZS5cbiAgICovXG4gIFlhcm5Mb2NrID0gJ3lhcm4ubG9jaydcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVVPLElBQUssWUFBTCxrQkFBS0EsZUFBTDtBQUlMLEVBQUFBLFdBQUEsU0FBTTtBQUtOLEVBQUFBLFdBQUEsWUFBUztBQUtULEVBQUFBLFdBQUEsYUFBVTtBQUtWLEVBQUFBLFdBQUEsYUFBVTtBQUtWLEVBQUFBLFdBQUEsWUFBUztBQUtULEVBQUFBLFdBQUEsWUFBUztBQUtULEVBQUFBLFdBQUEsYUFBVTtBQUtWLEVBQUFBLFdBQUEsZUFBWTtBQUtaLEVBQUFBLFdBQUEsV0FBUTtBQUtSLEVBQUFBLFdBQUEsWUFBUztBQUtULEVBQUFBLFdBQUEsa0JBQWU7QUFLZixFQUFBQSxXQUFBLFNBQU07QUFLTixFQUFBQSxXQUFBLGFBQVU7QUFLVixFQUFBQSxXQUFBLGNBQVc7QUFLWCxFQUFBQSxXQUFBLGlCQUFjO0FBS2QsRUFBQUEsV0FBQSxTQUFNO0FBS04sRUFBQUEsV0FBQSxrQkFBZTtBQU9mLEVBQUFBLFdBQUEscUJBQWtCO0FBS2xCLEVBQUFBLFdBQUEsc0JBQW1CO0FBS25CLEVBQUFBLFdBQUEsd0JBQXFCO0FBS3JCLEVBQUFBLFdBQUEsbUJBQWdCO0FBS2hCLEVBQUFBLFdBQUEsbUJBQWdCO0FBS2hCLEVBQUFBLFdBQUEsVUFBTztBQUtQLEVBQUFBLFdBQUEsYUFBVTtBQUtWLEVBQUFBLFdBQUEsbUJBQWdCO0FBS2hCLEVBQUFBLFdBQUEsa0JBQWU7QUFLZixFQUFBQSxXQUFBLG1CQUFnQjtBQUtoQixFQUFBQSxXQUFBLGlCQUFjO0FBS2QsRUFBQUEsV0FBQSxnQkFBYTtBQUtiLEVBQUFBLFdBQUEsa0JBQWU7QUFLZixFQUFBQSxXQUFBLHFCQUFrQjtBQUtsQixFQUFBQSxXQUFBLHFCQUFrQjtBQUtsQixFQUFBQSxXQUFBLG9CQUFpQjtBQUtqQixFQUFBQSxXQUFBLHFCQUFrQjtBQUtsQixFQUFBQSxXQUFBLHFCQUFrQjtBQUtsQixFQUFBQSxXQUFBLG9CQUFpQjtBQUtqQixFQUFBQSxXQUFBLFNBQU07QUFLTixFQUFBQSxXQUFBLGtCQUFlO0FBS2YsRUFBQUEsV0FBQSxjQUFXO0FBS1gsRUFBQUEsV0FBQSxlQUFZO0FBS1osRUFBQUEsV0FBQSxlQUFZO0FBS1osRUFBQUEsV0FBQSxjQUFXO0FBS1gsRUFBQUEsV0FBQSxhQUFVO0FBS1YsRUFBQUEsV0FBQSxpQkFBYztBQUtkLEVBQUFBLFdBQUEsK0JBQTRCO0FBSzVCLEVBQUFBLFdBQUEsaUNBQThCO0FBSzlCLEVBQUFBLFdBQUEsK0JBQTRCO0FBSzVCLEVBQUFBLFdBQUEsZ0NBQTZCO0FBSzdCLEVBQUFBLFdBQUEsMkJBQXdCO0FBS3hCLEVBQUFBLFdBQUEsNEJBQXlCO0FBS3pCLEVBQUFBLFdBQUEsNkJBQTBCO0FBSzFCLEVBQUFBLFdBQUEsMkJBQXdCO0FBS3hCLEVBQUFBLFdBQUEsNEJBQXlCO0FBS3pCLEVBQUFBLFdBQUEsMkJBQXdCO0FBS3hCLEVBQUFBLFdBQUEsa0JBQWU7QUFLZixFQUFBQSxXQUFBLFdBQVE7QUFLUixFQUFBQSxXQUFBLGlCQUFjO0FBS2QsRUFBQUEsV0FBQSx1QkFBb0I7QUFLcEIsRUFBQUEsV0FBQSxpQkFBYztBQUtkLEVBQUFBLFdBQUEscUJBQWtCO0FBS2xCLEVBQUFBLFdBQUEsa0JBQWU7QUFLZixFQUFBQSxXQUFBLGdCQUFhO0FBS2IsRUFBQUEsV0FBQSxhQUFVO0FBS1YsRUFBQUEsV0FBQSxTQUFNO0FBS04sRUFBQUEsV0FBQSxZQUFTO0FBS1QsRUFBQUEsV0FBQSxlQUFZO0FBS1osRUFBQUEsV0FBQSxlQUFZO0FBS1osRUFBQUEsV0FBQSxpQkFBYztBQUtkLEVBQUFBLFdBQUEsV0FBUTtBQUtSLEVBQUFBLFdBQUEsa0JBQWU7QUFLZixFQUFBQSxXQUFBLHlDQUFzQztBQUt0QyxFQUFBQSxXQUFBLHNDQUFtQztBQUtuQyxFQUFBQSxXQUFBLGlCQUFjO0FBS2QsRUFBQUEsV0FBQSxXQUFRO0FBS1IsRUFBQUEsV0FBQSxvQkFBaUI7QUFLakIsRUFBQUEsV0FBQSxjQUFXO0FBN1hELFNBQUFBO0FBQUEsR0FBQTsiLAogICJuYW1lcyI6IFsiUmVwb1BhdGhzIl0KfQo=
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3JlcG8tcGF0aHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb21tb24gZmlsZSBwYXRocyBhbmQgcGF0dGVybnMgdGhlIFR5cGVTY3JpcHQgcHJvamVjdCB0b29saW5nIHVzZXMsIHNvIHRoZSB0b29saW5nIG5ldmVyIHNwZWxscyB0aGVtIGFzXG4gKiBoYXJkY29kZWQgc3RyaW5ncy5cbiAqL1xuXG4vKipcbiAqIENvbW1vbiBmaWxlIHBhdGhzIGFuZCBwYXR0ZXJucyB1c2VkIGJ5IHRoZSBUeXBlU2NyaXB0IHByb2plY3QgdG9vbGluZy5cbiAqL1xuZXhwb3J0IGVudW0gUmVwb1BhdGhzIHtcbiAgLyoqXG4gIEFueSBmaWxlIG9yIGZvbGRlci5cbiAgICovXG4gIEFueSA9ICcqJyxcblxuICAvKipcbiAgQ29tbW9uSlMgZmlsZS5cbiAgICovXG4gIEFueUNqcyA9ICcqLmNqcycsXG5cbiAgLyoqXG4gIENvbW1vbkpTIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZS5cbiAgICovXG4gIEFueURjdHMgPSAnKi5kLmN0cycsXG5cbiAgLyoqXG4gIEVTTSBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUuXG4gICAqL1xuICBBbnlEbXRzID0gJyouZC5tdHMnLFxuXG4gIC8qKlxuICBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUuXG4gICAqL1xuICBBbnlEdHMgPSAnKi5kLnRzJyxcblxuICAvKipcbiAgRVNNIEphdmFTY3JpcHQgZmlsZS5cbiAgICovXG4gIEFueU1qcyA9ICcqLm1qcycsXG5cbiAgLyoqXG4gIEFueSBwYXRoIHJlY3Vyc2l2ZWx5LlxuICAgKi9cbiAgQW55UGF0aCA9ICcqKicsXG5cbiAgLyoqXG4gIEFueSB0ZXN0IFR5cGVTY3JpcHQgZmlsZS5cbiAgICovXG4gIEFueVRlc3RUcyA9ICcqLnRlc3QudHMnLFxuXG4gIC8qKlxuICBBbnkgVHlwZVNjcmlwdCBmaWxlLlxuICAgKi9cbiAgQW55VHMgPSAnKi50cycsXG5cbiAgLyoqXG4gIEFueSBUU1ggZmlsZS5cbiAgICovXG4gIEFueVRzeCA9ICcqLnRzeCcsXG5cbiAgLyoqXG4gIFdpbmRvd3MgYmF0Y2ggZmlsZSBleHRlbnNpb24uXG4gICAqL1xuICBCYXRFeHRlbnNpb24gPSAnLmJhdCcsXG5cbiAgLyoqXG4gIEZvbGRlciBob2xkaW5nIHRoZSBleGVjdXRhYmxlIHNoaW1zIG9mIGxvY2FsbHktaW5zdGFsbGVkIHBhY2thZ2VzLlxuICAgKi9cbiAgQmluID0gJy5iaW4nLFxuXG4gIC8qKlxuICBCaW9tZSBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBCaW9tZUpzb24gPSAnYmlvbWUuanNvbicsXG5cbiAgLyoqXG4gIEJpb21lIGNvbmZpZ3VyYXRpb24gZmlsZSwgd2l0aCBjb21tZW50cy5cbiAgICovXG4gIEJpb21lSnNvbmMgPSAnYmlvbWUuanNvbmMnLFxuXG4gIC8qKlxuICBCdW4gbG9ja2ZpbGUuXG4gICAqL1xuICBCdW5Mb2NrID0gJ2J1bi5sb2NrJyxcblxuICAvKipcbiAgQmluYXJ5IGJ1biBsb2NrZmlsZSwgd3JpdHRlbiBieSBidW4gYmVmb3JlIHYxLjIuXG4gICAqL1xuICBCdW5Mb2NrYiA9ICdidW4ubG9ja2InLFxuXG4gIC8qKlxuICBDaGFuZ2Vsb2cgZmlsZS5cbiAgICovXG4gIENoYW5nZWxvZ01kID0gJ0NIQU5HRUxPRy5tZCcsXG5cbiAgLyoqXG4gIENvbW1vbkpTIGZvbGRlci5cbiAgICovXG4gIENqcyA9ICdjanMnLFxuXG4gIC8qKlxuICBDb21tb25KUyBmaWxlIGV4dGVuc2lvbi5cbiAgICovXG4gIENqc0V4dGVuc2lvbiA9ICcuY2pzJyxcblxuICAvKipcbiAgQ2xhdWRlIENvZGUncyB3b3JrdHJlZSBmb2xkZXIuIGBnaXQgd29ya3RyZWUgYWRkYCBwdXRzIGEgc2Vjb25kLCBjb21wbGV0ZSBjaGVja291dCBvZiB0aGUgcmVwb3NpdG9yeVxuICBoZXJlLCBJTlNJREUgdGhlIHJlcG9zaXRvcnksIHdoaWNoIGlzIHRoZSBvbmx5IHJlYXNvbiBhIHJlcG8gZXZlciBjb250YWlucyBhIGNvcHkgb2YgaXRzZWxmLiBOZXZlclxuICBzb3VyY2UsIHNvIGV2ZXJ5IGxpbnRlciB0aGF0IHdhbGtzIHRoZSB0cmVlIGhhcyB0byBza2lwIGl0LlxuICAgKi9cbiAgQ2xhdWRlV29ya3RyZWVzID0gJy5jbGF1ZGUvd29ya3RyZWVzJyxcblxuICAvKipcbiAgV2luZG93cyBjb21tYW5kIHNjcmlwdCBleHRlbnNpb24uXG4gICAqL1xuICBDb21tYW5kRXh0ZW5zaW9uID0gJy5jbWQnLFxuXG4gIC8qKlxuICBDb21taXRsaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIENvbW1pdGxpbnRDb25maWdUcyA9ICdjb21taXRsaW50LmNvbmZpZy50cycsXG5cbiAgLyoqXG4gIEN1cnJlbnQgZm9sZGVyLlxuICAgKi9cbiAgQ3VycmVudEZvbGRlciA9ICcuJyxcblxuICAvKipcbiAgQ29tbW9uSlMgVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlIGV4dGVuc2lvbi5cbiAgICovXG4gIERjdHNFeHRlbnNpb24gPSAnLmQuY3RzJyxcblxuICAvKipcbiAgRGlzdHJpYnV0aW9uIGZvbGRlci5cbiAgICovXG4gIERpc3QgPSAnZGlzdCcsXG5cbiAgLyoqXG4gIEEgcGF0aCB0byB0aGUgYGxpYmAgZm9sZGVyIHdpdGhpbiB0aGUge0BsaW5rIERpc3R9IGZvbGRlci5cbiAgICovXG4gIERpc3RMaWIgPSAnZGlzdC9saWInLFxuXG4gIC8qKlxuICBBIHBhdGggdG8gdGhlIGB0ZW1wbGF0ZXNgIGZvbGRlciB3aXRoaW4gdGhlIHtAbGluayBEaXN0fSBmb2xkZXIsIGhvbGRpbmcgdGhlIGNvbnN1bWVyLWZhY2luZyB0ZW1wbGF0ZXMuXG4gICAqL1xuICBEaXN0VGVtcGxhdGVzID0gJ2Rpc3QvdGVtcGxhdGVzJyxcblxuICAvKipcbiAgVHJhbnNwaWxlZCBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUgZXh0ZW5zaW9uLlxuICAgKi9cbiAgRGpzRXh0ZW5zaW9uID0gJy5kLmpzJyxcblxuICAvKipcbiAgRVNNIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZSBleHRlbnNpb24uXG4gICAqL1xuICBEbXRzRXh0ZW5zaW9uID0gJy5kLm10cycsXG5cbiAgLyoqXG4gIE9ic2lkaWFuIGNvbmZpZ3VyYXRpb24gZm9sZGVyIHdpdGhpbiBhIHZhdWx0LlxuICAgKi9cbiAgRG90T2JzaWRpYW4gPSAnLm9ic2lkaWFuJyxcblxuICAvKipcbiAgRHByaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIERwcmludEpzb24gPSAnZHByaW50Lmpzb24nLFxuXG4gIC8qKlxuICBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUgZXh0ZW5zaW9uLlxuICAgKi9cbiAgRHRzRXh0ZW5zaW9uID0gJy5kLnRzJyxcblxuICAvKipcbiAgQ29tbW9uSlMgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ0NqcyA9ICdlc2xpbnQuY29uZmlnLmNqcycsXG5cbiAgLyoqXG4gIENvbW1vbkpTIFR5cGVTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ0N0cyA9ICdlc2xpbnQuY29uZmlnLmN0cycsXG5cbiAgLyoqXG4gIEphdmFTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ0pzID0gJ2VzbGludC5jb25maWcuanMnLFxuXG4gIC8qKlxuICBFU00gSmF2YVNjcmlwdCBFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgRXNsaW50Q29uZmlnTWpzID0gJ2VzbGludC5jb25maWcubWpzJyxcblxuICAvKipcbiAgRVNNIFR5cGVTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ010cyA9ICdlc2xpbnQuY29uZmlnLm10cycsXG5cbiAgLyoqXG4gIFR5cGVTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ1RzID0gJ2VzbGludC5jb25maWcudHMnLFxuXG4gIC8qKlxuICBFU00gSmF2YVNjcmlwdCBmb2xkZXIuXG4gICAqL1xuICBFc20gPSAnZXNtJyxcblxuICAvKipcbiAgV2luZG93cyBleGVjdXRhYmxlIGV4dGVuc2lvbi5cbiAgICovXG4gIEV4ZUV4dGVuc2lvbiA9ICcuZXhlJyxcblxuICAvKipcbiAgQ29tbW9uSlMgSmF2YVNjcmlwdCBpbmRleCBmaWxlLlxuICAgKi9cbiAgSW5kZXhDanMgPSAnaW5kZXguY2pzJyxcblxuICAvKipcbiAgQ29tbW9uSlMgVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlIGluZGV4IGZpbGUuXG4gICAqL1xuICBJbmRleERjdHMgPSAnaW5kZXguZC5jdHMnLFxuXG4gIC8qKlxuICBFU00gVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlIGluZGV4IGZpbGUuXG4gICAqL1xuICBJbmRleERtdHMgPSAnaW5kZXguZC5tdHMnLFxuXG4gIC8qKlxuICBFU00gSmF2YVNjcmlwdCBpbmRleCBmaWxlLlxuICAgKi9cbiAgSW5kZXhNanMgPSAnaW5kZXgubWpzJyxcblxuICAvKipcbiAgVHlwZVNjcmlwdCBpbmRleCBmaWxlLlxuICAgKi9cbiAgSW5kZXhUcyA9ICdpbmRleC50cycsXG5cbiAgLyoqXG4gIEphdmFTY3JpcHQgZmlsZSBleHRlbnNpb24uXG4gICAqL1xuICBKc0V4dGVuc2lvbiA9ICcuanMnLFxuXG4gIC8qKlxuICBDb21tb25KUyBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDbGkyQ29uZmlnQ2pzID0gJy5tYXJrZG93bmxpbnQtY2xpMi5janMnLFxuXG4gIC8qKlxuICBKU09OQyBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDbGkyQ29uZmlnSnNvbmMgPSAnLm1hcmtkb3dubGludC1jbGkyLmpzb25jJyxcblxuICAvKipcbiAgRVNNIE1hcmtkb3dubGludCBDTEkyIGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIE1hcmtkb3dubGludENsaTJDb25maWdNanMgPSAnLm1hcmtkb3dubGludC1jbGkyLm1qcycsXG5cbiAgLyoqXG4gIFlBTUwgTWFya2Rvd25saW50IENMSTIgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q2xpMkNvbmZpZ1lhbWwgPSAnLm1hcmtkb3dubGludC1jbGkyLnlhbWwnLFxuXG4gIC8qKlxuICBDb21tb25KUyBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnQ2pzID0gJy5tYXJrZG93bmxpbnQuY2pzJyxcblxuICAvKipcbiAgSlNPTiBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnSnNvbiA9ICcubWFya2Rvd25saW50Lmpzb24nLFxuXG4gIC8qKlxuICBKU09OQyBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnSnNvbmMgPSAnLm1hcmtkb3dubGludC5qc29uYycsXG5cbiAgLyoqXG4gIEVTTSBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnTWpzID0gJy5tYXJrZG93bmxpbnQubWpzJyxcblxuICAvKipcbiAgWUFNTCBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnWWFtbCA9ICcubWFya2Rvd25saW50LnlhbWwnLFxuXG4gIC8qKlxuICBZQU1MIE1hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDb25maWdZbWwgPSAnLm1hcmtkb3dubGludC55bWwnLFxuXG4gIC8qKlxuICBFU00gSmF2YVNjcmlwdCBmaWxlIGV4dGVuc2lvbi5cbiAgICovXG4gIE1qc0V4dGVuc2lvbiA9ICcubWpzJyxcblxuICAvKipcbiAgVGVzdCBtb2NrcyBmb2xkZXIuXG4gICAqL1xuICBNb2NrcyA9ICdzcmMvdGVzdC1oZWxwZXJzJyxcblxuICAvKipcbiAgTm9kZSBtb2R1bGVzIGZvbGRlci5cbiAgICovXG4gIE5vZGVNb2R1bGVzID0gJ25vZGVfbW9kdWxlcycsXG5cbiAgLyoqXG4gIE5QTSBzaHJpbmt3cmFwIGZpbGUuXG4gICAqL1xuICBOcG1TaHJpbmt3cmFwSnNvbiA9ICducG0tc2hyaW5rd3JhcC5qc29uJyxcblxuICAvKipcbiAgUGFja2FnZSBKU09OIGZpbGUuXG4gICAqL1xuICBQYWNrYWdlSnNvbiA9ICdwYWNrYWdlLmpzb24nLFxuXG4gIC8qKlxuICBOUE0gbG9ja2ZpbGUuXG4gICAqL1xuICBQYWNrYWdlTG9ja0pzb24gPSAncGFja2FnZS1sb2NrLmpzb24nLFxuXG4gIC8qKlxuICBQbnBtIGxvY2tmaWxlLlxuICAgKi9cbiAgUG5wbUxvY2tZYW1sID0gJ3BucG0tbG9jay55YW1sJyxcblxuICAvKipcbiAgUm9vdCBmb2xkZXIuXG4gICAqL1xuICBSb290Rm9sZGVyID0gJy8nLFxuXG4gIC8qKlxuICBTY3JpcHRzIGZvbGRlci5cbiAgICovXG4gIFNjcmlwdHMgPSAnc2NyaXB0cycsXG5cbiAgLyoqXG4gIFNvdXJjZSBmb2xkZXIuXG4gICAqL1xuICBTcmMgPSAnc3JjJyxcblxuICAvKipcbiAgU3R5bGVzIGZvbGRlci5cbiAgICovXG4gIFN0eWxlcyA9ICdzdHlsZXMnLFxuXG4gIC8qKlxuICBTdHlsZXMgQ1NTIGZpbGUuXG4gICAqL1xuICBTdHlsZXNDc3MgPSAnc3R5bGVzLmNzcycsXG5cbiAgLyoqXG4gIFRlbXBsYXRlcyBmb2xkZXIuXG4gICAqL1xuICBUZW1wbGF0ZXMgPSAndGVtcGxhdGVzJyxcblxuICAvKipcbiAgVGVzdCBoZWxwZXJzIGZvbGRlci5cbiAgICovXG4gIFRlc3RIZWxwZXJzID0gJ3Rlc3QtaGVscGVycycsXG5cbiAgLyoqXG4gIFRlc3RzIGZvbGRlci5cbiAgICovXG4gIFRlc3RzID0gJ19fdGVzdHNfXycsXG5cbiAgLyoqXG4gIFR5cGVTY3JpcHQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgVHNDb25maWdKc29uID0gJ3RzY29uZmlnLmpzb24nLFxuXG4gIC8qKlxuICBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZSB0aGF0IHZhbGlkYXRlcyB0aGUgZ2VuZXJhdGVkIENvbW1vbkpTIGRlY2xhcmF0aW9ucy5cbiAgICovXG4gIFRzQ29uZmlnVmFsaWRhdGVEZWNsYXJhdGlvbnNDanNKc29uID0gJ3RzY29uZmlnLnZhbGlkYXRlLWRlY2xhcmF0aW9ucy1janMuanNvbicsXG5cbiAgLyoqXG4gIFR5cGVTY3JpcHQgY29uZmlndXJhdGlvbiBmaWxlIHRoYXQgdmFsaWRhdGVzIHRoZSBnZW5lcmF0ZWQgRVNNIGRlY2xhcmF0aW9ucy5cbiAgICovXG4gIFRzQ29uZmlnVmFsaWRhdGVEZWNsYXJhdGlvbnNKc29uID0gJ3RzY29uZmlnLnZhbGlkYXRlLWRlY2xhcmF0aW9ucy5qc29uJyxcblxuICAvKipcbiAgVHlwZVNjcmlwdCBmaWxlIGV4dGVuc2lvbi5cbiAgICovXG4gIFRzRXh0ZW5zaW9uID0gJy50cycsXG5cbiAgLyoqXG4gIFR5cGVzIGZvbGRlci5cbiAgICovXG4gIFR5cGVzID0gJ0B0eXBlcycsXG5cbiAgLyoqXG4gIFZpdGVzdCBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBWaXRlc3RDb25maWdUcyA9ICd2aXRlc3QuY29uZmlnLnRzJyxcblxuICAvKipcbiAgWWFybiBsb2NrZmlsZS5cbiAgICovXG4gIFlhcm5Mb2NrID0gJ3lhcm4ubG9jaydcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
@@ -58,6 +58,14 @@ export declare enum RepoPaths {
|
|
|
58
58
|
*/
|
|
59
59
|
Bin = ".bin",
|
|
60
60
|
/**
|
|
61
|
+
Biome configuration file.
|
|
62
|
+
*/
|
|
63
|
+
BiomeJson = "biome.json",
|
|
64
|
+
/**
|
|
65
|
+
Biome configuration file, with comments.
|
|
66
|
+
*/
|
|
67
|
+
BiomeJsonc = "biome.jsonc",
|
|
68
|
+
/**
|
|
61
69
|
Bun lockfile.
|
|
62
70
|
*/
|
|
63
71
|
BunLock = "bun.lock",
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
9
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
10
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
+
var __export = (target, all) => {
|
|
12
|
+
for (var name in all)
|
|
13
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
14
|
+
};
|
|
15
|
+
var __copyProps = (to, from, except, desc) => {
|
|
16
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
17
|
+
for (let key of __getOwnPropNames(from))
|
|
18
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
19
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
20
|
+
}
|
|
21
|
+
return to;
|
|
22
|
+
};
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var shared_config_files_exports = {};
|
|
25
|
+
__export(shared_config_files_exports, {
|
|
26
|
+
SharedConfigFile: () => SharedConfigFile,
|
|
27
|
+
getSharedConfigFilePath: () => getSharedConfigFilePath
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(shared_config_files_exports);
|
|
30
|
+
var import_node_fs = require('node:fs');
|
|
31
|
+
var import_node_path = require('node:path');
|
|
32
|
+
var import_node_url = require('node:url');
|
|
33
|
+
var __import_meta_url = globalThis["import.meta.url"] ?? (function getCjsImportMetaUrl() {
|
|
34
|
+
if (typeof __filename === "string") {
|
|
35
|
+
const localRequire = require;
|
|
36
|
+
const url = localRequire("node:url");
|
|
37
|
+
if (typeof url.pathToFileURL === "function") {
|
|
38
|
+
return url.pathToFileURL(__filename).href;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return globalThis.location?.href ?? "";
|
|
42
|
+
})();
|
|
43
|
+
var SharedConfigFile = /* @__PURE__ */ ((SharedConfigFile2) => {
|
|
44
|
+
SharedConfigFile2["Biome"] = "biome.json";
|
|
45
|
+
SharedConfigFile2["Prettier"] = "prettier.json";
|
|
46
|
+
return SharedConfigFile2;
|
|
47
|
+
})(SharedConfigFile || {});
|
|
48
|
+
const ASSETS_FOLDER = "assets";
|
|
49
|
+
function getSharedConfigFilePath(file, moduleUrl = __import_meta_url) {
|
|
50
|
+
let directory = (0, import_node_path.dirname)((0, import_node_url.fileURLToPath)(moduleUrl));
|
|
51
|
+
for (; ; ) {
|
|
52
|
+
const candidate = (0, import_node_path.join)(directory, ASSETS_FOLDER, file);
|
|
53
|
+
if ((0, import_node_fs.existsSync)(candidate)) {
|
|
54
|
+
return candidate;
|
|
55
|
+
}
|
|
56
|
+
const parent = (0, import_node_path.dirname)(directory);
|
|
57
|
+
if (parent === directory) {
|
|
58
|
+
throw new Error(`No ${ASSETS_FOLDER}/${file} above ${(0, import_node_url.fileURLToPath)(moduleUrl)}.`);
|
|
59
|
+
}
|
|
60
|
+
directory = parent;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
64
|
+
0 && (module.exports = {
|
|
65
|
+
SharedConfigFile,
|
|
66
|
+
getSharedConfigFilePath
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3NoYXJlZC1jb25maWctZmlsZXMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbJ2ltcG9ydC5tZXRhLnVybCddID8/IChmdW5jdGlvbiBnZXRDanNJbXBvcnRNZXRhVXJsKCkge1xuICBpZiAodHlwZW9mIF9fZmlsZW5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgbG9jYWxSZXF1aXJlID0gcmVxdWlyZTtcbiAgICBjb25zdCB1cmwgPSBsb2NhbFJlcXVpcmUoJ25vZGU6dXJsJyk7XG4gICAgaWYgKHR5cGVvZiB1cmwucGF0aFRvRmlsZVVSTCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHVybC5wYXRoVG9GaWxlVVJMKF9fZmlsZW5hbWUpLmhyZWY7XG4gICAgfVxuICB9XG5cbiAgLy8gRmFsbGJhY2sgdG8gdGhlIHBhZ2UgVVJMLCBvciBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGVudmlyb25tZW50IGlzIHVua25vd24uXG4gIHJldHVybiBnbG9iYWxUaGlzLmxvY2F0aW9uPy5ocmVmID8/ICcnO1xufSkoKTtcbi8qKlxuICogQGZpbGVcbiAqXG4gKiBMb2NhdGVzIHRoZSBzaGFyZWQgdG9vbCBjb25maWd1cmF0aW9uIGZpbGVzIHRoaXMgcGFja2FnZSBzaGlwcyB1bmRlciBgYXNzZXRzL2AuXG4gKi9cblxuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgZGlybmFtZSxcbiAgam9pblxufSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJztcblxuLyoqXG4gKiBBIHNoYXJlZCBjb25maWd1cmF0aW9uIGZpbGUgdGhpcyBwYWNrYWdlIHNoaXBzIHVuZGVyIGBhc3NldHMvYC5cbiAqL1xuZXhwb3J0IGVudW0gU2hhcmVkQ29uZmlnRmlsZSB7XG4gIC8qKlxuICAgKiBUaGUgc2hhcmVkIEJpb21lIGNvbmZpZ3VyYXRpb24uIEEgcHJvamVjdCdzIG93biBgYmlvbWUuanNvbmAgZXh0ZW5kcyBpdC5cbiAgICovXG4gIEJpb21lID0gJ2Jpb21lLmpzb24nLFxuXG4gIC8qKlxuICAgKiBUaGUgc2hhcmVkIFByZXR0aWVyIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBQcmV0dGllciA9ICdwcmV0dGllci5qc29uJ1xufVxuXG5jb25zdCBBU1NFVFNfRk9MREVSID0gJ2Fzc2V0cyc7XG5cbi8qKlxuICogRmluZHMgYSBzaGFyZWQgY29uZmlndXJhdGlvbiBmaWxlLiBJdCB3YWxrcyB1cCBmcm9tIHRoZSBtb2R1bGUsIGJlY2F1c2UgaXQgcnVucyBmcm9tIGBzcmNgIGhlcmUgYW5kIGZyb21cbiAqIGBkaXN0L2xpYi88Zm9ybWF0PmAgb25jZSBpbnN0YWxsZWQuXG4gKlxuICogQHBhcmFtIGZpbGUgLSBUaGUge0BsaW5rIFNoYXJlZENvbmZpZ0ZpbGV9IHRvIGZpbmQuXG4gKiBAcGFyYW0gbW9kdWxlVXJsIC0gVGhlIFVSTCBvZiBhIG1vZHVsZSBvZiB0aGlzIHBhY2thZ2UgdG8gc3RhcnQgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBmaWxlJ3MgYWJzb2x1dGUgcGF0aC5cbiAqIEB0aHJvd3MgSWYgbm8gZm9sZGVyIGFib3ZlIHRoZSBtb2R1bGUgaG9sZHMgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaGFyZWRDb25maWdGaWxlUGF0aChmaWxlOiBTaGFyZWRDb25maWdGaWxlLCBtb2R1bGVVcmw6IHN0cmluZyA9IGltcG9ydC5tZXRhLnVybCk6IHN0cmluZyB7XG4gIGxldCBkaXJlY3RvcnkgPSBkaXJuYW1lKGZpbGVVUkxUb1BhdGgobW9kdWxlVXJsKSk7XG4gIGZvciAoOzspIHtcbiAgICBjb25zdCBjYW5kaWRhdGUgPSBqb2luKGRpcmVjdG9yeSwgQVNTRVRTX0ZPTERFUiwgZmlsZSk7XG4gICAgaWYgKGV4aXN0c1N5bmMoY2FuZGlkYXRlKSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnQgPSBkaXJuYW1lKGRpcmVjdG9yeSk7XG4gICAgaWYgKHBhcmVudCA9PT0gZGlyZWN0b3J5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vICR7QVNTRVRTX0ZPTERFUn0vJHtmaWxlfSBhYm92ZSAke2ZpbGVVUkxUb1BhdGgobW9kdWxlVXJsKX0uYCk7XG4gICAgfVxuXG4gICAgZGlyZWN0b3J5ID0gcGFyZW50O1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWtCQSxxQkFBMkI7QUFDM0IsdUJBR087QUFDUCxzQkFBOEI7QUF2QjlCLElBQUksb0JBQW9CLFdBQVcsaUJBQWlCLE1BQU0sU0FBUyxzQkFBc0I7QUFDdkYsTUFBSSxPQUFPLGVBQWUsVUFBVTtBQUNsQyxVQUFNLGVBQWU7QUFDckIsVUFBTSxNQUFNLGFBQWEsVUFBVTtBQUNuQyxRQUFJLE9BQU8sSUFBSSxrQkFBa0IsWUFBWTtBQUMzQyxhQUFPLElBQUksY0FBYyxVQUFVLEVBQUU7QUFBQSxJQUN2QztBQUFBLEVBQ0Y7QUFHQSxTQUFPLFdBQVcsVUFBVSxRQUFRO0FBQ3RDLEdBQUc7QUFpQkksSUFBSyxtQkFBTCxrQkFBS0Esc0JBQUw7QUFJTCxFQUFBQSxrQkFBQSxXQUFRO0FBS1IsRUFBQUEsa0JBQUEsY0FBVztBQVRELFNBQUFBO0FBQUEsR0FBQTtBQVlaLE1BQU0sZ0JBQWdCO0FBV2YsU0FBUyx3QkFBd0IsTUFBd0IsWUFBb0IsbUJBQXlCO0FBQzNHLE1BQUksZ0JBQVksOEJBQVEsK0JBQWMsU0FBUyxDQUFDO0FBQ2hELGFBQVM7QUFDUCxVQUFNLGdCQUFZLHVCQUFLLFdBQVcsZUFBZSxJQUFJO0FBQ3JELFlBQUksMkJBQVcsU0FBUyxHQUFHO0FBQ3pCLGFBQU87QUFBQSxJQUNUO0FBRUEsVUFBTSxhQUFTLDBCQUFRLFNBQVM7QUFDaEMsUUFBSSxXQUFXLFdBQVc7QUFDeEIsWUFBTSxJQUFJLE1BQU0sTUFBTSxhQUFhLElBQUksSUFBSSxjQUFVLCtCQUFjLFNBQVMsQ0FBQyxHQUFHO0FBQUEsSUFDbEY7QUFFQSxnQkFBWTtBQUFBLEVBQ2Q7QUFDRjsiLAogICJuYW1lcyI6IFsiU2hhcmVkQ29uZmlnRmlsZSJdCn0K
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/// <reference path="./library-references.d.cts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Locates the shared tool configuration files this package ships under `assets/`.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* A shared configuration file this package ships under `assets/`.
|
|
9
|
+
*/
|
|
10
|
+
export declare enum SharedConfigFile {
|
|
11
|
+
/**
|
|
12
|
+
* The shared Biome configuration. A project's own `biome.json` extends it.
|
|
13
|
+
*/
|
|
14
|
+
Biome = "biome.json",
|
|
15
|
+
/**
|
|
16
|
+
* The shared Prettier configuration.
|
|
17
|
+
*/
|
|
18
|
+
Prettier = "prettier.json"
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Finds a shared configuration file. It walks up from the module, because it runs from `src` here and from
|
|
22
|
+
* `dist/lib/<format>` once installed.
|
|
23
|
+
*
|
|
24
|
+
* @param file - The {@link SharedConfigFile} to find.
|
|
25
|
+
* @param moduleUrl - The URL of a module of this package to start from.
|
|
26
|
+
* @returns The file's absolute path.
|
|
27
|
+
* @throws If no folder above the module holds the file.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getSharedConfigFilePath(file: SharedConfigFile, moduleUrl?: string): string;
|