appium 2.0.0-beta.17 → 2.0.0-beta.20
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/build/lib/appium-config.schema.json +0 -0
- package/build/lib/appium.js +84 -69
- package/build/lib/cli/argparse-actions.js +1 -1
- package/build/lib/cli/args.js +87 -223
- package/build/lib/cli/extension-command.js +2 -2
- package/build/lib/cli/extension.js +14 -6
- package/build/lib/cli/parser.js +142 -106
- package/build/lib/cli/utils.js +1 -1
- package/build/lib/config-file.js +141 -0
- package/build/lib/config.js +42 -64
- package/build/lib/driver-config.js +41 -20
- package/build/lib/drivers.js +1 -1
- package/build/lib/ext-config-io.js +165 -0
- package/build/lib/extension-config.js +110 -60
- package/build/lib/grid-register.js +19 -21
- package/build/lib/logsink.js +1 -1
- package/build/lib/main.js +135 -72
- package/build/lib/plugin-config.js +17 -8
- package/build/lib/schema/appium-config-schema.js +252 -0
- package/build/lib/schema/arg-spec.js +120 -0
- package/build/lib/schema/cli-args.js +173 -0
- package/build/lib/schema/cli-transformers.js +76 -0
- package/build/lib/schema/index.js +36 -0
- package/build/lib/schema/keywords.js +62 -0
- package/build/lib/schema/schema.js +357 -0
- package/build/lib/utils.js +26 -35
- package/lib/appium-config.schema.json +277 -0
- package/lib/appium.js +99 -75
- package/lib/cli/args.js +138 -335
- package/lib/cli/extension-command.js +7 -6
- package/lib/cli/extension.js +12 -4
- package/lib/cli/parser.js +248 -96
- package/lib/config-file.js +227 -0
- package/lib/config.js +71 -61
- package/lib/driver-config.js +66 -11
- package/lib/ext-config-io.js +287 -0
- package/lib/extension-config.js +209 -66
- package/lib/grid-register.js +24 -21
- package/lib/main.js +139 -68
- package/lib/plugin-config.js +32 -2
- package/lib/schema/appium-config-schema.js +286 -0
- package/lib/schema/arg-spec.js +218 -0
- package/lib/schema/cli-args.js +273 -0
- package/lib/schema/cli-transformers.js +123 -0
- package/lib/schema/index.js +2 -0
- package/lib/schema/keywords.js +119 -0
- package/lib/schema/schema.js +577 -0
- package/lib/utils.js +29 -52
- package/package.json +16 -11
- package/types/appium-config.d.ts +197 -0
- package/types/types.d.ts +201 -0
- package/build/lib/cli/parser-helpers.js +0 -106
- package/lib/cli/parser-helpers.js +0 -106
|
@@ -5,32 +5,43 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
8
|
+
exports.DEFAULT_APPIUM_HOME = exports.APPIUM_HOME = void 0;
|
|
9
|
+
Object.defineProperty(exports, "DRIVER_TYPE", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function () {
|
|
12
|
+
return _extConfigIo.DRIVER_TYPE;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
exports.INSTALL_TYPE_NPM = exports.INSTALL_TYPE_LOCAL = exports.INSTALL_TYPE_GITHUB = exports.INSTALL_TYPE_GIT = exports.INSTALL_TYPES = void 0;
|
|
16
|
+
Object.defineProperty(exports, "PLUGIN_TYPE", {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () {
|
|
19
|
+
return _extConfigIo.PLUGIN_TYPE;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
exports.default = void 0;
|
|
9
23
|
|
|
10
24
|
require("source-map-support/register");
|
|
11
25
|
|
|
12
26
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
13
27
|
|
|
14
|
-
var
|
|
15
|
-
|
|
16
|
-
var _support = require("@appium/support");
|
|
28
|
+
var _os = _interopRequireDefault(require("os"));
|
|
17
29
|
|
|
18
30
|
var _path = _interopRequireDefault(require("path"));
|
|
19
31
|
|
|
20
|
-
var
|
|
32
|
+
var _resolveFrom = _interopRequireDefault(require("resolve-from"));
|
|
21
33
|
|
|
22
|
-
var
|
|
34
|
+
var _extConfigIo = require("./ext-config-io");
|
|
23
35
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
exports.PLUGIN_TYPE = PLUGIN_TYPE;
|
|
36
|
+
var _logger = _interopRequireDefault(require("./logger"));
|
|
37
|
+
|
|
38
|
+
var _schema = require("./schema/schema");
|
|
28
39
|
|
|
29
40
|
const DEFAULT_APPIUM_HOME = _path.default.resolve(_os.default.homedir(), '.appium');
|
|
30
41
|
|
|
31
42
|
exports.DEFAULT_APPIUM_HOME = DEFAULT_APPIUM_HOME;
|
|
32
|
-
const
|
|
33
|
-
|
|
43
|
+
const APPIUM_HOME = process.env.APPIUM_HOME || DEFAULT_APPIUM_HOME;
|
|
44
|
+
exports.APPIUM_HOME = APPIUM_HOME;
|
|
34
45
|
const INSTALL_TYPE_NPM = 'npm';
|
|
35
46
|
exports.INSTALL_TYPE_NPM = INSTALL_TYPE_NPM;
|
|
36
47
|
const INSTALL_TYPE_LOCAL = 'local';
|
|
@@ -43,28 +54,21 @@ const INSTALL_TYPES = [INSTALL_TYPE_GIT, INSTALL_TYPE_GITHUB, INSTALL_TYPE_LOCAL
|
|
|
43
54
|
exports.INSTALL_TYPES = INSTALL_TYPES;
|
|
44
55
|
|
|
45
56
|
class ExtensionConfig {
|
|
46
|
-
constructor(appiumHome, extensionType, logFn
|
|
47
|
-
|
|
48
|
-
logFn = _logger.default.error.bind(_logger.default);
|
|
49
|
-
}
|
|
50
|
-
|
|
57
|
+
constructor(appiumHome, extensionType, logFn) {
|
|
58
|
+
const logger = _lodash.default.isFunction(logFn) ? logFn : _logger.default.error.bind(_logger.default);
|
|
51
59
|
this.appiumHome = appiumHome;
|
|
52
|
-
this.configFile = _path.default.resolve(this.appiumHome, CONFIG_FILE_NAME);
|
|
53
60
|
this.installedExtensions = {};
|
|
61
|
+
this.io = (0, _extConfigIo.getExtConfigIOInstance)(appiumHome);
|
|
54
62
|
this.extensionType = extensionType;
|
|
55
63
|
this.configKey = `${extensionType}s`;
|
|
56
|
-
this.
|
|
57
|
-
[`${DRIVER_TYPE}s`]: {},
|
|
58
|
-
[`${PLUGIN_TYPE}s`]: {}
|
|
59
|
-
};
|
|
60
|
-
this.log = logFn;
|
|
64
|
+
this.log = logger;
|
|
61
65
|
}
|
|
62
66
|
|
|
63
67
|
validate(exts) {
|
|
64
68
|
const foundProblems = {};
|
|
65
69
|
|
|
66
70
|
for (const [extName, extData] of _lodash.default.toPairs(exts)) {
|
|
67
|
-
foundProblems[extName] = [...this.getGenericConfigProblems(extData), ...this.getConfigProblems(extData)];
|
|
71
|
+
foundProblems[extName] = [...this.getGenericConfigProblems(extData, extName), ...this.getConfigProblems(extData, extName), ...this.getSchemaProblems(extData, extName)];
|
|
68
72
|
}
|
|
69
73
|
|
|
70
74
|
const problemSummaries = [];
|
|
@@ -83,7 +87,7 @@ class ExtensionConfig {
|
|
|
83
87
|
}
|
|
84
88
|
|
|
85
89
|
if (!_lodash.default.isEmpty(problemSummaries)) {
|
|
86
|
-
this.log(`Appium encountered one or more errors while validating ` + `the ${this.configKey} extension file (${this.
|
|
90
|
+
this.log(`Appium encountered one or more errors while validating ` + `the ${this.configKey} extension file (${this.io.filepath}):`);
|
|
87
91
|
|
|
88
92
|
for (const summary of problemSummaries) {
|
|
89
93
|
this.log(summary);
|
|
@@ -93,7 +97,50 @@ class ExtensionConfig {
|
|
|
93
97
|
return exts;
|
|
94
98
|
}
|
|
95
99
|
|
|
96
|
-
|
|
100
|
+
getSchemaProblems(extData, extName) {
|
|
101
|
+
const problems = [];
|
|
102
|
+
const {
|
|
103
|
+
schema: argSchemaPath
|
|
104
|
+
} = extData;
|
|
105
|
+
|
|
106
|
+
if (argSchemaPath) {
|
|
107
|
+
if (_lodash.default.isString(argSchemaPath)) {
|
|
108
|
+
if ((0, _schema.isAllowedSchemaFileExtension)(argSchemaPath)) {
|
|
109
|
+
try {
|
|
110
|
+
this.readExtensionSchema(extName, extData);
|
|
111
|
+
} catch (err) {
|
|
112
|
+
problems.push({
|
|
113
|
+
err: `Unable to register schema at path ${argSchemaPath}; ${err.message}`,
|
|
114
|
+
val: argSchemaPath
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
} else {
|
|
118
|
+
problems.push({
|
|
119
|
+
err: `Schema file has unsupported extension. Allowed: ${[..._schema.ALLOWED_SCHEMA_EXTENSIONS].join(', ')}`,
|
|
120
|
+
val: argSchemaPath
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
} else if (_lodash.default.isPlainObject(argSchemaPath)) {
|
|
124
|
+
try {
|
|
125
|
+
this.readExtensionSchema(extName, extData);
|
|
126
|
+
} catch (err) {
|
|
127
|
+
problems.push({
|
|
128
|
+
err: `Unable to register embedded schema; ${err.message}`,
|
|
129
|
+
val: argSchemaPath
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
} else {
|
|
133
|
+
problems.push({
|
|
134
|
+
err: 'Incorrectly formatted schema field; must be a path to a schema file or a schema object.',
|
|
135
|
+
val: argSchemaPath
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
return problems;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
getGenericConfigProblems(extData, extName) {
|
|
97
144
|
const {
|
|
98
145
|
version,
|
|
99
146
|
pkgName,
|
|
@@ -101,7 +148,7 @@ class ExtensionConfig {
|
|
|
101
148
|
installType,
|
|
102
149
|
installPath,
|
|
103
150
|
mainClass
|
|
104
|
-
} =
|
|
151
|
+
} = extData;
|
|
105
152
|
const problems = [];
|
|
106
153
|
|
|
107
154
|
if (!_lodash.default.isString(version)) {
|
|
@@ -149,44 +196,18 @@ class ExtensionConfig {
|
|
|
149
196
|
return problems;
|
|
150
197
|
}
|
|
151
198
|
|
|
152
|
-
getConfigProblems() {
|
|
199
|
+
getConfigProblems(extData, extName) {
|
|
153
200
|
return [];
|
|
154
201
|
}
|
|
155
202
|
|
|
156
|
-
applySchemaMigrations() {
|
|
157
|
-
if (this.yamlData.schemaRev < 2 && _lodash.default.isUndefined(this.yamlData[PLUGIN_TYPE])) {
|
|
158
|
-
this.yamlData[PLUGIN_TYPE] = {};
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
203
|
async read() {
|
|
163
|
-
await
|
|
164
|
-
|
|
165
|
-
try {
|
|
166
|
-
this.yamlData = _yaml.default.parse(await _support.fs.readFile(this.configFile, 'utf8'));
|
|
167
|
-
this.applySchemaMigrations();
|
|
168
|
-
this.installedExtensions = this.validate(this.yamlData[this.configKey]);
|
|
169
|
-
} catch (err) {
|
|
170
|
-
if (await _support.fs.exists(this.configFile)) {
|
|
171
|
-
throw new Error(`Appium had trouble loading the extension installation ` + `cache file (${this.configFile}). Ensure it exists and is ` + `readable. Specific error: ${err.message}`);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
try {
|
|
175
|
-
await this.write();
|
|
176
|
-
} catch {
|
|
177
|
-
throw new Error(`Appium could not read or write from the Appium Home directory ` + `(${this.appiumHome}). Please ensure it is writable.`);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
|
|
204
|
+
const extensions = await this.io.read(this.extensionType);
|
|
205
|
+
this.installedExtensions = this.validate(extensions);
|
|
181
206
|
return this.installedExtensions;
|
|
182
207
|
}
|
|
183
208
|
|
|
184
209
|
async write() {
|
|
185
|
-
|
|
186
|
-
schemaRev: CONFIG_SCHEMA_REV,
|
|
187
|
-
[this.configKey]: this.installedExtensions
|
|
188
|
-
};
|
|
189
|
-
await _support.fs.writeFile(this.configFile, _yaml.default.stringify(newYamlData), 'utf8');
|
|
210
|
+
return await this.io.write();
|
|
190
211
|
}
|
|
191
212
|
|
|
192
213
|
async addExtension(extName, extData) {
|
|
@@ -222,8 +243,8 @@ class ExtensionConfig {
|
|
|
222
243
|
}
|
|
223
244
|
}
|
|
224
245
|
|
|
225
|
-
extensionDesc() {
|
|
226
|
-
throw new Error('This must be implemented in a
|
|
246
|
+
extensionDesc(extName, extData) {
|
|
247
|
+
throw new Error('This must be implemented in a subclass');
|
|
227
248
|
}
|
|
228
249
|
|
|
229
250
|
getExtensionRequirePath(extName) {
|
|
@@ -262,9 +283,38 @@ class ExtensionConfig {
|
|
|
262
283
|
return _lodash.default.includes(Object.keys(this.installedExtensions), extName);
|
|
263
284
|
}
|
|
264
285
|
|
|
286
|
+
static _readExtensionSchema(appiumHome, extType, extName, extData) {
|
|
287
|
+
const {
|
|
288
|
+
installPath,
|
|
289
|
+
pkgName,
|
|
290
|
+
schema: argSchemaPath
|
|
291
|
+
} = extData;
|
|
292
|
+
|
|
293
|
+
if (!argSchemaPath) {
|
|
294
|
+
throw new TypeError(`No \`schema\` property found in config for ${extType} ${pkgName} -- why is this function being called?`);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
let moduleObject;
|
|
298
|
+
|
|
299
|
+
if (_lodash.default.isString(argSchemaPath)) {
|
|
300
|
+
const schemaPath = (0, _resolveFrom.default)(_path.default.resolve(appiumHome, installPath), _path.default.normalize(`${pkgName}/${argSchemaPath}`));
|
|
301
|
+
moduleObject = require(schemaPath);
|
|
302
|
+
} else {
|
|
303
|
+
moduleObject = argSchemaPath;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
const schema = moduleObject.__esModule ? moduleObject.default : moduleObject;
|
|
307
|
+
(0, _schema.registerSchema)(extType, extName, schema);
|
|
308
|
+
return schema;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
readExtensionSchema(extName, extData) {
|
|
312
|
+
return ExtensionConfig._readExtensionSchema(this.appiumHome, this.extensionType, extName, extData);
|
|
313
|
+
}
|
|
314
|
+
|
|
265
315
|
}
|
|
266
316
|
|
|
267
317
|
exports.default = ExtensionConfig;require('source-map-support').install();
|
|
268
318
|
|
|
269
319
|
|
|
270
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9leHRlbnNpb24tY29uZmlnLmpzIl0sIm5hbWVzIjpbIkRSSVZFUl9UWVBFIiwiUExVR0lOX1RZUEUiLCJERUZBVUxUX0FQUElVTV9IT01FIiwicGF0aCIsInJlc29sdmUiLCJvcyIsImhvbWVkaXIiLCJDT05GSUdfRklMRV9OQU1FIiwiQ09ORklHX1NDSEVNQV9SRVYiLCJJTlNUQUxMX1RZUEVfTlBNIiwiSU5TVEFMTF9UWVBFX0xPQ0FMIiwiSU5TVEFMTF9UWVBFX0dJVEhVQiIsIklOU1RBTExfVFlQRV9HSVQiLCJJTlNUQUxMX1RZUEVTIiwiRXh0ZW5zaW9uQ29uZmlnIiwiY29uc3RydWN0b3IiLCJhcHBpdW1Ib21lIiwiZXh0ZW5zaW9uVHlwZSIsImxvZ0ZuIiwibG9nIiwiZXJyb3IiLCJiaW5kIiwiY29uZmlnRmlsZSIsImluc3RhbGxlZEV4dGVuc2lvbnMiLCJjb25maWdLZXkiLCJ5YW1sRGF0YSIsInZhbGlkYXRlIiwiZXh0cyIsImZvdW5kUHJvYmxlbXMiLCJleHROYW1lIiwiZXh0RGF0YSIsIl8iLCJ0b1BhaXJzIiwiZ2V0R2VuZXJpY0NvbmZpZ1Byb2JsZW1zIiwiZ2V0Q29uZmlnUHJvYmxlbXMiLCJwcm9ibGVtU3VtbWFyaWVzIiwicHJvYmxlbXMiLCJpc0VtcHR5IiwicHVzaCIsInByb2JsZW0iLCJlcnIiLCJKU09OIiwic3RyaW5naWZ5IiwidmFsIiwic3VtbWFyeSIsImV4dCIsInZlcnNpb24iLCJwa2dOYW1lIiwiaW5zdGFsbFNwZWMiLCJpbnN0YWxsVHlwZSIsImluc3RhbGxQYXRoIiwibWFpbkNsYXNzIiwiaXNTdHJpbmciLCJpbmNsdWRlcyIsImFwcGx5U2NoZW1hTWlncmF0aW9ucyIsInNjaGVtYVJldiIsImlzVW5kZWZpbmVkIiwicmVhZCIsIllBTUwiLCJwYXJzZSIsImZzIiwicmVhZEZpbGUiLCJleGlzdHMiLCJFcnJvciIsIm1lc3NhZ2UiLCJ3cml0ZSIsIm5ld1lhbWxEYXRhIiwid3JpdGVGaWxlIiwiYWRkRXh0ZW5zaW9uIiwidXBkYXRlRXh0ZW5zaW9uIiwicmVtb3ZlRXh0ZW5zaW9uIiwicHJpbnQiLCJleHROYW1lcyIsIk9iamVjdCIsImtleXMiLCJpbmZvIiwiZXh0ZW5zaW9uRGVzYyIsImdldEV4dGVuc2lvblJlcXVpcmVQYXRoIiwiZ2V0SW5zdGFsbFBhdGgiLCJyZXF1aXJlIiwicmVxUGF0aCIsInJlcVJlc29sdmVkIiwicHJvY2VzcyIsImVudiIsIkFQUElVTV9SRUxPQURfRVhURU5TSU9OUyIsImNhY2hlIiwiZGVidWciLCJpc0luc3RhbGxlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxXQUFXLEdBQUcsUUFBcEI7O0FBQ0EsTUFBTUMsV0FBVyxHQUFHLFFBQXBCOzs7QUFDQSxNQUFNQyxtQkFBbUIsR0FBR0MsY0FBS0MsT0FBTCxDQUFhQyxZQUFHQyxPQUFILEVBQWIsRUFBMkIsU0FBM0IsQ0FBNUI7OztBQUVBLE1BQU1DLGdCQUFnQixHQUFHLGlCQUF6QjtBQUNBLE1BQU1DLGlCQUFpQixHQUFHLENBQTFCO0FBRUEsTUFBTUMsZ0JBQWdCLEdBQUcsS0FBekI7O0FBQ0EsTUFBTUMsa0JBQWtCLEdBQUcsT0FBM0I7O0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsUUFBNUI7O0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUcsS0FBekI7O0FBQ0EsTUFBTUMsYUFBYSxHQUFHLENBQ3BCRCxnQkFEb0IsRUFFcEJELG1CQUZvQixFQUdwQkQsa0JBSG9CLEVBSXBCRCxnQkFKb0IsQ0FBdEI7OztBQVFlLE1BQU1LLGVBQU4sQ0FBc0I7QUFDbkNDLEVBQUFBLFdBQVcsQ0FBRUMsVUFBRixFQUFjQyxhQUFkLEVBQTZCQyxLQUFLLEdBQUcsSUFBckMsRUFBMkM7QUFDcEQsUUFBSUEsS0FBSyxLQUFLLElBQWQsRUFBb0I7QUFDbEJBLE1BQUFBLEtBQUssR0FBR0MsZ0JBQUlDLEtBQUosQ0FBVUMsSUFBVixDQUFlRixlQUFmLENBQVI7QUFDRDs7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QUFFc0IsUUFBRixDQUFXb0IsTUFBTSxDQUFDQyxJQUFQLENBQVksS0FBS25ELG1CQUFqQixDQUFYLEVBQWtETSxPQUFsRCxDQUFQO0FBQ0Q7O0FBOUxrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IGZzLCBta2RpcnAgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IFlBTUwgZnJvbSAneWFtbCc7XG5cbmNvbnN0IERSSVZFUl9UWVBFID0gJ2RyaXZlcic7XG5jb25zdCBQTFVHSU5fVFlQRSA9ICdwbHVnaW4nO1xuY29uc3QgREVGQVVMVF9BUFBJVU1fSE9NRSA9IHBhdGgucmVzb2x2ZShvcy5ob21lZGlyKCksICcuYXBwaXVtJyk7XG5cbmNvbnN0IENPTkZJR19GSUxFX05BTUUgPSAnZXh0ZW5zaW9ucy55YW1sJztcbmNvbnN0IENPTkZJR19TQ0hFTUFfUkVWID0gMjtcblxuY29uc3QgSU5TVEFMTF9UWVBFX05QTSA9ICducG0nO1xuY29uc3QgSU5TVEFMTF9UWVBFX0xPQ0FMID0gJ2xvY2FsJztcbmNvbnN0IElOU1RBTExfVFlQRV9HSVRIVUIgPSAnZ2l0aHViJztcbmNvbnN0IElOU1RBTExfVFlQRV9HSVQgPSAnZ2l0JztcbmNvbnN0IElOU1RBTExfVFlQRVMgPSBbXG4gIElOU1RBTExfVFlQRV9HSVQsXG4gIElOU1RBTExfVFlQRV9HSVRIVUIsXG4gIElOU1RBTExfVFlQRV9MT0NBTCxcbiAgSU5TVEFMTF9UWVBFX05QTVxuXTtcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFeHRlbnNpb25Db25maWcge1xuICBjb25zdHJ1Y3RvciAoYXBwaXVtSG9tZSwgZXh0ZW5zaW9uVHlwZSwgbG9nRm4gPSBudWxsKSB7XG4gICAgaWYgKGxvZ0ZuID09PSBudWxsKSB7XG4gICAgICBsb2dGbiA9IGxvZy5lcnJvci5iaW5kKGxvZyk7XG4gICAgfVxuICAgIHRoaXMuYXBwaXVtSG9tZSA9IGFwcGl1bUhvbWU7XG4gICAgdGhpcy5jb25maWdGaWxlID0gcGF0aC5yZXNvbHZlKHRoaXMuYXBwaXVtSG9tZSwgQ09ORklHX0ZJTEVfTkFNRSk7XG4gICAgdGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zID0ge307XG4gICAgdGhpcy5leHRlbnNpb25UeXBlID0gZXh0ZW5zaW9uVHlwZTtcbiAgICB0aGlzLmNvbmZpZ0tleSA9IGAke2V4dGVuc2lvblR5cGV9c2A7XG4gICAgdGhpcy55YW1sRGF0YSA9IHtbYCR7RFJJVkVSX1RZUEV9c2BdOiB7fSwgW2Ake1BMVUdJTl9UWVBFfXNgXToge319O1xuICAgIHRoaXMubG9nID0gbG9nRm47XG4gIH1cblxuICB2YWxpZGF0ZSAoZXh0cykge1xuICAgIGNvbnN0IGZvdW5kUHJvYmxlbXMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtleHROYW1lLCBleHREYXRhXSBvZiBfLnRvUGFpcnMoZXh0cykpIHtcbiAgICAgIGZvdW5kUHJvYmxlbXNbZXh0TmFtZV0gPSBbXG4gICAgICAgIC4uLnRoaXMuZ2V0R2VuZXJpY0NvbmZpZ1Byb2JsZW1zKGV4dERhdGEpLFxuICAgICAgICAuLi50aGlzLmdldENvbmZpZ1Byb2JsZW1zKGV4dERhdGEpXG4gICAgICBdO1xuICAgIH1cblxuICAgIGNvbnN0IHByb2JsZW1TdW1tYXJpZXMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IFtleHROYW1lLCBwcm9ibGVtc10gb2YgXy50b1BhaXJzKGZvdW5kUHJvYmxlbXMpKSB7XG4gICAgICBpZiAoXy5pc0VtcHR5KHByb2JsZW1zKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIHJlbW92ZSB0aGlzIGV4dGVuc2lvbiBmcm9tIHRoZSBsaXN0IHNpbmNlIGl0J3Mgbm90IHZhbGlkXG4gICAgICBkZWxldGUgZXh0c1tleHROYW1lXTtcbiAgICAgIHByb2JsZW1TdW1tYXJpZXMucHVzaChgJHt0aGlzLmV4dGVuc2lvblR5cGV9ICR7ZXh0TmFtZX0gaGFkIGVycm9ycyBhbmQgd2lsbCBub3QgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYGJlIGF2YWlsYWJsZS4gRXJyb3JzOmApO1xuICAgICAgZm9yIChjb25zdCBwcm9ibGVtIG9mIHByb2JsZW1zKSB7XG4gICAgICAgIHByb2JsZW1TdW1tYXJpZXMucHVzaChgICAtICR7cHJvYmxlbS5lcnJ9IChBY3R1YWwgdmFsdWU6IGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7SlNPTi5zdHJpbmdpZnkocHJvYmxlbS52YWwpfSlgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIV8uaXNFbXB0eShwcm9ibGVtU3VtbWFyaWVzKSkge1xuICAgICAgdGhpcy5sb2coYEFwcGl1bSBlbmNvdW50ZXJlZCBvbmUgb3IgbW9yZSBlcnJvcnMgd2hpbGUgdmFsaWRhdGluZyBgICtcbiAgICAgICAgICAgICAgIGB0aGUgJHt0aGlzLmNvbmZpZ0tleX0gZXh0ZW5zaW9uIGZpbGUgKCR7dGhpcy5jb25maWdGaWxlfSk6YCk7XG4gICAgICBmb3IgKGNvbnN0IHN1bW1hcnkgb2YgcHJvYmxlbVN1bW1hcmllcykge1xuICAgICAgICB0aGlzLmxvZyhzdW1tYXJ5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZXh0cztcbiAgfVxuXG4gIGdldEdlbmVyaWNDb25maWdQcm9ibGVtcyAoZXh0KSB7XG4gICAgY29uc3Qge3ZlcnNpb24sIHBrZ05hbWUsIGluc3RhbGxTcGVjLCBpbnN0YWxsVHlwZSwgaW5zdGFsbFBhdGgsIG1haW5DbGFzc30gPSBleHQ7XG4gICAgY29uc3QgcHJvYmxlbXMgPSBbXTtcblxuICAgIGlmICghXy5pc1N0cmluZyh2ZXJzaW9uKSkge1xuICAgICAgcHJvYmxlbXMucHVzaCh7ZXJyOiAnTWlzc2luZyBvciBpbmNvcnJlY3QgdmVyc2lvbicsIHZhbDogdmVyc2lvbn0pO1xuICAgIH1cblxuICAgIGlmICghXy5pc1N0cmluZyhwa2dOYW1lKSkge1xuICAgICAgcHJvYmxlbXMucHVzaCh7ZXJyOiAnTWlzc2luZyBvciBpbmNvcnJlY3QgTlBNIHBhY2thZ2UgbmFtZScsIHZhbDogcGtnTmFtZX0pO1xuICAgIH1cblxuICAgIGlmICghXy5pc1N0cmluZyhpbnN0YWxsU3BlYykpIHtcbiAgICAgIHByb2JsZW1zLnB1c2goe2VycjogJ01pc3Npbmcgb3IgaW5jb3JyZWN0IGluc3RhbGxhdGlvbiBzcGVjJywgdmFsOiBpbnN0YWxsU3BlY30pO1xuICAgIH1cblxuICAgIGlmICghXy5pbmNsdWRlcyhJTlNUQUxMX1RZUEVTLCBpbnN0YWxsVHlwZSkpIHtcbiAgICAgIHByb2JsZW1zLnB1c2goe2VycjogJ01pc3Npbmcgb3IgaW5jb3JyZWN0IGluc3RhbGwgdHlwZScsIHZhbDogaW5zdGFsbFR5cGV9KTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaXNTdHJpbmcoaW5zdGFsbFBhdGgpKSB7XG4gICAgICBwcm9ibGVtcy5wdXNoKHtlcnI6ICdNaXNzaW5nIG9yIGluY29ycmVjdCBpbnN0YWxsYXRpb24gcGF0aCcsIHZhbDogaW5zdGFsbFBhdGh9KTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaXNTdHJpbmcobWFpbkNsYXNzKSkge1xuICAgICAgcHJvYmxlbXMucHVzaCh7ZXJyOiAnTWlzc2luZyBvciBpbmNvcnJlY3QgZHJpdmVyIGNsYXNzIG5hbWUnLCB2YWw6IG1haW5DbGFzc30pO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9ibGVtcztcbiAgfVxuXG4gIGdldENvbmZpZ1Byb2JsZW1zICgvKmV4dCovKSB7XG4gICAgLy8gc2hvdWQgb3ZlcnJpZGUgdGhpcyBtZXRob2QgaWYgc3BlY2lhbCB2YWxpZGF0aW9uIGlzIG5lY2Vzc2FyeSBmb3IgdGhpcyBleHRlbnNpb24gdHlwZVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGFwcGx5U2NoZW1hTWlncmF0aW9ucyAoKSB7XG4gICAgaWYgKHRoaXMueWFtbERhdGEuc2NoZW1hUmV2IDwgMiAmJiBfLmlzVW5kZWZpbmVkKHRoaXMueWFtbERhdGFbUExVR0lOX1RZUEVdKSkge1xuICAgICAgLy8gYXQgc2NoZW1hIHJldmlzaW9uIDIsIHdlIHN0YXJ0ZWQgaW5jbHVkaW5nIHBsdWdpbnMgYXMgd2VsbCBhcyBkcml2ZXJzIGluIHRoZSBmaWxlLFxuICAgICAgLy8gc28gbWFrZSBzdXJlIHdlIGF0IGxlYXN0IGhhdmUgYW4gZW1wdHkgc2VjdGlvbiBmb3IgaXRcbiAgICAgIHRoaXMueWFtbERhdGFbUExVR0lOX1RZUEVdID0ge307XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVhZCAoKSB7XG4gICAgYXdhaXQgbWtkaXJwKHRoaXMuYXBwaXVtSG9tZSk7IC8vIGVuc3VyZSBhcHBpdW0gaG9tZSBleGlzdHNcbiAgICB0cnkge1xuICAgICAgdGhpcy55YW1sRGF0YSA9IFlBTUwucGFyc2UoYXdhaXQgZnMucmVhZEZpbGUodGhpcy5jb25maWdGaWxlLCAndXRmOCcpKTtcbiAgICAgIHRoaXMuYXBwbHlTY2hlbWFNaWdyYXRpb25zKCk7XG5cbiAgICAgIC8vIHNldCB0aGUgbGlzdCBvZiBkcml2ZXJzIHRoZSB1c2VyIGhhcyBpbnN0YWxsZWRcbiAgICAgIHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9ucyA9IHRoaXMudmFsaWRhdGUodGhpcy55YW1sRGF0YVt0aGlzLmNvbmZpZ0tleV0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGF3YWl0IGZzLmV4aXN0cyh0aGlzLmNvbmZpZ0ZpbGUpKSB7XG4gICAgICAgIC8vIGlmIHRoZSBmaWxlIGV4aXN0cyBhbmQgd2UgY291bGRuJ3QgcGFyc2UgaXQsIHRoYXQncyBhIHByb2JsZW1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcHBpdW0gaGFkIHRyb3VibGUgbG9hZGluZyB0aGUgZXh0ZW5zaW9uIGluc3RhbGxhdGlvbiBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGBjYWNoZSBmaWxlICgke3RoaXMuY29uZmlnRmlsZX0pLiBFbnN1cmUgaXQgZXhpc3RzIGFuZCBpcyBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGByZWFkYWJsZS4gU3BlY2lmaWMgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICB9XG5cbiAgICAgIC8vIGlmIHRoZSBjb25maWcgZmlsZSBkb2Vzbid0IGV4aXN0LCB0cnkgdG8gd3JpdGUgYW4gZW1wdHkgb25lLCB0byBtYWtlXG4gICAgICAvLyBzdXJlIHdlIGFjdHVhbGx5IGhhdmUgd3JpdGUgcHJpdmlsZWdlcywgYW5kIGNvbXBsYWluIGlmIHdlIGRvbid0XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLndyaXRlKCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcHBpdW0gY291bGQgbm90IHJlYWQgb3Igd3JpdGUgZnJvbSB0aGUgQXBwaXVtIEhvbWUgZGlyZWN0b3J5IGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYCgke3RoaXMuYXBwaXVtSG9tZX0pLiBQbGVhc2UgZW5zdXJlIGl0IGlzIHdyaXRhYmxlLmApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zO1xuICB9XG5cblxuICBhc3luYyB3cml0ZSAoKSB7XG4gICAgY29uc3QgbmV3WWFtbERhdGEgPSB7XG4gICAgICAuLi50aGlzLnlhbWxEYXRhLFxuICAgICAgc2NoZW1hUmV2OiBDT05GSUdfU0NIRU1BX1JFVixcbiAgICAgIFt0aGlzLmNvbmZpZ0tleV06IHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9uc1xuICAgIH07XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKHRoaXMuY29uZmlnRmlsZSwgWUFNTC5zdHJpbmdpZnkobmV3WWFtbERhdGEpLCAndXRmOCcpO1xuICB9XG5cbiAgYXN5bmMgYWRkRXh0ZW5zaW9uIChleHROYW1lLCBleHREYXRhKSB7XG4gICAgdGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zW2V4dE5hbWVdID0gZXh0RGF0YTtcbiAgICBhd2FpdCB0aGlzLndyaXRlKCk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVFeHRlbnNpb24gKGV4dE5hbWUsIGV4dERhdGEpIHtcbiAgICB0aGlzLmluc3RhbGxlZEV4dGVuc2lvbnNbZXh0TmFtZV0gPSB7XG4gICAgICAuLi50aGlzLmluc3RhbGxlZEV4dGVuc2lvbnNbZXh0TmFtZV0sXG4gICAgICAuLi5leHREYXRhLFxuICAgIH07XG4gICAgYXdhaXQgdGhpcy53cml0ZSgpO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlRXh0ZW5zaW9uIChleHROYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9uc1tleHROYW1lXTtcbiAgICBhd2FpdCB0aGlzLndyaXRlKCk7XG4gIH1cblxuICBwcmludCAoKSB7XG4gICAgY29uc3QgZXh0TmFtZXMgPSBPYmplY3Qua2V5cyh0aGlzLmluc3RhbGxlZEV4dGVuc2lvbnMpO1xuICAgIGlmIChfLmlzRW1wdHkoZXh0TmFtZXMpKSB7XG4gICAgICBsb2cuaW5mbyhgTm8gJHt0aGlzLmNvbmZpZ0tleX0gaGF2ZSBiZWVuIGluc3RhbGxlZC4gVXNlIHRoZSBcImFwcGl1bSAke3RoaXMuZXh0ZW5zaW9uVHlwZX1cIiBgICtcbiAgICAgICAgICAgICAgICdjb21tYW5kIHRvIGluc3RhbGwgdGhlIG9uZShzKSB5b3Ugd2FudCB0byB1c2UuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbG9nLmluZm8oYEF2YWlsYWJsZSAke3RoaXMuY29uZmlnS2V5fTpgKTtcbiAgICBmb3IgKGNvbnN0IFtleHROYW1lLCBleHREYXRhXSBvZiBfLnRvUGFpcnModGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zKSkge1xuICAgICAgbG9nLmluZm8oYCAgLSAke3RoaXMuZXh0ZW5zaW9uRGVzYyhleHROYW1lLCBleHREYXRhKX1gKTtcbiAgICB9XG4gIH1cblxuICBleHRlbnNpb25EZXNjICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgbXVzdCBiZSBpbXBsZW1lbnRlZCBpbiBhIGZpbmFsIGNsYXNzJyk7XG4gIH1cblxuICBnZXRFeHRlbnNpb25SZXF1aXJlUGF0aCAoZXh0TmFtZSkge1xuICAgIGNvbnN0IHtwa2dOYW1lLCBpbnN0YWxsUGF0aH0gPSB0aGlzLmluc3RhbGxlZEV4dGVuc2lvbnNbZXh0TmFtZV07XG4gICAgcmV0dXJuIHBhdGgucmVzb2x2ZSh0aGlzLmFwcGl1bUhvbWUsIGluc3RhbGxQYXRoLCAnbm9kZV9tb2R1bGVzJywgcGtnTmFtZSk7XG4gIH1cblxuICBnZXRJbnN0YWxsUGF0aCAoZXh0TmFtZSkge1xuICAgIGNvbnN0IHtpbnN0YWxsUGF0aH0gPSB0aGlzLmluc3RhbGxlZEV4dGVuc2lvbnNbZXh0TmFtZV07XG4gICAgcmV0dXJuIHBhdGgucmVzb2x2ZSh0aGlzLmFwcGl1bUhvbWUsIGluc3RhbGxQYXRoKTtcbiAgfVxuXG4gIHJlcXVpcmUgKGV4dE5hbWUpIHtcbiAgICBjb25zdCB7bWFpbkNsYXNzfSA9IHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9uc1tleHROYW1lXTtcbiAgICBjb25zdCByZXFQYXRoID0gdGhpcy5nZXRFeHRlbnNpb25SZXF1aXJlUGF0aChleHROYW1lKTtcbiAgICBjb25zdCByZXFSZXNvbHZlZCA9IHJlcXVpcmUucmVzb2x2ZShyZXFQYXRoKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuQVBQSVVNX1JFTE9BRF9FWFRFTlNJT05TICYmIHJlcXVpcmUuY2FjaGVbcmVxUmVzb2x2ZWRdKSB7XG4gICAgICBsb2cuZGVidWcoYFJlbW92aW5nICR7cmVxUmVzb2x2ZWR9IGZyb20gcmVxdWlyZSBjYWNoZWApO1xuICAgICAgZGVsZXRlIHJlcXVpcmUuY2FjaGVbcmVxUmVzb2x2ZWRdO1xuICAgIH1cbiAgICByZXR1cm4gcmVxdWlyZShyZXFQYXRoKVttYWluQ2xhc3NdO1xuICB9XG5cbiAgaXNJbnN0YWxsZWQgKGV4dE5hbWUpIHtcbiAgICByZXR1cm4gXy5pbmNsdWRlcyhPYmplY3Qua2V5cyh0aGlzLmluc3RhbGxlZEV4dGVuc2lvbnMpLCBleHROYW1lKTtcbiAgfVxufVxuXG5leHBvcnQge1xuICBJTlNUQUxMX1RZUEVfTlBNLCBJTlNUQUxMX1RZUEVfR0lULCBJTlNUQUxMX1RZUEVfTE9DQUwsIElOU1RBTExfVFlQRV9HSVRIVUIsXG4gIElOU1RBTExfVFlQRVMsIERFRkFVTFRfQVBQSVVNX0hPTUUsIERSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRSxcbn07XG4iXSwiZmlsZSI6ImxpYi9leHRlbnNpb24tY29uZmlnLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
|
|
320
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9leHRlbnNpb24tY29uZmlnLmpzIl0sIm5hbWVzIjpbIkRFRkFVTFRfQVBQSVVNX0hPTUUiLCJwYXRoIiwicmVzb2x2ZSIsIm9zIiwiaG9tZWRpciIsIkFQUElVTV9IT01FIiwicHJvY2VzcyIsImVudiIsIklOU1RBTExfVFlQRV9OUE0iLCJJTlNUQUxMX1RZUEVfTE9DQUwiLCJJTlNUQUxMX1RZUEVfR0lUSFVCIiwiSU5TVEFMTF9UWVBFX0dJVCIsIklOU1RBTExfVFlQRVMiLCJFeHRlbnNpb25Db25maWciLCJjb25zdHJ1Y3RvciIsImFwcGl1bUhvbWUiLCJleHRlbnNpb25UeXBlIiwibG9nRm4iLCJsb2dnZXIiLCJfIiwiaXNGdW5jdGlvbiIsImxvZyIsImVycm9yIiwiYmluZCIsImluc3RhbGxlZEV4dGVuc2lvbnMiLCJpbyIsImNvbmZpZ0tleSIsInZhbGlkYXRlIiwiZXh0cyIsImZvdW5kUHJvYmxlbXMiLCJleHROYW1lIiwiZXh0RGF0YSIsInRvUGFpcnMiLCJnZXRHZW5lcmljQ29uZmlnUHJvYmxlbXMiLCJnZXRDb25maWdQcm9ibGVtcyIsImdldFNjaGVtYVByb2JsZW1zIiwicHJvYmxlbVN1bW1hcmllcyIsInByb2JsZW1zIiwiaXNFbXB0eSIsInB1c2giLCJwcm9ibGVtIiwiZXJyIiwiSlNPTiIsInN0cmluZ2lmeSIsInZhbCIsImZpbGVwYXRoIiwic3VtbWFyeSIsInNjaGVtYSIsImFyZ1NjaGVtYVBhdGgiLCJpc1N0cmluZyIsInJlYWRFeHRlbnNpb25TY2hlbWEiLCJtZXNzYWdlIiwiQUxMT1dFRF9TQ0hFTUFfRVhURU5TSU9OUyIsImpvaW4iLCJpc1BsYWluT2JqZWN0IiwidmVyc2lvbiIsInBrZ05hbWUiLCJpbnN0YWxsU3BlYyIsImluc3RhbGxUeXBlIiwiaW5zdGFsbFBhdGgiLCJtYWluQ2xhc3MiLCJpbmNsdWRlcyIsInJlYWQiLCJleHRlbnNpb25zIiwid3JpdGUiLCJhZGRFeHRlbnNpb24iLCJ1cGRhdGVFeHRlbnNpb24iLCJyZW1vdmVFeHRlbnNpb24iLCJwcmludCIsImV4dE5hbWVzIiwiT2JqZWN0Iiwia2V5cyIsImluZm8iLCJleHRlbnNpb25EZXNjIiwiRXJyb3IiLCJnZXRFeHRlbnNpb25SZXF1aXJlUGF0aCIsImdldEluc3RhbGxQYXRoIiwicmVxdWlyZSIsInJlcVBhdGgiLCJyZXFSZXNvbHZlZCIsIkFQUElVTV9SRUxPQURfRVhURU5TSU9OUyIsImNhY2hlIiwiZGVidWciLCJpc0luc3RhbGxlZCIsIl9yZWFkRXh0ZW5zaW9uU2NoZW1hIiwiZXh0VHlwZSIsIlR5cGVFcnJvciIsIm1vZHVsZU9iamVjdCIsInNjaGVtYVBhdGgiLCJub3JtYWxpemUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLG1CQUFtQixHQUFHQyxjQUFLQyxPQUFMLENBQWFDLFlBQUdDLE9BQUgsRUFBYixFQUEyQixTQUEzQixDQUE1Qjs7O0FBQ0EsTUFBTUMsV0FBVyxHQUFHQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUYsV0FBWixJQUEyQkwsbUJBQS9DOztBQUVBLE1BQU1RLGdCQUFnQixHQUFHLEtBQXpCOztBQUNBLE1BQU1DLGtCQUFrQixHQUFHLE9BQTNCOztBQUNBLE1BQU1DLG1CQUFtQixHQUFHLFFBQTVCOztBQUNBLE1BQU1DLGdCQUFnQixHQUFHLEtBQXpCOztBQUNBLE1BQU1DLGFBQWEsR0FBRyxDQUNwQkQsZ0JBRG9CLEVBRXBCRCxtQkFGb0IsRUFHcEJELGtCQUhvQixFQUlwQkQsZ0JBSm9CLENBQXRCOzs7QUFPZSxNQUFNSyxlQUFOLENBQXNCO0FBT25DQyxFQUFBQSxXQUFXLENBQUVDLFVBQUYsRUFBY0MsYUFBZCxFQUE2QkMsS0FBN0IsRUFBb0M7QUFDN0MsVUFBTUMsTUFBTSxHQUFHQyxnQkFBRUMsVUFBRixDQUFhSCxLQUFiLElBQXNCQSxLQUF0QixHQUE4Qkks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RCxLQVBELE1BT087QUFDTEQsTUFBQUEsWUFBWSxHQUFHdkMsYUFBZjtBQUNEOztBQUVELFVBQU1ELE1BQU0sR0FBR3dDLFlBQVksQ0FBQ0csVUFBYixHQUNYSCxZQUFZLENBQUNJLE9BREYsR0FFWEosWUFGSjtBQUdBLGdDQUFlRixPQUFmLEVBQXdCdkQsT0FBeEIsRUFBaUNpQixNQUFqQztBQUNBLFdBQU9BLE1BQVA7QUFDRDs7QUFTREcsRUFBQUEsbUJBQW1CLENBQUVwQixPQUFGLEVBQVdDLE9BQVgsRUFBb0I7QUFDckMsV0FBT2xCLGVBQWUsQ0FBQ3VFLG9CQUFoQixDQUFxQyxLQUFLckUsVUFBMUMsRUFBc0QsS0FBS0MsYUFBM0QsRUFBMEVjLE9BQTFFLEVBQW1GQyxPQUFuRixDQUFQO0FBQ0Q7O0FBelRrQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHJlc29sdmVGcm9tIGZyb20gJ3Jlc29sdmUtZnJvbSc7XG5pbXBvcnQgeyBnZXRFeHRDb25maWdJT0luc3RhbmNlIH0gZnJvbSAnLi9leHQtY29uZmlnLWlvJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHsgQUxMT1dFRF9TQ0hFTUFfRVhURU5TSU9OUywgaXNBbGxvd2VkU2NoZW1hRmlsZUV4dGVuc2lvbiwgcmVnaXN0ZXJTY2hlbWEgfSBmcm9tICcuL3NjaGVtYS9zY2hlbWEnO1xuXG5jb25zdCBERUZBVUxUX0FQUElVTV9IT01FID0gcGF0aC5yZXNvbHZlKG9zLmhvbWVkaXIoKSwgJy5hcHBpdW0nKTtcbmNvbnN0IEFQUElVTV9IT01FID0gcHJvY2Vzcy5lbnYuQVBQSVVNX0hPTUUgfHwgREVGQVVMVF9BUFBJVU1fSE9NRTtcblxuY29uc3QgSU5TVEFMTF9UWVBFX05QTSA9ICducG0nO1xuY29uc3QgSU5TVEFMTF9UWVBFX0xPQ0FMID0gJ2xvY2FsJztcbmNvbnN0IElOU1RBTExfVFlQRV9HSVRIVUIgPSAnZ2l0aHViJztcbmNvbnN0IElOU1RBTExfVFlQRV9HSVQgPSAnZ2l0JztcbmNvbnN0IElOU1RBTExfVFlQRVMgPSBbXG4gIElOU1RBTExfVFlQRV9HSVQsXG4gIElOU1RBTExfVFlQRV9HSVRIVUIsXG4gIElOU1RBTExfVFlQRV9MT0NBTCxcbiAgSU5TVEFMTF9UWVBFX05QTVxuXTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXh0ZW5zaW9uQ29uZmlnIHtcbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcHBpdW1Ib21lIC0gYEFQUElVTV9IT01FYFxuICAgKiBAcGFyYW0ge0V4dGVuc2lvblR5cGV9IGV4dGVuc2lvblR5cGUgLSBUeXBlIG9mIGV4dGVuc2lvblxuICAgKiBAcGFyYW0geyguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZH0gW2xvZ0ZuXVxuICAgKi9cbiAgY29uc3RydWN0b3IgKGFwcGl1bUhvbWUsIGV4dGVuc2lvblR5cGUsIGxvZ0ZuKSB7XG4gICAgY29uc3QgbG9nZ2VyID0gXy5pc0Z1bmN0aW9uKGxvZ0ZuKSA/IGxvZ0ZuIDogbG9nLmVycm9yLmJpbmQobG9nKTtcbiAgICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgICB0aGlzLmFwcGl1bUhvbWUgPSBhcHBpdW1Ib21lO1xuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZyxvYmplY3Q+fSAqL1xuICAgIHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9ucyA9IHt9O1xuICAgIC8qKiBAdHlwZSB7aW1wb3J0KCcuL2V4dC1jb25maWctaW8nKS5FeHRlbnNpb25Db25maWdJT30gKi9cbiAgICB0aGlzLmlvID0gZ2V0RXh0Q29uZmlnSU9JbnN0YW5jZShhcHBpdW1Ib21lKTtcbiAgICAvKiogQHR5cGUge0V4dGVuc2lvblR5cGV9ICovXG4gICAgdGhpcy5leHRlbnNpb25UeXBlID0gZXh0ZW5zaW9uVHlwZTtcbiAgICAvKiogQHR5cGUgeydkcml2ZXJzJ3wncGx1Z2lucyd9ICovXG4gICAgdGhpcy5jb25maWdLZXkgPSBgJHtleHRlbnNpb25UeXBlfXNgOyAvLyB0b2RvIHVzZSB0ZW1wbGF0ZSB0eXBlXG4gICAgLyoqXG4gICAgICogQHR5cGUgeyguLi5hcmdzOiBhbnlbXSk9PnZvaWR9XG4gICAgICovXG4gICAgdGhpcy5sb2cgPSBsb2dnZXI7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGV4dGVuc2lvbnMgZm9yIHByb2JsZW1zXG4gICAqIEB0ZW1wbGF0ZSBFeHREYXRhXG4gICAqIEBwYXJhbSB7RXh0RGF0YVtdfSBleHRzIC0gQXJyYXkgb2YgZXh0RGF0YSBvYmplY3RzXG4gICAqIEByZXR1cm5zIHtFeHREYXRhW119XG4gICAqL1xuICB2YWxpZGF0ZSAoZXh0cykge1xuICAgIGNvbnN0IGZvdW5kUHJvYmxlbXMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtleHROYW1lLCBleHREYXRhXSBvZiBfLnRvUGFpcnMoZXh0cykpIHtcbiAgICAgIGZvdW5kUHJvYmxlbXNbZXh0TmFtZV0gPSBbXG4gICAgICAgIC4uLnRoaXMuZ2V0R2VuZXJpY0NvbmZpZ1Byb2JsZW1zKGV4dERhdGEsIGV4dE5hbWUpLFxuICAgICAgICAuLi50aGlzLmdldENvbmZpZ1Byb2JsZW1zKGV4dERhdGEsIGV4dE5hbWUpLFxuICAgICAgICAuLi50aGlzLmdldFNjaGVtYVByb2JsZW1zKGV4dERhdGEsIGV4dE5hbWUpXG4gICAgICBdO1xuICAgIH1cblxuICAgIGNvbnN0IHByb2JsZW1TdW1tYXJpZXMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IFtleHROYW1lLCBwcm9ibGVtc10gb2YgXy50b1BhaXJzKGZvdW5kUHJvYmxlbXMpKSB7XG4gICAgICBpZiAoXy5pc0VtcHR5KHByb2JsZW1zKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIHJlbW92ZSB0aGlzIGV4dGVuc2lvbiBmcm9tIHRoZSBsaXN0IHNpbmNlIGl0J3Mgbm90IHZhbGlkXG4gICAgICBkZWxldGUgZXh0c1tleHROYW1lXTtcbiAgICAgIHByb2JsZW1TdW1tYXJpZXMucHVzaChgJHt0aGlzLmV4dGVuc2lvblR5cGV9ICR7ZXh0TmFtZX0gaGFkIGVycm9ycyBhbmQgd2lsbCBub3QgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYGJlIGF2YWlsYWJsZS4gRXJyb3JzOmApO1xuICAgICAgZm9yIChjb25zdCBwcm9ibGVtIG9mIHByb2JsZW1zKSB7XG4gICAgICAgIHByb2JsZW1TdW1tYXJpZXMucHVzaChgICAtICR7cHJvYmxlbS5lcnJ9IChBY3R1YWwgdmFsdWU6IGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7SlNPTi5zdHJpbmdpZnkocHJvYmxlbS52YWwpfSlgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIV8uaXNFbXB0eShwcm9ibGVtU3VtbWFyaWVzKSkge1xuICAgICAgdGhpcy5sb2coYEFwcGl1bSBlbmNvdW50ZXJlZCBvbmUgb3IgbW9yZSBlcnJvcnMgd2hpbGUgdmFsaWRhdGluZyBgICtcbiAgICAgICAgICAgICAgIGB0aGUgJHt0aGlzLmNvbmZpZ0tleX0gZXh0ZW5zaW9uIGZpbGUgKCR7dGhpcy5pby5maWxlcGF0aH0pOmApO1xuICAgICAgZm9yIChjb25zdCBzdW1tYXJ5IG9mIHByb2JsZW1TdW1tYXJpZXMpIHtcbiAgICAgICAgdGhpcy5sb2coc3VtbWFyeSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4dHM7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGV4dERhdGFcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dE5hbWVcbiAgICogQHJldHVybnMge1Byb2JsZW1bXX1cbiAgICovXG4gIGdldFNjaGVtYVByb2JsZW1zIChleHREYXRhLCBleHROYW1lKSB7XG4gICAgY29uc3QgcHJvYmxlbXMgPSBbXTtcbiAgICBjb25zdCB7c2NoZW1hOiBhcmdTY2hlbWFQYXRofSA9IGV4dERhdGE7XG4gICAgaWYgKGFyZ1NjaGVtYVBhdGgpIHtcbiAgICAgIGlmIChfLmlzU3RyaW5nKGFyZ1NjaGVtYVBhdGgpKSB7XG4gICAgICAgIGlmIChpc0FsbG93ZWRTY2hlbWFGaWxlRXh0ZW5zaW9uKGFyZ1NjaGVtYVBhdGgpKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMucmVhZEV4dGVuc2lvblNjaGVtYShleHROYW1lLCBleHREYXRhKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHByb2JsZW1zLnB1c2goe2VycjogYFVuYWJsZSB0byByZWdpc3RlciBzY2hlbWEgYXQgcGF0aCAke2FyZ1NjaGVtYVBhdGh9OyAke2Vyci5tZXNzYWdlfWAsIHZhbDogYXJnU2NoZW1hUGF0aH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm9ibGVtcy5wdXNoKHtcbiAgICAgICAgICAgIGVycjogYFNjaGVtYSBmaWxlIGhhcyB1bnN1cHBvcnRlZCBleHRlbnNpb24uIEFsbG93ZWQ6ICR7Wy4uLkFMTE9XRURfU0NIRU1BX0VYVEVOU0lPTlNdLmpvaW4oJywgJyl9YCxcbiAgICAgICAgICAgIHZhbDogYXJnU2NoZW1hUGF0aFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKF8uaXNQbGFpbk9iamVjdChhcmdTY2hlbWFQYXRoKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMucmVhZEV4dGVuc2lvblNjaGVtYShleHROYW1lLCBleHREYXRhKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgcHJvYmxlbXMucHVzaCh7ZXJyOiBgVW5hYmxlIHRvIHJlZ2lzdGVyIGVtYmVkZGVkIHNjaGVtYTsgJHtlcnIubWVzc2FnZX1gLCB2YWw6IGFyZ1NjaGVtYVBhdGh9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvYmxlbXMucHVzaCh7XG4gICAgICAgICAgZXJyOiAnSW5jb3JyZWN0bHkgZm9ybWF0dGVkIHNjaGVtYSBmaWVsZDsgbXVzdCBiZSBhIHBhdGggdG8gYSBzY2hlbWEgZmlsZSBvciBhIHNjaGVtYSBvYmplY3QuJyxcbiAgICAgICAgICB2YWw6IGFyZ1NjaGVtYVBhdGhcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwcm9ibGVtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZXh0RGF0YVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0TmFtZVxuICAgKiBAcmV0dXJucyB7UHJvYmxlbVtdfVxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGdldEdlbmVyaWNDb25maWdQcm9ibGVtcyAoZXh0RGF0YSwgZXh0TmFtZSkge1xuICAgIGNvbnN0IHt2ZXJzaW9uLCBwa2dOYW1lLCBpbnN0YWxsU3BlYywgaW5zdGFsbFR5cGUsIGluc3RhbGxQYXRoLCBtYWluQ2xhc3N9ID0gZXh0RGF0YTtcbiAgICBjb25zdCBwcm9ibGVtcyA9IFtdO1xuXG4gICAgaWYgKCFfLmlzU3RyaW5nKHZlcnNpb24pKSB7XG4gICAgICBwcm9ibGVtcy5wdXNoKHtlcnI6ICdNaXNzaW5nIG9yIGluY29ycmVjdCB2ZXJzaW9uJywgdmFsOiB2ZXJzaW9ufSk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmlzU3RyaW5nKHBrZ05hbWUpKSB7XG4gICAgICBwcm9ibGVtcy5wdXNoKHtlcnI6ICdNaXNzaW5nIG9yIGluY29ycmVjdCBOUE0gcGFja2FnZSBuYW1lJywgdmFsOiBwa2dOYW1lfSk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmlzU3RyaW5nKGluc3RhbGxTcGVjKSkge1xuICAgICAgcHJvYmxlbXMucHVzaCh7ZXJyOiAnTWlzc2luZyBvciBpbmNvcnJlY3QgaW5zdGFsbGF0aW9uIHNwZWMnLCB2YWw6IGluc3RhbGxTcGVjfSk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmluY2x1ZGVzKElOU1RBTExfVFlQRVMsIGluc3RhbGxUeXBlKSkge1xuICAgICAgcHJvYmxlbXMucHVzaCh7ZXJyOiAnTWlzc2luZyBvciBpbmNvcnJlY3QgaW5zdGFsbCB0eXBlJywgdmFsOiBpbnN0YWxsVHlwZX0pO1xuICAgIH1cblxuICAgIGlmICghXy5pc1N0cmluZyhpbnN0YWxsUGF0aCkpIHtcbiAgICAgIHByb2JsZW1zLnB1c2goe2VycjogJ01pc3Npbmcgb3IgaW5jb3JyZWN0IGluc3RhbGxhdGlvbiBwYXRoJywgdmFsOiBpbnN0YWxsUGF0aH0pO1xuICAgIH1cblxuICAgIGlmICghXy5pc1N0cmluZyhtYWluQ2xhc3MpKSB7XG4gICAgICBwcm9ibGVtcy5wdXNoKHtlcnI6ICdNaXNzaW5nIG9yIGluY29ycmVjdCBkcml2ZXIgY2xhc3MgbmFtZScsIHZhbDogbWFpbkNsYXNzfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb2JsZW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBleHREYXRhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHROYW1lXG4gICAqIEByZXR1cm5zIHtQcm9ibGVtW119XG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgZ2V0Q29uZmlnUHJvYmxlbXMgKGV4dERhdGEsIGV4dE5hbWUpIHtcbiAgICAvLyBzaG91ZCBvdmVycmlkZSB0aGlzIG1ldGhvZCBpZiBzcGVjaWFsIHZhbGlkYXRpb24gaXMgbmVjZXNzYXJ5IGZvciB0aGlzIGV4dGVuc2lvbiB0eXBlXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHR5cGVvZiB0aGlzLmluc3RhbGxlZEV4dGVuc2lvbnM+fVxuICAgKi9cbiAgYXN5bmMgcmVhZCAoKSB7XG4gICAgY29uc3QgZXh0ZW5zaW9ucyA9IGF3YWl0IHRoaXMuaW8ucmVhZCh0aGlzLmV4dGVuc2lvblR5cGUpO1xuICAgIHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9ucyA9IHRoaXMudmFsaWRhdGUoZXh0ZW5zaW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIGFzeW5jIHdyaXRlICgpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5pby53cml0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHROYW1lXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBleHREYXRhXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgYWRkRXh0ZW5zaW9uIChleHROYW1lLCBleHREYXRhKSB7XG4gICAgdGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zW2V4dE5hbWVdID0gZXh0RGF0YTtcbiAgICBhd2FpdCB0aGlzLndyaXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dE5hbWVcbiAgICogQHBhcmFtIHtvYmplY3R9IGV4dERhdGFcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyB1cGRhdGVFeHRlbnNpb24gKGV4dE5hbWUsIGV4dERhdGEpIHtcbiAgICB0aGlzLmluc3RhbGxlZEV4dGVuc2lvbnNbZXh0TmFtZV0gPSB7XG4gICAgICAuLi50aGlzLmluc3RhbGxlZEV4dGVuc2lvbnNbZXh0TmFtZV0sXG4gICAgICAuLi5leHREYXRhLFxuICAgIH07XG4gICAgYXdhaXQgdGhpcy53cml0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHROYW1lXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgcmVtb3ZlRXh0ZW5zaW9uIChleHROYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9uc1tleHROYW1lXTtcbiAgICBhd2FpdCB0aGlzLndyaXRlKCk7XG4gIH1cblxuICBwcmludCAoKSB7XG4gICAgY29uc3QgZXh0TmFtZXMgPSBPYmplY3Qua2V5cyh0aGlzLmluc3RhbGxlZEV4dGVuc2lvbnMpO1xuICAgIGlmIChfLmlzRW1wdHkoZXh0TmFtZXMpKSB7XG4gICAgICBsb2cuaW5mbyhgTm8gJHt0aGlzLmNvbmZpZ0tleX0gaGF2ZSBiZWVuIGluc3RhbGxlZC4gVXNlIHRoZSBcImFwcGl1bSAke3RoaXMuZXh0ZW5zaW9uVHlwZX1cIiBgICtcbiAgICAgICAgICAgICAgICdjb21tYW5kIHRvIGluc3RhbGwgdGhlIG9uZShzKSB5b3Ugd2FudCB0byB1c2UuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbG9nLmluZm8oYEF2YWlsYWJsZSAke3RoaXMuY29uZmlnS2V5fTpgKTtcbiAgICBmb3IgKGNvbnN0IFtleHROYW1lLCBleHREYXRhXSBvZiBfLnRvUGFpcnModGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zKSkge1xuICAgICAgbG9nLmluZm8oYCAgLSAke3RoaXMuZXh0ZW5zaW9uRGVzYyhleHROYW1lLCBleHREYXRhKX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBleHRlbnNpb24uIFN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHROYW1lIC0gRXh0ZW5zaW9uIG5hbWVcbiAgICogQHBhcmFtIHtvYmplY3R9IGV4dERhdGEgLSBFeHRlbnNpb24gZGF0YVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKiBAYWJzdHJhY3RcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBleHRlbnNpb25EZXNjIChleHROYW1lLCBleHREYXRhKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIG11c3QgYmUgaW1wbGVtZW50ZWQgaW4gYSBzdWJjbGFzcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHROYW1lXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBnZXRFeHRlbnNpb25SZXF1aXJlUGF0aCAoZXh0TmFtZSkge1xuICAgIGNvbnN0IHtwa2dOYW1lLCBpbnN0YWxsUGF0aH0gPSB0aGlzLmluc3RhbGxlZEV4dGVuc2lvbnNbZXh0TmFtZV07XG4gICAgcmV0dXJuIHBhdGgucmVzb2x2ZSh0aGlzLmFwcGl1bUhvbWUsIGluc3RhbGxQYXRoLCAnbm9kZV9tb2R1bGVzJywgcGtnTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dE5hbWVcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIGdldEluc3RhbGxQYXRoIChleHROYW1lKSB7XG4gICAgY29uc3Qge2luc3RhbGxQYXRofSA9IHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9uc1tleHROYW1lXTtcbiAgICByZXR1cm4gcGF0aC5yZXNvbHZlKHRoaXMuYXBwaXVtSG9tZSwgaW5zdGFsbFBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIGV4dGVuc2lvbiBhbmQgcmV0dXJucyBpdHMgbWFpbiBjbGFzc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0TmFtZVxuICAgKiBAcmV0dXJucyB7KC4uLmFyZ3M6IGFueVtdKSA9PiBvYmplY3QgfVxuICAgKi9cbiAgcmVxdWlyZSAoZXh0TmFtZSkge1xuICAgIGNvbnN0IHttYWluQ2xhc3N9ID0gdGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zW2V4dE5hbWVdO1xuICAgIGNvbnN0IHJlcVBhdGggPSB0aGlzLmdldEV4dGVuc2lvblJlcXVpcmVQYXRoKGV4dE5hbWUpO1xuICAgIGNvbnN0IHJlcVJlc29sdmVkID0gcmVxdWlyZS5yZXNvbHZlKHJlcVBhdGgpO1xuICAgIGlmIChwcm9jZXNzLmVudi5BUFBJVU1fUkVMT0FEX0VYVEVOU0lPTlMgJiYgcmVxdWlyZS5jYWNoZVtyZXFSZXNvbHZlZF0pIHtcbiAgICAgIGxvZy5kZWJ1ZyhgUmVtb3ZpbmcgJHtyZXFSZXNvbHZlZH0gZnJvbSByZXF1aXJlIGNhY2hlYCk7XG4gICAgICBkZWxldGUgcmVxdWlyZS5jYWNoZVtyZXFSZXNvbHZlZF07XG4gICAgfVxuICAgIHJldHVybiByZXF1aXJlKHJlcVBhdGgpW21haW5DbGFzc107XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dE5hbWVcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBpc0luc3RhbGxlZCAoZXh0TmFtZSkge1xuICAgIHJldHVybiBfLmluY2x1ZGVzKE9iamVjdC5rZXlzKHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9ucyksIGV4dE5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVuZGVkIHRvIGJlIGNhbGxlZCBieSBjb3JyZXNwb25kaW5nIGluc3RhbmNlIG1ldGhvZHMgb2Ygc3ViY2xhc3MuXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcHBpdW1Ib21lXG4gICAqIEBwYXJhbSB7RXh0ZW5zaW9uVHlwZX0gZXh0VHlwZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0TmFtZSAtIEV4dGVuc2lvbiBuYW1lICh1bmlxdWUgdG8gaXRzIHR5cGUpXG4gICAqIEBwYXJhbSB7RXh0RGF0YX0gZXh0RGF0YSAtIEV4dGVuc2lvbiBjb25maWdcbiAgICogQHJldHVybnMge2ltcG9ydCgnYWp2JykuU2NoZW1hT2JqZWN0fHVuZGVmaW5lZH1cbiAgICovXG4gIHN0YXRpYyBfcmVhZEV4dGVuc2lvblNjaGVtYSAoYXBwaXVtSG9tZSwgZXh0VHlwZSwgZXh0TmFtZSwgZXh0RGF0YSkge1xuICAgIGNvbnN0IHtpbnN0YWxsUGF0aCwgcGtnTmFtZSwgc2NoZW1hOiBhcmdTY2hlbWFQYXRofSA9IGV4dERhdGE7XG4gICAgaWYgKCFhcmdTY2hlbWFQYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICBgTm8gXFxgc2NoZW1hXFxgIHByb3BlcnR5IGZvdW5kIGluIGNvbmZpZyBmb3IgJHtleHRUeXBlfSAke3BrZ05hbWV9IC0tIHdoeSBpcyB0aGlzIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZD9gLFxuICAgICAgKTtcbiAgICB9XG4gICAgbGV0IG1vZHVsZU9iamVjdDtcbiAgICBpZiAoXy5pc1N0cmluZyhhcmdTY2hlbWFQYXRoKSkge1xuICAgICAgY29uc3Qgc2NoZW1hUGF0aCA9IHJlc29sdmVGcm9tKFxuICAgICAgICBwYXRoLnJlc29sdmUoYXBwaXVtSG9tZSwgaW5zdGFsbFBhdGgpLFxuICAgICAgICAvLyB0aGlzIHBhdGggc2VwIGlzIGZpbmUgYmVjYXVzZSBgcmVzb2x2ZUZyb21gIHVzZXMgTm9kZSdzIG1vZHVsZSByZXNvbHV0aW9uXG4gICAgICAgIHBhdGgubm9ybWFsaXplKGAke3BrZ05hbWV9LyR7YXJnU2NoZW1hUGF0aH1gKSxcbiAgICAgICk7XG4gICAgICBtb2R1bGVPYmplY3QgPSByZXF1aXJlKHNjaGVtYVBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtb2R1bGVPYmplY3QgPSBhcmdTY2hlbWFQYXRoO1xuICAgIH1cbiAgICAvLyB0aGlzIHN1Y2tzLiBkZWZhdWx0IGV4cG9ydHMgc2hvdWxkIGJlIGRlc3Ryb3llZFxuICAgIGNvbnN0IHNjaGVtYSA9IG1vZHVsZU9iamVjdC5fX2VzTW9kdWxlXG4gICAgICA/IG1vZHVsZU9iamVjdC5kZWZhdWx0XG4gICAgICA6IG1vZHVsZU9iamVjdDtcbiAgICByZWdpc3RlclNjaGVtYShleHRUeXBlLCBleHROYW1lLCBzY2hlbWEpO1xuICAgIHJldHVybiBzY2hlbWE7XG4gIH1cblxuICAvKipcbiAgICogSWYgYW4gZXh0ZW5zaW9uIHByb3ZpZGVzIGEgc2NoZW1hLCB0aGlzIHdpbGwgbG9hZCB0aGUgc2NoZW1hIGFuZCBhdHRlbXB0IHRvXG4gICAqIHJlZ2lzdGVyIGl0IHdpdGggdGhlIHNjaGVtYSByZWdpc3RyYXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHROYW1lIC0gTmFtZSBvZiBleHRlbnNpb25cbiAgICogQHBhcmFtIHtFeHREYXRhfSBleHREYXRhIC0gRXh0ZW5zaW9uIGRhdGFcbiAgICogQHJldHVybnMge2ltcG9ydCgnYWp2JykuU2NoZW1hT2JqZWN0fHVuZGVmaW5lZH1cbiAgICovXG4gIHJlYWRFeHRlbnNpb25TY2hlbWEgKGV4dE5hbWUsIGV4dERhdGEpIHtcbiAgICByZXR1cm4gRXh0ZW5zaW9uQ29uZmlnLl9yZWFkRXh0ZW5zaW9uU2NoZW1hKHRoaXMuYXBwaXVtSG9tZSwgdGhpcy5leHRlbnNpb25UeXBlLCBleHROYW1lLCBleHREYXRhKTtcbiAgfVxufVxuXG5leHBvcnQgeyBEUklWRVJfVFlQRSwgUExVR0lOX1RZUEUgfSBmcm9tICcuL2V4dC1jb25maWctaW8nO1xuZXhwb3J0IHtcbiAgSU5TVEFMTF9UWVBFX05QTSwgSU5TVEFMTF9UWVBFX0dJVCwgSU5TVEFMTF9UWVBFX0xPQ0FMLCBJTlNUQUxMX1RZUEVfR0lUSFVCLFxuICBJTlNUQUxMX1RZUEVTLCBERUZBVUxUX0FQUElVTV9IT01FLCBBUFBJVU1fSE9NRVxufTtcblxuLyoqXG4gKiBDb25maWcgcHJvYmxlbVxuICogQHR5cGVkZWYge09iamVjdH0gUHJvYmxlbVxuICogQHByb3BlcnR5IHtzdHJpbmd9IGVyciAtIEVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7YW55fSB2YWwgLSBBc3NvY2lhdGVkIHZhbHVlXG4gKi9cblxuLyoqXG4gKiBBbGlhc1xuICogQHR5cGVkZWYge2ltcG9ydCgnLi9leHQtY29uZmlnLWlvJykuRXh0ZW5zaW9uVHlwZX0gRXh0ZW5zaW9uVHlwZVxuICovXG5cbi8qKlxuICogRXh0ZW5zaW9uIGRhdGEgKHB1bGxlZCBmcm9tIGNvbmZpZyBZQU1MKVxuICogQHR5cGVkZWYge09iamVjdH0gRXh0RGF0YVxuICogQHByb3BlcnR5IHtzdHJpbmd8aW1wb3J0KCdhanYnKS5TY2hlbWFPYmplY3R9IFtzY2hlbWFdIC0gT3B0aW9uYWwgc2NoZW1hIHBhdGggaWYgdGhlIGV4dCBkZWZpbmVkIGl0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gcGtnTmFtZSAtIFBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IGluc3RhbGxQYXRoIC0gQWN0dWFsbHkgbG9va3MgbW9yZSBsaWtlIGEgbW9kdWxlIGlkZW50aWZpZXI/IFJlc29sdmVkIGZyb20gYEFQUElVTV9IT01FYFxuICovXG5cbiJdLCJmaWxlIjoibGliL2V4dGVuc2lvbi1jb25maWcuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
|
|
@@ -22,21 +22,27 @@ const hubUri = config => {
|
|
|
22
22
|
return `${protocol}://${config.hubHost}:${config.hubPort}`;
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
async function registerNode(
|
|
26
|
-
let
|
|
25
|
+
async function registerNode(data, addr, port, basePath) {
|
|
26
|
+
let configFilePath;
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
} catch (err) {
|
|
31
|
-
_logger.default.error(`Unable to load node configuration file to register with grid: ${err.message}`);
|
|
28
|
+
if (_lodash.default.isString(data)) {
|
|
29
|
+
configFilePath = data;
|
|
32
30
|
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
try {
|
|
32
|
+
data = await _support.fs.readFile(data, 'utf-8');
|
|
33
|
+
} catch (err) {
|
|
34
|
+
_logger.default.error(`Unable to load node configuration file ${configFilePath} to register with grid: ${err.message}`);
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
try {
|
|
40
|
+
data = JSON.parse(data);
|
|
41
|
+
} catch (err) {
|
|
42
|
+
_logger.default.errorAndThrow(`Syntax error in node configuration file ${configFilePath}: ${err.message}`);
|
|
43
|
+
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
40
46
|
}
|
|
41
47
|
|
|
42
48
|
postRequest(data, addr, port, basePath);
|
|
@@ -58,15 +64,7 @@ async function registerToGrid(postOptions, configHolder) {
|
|
|
58
64
|
}
|
|
59
65
|
}
|
|
60
66
|
|
|
61
|
-
function postRequest(
|
|
62
|
-
let configHolder;
|
|
63
|
-
|
|
64
|
-
try {
|
|
65
|
-
configHolder = JSON.parse(data);
|
|
66
|
-
} catch (err) {
|
|
67
|
-
_logger.default.errorAndThrow(`Syntax error in node configuration file: ${err.message}`);
|
|
68
|
-
}
|
|
69
|
-
|
|
67
|
+
function postRequest(configHolder, addr, port, basePath) {
|
|
70
68
|
if (!_lodash.default.has(configHolder, 'configuration')) {
|
|
71
69
|
let configuration = {};
|
|
72
70
|
|
|
@@ -154,4 +152,4 @@ var _default = registerNode;
|
|
|
154
152
|
exports.default = _default;require('source-map-support').install();
|
|
155
153
|
|
|
156
154
|
|
|
157
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9ncmlkLXJlZ2lzdGVyLmpzIl0sIm5hbWVzIjpbImh1YlVyaSIsImNvbmZpZyIsInByb3RvY29sIiwiaHViUHJvdG9jb2wiLCJodWJIb3N0IiwiaHViUG9ydCIsInJlZ2lzdGVyTm9kZSIsImNvbmZpZ0ZpbGUiLCJhZGRyIiwicG9ydCIsImJhc2VQYXRoIiwiZGF0YSIsImZzIiwicmVhZEZpbGUiLCJlcnIiLCJsb2dnZXIiLCJlcnJvciIsIm1lc3NhZ2UiLCJwb3N0UmVxdWVzdCIsInJlZ2lzdGVyVG9HcmlkIiwicG9zdE9wdGlvbnMiLCJjb25maWdIb2xkZXIiLCJzdGF0dXMiLCJFcnJvciIsImRlYnVnIiwiY29uZmlndXJhdGlvbiIsIkpTT04iLCJwYXJzZSIsImVycm9yQW5kVGhyb3ciLCJfIiwiaGFzIiwicHJvcGVydHkiLCJ1cmwiLCJob3N0IiwiaWQiLCJyZWdSZXF1ZXN0IiwibWV0aG9kIiwicmVnaXN0ZXIiLCJyZWdpc3RlckN5Y2xlSW50ZXJ2YWwiLCJyZWdpc3RlckN5Y2xlIiwiaXNOYU4iLCJ3YXJuIiwiZmlyc3QiLCJzZXRJbnRlcnZhbCIsInJlZ2lzdGVyUmV0cnkiLCJpc0FscmVhZHlSZWdpc3RlcmVkIiwidGltZW91dCIsInN1Y2Nlc3MiLCJtc2ciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsTUFBTSxHQUFJQyxNQUFELElBQVk7QUFDekIsUUFBTUMsUUFBUSxHQUFHRCxNQUFNLENBQUNFLFdBQVAsSUFBc0IsTUFBdkM7QUFDQSxTQUFRLEdBQUVELFFBQVMsTUFBS0QsTUFBTSxDQUFDRyxPQUFRLElBQUdILE1BQU0sQ0FBQ0ksT0FBUSxFQUF6RDtBQUNELENBSEQ7O0FBS0EsZUFBZUMsWUFBZixDQUE2QkMsVUFBN0IsRUFBeUNDLElBQXpDLEVBQStDQyxJQUEvQyxFQUFxREMsUUFBckQsRUFBK0Q7QUFDN0QsTUFBSUMsSUFBSjs7QUFDQSxNQUFJO0FBQ0ZBLElBQUFB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LGFBQWIsQ0FBMkJTLEVBQXRDOztBQUNBLE1BQUk7QUFDRixVQUFNO0FBQUN2QixNQUFBQSxJQUFEO0FBQU9XLE1BQUFBO0FBQVAsUUFBaUIsTUFBTSxvQkFBTTtBQUNqQ1UsTUFBQUEsR0FBRyxFQUFHLEdBQUVoQyxNQUFNLENBQUNxQixZQUFZLENBQUNJLGFBQWQsQ0FBNkIsc0JBQXFCUyxFQUFHLEVBRGxDO0FBRWpDWSxNQUFBQSxPQUFPLEVBQUU7QUFGd0IsS0FBTixDQUE3Qjs7QUFJQSxRQUFJeEIsTUFBTSxLQUFLLEdBQWYsRUFBb0I7QUFDbEIsWUFBTSxJQUFJQyxLQUFKLENBQVcsNEJBQTJCRCxNQUFPLEVBQTdDLENBQU47QUFDRDs7QUFDRCxRQUFJLENBQUNYLElBQUksQ0FBQ29DLE9BQVYsRUFBbUI7QUFFakJoQyxzQkFBT1MsS0FBUCxDQUFjLDRCQUEyQmIsSUFBSSxDQUFDcUMsR0FBSSxFQUFsRDtBQUNEOztBQUNELFdBQU9yQyxJQUFJLENBQUNvQyxPQUFaO0FBQ0QsR0FiRCxDQWFFLE9BQU9qQyxHQUFQLEVBQVk7QUFDWkMsb0JBQU9TLEtBQVAsQ0FBYywrQkFBOEJWLEdBQUcsQ0FBQ0csT0FBUSxFQUF4RDtBQUNEO0FBQ0Y7O2VBR2NYLFkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgZnMgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5cbmNvbnN0IGh1YlVyaSA9IChjb25maWcpID0+IHtcbiAgY29uc3QgcHJvdG9jb2wgPSBjb25maWcuaHViUHJvdG9jb2wgfHwgJ2h0dHAnO1xuICByZXR1cm4gYCR7cHJvdG9jb2x9Oi8vJHtjb25maWcuaHViSG9zdH06JHtjb25maWcuaHViUG9ydH1gO1xufTtcblxuYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJOb2RlIChjb25maWdGaWxlLCBhZGRyLCBwb3J0LCBiYXNlUGF0aCkge1xuICBsZXQgZGF0YTtcbiAgdHJ5IHtcbiAgICBkYXRhID0gYXdhaXQgZnMucmVhZEZpbGUoY29uZmlnRmlsZSwgJ3V0Zi04Jyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5lcnJvcihgVW5hYmxlIHRvIGxvYWQgbm9kZSBjb25maWd1cmF0aW9uIGZpbGUgdG8gcmVnaXN0ZXIgd2l0aCBncmlkOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIENoZWNrIHByZXNlbmNlIG9mIGRhdGEgYmVmb3JlIHBvc3RpbmcgIGl0IHRvIHRoZSBzZWxlbml1bSBncmlkXG4gIGlmICghZGF0YSkge1xuICAgIGxvZ2dlci5lcnJvcignTm8gZGF0YSBmb3VuZCBpbiB0aGUgbm9kZSBjb25maWd1cmF0aW9uIGZpbGUgdG8gc2VuZCB0byB0aGUgZ3JpZCcpO1xuICAgIHJldHVybjtcbiAgfVxuICBwb3N0UmVxdWVzdChkYXRhLCBhZGRyLCBwb3J0LCBiYXNlUGF0aCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyVG9HcmlkIChwb3N0T3B0aW9ucywgY29uZmlnSG9sZGVyKSB7XG4gIHRyeSB7XG4gICAgY29uc3Qge3N0YXR1c30gPSBhd2FpdCBheGlvcyhwb3N0T3B0aW9ucyk7XG4gICAgaWYgKHN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcXVlc3QgZmFpbGVkIHdpdGggY29kZSAke3N0YXR1c31gKTtcbiAgICB9XG4gICAgbG9nZ2VyLmRlYnVnKGBBcHBpdW0gc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQgd2l0aCB0aGUgdGhlIGdyaWQgb24gYCArXG4gICAgICBodWJVcmkoY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24pKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmVycm9yKGBBbiBhdHRlbXB0IHRvIHJlZ2lzdGVyIHdpdGggdGhlIGdyaWQgd2FzIHVuc3VjY2Vzc2Z1bDogJHtlcnIubWVzc2FnZX1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwb3N0UmVxdWVzdCAoZGF0YSwgYWRkciwgcG9ydCwgYmFzZVBhdGgpIHtcbiAgLy8gcGFyc2UganNvbiB0byBnZXQgaHViIGhvc3QgYW5kIHBvcnRcbiAgbGV0IGNvbmZpZ0hvbGRlcjtcbiAgdHJ5IHtcbiAgICBjb25maWdIb2xkZXIgPSBKU09OLnBhcnNlKGRhdGEpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2dnZXIuZXJyb3JBbmRUaHJvdyhgU3ludGF4IGVycm9yIGluIG5vZGUgY29uZmlndXJhdGlvbiBmaWxlOiAke2Vyci5tZXNzYWdlfWApO1xuICB9XG5cbiAgLy8gTW92ZSBTZWxlbml1bSAzIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB0byBjb25maWd1cmF0aW9uIG9iamVjdFxuICBpZiAoIV8uaGFzKGNvbmZpZ0hvbGRlciwgJ2NvbmZpZ3VyYXRpb24nKSkge1xuICAgIGxldCBjb25maWd1cmF0aW9uID0ge307XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBjb25maWdIb2xkZXIpIHtcbiAgICAgIGlmIChfLmhhcyhjb25maWdIb2xkZXIsIHByb3BlcnR5KSAmJiBwcm9wZXJ0eSAhPT0gJ2NhcGFiaWxpdGllcycpIHtcbiAgICAgICAgY29uZmlndXJhdGlvbltwcm9wZXJ0eV0gPSBjb25maWdIb2xkZXJbcHJvcGVydHldO1xuICAgICAgICBkZWxldGUgY29uZmlnSG9sZGVyW3Byb3BlcnR5XTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uO1xuICB9XG5cbiAgLy8gaWYgdGhlIG5vZGUgY29uZmlnIGRvZXMgbm90IGhhdmUgdGhlIGFwcGl1bS93ZWJkcml2ZXIgdXJsLCBob3N0LCBhbmQgcG9ydCxcbiAgLy8gYXV0b21hdGljYWxseSBhZGQgaXQgYmFzZWQgb24gaG93IGFwcGl1bSB3YXMgaW5pdGlhbGl6ZWRcbiAgLy8gb3RoZXJ3aXNlLCB3ZSB3aWxsIHRha2Ugd2hhdGV2ZXIgdGhlIHVzZXIgc2V0dXBcbiAgLy8gYmVjYXVzZSB3ZSB3aWxsIGFsd2F5cyBzZXQgbG9jYWxob3N0LzEyNy4wLjAuMS4gdGhpcyB3b24ndCB3b3JrIGlmIHlvdXJcbiAgLy8gbm9kZSBhbmQgZ3JpZCBhcmVuJ3QgaW4gdGhlIHNhbWUgcGxhY2VcbiAgaWYgKCFjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi51cmwgfHwgIWNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLmhvc3QgfHwgIWNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLnBvcnQpIHtcbiAgICBjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi51cmwgPSBgaHR0cDovLyR7YWRkcn06JHtwb3J0fSR7YmFzZVBhdGh9YDtcbiAgICBjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5ob3N0ID0gYWRkcjtcbiAgICBjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5wb3J0ID0gcG9ydDtcbiAgfVxuICAvLyBpZiB0aGUgbm9kZSBjb25maWcgZG9lcyBub3QgaGF2ZSBpZCBhdXRvbWF0aWNhbGx5IGFkZCBpdFxuICBpZiAoIWNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLmlkKSB7XG4gICAgY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24uaWQgPSBgaHR0cDovLyR7Y29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24uaG9zdH06JHtjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5wb3J0fWA7XG4gIH1cblxuICAvLyB0aGUgcG9zdCBvcHRpb25zXG4gIGNvbnN0IHJlZ1JlcXVlc3QgPSB7XG4gICAgdXJsOiBgJHtodWJVcmkoY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24pfS9ncmlkL3JlZ2lzdGVyYCxcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBkYXRhOiBjb25maWdIb2xkZXIsXG4gIH07XG5cbiAgaWYgKGNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLnJlZ2lzdGVyICE9PSB0cnVlKSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBObyByZWdpc3RyYXRpb24gc2VudCAoJHtjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5yZWdpc3Rlcn0gPSBmYWxzZSlgKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCByZWdpc3RlckN5Y2xlSW50ZXJ2YWwgPSBjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5yZWdpc3RlckN5Y2xlO1xuICBpZiAoaXNOYU4ocmVnaXN0ZXJDeWNsZUludGVydmFsKSB8fCByZWdpc3RlckN5Y2xlSW50ZXJ2YWwgPD0gMCkge1xuICAgIGxvZ2dlci53YXJuKGAncmVnaXN0ZXJDeWNsZScgaXMgbm90IGEgdmFsaWQgcG9zaXRpdmUgbnVtYmVyLiBgICtcbiAgICAgIGBObyByZWdpc3RyYXRpb24gcmVxdWVzdCB3aWxsIGJlIHNlbnQgdG8gdGhlIGdyaWQuYCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIGluaXRpYXRlIGEgbmV3IFRocmVhZFxuICBsZXQgZmlyc3QgPSB0cnVlO1xuICBsb2dnZXIuZGVidWcoYFN0YXJ0aW5nIGF1dG8gcmVnaXN0ZXIgdGhyZWFkIGZvciB0aGUgZ3JpZC4gYCArXG4gICAgYFdpbGwgdHJ5IHRvIHJlZ2lzdGVyIGV2ZXJ5ICR7cmVnaXN0ZXJDeWNsZUludGVydmFsfSBtcy5gKTtcbiAgc2V0SW50ZXJ2YWwoYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJSZXRyeSAoKSB7XG4gICAgaWYgKGZpcnN0KSB7XG4gICAgICBmaXJzdCA9IGZhbHNlO1xuICAgICAgYXdhaXQgcmVnaXN0ZXJUb0dyaWQocmVnUmVxdWVzdCwgY29uZmlnSG9sZGVyKTtcbiAgICB9IGVsc2UgaWYgKCFhd2FpdCBpc0FscmVhZHlSZWdpc3RlcmVkKGNvbmZpZ0hvbGRlcikpIHtcbiAgICAgIC8vIG1ha2UgdGhlIGh0dHAgUE9TVCB0byB0aGUgZ3JpZCBmb3IgcmVnaXN0cmF0aW9uXG4gICAgICBhd2FpdCByZWdpc3RlclRvR3JpZChyZWdSZXF1ZXN0LCBjb25maWdIb2xkZXIpO1xuICAgIH1cbiAgfSwgcmVnaXN0ZXJDeWNsZUludGVydmFsKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaXNBbHJlYWR5UmVnaXN0ZXJlZCAoY29uZmlnSG9sZGVyKSB7XG4gIC8vY2hlY2sgaWYgbm9kZSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRcbiAgY29uc3QgaWQgPSBjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5pZDtcbiAgdHJ5IHtcbiAgICBjb25zdCB7ZGF0YSwgc3RhdHVzfSA9IGF3YWl0IGF4aW9zKHtcbiAgICAgIHVybDogYCR7aHViVXJpKGNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uKX0vZ3JpZC9hcGkvcHJveHk/aWQ9JHtpZH1gLFxuICAgICAgdGltZW91dDogMTAwMDAsXG4gICAgfSk7XG4gICAgaWYgKHN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcXVlc3QgZmFpbGVkIHdpdGggY29kZSAke3N0YXR1c31gKTtcbiAgICB9XG4gICAgaWYgKCFkYXRhLnN1Y2Nlc3MpIHtcbiAgICAgIC8vIGlmIHJlZ2lzdGVyIGZhaWwsIHByaW50IHRoZSBkZWJ1ZyBtc2dcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgR3JpZCByZWdpc3RyYXRpb24gZXJyb3I6ICR7ZGF0YS5tc2d9YCk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhLnN1Y2Nlc3M7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5kZWJ1ZyhgSHViIGRvd24gb3Igbm90IHJlc3BvbmRpbmc6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVmYXVsdCByZWdpc3Rlck5vZGU7XG4iXSwiZmlsZSI6ImxpYi9ncmlkLXJlZ2lzdGVyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
|
|
155
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9ncmlkLXJlZ2lzdGVyLmpzIl0sIm5hbWVzIjpbImh1YlVyaSIsImNvbmZpZyIsInByb3RvY29sIiwiaHViUHJvdG9jb2wiLCJodWJIb3N0IiwiaHViUG9ydCIsInJlZ2lzdGVyTm9kZSIsImRhdGEiLCJhZGRyIiwicG9ydCIsImJhc2VQYXRoIiwiY29uZmlnRmlsZVBhdGgiLCJfIiwiaXNTdHJpbmciLCJmcyIsInJlYWRGaWxlIiwiZXJyIiwibG9nZ2VyIiwiZXJyb3IiLCJtZXNzYWdlIiwiSlNPTiIsInBhcnNlIiwiZXJyb3JBbmRUaHJvdyIsInBvc3RSZXF1ZXN0IiwicmVnaXN0ZXJUb0dyaWQiLCJwb3N0T3B0aW9ucyIsImNvbmZpZ0hvbGRlciIsInN0YXR1cyIsIkVycm9yIiwiZGVidWciLCJjb25maWd1cmF0aW9uIiwiaGFzIiwicHJvcGVydHkiLCJ1cmwiLCJob3N0IiwiaWQiLCJyZWdSZXF1ZXN0IiwibWV0aG9kIiwicmVnaXN0ZXIiLCJyZWdpc3RlckN5Y2xlSW50ZXJ2YWwiLCJyZWdpc3RlckN5Y2xlIiwiaXNOYU4iLCJ3YXJuIiwiZmlyc3QiLCJzZXRJbnRlcnZhbCIsInJlZ2lzdGVyUmV0cnkiLCJpc0FscmVhZHlSZWdpc3RlcmVkIiwidGltZW91dCIsInN1Y2Nlc3MiLCJtc2ciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsTUFBTSxHQUFJQyxNQUFELElBQVk7QUFDekIsUUFBTUMsUUFBUSxHQUFHRCxNQUFNLENBQUNFLFdBQVAsSUFBc0IsTUFBdkM7QUFDQSxTQUFRLEdBQUVELFFBQVMsTUFBS0QsTUFBTSxDQUFDRyxPQUFRLElBQUdILE1BQU0sQ0FBQ0ksT0FBUSxFQUF6RDtBQUNELENBSEQ7O0FBWUEsZUFBZUMsWUFBZixDQUE2QkMsSUFBN0IsRUFBbUNDLElBQW5DLEVBQXlDQyxJQUF6QyxFQUErQ0MsUUFBL0MsRUFBeUQ7QUFDdkQsTUFBSUMsY0FBSjs7QUFDQSxN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LFlBQXBDLEVBQWtEO0FBRWhELFFBQU1TLEVBQUUsR0FBR1QsWUFBWSxDQUFDSSxhQUFiLENBQTJCSyxFQUF0Qzs7QUFDQSxNQUFJO0FBQ0YsVUFBTTtBQUFDNUIsTUFBQUEsSUFBRDtBQUFPb0IsTUFBQUE7QUFBUCxRQUFpQixNQUFNLG9CQUFNO0FBQ2pDTSxNQUFBQSxHQUFHLEVBQUcsR0FBRWpDLE1BQU0sQ0FBQzBCLFlBQVksQ0FBQ0ksYUFBZCxDQUE2QixzQkFBcUJLLEVBQUcsRUFEbEM7QUFFakNZLE1BQUFBLE9BQU8sRUFBRTtBQUZ3QixLQUFOLENBQTdCOztBQUlBLFFBQUlwQixNQUFNLEtBQUssR0FBZixFQUFvQjtBQUNsQixZQUFNLElBQUlDLEtBQUosQ0FBVyw0QkFBMkJELE1BQU8sRUFBN0MsQ0FBTjtBQUNEOztBQUNELFFBQUksQ0FBQ3BCLElBQUksQ0FBQ3lDLE9BQVYsRUFBbUI7QUFFakIvQixzQkFBT1ksS0FBUCxDQUFjLDRCQUEyQnRCLElBQUksQ0FBQzBDLEdBQUksRUFBbEQ7QUFDRDs7QUFDRCxXQUFPMUMsSUFBSSxDQUFDeUMsT0FBWjtBQUNELEdBYkQsQ0FhRSxPQUFPaEMsR0FBUCxFQUFZO0FBQ1pDLG9CQUFPWSxLQUFQLENBQWMsK0JBQThCYixHQUFHLENBQUNHLE9BQVEsRUFBeEQ7QUFDRDtBQUNGOztlQUdjYixZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IGZzIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuXG5jb25zdCBodWJVcmkgPSAoY29uZmlnKSA9PiB7XG4gIGNvbnN0IHByb3RvY29sID0gY29uZmlnLmh1YlByb3RvY29sIHx8ICdodHRwJztcbiAgcmV0dXJuIGAke3Byb3RvY29sfTovLyR7Y29uZmlnLmh1Ykhvc3R9OiR7Y29uZmlnLmh1YlBvcnR9YDtcbn07XG5cbi8qKlxuICogUmVnaXN0ZXJzIGEgbmV3IG5vZGUgd2l0aCBhIHNlbGVuaXVtIGdyaWRcbiAqIEBwYXJhbSB7c3RyaW5nfG9iamVjdH0gZGF0YSAtIFBhdGggb3Igb2JqZWN0IHJlcHJlc2VudGluZyBzZWxlbml1bSBncmlkIG5vZGUgY29uZmlnIGZpbGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyIC0gQmluZCB0byB0aGlzIGFkZHJlc3NcbiAqIEBwYXJhbSB7bnVtYmVyfSBwb3J0IC0gQmluZCB0byB0aGlzIHBvcnRcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlUGF0aCAtIEJhc2UgcGF0aCBmb3IgdGhlIGdyaWRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJOb2RlIChkYXRhLCBhZGRyLCBwb3J0LCBiYXNlUGF0aCkge1xuICBsZXQgY29uZmlnRmlsZVBhdGg7XG4gIGlmIChfLmlzU3RyaW5nKGRhdGEpKSB7XG4gICAgY29uZmlnRmlsZVBhdGggPSBkYXRhO1xuICAgIHRyeSB7XG4gICAgICBkYXRhID0gYXdhaXQgZnMucmVhZEZpbGUoZGF0YSwgJ3V0Zi04Jyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoYFVuYWJsZSB0byBsb2FkIG5vZGUgY29uZmlndXJhdGlvbiBmaWxlICR7Y29uZmlnRmlsZVBhdGh9IHRvIHJlZ2lzdGVyIHdpdGggZ3JpZDogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGRhdGEgPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nZ2VyLmVycm9yQW5kVGhyb3coYFN5bnRheCBlcnJvciBpbiBub2RlIGNvbmZpZ3VyYXRpb24gZmlsZSAke2NvbmZpZ0ZpbGVQYXRofTogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBwb3N0UmVxdWVzdChkYXRhLCBhZGRyLCBwb3J0LCBiYXNlUGF0aCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyVG9HcmlkIChwb3N0T3B0aW9ucywgY29uZmlnSG9sZGVyKSB7XG4gIHRyeSB7XG4gICAgY29uc3Qge3N0YXR1c30gPSBhd2FpdCBheGlvcyhwb3N0T3B0aW9ucyk7XG4gICAgaWYgKHN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcXVlc3QgZmFpbGVkIHdpdGggY29kZSAke3N0YXR1c31gKTtcbiAgICB9XG4gICAgbG9nZ2VyLmRlYnVnKGBBcHBpdW0gc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQgd2l0aCB0aGUgdGhlIGdyaWQgb24gYCArXG4gICAgICBodWJVcmkoY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24pKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmVycm9yKGBBbiBhdHRlbXB0IHRvIHJlZ2lzdGVyIHdpdGggdGhlIGdyaWQgd2FzIHVuc3VjY2Vzc2Z1bDogJHtlcnIubWVzc2FnZX1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwb3N0UmVxdWVzdCAoY29uZmlnSG9sZGVyLCBhZGRyLCBwb3J0LCBiYXNlUGF0aCkge1xuICAvLyBNb3ZlIFNlbGVuaXVtIDMgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIHRvIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gIGlmICghXy5oYXMoY29uZmlnSG9sZGVyLCAnY29uZmlndXJhdGlvbicpKSB7XG4gICAgbGV0IGNvbmZpZ3VyYXRpb24gPSB7fTtcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGNvbmZpZ0hvbGRlcikge1xuICAgICAgaWYgKF8uaGFzKGNvbmZpZ0hvbGRlciwgcHJvcGVydHkpICYmIHByb3BlcnR5ICE9PSAnY2FwYWJpbGl0aWVzJykge1xuICAgICAgICBjb25maWd1cmF0aW9uW3Byb3BlcnR5XSA9IGNvbmZpZ0hvbGRlcltwcm9wZXJ0eV07XG4gICAgICAgIGRlbGV0ZSBjb25maWdIb2xkZXJbcHJvcGVydHldO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247XG4gIH1cblxuICAvLyBpZiB0aGUgbm9kZSBjb25maWcgZG9lcyBub3QgaGF2ZSB0aGUgYXBwaXVtL3dlYmRyaXZlciB1cmwsIGhvc3QsIGFuZCBwb3J0LFxuICAvLyBhdXRvbWF0aWNhbGx5IGFkZCBpdCBiYXNlZCBvbiBob3cgYXBwaXVtIHdhcyBpbml0aWFsaXplZFxuICAvLyBvdGhlcndpc2UsIHdlIHdpbGwgdGFrZSB3aGF0ZXZlciB0aGUgdXNlciBzZXR1cFxuICAvLyBiZWNhdXNlIHdlIHdpbGwgYWx3YXlzIHNldCBsb2NhbGhvc3QvMTI3LjAuMC4xLiB0aGlzIHdvbid0IHdvcmsgaWYgeW91clxuICAvLyBub2RlIGFuZCBncmlkIGFyZW4ndCBpbiB0aGUgc2FtZSBwbGFjZVxuICBpZiAoIWNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLnVybCB8fCAhY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24uaG9zdCB8fCAhY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24ucG9ydCkge1xuICAgIGNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLnVybCA9IGBodHRwOi8vJHthZGRyfToke3BvcnR9JHtiYXNlUGF0aH1gO1xuICAgIGNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLmhvc3QgPSBhZGRyO1xuICAgIGNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLnBvcnQgPSBwb3J0O1xuICB9XG4gIC8vIGlmIHRoZSBub2RlIGNvbmZpZyBkb2VzIG5vdCBoYXZlIGlkIGF1dG9tYXRpY2FsbHkgYWRkIGl0XG4gIGlmICghY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24uaWQpIHtcbiAgICBjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5pZCA9IGBodHRwOi8vJHtjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5ob3N0fToke2NvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLnBvcnR9YDtcbiAgfVxuXG4gIC8vIHRoZSBwb3N0IG9wdGlvbnNcbiAgY29uc3QgcmVnUmVxdWVzdCA9IHtcbiAgICB1cmw6IGAke2h1YlVyaShjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbil9L2dyaWQvcmVnaXN0ZXJgLFxuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGRhdGE6IGNvbmZpZ0hvbGRlcixcbiAgfTtcblxuICBpZiAoY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24ucmVnaXN0ZXIgIT09IHRydWUpIHtcbiAgICBsb2dnZXIuZGVidWcoYE5vIHJlZ2lzdHJhdGlvbiBzZW50ICgke2NvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLnJlZ2lzdGVyfSA9IGZhbHNlKWApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHJlZ2lzdGVyQ3ljbGVJbnRlcnZhbCA9IGNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLnJlZ2lzdGVyQ3ljbGU7XG4gIGlmIChpc05hTihyZWdpc3RlckN5Y2xlSW50ZXJ2YWwpIHx8IHJlZ2lzdGVyQ3ljbGVJbnRlcnZhbCA8PSAwKSB7XG4gICAgbG9nZ2VyLndhcm4oYCdyZWdpc3RlckN5Y2xlJyBpcyBub3QgYSB2YWxpZCBwb3NpdGl2ZSBudW1iZXIuIGAgK1xuICAgICAgYE5vIHJlZ2lzdHJhdGlvbiByZXF1ZXN0IHdpbGwgYmUgc2VudCB0byB0aGUgZ3JpZC5gKTtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gaW5pdGlhdGUgYSBuZXcgVGhyZWFkXG4gIGxldCBmaXJzdCA9IHRydWU7XG4gIGxvZ2dlci5kZWJ1ZyhgU3RhcnRpbmcgYXV0byByZWdpc3RlciB0aHJlYWQgZm9yIHRoZSBncmlkLiBgICtcbiAgICBgV2lsbCB0cnkgdG8gcmVnaXN0ZXIgZXZlcnkgJHtyZWdpc3RlckN5Y2xlSW50ZXJ2YWx9IG1zLmApO1xuICBzZXRJbnRlcnZhbChhc3luYyBmdW5jdGlvbiByZWdpc3RlclJldHJ5ICgpIHtcbiAgICBpZiAoZmlyc3QpIHtcbiAgICAgIGZpcnN0ID0gZmFsc2U7XG4gICAgICBhd2FpdCByZWdpc3RlclRvR3JpZChyZWdSZXF1ZXN0LCBjb25maWdIb2xkZXIpO1xuICAgIH0gZWxzZSBpZiAoIWF3YWl0IGlzQWxyZWFkeVJlZ2lzdGVyZWQoY29uZmlnSG9sZGVyKSkge1xuICAgICAgLy8gbWFrZSB0aGUgaHR0cCBQT1NUIHRvIHRoZSBncmlkIGZvciByZWdpc3RyYXRpb25cbiAgICAgIGF3YWl0IHJlZ2lzdGVyVG9HcmlkKHJlZ1JlcXVlc3QsIGNvbmZpZ0hvbGRlcik7XG4gICAgfVxuICB9LCByZWdpc3RlckN5Y2xlSW50ZXJ2YWwpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpc0FscmVhZHlSZWdpc3RlcmVkIChjb25maWdIb2xkZXIpIHtcbiAgLy9jaGVjayBpZiBub2RlIGlzIGFscmVhZHkgcmVnaXN0ZXJlZFxuICBjb25zdCBpZCA9IGNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLmlkO1xuICB0cnkge1xuICAgIGNvbnN0IHtkYXRhLCBzdGF0dXN9ID0gYXdhaXQgYXhpb3Moe1xuICAgICAgdXJsOiBgJHtodWJVcmkoY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24pfS9ncmlkL2FwaS9wcm94eT9pZD0ke2lkfWAsXG4gICAgICB0aW1lb3V0OiAxMDAwMCxcbiAgICB9KTtcbiAgICBpZiAoc3RhdHVzICE9PSAyMDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUmVxdWVzdCBmYWlsZWQgd2l0aCBjb2RlICR7c3RhdHVzfWApO1xuICAgIH1cbiAgICBpZiAoIWRhdGEuc3VjY2Vzcykge1xuICAgICAgLy8gaWYgcmVnaXN0ZXIgZmFpbCwgcHJpbnQgdGhlIGRlYnVnIG1zZ1xuICAgICAgbG9nZ2VyLmRlYnVnKGBHcmlkIHJlZ2lzdHJhdGlvbiBlcnJvcjogJHtkYXRhLm1zZ31gKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGEuc3VjY2VzcztcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBIdWIgZG93biBvciBub3QgcmVzcG9uZGluZzogJHtlcnIubWVzc2FnZX1gKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWZhdWx0IHJlZ2lzdGVyTm9kZTtcbiJdLCJmaWxlIjoibGliL2dyaWQtcmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
|
package/build/lib/logsink.js
CHANGED
|
@@ -5,9 +5,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.init = init;
|
|
9
8
|
exports.clear = clear;
|
|
10
9
|
exports.default = void 0;
|
|
10
|
+
exports.init = init;
|
|
11
11
|
|
|
12
12
|
require("source-map-support/register");
|
|
13
13
|
|