gitlab-ci-local 4.28.2 → 4.31.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 +40 -11
- package/package.json +21 -17
- package/src/argv.js +132 -0
- package/src/commander.js +32 -10
- package/src/git-data.js +42 -36
- package/src/handler.js +52 -76
- package/src/index.js +31 -17
- package/src/job-executor.js +4 -4
- package/src/job-expanders.js +17 -24
- package/src/job.js +187 -118
- package/src/parser-includes.js +9 -4
- package/src/parser.js +27 -32
- package/src/state.js +6 -2
- package/src/types/job-options.js +1 -1
- package/src/utils.js +19 -29
- package/src/validator.js +30 -8
- package/src/variables-from-files.js +98 -52
- package/src/types/parser-options.js +0 -3
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -25,70 +29,112 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
25
29
|
exports.VariablesFromFiles = void 0;
|
|
26
30
|
const fs = __importStar(require("fs-extra"));
|
|
27
31
|
const yaml = __importStar(require("js-yaml"));
|
|
28
|
-
const path_1 = __importDefault(require("path"));
|
|
29
32
|
const chalk_1 = __importDefault(require("chalk"));
|
|
33
|
+
const asserts_1 = require("./asserts");
|
|
34
|
+
const utils_1 = require("./utils");
|
|
30
35
|
class VariablesFromFiles {
|
|
31
|
-
static async init(
|
|
32
|
-
const
|
|
36
|
+
static async init(argv, writeStreams, gitData) {
|
|
37
|
+
const cwd = argv.cwd;
|
|
38
|
+
const homeDir = argv.home;
|
|
39
|
+
const remoteVariables = argv.remoteVariables;
|
|
40
|
+
const autoCompleting = argv.autoCompleting;
|
|
33
41
|
const homeVariablesFile = `${homeDir}/.gitlab-ci-local/variables.yml`;
|
|
34
|
-
|
|
35
|
-
let
|
|
36
|
-
|
|
37
|
-
|
|
42
|
+
const variables = {};
|
|
43
|
+
let remoteFileData = {};
|
|
44
|
+
let homeFileData = {};
|
|
45
|
+
if (remoteVariables && !autoCompleting) {
|
|
46
|
+
const match = remoteVariables.match(/(?<url>git@.*?)=(?<file>.*?)=(?<ref>.*)/);
|
|
47
|
+
(0, asserts_1.assert)(match != null, "--remote-variables is malformed use 'git@gitlab.com:firecow/example.git=gitlab-variables.yml=master' syntax");
|
|
48
|
+
const url = match.groups?.url;
|
|
49
|
+
const file = match.groups?.file;
|
|
50
|
+
const ref = match.groups?.ref;
|
|
51
|
+
const res = await utils_1.Utils.bash(`git archive --remote=${url} ${ref} ${file} | tar -xO ${file}`, cwd);
|
|
52
|
+
remoteFileData = yaml.load(`${res.stdout}`);
|
|
38
53
|
}
|
|
39
|
-
|
|
54
|
+
if (await fs.pathExists(homeVariablesFile)) {
|
|
40
55
|
homeFileData = yaml.load(await fs.readFile(homeVariablesFile, "utf8"), { schema: yaml.FAILSAFE_SCHEMA });
|
|
41
56
|
}
|
|
42
|
-
|
|
43
|
-
if (typeof
|
|
44
|
-
|
|
57
|
+
const unpack = (v) => {
|
|
58
|
+
if (typeof v === "string") {
|
|
59
|
+
const catchAll = { values: {}, type: "variable" };
|
|
60
|
+
catchAll.values = {};
|
|
61
|
+
catchAll.values["*"] = v;
|
|
62
|
+
return catchAll;
|
|
45
63
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const groupUrl = `${gitData.remote.host}/${gitData.remote.group}/`;
|
|
49
|
-
for (const [groupKey, groupEntries] of Object.entries(homeFileData?.group ?? [])) {
|
|
50
|
-
if (!groupUrl.includes(this.normalizeProjectKey(groupKey, writeStreams))) {
|
|
51
|
-
continue;
|
|
64
|
+
if (v.type == null) {
|
|
65
|
+
v.type = "variable";
|
|
52
66
|
}
|
|
53
|
-
|
|
54
|
-
|
|
67
|
+
return v;
|
|
68
|
+
};
|
|
69
|
+
const addToVariables = async (key, val, scopePriority) => {
|
|
70
|
+
const { type, values } = unpack(val);
|
|
71
|
+
for (const [matcher, content] of Object.entries(values)) {
|
|
72
|
+
(0, asserts_1.assert)(typeof content == "string", `${key}.${matcher} content must be text or multiline text`);
|
|
73
|
+
if (type === "variable" && typeof content === "string" && !content.match(/^[/|~]/)) {
|
|
74
|
+
const regexp = new RegExp(matcher.replace(/\*/g, ".*"), "g");
|
|
75
|
+
variables[key] = variables[key] ?? { type: "variable", environments: [] };
|
|
76
|
+
variables[key].environments.push({ content, regexp, regexpPriority: matcher.length, scopePriority });
|
|
77
|
+
}
|
|
78
|
+
else if (type === "variable" && typeof content === "string" && content.match(/^[/|~]/)) {
|
|
79
|
+
const fileSource = content.replace(/^~\/(.*)/, `${homeDir}/$1`);
|
|
80
|
+
const regexp = new RegExp(matcher.replace(/\*/g, ".*"), "g");
|
|
81
|
+
variables[key] = variables[key] ?? { type: "file", environments: [] };
|
|
82
|
+
if (fs.existsSync(fileSource)) {
|
|
83
|
+
variables[key].environments.push({ content, regexp, regexpPriority: matcher.length, scopePriority, fileSource });
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
variables[key].environments.push({ content: `warn: ${key} is pointing to invalid path\n`, regexp, regexpPriority: matcher.length, scopePriority });
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else if (type === "file") {
|
|
90
|
+
const regexp = new RegExp(matcher.replace(/\*/g, ".*"), "g");
|
|
91
|
+
variables[key] = variables[key] ?? { type: "file", environments: [] };
|
|
92
|
+
variables[key].environments.push({ content, regexp, regexpPriority: matcher.length, scopePriority });
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
(0, asserts_1.assert)(false, `${key} was not handled properly`);
|
|
96
|
+
}
|
|
55
97
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
if (!projectUrl.includes(this.normalizeProjectKey(projectKey, writeStreams))) {
|
|
61
|
-
continue;
|
|
98
|
+
};
|
|
99
|
+
const addVariableFileToVariables = async (fileData, filePriority) => {
|
|
100
|
+
for (const [globalKey, globalEntry] of Object.entries(fileData?.global ?? {})) {
|
|
101
|
+
await addToVariables(globalKey, globalEntry, 1 + filePriority);
|
|
62
102
|
}
|
|
63
|
-
|
|
64
|
-
|
|
103
|
+
const groupUrl = `${gitData.remote.host}/${gitData.remote.group}/`;
|
|
104
|
+
for (const [groupKey, groupEntries] of Object.entries(fileData?.group ?? {})) {
|
|
105
|
+
if (!groupUrl.includes(this.normalizeProjectKey(groupKey, writeStreams)))
|
|
106
|
+
continue;
|
|
107
|
+
(0, asserts_1.assert)(groupEntries != null, "groupEntries cannot be null/undefined");
|
|
108
|
+
(0, asserts_1.assert)(typeof groupEntries === "object", "groupEntries must be object");
|
|
109
|
+
for (const [k, v] of Object.entries(groupEntries)) {
|
|
110
|
+
await addToVariables(k, v, 2 + filePriority);
|
|
111
|
+
}
|
|
65
112
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
113
|
+
const projectUrl = `${gitData.remote.host}/${gitData.remote.group}/${gitData.remote.project}.git`;
|
|
114
|
+
for (const [projectKey, projectEntries] of Object.entries(fileData?.project ?? [])) {
|
|
115
|
+
if (!projectUrl.includes(this.normalizeProjectKey(projectKey, writeStreams)))
|
|
116
|
+
continue;
|
|
117
|
+
(0, asserts_1.assert)(projectEntries != null, "projectEntries cannot be null/undefined");
|
|
118
|
+
(0, asserts_1.assert)(typeof projectEntries === "object", "projectEntries must be object");
|
|
119
|
+
for (const [k, v] of Object.entries(projectEntries)) {
|
|
120
|
+
await addToVariables(k, v, 3 + filePriority);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
await addVariableFileToVariables(remoteFileData, 0);
|
|
125
|
+
await addVariableFileToVariables(homeFileData, 10);
|
|
126
|
+
const projectVariablesFile = `${argv.cwd}/.gitlab-ci-local-variables.yml`;
|
|
69
127
|
if (fs.existsSync(projectVariablesFile)) {
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
128
|
+
const projectVariablesFileData = yaml.load(await fs.readFile(projectVariablesFile, "utf8"), { schema: yaml.FAILSAFE_SCHEMA }) ?? {};
|
|
129
|
+
(0, asserts_1.assert)(projectVariablesFileData != null, "projectEntries cannot be null/undefined");
|
|
130
|
+
(0, asserts_1.assert)(typeof projectVariablesFileData === "object", "projectEntries must be object");
|
|
131
|
+
for (const [k, v] of Object.entries(projectVariablesFileData)) {
|
|
132
|
+
await addToVariables(k, v, 24);
|
|
73
133
|
}
|
|
74
134
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
continue;
|
|
79
|
-
}
|
|
80
|
-
if (!value.match(/^[/|~]/)) {
|
|
81
|
-
continue;
|
|
82
|
-
}
|
|
83
|
-
if (value.match(/\/$/)) {
|
|
84
|
-
continue;
|
|
85
|
-
}
|
|
86
|
-
const fromFilePath = value.replace(/^~\/(.*)/, `${homeDir}/$1`);
|
|
87
|
-
if (fs.existsSync(fromFilePath)) {
|
|
88
|
-
await fs.ensureDir(`/tmp/gitlab-ci-local-file-variables-${gitData.CI_PROJECT_PATH_SLUG}/`);
|
|
89
|
-
await fs.copyFile(fromFilePath, `/tmp/gitlab-ci-local-file-variables-${gitData.CI_PROJECT_PATH_SLUG}/${path_1.default.basename(fromFilePath)}`);
|
|
90
|
-
variables[key] = `/tmp/gitlab-ci-local-file-variables-${gitData.CI_PROJECT_PATH_SLUG}/${path_1.default.basename(fromFilePath)}`;
|
|
91
|
-
}
|
|
135
|
+
for (const varObj of Object.values(variables)) {
|
|
136
|
+
varObj.environments.sort((a, b) => b.scopePriority - a.scopePriority);
|
|
137
|
+
varObj.environments.sort((a, b) => b.regexpPriority - a.regexpPriority);
|
|
92
138
|
}
|
|
93
139
|
return variables;
|
|
94
140
|
}
|
|
@@ -100,4 +146,4 @@ class VariablesFromFiles {
|
|
|
100
146
|
}
|
|
101
147
|
}
|
|
102
148
|
exports.VariablesFromFiles = VariablesFromFiles;
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLWZyb20tZmlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2YXJpYWJsZXMtZnJvbS1maWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsNkNBQStCO0FBQy9CLDhDQUFnQztBQUNoQyxnREFBd0I7QUFDeEIsa0RBQTBCO0FBRTFCLE1BQWEsa0JBQWtCO0lBRTNCLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQVcsRUFBRSxZQUEwQixFQUFFLE9BQWdCLEVBQUUsSUFBWTtRQUNyRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4QyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsT0FBTyxpQ0FBaUMsQ0FBQztRQUN0RSxJQUFJLFNBQVMsR0FBOEIsRUFBRSxDQUFDO1FBQzlDLElBQUksWUFBaUIsQ0FBQztRQUN0QixJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQ25DLFlBQVksR0FBSSxFQUFFLENBQUM7U0FDdEI7YUFBTTtZQUNILFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFDLENBQUMsQ0FBQztTQUMxRztRQUVELEtBQUssTUFBTSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDLEVBQUU7WUFDL0UsSUFBSSxPQUFPLFdBQVcsS0FBSyxRQUFRLEVBQUU7Z0JBQ2pDLFNBQVM7YUFDWjtZQUNELFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxXQUFXLENBQUM7U0FDdEM7UUFFRCxNQUFNLFFBQVEsR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUM7UUFDbkUsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsRUFBRTtZQUM5RSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUU7Z0JBQ3RFLFNBQVM7YUFDWjtZQUNELElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxFQUFFO2dCQUNsQyxTQUFTO2FBQ1o7WUFDRCxTQUFTLEdBQUcsRUFBQyxHQUFHLFNBQVMsRUFBRSxHQUFHLFlBQVksRUFBQyxDQUFDO1NBQy9DO1FBRUQsTUFBTSxVQUFVLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sTUFBTSxDQUFDO1FBQ2xHLEtBQUssTUFBTSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUU7WUFDcEYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFO2dCQUMxRSxTQUFTO2FBQ1o7WUFDRCxJQUFJLE9BQU8sY0FBYyxLQUFLLFFBQVEsRUFBRTtnQkFDcEMsU0FBUzthQUNaO1lBQ0QsU0FBUyxHQUFHLEVBQUMsR0FBRyxTQUFTLEVBQUUsR0FBRyxjQUFjLEVBQUMsQ0FBQztTQUNqRDtRQUVELE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxHQUFHLGlDQUFpQyxDQUFDO1FBQ3JFLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO1lBQ3JDLE1BQU0sZUFBZSxHQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5SCxJQUFJLE9BQU8sZUFBZSxLQUFLLFFBQVEsRUFBRTtnQkFDckMsU0FBUyxHQUFHLEVBQUMsR0FBRyxTQUFTLEVBQUUsR0FBRyxlQUFlLEVBQUMsQ0FBQzthQUNsRDtTQUNKO1FBRUQseUNBQXlDO1FBQ3pDLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2xELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO2dCQUMzQixTQUFTO2FBQ1o7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDeEIsU0FBUzthQUNaO1lBRUQsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNwQixTQUFTO2FBQ1o7WUFFRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxHQUFHLE9BQU8sS0FBSyxDQUFDLENBQUM7WUFDaEUsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUM3QixNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsdUNBQXVDLE9BQU8sQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUM7Z0JBQzNGLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsdUNBQXVDLE9BQU8sQ0FBQyxvQkFBb0IsSUFBSSxjQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdEksU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLHVDQUF1QyxPQUFPLENBQUMsb0JBQW9CLElBQUksY0FBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO2FBQ3pIO1NBQ0o7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQVcsRUFBRSxZQUEwQjtRQUM5RCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUNuQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUEsZUFBSyxFQUFBLGtDQUFrQyxHQUFHLFNBQVMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BHLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNKO0FBL0VELGdEQStFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7V3JpdGVTdHJlYW1zfSBmcm9tIFwiLi90eXBlcy93cml0ZS1zdHJlYW1zXCI7XG5pbXBvcnQge0dpdERhdGF9IGZyb20gXCIuL2dpdC1kYXRhXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSBcImpzLXlhbWxcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5cbmV4cG9ydCBjbGFzcyBWYXJpYWJsZXNGcm9tRmlsZXMge1xuXG4gICAgc3RhdGljIGFzeW5jIGluaXQoY3dkOiBzdHJpbmcsIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zLCBnaXREYXRhOiBHaXREYXRhLCBob21lOiBzdHJpbmcpOiBQcm9taXNlPHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0+IHtcbiAgICAgICAgY29uc3QgaG9tZURpciA9IGhvbWUucmVwbGFjZSgvXFwvJC8sIFwiXCIpO1xuICAgICAgICBjb25zdCBob21lVmFyaWFibGVzRmlsZSA9IGAke2hvbWVEaXJ9Ly5naXRsYWItY2ktbG9jYWwvdmFyaWFibGVzLnltbGA7XG4gICAgICAgIGxldCB2YXJpYWJsZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICAgICAgbGV0IGhvbWVGaWxlRGF0YTogYW55O1xuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoaG9tZVZhcmlhYmxlc0ZpbGUpKSB7XG4gICAgICAgICAgICBob21lRmlsZURhdGEgPSAge307XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBob21lRmlsZURhdGEgPSB5YW1sLmxvYWQoYXdhaXQgZnMucmVhZEZpbGUoaG9tZVZhcmlhYmxlc0ZpbGUsIFwidXRmOFwiKSwge3NjaGVtYTogeWFtbC5GQUlMU0FGRV9TQ0hFTUF9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgW2dsb2JhbEtleSwgZ2xvYmFsRW50cnldIG9mIE9iamVjdC5lbnRyaWVzKGhvbWVGaWxlRGF0YT8uZ2xvYmFsID8/IFtdKSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBnbG9iYWxFbnRyeSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyaWFibGVzW2dsb2JhbEtleV0gPSBnbG9iYWxFbnRyeTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdyb3VwVXJsID0gYCR7Z2l0RGF0YS5yZW1vdGUuaG9zdH0vJHtnaXREYXRhLnJlbW90ZS5ncm91cH0vYDtcbiAgICAgICAgZm9yIChjb25zdCBbZ3JvdXBLZXksIGdyb3VwRW50cmllc10gb2YgT2JqZWN0LmVudHJpZXMoaG9tZUZpbGVEYXRhPy5ncm91cCA/PyBbXSkpIHtcbiAgICAgICAgICAgIGlmICghZ3JvdXBVcmwuaW5jbHVkZXModGhpcy5ub3JtYWxpemVQcm9qZWN0S2V5KGdyb3VwS2V5LCB3cml0ZVN0cmVhbXMpKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBncm91cEVudHJpZXMgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhcmlhYmxlcyA9IHsuLi52YXJpYWJsZXMsIC4uLmdyb3VwRW50cmllc307XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9qZWN0VXJsID0gYCR7Z2l0RGF0YS5yZW1vdGUuaG9zdH0vJHtnaXREYXRhLnJlbW90ZS5ncm91cH0vJHtnaXREYXRhLnJlbW90ZS5wcm9qZWN0fS5naXRgO1xuICAgICAgICBmb3IgKGNvbnN0IFtwcm9qZWN0S2V5LCBwcm9qZWN0RW50cmllc10gb2YgT2JqZWN0LmVudHJpZXMoaG9tZUZpbGVEYXRhPy5wcm9qZWN0ID8/IFtdKSkge1xuICAgICAgICAgICAgaWYgKCFwcm9qZWN0VXJsLmluY2x1ZGVzKHRoaXMubm9ybWFsaXplUHJvamVjdEtleShwcm9qZWN0S2V5LCB3cml0ZVN0cmVhbXMpKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9qZWN0RW50cmllcyAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyaWFibGVzID0gey4uLnZhcmlhYmxlcywgLi4ucHJvamVjdEVudHJpZXN9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvamVjdFZhcmlhYmxlc0ZpbGUgPSBgJHtjd2R9Ly5naXRsYWItY2ktbG9jYWwtdmFyaWFibGVzLnltbGA7XG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHByb2plY3RWYXJpYWJsZXNGaWxlKSkge1xuICAgICAgICAgICAgY29uc3QgcHJvamVjdEZpbGVEYXRhOiBhbnkgPSB5YW1sLmxvYWQoYXdhaXQgZnMucmVhZEZpbGUocHJvamVjdFZhcmlhYmxlc0ZpbGUsIFwidXRmOFwiKSwge3NjaGVtYTogeWFtbC5GQUlMU0FGRV9TQ0hFTUF9KSA/PyB7fTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvamVjdEZpbGVEYXRhID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgdmFyaWFibGVzID0gey4uLnZhcmlhYmxlcywgLi4ucHJvamVjdEZpbGVEYXRhfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdlbmVyYXRlIGZpbGVzIGZvciBmaWxlIHR5cGUgdmFyaWFibGVzXG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdmFsdWUubWF0Y2goL15bL3x+XS8pKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZS5tYXRjaCgvXFwvJC8pKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZyb21GaWxlUGF0aCA9IHZhbHVlLnJlcGxhY2UoL15+XFwvKC4qKS8sIGAke2hvbWVEaXJ9LyQxYCk7XG4gICAgICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhmcm9tRmlsZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZnMuZW5zdXJlRGlyKGAvdG1wL2dpdGxhYi1jaS1sb2NhbC1maWxlLXZhcmlhYmxlcy0ke2dpdERhdGEuQ0lfUFJPSkVDVF9QQVRIX1NMVUd9L2ApO1xuICAgICAgICAgICAgICAgIGF3YWl0IGZzLmNvcHlGaWxlKGZyb21GaWxlUGF0aCwgYC90bXAvZ2l0bGFiLWNpLWxvY2FsLWZpbGUtdmFyaWFibGVzLSR7Z2l0RGF0YS5DSV9QUk9KRUNUX1BBVEhfU0xVR30vJHtwYXRoLmJhc2VuYW1lKGZyb21GaWxlUGF0aCl9YCk7XG4gICAgICAgICAgICAgICAgdmFyaWFibGVzW2tleV0gPSBgL3RtcC9naXRsYWItY2ktbG9jYWwtZmlsZS12YXJpYWJsZXMtJHtnaXREYXRhLkNJX1BST0pFQ1RfUEFUSF9TTFVHfS8ke3BhdGguYmFzZW5hbWUoZnJvbUZpbGVQYXRoKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlcztcbiAgICB9XG5cbiAgICBzdGF0aWMgbm9ybWFsaXplUHJvamVjdEtleShrZXk6IHN0cmluZywgd3JpdGVTdHJlYW1zOiBXcml0ZVN0cmVhbXMpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWtleS5pbmNsdWRlcyhcIjpcIikpIHJldHVybiBrZXk7XG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge3llbGxvdyBXQVJOSU5HOiBJbnRlcnByZXRpbmcgJyR7a2V5fScgYXMgJyR7a2V5LnJlcGxhY2UoXCI6XCIsIFwiL1wiKX0nfVxcbmApO1xuICAgICAgICByZXR1cm4ga2V5LnJlcGxhY2UoXCI6XCIsIFwiL1wiKTtcbiAgICB9XG59XG4iXX0=
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLWZyb20tZmlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2YXJpYWJsZXMtZnJvbS1maWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLDZDQUErQjtBQUMvQiw4Q0FBZ0M7QUFDaEMsa0RBQTBCO0FBRTFCLHVDQUFpQztBQUNqQyxtQ0FBOEI7QUFhOUIsTUFBYSxrQkFBa0I7SUFFM0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBVSxFQUFFLFlBQTBCLEVBQUUsT0FBZ0I7UUFDdEUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNyQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzFCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDN0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMzQyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsT0FBTyxpQ0FBaUMsQ0FBQztRQUN0RSxNQUFNLFNBQVMsR0FBcUMsRUFBRSxDQUFDO1FBQ3ZELElBQUksY0FBYyxHQUFRLEVBQUUsQ0FBQztRQUM3QixJQUFJLFlBQVksR0FBUSxFQUFFLENBQUM7UUFFM0IsSUFBSSxlQUFlLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDcEMsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1lBQy9FLElBQUEsZ0JBQU0sRUFBQyxLQUFLLElBQUksSUFBSSxFQUFFLDZHQUE2RyxDQUFDLENBQUM7WUFDckksTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUM7WUFDOUIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDaEMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxHQUFH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bXBvcnQge1dyaXRlU3RyZWFtc30gZnJvbSBcIi4vdHlwZXMvd3JpdGUtc3RyZWFtc1wiO1xuaW1wb3J0IHtHaXREYXRhfSBmcm9tIFwiLi9naXQtZGF0YVwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgKiBhcyB5YW1sIGZyb20gXCJqcy15YW1sXCI7XG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQge0FyZ3Z9IGZyb20gXCIuL2FyZ3ZcIjtcbmltcG9ydCB7YXNzZXJ0fSBmcm9tIFwiLi9hc3NlcnRzXCI7XG5pbXBvcnQge1V0aWxzfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENJQ0RWYXJpYWJsZSB7XG4gICAgdHlwZTogXCJmaWxlXCJ8XCJ2YXJpYWJsZVwiO1xuICAgIGVudmlyb25tZW50czoge1xuICAgICAgICBjb250ZW50OiBzdHJpbmc7XG4gICAgICAgIHJlZ2V4cDogUmVnRXhwO1xuICAgICAgICByZWdleHBQcmlvcml0eTogbnVtYmVyO1xuICAgICAgICBzY29wZVByaW9yaXR5OiBudW1iZXI7XG4gICAgICAgIGZpbGVTb3VyY2U/OiBzdHJpbmc7XG4gICAgfVtdO1xufVxuXG5leHBvcnQgY2xhc3MgVmFyaWFibGVzRnJvbUZpbGVzIHtcblxuICAgIHN0YXRpYyBhc3luYyBpbml0KGFyZ3Y6IEFyZ3YsIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zLCBnaXREYXRhOiBHaXREYXRhKTogUHJvbWlzZTx7IFtuYW1lOiBzdHJpbmddOiBDSUNEVmFyaWFibGUgfT4ge1xuICAgICAgICBjb25zdCBjd2QgPSBhcmd2LmN3ZDtcbiAgICAgICAgY29uc3QgaG9tZURpciA9IGFyZ3YuaG9tZTtcbiAgICAgICAgY29uc3QgcmVtb3RlVmFyaWFibGVzID0gYXJndi5yZW1vdGVWYXJpYWJsZXM7XG4gICAgICAgIGNvbnN0IGF1dG9Db21wbGV0aW5nID0gYXJndi5hdXRvQ29tcGxldGluZztcbiAgICAgICAgY29uc3QgaG9tZVZhcmlhYmxlc0ZpbGUgPSBgJHtob21lRGlyfS8uZ2l0bGFiLWNpLWxvY2FsL3ZhcmlhYmxlcy55bWxgO1xuICAgICAgICBjb25zdCB2YXJpYWJsZXM6IHsgW25hbWU6IHN0cmluZ106IENJQ0RWYXJpYWJsZSB9ID0ge307XG4gICAgICAgIGxldCByZW1vdGVGaWxlRGF0YTogYW55ID0ge307XG4gICAgICAgIGxldCBob21lRmlsZURhdGE6IGFueSA9IHt9O1xuXG4gICAgICAgIGlmIChyZW1vdGVWYXJpYWJsZXMgJiYgIWF1dG9Db21wbGV0aW5nKSB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IHJlbW90ZVZhcmlhYmxlcy5tYXRjaCgvKD88dXJsPmdpdEAuKj8pPSg/PGZpbGU+Lio/KT0oPzxyZWY+LiopLyk7XG4gICAgICAgICAgICBhc3NlcnQobWF0Y2ggIT0gbnVsbCwgXCItLXJlbW90ZS12YXJpYWJsZXMgaXMgbWFsZm9ybWVkIHVzZSAnZ2l0QGdpdGxhYi5jb206ZmlyZWNvdy9leGFtcGxlLmdpdD1naXRsYWItdmFyaWFibGVzLnltbD1tYXN0ZXInIHN5bnRheFwiKTtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IG1hdGNoLmdyb3Vwcz8udXJsO1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IG1hdGNoLmdyb3Vwcz8uZmlsZTtcbiAgICAgICAgICAgIGNvbnN0IHJlZiA9IG1hdGNoLmdyb3Vwcz8ucmVmO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgVXRpbHMuYmFzaChgZ2l0IGFyY2hpdmUgLS1yZW1vdGU9JHt1cmx9ICR7cmVmfSAke2ZpbGV9IHwgdGFyIC14TyAke2ZpbGV9YCwgY3dkKTtcbiAgICAgICAgICAgIHJlbW90ZUZpbGVEYXRhID0geWFtbC5sb2FkKGAke3Jlcy5zdGRvdXR9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXdhaXQgZnMucGF0aEV4aXN0cyhob21lVmFyaWFibGVzRmlsZSkpIHtcbiAgICAgICAgICAgIGhvbWVGaWxlRGF0YSA9IHlhbWwubG9hZChhd2FpdCBmcy5yZWFkRmlsZShob21lVmFyaWFibGVzRmlsZSwgXCJ1dGY4XCIpLCB7c2NoZW1hOiB5YW1sLkZBSUxTQUZFX1NDSEVNQX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdW5wYWNrICA9ICh2OiBhbnkpOiB7IHZhbHVlczogYW55OyB0eXBlOiBcImZpbGVcInxcInZhcmlhYmxlXCJ9ID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhdGNoQWxsOiB7IHZhbHVlczogYW55OyB0eXBlOiBcImZpbGVcInxcInZhcmlhYmxlXCJ9ID0geyB2YWx1ZXM6IHt9LCB0eXBlOiBcInZhcmlhYmxlXCJ9O1xuICAgICAgICAgICAgICAgIGNhdGNoQWxsLnZhbHVlcyA9IHt9O1xuICAgICAgICAgICAgICAgIGNhdGNoQWxsLnZhbHVlc1tcIipcIl0gPSB2O1xuICAgICAgICAgICAgICAgIHJldHVybiBjYXRjaEFsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh2LnR5cGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHYudHlwZSA9IFwidmFyaWFibGVcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBhZGRUb1ZhcmlhYmxlcyA9IGFzeW5jIChrZXk6IHN0cmluZywgdmFsOiBhbnksIHNjb3BlUHJpb3JpdHk6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3Qge3R5cGUsIHZhbHVlc30gPSB1bnBhY2sodmFsKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW21hdGNoZXIsIGNvbnRlbnRdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICBhc3NlcnQodHlwZW9mIGNvbnRlbnQgPT0gXCJzdHJpbmdcIiwgYCR7a2V5fS4ke21hdGNoZXJ9IGNvbnRlbnQgbXVzdCBiZSB0ZXh0IG9yIG11bHRpbGluZSB0ZXh0YCk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IFwidmFyaWFibGVcIiAmJiB0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIiAmJiAhY29udGVudC5tYXRjaCgvXlsvfH5dLykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cChtYXRjaGVyLnJlcGxhY2UoL1xcKi9nLCBcIi4qXCIpLCBcImdcIik7XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlc1trZXldID0gdmFyaWFibGVzW2tleV0gPz8ge3R5cGU6IFwidmFyaWFibGVcIiwgZW52aXJvbm1lbnRzOiBbXX07XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlc1trZXldLmVudmlyb25tZW50cy5wdXNoKHtjb250ZW50LCByZWdleHAsIHJlZ2V4cFByaW9yaXR5OiBtYXRjaGVyLmxlbmd0aCwgc2NvcGVQcmlvcml0eX0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJ2YXJpYWJsZVwiICYmIHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiICYmIGNvbnRlbnQubWF0Y2goL15bL3x+XS8pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVTb3VyY2UgPSBjb250ZW50LnJlcGxhY2UoL15+XFwvKC4qKS8sIGAke2hvbWVEaXJ9LyQxYCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4cCA9IG5ldyBSZWdFeHAobWF0Y2hlci5yZXBsYWNlKC9cXCovZywgXCIuKlwiKSwgXCJnXCIpO1xuICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXNba2V5XSA9IHZhcmlhYmxlc1trZXldID8/IHt0eXBlOiBcImZpbGVcIiwgZW52aXJvbm1lbnRzOiBbXX07XG4gICAgICAgICAgICAgICAgICAgIGlmIChmcy5leGlzdHNTeW5jKGZpbGVTb3VyY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXNba2V5XS5lbnZpcm9ubWVudHMucHVzaCh7Y29udGVudCwgcmVnZXhwLCByZWdleHBQcmlvcml0eTogbWF0Y2hlci5sZW5ndGgsIHNjb3BlUHJpb3JpdHksIGZpbGVTb3VyY2V9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlc1trZXldLmVudmlyb25tZW50cy5wdXNoKHtjb250ZW50OiBgd2FybjogJHtrZXl9IGlzIHBvaW50aW5nIHRvIGludmFsaWQgcGF0aFxcbmAsIHJlZ2V4cCwgcmVnZXhwUHJpb3JpdHk6IG1hdGNoZXIubGVuZ3RoLCBzY29wZVByaW9yaXR5fSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiZmlsZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4cCA9IG5ldyBSZWdFeHAobWF0Y2hlci5yZXBsYWNlKC9cXCovZywgXCIuKlwiKSwgXCJnXCIpO1xuICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXNba2V5XSA9IHZhcmlhYmxlc1trZXldID8/IHt0eXBlOiBcImZpbGVcIiwgZW52aXJvbm1lbnRzOiBbXX07XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlc1trZXldLmVudmlyb25tZW50cy5wdXNoKHtjb250ZW50LCByZWdleHAsIHJlZ2V4cFByaW9yaXR5OiBtYXRjaGVyLmxlbmd0aCwgc2NvcGVQcmlvcml0eSB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhc3NlcnQoZmFsc2UsIGAke2tleX0gd2FzIG5vdCBoYW5kbGVkIHByb3Blcmx5YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGFkZFZhcmlhYmxlRmlsZVRvVmFyaWFibGVzID0gYXN5bmMoZmlsZURhdGE6IGFueSwgZmlsZVByaW9yaXR5OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2dsb2JhbEtleSwgZ2xvYmFsRW50cnldIG9mIE9iamVjdC5lbnRyaWVzKGZpbGVEYXRhPy5nbG9iYWwgPz8ge30pKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgYWRkVG9WYXJpYWJsZXMoZ2xvYmFsS2V5LCBnbG9iYWxFbnRyeSwgMSArIGZpbGVQcmlvcml0eSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGdyb3VwVXJsID0gYCR7Z2l0RGF0YS5yZW1vdGUuaG9zdH0vJHtnaXREYXRhLnJlbW90ZS5ncm91cH0vYDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2dyb3VwS2V5LCBncm91cEVudHJpZXNdIG9mIE9iamVjdC5lbnRyaWVzKGZpbGVEYXRhPy5ncm91cCA/PyB7fSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWdyb3VwVXJsLmluY2x1ZGVzKHRoaXMubm9ybWFsaXplUHJvamVjdEtleShncm91cEtleSwgd3JpdGVTdHJlYW1zKSkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGFzc2VydChncm91cEVudHJpZXMgIT0gbnVsbCwgXCJncm91cEVudHJpZXMgY2Fubm90IGJlIG51bGwvdW5kZWZpbmVkXCIpO1xuICAgICAgICAgICAgICAgIGFzc2VydCh0eXBlb2YgZ3JvdXBFbnRyaWVzID09PSBcIm9iamVjdFwiLCBcImdyb3VwRW50cmllcyBtdXN0IGJlIG9iamVjdFwiKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhncm91cEVudHJpZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGFkZFRvVmFyaWFibGVzKGssIHYsIDIgKyBmaWxlUHJpb3JpdHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcHJvamVjdFVybCA9IGAke2dpdERhdGEucmVtb3RlLmhvc3R9LyR7Z2l0RGF0YS5yZW1vdGUuZ3JvdXB9LyR7Z2l0RGF0YS5yZW1vdGUucHJvamVjdH0uZ2l0YDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW3Byb2plY3RLZXksIHByb2plY3RFbnRyaWVzXSBvZiBPYmplY3QuZW50cmllcyhmaWxlRGF0YT8ucHJvamVjdCA/PyBbXSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXByb2plY3RVcmwuaW5jbHVkZXModGhpcy5ub3JtYWxpemVQcm9qZWN0S2V5KHByb2plY3RLZXksIHdyaXRlU3RyZWFtcykpKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBhc3NlcnQocHJvamVjdEVudHJpZXMgIT0gbnVsbCwgXCJwcm9qZWN0RW50cmllcyBjYW5ub3QgYmUgbnVsbC91bmRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgYXNzZXJ0KHR5cGVvZiBwcm9qZWN0RW50cmllcyA9PT0gXCJvYmplY3RcIiwgXCJwcm9qZWN0RW50cmllcyBtdXN0IGJlIG9iamVjdFwiKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhwcm9qZWN0RW50cmllcykpIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgYWRkVG9WYXJpYWJsZXMoaywgdiwgMyArIGZpbGVQcmlvcml0eSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGF3YWl0IGFkZFZhcmlhYmxlRmlsZVRvVmFyaWFibGVzKHJlbW90ZUZpbGVEYXRhLCAwKTtcbiAgICAgICAgYXdhaXQgYWRkVmFyaWFibGVGaWxlVG9WYXJpYWJsZXMoaG9tZUZpbGVEYXRhLCAxMCk7XG5cbiAgICAgICAgY29uc3QgcHJvamVjdFZhcmlhYmxlc0ZpbGUgPSBgJHthcmd2LmN3ZH0vLmdpdGxhYi1jaS1sb2NhbC12YXJpYWJsZXMueW1sYDtcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMocHJvamVjdFZhcmlhYmxlc0ZpbGUpKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9qZWN0VmFyaWFibGVzRmlsZURhdGE6IGFueSA9IHlhbWwubG9hZChhd2FpdCBmcy5yZWFkRmlsZShwcm9qZWN0VmFyaWFibGVzRmlsZSwgXCJ1dGY4XCIpLCB7c2NoZW1hOiB5YW1sLkZBSUxTQUZFX1NDSEVNQX0pID8/IHt9O1xuICAgICAgICAgICAgYXNzZXJ0KHByb2plY3RWYXJpYWJsZXNGaWxlRGF0YSAhPSBudWxsLCBcInByb2plY3RFbnRyaWVzIGNhbm5vdCBiZSBudWxsL3VuZGVmaW5lZFwiKTtcbiAgICAgICAgICAgIGFzc2VydCh0eXBlb2YgcHJvamVjdFZhcmlhYmxlc0ZpbGVEYXRhID09PSBcIm9iamVjdFwiLCBcInByb2plY3RFbnRyaWVzIG11c3QgYmUgb2JqZWN0XCIpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMocHJvamVjdFZhcmlhYmxlc0ZpbGVEYXRhKSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGFkZFRvVmFyaWFibGVzKGssIHYsIDI0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgdmFyT2JqIG9mIE9iamVjdC52YWx1ZXModmFyaWFibGVzKSkge1xuICAgICAgICAgICAgdmFyT2JqLmVudmlyb25tZW50cy5zb3J0KChhLCBiKSA9PiBiLnNjb3BlUHJpb3JpdHkgLSBhLnNjb3BlUHJpb3JpdHkpO1xuICAgICAgICAgICAgdmFyT2JqLmVudmlyb25tZW50cy5zb3J0KChhLCBiKSA9PiBiLnJlZ2V4cFByaW9yaXR5IC0gYS5yZWdleHBQcmlvcml0eSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFyaWFibGVzO1xuICAgIH1cblxuICAgIHN0YXRpYyBub3JtYWxpemVQcm9qZWN0S2V5KGtleTogc3RyaW5nLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcyk6IHN0cmluZyB7XG4gICAgICAgIGlmICgha2V5LmluY2x1ZGVzKFwiOlwiKSkgcmV0dXJuIGtleTtcbiAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7eWVsbG93IFdBUk5JTkc6IEludGVycHJldGluZyAnJHtrZXl9JyBhcyAnJHtrZXkucmVwbGFjZShcIjpcIiwgXCIvXCIpfSd9XFxuYCk7XG4gICAgICAgIHJldHVybiBrZXkucmVwbGFjZShcIjpcIiwgXCIvXCIpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwYXJzZXItb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtXcml0ZVN0cmVhbXN9IGZyb20gXCIuL3dyaXRlLXN0cmVhbXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZXJPcHRpb25zIHtcbiAgICBjd2Q6IHN0cmluZztcbiAgICB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcztcbiAgICBwaXBlbGluZUlpZDogbnVtYmVyO1xuICAgIHZhcmlhYmxlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICBleHRyYUhvc3RzPzogc3RyaW5nW107XG4gICAgdm9sdW1lcz86IHN0cmluZ1tdO1xuICAgIGhvbWU/OiBzdHJpbmc7XG4gICAgZmlsZT86IHN0cmluZztcbiAgICBzaGVsbElzb2xhdGlvbj86IGJvb2xlYW47XG4gICAgbW91bnRDYWNoZT86IGJvb2xlYW47XG4gICAgZmV0Y2hJbmNsdWRlcz86IGJvb2xlYW47XG59XG4iXX0=
|