@mnaoumov/obsidian-dev-toolkit 1.0.0 → 2.0.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/README.md +9 -1
- package/dist/demo-vault-helper/main.js +678 -18
- package/dist/integration-test-plugin/main.js +12075 -3087
- package/dist/integration-test-plugin/manifest.json +2 -2
- package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +6 -38
- package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/dependency.cjs +5 -37
- package/dist/lib/cjs/bundlers/esbuild-impl/dependency.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +5 -37
- package/dist/lib/cjs/bundlers/esbuild-impl/fix-source-maps-plugin.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/index.cjs +7 -66
- package/dist/lib/cjs/bundlers/esbuild-impl/index.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +7 -39
- package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.cjs +5 -37
- package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.cjs +5 -37
- package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild.cjs +1 -60
- package/dist/lib/cjs/bundlers/esbuild.d.cts +1 -1
- package/dist/lib/cjs/bundlers/index.cjs +3 -62
- package/dist/lib/cjs/bundlers/index.d.cts +1 -1
- package/dist/lib/cjs/demo-vault-app-json.cjs +5 -37
- package/dist/lib/cjs/demo-vault-app-json.d.cts +1 -1
- package/dist/lib/cjs/demo-vault-buttons.cjs +6 -38
- package/dist/lib/cjs/demo-vault-buttons.d.cts +8 -8
- package/dist/lib/cjs/demo-vault-coverage.cjs +7 -38
- package/dist/lib/cjs/demo-vault-coverage.d.cts +1 -1
- package/dist/lib/cjs/demo-vault.cjs +6 -38
- package/dist/lib/cjs/demo-vault.d.cts +1 -1
- package/dist/lib/cjs/formatters/dprint.cjs +5 -37
- package/dist/lib/cjs/formatters/dprint.d.cts +1 -1
- package/dist/lib/cjs/formatters/index.cjs +2 -61
- package/dist/lib/cjs/formatters/index.d.cts +1 -1
- package/dist/lib/cjs/index.cjs +12 -71
- package/dist/lib/cjs/integration-test-setup.cjs +1 -60
- package/dist/lib/cjs/integration-test-setup.d.cts +5 -5
- package/dist/lib/cjs/integration-test-vitest-global-setup.cjs +6 -38
- package/dist/lib/cjs/integration-test-vitest-global-setup.d.cts +7 -7
- package/dist/lib/cjs/jest-setup.cjs +5 -37
- package/dist/lib/cjs/jest-setup.d.cts +1 -1
- package/dist/lib/cjs/library-references.d.cts +2 -0
- package/dist/lib/cjs/linters/eslint-config.cjs +71 -49
- package/dist/lib/cjs/linters/eslint-config.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/index.cjs +26 -73
- package/dist/lib/cjs/linters/eslint-rules/index.d.cts +6 -2
- package/dist/lib/cjs/linters/eslint-rules/manifest-description.cjs +1 -60
- package/dist/lib/cjs/linters/eslint-rules/manifest-description.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.cjs +6 -38
- package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/manifest-id.cjs +1 -60
- package/dist/lib/cjs/linters/eslint-rules/manifest-id.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/manifest-name.cjs +1 -60
- package/dist/lib/cjs/linters/eslint-rules/manifest-name.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/manifest-schema.cjs +1 -60
- package/dist/lib/cjs/linters/eslint-rules/manifest-schema.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/no-local-obsidian-internals.cjs +240 -0
- package/dist/lib/cjs/linters/eslint-rules/no-local-obsidian-internals.d.cts +10 -0
- package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.cjs +5 -37
- package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.cjs +5 -37
- package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-toolkit-plugin.cjs +136 -0
- package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-toolkit-plugin.d.cts +16 -0
- package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code-in-ui.cjs +217 -0
- package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code-in-ui.d.cts +30 -0
- package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.cjs +169 -0
- package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.d.cts +29 -0
- package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.cjs +5 -37
- package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/require-plugin-api-contract-schemas.cjs +287 -0
- package/dist/lib/cjs/linters/eslint-rules/require-plugin-api-contract-schemas.d.cts +10 -0
- package/dist/lib/cjs/linters/eslint.cjs +5 -37
- package/dist/lib/cjs/linters/eslint.d.cts +1 -1
- package/dist/lib/cjs/linters/index.cjs +17 -67
- package/dist/lib/cjs/linters/index.d.cts +4 -1
- package/dist/lib/cjs/linters/markdownlint-cli2-config.cjs +152 -0
- package/dist/lib/cjs/linters/markdownlint-cli2-config.d.cts +12 -0
- package/dist/lib/cjs/linters/markdownlint-rules/index.cjs +118 -0
- package/dist/lib/cjs/linters/markdownlint-rules/index.d.cts +2 -0
- package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.cjs +200 -0
- package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.d.cts +32 -0
- package/dist/lib/cjs/linters/markdownlint.cjs +5 -37
- package/dist/lib/cjs/linters/markdownlint.d.cts +1 -1
- package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.cjs +1 -60
- package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.d.cts +1 -1
- package/dist/lib/cjs/linters/plugin-names.cjs +203 -0
- package/dist/lib/cjs/linters/plugin-names.d.cts +81 -0
- package/dist/lib/cjs/obsidian-plugin-repo-paths.cjs +1 -60
- package/dist/lib/cjs/obsidian-plugin-repo-paths.d.cts +1 -1
- package/dist/lib/cjs/setup.cjs +5 -37
- package/dist/lib/cjs/setup.d.cts +1 -1
- package/dist/lib/cjs/templates.cjs +5 -37
- package/dist/lib/cjs/templates.d.cts +1 -1
- package/dist/lib/cjs/test-runners/index.cjs +4 -63
- package/dist/lib/cjs/test-runners/index.d.cts +1 -1
- package/dist/lib/cjs/test-runners/integration-test-plugin.cjs +12 -44
- package/dist/lib/cjs/test-runners/integration-test-plugin.d.cts +5 -5
- package/dist/lib/cjs/test-runners/performance-eval-cap.cjs +1 -60
- package/dist/lib/cjs/test-runners/performance-eval-cap.d.cts +1 -1
- package/dist/lib/cjs/test-runners/stale-build-global-setup.cjs +5 -37
- package/dist/lib/cjs/test-runners/stale-build-global-setup.d.cts +1 -1
- package/dist/lib/cjs/test-runners/vitest-config.cjs +9 -41
- package/dist/lib/cjs/test-runners/vitest-config.d.cts +2 -3
- package/dist/lib/cjs/version.cjs +5 -37
- package/dist/lib/cjs/version.d.cts +1 -1
- package/dist/lib/cjs/vitest-setup.cjs +5 -37
- package/dist/lib/cjs/vitest-setup.d.cts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +5 -22
- package/dist/lib/esm/bundlers/esbuild-impl/dependency.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/dependency.mjs +5 -22
- package/dist/lib/esm/bundlers/esbuild-impl/fix-source-maps-plugin.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +5 -22
- package/dist/lib/esm/bundlers/esbuild-impl/index.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/index.mjs +1 -45
- package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +5 -22
- package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.mjs +5 -22
- package/dist/lib/esm/bundlers/esbuild-impl/rename-css-plugin.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/rename-css-plugin.mjs +5 -22
- package/dist/lib/esm/bundlers/esbuild.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild.mjs +1 -45
- package/dist/lib/esm/bundlers/index.d.mts +1 -1
- package/dist/lib/esm/bundlers/index.mjs +1 -45
- package/dist/lib/esm/demo-vault-app-json.d.mts +1 -1
- package/dist/lib/esm/demo-vault-app-json.mjs +5 -22
- package/dist/lib/esm/demo-vault-buttons.d.mts +8 -8
- package/dist/lib/esm/demo-vault-buttons.mjs +5 -22
- package/dist/lib/esm/demo-vault-coverage.d.mts +1 -1
- package/dist/lib/esm/demo-vault-coverage.mjs +7 -23
- package/dist/lib/esm/demo-vault.d.mts +1 -1
- package/dist/lib/esm/demo-vault.mjs +6 -23
- package/dist/lib/esm/formatters/dprint.d.mts +1 -1
- package/dist/lib/esm/formatters/dprint.mjs +5 -22
- package/dist/lib/esm/formatters/index.d.mts +1 -1
- package/dist/lib/esm/formatters/index.mjs +1 -45
- package/dist/lib/esm/index.mjs +1 -45
- package/dist/lib/esm/integration-test-setup.d.mts +5 -5
- package/dist/lib/esm/integration-test-setup.mjs +1 -45
- package/dist/lib/esm/integration-test-vitest-global-setup.d.mts +7 -7
- package/dist/lib/esm/integration-test-vitest-global-setup.mjs +7 -24
- package/dist/lib/esm/jest-setup.d.mts +1 -1
- package/dist/lib/esm/jest-setup.mjs +5 -22
- package/dist/lib/esm/library-references.d.mts +2 -0
- package/dist/lib/esm/linters/eslint-config.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-config.mjs +70 -33
- package/dist/lib/esm/linters/eslint-rules/index.d.mts +6 -2
- package/dist/lib/esm/linters/eslint-rules/index.mjs +12 -48
- package/dist/lib/esm/linters/eslint-rules/manifest-description.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/manifest-description.mjs +1 -45
- package/dist/lib/esm/linters/eslint-rules/manifest-helpers.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/manifest-helpers.mjs +5 -22
- package/dist/lib/esm/linters/eslint-rules/manifest-id.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/manifest-id.mjs +1 -45
- package/dist/lib/esm/linters/eslint-rules/manifest-name.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/manifest-name.mjs +1 -45
- package/dist/lib/esm/linters/eslint-rules/manifest-schema.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/manifest-schema.mjs +1 -45
- package/dist/lib/esm/linters/eslint-rules/no-local-obsidian-internals.d.mts +10 -0
- package/dist/lib/esm/linters/eslint-rules/no-local-obsidian-internals.mjs +141 -0
- package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.mjs +5 -22
- package/dist/lib/esm/linters/eslint-rules/no-untrusted-input-events.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/no-untrusted-input-events.mjs +5 -22
- package/dist/lib/esm/linters/eslint-rules/obsidian-dev-toolkit-plugin.d.mts +16 -0
- package/dist/lib/esm/linters/eslint-rules/obsidian-dev-toolkit-plugin.mjs +37 -0
- package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code-in-ui.d.mts +30 -0
- package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code-in-ui.mjs +121 -0
- package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code.d.mts +29 -0
- package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code.mjs +72 -0
- package/dist/lib/esm/linters/eslint-rules/require-component-suffix.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/require-component-suffix.mjs +5 -22
- package/dist/lib/esm/linters/eslint-rules/require-plugin-api-contract-schemas.d.mts +10 -0
- package/dist/lib/esm/linters/eslint-rules/require-plugin-api-contract-schemas.mjs +188 -0
- package/dist/lib/esm/linters/eslint.d.mts +1 -1
- package/dist/lib/esm/linters/eslint.mjs +5 -22
- package/dist/lib/esm/linters/index.d.mts +4 -1
- package/dist/lib/esm/linters/index.mjs +8 -46
- package/dist/lib/esm/linters/markdownlint-cli2-config.d.mts +12 -0
- package/dist/lib/esm/linters/markdownlint-cli2-config.mjs +57 -0
- package/dist/lib/esm/linters/markdownlint-rules/index.d.mts +2 -0
- package/dist/lib/esm/linters/markdownlint-rules/index.mjs +10 -0
- package/dist/lib/esm/linters/markdownlint-rules/plugin-name-as-code.d.mts +32 -0
- package/dist/lib/esm/linters/markdownlint-rules/plugin-name-as-code.mjs +94 -0
- package/dist/lib/esm/linters/markdownlint.d.mts +1 -1
- package/dist/lib/esm/linters/markdownlint.mjs +5 -22
- package/dist/lib/esm/linters/obsidianmd-rule-custom-message.d.mts +1 -1
- package/dist/lib/esm/linters/obsidianmd-rule-custom-message.mjs +1 -45
- package/dist/lib/esm/linters/plugin-names.d.mts +81 -0
- package/dist/lib/esm/linters/plugin-names.mjs +105 -0
- package/dist/lib/esm/obsidian-plugin-repo-paths.d.mts +1 -1
- package/dist/lib/esm/obsidian-plugin-repo-paths.mjs +1 -45
- package/dist/lib/esm/setup.d.mts +1 -1
- package/dist/lib/esm/setup.mjs +5 -22
- package/dist/lib/esm/templates.d.mts +1 -1
- package/dist/lib/esm/templates.mjs +5 -22
- package/dist/lib/esm/test-runners/index.d.mts +1 -1
- package/dist/lib/esm/test-runners/index.mjs +1 -45
- package/dist/lib/esm/test-runners/integration-test-plugin.d.mts +5 -5
- package/dist/lib/esm/test-runners/integration-test-plugin.mjs +11 -28
- package/dist/lib/esm/test-runners/performance-eval-cap.d.mts +1 -1
- package/dist/lib/esm/test-runners/performance-eval-cap.mjs +1 -45
- package/dist/lib/esm/test-runners/stale-build-global-setup.d.mts +1 -1
- package/dist/lib/esm/test-runners/stale-build-global-setup.mjs +5 -22
- package/dist/lib/esm/test-runners/vitest-config.d.mts +2 -3
- package/dist/lib/esm/test-runners/vitest-config.mjs +8 -25
- package/dist/lib/esm/version.d.mts +1 -1
- package/dist/lib/esm/version.mjs +5 -22
- package/dist/lib/esm/vitest-setup.d.mts +1 -1
- package/dist/lib/esm/vitest-setup.mjs +5 -22
- package/dist/templates/scripts/markdownlint-cli2-config.ts +2 -2
- package/linters/eslint-rules/no-local-obsidian-internals/package.json +6 -0
- package/linters/eslint-rules/{obsidian-dev-utils-plugin → obsidian-dev-toolkit-plugin}/package.json +3 -3
- package/linters/eslint-rules/plugin-name-as-code/package.json +6 -0
- package/linters/eslint-rules/plugin-name-as-code-in-ui/package.json +6 -0
- package/linters/eslint-rules/require-plugin-api-contract-schemas/package.json +6 -0
- package/linters/markdownlint-cli2-config/package.json +6 -0
- package/linters/markdownlint-rules/index/package.json +6 -0
- package/linters/markdownlint-rules/package.json +6 -0
- package/linters/markdownlint-rules/plugin-name-as-code/package.json +6 -0
- package/linters/plugin-names/package.json +6 -0
- package/package.json +86 -25
- package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +0 -186
- package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-utils-plugin.d.cts +0 -13
- package/dist/lib/esm/linters/eslint-rules/obsidian-dev-utils-plugin.d.mts +0 -13
- package/dist/lib/esm/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +0 -73
|
@@ -2,71 +2,12 @@
|
|
|
2
2
|
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
3
|
if you want to view the source, please visit the github repository of this plugin
|
|
4
4
|
*/
|
|
5
|
-
|
|
6
|
-
(function () {
|
|
7
|
-
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
8
|
-
symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
|
|
9
|
-
symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
function ensureBrowserProcess() {
|
|
13
|
-
const browserProcess = {
|
|
14
|
-
browser: true,
|
|
15
|
-
cwd() {
|
|
16
|
-
return '/';
|
|
17
|
-
},
|
|
18
|
-
env: {},
|
|
19
|
-
platform: 'android'
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
// eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
|
|
23
|
-
const existingProcess = globalThis.process;
|
|
24
|
-
|
|
25
|
-
if (!existingProcess) {
|
|
26
|
-
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
27
|
-
globalThis.process = browserProcess;
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (existingProcess.versions?.node) {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const existingProcessRecord = existingProcess;
|
|
36
|
-
|
|
37
|
-
for (const [key, value] of Object.entries(browserProcess)) {
|
|
38
|
-
existingProcessRecord[key] ??= value;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
existingProcessRecord['browser'] = true;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
function keepName($unknown) {
|
|
45
|
-
return $unknown;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
(function initCjs() {
|
|
49
|
-
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
50
|
-
const globalThisRecord = globalThis;
|
|
51
|
-
ensureDisposeSymbols();
|
|
52
|
-
globalThisRecord['__name'] ??= keepName;
|
|
53
|
-
globalThisRecord['__extractDefault'] ??= extractDefault;
|
|
54
|
-
|
|
55
|
-
ensureBrowserProcess();
|
|
56
|
-
|
|
57
|
-
// eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
|
|
58
|
-
function extractDefault(module) {
|
|
59
|
-
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
60
|
-
}
|
|
61
|
-
})();
|
|
62
|
-
})();
|
|
63
5
|
(function patchObsidianRequire() {
|
|
64
6
|
const originalRequire = require;
|
|
65
7
|
if (!originalRequire || originalRequire.__isPatched) {
|
|
66
8
|
return;
|
|
67
9
|
}
|
|
68
10
|
|
|
69
|
-
// eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
|
|
70
11
|
require = Object.assign(
|
|
71
12
|
(id) => requirePatched(id),
|
|
72
13
|
originalRequire,
|
|
@@ -326,4 +267,4 @@ function reportMissingKeys(params) {
|
|
|
326
267
|
MESSAGE_ID_MUST_BE_ROOT_OBJECT,
|
|
327
268
|
manifestSchema
|
|
328
269
|
});
|
|
329
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL21hbmlmZXN0LXNjaGVtYS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiBtYW5pZmVzdC1zY2hlbWFcbiAqXG4gKiBWYWxpZGF0ZXMgdGhlIHN0cnVjdHVyZSBvZiBhIHBsdWdpbidzIHJvb3QgYG1hbmlmZXN0Lmpzb25gIC0gdGhlIHJlcXVpcmVkIGtleXMsIHRoZSBrZXlzIHRoZSBDb21tdW5pdHlcbiAqIGRpcmVjdG9yeSBkb2VzIG5vdCBhbGxvdywgZHVwbGljYXRlIGtleXMsIGVhY2ggdmFsdWUncyB0eXBlLCBhbmQgdGhlIHNoYXBlIG9mIGBmdW5kaW5nVXJsYC5cbiAqXG4gKiBSdW5zIG9uIHRoZSBgQGVzbGludC9qc29uYCBganNvbi9qc29uYCBsYW5ndWFnZTsgc2VlIGBtYW5pZmVzdC1oZWxwZXJzLnRzYCBmb3Igd2h5IHRoZSBBU1QgaXMgTW9tb2FcbiAqIHJhdGhlciB0aGFuIEVTVHJlZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuXG5pbXBvcnQgdHlwZSB7XG4gIEpzb25NZW1iZXJOb2RlLFxuICBKc29uT2JqZWN0Tm9kZVxufSBmcm9tICcuL21hbmlmZXN0LWhlbHBlcnMudHMnO1xuXG5pbXBvcnQge1xuICBmaW5kTWFuaWZlc3RNZW1iZXIsXG4gIGdldE1hbmlmZXN0T2JqZWN0LFxuICBnZXRNYW5pZmVzdFN0cmluZ1ZhbHVlLFxuICBnZXRNZW1iZXJLZXksXG4gIGdldFN0cmluZ1ZhbHVlLFxuICBKU09OX05PREVfVFlQRV9CT09MRUFOLFxuICBKU09OX05PREVfVFlQRV9PQkpFQ1QsXG4gIEpTT05fTk9ERV9UWVBFX1NUUklORyxcbiAgdG9SZXBvcnROb2RlLFxuICBVTlJFTEVBU0VEX1ZFUlNJT05cbn0gZnJvbSAnLi9tYW5pZmVzdC1oZWxwZXJzLnRzJztcblxuLyoqXG5NZXNzYWdlIElEIHJlcG9ydGVkIHdoZW4gYSBrZXkgdGhlIENvbW11bml0eSBkaXJlY3RvcnkgZG9lcyBub3QgYWxsb3cgaXMgcHJlc2VudC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSURfRElTQUxMT1dFRF9LRVkgPSAnZGlzYWxsb3dlZEtleSc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIHRoZSBzYW1lIGtleSBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9EVVBMSUNBVEVfS0VZID0gJ2R1cGxpY2F0ZUtleSc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGBmdW5kaW5nVXJsYCBpcyBhbiBlbXB0eSBzdHJpbmcsIGFuIGVtcHR5IG9iamVjdCwgb3IgYW4gb2JqZWN0IHdpdGggYW4gZW1wdHkgdmFsdWUuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEX0VNUFRZX0ZVTkRJTkdfVVJMID0gJ2VtcHR5RnVuZGluZ1VybCc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGEgdmFsdWUgaGFzIHRoZSB3cm9uZyB0eXBlLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9JTlZBTElEX1RZUEUgPSAnaW52YWxpZFR5cGUnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhIGBmdW5kaW5nVXJsYCBvYmplY3QgaG9sZHMgYSBub24tc3RyaW5nIHZhbHVlLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9JTlZBTElEX0ZVTkRJTkdfVVJMID0gJ2ludmFsaWRGdW5kaW5nVXJsJztcblxuLyoqXG5NZXNzYWdlIElEIHJlcG9ydGVkIHdoZW4gYSByZXF1aXJlZCBrZXkgaXMgbWlzc2luZy5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSURfTUlTU0lOR19LRVkgPSAnbWlzc2luZ0tleSc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIHRoZSBtYW5pZmVzdCdzIHRvcC1sZXZlbCB2YWx1ZSBpcyBub3QgYW4gb2JqZWN0LlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9NVVNUX0JFX1JPT1RfT0JKRUNUID0gJ211c3RCZVJvb3RPYmplY3QnO1xuXG4vKipcblRoZSBrZXlzIGV2ZXJ5IG1hbmlmZXN0IG11c3QgY2FycnksIHdoZXRoZXIgb3Igbm90IHRoZSBwbHVnaW4gaGFzIGJlZW4gcmVsZWFzZWQuXG4gKi9cbmNvbnN0IEFMV0FZU19SRVFVSVJFRF9LRVlTID0gWydhdXRob3InLCAnZGVzY3JpcHRpb24nLCAnaWQnLCAnaXNEZXNrdG9wT25seScsICduYW1lJywgJ3ZlcnNpb24nXTtcblxuLyoqXG5UaGUgTW9tb2Egbm9kZSB0eXBlIGVhY2ggYWxsb3dlZCBrZXkncyB2YWx1ZSBtYXkgaGF2ZS4gQSBrZXkgYWJzZW50IGZyb20gdGhpcyBtYXAgaXMgbm90IGFsbG93ZWQgYXQgYWxsLlxuICovXG5jb25zdCBLRVlfTk9ERV9UWVBFUyA9IG5ldyBNYXA8c3RyaW5nLCByZWFkb25seSBzdHJpbmdbXT4oW1xuICBbJ2F1dGhvcicsIFtKU09OX05PREVfVFlQRV9TVFJJTkddXSxcbiAgWydhdXRob3JVcmwnLCBbSlNPTl9OT0RFX1RZUEVfU1RSSU5HXV0sXG4gIFsnZGVzY3JpcHRpb24nLCBbSlNPTl9OT0RFX1RZUEVfU1RSSU5HXV0sXG4gIFsnZnVuZGluZ1VybCcsIFtKU09OX05PREVfVFlQRV9PQkpFQ1QsIEpTT05fTk9ERV9UWVBFX1NUUklOR11dLFxuICBbJ2lkJywgW0pTT05fTk9ERV9UWVBFX1NUUklOR11dLFxuICBbJ2lzRGVza3RvcE9ubHknLCBbSlNPTl9OT0RFX1RZUEVfQk9PTEVBTl1dLFxuICBbJ21pbkFwcFZlcnNpb24nLCBbSlNPTl9OT0RFX1RZUEVfU1RSSU5HXV0sXG4gIFsnbmFtZScsIFtKU09OX05PREVfVFlQRV9TVFJJTkddXSxcbiAgWyd2ZXJzaW9uJywgW0pTT05fTk9ERV9UWVBFX1NUUklOR11dXG5dKTtcblxuLyoqXG4gKiBFU0xpbnQgcnVsZSB2YWxpZGF0aW5nIHRoZSBzdHJ1Y3R1cmUgb2YgYSBwbHVnaW4ncyByb290IGBtYW5pZmVzdC5qc29uYC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1hbmlmZXN0U2NoZW1hOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIERvY3VtZW50KG5vZGU6IHVua25vd24pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWFuaWZlc3RPYmplY3QgPSBnZXRNYW5pZmVzdE9iamVjdChub2RlKTtcblxuICAgICAgICBpZiAoIW1hbmlmZXN0T2JqZWN0KSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lEX01VU1RfQkVfUk9PVF9PQkpFQ1QsXG4gICAgICAgICAgICBub2RlOiB0b1JlcG9ydE5vZGUobm9kZSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXBvcnREdXBsaWNhdGVLZXlzKHsgY29udGV4dCwgbWFuaWZlc3RPYmplY3QgfSk7XG4gICAgICAgIHJlcG9ydE1pc3NpbmdLZXlzKHsgY29udGV4dCwgbWFuaWZlc3RPYmplY3QgfSk7XG4gICAgICAgIHJlcG9ydEtleVZhbHVlcyh7IGNvbnRleHQsIG1hbmlmZXN0T2JqZWN0IH0pO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRlIHRoZSBzdHJ1Y3R1cmUgb2YgYSBwbHVnaW5cXCdzIHJvb3QgYG1hbmlmZXN0Lmpzb25gJ1xuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEX0RJU0FMTE9XRURfS0VZXTogJ1RoZSBge3sga2V5IH19YCBwcm9wZXJ0eSBpcyBub3QgYWxsb3dlZCBpbiB0aGUgbWFuaWZlc3QuJyxcbiAgICAgIFtNRVNTQUdFX0lEX0RVUExJQ0FURV9LRVldOiAnVGhlIGB7eyBrZXkgfX1gIHByb3BlcnR5IGlzIGRlZmluZWQgbW9yZSB0aGFuIG9uY2UuJyxcbiAgICAgIFtNRVNTQUdFX0lEX0VNUFRZX0ZVTkRJTkdfVVJMXTogJ1RoZSBgZnVuZGluZ1VybGAgcHJvcGVydHkgY2Fubm90IGJlIGVtcHR5LiBSZW1vdmUgaXQgaW5zdGVhZCB3aGVuIG5vIGRvbmF0aW9ucyBhcmUgYWNjZXB0ZWQuJyxcbiAgICAgIFtNRVNTQUdFX0lEX0lOVkFMSURfRlVORElOR19VUkxdOiAnVGhlIGBmdW5kaW5nVXJsYCBvYmplY3QgbXVzdCBvbmx5IGNvbnRhaW4gc3RyaW5nIHZhbHVlcy4nLFxuICAgICAgW01FU1NBR0VfSURfSU5WQUxJRF9UWVBFXTogJ1RoZSBge3sga2V5IH19YCBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYHt7IGV4cGVjdGVkVHlwZSB9fWAsIGJ1dCB3YXMgYHt7IGFjdHVhbFR5cGUgfX1gLicsXG4gICAgICBbTUVTU0FHRV9JRF9NSVNTSU5HX0tFWV06ICdUaGUgbWFuaWZlc3QgaXMgbWlzc2luZyB0aGUgcmVxdWlyZWQgYHt7IGtleSB9fWAgcHJvcGVydHkuJyxcbiAgICAgIFtNRVNTQUdFX0lEX01VU1RfQkVfUk9PVF9PQkpFQ1RdOiAnVGhlIG1hbmlmZXN0IG11c3QgYmUgYSBzaW5nbGUgSlNPTiBvYmplY3QuJ1xuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiAncHJvYmxlbSdcbiAgfVxufTtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVwb3J0RnVuZGluZ1VybH0uXG4gKi9cbmludGVyZmFjZSBSZXBvcnRGdW5kaW5nVXJsUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBFU0xpbnQgcnVsZSBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dDtcblxuICAvKipcbiAgICogVGhlIGBmdW5kaW5nVXJsYCBtZW1iZXIuXG4gICAqL1xuICByZWFkb25seSBtZW1iZXI6IEpzb25NZW1iZXJOb2RlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHRoZSBtYW5pZmVzdCByZXBvcnRpbmcgaGVscGVycy5cbiAqL1xuaW50ZXJmYWNlIFJlcG9ydFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgRVNMaW50IHJ1bGUgY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQ7XG5cbiAgLyoqXG4gICAqIFRoZSBtYW5pZmVzdCdzIHJvb3Qgb2JqZWN0IG5vZGUuXG4gICAqL1xuICByZWFkb25seSBtYW5pZmVzdE9iamVjdDogSnNvbk9iamVjdE5vZGU7XG59XG5cbi8qKlxuICogUmVwb3J0cyBldmVyeSBrZXkgdGhhdCBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIFJlcG9ydFBhcmFtc30uXG4gKi9cbmZ1bmN0aW9uIHJlcG9ydER1cGxpY2F0ZUtleXMocGFyYW1zOiBSZXBvcnRQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3QgeyBjb250ZXh0LCBtYW5pZmVzdE9iamVjdCB9ID0gcGFyYW1zO1xuICBjb25zdCBzZWVuS2V5cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1hbmlmZXN0T2JqZWN0Lm1lbWJlcnMpIHtcbiAgICBjb25zdCBrZXkgPSBnZXRNZW1iZXJLZXkobWVtYmVyKTtcblxuICAgIGlmIChzZWVuS2V5cy5oYXMoa2V5KSkge1xuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBkYXRhOiB7IGtleSB9LFxuICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURfRFVQTElDQVRFX0tFWSxcbiAgICAgICAgbm9kZTogdG9SZXBvcnROb2RlKG1lbWJlci5uYW1lKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlZW5LZXlzLmFkZChrZXkpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlcG9ydHMgdGhlIHdheXMgYSBgZnVuZGluZ1VybGAgY2FuIGJlIGVtcHR5IG9yIGhvbGQgYSBub24tc3RyaW5nIHZhbHVlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIFJlcG9ydEZ1bmRpbmdVcmxQYXJhbXN9LlxuICovXG5mdW5jdGlvbiByZXBvcnRGdW5kaW5nVXJsKHBhcmFtczogUmVwb3J0RnVuZGluZ1VybFBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7IGNvbnRleHQsIG1lbWJlciB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IHN0cmluZ1ZhbHVlID0gZ2V0U3RyaW5nVmFsdWUobWVtYmVyLnZhbHVlKTtcblxuICBpZiAoc3RyaW5nVmFsdWUgIT09IG51bGwpIHtcbiAgICBpZiAoc3RyaW5nVmFsdWUgPT09ICcnKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9FTVBUWV9GVU5ESU5HX1VSTCxcbiAgICAgICAgbm9kZTogdG9SZXBvcnROb2RlKG1lbWJlci52YWx1ZSlcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGZ1bmRpbmdPYmplY3QgPSBtZW1iZXIudmFsdWUgYXMgSnNvbk9iamVjdE5vZGU7XG5cbiAgaWYgKGZ1bmRpbmdPYmplY3QubWVtYmVycy5sZW5ndGggPT09IDApIHtcbiAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURfRU1QVFlfRlVORElOR19VUkwsXG4gICAgICBub2RlOiB0b1JlcG9ydE5vZGUoZnVuZGluZ09iamVjdClcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmb3IgKGNvbnN0IGZ1bmRpbmdNZW1iZXIgb2YgZnVuZGluZ09iamVjdC5tZW1iZXJzKSB7XG4gICAgY29uc3QgZnVuZGluZ1ZhbHVlID0gZ2V0U3RyaW5nVmFsdWUoZnVuZGluZ01lbWJlci52YWx1ZSk7XG5cbiAgICBpZiAoZnVuZGluZ1ZhbHVlID09PSBudWxsKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9JTlZBTElEX0ZVTkRJTkdfVVJMLFxuICAgICAgICBub2RlOiB0b1JlcG9ydE5vZGUoZnVuZGluZ01lbWJlci52YWx1ZSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoZnVuZGluZ1ZhbHVlID09PSAnJykge1xuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURfRU1QVFlfRlVORElOR19VUkwsXG4gICAgICAgIG5vZGU6IHRvUmVwb3J0Tm9kZShmdW5kaW5nTWVtYmVyLnZhbHVlKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVwb3J0cyBldmVyeSBrZXkgdGhhdCBpcyBub3QgYWxsb3dlZCwgYW5kIGV2ZXJ5IGFsbG93ZWQga2V5IHdob3NlIHZhbHVlIGhhcyB0aGUgd3JvbmcgdHlwZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBSZXBvcnRQYXJhbXN9LlxuICovXG5mdW5jdGlvbiByZXBvcnRLZXlWYWx1ZXMocGFyYW1zOiBSZXBvcnRQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3QgeyBjb250ZXh0LCBtYW5pZmVzdE9iamVjdCB9ID0gcGFyYW1zO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1hbmlmZXN0T2JqZWN0Lm1lbWJlcnMpIHtcbiAgICBjb25zdCBrZXkgPSBnZXRNZW1iZXJLZXkobWVtYmVyKTtcbiAgICBjb25zdCBleHBlY3RlZE5vZGVUeXBlcyA9IEtFWV9OT0RFX1RZUEVTLmdldChrZXkpO1xuXG4gICAgaWYgKCFleHBlY3RlZE5vZGVUeXBlcykge1xuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBkYXRhOiB7IGtleSB9LFxuICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURfRElTQUxMT1dFRF9LRVksXG4gICAgICAgIG5vZGU6IHRvUmVwb3J0Tm9kZShtZW1iZXIubmFtZSlcbiAgICAgIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKCFleHBlY3RlZE5vZGVUeXBlcy5pbmNsdWRlcyhtZW1iZXIudmFsdWUudHlwZSkpIHtcbiAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFjdHVhbFR5cGU6IG1lbWJlci52YWx1ZS50eXBlLFxuICAgICAgICAgIGV4cGVjdGVkVHlwZTogZXhwZWN0ZWROb2RlVHlwZXMuam9pbignIG9yICcpLFxuICAgICAgICAgIGtleVxuICAgICAgICB9LFxuICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURfSU5WQUxJRF9UWVBFLFxuICAgICAgICBub2RlOiB0b1JlcG9ydE5vZGUobWVtYmVyLnZhbHVlKVxuICAgICAgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoa2V5ID09PSAnZnVuZGluZ1VybCcpIHtcbiAgICAgIHJlcG9ydEZ1bmRpbmdVcmwoeyBjb250ZXh0LCBtZW1iZXIgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVwb3J0cyBldmVyeSByZXF1aXJlZCBrZXkgdGhlIG1hbmlmZXN0IGlzIG1pc3NpbmcuXG4gKlxuICogYG1pbkFwcFZlcnNpb25gIGlzIHJlcXVpcmVkIG9ubHkgb25jZSB0aGUgcGx1Z2luIGhhcyBiZWVuIHJlbGVhc2VkLiBgdXBkYXRlVmVyc2lvbkluRmlsZXNGb3JQbHVnaW5gXG4gKiB3cml0ZXMgaXQgYXQgcmVsZWFzZSB0aW1lLCBzbyBhIHJlcG8gc3RpbGwgYXQgdmVyc2lvbiBgMC4wLjBgIGxlZ2l0aW1hdGVseSBoYXMgbm9uZSBhbmQgbXVzdCBub3QgYmVcbiAqIHJlcG9ydGVkIGZvciBpdC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBSZXBvcnRQYXJhbXN9LlxuICovXG5mdW5jdGlvbiByZXBvcnRNaXNzaW5nS2V5cyhwYXJhbXM6IFJlcG9ydFBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7IGNvbnRleHQsIG1hbmlmZXN0T2JqZWN0IH0gPSBwYXJhbXM7XG4gIGNvbnN0IHJlcXVpcmVkS2V5cyA9IFsuLi5BTFdBWVNfUkVRVUlSRURfS0VZUywgLi4uKGdldE1hbmlmZXN0U3RyaW5nVmFsdWUobWFuaWZlc3RPYmplY3QsICd2ZXJzaW9uJykgPT09IFVOUkVMRUFTRURfVkVSU0lPTiA/IFtdIDogWydtaW5BcHBWZXJzaW9uJ10pXTtcblxuICBmb3IgKGNvbnN0IGtleSBvZiByZXF1aXJlZEtleXMpIHtcbiAgICBpZiAoIWZpbmRNYW5pZmVzdE1lbWJlcihtYW5pZmVzdE9iamVjdCwga2V5KSkge1xuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBkYXRhOiB7IGtleSB9LFxuICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURfTUlTU0lOR19LRVksXG4gICAgICAgIG5vZGU6IHRvUmVwb3J0Tm9kZShtYW5pZmVzdE9iamVjdClcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUJBLDhCQVdPO0FBS0EsTUFBTSw0QkFBNEI7QUFLbEMsTUFBTSwyQkFBMkI7QUFLakMsTUFBTSwrQkFBK0I7QUFLckMsTUFBTSwwQkFBMEI7QUFLaEMsTUFBTSxpQ0FBaUM7QUFLdkMsTUFBTSx5QkFBeUI7QUFLL0IsTUFBTSxpQ0FBaUM7QUFLOUMsTUFBTSx1QkFBdUIsQ0FBQyxVQUFVLGVBQWUsTUFB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
|
|
270
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9tYW5pZmVzdC1zY2hlbWEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiBtYW5pZmVzdC1zY2hlbWFcbiAqXG4gKiBWYWxpZGF0ZXMgdGhlIHN0cnVjdHVyZSBvZiBhIHBsdWdpbidzIHJvb3QgYG1hbmlmZXN0Lmpzb25gIC0gdGhlIHJlcXVpcmVkIGtleXMsIHRoZSBrZXlzIHRoZSBDb21tdW5pdHlcbiAqIGRpcmVjdG9yeSBkb2VzIG5vdCBhbGxvdywgZHVwbGljYXRlIGtleXMsIGVhY2ggdmFsdWUncyB0eXBlLCBhbmQgdGhlIHNoYXBlIG9mIGBmdW5kaW5nVXJsYC5cbiAqXG4gKiBSdW5zIG9uIHRoZSBgQGVzbGludC9qc29uYCBganNvbi9qc29uYCBsYW5ndWFnZTsgc2VlIGBtYW5pZmVzdC1oZWxwZXJzLnRzYCBmb3Igd2h5IHRoZSBBU1QgaXMgTW9tb2FcbiAqIHJhdGhlciB0aGFuIEVTVHJlZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuXG5pbXBvcnQgdHlwZSB7XG4gIEpzb25NZW1iZXJOb2RlLFxuICBKc29uT2JqZWN0Tm9kZVxufSBmcm9tICcuL21hbmlmZXN0LWhlbHBlcnMudHMnO1xuXG5pbXBvcnQge1xuICBmaW5kTWFuaWZlc3RNZW1iZXIsXG4gIGdldE1hbmlmZXN0T2JqZWN0LFxuICBnZXRNYW5pZmVzdFN0cmluZ1ZhbHVlLFxuICBnZXRNZW1iZXJLZXksXG4gIGdldFN0cmluZ1ZhbHVlLFxuICBKU09OX05PREVfVFlQRV9CT09MRUFOLFxuICBKU09OX05PREVfVFlQRV9PQkpFQ1QsXG4gIEpTT05fTk9ERV9UWVBFX1NUUklORyxcbiAgdG9SZXBvcnROb2RlLFxuICBVTlJFTEVBU0VEX1ZFUlNJT05cbn0gZnJvbSAnLi9tYW5pZmVzdC1oZWxwZXJzLnRzJztcblxuLyoqXG5NZXNzYWdlIElEIHJlcG9ydGVkIHdoZW4gYSBrZXkgdGhlIENvbW11bml0eSBkaXJlY3RvcnkgZG9lcyBub3QgYWxsb3cgaXMgcHJlc2VudC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSURfRElTQUxMT1dFRF9LRVkgPSAnZGlzYWxsb3dlZEtleSc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIHRoZSBzYW1lIGtleSBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9EVVBMSUNBVEVfS0VZID0gJ2R1cGxpY2F0ZUtleSc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGBmdW5kaW5nVXJsYCBpcyBhbiBlbXB0eSBzdHJpbmcsIGFuIGVtcHR5IG9iamVjdCwgb3IgYW4gb2JqZWN0IHdpdGggYW4gZW1wdHkgdmFsdWUuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEX0VNUFRZX0ZVTkRJTkdfVVJMID0gJ2VtcHR5RnVuZGluZ1VybCc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGEgdmFsdWUgaGFzIHRoZSB3cm9uZyB0eXBlLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9JTlZBTElEX1RZUEUgPSAnaW52YWxpZFR5cGUnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhIGBmdW5kaW5nVXJsYCBvYmplY3QgaG9sZHMgYSBub24tc3RyaW5nIHZhbHVlLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9JTlZBTElEX0ZVTkRJTkdfVVJMID0gJ2ludmFsaWRGdW5kaW5nVXJsJztcblxuLyoqXG5NZXNzYWdlIElEIHJlcG9ydGVkIHdoZW4gYSByZXF1aXJlZCBrZXkgaXMgbWlzc2luZy5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSURfTUlTU0lOR19LRVkgPSAnbWlzc2luZ0tleSc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIHRoZSBtYW5pZmVzdCdzIHRvcC1sZXZlbCB2YWx1ZSBpcyBub3QgYW4gb2JqZWN0LlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9NVVNUX0JFX1JPT1RfT0JKRUNUID0gJ211c3RCZVJvb3RPYmplY3QnO1xuXG4vKipcblRoZSBrZXlzIGV2ZXJ5IG1hbmlmZXN0IG11c3QgY2FycnksIHdoZXRoZXIgb3Igbm90IHRoZSBwbHVnaW4gaGFzIGJlZW4gcmVsZWFzZWQuXG4gKi9cbmNvbnN0IEFMV0FZU19SRVFVSVJFRF9LRVlTID0gWydhdXRob3InLCAnZGVzY3JpcHRpb24nLCAnaWQnLCAnaXNEZXNrdG9wT25seScsICduYW1lJywgJ3ZlcnNpb24nXTtcblxuLyoqXG5UaGUgTW9tb2Egbm9kZSB0eXBlIGVhY2ggYWxsb3dlZCBrZXkncyB2YWx1ZSBtYXkgaGF2ZS4gQSBrZXkgYWJzZW50IGZyb20gdGhpcyBtYXAgaXMgbm90IGFsbG93ZWQgYXQgYWxsLlxuICovXG5jb25zdCBLRVlfTk9ERV9UWVBFUyA9IG5ldyBNYXA8c3RyaW5nLCByZWFkb25seSBzdHJpbmdbXT4oW1xuICBbJ2F1dGhvcicsIFtKU09OX05PREVfVFlQRV9TVFJJTkddXSxcbiAgWydhdXRob3JVcmwnLCBbSlNPTl9OT0RFX1RZUEVfU1RSSU5HXV0sXG4gIFsnZGVzY3JpcHRpb24nLCBbSlNPTl9OT0RFX1RZUEVfU1RSSU5HXV0sXG4gIFsnZnVuZGluZ1VybCcsIFtKU09OX05PREVfVFlQRV9PQkpFQ1QsIEpTT05fTk9ERV9UWVBFX1NUUklOR11dLFxuICBbJ2lkJywgW0pTT05fTk9ERV9UWVBFX1NUUklOR11dLFxuICBbJ2lzRGVza3RvcE9ubHknLCBbSlNPTl9OT0RFX1RZUEVfQk9PTEVBTl1dLFxuICBbJ21pbkFwcFZlcnNpb24nLCBbSlNPTl9OT0RFX1RZUEVfU1RSSU5HXV0sXG4gIFsnbmFtZScsIFtKU09OX05PREVfVFlQRV9TVFJJTkddXSxcbiAgWyd2ZXJzaW9uJywgW0pTT05fTk9ERV9UWVBFX1NUUklOR11dXG5dKTtcblxuLyoqXG4gKiBFU0xpbnQgcnVsZSB2YWxpZGF0aW5nIHRoZSBzdHJ1Y3R1cmUgb2YgYSBwbHVnaW4ncyByb290IGBtYW5pZmVzdC5qc29uYC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1hbmlmZXN0U2NoZW1hOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIERvY3VtZW50KG5vZGU6IHVua25vd24pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWFuaWZlc3RPYmplY3QgPSBnZXRNYW5pZmVzdE9iamVjdChub2RlKTtcblxuICAgICAgICBpZiAoIW1hbmlmZXN0T2JqZWN0KSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lEX01VU1RfQkVfUk9PVF9PQkpFQ1QsXG4gICAgICAgICAgICBub2RlOiB0b1JlcG9ydE5vZGUobm9kZSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXBvcnREdXBsaWNhdGVLZXlzKHsgY29udGV4dCwgbWFuaWZlc3RPYmplY3QgfSk7XG4gICAgICAgIHJlcG9ydE1pc3NpbmdLZXlzKHsgY29udGV4dCwgbWFuaWZlc3RPYmplY3QgfSk7XG4gICAgICAgIHJlcG9ydEtleVZhbHVlcyh7IGNvbnRleHQsIG1hbmlmZXN0T2JqZWN0IH0pO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRlIHRoZSBzdHJ1Y3R1cmUgb2YgYSBwbHVnaW5cXCdzIHJvb3QgYG1hbmlmZXN0Lmpzb25gJ1xuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEX0RJU0FMTE9XRURfS0VZXTogJ1RoZSBge3sga2V5IH19YCBwcm9wZXJ0eSBpcyBub3QgYWxsb3dlZCBpbiB0aGUgbWFuaWZlc3QuJyxcbiAgICAgIFtNRVNTQUdFX0lEX0RVUExJQ0FURV9LRVldOiAnVGhlIGB7eyBrZXkgfX1gIHByb3BlcnR5IGlzIGRlZmluZWQgbW9yZSB0aGFuIG9uY2UuJyxcbiAgICAgIFtNRVNTQUdFX0lEX0VNUFRZX0ZVTkRJTkdfVVJMXTogJ1RoZSBgZnVuZGluZ1VybGAgcHJvcGVydHkgY2Fubm90IGJlIGVtcHR5LiBSZW1vdmUgaXQgaW5zdGVhZCB3aGVuIG5vIGRvbmF0aW9ucyBhcmUgYWNjZXB0ZWQuJyxcbiAgICAgIFtNRVNTQUdFX0lEX0lOVkFMSURfRlVORElOR19VUkxdOiAnVGhlIGBmdW5kaW5nVXJsYCBvYmplY3QgbXVzdCBvbmx5IGNvbnRhaW4gc3RyaW5nIHZhbHVlcy4nLFxuICAgICAgW01FU1NBR0VfSURfSU5WQUxJRF9UWVBFXTogJ1RoZSBge3sga2V5IH19YCBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYHt7IGV4cGVjdGVkVHlwZSB9fWAsIGJ1dCB3YXMgYHt7IGFjdHVhbFR5cGUgfX1gLicsXG4gICAgICBbTUVTU0FHRV9JRF9NSVNTSU5HX0tFWV06ICdUaGUgbWFuaWZlc3QgaXMgbWlzc2luZyB0aGUgcmVxdWlyZWQgYHt7IGtleSB9fWAgcHJvcGVydHkuJyxcbiAgICAgIFtNRVNTQUdFX0lEX01VU1RfQkVfUk9PVF9PQkpFQ1RdOiAnVGhlIG1hbmlmZXN0IG11c3QgYmUgYSBzaW5nbGUgSlNPTiBvYmplY3QuJ1xuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiAncHJvYmxlbSdcbiAgfVxufTtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVwb3J0RnVuZGluZ1VybH0uXG4gKi9cbmludGVyZmFjZSBSZXBvcnRGdW5kaW5nVXJsUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBFU0xpbnQgcnVsZSBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dDtcblxuICAvKipcbiAgICogVGhlIGBmdW5kaW5nVXJsYCBtZW1iZXIuXG4gICAqL1xuICByZWFkb25seSBtZW1iZXI6IEpzb25NZW1iZXJOb2RlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHRoZSBtYW5pZmVzdCByZXBvcnRpbmcgaGVscGVycy5cbiAqL1xuaW50ZXJmYWNlIFJlcG9ydFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgRVNMaW50IHJ1bGUgY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQ7XG5cbiAgLyoqXG4gICAqIFRoZSBtYW5pZmVzdCdzIHJvb3Qgb2JqZWN0IG5vZGUuXG4gICAqL1xuICByZWFkb25seSBtYW5pZmVzdE9iamVjdDogSnNvbk9iamVjdE5vZGU7XG59XG5cbi8qKlxuICogUmVwb3J0cyBldmVyeSBrZXkgdGhhdCBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIFJlcG9ydFBhcmFtc30uXG4gKi9cbmZ1bmN0aW9uIHJlcG9ydER1cGxpY2F0ZUtleXMocGFyYW1zOiBSZXBvcnRQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3QgeyBjb250ZXh0LCBtYW5pZmVzdE9iamVjdCB9ID0gcGFyYW1zO1xuICBjb25zdCBzZWVuS2V5cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1hbmlmZXN0T2JqZWN0Lm1lbWJlcnMpIHtcbiAgICBjb25zdCBrZXkgPSBnZXRNZW1iZXJLZXkobWVtYmVyKTtcblxuICAgIGlmIChzZWVuS2V5cy5oYXMoa2V5KSkge1xuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBkYXRhOiB7IGtleSB9LFxuICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURfRFVQTElDQVRFX0tFWSxcbiAgICAgICAgbm9kZTogdG9SZXBvcnROb2RlKG1lbWJlci5uYW1lKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlZW5LZXlzLmFkZChrZXkpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlcG9ydHMgdGhlIHdheXMgYSBgZnVuZGluZ1VybGAgY2FuIGJlIGVtcHR5IG9yIGhvbGQgYSBub24tc3RyaW5nIHZhbHVlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIFJlcG9ydEZ1bmRpbmdVcmxQYXJhbXN9LlxuICovXG5mdW5jdGlvbiByZXBvcnRGdW5kaW5nVXJsKHBhcmFtczogUmVwb3J0RnVuZGluZ1VybFBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7IGNvbnRleHQsIG1lbWJlciB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IHN0cmluZ1ZhbHVlID0gZ2V0U3RyaW5nVmFsdWUobWVtYmVyLnZhbHVlKTtcblxuICBpZiAoc3RyaW5nVmFsdWUgIT09IG51bGwpIHtcbiAgICBpZiAoc3RyaW5nVmFsdWUgPT09ICcnKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9FTVBUWV9GVU5ESU5HX1VSTCxcbiAgICAgICAgbm9kZTogdG9SZXBvcnROb2RlKG1lbWJlci52YWx1ZSlcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGZ1bmRpbmdPYmplY3QgPSBtZW1iZXIudmFsdWUgYXMgSnNvbk9iamVjdE5vZGU7XG5cbiAgaWYgKGZ1bmRpbmdPYmplY3QubWVtYmVycy5sZW5ndGggPT09IDApIHtcbiAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURfRU1QVFlfRlVORElOR19VUkwsXG4gICAgICBub2RlOiB0b1JlcG9ydE5vZGUoZnVuZGluZ09iamVjdClcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmb3IgKGNvbnN0IGZ1bmRpbmdNZW1iZXIgb2YgZnVuZGluZ09iamVjdC5tZW1iZXJzKSB7XG4gICAgY29uc3QgZnVuZGluZ1ZhbHVlID0gZ2V0U3RyaW5nVmFsdWUoZnVuZGluZ01lbWJlci52YWx1ZSk7XG5cbiAgICBpZiAoZnVuZGluZ1ZhbHVlID09PSBudWxsKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9JTlZBTElEX0ZVTkRJTkdfVVJMLFxuICAgICAgICBub2RlOiB0b1JlcG9ydE5vZGUoZnVuZGluZ01lbWJlci52YWx1ZSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoZnVuZGluZ1ZhbHVlID09PSAnJykge1xuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURfRU1QVFlfRlVORElOR19VUkwsXG4gICAgICAgIG5vZGU6IHRvUmVwb3J0Tm9kZShmdW5kaW5nTWVtYmVyLnZhbHVlKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVwb3J0cyBldmVyeSBrZXkgdGhhdCBpcyBub3QgYWxsb3dlZCwgYW5kIGV2ZXJ5IGFsbG93ZWQga2V5IHdob3NlIHZhbHVlIGhhcyB0aGUgd3JvbmcgdHlwZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBSZXBvcnRQYXJhbXN9LlxuICovXG5mdW5jdGlvbiByZXBvcnRLZXlWYWx1ZXMocGFyYW1zOiBSZXBvcnRQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3QgeyBjb250ZXh0LCBtYW5pZmVzdE9iamVjdCB9ID0gcGFyYW1zO1xuXG4gIGZvciAoY29uc3QgbWVtYmVyIG9mIG1hbmlmZXN0T2JqZWN0Lm1lbWJlcnMpIHtcbiAgICBjb25zdCBrZXkgPSBnZXRNZW1iZXJLZXkobWVtYmVyKTtcbiAgICBjb25zdCBleHBlY3RlZE5vZGVUeXBlcyA9IEtFWV9OT0RFX1RZUEVTLmdldChrZXkpO1xuXG4gICAgaWYgKCFleHBlY3RlZE5vZGVUeXBlcykge1xuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBkYXRhOiB7IGtleSB9LFxuICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURfRElTQUxMT1dFRF9LRVksXG4gICAgICAgIG5vZGU6IHRvUmVwb3J0Tm9kZShtZW1iZXIubmFtZSlcbiAgICAgIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKCFleHBlY3RlZE5vZGVUeXBlcy5pbmNsdWRlcyhtZW1iZXIudmFsdWUudHlwZSkpIHtcbiAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGFjdHVhbFR5cGU6IG1lbWJlci52YWx1ZS50eXBlLFxuICAgICAgICAgIGV4cGVjdGVkVHlwZTogZXhwZWN0ZWROb2RlVHlwZXMuam9pbignIG9yICcpLFxuICAgICAgICAgIGtleVxuICAgICAgICB9LFxuICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURfSU5WQUxJRF9UWVBFLFxuICAgICAgICBub2RlOiB0b1JlcG9ydE5vZGUobWVtYmVyLnZhbHVlKVxuICAgICAgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoa2V5ID09PSAnZnVuZGluZ1VybCcpIHtcbiAgICAgIHJlcG9ydEZ1bmRpbmdVcmwoeyBjb250ZXh0LCBtZW1iZXIgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVwb3J0cyBldmVyeSByZXF1aXJlZCBrZXkgdGhlIG1hbmlmZXN0IGlzIG1pc3NpbmcuXG4gKlxuICogYG1pbkFwcFZlcnNpb25gIGlzIHJlcXVpcmVkIG9ubHkgb25jZSB0aGUgcGx1Z2luIGhhcyBiZWVuIHJlbGVhc2VkLiBgdXBkYXRlVmVyc2lvbkluRmlsZXNGb3JQbHVnaW5gXG4gKiB3cml0ZXMgaXQgYXQgcmVsZWFzZSB0aW1lLCBzbyBhIHJlcG8gc3RpbGwgYXQgdmVyc2lvbiBgMC4wLjBgIGxlZ2l0aW1hdGVseSBoYXMgbm9uZSBhbmQgbXVzdCBub3QgYmVcbiAqIHJlcG9ydGVkIGZvciBpdC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBSZXBvcnRQYXJhbXN9LlxuICovXG5mdW5jdGlvbiByZXBvcnRNaXNzaW5nS2V5cyhwYXJhbXM6IFJlcG9ydFBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7IGNvbnRleHQsIG1hbmlmZXN0T2JqZWN0IH0gPSBwYXJhbXM7XG4gIGNvbnN0IHJlcXVpcmVkS2V5cyA9IFsuLi5BTFdBWVNfUkVRVUlSRURfS0VZUywgLi4uKGdldE1hbmlmZXN0U3RyaW5nVmFsdWUobWFuaWZlc3RPYmplY3QsICd2ZXJzaW9uJykgPT09IFVOUkVMRUFTRURfVkVSU0lPTiA/IFtdIDogWydtaW5BcHBWZXJzaW9uJ10pXTtcblxuICBmb3IgKGNvbnN0IGtleSBvZiByZXF1aXJlZEtleXMpIHtcbiAgICBpZiAoIWZpbmRNYW5pZmVzdE1lbWJlcihtYW5pZmVzdE9iamVjdCwga2V5KSkge1xuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBkYXRhOiB7IGtleSB9LFxuICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURfTUlTU0lOR19LRVksXG4gICAgICAgIG5vZGU6IHRvUmVwb3J0Tm9kZShtYW5pZmVzdE9iamVjdClcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUJBLDhCQVdPO0FBS0EsTUFBTSw0QkFBNEI7QUFLbEMsTUFBTSwyQkFBMkI7QUFLakMsTUFBTSwrQkFBK0I7QUFLckMsTUFBTSwwQkFBMEI7QUFLaEMsTUFBTSxpQ0FBaUM7QUFLdkMsTUFBTSx5QkFBeUI7QUFLL0IsTUFBTSxpQ0FBaUM7QUFLOUMsTUFBTSx1QkFBdUIsQ0FBQyxVQUFVLGVBQWUsTUFBTSxpQkFBaUIsUUFBUSxTQUFTO0FBSy9GLE1BQU0saUJBQWlCLG9CQUFJLElBQStCO0FBQUEsRUFDeEQsQ0FBQyxVQUFVLENBQUMs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
|
|
@@ -0,0 +1,240 @@
|
|
|
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
|
+
(function () {
|
|
6
|
+
function ensureBrowserProcess() {
|
|
7
|
+
const browserProcess = {
|
|
8
|
+
browser: true,
|
|
9
|
+
cwd() {
|
|
10
|
+
return "/";
|
|
11
|
+
},
|
|
12
|
+
env: {},
|
|
13
|
+
platform: "android"
|
|
14
|
+
};
|
|
15
|
+
const existingProcess = globalThis.process;
|
|
16
|
+
if (!existingProcess) {
|
|
17
|
+
globalThis.process = browserProcess;
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (existingProcess.versions?.node) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const existingProcessRecord = existingProcess;
|
|
24
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
25
|
+
existingProcessRecord[key] ??= value;
|
|
26
|
+
}
|
|
27
|
+
existingProcessRecord["browser"] = true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
ensureBrowserProcess();
|
|
31
|
+
})();
|
|
32
|
+
(function patchObsidianRequire() {
|
|
33
|
+
const originalRequire = require;
|
|
34
|
+
if (!originalRequire || originalRequire.__isPatched) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
require = Object.assign(
|
|
39
|
+
(id) => requirePatched(id),
|
|
40
|
+
originalRequire,
|
|
41
|
+
{
|
|
42
|
+
__isPatched: true
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
function extractDefault(module) {
|
|
47
|
+
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
51
|
+
'@codemirror/autocomplete',
|
|
52
|
+
'@codemirror/collab',
|
|
53
|
+
'@codemirror/commands',
|
|
54
|
+
'@codemirror/language',
|
|
55
|
+
'@codemirror/lint',
|
|
56
|
+
'@codemirror/search',
|
|
57
|
+
'@codemirror/state',
|
|
58
|
+
'@codemirror/text',
|
|
59
|
+
'@codemirror/view',
|
|
60
|
+
'@lezer/common',
|
|
61
|
+
'@lezer/highlight',
|
|
62
|
+
'@lezer/lr',
|
|
63
|
+
'obsidian']
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
67
|
+
'@codemirror/closebrackets',
|
|
68
|
+
'@codemirror/comment',
|
|
69
|
+
'@codemirror/fold',
|
|
70
|
+
'@codemirror/gutter',
|
|
71
|
+
'@codemirror/highlight',
|
|
72
|
+
'@codemirror/history',
|
|
73
|
+
'@codemirror/matchbrackets',
|
|
74
|
+
'@codemirror/panel',
|
|
75
|
+
'@codemirror/rangeset',
|
|
76
|
+
'@codemirror/rectangular-selection',
|
|
77
|
+
'@codemirror/stream-parser',
|
|
78
|
+
'@codemirror/tooltip']
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
function requirePatched(id) {
|
|
82
|
+
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
83
|
+
return originalRequire?.(id);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
87
|
+
if (globalThis.app.isMobile) {
|
|
88
|
+
if (id === 'process' || id === 'node:process') {
|
|
89
|
+
// eslint-disable-next-line no-console -- Valid usage.
|
|
90
|
+
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
91
|
+
|
|
92
|
+
return process;
|
|
93
|
+
}
|
|
94
|
+
} else {
|
|
95
|
+
const module = originalRequire?.(id);
|
|
96
|
+
if (module) {
|
|
97
|
+
return extractDefault(module);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// eslint-disable-next-line no-console -- Valid usage.
|
|
102
|
+
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
|
|
103
|
+
return {};
|
|
104
|
+
}
|
|
105
|
+
})();
|
|
106
|
+
|
|
107
|
+
"use strict";
|
|
108
|
+
var __defProp = Object.defineProperty;
|
|
109
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
110
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
111
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
112
|
+
var __export = (target, all) => {
|
|
113
|
+
for (var name in all)
|
|
114
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
115
|
+
};
|
|
116
|
+
var __copyProps = (to, from, except, desc) => {
|
|
117
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
118
|
+
for (let key of __getOwnPropNames(from))
|
|
119
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
120
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
121
|
+
}
|
|
122
|
+
return to;
|
|
123
|
+
};
|
|
124
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
125
|
+
var no_local_obsidian_internals_exports = {};
|
|
126
|
+
__export(no_local_obsidian_internals_exports, {
|
|
127
|
+
MESSAGE_ID: () => MESSAGE_ID,
|
|
128
|
+
noLocalObsidianInternals: () => noLocalObsidianInternals
|
|
129
|
+
});
|
|
130
|
+
module.exports = __toCommonJS(no_local_obsidian_internals_exports);
|
|
131
|
+
var import_ts_estree_node = require('@mnaoumov/typescript-dev-toolkit/linters/eslint-rules/ts-estree-node');
|
|
132
|
+
var import_utils = require('@typescript-eslint/utils');
|
|
133
|
+
const MESSAGE_ID = "noLocalObsidianInternals";
|
|
134
|
+
const OBSIDIAN_MODULE_NAME = "obsidian";
|
|
135
|
+
const EVENT_METHOD_NAMES = /* @__PURE__ */ new Set(["off", "on", "trigger", "tryTrigger"]);
|
|
136
|
+
const noLocalObsidianInternals = {
|
|
137
|
+
create(context) {
|
|
138
|
+
return {
|
|
139
|
+
"TSModuleDeclaration"(node) {
|
|
140
|
+
const moduleNode = (0, import_ts_estree_node.toTSESTreeNode)(node);
|
|
141
|
+
if (moduleNode.id.type !== import_utils.AST_NODE_TYPES.Literal || moduleNode.id.value !== OBSIDIAN_MODULE_NAME || !moduleNode.body) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const isStringLiteralType = createStringLiteralTypeCheck(context);
|
|
145
|
+
for (const statement of moduleNode.body.body) {
|
|
146
|
+
for (const reported of collectReportedNodes(statement, isStringLiteralType)) {
|
|
147
|
+
context.report({
|
|
148
|
+
data: { name: describeNode(reported) },
|
|
149
|
+
loc: reported.loc,
|
|
150
|
+
messageId: MESSAGE_ID
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
},
|
|
157
|
+
meta: {
|
|
158
|
+
docs: {
|
|
159
|
+
description: "Disallow declaring Obsidian internals locally in a `declare module 'obsidian'` augmentation"
|
|
160
|
+
},
|
|
161
|
+
messages: {
|
|
162
|
+
[MESSAGE_ID]: "`{{ name }}` declares Obsidian API locally. Import it from `obsidian-typings` instead, adding it there first if it is missing or wrong. Only a custom-event overload of `on` / `off` / `trigger` / `tryTrigger` may stay here."
|
|
163
|
+
},
|
|
164
|
+
schema: [],
|
|
165
|
+
type: "problem"
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
function collectReportedNodes(statement, isStringLiteralType) {
|
|
169
|
+
const declaration = statement.type === import_utils.AST_NODE_TYPES.ExportNamedDeclaration && statement.declaration ? statement.declaration : statement;
|
|
170
|
+
if (declaration.type !== import_utils.AST_NODE_TYPES.TSInterfaceDeclaration) {
|
|
171
|
+
return [declaration];
|
|
172
|
+
}
|
|
173
|
+
return [
|
|
174
|
+
...declaration.extends,
|
|
175
|
+
...declaration.body.body.filter((member) => !isCustomEventOverload(member, isStringLiteralType))
|
|
176
|
+
];
|
|
177
|
+
}
|
|
178
|
+
function createStringLiteralTypeCheck(context) {
|
|
179
|
+
const services = context.sourceCode.parserServices;
|
|
180
|
+
const checker = services.program?.getTypeChecker() ?? null;
|
|
181
|
+
return isStringLiteralType;
|
|
182
|
+
function isStringLiteralType(typeNode) {
|
|
183
|
+
if (typeNode.type === import_utils.AST_NODE_TYPES.TSUnionType) {
|
|
184
|
+
return typeNode.types.every((member) => isStringLiteralType(member));
|
|
185
|
+
}
|
|
186
|
+
if (typeNode.type === import_utils.AST_NODE_TYPES.TSLiteralType) {
|
|
187
|
+
return typeNode.literal.type === import_utils.AST_NODE_TYPES.Literal && typeof typeNode.literal.value === "string";
|
|
188
|
+
}
|
|
189
|
+
if (!checker) {
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
const type = checker.getTypeFromTypeNode(services.esTreeNodeToTSNodeMap.get(typeNode));
|
|
193
|
+
return type.isUnion() ? type.types.every((member) => member.isStringLiteral()) : type.isStringLiteral();
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
function describeNode(node) {
|
|
197
|
+
switch (node.type) {
|
|
198
|
+
case import_utils.AST_NODE_TYPES.ClassDeclaration:
|
|
199
|
+
case import_utils.AST_NODE_TYPES.FunctionDeclaration:
|
|
200
|
+
case import_utils.AST_NODE_TYPES.TSDeclareFunction:
|
|
201
|
+
case import_utils.AST_NODE_TYPES.TSEnumDeclaration:
|
|
202
|
+
case import_utils.AST_NODE_TYPES.TSModuleDeclaration:
|
|
203
|
+
case import_utils.AST_NODE_TYPES.TSTypeAliasDeclaration: {
|
|
204
|
+
return node.id?.type === import_utils.AST_NODE_TYPES.Identifier ? node.id.name : node.type;
|
|
205
|
+
}
|
|
206
|
+
case import_utils.AST_NODE_TYPES.TSInterfaceHeritage: {
|
|
207
|
+
return node.expression.type === import_utils.AST_NODE_TYPES.Identifier ? `extends ${node.expression.name}` : "extends";
|
|
208
|
+
}
|
|
209
|
+
case import_utils.AST_NODE_TYPES.TSMethodSignature:
|
|
210
|
+
case import_utils.AST_NODE_TYPES.TSPropertySignature: {
|
|
211
|
+
return readKeyName(node.key) ?? node.type;
|
|
212
|
+
}
|
|
213
|
+
default: {
|
|
214
|
+
return node.type;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
function isCustomEventOverload(member, isStringLiteralType) {
|
|
219
|
+
if (member.type !== import_utils.AST_NODE_TYPES.TSMethodSignature) {
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
const name = readKeyName(member.key);
|
|
223
|
+
if (name === null || !EVENT_METHOD_NAMES.has(name)) {
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
const firstParameter = member.params[0];
|
|
227
|
+
return firstParameter?.type === import_utils.AST_NODE_TYPES.Identifier && firstParameter.typeAnnotation !== void 0 && isStringLiteralType(firstParameter.typeAnnotation.typeAnnotation);
|
|
228
|
+
}
|
|
229
|
+
function readKeyName(key) {
|
|
230
|
+
if (key.type === import_utils.AST_NODE_TYPES.Identifier) {
|
|
231
|
+
return key.name;
|
|
232
|
+
}
|
|
233
|
+
return key.type === import_utils.AST_NODE_TYPES.Literal && typeof key.value === "string" ? key.value : null;
|
|
234
|
+
}
|
|
235
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
236
|
+
0 && (module.exports = {
|
|
237
|
+
MESSAGE_ID,
|
|
238
|
+
noLocalObsidianInternals
|
|
239
|
+
});
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9uby1sb2NhbC1vYnNpZGlhbi1pbnRlcm5hbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiBuby1sb2NhbC1vYnNpZGlhbi1pbnRlcm5hbHNcbiAqXG4gKiBSZXBvcnRzIGV2ZXJ5IG1lbWJlciBhIGBkZWNsYXJlIG1vZHVsZSAnb2JzaWRpYW4nYCBhdWdtZW50YXRpb24gYWRkcyB0byBPYnNpZGlhbidzIHR5cGVzLlxuICpcbiAqIE9ic2lkaWFuJ3MgaW50ZXJuYWwgKHVuZG9jdW1lbnRlZCkgQVBJIGlzIHR5cGVkIGluIGBvYnNpZGlhbi10eXBpbmdzYCwgd2hlcmUgZWFjaCBtZW1iZXIgaXMgY2hlY2tlZCBhZ2FpbnN0IHRoZVxuICogc2hpcHBlZCBgYXBwLmpzYCBvbiBldmVyeSByZWxlYXNlIHRoYXQgaGFzIGl0LiBBIGxvY2FsIGF1Z21lbnRhdGlvbiBpcyBhIHNlY29uZCwgdW5jaGVja2VkIGNvcHkgb2YgdGhlIHNhbWVcbiAqIGNsYWltOiBpdCBkcmlmdHMgZnJvbSB3aGF0IE9ic2lkaWFuIGFjdHVhbGx5IHNoaXBzLCBhbmQgd2hlbiBgb2JzaWRpYW4tdHlwaW5nc2AgZ2FpbnMgdGhlIG1lbWJlciB0aGUgdHdvXG4gKiBkZWNsYXJhdGlvbnMgbWVyZ2Ugc2lsZW50bHksIG9yIGNsYXNoLiBUaGUgZml4IGZvciBhIG1lbWJlciBgb2JzaWRpYW4tdHlwaW5nc2AgbGFja3Mgb3IgZGVjbGFyZXMgd3JvbmdseSBnb2VzXG4gKiBpbnRvIGBvYnNpZGlhbi10eXBpbmdzYCwgYW5kIHRoZSBjb25zdW1lciBpbXBvcnRzIGl0IGZyb20gdGhlcmUuXG4gKlxuICogT25lIHNoYXBlIGlzIGV4ZW1wdDogYW4gb3ZlcmxvYWQgb2YgYG9uYCwgYG9mZmAsIGB0cmlnZ2VyYCBvciBgdHJ5VHJpZ2dlcmAgd2hvc2UgZmlyc3QgcGFyYW1ldGVyIGlzIGFcbiAqIHN0cmluZy1saXRlcmFsIHR5cGUsIG9yIGEgdW5pb24gb2YgdGhlbS4gVGhhdCBpcyBob3cgYSBwbHVnaW4gdHlwZXMgaXRzIE9XTiBjdXN0b20gZXZlbnRzIG9uIGBXb3Jrc3BhY2VgIG9yXG4gKiBhbm90aGVyIGBFdmVudHNgIHN1YmNsYXNzLCBzbyBpdCBkZXNjcmliZXMgdGhlIHBsdWdpbidzIGNvZGUgcmF0aGVyIHRoYW4gT2JzaWRpYW4ncy4gQSBuYW1lIHR5cGVkIHRocm91Z2ggYW5cbiAqIGFsaWFzIChgbmFtZTogTXlFdmVudE5hbWVgKSBpcyByZWNvZ25pemVkIG9ubHkgd2hlbiB0aGUgZmlsZSBpcyBsaW50ZWQgd2l0aCB0eXBlIGluZm9ybWF0aW9uLCB3aGljaCB0aGUgc2hhcmVkXG4gKiBjb25maWd1cmF0aW9uIGFsd2F5cyBoYXMuXG4gKlxuICogT25seSB0aGUgbW9kdWxlIG5hbWVkIGV4YWN0bHkgYG9ic2lkaWFuYCBpcyByZWFkLiBBIGBkZWNsYXJlIG1vZHVsZSAnb2JzaWRpYW4tdHlwaW5ncydgIGF1Z21lbnRhdGlvbiBvZlxuICogYFBsdWdpbnNQbHVnaW5zUmVjb3JkYCBpcyBgb2JzaWRpYW4tdHlwaW5nc2AnIGRlc2lnbmVkIGV4dGVuc2lvbiBwb2ludCBmb3IgdGhpcmQtcGFydHkgcGx1Z2luIHR5cGVzLCBhbmQgaXNcbiAqIG5vdCByZXBvcnRlZC5cbiAqXG4gKiBOb3QgYXR0ZW1wdGVkOiBhIGxvY2FsIGludGVyZmFjZSBvciBhbiBpbmxpbmUgY2FzdCB0aGF0IHNwZWxscyBhbiBpbnRlcm5hbCBzaGFwZSBjYW5ub3QgYmUgdG9sZCBhcGFydCBmcm9tIGFcbiAqIHJlcG9zaXRvcnkncyBvd24gdHlwZXMgbWVjaGFuaWNhbGx5LCBzbyB0aG9zZSBhcmUgbGVmdCB0byByZXZpZXcuXG4gKi9cbmltcG9ydCB0eXBlIHtcbiAgUGFyc2VyU2VydmljZXMsXG4gIFRTRVNUcmVlXG59IGZyb20gJ0B0eXBlc2NyaXB0LWVzbGludC91dGlscyc7XG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuaW1wb3J0IHR5cGUgeyBUeXBlTm9kZSB9IGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQgeyB0b1RTRVNUcmVlTm9kZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L2xpbnRlcnMvZXNsaW50LXJ1bGVzL3RzLWVzdHJlZS1ub2RlJztcbmltcG9ydCB7IEFTVF9OT0RFX1RZUEVTIH0gZnJvbSAnQHR5cGVzY3JpcHQtZXNsaW50L3V0aWxzJztcblxuLyoqXG5NZXNzYWdlIElEIHJlcG9ydGVkIGZvciBhIG1lbWJlciBhIGBkZWNsYXJlIG1vZHVsZSAnb2JzaWRpYW4nYCBhdWdtZW50YXRpb24gYWRkcy5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAnbm9Mb2NhbE9ic2lkaWFuSW50ZXJuYWxzJztcblxuLyoqXG5UaGUgbW9kdWxlIG5hbWUgd2hvc2UgYXVnbWVudGF0aW9ucyBhcmUgcmVwb3J0ZWQuXG4gKi9cbmNvbnN0IE9CU0lESUFOX01PRFVMRV9OQU1FID0gJ29ic2lkaWFuJztcblxuLyoqXG5UaGUgYEV2ZW50c2AgbWV0aG9kcyBhIGN1c3RvbS1ldmVudCBvdmVybG9hZCBtYXkgYmUgZGVjbGFyZWQgb24uXG4gKi9cbmNvbnN0IEVWRU5UX01FVEhPRF9OQU1FUyA9IG5ldyBTZXQoWydvZmYnLCAnb24nLCAndHJpZ2dlcicsICd0cnlUcmlnZ2VyJ10pO1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgdHlwZSBpcyBhIHN0cmluZy1saXRlcmFsIHR5cGUsIG9yIGEgdW5pb24gbWFkZSBvbmx5IG9mIHRoZW0uXG4gKi9cbnR5cGUgU3RyaW5nTGl0ZXJhbFR5cGVDaGVjayA9ICh0eXBlTm9kZTogVFNFU1RyZWUuVHlwZU5vZGUpID0+IGJvb2xlYW47XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgZGlzYWxsb3dpbmcgbG9jYWxseSBkZWNsYXJlZCBPYnNpZGlhbiBpbnRlcm5hbHMgaW4gYSBgZGVjbGFyZSBtb2R1bGUgJ29ic2lkaWFuJ2AgYXVnbWVudGF0aW9uLlxuICovXG5leHBvcnQgY29uc3Qgbm9Mb2NhbE9ic2lkaWFuSW50ZXJuYWxzOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdUU01vZHVsZURlY2xhcmF0aW9uJyhub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbW9kdWxlTm9kZSA9IHRvVFNFU1RyZWVOb2RlKG5vZGUpIGFzIFRTRVNUcmVlLlRTTW9kdWxlRGVjbGFyYXRpb247XG5cbiAgICAgICAgaWYgKG1vZHVsZU5vZGUuaWQudHlwZSAhPT0gQVNUX05PREVfVFlQRVMuTGl0ZXJhbCB8fCBtb2R1bGVOb2RlLmlkLnZhbHVlICE9PSBPQlNJRElBTl9NT0RVTEVfTkFNRSB8fCAhbW9kdWxlTm9kZS5ib2R5KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNTdHJpbmdMaXRlcmFsVHlwZSA9IGNyZWF0ZVN0cmluZ0xpdGVyYWxUeXBlQ2hlY2soY29udGV4dCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBzdGF0ZW1lbnQgb2YgbW9kdWxlTm9kZS5ib2R5LmJvZHkpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHJlcG9ydGVkIG9mIGNvbGxlY3RSZXBvcnRlZE5vZGVzKHN0YXRlbWVudCwgaXNTdHJpbmdMaXRlcmFsVHlwZSkpIHtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgZGF0YTogeyBuYW1lOiBkZXNjcmliZU5vZGUocmVwb3J0ZWQpIH0sXG4gICAgICAgICAgICAgIGxvYzogcmVwb3J0ZWQubG9jLFxuICAgICAgICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0Rpc2FsbG93IGRlY2xhcmluZyBPYnNpZGlhbiBpbnRlcm5hbHMgbG9jYWxseSBpbiBhIGBkZWNsYXJlIG1vZHVsZSBcXCdvYnNpZGlhblxcJ2AgYXVnbWVudGF0aW9uJ1xuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEXTogJ2B7eyBuYW1lIH19YCBkZWNsYXJlcyBPYnNpZGlhbiBBUEkgbG9jYWxseS4gSW1wb3J0IGl0IGZyb20gYG9ic2lkaWFuLXR5cGluZ3NgIGluc3RlYWQsIGFkZGluZyBpdCB0aGVyZSBmaXJzdCBpZiBpdCBpcyBtaXNzaW5nIG9yIHdyb25nLiBPbmx5IGEgY3VzdG9tLWV2ZW50IG92ZXJsb2FkIG9mIGBvbmAgLyBgb2ZmYCAvIGB0cmlnZ2VyYCAvIGB0cnlUcmlnZ2VyYCBtYXkgc3RheSBoZXJlLidcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogJ3Byb2JsZW0nXG4gIH1cbn07XG5cbi8qKlxuICogQ29sbGVjdHMgdGhlIG5vZGVzIHRvIHJlcG9ydCBmb3Igb25lIHN0YXRlbWVudCBvZiBhIGBkZWNsYXJlIG1vZHVsZSAnb2JzaWRpYW4nYCBibG9jay5cbiAqXG4gKiBBbiBpbnRlcmZhY2UgaXMgcmVwb3J0ZWQgbWVtYmVyIGJ5IG1lbWJlciwgc28gYSBjdXN0b20tZXZlbnQgb3ZlcmxvYWQgY2FuIHNpdCBiZXNpZGUgYSByZXBvcnRlZCBtZW1iZXIsIGFuZCBpdHNcbiAqIGBleHRlbmRzYCBjbGF1c2UgaXMgcmVwb3J0ZWQgdG9vLCBzaW5jZSB0aGF0IGJvbHRzIG1lbWJlcnMgb24gYXMgc3VyZWx5IGFzIGRlY2xhcmluZyB0aGVtLiBBbnkgb3RoZXIgc3RhdGVtZW50XG4gKiAoYSBjbGFzcywgYSBmdW5jdGlvbiwgYSB0eXBlIGFsaWFzLCBhIHZhcmlhYmxlKSBpcyByZXBvcnRlZCB3aG9sZS5cbiAqXG4gKiBAcGFyYW0gc3RhdGVtZW50IC0gQSBzdGF0ZW1lbnQgb2YgdGhlIG1vZHVsZSBibG9jay5cbiAqIEBwYXJhbSBpc1N0cmluZ0xpdGVyYWxUeXBlIC0gVGhlIGNoZWNrIG9mIHdoZXRoZXIgYSB0eXBlIGlzIGEgc3RyaW5nLWxpdGVyYWwgdHlwZSBvciBhIHVuaW9uIG9mIHRoZW0uXG4gKiBAcmV0dXJucyBUaGUgbm9kZXMgdG8gcmVwb3J0LlxuICovXG5mdW5jdGlvbiBjb2xsZWN0UmVwb3J0ZWROb2RlcyhzdGF0ZW1lbnQ6IFRTRVNUcmVlLlByb2dyYW1TdGF0ZW1lbnQsIGlzU3RyaW5nTGl0ZXJhbFR5cGU6IFN0cmluZ0xpdGVyYWxUeXBlQ2hlY2spOiBUU0VTVHJlZS5Ob2RlW10ge1xuICBjb25zdCBkZWNsYXJhdGlvbiA9IHN0YXRlbWVudC50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5FeHBvcnROYW1lZERlY2xhcmF0aW9uICYmIHN0YXRlbWVudC5kZWNsYXJhdGlvbiA/IHN0YXRlbWVudC5kZWNsYXJhdGlvbiA6IHN0YXRlbWVudDtcblxuICBpZiAoZGVjbGFyYXRpb24udHlwZSAhPT0gQVNUX05PREVfVFlQRVMuVFNJbnRlcmZhY2VEZWNsYXJhdGlvbikge1xuICAgIHJldHVybiBbZGVjbGFyYXRpb25dO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICAuLi5kZWNsYXJhdGlvbi5leHRlbmRzLFxuICAgIC4uLmRlY2xhcmF0aW9uLmJvZHkuYm9keS5maWx0ZXIoKG1lbWJlcikgPT4gIWlzQ3VzdG9tRXZlbnRPdmVybG9hZChtZW1iZXIsIGlzU3RyaW5nTGl0ZXJhbFR5cGUpKVxuICBdO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGNoZWNrIG9mIHdoZXRoZXIgYSB0eXBlIGlzIGEgc3RyaW5nLWxpdGVyYWwgdHlwZSwgb3IgYSB1bmlvbiBtYWRlIG9ubHkgb2YgdGhlbS5cbiAqXG4gKiBBIHR5cGUgd3JpdHRlbiBvdXQgYXMgbGl0ZXJhbHMgKGAnbXktZXZlbnQnIHwgJ290aGVyLWV2ZW50J2ApIGlzIHJlY29nbml6ZWQgZnJvbSB0aGUgc3ludGF4IGFsb25lLiBBIHR5cGUgcmVhY2hlZFxuICogdGhyb3VnaCBhbiBhbGlhcyAoYG5hbWU6IE15RXZlbnROYW1lYCkgbmVlZHMgdGhlIHR5cGUgY2hlY2tlciwgc28gaXQgaXMgcmVjb2duaXplZCBvbmx5IHdoZW4gdGhlIGZpbGUgaXMgbGludGVkXG4gKiB3aXRoIHR5cGUgaW5mb3JtYXRpb24sIGFuZCByZXBvcnRlZCBvdGhlcndpc2UuXG4gKlxuICogQHBhcmFtIGNvbnRleHQgLSBUaGUgcnVsZSBjb250ZXh0LlxuICogQHJldHVybnMgVGhlIGNoZWNrLlxuICovXG5mdW5jdGlvbiBjcmVhdGVTdHJpbmdMaXRlcmFsVHlwZUNoZWNrKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBTdHJpbmdMaXRlcmFsVHlwZUNoZWNrIHtcbiAgY29uc3Qgc2VydmljZXMgPSBjb250ZXh0LnNvdXJjZUNvZGUucGFyc2VyU2VydmljZXMgYXMgUGFyc2VyU2VydmljZXM7XG4gIGNvbnN0IGNoZWNrZXIgPSBzZXJ2aWNlcy5wcm9ncmFtPy5nZXRUeXBlQ2hlY2tlcigpID8/IG51bGw7XG5cbiAgcmV0dXJuIGlzU3RyaW5nTGl0ZXJhbFR5cGU7XG5cbiAgZnVuY3Rpb24gaXNTdHJpbmdMaXRlcmFsVHlwZSh0eXBlTm9kZTogVFNFU1RyZWUuVHlwZU5vZGUpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZU5vZGUudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuVFNVbmlvblR5cGUpIHtcbiAgICAgIHJldHVybiB0eXBlTm9kZS50eXBlcy5ldmVyeSgobWVtYmVyKSA9PiBpc1N0cmluZ0xpdGVyYWxUeXBlKG1lbWJlcikpO1xuICAgIH1cblxuICAgIGlmICh0eXBlTm9kZS50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5UU0xpdGVyYWxUeXBlKSB7XG4gICAgICByZXR1cm4gdHlwZU5vZGUubGl0ZXJhbC50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5MaXRlcmFsICYmIHR5cGVvZiB0eXBlTm9kZS5saXRlcmFsLnZhbHVlID09PSAnc3RyaW5nJztcbiAgICB9XG5cbiAgICBpZiAoIWNoZWNrZXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlID0gY2hlY2tlci5nZXRUeXBlRnJvbVR5cGVOb2RlKHNlcnZpY2VzLmVzVHJlZU5vZGVUb1RTTm9kZU1hcC5nZXQodHlwZU5vZGUpIGFzIFR5cGVOb2RlKTtcbiAgICByZXR1cm4gdHlwZS5pc1VuaW9uKCkgPyB0eXBlLnR5cGVzLmV2ZXJ5KChtZW1iZXIpID0+IG1lbWJlci5pc1N0cmluZ0xpdGVyYWwoKSkgOiB0eXBlLmlzU3RyaW5nTGl0ZXJhbCgpO1xuICB9XG59XG5cbi8qKlxuICogTmFtZXMgYSByZXBvcnRlZCBub2RlIGZvciB0aGUgbWVzc2FnZS5cbiAqXG4gKiBAcGFyYW0gbm9kZSAtIFRoZSByZXBvcnRlZCBub2RlLlxuICogQHJldHVybnMgVGhlIG5hbWUgdG8gc2hvdy5cbiAqL1xuZnVuY3Rpb24gZGVzY3JpYmVOb2RlKG5vZGU6IFRTRVNUcmVlLk5vZGUpOiBzdHJpbmcge1xuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgIGNhc2UgQVNUX05PREVfVFlQRVMuQ2xhc3NEZWNsYXJhdGlvbjpcbiAgICBjYXNlIEFTVF9OT0RFX1RZUEVTLkZ1bmN0aW9uRGVjbGFyYXRpb246XG4gICAgY2FzZSBBU1RfTk9ERV9UWVBFUy5UU0RlY2xhcmVGdW5jdGlvbjpcbiAgICBjYXNlIEFTVF9OT0RFX1RZUEVTLlRTRW51bURlY2xhcmF0aW9uOlxuICAgIGNhc2UgQVNUX05PREVfVFlQRVMuVFNNb2R1bGVEZWNsYXJhdGlvbjpcbiAgICBjYXNlIEFTVF9OT0RFX1RZUEVTLlRTVHlwZUFsaWFzRGVjbGFyYXRpb246IHtcbiAgICAgIHJldHVybiBub2RlLmlkPy50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5JZGVudGlmaWVyID8gbm9kZS5pZC5uYW1lIDogbm9kZS50eXBlO1xuICAgIH1cbiAgICBjYXNlIEFTVF9OT0RFX1RZUEVTLlRTSW50ZXJmYWNlSGVyaXRhZ2U6IHtcbiAgICAgIHJldHVybiBub2RlLmV4cHJlc3Npb24udHlwZSA9PT0gQVNUX05PREVfVFlQRVMuSWRlbnRpZmllciA/IGBleHRlbmRzICR7bm9kZS5leHByZXNzaW9uLm5hbWV9YCA6ICdleHRlbmRzJztcbiAgICB9XG4gICAgY2FzZSBBU1RfTk9ERV9UWVBFUy5UU01ldGhvZFNpZ25hdHVyZTpcbiAgICBjYXNlIEFTVF9OT0RFX1RZUEVTLlRTUHJvcGVydHlTaWduYXR1cmU6IHtcbiAgICAgIHJldHVybiByZWFkS2V5TmFtZShub2RlLmtleSkgPz8gbm9kZS50eXBlO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gbm9kZS50eXBlO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGFuIGludGVyZmFjZSBtZW1iZXIgaXMgYSBjdXN0b20tZXZlbnQgb3ZlcmxvYWQ6IGFuIGBvbmAgLyBgb2ZmYCAvIGB0cmlnZ2VyYCAvIGB0cnlUcmlnZ2VyYCBtZXRob2RcbiAqIHdob3NlIGZpcnN0IHBhcmFtZXRlciBpcyB0eXBlZCBhcyBhIHN0cmluZy1saXRlcmFsIHR5cGUgb3IgYSB1bmlvbiBvZiB0aGVtLlxuICpcbiAqIEBwYXJhbSBtZW1iZXIgLSBUaGUgaW50ZXJmYWNlIG1lbWJlci5cbiAqIEBwYXJhbSBpc1N0cmluZ0xpdGVyYWxUeXBlIC0gVGhlIGNoZWNrIG9mIHdoZXRoZXIgYSB0eXBlIGlzIGEgc3RyaW5nLWxpdGVyYWwgdHlwZSBvciBhIHVuaW9uIG9mIHRoZW0uXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUgbWVtYmVyIGlzIGV4ZW1wdC5cbiAqL1xuZnVuY3Rpb24gaXNDdXN0b21FdmVudE92ZXJsb2FkKG1lbWJlcjogVFNFU1RyZWUuVHlwZUVsZW1lbnQsIGlzU3RyaW5nTGl0ZXJhbFR5cGU6IFN0cmluZ0xpdGVyYWxUeXBlQ2hlY2spOiBib29sZWFuIHtcbiAgaWYgKG1lbWJlci50eXBlICE9PSBBU1RfTk9ERV9UWVBFUy5UU01ldGhvZFNpZ25hdHVyZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IG5hbWUgPSByZWFkS2V5TmFtZShtZW1iZXIua2V5KTtcbiAgaWYgKG5hbWUgPT09IG51bGwgfHwgIUVWRU5UX01FVEhPRF9OQU1FUy5oYXMobmFtZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBmaXJzdFBhcmFtZXRlciA9IG1lbWJlci5wYXJhbXNbMF07XG4gIHJldHVybiBmaXJzdFBhcmFtZXRlcj8udHlwZSA9PT0gQVNUX05PREVfVFlQRVMuSWRlbnRpZmllciAmJiBmaXJzdFBhcmFtZXRlci50eXBlQW5ub3RhdGlvbiAhPT0gdW5kZWZpbmVkXG4gICAgJiYgaXNTdHJpbmdMaXRlcmFsVHlwZShmaXJzdFBhcmFtZXRlci50eXBlQW5ub3RhdGlvbi50eXBlQW5ub3RhdGlvbik7XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIG5hbWUgb2YgYSBtZW1iZXIga2V5IHdyaXR0ZW4gYXMgYW4gaWRlbnRpZmllciBvciBhIHN0cmluZyBsaXRlcmFsLlxuICpcbiAqIEBwYXJhbSBrZXkgLSBUaGUgbWVtYmVyIGtleS5cbiAqIEByZXR1cm5zIFRoZSBuYW1lLCBvciBgbnVsbGAgZm9yIGEgY29tcHV0ZWQga2V5LlxuICovXG5mdW5jdGlvbiByZWFkS2V5TmFtZShrZXk6IFRTRVNUcmVlLlByb3BlcnR5TmFtZSk6IG51bGwgfCBzdHJpbmcge1xuICBpZiAoa2V5LnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLklkZW50aWZpZXIpIHtcbiAgICByZXR1cm4ga2V5Lm5hbWU7XG4gIH1cblxuICByZXR1cm4ga2V5LnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLkxpdGVyYWwgJiYgdHlwZW9mIGtleS52YWx1ZSA9PT0gJ3N0cmluZycgPyBrZXkudmFsdWUgOiBudWxsO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaUNBLDRCQUErQjtBQUMvQixtQkFBK0I7QUFLeEIsTUFBTSxhQUFhO0FBSzFCLE1BQU0sdUJBQXVCO0FBSzdCLE1BQU0scUJBQXFCLG9CQUFJLElBQUksQ0FBQyxPQUFPLE1BQU0sV0FBVyxZQUFZLENBQUM7QUFVbEUsTUFBTSwyQkFBNEM7QUFBQSxFQUN2RCxPQUFPLFNBQVM7QUFDZCxXQUFPO0FBQUEsTUFDTCxzQkFBc0IsTUFBdUI7QUFDM0MsY0FBTSxpQkFBYSxzQ0FBZSxJQUFJO0FBRXRDLFlBQUksV0FBVyxHQUFHLFNBQVMsNEJBQWUsV0FBVyxXQUFXLEdBQUcsVUFBVSx3QkFBd0IsQ0FBQyxXQUFXLE1BQU07QUFDckg7QUFBQSxRQUNGO0FBRUEsY0FBTSxzQkFBc0IsNkJBQTZCLE9BQU87QUFFaEUsbUJBQVcsYUFBYSxXQUFXLEtBQUssTUFBTTtBQUM1QyxxQkFBVyxZQUFZLHFCQUFxQixXQUFXLG1CQUFtQixHQUFHO0FBQzNFLG9CQUFRLE9BQU87QUFBQSxjQUNiLE1BQU0sRUFBRSxNQUFNLGFBQWEsUUFBUSxFQUFFO0FBQUEsY0FDckMsS0FBSyxTQUFTO0FBQUEsY0FDZCxXQUFXO0FBQUEsWUFDYixDQUFDO0FBQUEsVUFDSDtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixDQUFDLFVBQVUsR0FBRztBQUFBLElBQ2hCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxJQUNULE1BQU07QUFBQSxFQUNSO0FBQ0Y7QUFhQSxTQUFTLHFCQUFxQixXQUFzQyxxQkFBOEQ7QUFDaEksUUFBTSxjQUFjLFVBQVUsU0FBUyw0QkFBZSwwQkFBMEIsVUFBVSxjQUFjLFVBQVUsY0FBYztBQUVoSSxNQUFJLFlBQVksU0FBUyw0QkFBZSx3QkFBd0I7QUFDOUQsV0FBTyxDQUFDLFdBQVc7QUFBQSxFQUNyQjtBQUVBLFNBQU87QUFBQSxJQUNMLEdBQUcsWUFBWTtBQUFBLElBQ2YsR0FBRyxZQUFZLEtBQUssS0FBSyxPQUFPLENBQUMsV0FBVyxDQUFDLHNCQUFzQixRQUFRLG1CQUFtQixDQUFDO0FBQUEsRUFDakc7QUFDRjtBQVlBLFNBQVMsNkJBQTZCLFNBQW1EO0FBQ3ZGLFFBQU0sV0FBVyxRQUFRLFdBQVc7QUFDcEMsUUFBTSxVQUFVLFNBQVMsU0FBUyxlQUFlLEtBQUs7QUFFdEQsU0FBTztBQUVQLFdBQVMsb0JBQW9CLFVBQXNDO0FBQ2pFLFFBQUksU0FBUyxTQUFTLDRCQUFlLGFBQWE7QUFDaEQsYUFBTyxTQUFTLE1BQU0sTUFBTSxDQUFDLFdBQVcsb0JBQW9CLE1BQU0sQ0FBQztBQUFBLElBQ3JFO0FBRUEsUUFBSSxTQUFTLFNBQVMsNEJBQWUsZUFBZTtBQUNsRCxhQUFPLFNBQVMsUUFBUSxTQUFTLDRCQUFlLFdBQVcsT0FBTyxTQUFTLFFBQVEsVUFBVTtBQUFBLElBQy9GO0FBRUEsUUFBSSxDQUFDLFNBQVM7QUFDWixhQUFPO0FBQUEsSUFDVDtBQUVBLFVBQU0sT0FBTyxRQUFRLG9CQUFvQixTQUFTLHNCQUFzQixJQUFJLFFBQVEsQ0FBYTtBQUNqRyxXQUFPLEtBQUssUUFBUSxJQUFJLEtBQUssTUFBTSxNQUFNLENBQUMsV0FBVyxPQUFPLGdCQUFnQixDQUFDLElBQUksS0FBSyxnQkFBZ0I7QUFBQSxFQUN4RztBQUNGO0FBUUEsU0FBUyxhQUFhLE1BQTZCO0FBQ2pELFVBQVEsS0FBSyxNQUFNO0FBQUEsSUFDakIsS0FBSyw0QkFBZTtBQUFBLElBQ3BCLEtBQUssNEJBQWU7QUFBQSxJQUNwQixLQUFLLDRCQUFlO0FBQUEsSUFDcEIsS0FBSyw0QkFBZTtBQUFBLElBQ3BCLEtBQUssNEJBQWU7QUFBQSxJQUNwQixLQUFLLDRCQUFlLHdCQUF3QjtBQUMxQyxhQUFPLEtBQUssSUFBSSxTQUFTLDRCQUFlLGFBQWEsS0FBSyxHQUFHLE9BQU8sS0FBSztBQUFBLElBQzNFO0FBQUEsSUFDQSxLQUFLLDRCQUFlLHFCQUFxQjtBQUN2QyxhQUFPLEtBQUssV0FBVyxTQUFTLDRCQUFlLGFBQWEsV0FBVyxLQUFLLFdBQVcsSUFBSSxLQUFLO0FBQUEsSUFDbEc7QUFBQSxJQUNBLEtBQUssNEJBQWU7QUFBQSxJQUNwQixLQUFLLDRCQUFlLHFCQUFxQjtBQUN2QyxhQUFPLFlBQVksS0FBSyxHQUFHLEtBQUssS0FBSztBQUFBLElBQ3ZDO0FBQUEsSUFDQSxTQUFTO0FBQ1AsYUFBTyxLQUFLO0FBQUEsSUFDZDtBQUFBLEVBQ0Y7QUFDRjtBQVVBLFNBQVMsc0JBQXNCLFFBQThCLHFCQUFzRDtBQUNqSCxNQUFJLE9BQU8sU0FBUyw0QkFBZSxtQkFBbUI7QUFDcEQsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLE9BQU8sWUFBWSxPQUFPLEdBQUc7QUFDbkMsTUFBSSxTQUFTLFFBQVEsQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLEdBQUc7QUFDbEQsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLGlCQUFpQixPQUFPLE9BQU8sQ0FBQztBQUN0QyxTQUFPLGdCQUFnQixTQUFTLDRCQUFlLGNBQWMsZUFBZSxtQkFBbUIsVUFDMUYsb0JBQW9CLGVBQWUsZUFBZSxjQUFjO0FBQ3ZFO0FBUUEsU0FBUyxZQUFZLEtBQTJDO0FBQzlELE1BQUksSUFBSSxTQUFTLDRCQUFlLFlBQVk7QUFDMUMsV0FBTyxJQUFJO0FBQUEsRUFDYjtBQUVBLFNBQU8sSUFBSSxTQUFTLDRCQUFlLFdBQVcsT0FBTyxJQUFJLFVBQVUsV0FBVyxJQUFJLFFBQVE7QUFDNUY7IiwibmFtZXMiOltdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference path="../../library-references.d.cts" />
|
|
2
|
+
import type { Rule } from 'eslint' with { 'resolution-mode': 'import' };
|
|
3
|
+
/**
|
|
4
|
+
Message ID reported for a member a `declare module 'obsidian'` augmentation adds.
|
|
5
|
+
*/
|
|
6
|
+
export declare const MESSAGE_ID = "noLocalObsidianInternals";
|
|
7
|
+
/**
|
|
8
|
+
* ESLint rule disallowing locally declared Obsidian internals in a `declare module 'obsidian'` augmentation.
|
|
9
|
+
*/
|
|
10
|
+
export declare const noLocalObsidianInternals: Rule.RuleModule;
|