testcafe 2.6.2 → 3.4.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/lib/api/exportable-lib/index.js +5 -1
- package/lib/api/request-hooks/request-logger.js +6 -3
- package/lib/api/structure/fixture.js +6 -1
- package/lib/api/structure/interfaces.js +1 -1
- package/lib/api/structure/test-file.js +2 -2
- package/lib/api/structure/testing-unit.js +2 -1
- package/lib/api/test-controller/assertion.js +1 -1
- package/lib/api/test-controller/index.js +9 -19
- package/lib/api/test-page-url.js +2 -2
- package/lib/assertions/executor.js +1 -1
- package/lib/browser/connection/gateway/index.js +1 -4
- package/lib/browser/connection/index.js +6 -1
- package/lib/browser/provider/built-in/dedicated/firefox/marionette-client/index.js +4 -1
- package/lib/cli/argument-parser/index.js +3 -8
- package/lib/cli/remotes-wizard.js +3 -1
- package/lib/client/automation/index.js +153 -192
- package/lib/client/automation/index.min.js +1 -1
- package/lib/client/automation/playback/press/shortcut-type.js +24 -0
- package/lib/client/browser/idle-page/index.html.mustache +1 -1
- package/lib/client/browser/idle-page/index.js +5 -1
- package/lib/client/core/index.js +101 -330
- package/lib/client/core/index.min.js +1 -1
- package/lib/client/core/utils/array.js +3 -18
- package/lib/client/core/utils/dom.js +12 -32
- package/lib/client/driver/index.js +65 -77
- package/lib/client/driver/index.min.js +1 -1
- package/lib/client/driver/status.js +1 -2
- package/lib/client/test-run/index.js.mustache +1 -6
- package/lib/client/ui/index.js +77 -50
- package/lib/client/ui/index.min.js +1 -1
- package/lib/client/ui/styles.css +81 -3
- package/lib/client-functions/client-function-builder.js +7 -28
- package/lib/client-functions/selectors/add-api.js +3 -61
- package/lib/client-functions/selectors/selector-builder.js +3 -6
- package/lib/client-functions/selectors/selector-text-filter.js +1 -3
- package/lib/compiler/test-file/formats/dev-tools/compiler.js +8 -2
- package/lib/compiler/test-file/formats/typescript/compiler.js +2 -1
- package/lib/configuration/configuration-base.js +10 -8
- package/lib/configuration/default-values.js +3 -3
- package/lib/configuration/option-names.js +2 -3
- package/lib/configuration/run-option-names.js +2 -2
- package/lib/configuration/testcafe-configuration.js +4 -12
- package/lib/configuration/types.js +1 -1
- package/lib/custom-client-scripts/client-script.js +4 -1
- package/lib/custom-client-scripts/routing.js +3 -4
- package/lib/errors/get-callsite.js +3 -3
- package/lib/errors/runtime/index.js +64 -5
- package/lib/errors/runtime/templates.js +24 -15
- package/lib/errors/test-run/render-error-template/utils.js +2 -2
- package/lib/errors/test-run/templates.js +2 -2
- package/lib/errors/test-run/utils.js +2 -2
- package/lib/errors/types.js +5 -2
- package/lib/index.js +6 -4
- package/lib/native-automation/client/deps/hammerhead.js +25 -0
- package/lib/native-automation/client/event-descriptor.js +14 -1
- package/lib/native-automation/client/input.js +17 -5
- package/lib/native-automation/client/key-press/utils.js +13 -2
- package/lib/native-automation/cookie-provider.js +15 -4
- package/lib/native-automation/index.js +3 -2
- package/lib/native-automation/request-hooks/event-factory/request-paused-event-based.js +9 -5
- package/lib/native-automation/request-hooks/event-provider.js +14 -4
- package/lib/native-automation/request-pipeline/index.js +77 -48
- package/lib/native-automation/request-pipeline/safe-api.js +15 -10
- package/lib/native-automation/request-pipeline/test-run-bridge.js +13 -1
- package/lib/native-automation/resource-injector.js +3 -1
- package/lib/native-automation/types.js +1 -1
- package/lib/native-automation/utils/headers.js +2 -10
- package/lib/notifications/warning-message.js +3 -4
- package/lib/reporter/index.js +30 -21
- package/lib/reporter/module-prefix.js +6 -0
- package/lib/reporter/plugin-host.js +3 -12
- package/lib/role/index.js +1 -4
- package/lib/role/role.js +9 -1
- package/lib/runner/bootstrapper.js +45 -16
- package/lib/runner/browser-job.js +33 -5
- package/lib/runner/fixture-hook-controller.js +4 -3
- package/lib/runner/index.js +4 -19
- package/lib/runner/task/index.js +2 -4
- package/lib/runner/test-run-controller.js +24 -9
- package/lib/screenshots/capturer.js +8 -19
- package/lib/screenshots/index.js +4 -23
- package/lib/test-run/bookmark.js +1 -1
- package/lib/test-run/commands/observation.js +2 -10
- package/lib/test-run/commands/service.js +2 -9
- package/lib/test-run/commands/type.js +1 -2
- package/lib/test-run/index.js +10 -20
- package/lib/test-run/request/create-request-options.js +1 -1
- package/lib/test-run/request/interfaces.js +1 -1
- package/lib/test-run/request/send.js +2 -2
- package/lib/testcafe.js +3 -2
- package/lib/utils/debug-loggers.js +9 -2
- package/lib/utils/escape-unsafe-chars.js +13 -0
- package/lib/utils/get-browser.js +3 -2
- package/lib/utils/get-options/index.js +2 -4
- package/lib/utils/get-renderes.js +2 -2
- package/lib/utils/get-test-and-fixture-info.js +20 -0
- package/lib/utils/get-testcafe-version.js +3 -3
- package/lib/utils/lowercase-object-keys.js +12 -0
- package/lib/utils/match-collection.js +3 -3
- package/lib/utils/prerender-callsite.js +1 -1
- package/lib/utils/render-callsite-sync.js +2 -2
- package/lib/utils/reporter.js +8 -4
- package/lib/video-recorder/recorder.js +2 -2
- package/package.json +25 -27
- package/ts-defs/index.d.ts +49 -12
- package/ts-defs/selectors.d.ts +42 -8
- package/ts-defs/testcafe-scripts.d.ts +52 -8
- package/CHANGELOG.md +0 -4879
- package/lib/client/driver/command-executors/client-functions/selector-executor/check-element-delay.js +0 -5
- package/lib/client-functions/selector-api-execution-mode.js +0 -22
- package/lib/custom-client-scripts/get-url.js +0 -8
- package/lib/utils/is-repl.js +0 -12
|
@@ -17,7 +17,7 @@ const add_api_1 = require("./add-api");
|
|
|
17
17
|
const create_snapshot_methods_1 = __importDefault(require("./create-snapshot-methods"));
|
|
18
18
|
const prepare_api_args_1 = __importDefault(require("./prepare-api-args"));
|
|
19
19
|
const return_single_prop_mode_1 = __importDefault(require("../return-single-prop-mode"));
|
|
20
|
-
const
|
|
20
|
+
const escape_unsafe_chars_1 = __importDefault(require("../../utils/escape-unsafe-chars"));
|
|
21
21
|
class SelectorBuilder extends client_function_builder_1.default {
|
|
22
22
|
constructor(fn, options, callsiteNames, callsite) {
|
|
23
23
|
const apiFn = options && options.apiFn;
|
|
@@ -54,7 +54,7 @@ class SelectorBuilder extends client_function_builder_1.default {
|
|
|
54
54
|
if (hasSameDependenciesAsSourceSelector)
|
|
55
55
|
return this.options.sourceSelectorBuilder.compiledFnCode;
|
|
56
56
|
const code = typeof this.fn === 'string' ?
|
|
57
|
-
`(function(){return document.querySelectorAll(${JSON.stringify(this.fn)});});` :
|
|
57
|
+
`(function(){return document.querySelectorAll(${(0, escape_unsafe_chars_1.default)(JSON.stringify(this.fn))});});` :
|
|
58
58
|
super._getCompiledFnCode();
|
|
59
59
|
if (code) {
|
|
60
60
|
return (0, dedent_1.default)(`(function(){
|
|
@@ -159,13 +159,10 @@ class SelectorBuilder extends client_function_builder_1.default {
|
|
|
159
159
|
(0, create_snapshot_methods_1.default)(snapshot);
|
|
160
160
|
if (this.options.customMethods)
|
|
161
161
|
(0, add_api_1.addCustomMethods)(snapshot, () => snapshot.selector, SelectorBuilder, this.options.customMethods);
|
|
162
|
-
if (selector_api_execution_mode_1.default.isSync) {
|
|
163
|
-
(0, add_api_1.addAPI)(snapshot, () => snapshot.selector, SelectorBuilder, this.options.customDOMProperties, this.options.customMethods, this._getObservedCallsites(), true);
|
|
164
|
-
}
|
|
165
162
|
}
|
|
166
163
|
return snapshot;
|
|
167
164
|
}
|
|
168
165
|
}
|
|
169
166
|
exports.default = SelectorBuilder;
|
|
170
167
|
module.exports = exports.default;
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3ItYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQtZnVuY3Rpb25zL3NlbGVjdG9ycy9zZWxlY3Rvci1idWlsZGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQTJEO0FBQzNELG9EQUE0QjtBQUM1Qix5RkFBK0Q7QUFDL0QsOENBQXNEO0FBQ3RELGtEQUE4RDtBQUM5RCx1RUFBc0Q7QUFDdEQsOENBQW9EO0FBQ3BELDBFQUFzRTtBQUN0RSxxRUFBNkU7QUFDN0UsNEZBQWtFO0FBQ2xFLHVDQUFxRDtBQUNyRCx3RkFBOEQ7QUFDOUQsMEVBQWtEO0FBQ2xELHlGQUE4RDtBQUM5RCxpR0FBc0U7QUFFdEUsTUFBcUIsZUFBZ0IsU0FBUSxpQ0FBcUI7SUFDOUQsWUFBYSxFQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRO1FBQzdDLE1BQU0sS0FBSyxHQUEwQixPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQztRQUM5RCxNQUFNLE9BQU8sR0FBd0IsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDaEUsTUFBTSxtQkFBbUIsR0FBWSxFQUFFLElBQUksRUFBRSxDQUFDLHdCQUFxQixDQUFDLENBQUM7UUFDckUsTUFBTSw0QkFBNEIsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLHdCQUFxQixDQUFDLENBQUM7UUFDN0YsSUFBSSxPQUFPLEdBQTBCLG1CQUFtQixJQUFJLDRCQUE0QixDQUFDO1FBRXpGLE9BQU8sR0FBRyxPQUFPLFlBQVksZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUU5RCxJQUFJLE9BQU8sRUFBRTtZQUNULEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBRWhCLElBQUksT0FBTyxLQUFLLEtBQUssQ0FBQyxJQUFJLE9B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QyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDakQsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUN6RCxJQUFBLGlDQUFxQixFQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRWhDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhO2dCQUMxQixJQUFBLDBCQUFnQixFQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRXJHLElBQUkscUNBQXdCLENBQUMsTUFBTSxFQUFFO2dCQUNqQyxJQUFBLGdCQUFNLEVBQ0YsUUFBUSxFQUNSLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQ3ZCLGVBQWUsRUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFDMUIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLEVBQzVCLElBQUksQ0FDUCxDQUFDO2FBQ0w7U0FDSjtRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSjtBQXpORCxrQ0F5TkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc05pbCBhcyBpc051bGxPclVuZGVmaW5lZCwgbWVyZ2UgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGRlZGVudCBmcm9tICdkZWRlbnQnO1xuaW1wb3J0IENsaWVudEZ1bmN0aW9uQnVpbGRlciBmcm9tICcuLi9jbGllbnQtZnVuY3Rpb24tYnVpbGRlcic7XG5pbXBvcnQgeyBTZWxlY3Rvck5vZGVUcmFuc2Zvcm0gfSBmcm9tICcuLi9yZXBsaWNhdG9yJztcbmltcG9ydCB7IENsaWVudEZ1bmN0aW9uQVBJRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgZnVuY3Rpb25CdWlsZGVyU3ltYm9sIGZyb20gJy4uL2J1aWxkZXItc3ltYm9sJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCB7IGFzc2VydFR5cGUsIGlzIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3J1bnRpbWUvdHlwZS1hc3NlcnRpb25zJztcbmltcG9ydCB7IEV4ZWN1dGVTZWxlY3RvckNvbW1hbmQgfSBmcm9tICcuLi8uLi90ZXN0LXJ1bi9jb21tYW5kcy9vYnNlcnZhdGlvbic7XG5pbXBvcnQgZGVmaW5lTGF6eVByb3BlcnR5IGZyb20gJy4uLy4uL3V0aWxzL2RlZmluZS1sYXp5LXByb3BlcnR5JztcbmltcG9ydCB7IGFkZEFQSSwgYWRkQ3VzdG9tTWV0aG9kcyB9IGZyb20gJy4vYWRkLWFwaSc7XG5pbXBvcnQgY3JlYXRlU25hcHNob3RNZXRob2RzIGZyb20gJy4vY3JlYXRlLXNuYXBzaG90LW1ldGhvZHMnO1xuaW1wb3J0IHByZXBhcmVBcGlGbkFyZ3MgZnJvbSAnLi9wcmVwYXJlLWFwaS1hcmdzJztcbmltcG9ydCByZXR1cm5TaW5nbGVQcm9wTW9kZSBmcm9tICcuLi9yZXR1cm4tc2luZ2xlLXByb3AtbW9kZSc7XG5pbXBvcnQgc2VsZWN0b3JBcGlFeGVjdXRpb25Nb2RlIGZyb20gJy4uL3NlbGVjdG9yLWFwaS1leGVjdXRpb24tbW9kZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlbGVjdG9yQnVpbGRlciBleHRlbmRzIENsaWVudEZ1bmN0aW9uQnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IgKGZuLCBvcHRpb25zLCBjYWxsc2l0ZU5hbWVzLCBjYWxsc2l0ZSkge1xuICAgICAgICBjb25zdCBhcGlGbiAgICAgICAgICAgICAgICAgICAgICAgID0gb3B0aW9ucyAmJiBvcHRpb25zLmFwaUZuO1xuICAgICAgICBjb25zdCBhcGlGbklEICAgICAgICAgICAgICAgICAgICAgID0gb3B0aW9ucyAmJiBvcHRpb25zLmFwaUZuSUQ7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXJGcm9tU2VsZWN0b3IgICAgICAgICAgPSBmbiAmJiBmbltmdW5jdGlvbkJ1aWxkZXJTeW1ib2xdO1xuICAgICAgICBjb25zdCBidWlsZGVyRnJvbVByb21pc2VPclNuYXBzaG90ID0gZm4gJiYgZm4uc2VsZWN0b3IgJiYgZm4uc2VsZWN0b3JbZnVuY3Rpb25CdWlsZGVyU3ltYm9sXTtcbiAgICAgICAgbGV0IGJ1aWxkZXIgICAgICAgICAgICAgICAgICAgICAgICA9IGJ1aWxkZXJGcm9tU2VsZWN0b3IgfHwgYnVpbGRlckZyb21Qcm9taXNlT3JTbmFwc2hvdDtcblxuICAgICAgICBidWlsZGVyID0gYnVpbGRlciBpbnN0YW5jZW9mIFNlbGVjdG9yQnVpbGRlciA/IGJ1aWxkZXIgOiBudWxsO1xuXG4gICAgICAgIGlmIChidWlsZGVyKSB7XG4gICAgICAgICAgICBmbiA9IGJ1aWxkZXIuZm47XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zID09PSB2b2lkIDAgfHwgdHlwZW9mIG9wdGlvbnMgPT09ICdvYmplY3QnKVxuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBtZXJnZSh7fSwgYnVpbGRlci5vcHRpb25zLCBvcHRpb25zLCB7IHNvdXJjZVNlbGVjdG9yQnVpbGRlcjogYnVpbGRlciB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyKGZuLCBvcHRpb25zLCBjYWxsc2l0ZU5hbWVzKTtcblxuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5hcGlGbkNoYWluKSB7XG4gICAgICAgICAgICBjb25zdCBmblR5cGUgPSB0eXBlb2YgdGhpcy5mbjtcbiAgICAgICAgICAgIGxldCBpdGVtICAgICA9IGZuVHlwZSA9PT0gJ3N0cmluZycgPyBgJyR7dGhpcy5mbn0nYCA6IGBbJHtmblR5cGV9XWA7XG5cbiAgICAgICAgICAgIGl0ZW0gICAgICAgICAgICAgICAgICAgID0gYFNlbGVjdG9yKCR7aXRlbX0pYDtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hcGlGbiAgICAgID0gaXRlbTtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hcGlGbkNoYWluID0gW2l0ZW1dO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFwaUZuKVxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFwaUZuQ2hhaW4ucHVzaChhcGlGbik7XG5cbiAgICAgICAgdGhpcy5vcHRpb25zLmFwaUZuSUQgPSB0eXBlb2YgYXBpRm5JRCA9PT0gJ251bWJlcicgPyBhcGlGbklEIDogdGhpcy5vcHRpb25zLmFwaUZuQ2hhaW4ubGVuZ3RoIC0gMTtcbiAgICAgICAgdGhpcy5jYWxsc2l0ZSAgICAgICAgPSBjYWxsc2l0ZTtcbiAgICB9XG5cbiAgICBfZ2V0Q29tcGlsZWRGbkNvZGUgKCkge1xuICAgICAgICAvLyBPUFRJTUlaQVRJT046IGlmIHNlbGVjdG9yIHdhcyBwcm9kdWNlZCBmcm9tIGFub3RoZXIgc2VsZWN0b3IgYW5kXG4gICAgICAgIC8vIGl0IGhhcyBzYW1lIGRlcGVuZGVuY2llcyBhcyBzb3VyY2Ugc2VsZWN0b3IsIHRoZW4gd2UgY2FuXG4gICAgICAgIC8vIGF2b2lkIHJlY29tcGlsYXRpb24gYW5kIGp1c3QgcmUtdXNlIGFscmVhZHkgY29tcGlsZWQgY29kZS5cbiAgICAgICAgY29uc3QgaGFzU2FtZURlcGVuZGVuY2llc0FzU291cmNlU2VsZWN0b3IgPSB0aGlzLm9wdGlvbnMuc291cmNlU2VsZWN0b3JCdWlsZGVyICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnNvdXJjZVNlbGVjdG9yQnVpbGRlci5vcHRpb25zLmRlcGVuZGVuY2llcyA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuZGVwZW5kZW5jaWVzO1xuXG4gICAgICAgIGlmIChoYXNTYW1lRGVwZW5kZW5jaWVzQXNTb3VyY2VTZWxlY3RvcilcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc291cmNlU2VsZWN0b3JCdWlsZGVyLmNvbXBpbGVkRm5Db2RlO1xuXG4gICAgICAgIGNvbnN0IGNvZGUgPSB0eXBlb2YgdGhpcy5mbiA9PT0gJ3N0cmluZycgP1xuICAgICAgICAgICAgYChmdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCR7SlNPTi5zdHJpbmdpZnkodGhpcy5mbil9KTt9KTtgIDpcbiAgICAgICAgICAgIHN1cGVyLl9nZXRDb21waWxlZEZuQ29kZSgpO1xuXG4gICAgICAgIGlmIChjb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVkZW50KFxuICAgICAgICAgICAgICAgIGAoZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9fZiQ9JHtjb2RlfTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXJncyAgICAgICAgICAgPSBfX2RlcGVuZGVuY2llcyQuYm91bmRBcmdzIHx8IGFyZ3VtZW50cztcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RvckZpbHRlciA9IF9fZGVwZW5kZW5jaWVzJC5zZWxlY3RvckZpbHRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5vZGVzID0gX19mJC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzICAgICA9IHNlbGVjdG9yRmlsdGVyLmNhc3Qobm9kZXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGVzLmxlbmd0aCAmJiAhc2VsZWN0b3JGaWx0ZXIuZXJyb3IpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JGaWx0ZXIuZXJyb3IgPSBfX2RlcGVuZGVuY2llcyQuYXBpSW5mby5hcGlGbklEO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0b3JGaWx0ZXIuZmlsdGVyKG5vZGVzLCBfX2RlcGVuZGVuY2llcyQuZmlsdGVyT3B0aW9ucywgX19kZXBlbmRlbmNpZXMkLmFwaUluZm8pO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICB9KSgpO2BcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBfY3JlYXRlSW52YWxpZEZuVHlwZUVycm9yICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDbGllbnRGdW5jdGlvbkFQSUVycm9yKHRoaXMuY2FsbHNpdGVOYW1lcy5pbnN0YW50aWF0aW9uLCB0aGlzLmNhbGxzaXRlTmFtZXMuaW5zdGFudGlhdGlvbiwgUlVOVElNRV9FUlJPUlMuc2VsZWN0b3JJbml0aWFsaXplZFdpdGhXcm9uZ1R5cGUsIHR5cGVvZiB0aGlzLmZuKTtcbiAgICB9XG5cbiAgICBfZXhlY3V0ZUNvbW1hbmQgKGFyZ3MsIHRlc3RSdW4sIGNhbGxzaXRlKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdFByb21pc2UgPSBzdXBlci5fZXhlY3V0ZUNvbW1hbmQoYXJncywgdGVzdFJ1biwgdGhpcy5jYWxsc2l0ZSB8fCBjYWxsc2l0ZSk7XG5cbiAgICAgICAgdGhpcy5fYWRkQm91bmRBcmdzU2VsZWN0b3JHZXR0ZXIocmVzdWx0UHJvbWlzZSwgYXJncyk7XG5cbiAgICAgICAgLy8gT1BUSU1JWkFUSU9OOiB1c2UgYnVmZmVyIGZ1bmN0aW9uIGFzIHNlbGVjdG9yIG5vdCB0byB0cmlnZ2VyIGxhenkgcHJvcGVydHkgYWhlYWQgb2YgdGltZVxuICAgICAgICBhZGRBUEkocmVzdWx0UHJvbWlzZSwgKCkgPT4gcmVzdWx0UHJvbWlzZS5zZWxlY3RvciwgU2VsZWN0b3JCdWlsZGVyLCB0aGlzLm9wdGlvbnMuY3VzdG9tRE9NUHJvcGVydGllcywgdGhpcy5vcHRpb25zLmN1c3RvbU1ldGhvZHMpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHRQcm9taXNlO1xuICAgIH1cblxuICAgIF9nZXRTb3VyY2VTZWxlY3RvckJ1aWxkZXJBcGlGbklEICgpIHtcbiAgICAgICAgbGV0IHNlbGVjdG9yQW5jZXN0b3IgPSB0aGlzO1xuXG4gICAgICAgIHdoaWxlIChzZWxlY3RvckFuY2VzdG9yLm9wdGlvbnMuc291cmNlU2VsZWN0b3JCdWlsZGVyKVxuICAgICAgICAgICAgc2VsZWN0b3JBbmNlc3RvciA9IHNlbGVjdG9yQW5jZXN0b3Iub3B0aW9ucy5zb3VyY2VTZWxlY3RvckJ1aWxkZXI7XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdG9yQW5jZXN0b3Iub3B0aW9ucy5hcGlGbklEO1xuICAgIH1cblxuICAgIGdldEZ1bmN0aW9uRGVwZW5kZW5jaWVzICgpIHtcbiAgICAgICAgY29uc3QgZGVwZW5kZW5jaWVzID0gc3VwZXIuZ2V0RnVuY3Rpb25EZXBlbmRlbmNpZXMoKTtcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBmaWx0ZXJWaXNpYmxlLFxuICAgICAgICAgICAgZmlsdGVySGlkZGVuLFxuICAgICAgICAgICAgY291bnRlck1vZGUsXG4gICAgICAgICAgICBjb2xsZWN0aW9uTW9kZSxcbiAgICAgICAgICAgIGdldFZpc2libGVWYWx1ZU1vZGUsXG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIGN1c3RvbURPTVByb3BlcnRpZXMsXG4gICAgICAgICAgICBjdXN0b21NZXRob2RzLFxuICAgICAgICAgICAgYXBpRm5DaGFpbixcbiAgICAgICAgICAgIGJvdW5kQXJncyxcbiAgICAgICAgfSA9IHRoaXMub3B0aW9ucztcblxuICAgICAgICByZXR1cm4gbWVyZ2Uoe30sIGRlcGVuZGVuY2llcywge1xuICAgICAgICAgICAgZmlsdGVyT3B0aW9uczoge1xuICAgICAgICAgICAgICAgIGZpbHRlclZpc2libGUsXG4gICAgICAgICAgICAgICAgZmlsdGVySGlkZGVuLFxuICAgICAgICAgICAgICAgIGNvdW50ZXJNb2RlLFxuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25Nb2RlLFxuICAgICAgICAgICAgICAgIGluZGV4OiBpc051bGxPclVuZGVmaW5lZChpbmRleCkgPyBudWxsIDogaW5kZXgsXG4gICAgICAgICAgICAgICAgZ2V0VmlzaWJsZVZhbHVlTW9kZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhcGlJbmZvOiB7XG4gICAgICAgICAgICAgICAgYXBpRm5DaGFpbixcbiAgICAgICAgICAgICAgICBhcGlGbklEOiB0aGlzLl9nZXRTb3VyY2VTZWxlY3RvckJ1aWxkZXJBcGlGbklEKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYm91bmRBcmdzLFxuICAgICAgICAgICAgY3VzdG9tRE9NUHJvcGVydGllcyxcbiAgICAgICAgICAgIGN1c3RvbU1ldGhvZHMsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIF9jcmVhdGVUZXN0UnVuQ29tbWFuZCAoZW5jb2RlZEFyZ3MsIGVuY29kZWREZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBFeGVjdXRlU2VsZWN0b3JDb21tYW5kKHtcbiAgICAgICAgICAgIGluc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWU6IHRoaXMuY2FsbHNpdGVOYW1lcy5pbnN0YW50aWF0aW9uLFxuICAgICAgICAgICAgZm5Db2RlOiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21waWxlZEZuQ29kZSxcbiAgICAgICAgICAgIGFyZ3M6ICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRBcmdzLFxuICAgICAgICAgICAgZGVwZW5kZW5jaWVzOiAgICAgICAgICAgICAgZW5jb2RlZERlcGVuZGVuY2llcyxcbiAgICAgICAgICAgIG5lZWRFcnJvcjogICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5uZWVkRXJyb3IsXG4gICAgICAgICAgICBhcGlGbkNoYWluOiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuYXBpRm5DaGFpbixcbiAgICAgICAgICAgIHZpc2liaWxpdHlDaGVjazogICAgICAgICAgICEhdGhpcy5vcHRpb25zLnZpc2liaWxpdHlDaGVjayxcbiAgICAgICAgICAgIHRpbWVvdXQ6ICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy50aW1lb3V0LFxuICAgICAgICAgICAgc3RyaWN0RXJyb3I6ICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnN0cmljdEVycm9yLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBfdmFsaWRhdGVPcHRpb25zIChvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyLl92YWxpZGF0ZU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChvcHRpb25zLnZpc2liaWxpdHlDaGVjaykpXG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLmJvb2xlYW4sIHRoaXMuY2FsbHNpdGVOYW1lcy5pbnN0YW50aWF0aW9uLCAnVGhlIFwidmlzaWJpbGl0eUNoZWNrXCIgb3B0aW9uJywgb3B0aW9ucy52aXNpYmlsaXR5Q2hlY2spO1xuXG4gICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQob3B0aW9ucy50aW1lb3V0KSlcbiAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXIsIHRoaXMuY2FsbHNpdGVOYW1lcy5pbnN0YW50aWF0aW9uLCAnVGhlIFwidGltZW91dFwiIG9wdGlvbicsIG9wdGlvbnMudGltZW91dCk7XG4gICAgfVxuXG4gICAgX2dldFJlcGxpY2F0b3JUcmFuc2Zvcm1zICgpIHtcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtcyA9IHN1cGVyLl9nZXRSZXBsaWNhdG9yVHJhbnNmb3JtcygpO1xuXG4gICAgICAgIHRyYW5zZm9ybXMucHVzaChuZXcgU2VsZWN0b3JOb2RlVHJhbnNmb3JtKCkpO1xuXG4gICAgICAgIHJldHVybiB0cmFuc2Zvcm1zO1xuICAgIH1cblxuICAgIF9hZGRCb3VuZEFyZ3NTZWxlY3RvckdldHRlciAob2JqLCBzZWxlY3RvckFyZ3MpIHtcbiAgICAgICAgZGVmaW5lTGF6eVByb3BlcnR5KG9iaiwgJ3NlbGVjdG9yJywgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBTZWxlY3RvckJ1aWxkZXIodGhpcy5nZXRGdW5jdGlvbigpLCB7IGJvdW5kQXJnczogc2VsZWN0b3JBcmdzIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gYnVpbGRlci5nZXRGdW5jdGlvbigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBfZGVjb3JhdGVGdW5jdGlvbiAoc2VsZWN0b3JGbikge1xuICAgICAgICBzdXBlci5fZGVjb3JhdGVGdW5jdGlvbihzZWxlY3RvckZuKTtcblxuICAgICAgICBhZGRBUEkoXG4gICAgICAgICAgICBzZWxlY3RvckZuLFxuICAgICAgICAgICAgKCkgPT4gc2VsZWN0b3JGbixcbiAgICAgICAgICAgIFNlbGVjdG9yQnVpbGRlcixcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5jdXN0b21ET01Qcm9wZXJ0aWVzLFxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmN1c3RvbU1ldGhvZHMsXG4gICAgICAgICAgICB0aGlzLl9nZXRPYnNlcnZlZENhbGxzaXRlcygpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2dldENsaWVudEZuV2l0aE92ZXJyaWRkZW5PcHRpb25zIChvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IGFwaUZuICAgICAgICAgICAgICA9IHByZXBhcmVBcGlGbkFyZ3MoJ3dpdGgnLCBvcHRpb25zKTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNTZWxlY3RvcklEID0gdGhpcy5vcHRpb25zLmFwaUZuQ2hhaW4ubGVuZ3RoIC0gMTtcblxuICAgICAgICByZXR1cm4gc3VwZXIuX2dldENsaWVudEZuV2l0aE92ZXJyaWRkZW5PcHRpb25zKE9iamVjdC5hc3NpZ24ob3B0aW9ucywgeyBhcGlGbiwgYXBpRm5JRDogcHJldmlvdXNTZWxlY3RvcklEIH0pKTtcbiAgICB9XG5cbiAgICBfcHJvY2Vzc1Jlc3VsdCAocmVzdWx0LCBzZWxlY3RvckFyZ3MpIHtcbiAgICAgICAgY29uc3Qgc25hcHNob3QgPSBzdXBlci5fcHJvY2Vzc1Jlc3VsdChyZXN1bHQsIHNlbGVjdG9yQXJncyk7XG5cbiAgICAgICAgaWYgKHNuYXBzaG90ICYmICFyZXR1cm5TaW5nbGVQcm9wTW9kZSh0aGlzLm9wdGlvbnMpKSB7XG4gICAgICAgICAgICB0aGlzLl9hZGRCb3VuZEFyZ3NTZWxlY3RvckdldHRlcihzbmFwc2hvdCwgc2VsZWN0b3JBcmdzKTtcbiAgICAgICAgICAgIGNyZWF0ZVNuYXBzaG90TWV0aG9kcyhzbmFwc2hvdCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tTWV0aG9kcylcbiAgICAgICAgICAgICAgICBhZGRDdXN0b21NZXRob2RzKHNuYXBzaG90LCAoKSA9PiBzbmFwc2hvdC5zZWxlY3RvciwgU2VsZWN0b3JCdWlsZGVyLCB0aGlzLm9wdGlvbnMuY3VzdG9tTWV0aG9kcyk7XG5cbiAgICAgICAgICAgIGlmIChzZWxlY3RvckFwaUV4ZWN1dGlvbk1vZGUuaXNTeW5jKSB7XG4gICAgICAgICAgICAgICAgYWRkQVBJKFxuICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCxcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4gc25hcHNob3Quc2VsZWN0b3IsXG4gICAgICAgICAgICAgICAgICAgIFNlbGVjdG9yQnVpbGRlcixcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmN1c3RvbURPTVByb3BlcnRpZXMsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5jdXN0b21NZXRob2RzLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9nZXRPYnNlcnZlZENhbGxzaXRlcygpLFxuICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzbmFwc2hvdDtcbiAgICB9XG59XG5cbiJdfQ==
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3ItYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQtZnVuY3Rpb25zL3NlbGVjdG9ycy9zZWxlY3Rvci1idWlsZGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQTJEO0FBQzNELG9EQUE0QjtBQUM1Qix5RkFBK0Q7QUFDL0QsOENBQXNEO0FBQ3RELGtEQUE4RDtBQUM5RCx1RUFBc0Q7QUFDdEQsOENBQW9EO0FBQ3BELDBFQUFzRTtBQUN0RSxxRUFBNkU7QUFDN0UsNEZBQWtFO0FBQ2xFLHVDQUFxRDtBQUNyRCx3RkFBOEQ7QUFDOUQsMEVBQWtEO0FBQ2xELHlGQUE4RDtBQUM5RCwwRkFBZ0U7QUFFaEUsTUFBcUIsZUFBZ0IsU0FBUSxpQ0FBcUI7SUFDOUQsWUFBYSxFQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRO1FBQzdDLE1BQU0sS0FBSyxHQUEwQixPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQztRQUM5RCxNQUFNLE9BQU8sR0FBd0IsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDaEUsTUFBTSxtQkFBbUIsR0FBWSxFQUFFLElBQUksRUFBRSxDQUFDLHdCQUFxQixDQUFDLENBQUM7UUFDckUsTUFBTSw0QkFBNEIsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLHdCQUFxQixDQUFDLENBQUM7UUFDN0YsSUFBSSxPQUFPLEdBQTBCLG1CQUFtQixJQUFJLDRCQUE0QixDQUFDO1FBRXpGLE9BQU8sR0FBRyxPQUFPLFlBQVksZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUU5RCxJQUFJLE9BQU8sRUFBRTtZQUNULEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBRWhCLElBQUksT0FBTyxLQUFLLEtBQUssQ0FBQyxJQUFJLE9B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SSxDQUFDLElBQUEsaUNBQW9CLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2pELElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDekQsSUFBQSxpQ0FBcUIsRUFBQyxRQUFRLENBQUMsQ0FBQztZQUVoQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYTtnQkFDMUIsSUFBQSwwQkFBZ0IsRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN4RztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSjtBQTdNRCxrQ0E2TUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc05pbCBhcyBpc051bGxPclVuZGVmaW5lZCwgbWVyZ2UgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGRlZGVudCBmcm9tICdkZWRlbnQnO1xuaW1wb3J0IENsaWVudEZ1bmN0aW9uQnVpbGRlciBmcm9tICcuLi9jbGllbnQtZnVuY3Rpb24tYnVpbGRlcic7XG5pbXBvcnQgeyBTZWxlY3Rvck5vZGVUcmFuc2Zvcm0gfSBmcm9tICcuLi9yZXBsaWNhdG9yJztcbmltcG9ydCB7IENsaWVudEZ1bmN0aW9uQVBJRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgZnVuY3Rpb25CdWlsZGVyU3ltYm9sIGZyb20gJy4uL2J1aWxkZXItc3ltYm9sJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCB7IGFzc2VydFR5cGUsIGlzIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3J1bnRpbWUvdHlwZS1hc3NlcnRpb25zJztcbmltcG9ydCB7IEV4ZWN1dGVTZWxlY3RvckNvbW1hbmQgfSBmcm9tICcuLi8uLi90ZXN0LXJ1bi9jb21tYW5kcy9vYnNlcnZhdGlvbic7XG5pbXBvcnQgZGVmaW5lTGF6eVByb3BlcnR5IGZyb20gJy4uLy4uL3V0aWxzL2RlZmluZS1sYXp5LXByb3BlcnR5JztcbmltcG9ydCB7IGFkZEFQSSwgYWRkQ3VzdG9tTWV0aG9kcyB9IGZyb20gJy4vYWRkLWFwaSc7XG5pbXBvcnQgY3JlYXRlU25hcHNob3RNZXRob2RzIGZyb20gJy4vY3JlYXRlLXNuYXBzaG90LW1ldGhvZHMnO1xuaW1wb3J0IHByZXBhcmVBcGlGbkFyZ3MgZnJvbSAnLi9wcmVwYXJlLWFwaS1hcmdzJztcbmltcG9ydCByZXR1cm5TaW5nbGVQcm9wTW9kZSBmcm9tICcuLi9yZXR1cm4tc2luZ2xlLXByb3AtbW9kZSc7XG5pbXBvcnQgZXNjYXBlVW5zYWZlQ2hhcnMgZnJvbSAnLi4vLi4vdXRpbHMvZXNjYXBlLXVuc2FmZS1jaGFycyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlbGVjdG9yQnVpbGRlciBleHRlbmRzIENsaWVudEZ1bmN0aW9uQnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IgKGZuLCBvcHRpb25zLCBjYWxsc2l0ZU5hbWVzLCBjYWxsc2l0ZSkge1xuICAgICAgICBjb25zdCBhcGlGbiAgICAgICAgICAgICAgICAgICAgICAgID0gb3B0aW9ucyAmJiBvcHRpb25zLmFwaUZuO1xuICAgICAgICBjb25zdCBhcGlGbklEICAgICAgICAgICAgICAgICAgICAgID0gb3B0aW9ucyAmJiBvcHRpb25zLmFwaUZuSUQ7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXJGcm9tU2VsZWN0b3IgICAgICAgICAgPSBmbiAmJiBmbltmdW5jdGlvbkJ1aWxkZXJTeW1ib2xdO1xuICAgICAgICBjb25zdCBidWlsZGVyRnJvbVByb21pc2VPclNuYXBzaG90ID0gZm4gJiYgZm4uc2VsZWN0b3IgJiYgZm4uc2VsZWN0b3JbZnVuY3Rpb25CdWlsZGVyU3ltYm9sXTtcbiAgICAgICAgbGV0IGJ1aWxkZXIgICAgICAgICAgICAgICAgICAgICAgICA9IGJ1aWxkZXJGcm9tU2VsZWN0b3IgfHwgYnVpbGRlckZyb21Qcm9taXNlT3JTbmFwc2hvdDtcblxuICAgICAgICBidWlsZGVyID0gYnVpbGRlciBpbnN0YW5jZW9mIFNlbGVjdG9yQnVpbGRlciA/IGJ1aWxkZXIgOiBudWxsO1xuXG4gICAgICAgIGlmIChidWlsZGVyKSB7XG4gICAgICAgICAgICBmbiA9IGJ1aWxkZXIuZm47XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zID09PSB2b2lkIDAgfHwgdHlwZW9mIG9wdGlvbnMgPT09ICdvYmplY3QnKVxuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBtZXJnZSh7fSwgYnVpbGRlci5vcHRpb25zLCBvcHRpb25zLCB7IHNvdXJjZVNlbGVjdG9yQnVpbGRlcjogYnVpbGRlciB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyKGZuLCBvcHRpb25zLCBjYWxsc2l0ZU5hbWVzKTtcblxuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5hcGlGbkNoYWluKSB7XG4gICAgICAgICAgICBjb25zdCBmblR5cGUgPSB0eXBlb2YgdGhpcy5mbjtcbiAgICAgICAgICAgIGxldCBpdGVtICAgICA9IGZuVHlwZSA9PT0gJ3N0cmluZycgPyBgJyR7dGhpcy5mbn0nYCA6IGBbJHtmblR5cGV9XWA7XG5cbiAgICAgICAgICAgIGl0ZW0gICAgICAgICAgICAgICAgICAgID0gYFNlbGVjdG9yKCR7aXRlbX0pYDtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hcGlGbiAgICAgID0gaXRlbTtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hcGlGbkNoYWluID0gW2l0ZW1dO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFwaUZuKVxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFwaUZuQ2hhaW4ucHVzaChhcGlGbik7XG5cbiAgICAgICAgdGhpcy5vcHRpb25zLmFwaUZuSUQgPSB0eXBlb2YgYXBpRm5JRCA9PT0gJ251bWJlcicgPyBhcGlGbklEIDogdGhpcy5vcHRpb25zLmFwaUZuQ2hhaW4ubGVuZ3RoIC0gMTtcbiAgICAgICAgdGhpcy5jYWxsc2l0ZSAgICAgICAgPSBjYWxsc2l0ZTtcbiAgICB9XG5cbiAgICBfZ2V0Q29tcGlsZWRGbkNvZGUgKCkge1xuICAgICAgICAvLyBPUFRJTUlaQVRJT046IGlmIHNlbGVjdG9yIHdhcyBwcm9kdWNlZCBmcm9tIGFub3RoZXIgc2VsZWN0b3IgYW5kXG4gICAgICAgIC8vIGl0IGhhcyBzYW1lIGRlcGVuZGVuY2llcyBhcyBzb3VyY2Ugc2VsZWN0b3IsIHRoZW4gd2UgY2FuXG4gICAgICAgIC8vIGF2b2lkIHJlY29tcGlsYXRpb24gYW5kIGp1c3QgcmUtdXNlIGFscmVhZHkgY29tcGlsZWQgY29kZS5cbiAgICAgICAgY29uc3QgaGFzU2FtZURlcGVuZGVuY2llc0FzU291cmNlU2VsZWN0b3IgPSB0aGlzLm9wdGlvbnMuc291cmNlU2VsZWN0b3JCdWlsZGVyICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnNvdXJjZVNlbGVjdG9yQnVpbGRlci5vcHRpb25zLmRlcGVuZGVuY2llcyA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuZGVwZW5kZW5jaWVzO1xuXG4gICAgICAgIGlmIChoYXNTYW1lRGVwZW5kZW5jaWVzQXNTb3VyY2VTZWxlY3RvcilcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc291cmNlU2VsZWN0b3JCdWlsZGVyLmNvbXBpbGVkRm5Db2RlO1xuXG4gICAgICAgIGNvbnN0IGNvZGUgPSB0eXBlb2YgdGhpcy5mbiA9PT0gJ3N0cmluZycgP1xuICAgICAgICAgICAgYChmdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCR7ZXNjYXBlVW5zYWZlQ2hhcnMoSlNPTi5zdHJpbmdpZnkodGhpcy5mbikpfSk7fSk7YCA6XG4gICAgICAgICAgICBzdXBlci5fZ2V0Q29tcGlsZWRGbkNvZGUoKTtcblxuICAgICAgICBpZiAoY29kZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRlZGVudChcbiAgICAgICAgICAgICAgICBgKGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfX2YkPSR7Y29kZX07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFyZ3MgICAgICAgICAgID0gX19kZXBlbmRlbmNpZXMkLmJvdW5kQXJncyB8fCBhcmd1bWVudHM7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0b3JGaWx0ZXIgPSBfX2RlcGVuZGVuY2llcyQuc2VsZWN0b3JGaWx0ZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBub2RlcyA9IF9fZiQuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlcyAgICAgPSBzZWxlY3RvckZpbHRlci5jYXN0KG5vZGVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2Rlcy5sZW5ndGggJiYgIXNlbGVjdG9yRmlsdGVyLmVycm9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yRmlsdGVyLmVycm9yID0gX19kZXBlbmRlbmNpZXMkLmFwaUluZm8uYXBpRm5JRDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdG9yRmlsdGVyLmZpbHRlcihub2RlcywgX19kZXBlbmRlbmNpZXMkLmZpbHRlck9wdGlvbnMsIF9fZGVwZW5kZW5jaWVzJC5hcGlJbmZvKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgfSkoKTtgXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgX2NyZWF0ZUludmFsaWRGblR5cGVFcnJvciAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ2xpZW50RnVuY3Rpb25BUElFcnJvcih0aGlzLmNhbGxzaXRlTmFtZXMuaW5zdGFudGlhdGlvbiwgdGhpcy5jYWxsc2l0ZU5hbWVzLmluc3RhbnRpYXRpb24sIFJVTlRJTUVfRVJST1JTLnNlbGVjdG9ySW5pdGlhbGl6ZWRXaXRoV3JvbmdUeXBlLCB0eXBlb2YgdGhpcy5mbik7XG4gICAgfVxuXG4gICAgX2V4ZWN1dGVDb21tYW5kIChhcmdzLCB0ZXN0UnVuLCBjYWxsc2l0ZSkge1xuICAgICAgICBjb25zdCByZXN1bHRQcm9taXNlID0gc3VwZXIuX2V4ZWN1dGVDb21tYW5kKGFyZ3MsIHRlc3RSdW4sIHRoaXMuY2FsbHNpdGUgfHwgY2FsbHNpdGUpO1xuXG4gICAgICAgIHRoaXMuX2FkZEJvdW5kQXJnc1NlbGVjdG9yR2V0dGVyKHJlc3VsdFByb21pc2UsIGFyZ3MpO1xuXG4gICAgICAgIC8vIE9QVElNSVpBVElPTjogdXNlIGJ1ZmZlciBmdW5jdGlvbiBhcyBzZWxlY3RvciBub3QgdG8gdHJpZ2dlciBsYXp5IHByb3BlcnR5IGFoZWFkIG9mIHRpbWVcbiAgICAgICAgYWRkQVBJKHJlc3VsdFByb21pc2UsICgpID0+IHJlc3VsdFByb21pc2Uuc2VsZWN0b3IsIFNlbGVjdG9yQnVpbGRlciwgdGhpcy5vcHRpb25zLmN1c3RvbURPTVByb3BlcnRpZXMsIHRoaXMub3B0aW9ucy5jdXN0b21NZXRob2RzKTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0UHJvbWlzZTtcbiAgICB9XG5cbiAgICBfZ2V0U291cmNlU2VsZWN0b3JCdWlsZGVyQXBpRm5JRCAoKSB7XG4gICAgICAgIGxldCBzZWxlY3RvckFuY2VzdG9yID0gdGhpcztcblxuICAgICAgICB3aGlsZSAoc2VsZWN0b3JBbmNlc3Rvci5vcHRpb25zLnNvdXJjZVNlbGVjdG9yQnVpbGRlcilcbiAgICAgICAgICAgIHNlbGVjdG9yQW5jZXN0b3IgPSBzZWxlY3RvckFuY2VzdG9yLm9wdGlvbnMuc291cmNlU2VsZWN0b3JCdWlsZGVyO1xuXG4gICAgICAgIHJldHVybiBzZWxlY3RvckFuY2VzdG9yLm9wdGlvbnMuYXBpRm5JRDtcbiAgICB9XG5cbiAgICBnZXRGdW5jdGlvbkRlcGVuZGVuY2llcyAoKSB7XG4gICAgICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHN1cGVyLmdldEZ1bmN0aW9uRGVwZW5kZW5jaWVzKCk7XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgZmlsdGVyVmlzaWJsZSxcbiAgICAgICAgICAgIGZpbHRlckhpZGRlbixcbiAgICAgICAgICAgIGNvdW50ZXJNb2RlLFxuICAgICAgICAgICAgY29sbGVjdGlvbk1vZGUsXG4gICAgICAgICAgICBnZXRWaXNpYmxlVmFsdWVNb2RlLFxuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICBjdXN0b21ET01Qcm9wZXJ0aWVzLFxuICAgICAgICAgICAgY3VzdG9tTWV0aG9kcyxcbiAgICAgICAgICAgIGFwaUZuQ2hhaW4sXG4gICAgICAgICAgICBib3VuZEFyZ3MsXG4gICAgICAgIH0gPSB0aGlzLm9wdGlvbnM7XG5cbiAgICAgICAgcmV0dXJuIG1lcmdlKHt9LCBkZXBlbmRlbmNpZXMsIHtcbiAgICAgICAgICAgIGZpbHRlck9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGZpbHRlckhpZGRlbixcbiAgICAgICAgICAgICAgICBjb3VudGVyTW9kZSxcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uTW9kZSxcbiAgICAgICAgICAgICAgICBpbmRleDogaXNOdWxsT3JVbmRlZmluZWQoaW5kZXgpID8gbnVsbCA6IGluZGV4LFxuICAgICAgICAgICAgICAgIGdldFZpc2libGVWYWx1ZU1vZGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXBpSW5mbzoge1xuICAgICAgICAgICAgICAgIGFwaUZuQ2hhaW4sXG4gICAgICAgICAgICAgICAgYXBpRm5JRDogdGhpcy5fZ2V0U291cmNlU2VsZWN0b3JCdWlsZGVyQXBpRm5JRCgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJvdW5kQXJncyxcbiAgICAgICAgICAgIGN1c3RvbURPTVByb3BlcnRpZXMsXG4gICAgICAgICAgICBjdXN0b21NZXRob2RzLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBfY3JlYXRlVGVzdFJ1bkNvbW1hbmQgKGVuY29kZWRBcmdzLCBlbmNvZGVkRGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIHJldHVybiBuZXcgRXhlY3V0ZVNlbGVjdG9yQ29tbWFuZCh7XG4gICAgICAgICAgICBpbnN0YW50aWF0aW9uQ2FsbHNpdGVOYW1lOiB0aGlzLmNhbGxzaXRlTmFtZXMuaW5zdGFudGlhdGlvbixcbiAgICAgICAgICAgIGZuQ29kZTogICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGlsZWRGbkNvZGUsXG4gICAgICAgICAgICBhcmdzOiAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVkQXJncyxcbiAgICAgICAgICAgIGRlcGVuZGVuY2llczogICAgICAgICAgICAgIGVuY29kZWREZXBlbmRlbmNpZXMsXG4gICAgICAgICAgICBuZWVkRXJyb3I6ICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMubmVlZEVycm9yLFxuICAgICAgICAgICAgYXBpRm5DaGFpbjogICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmFwaUZuQ2hhaW4sXG4gICAgICAgICAgICB2aXNpYmlsaXR5Q2hlY2s6ICAgICAgICAgICAhIXRoaXMub3B0aW9ucy52aXNpYmlsaXR5Q2hlY2ssXG4gICAgICAgICAgICB0aW1lb3V0OiAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMudGltZW91dCxcbiAgICAgICAgICAgIHN0cmljdEVycm9yOiAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zdHJpY3RFcnJvcixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX3ZhbGlkYXRlT3B0aW9ucyAob3B0aW9ucykge1xuICAgICAgICBzdXBlci5fdmFsaWRhdGVPcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQob3B0aW9ucy52aXNpYmlsaXR5Q2hlY2spKVxuICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ib29sZWFuLCB0aGlzLmNhbGxzaXRlTmFtZXMuaW5zdGFudGlhdGlvbiwgJ1RoZSBcInZpc2liaWxpdHlDaGVja1wiIG9wdGlvbicsIG9wdGlvbnMudmlzaWJpbGl0eUNoZWNrKTtcblxuICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKG9wdGlvbnMudGltZW91dCkpXG4gICAgICAgICAgICBhc3NlcnRUeXBlKGlzLm5vbk5lZ2F0aXZlTnVtYmVyLCB0aGlzLmNhbGxzaXRlTmFtZXMuaW5zdGFudGlhdGlvbiwgJ1RoZSBcInRpbWVvdXRcIiBvcHRpb24nLCBvcHRpb25zLnRpbWVvdXQpO1xuICAgIH1cblxuICAgIF9nZXRSZXBsaWNhdG9yVHJhbnNmb3JtcyAoKSB7XG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybXMgPSBzdXBlci5fZ2V0UmVwbGljYXRvclRyYW5zZm9ybXMoKTtcblxuICAgICAgICB0cmFuc2Zvcm1zLnB1c2gobmV3IFNlbGVjdG9yTm9kZVRyYW5zZm9ybSgpKTtcblxuICAgICAgICByZXR1cm4gdHJhbnNmb3JtcztcbiAgICB9XG5cbiAgICBfYWRkQm91bmRBcmdzU2VsZWN0b3JHZXR0ZXIgKG9iaiwgc2VsZWN0b3JBcmdzKSB7XG4gICAgICAgIGRlZmluZUxhenlQcm9wZXJ0eShvYmosICdzZWxlY3RvcicsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgU2VsZWN0b3JCdWlsZGVyKHRoaXMuZ2V0RnVuY3Rpb24oKSwgeyBib3VuZEFyZ3M6IHNlbGVjdG9yQXJncyB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXIuZ2V0RnVuY3Rpb24oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX2RlY29yYXRlRnVuY3Rpb24gKHNlbGVjdG9yRm4pIHtcbiAgICAgICAgc3VwZXIuX2RlY29yYXRlRnVuY3Rpb24oc2VsZWN0b3JGbik7XG5cbiAgICAgICAgYWRkQVBJKFxuICAgICAgICAgICAgc2VsZWN0b3JGbixcbiAgICAgICAgICAgICgpID0+IHNlbGVjdG9yRm4sXG4gICAgICAgICAgICBTZWxlY3RvckJ1aWxkZXIsXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuY3VzdG9tRE9NUHJvcGVydGllcyxcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5jdXN0b21NZXRob2RzLFxuICAgICAgICAgICAgdGhpcy5fZ2V0T2JzZXJ2ZWRDYWxsc2l0ZXMoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIF9nZXRDbGllbnRGbldpdGhPdmVycmlkZGVuT3B0aW9ucyAob3B0aW9ucykge1xuICAgICAgICBjb25zdCBhcGlGbiAgICAgICAgICAgICAgPSBwcmVwYXJlQXBpRm5BcmdzKCd3aXRoJywgb3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzU2VsZWN0b3JJRCA9IHRoaXMub3B0aW9ucy5hcGlGbkNoYWluLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgcmV0dXJuIHN1cGVyLl9nZXRDbGllbnRGbldpdGhPdmVycmlkZGVuT3B0aW9ucyhPYmplY3QuYXNzaWduKG9wdGlvbnMsIHsgYXBpRm4sIGFwaUZuSUQ6IHByZXZpb3VzU2VsZWN0b3JJRCB9KSk7XG4gICAgfVxuXG4gICAgX3Byb2Nlc3NSZXN1bHQgKHJlc3VsdCwgc2VsZWN0b3JBcmdzKSB7XG4gICAgICAgIGNvbnN0IHNuYXBzaG90ID0gc3VwZXIuX3Byb2Nlc3NSZXN1bHQocmVzdWx0LCBzZWxlY3RvckFyZ3MpO1xuXG4gICAgICAgIGlmIChzbmFwc2hvdCAmJiAhcmV0dXJuU2luZ2xlUHJvcE1vZGUodGhpcy5vcHRpb25zKSkge1xuICAgICAgICAgICAgdGhpcy5fYWRkQm91bmRBcmdzU2VsZWN0b3JHZXR0ZXIoc25hcHNob3QsIHNlbGVjdG9yQXJncyk7XG4gICAgICAgICAgICBjcmVhdGVTbmFwc2hvdE1ldGhvZHMoc25hcHNob3QpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmN1c3RvbU1ldGhvZHMpXG4gICAgICAgICAgICAgICAgYWRkQ3VzdG9tTWV0aG9kcyhzbmFwc2hvdCwgKCkgPT4gc25hcHNob3Quc2VsZWN0b3IsIFNlbGVjdG9yQnVpbGRlciwgdGhpcy5vcHRpb25zLmN1c3RvbU1ldGhvZHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNuYXBzaG90O1xuICAgIH1cbn1cblxuIl19
|
|
@@ -28,8 +28,6 @@ function selectorTextFilter(node, index, originNode, textFilter) {
|
|
|
28
28
|
}
|
|
29
29
|
// Document
|
|
30
30
|
if (node.nodeType === 9) {
|
|
31
|
-
// NOTE: latest version of Edge doesn't have `innerText` for `document`,
|
|
32
|
-
// `html` and `body`. So we check their children instead.
|
|
33
31
|
const head = node.querySelector('head');
|
|
34
32
|
const body = node.querySelector('body');
|
|
35
33
|
return hasChildrenWithText(head, textFilter) || hasChildrenWithText(body, textFilter);
|
|
@@ -42,4 +40,4 @@ function selectorTextFilter(node, index, originNode, textFilter) {
|
|
|
42
40
|
exports.default = selectorTextFilter;
|
|
43
41
|
/* eslint-enable no-undef */
|
|
44
42
|
module.exports = exports.default;
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3ItdGV4dC1maWx0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpZW50LWZ1bmN0aW9ucy9zZWxlY3RvcnMvc2VsZWN0b3ItdGV4dC1maWx0ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGdFQUFnRTtBQUNoRSxnRUFBZ0U7QUFDaEUsK0NBQStDO0FBQy9DLGdFQUFnRTs7QUFFaEUsNkJBQTZCO0FBQzdCLFNBQXdCLGtCQUFrQixDQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVU7SUFFM0UsU0FBUyxtQkFBbUIsQ0FBRSxVQUFVO1FBQ3BDLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBRTdDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDOUIsSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDO2dCQUMzRSxPQUFPLElBQUksQ0FBQztTQUNuQjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxTQUFTLGFBQWEsQ0FBRSxJQUFJO1FBQ3hCLElBQUksVUFBVSxZQUFZLE1BQU07WUFDNUIsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sVUFBVSxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsVUFBVTtJQUNWLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLEVBQUU7UUFDckIsOERBQThEO1FBQzlELDhEQUE4RDtRQUM5RCx3REFBd0Q7UUFDeEQsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDNUQ7SUFFRCxXQUFXO0lBQ1gsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRTtRQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFeEMsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksbUJBQW1CLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQ3pGO0lBRUQsbUJBQW1CO0lBQ25CLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxFQUFFO1FBQ3BCLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRWpELE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBeENELHFDQXdDQztBQUNELDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFdBUk5JTkc6IHRoaXMgZmlsZSBpcyB1c2VkIGJ5IGJvdGggdGhlIGNsaWVudCBhbmQgdGhlIHNlcnZlci5cbi8vIERvIG5vdCB1c2UgYW55IGJyb3dzZXIgb3Igbm9kZS1zcGVjaWZpYyBBUEkhXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZWxlY3RvclRleHRGaWx0ZXIgKG5vZGUsIGluZGV4LCBvcmlnaW5Ob2RlLCB0ZXh0RmlsdGVyKSB7XG5cbiAgICBmdW5jdGlvbiBoYXNDaGlsZHJlbldpdGhUZXh0IChwYXJlbnROb2RlKSB7XG4gICAgICAgIGNvbnN0IGNuQ291bnQgPSBwYXJlbnROb2RlLmNoaWxkTm9kZXMubGVuZ3RoO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY25Db3VudDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0b3JUZXh0RmlsdGVyKHBhcmVudE5vZGUuY2hpbGROb2Rlc1tpXSwgaW5kZXgsIG9yaWdpbk5vZGUsIHRleHRGaWx0ZXIpKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNoZWNrTm9kZVRleHQgKHRleHQpIHtcbiAgICAgICAgaWYgKHRleHRGaWx0ZXIgaW5zdGFuY2VvZiBSZWdFeHApXG4gICAgICAgICAgICByZXR1cm4gdGV4dEZpbHRlci50ZXN0KHRleHQpO1xuICAgICAgICByZXR1cm4gdGV4dEZpbHRlciA9PT0gdGV4dC50cmltKCk7XG4gICAgfVxuXG4gICAgLy8gRWxlbWVudFxuICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICAgIC8vIE5PVEU6IEluIEZpcmVmb3gsIDxvcHRpb24+IGVsZW1lbnRzIGRvbid0IGhhdmUgYGlubmVyVGV4dGAuXG4gICAgICAgIC8vIFNvLCB3ZSBmYWxsYmFjayB0byBgdGV4dENvbnRlbnRgIGluIHRoYXQgY2FzZSAoc2VlIEdILTg2MSkuXG4gICAgICAgIC8vIFNWRyBlbGVtZW50cyBkbyBub3QgaGF2ZSBgaW5uZXJUZXh0YCBwcm9wZXJ0eSBhcyB3ZWxsXG4gICAgICAgIHJldHVybiBjaGVja05vZGVUZXh0KG5vZGUuaW5uZXJUZXh0IHx8IG5vZGUudGV4dENvbnRlbnQpO1xuICAgIH1cblxuICAgIC8vIERvY3VtZW50XG4gICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDkpIHtcbiAgICAgICAgY29uc3QgaGVhZCA9IG5vZGUucXVlcnlTZWxlY3RvcignaGVhZCcpO1xuICAgICAgICBjb25zdCBib2R5ID0gbm9kZS5xdWVyeVNlbGVjdG9yKCdib2R5Jyk7XG5cbiAgICAgICAgcmV0dXJuIGhhc0NoaWxkcmVuV2l0aFRleHQoaGVhZCwgdGV4dEZpbHRlcikgfHwgaGFzQ2hpbGRyZW5XaXRoVGV4dChib2R5LCB0ZXh0RmlsdGVyKTtcbiAgICB9XG5cbiAgICAvLyBEb2N1bWVudEZyYWdtZW50XG4gICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDExKVxuICAgICAgICByZXR1cm4gaGFzQ2hpbGRyZW5XaXRoVGV4dChub2RlLCB0ZXh0RmlsdGVyKTtcblxuICAgIHJldHVybiBjaGVja05vZGVUZXh0KG5vZGUudGV4dENvbnRlbnQpO1xufVxuLyogZXNsaW50LWVuYWJsZSBuby11bmRlZiAqL1xuIl19
|
|
@@ -45,7 +45,13 @@ class DevToolsTestFileCompiler extends compiler_1.default {
|
|
|
45
45
|
return super.compile(preprocessedCode, filename);
|
|
46
46
|
}
|
|
47
47
|
_preProcess(code, filename) {
|
|
48
|
-
|
|
48
|
+
let parsedCode = null;
|
|
49
|
+
try {
|
|
50
|
+
parsedCode = JSON.parse(code);
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
49
55
|
this._fixture.name = parsedCode.title;
|
|
50
56
|
this._test.name = parsedCode.title;
|
|
51
57
|
if (!parsedCode.steps)
|
|
@@ -74,4 +80,4 @@ class DevToolsTestFileCompiler extends compiler_1.default {
|
|
|
74
80
|
}
|
|
75
81
|
exports.default = DevToolsTestFileCompiler;
|
|
76
82
|
module.exports = exports.default;
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcGlsZXIvdGVzdC1maWxlL2Zvcm1hdHMvZGV2LXRvb2xzL2NvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0RBQWtEO0FBRWxELGdEQUErRDtBQUMvRCxrRUFBK0U7QUFDL0UsNEVBQXdGO0FBU3hGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDN0IsUUFBUSxFQUFFO1FBQ047WUFDSSxJQUFJLEVBQUcsYUFBYTtZQUNwQixLQUFLLEVBQUU7Z0JBQ0g7b0JBQ0ksSUFBSSxFQUFNLFVBQVU7b0JBQ3BCLFFBQVEsRUFBRSxFQUFFO2lCQUNmO2FBQ0o7U0FDSjtLQUNKO0NBQ0osQ0FBQyxDQUFDO0FBRUgsTUFBcUIsd0JBQXlCLFNBQVEsa0JBQW1CO0lBQXpFOztRQUNZLFFBQUcsR0FBaUIsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUM7SUF5RWpELENBQUM7SUF2RUcsU0FBUztRQUNMLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxxQkFBcUI7UUFDakIsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU8sQ0FBRSxJQUFZLEVBQUUsUUFBZ0I7UUFDbkMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWpDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFMUQsSUFBSSxDQUFDLGdCQUFnQjtZQUNqQixPQUFPLEVBQUUsQ0FBQztRQUVkLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsV0FBVyxDQUFFLElBQVksRUFBRSxRQUFnQjtRQUN2QyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFFdEIsSUFBSTtZQUNBLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pDO1FBQ0QsT0FBTyxHQUFHLEVBQUU7WUFDUixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBTSxVQUFVLENBQUMsS0FBSyxDQUFDO1FBRXRDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSztZQUNqQixPQUFPLElBQUksQ0FBQztRQUVoQixVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQTBCLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUxRyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUFZLENBQUUsSUFBMEIsRUFBRSxRQUFlLEVBQUUsQ0FBUztRQUNoRSxNQUFNLFdBQVcsR0FBRyxtQ0FBeUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV4RSxJQUFJLFdBQVcsRUFBRTtZQUNiLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQztJQUVELHVCQUF1QixDQUFFLElBQTBCO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUNYLE9BQU87UUFFWCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBaUIsQ0FBQztRQUV0QyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU07WUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksbURBQWdDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRCxzQkFBc0IsQ0FBRSxJQUEwQjtRQUM5QyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSw0REFBb0MsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM1RixDQUFDO0NBQ0o7QUExRUQsMkNBMEVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJhd1Rlc3RGaWxlQ29tcGlsZXIgZnJvbSAnLi4vcmF3L2NvbXBpbGVyJztcbmltcG9ydCBUZXN0IGZyb20gJy4uLy4uLy4uLy4uL2FwaS9zdHJ1Y3R1cmUvdGVzdCc7XG5pbXBvcnQgeyBDb21tYW5kVHJhbnNmb3JtZXJGYWN0b3J5IH0gZnJvbSAnLi9jb21tYW5kcy9mYWN0b3J5JztcbmltcG9ydCB7IFN3aXRjaFRvSWZyYW1lQ29tbWFuZFRyYW5zZm9ybWVyIH0gZnJvbSAnLi9jb21tYW5kcy9zd2l0Y2gtdG8taWZyYW1lJztcbmltcG9ydCB7IFN3aXRjaFRvTWFpbldpbmRvd0NvbW1hbmRUcmFuc2Zvcm1lciB9IGZyb20gJy4vY29tbWFuZHMvc3dpdGNoLXRvLW1haW4td2luZG93JztcblxuaW1wb3J0IHtcbiAgICBEZXZUb29sc1JlY29yZGVyU3RlcCxcbiAgICBSYXdGaXh0dXJlLFxuICAgIFJhd1JlY29yZGluZyxcbiAgICBSYXdUZXN0LFxufSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgVEVTVF9CQVNFID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgIGZpeHR1cmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICAnTmV3IEZpeHR1cmUnLFxuICAgICAgICAgICAgdGVzdHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICAgICAnTmV3IFRlc3QnLFxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kczogW10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgXSxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEZXZUb29sc1Rlc3RGaWxlQ29tcGlsZXIgZXh0ZW5kcyBSYXdUZXN0RmlsZUNvbXBpbGVyIHtcbiAgICBwcml2YXRlIHJhdzogUmF3UmVjb3JkaW5nID0geyBmaXh0dXJlczogW10gfTtcblxuICAgIF9oYXNUZXN0cyAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGdldCBfZml4dHVyZSAoKTogUmF3Rml4dHVyZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJhdy5maXh0dXJlc1swXTtcbiAgICB9XG5cbiAgICBnZXQgX3Rlc3QgKCk6IFJhd1Rlc3Qge1xuICAgICAgICByZXR1cm4gdGhpcy5fZml4dHVyZS50ZXN0c1swXTtcbiAgICB9XG5cbiAgICBnZXRTdXBwb3J0ZWRFeHRlbnNpb24gKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnLmpzb24nO1xuICAgIH1cblxuICAgIGNvbXBpbGUgKGNvZGU6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IFRlc3RbXSB7XG4gICAgICAgIHRoaXMucmF3ID0gSlNPTi5wYXJzZShURVNUX0JBU0UpO1xuXG4gICAgICAgIGNvbnN0IHByZXByb2Nlc3NlZENvZGUgPSB0aGlzLl9wcmVQcm9jZXNzKGNvZGUsIGZpbGVuYW1lKTtcblxuICAgICAgICBpZiAoIXByZXByb2Nlc3NlZENvZGUpXG4gICAgICAgICAgICByZXR1cm4gW107XG5cbiAgICAgICAgcmV0dXJuIHN1cGVyLmNvbXBpbGUocHJlcHJvY2Vzc2VkQ29kZSwgZmlsZW5hbWUpO1xuICAgIH1cblxuICAgIF9wcmVQcm9jZXNzIChjb2RlOiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgbGV0IHBhcnNlZENvZGUgPSBudWxsO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBwYXJzZWRDb2RlID0gSlNPTi5wYXJzZShjb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2ZpeHR1cmUubmFtZSA9IHBhcnNlZENvZGUudGl0bGU7XG4gICAgICAgIHRoaXMuX3Rlc3QubmFtZSAgICA9IHBhcnNlZENvZGUudGl0bGU7XG5cbiAgICAgICAgaWYgKCFwYXJzZWRDb2RlLnN0ZXBzKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgcGFyc2VkQ29kZS5zdGVwcy5mb3JFYWNoKChzdGVwOiBEZXZUb29sc1JlY29yZGVyU3RlcCwgaTogbnVtYmVyKSA9PiB0aGlzLl9wcm9jZXNzU3RlcChzdGVwLCBmaWxlbmFtZSwgaSkpO1xuXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLnJhdyk7XG4gICAgfVxuXG4gICAgX3Byb2Nlc3NTdGVwIChzdGVwOiBEZXZUb29sc1JlY29yZGVyU3RlcCwgZmlsZW5hbWU6c3RyaW5nLCBpOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtZXIgPSBDb21tYW5kVHJhbnNmb3JtZXJGYWN0b3J5LmNyZWF0ZShzdGVwLCBmaWxlbmFtZSwgaSk7XG5cbiAgICAgICAgaWYgKHRyYW5zZm9ybWVyKSB7XG4gICAgICAgICAgICB0aGlzLl9vbkJlZm9yZUNvbW1hbmRFeGVjdXRlKHN0ZXApO1xuICAgICAgICAgICAgdGhpcy5fdGVzdC5jb21tYW5kcy5wdXNoKHRyYW5zZm9ybWVyLnRyYW5zZm9ybSgpKTtcbiAgICAgICAgICAgIHRoaXMuX29uQWZ0ZXJDb21tYW5kRXhlY3V0ZShzdGVwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9vbkJlZm9yZUNvbW1hbmRFeGVjdXRlIChzdGVwOiBEZXZUb29sc1JlY29yZGVyU3RlcCk6IHZvaWQge1xuICAgICAgICBpZiAoIXN0ZXAuZnJhbWUpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgZnJhbWVzID0gc3RlcC5mcmFtZSBhcyBudW1iZXJbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGZyYW1lIG9mIGZyYW1lcylcbiAgICAgICAgICAgIHRoaXMuX3Rlc3QuY29tbWFuZHMucHVzaChuZXcgU3dpdGNoVG9JZnJhbWVDb21tYW5kVHJhbnNmb3JtZXIoeyBmcmFtZSB9LCAwKS50cmFuc2Zvcm0oKSk7XG4gICAgfVxuXG4gICAgX29uQWZ0ZXJDb21tYW5kRXhlY3V0ZSAoc3RlcDogRGV2VG9vbHNSZWNvcmRlclN0ZXApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGVzdC5jb21tYW5kcy5wdXNoKG5ldyBTd2l0Y2hUb01haW5XaW5kb3dDb21tYW5kVHJhbnNmb3JtZXIoc3RlcCwgMCkudHJhbnNmb3JtKCkpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -135,6 +135,7 @@ class TypeScriptTestFileCompiler extends api_based_1.default {
|
|
|
135
135
|
}
|
|
136
136
|
_compileFilesToCache(ts, filenames) {
|
|
137
137
|
const opts = this._tsConfig.getOptions();
|
|
138
|
+
filenames = filenames.map(name => TypeScriptTestFileCompiler._normalizeFilename(name));
|
|
138
139
|
const program = ts.createProgram([TypeScriptTestFileCompiler.tsDefsPath, ...filenames], opts);
|
|
139
140
|
DEBUG_LOGGER('version: %s', ts.version);
|
|
140
141
|
DEBUG_LOGGER('options: %O', opts);
|
|
@@ -202,4 +203,4 @@ class TypeScriptTestFileCompiler extends api_based_1.default {
|
|
|
202
203
|
exports.default = TypeScriptTestFileCompiler;
|
|
203
204
|
TypeScriptTestFileCompiler.tsDefsPath = TypeScriptTestFileCompiler._getTSDefsPath();
|
|
204
205
|
module.exports = exports.default;
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcGlsZXIvdGVzdC1maWxlL2Zvcm1hdHMvdHlwZXNjcmlwdC9jb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQXdCO0FBQ3hCLG1DQUFtQztBQUNuQywwREFBMkI7QUFDM0IsZ0VBQTJEO0FBQzNELG1FQUF5RDtBQUN6RCxrSEFBeUY7QUFDekYsd0RBQTBEO0FBQzFELG9EQUEwRDtBQUMxRCxrREFBMEI7QUFDMUIsaUVBQTJEO0FBQzNELDRGQUFpRTtBQUNqRSxzR0FBOEU7QUFFOUUsa0NBQWtDO0FBQ2xDLHlEQVdvQjtBQUlwQiwrREFBdUM7QUFJdkMsTUFBTSxTQUFTLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUM7QUFjckMsU0FBUywwQkFBMEIsQ0FBa0IsR0FBYTtJQUM5RCxPQUFPLE9BQU8sQ0FBQyxFQUFFO1FBQ2IsTUFBTSxLQUFLLEdBQVksQ0FBQyxJQUFJLEVBQXFCLEVBQUU7O1lBQy9DLGFBQWE7WUFDYixJQUFJLENBQUEsTUFBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxJQUFJLE1BQUssdUJBQVUsQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLHVCQUFVLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO2dCQUMxSCxNQUFNLE9BQU8sR0FBRyxJQUFBLGlDQUFvQixFQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUUxQyxPQUFPLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNqRDtZQUVELE9BQU8sSUFBQSwyQkFBYyxFQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBQSxzQkFBUyxFQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsU0FBUyxpQ0FBaUM7SUFDdEMsT0FBTyxHQUFHLEVBQUU7UUFDUixNQUFNLEtBQUssR0FBWSxDQUFDLElBQUksRUFBcUIsRUFBRTtZQUMvQyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUNwRixTQUFTLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQ2xDLEtBQUssQ0FBQyxFQUNOLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ3RDLENBQUMsQ0FBQztZQUVILE1BQU0sd0JBQXdCLEdBQUcsSUFBQSx1Q0FBMEIsRUFBQyxhQUFhLEVBQUUsdUJBQVUsQ0FBQyxzQkFBc0IsRUFBRSxzQ0FBNEIsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUVsSixhQUFhO1lBQ2IsT0FBTyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLHdCQUF3QixDQUFDLENBQUMsQ0FBQztRQUM1RixDQUFDLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBQSxzQkFBUyxFQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDLENBQUM7QUFDTixDQUFDO0FBR0QsTUFBTSxZQUFZLEdBQUcsSUFBQSxlQUFLLEVBQUMsOEJBQThCLENBQUMsQ0FBQztBQUUzRCxNQUFNLHdCQUF3QixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsSUFBQSxpQ0FBb0IsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRWpGLE1BQU0sZ0NBQWdDLEdBQUcsWUFBWSxDQUFDO0FBRXRELE1BQXFCLDBCQUEyQixTQUFRLG1CQUE0QjtJQU9oRixZQUFvQixlQUEyQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBZ0MsRUFBRTtRQUM3RyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUV4QixpRkFBaUY7UUFDakYsdURBQXVEO1FBQ3ZELCtGQUErRjtRQUMvRixvQ0FBb0M7UUFDcEMsdUVBQXVFO1FBRXZFLE1BQU0sVUFBVSxHQUFHLGVBQWUsSUFBSSxlQUFlLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQztRQUV6RSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsZUFBZSxJQUFJLGVBQWUsQ0FBQyxPQUFPLENBQUM7UUFDekUsSUFBSSxDQUFDLFNBQVMsR0FBZ0IsSUFBSSxrQ0FBdUIsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLGFBQWEsR0FBWSwwQkFBMEIsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRU8sTUFBTSxDQUFDLGdCQUFnQixDQUFFLGVBQTJDO1FBQ3hFLElBQUksWUFBWSxHQUFHLGVBQWUsSUFBSSxlQUFlLENBQUMsd0JBQXdCLENBQUM7UUFFL0UsSUFBSSxDQUFDLFlBQVksSUFBSSxZQUFZLEtBQUssZ0NBQWdDO1lBQ2xFLE9BQU8sZ0NBQWdDLENBQUM7UUFFNUMsK0VBQStFO1FBQy9FLHVFQUF1RTtRQUN2RSxJQUFJLElBQUEsMEJBQVUsRUFBQyxZQUFZLENBQUMsRUFBRTtZQUMxQixNQUFNLGtCQUFrQixHQUFHLGNBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFFdEUsWUFBWSxHQUFHLGNBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsWUFBWSxDQUFDLENBQUM7U0FDakU7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRU8sdUJBQXVCO1FBQzNCLElBQUk7WUFDQSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDdEM7UUFDRCxPQUFPLEdBQVEsRUFBRTtZQUNiLE1BQU0sSUFBSSxzQkFBWSxDQUFDLHNCQUFjLENBQUMsOEJBQThCLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3RGO0lBQ0wsQ0FBQztJQUVPLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBRSxRQUFnQjtRQUMvQyxRQUFRLEdBQUcsY0FBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVsQyxJQUFJLG1CQUFFLENBQUMsR0FBRztZQUNOLFFBQVEsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFdEMsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxjQUFjO1FBQ3pCLE9BQU8sMEJBQTBCLENBQUMsa0JBQWtCLENBQUMsY0FBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsbUNBQW1DLENBQUMsQ0FBQyxDQUFDO0lBQ3ZILENBQUM7SUFFTyxhQUFhLENBQUUsV0FBOEM7UUFDakUsK0JBQStCO1FBQy9CLE1BQU0sRUFBRSxHQUF1QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUM5RCxJQUFJLE1BQU0sR0FBRyxrQ0FBa0MsQ0FBQztRQUVoRCxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3BCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sSUFBSSxHQUFNLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFFdkIsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsRUFBRTtnQkFDNUIsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUV4RSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksR0FBRyxDQUFDLEtBQUssU0FBUyxHQUFHLENBQUMsS0FBSyxDQUFDO2FBQ2xFO1lBRUQsTUFBTSxJQUFJLEdBQUcsT0FBTyxJQUFJLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSx3QkFBd0IsQ0FBRSxhQUE2QjtRQUMxRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQzthQUNsRCxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1AsT0FBTyxLQUFLLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sb0JBQW9CLENBQUUsRUFBc0IsRUFBRSxTQUFtQjtRQUNyRSxNQUFNLElBQUksR0FBTSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBc0MsQ0FBQztRQUNoRixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsMEJBQTBCLENBQUMsVUFBVSxFQUFFLEdBQUcsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFOUYsWUFBWSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEMsWUFBWSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVsQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzFDLHlFQUF5RTtZQUN6RSxVQUFVLENBQUMsbUJBQW1CLEdBQUcsd0JBQXdCLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEQsSUFBSSxXQUFXLENBQUMsTUFBTTtZQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXBDLHNHQUFzRztRQUN0RyxnSEFBZ0g7UUFDaEgsb0dBQW9HO1FBQ3BHLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDcEUsSUFBSSxDQUFDLE9BQU87Z0JBQ1IsT0FBTztZQUVYLE1BQU0sVUFBVSxHQUFHLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV0RixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUNwQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDZixNQUFNLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixFQUFFO1NBQzVDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTywwQkFBMEI7UUFDOUIsTUFBTSxZQUFZLEdBQXFDLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFOUYsSUFBSSxJQUFJLENBQUMsR0FBRztZQUNSLFlBQVksQ0FBQyxJQUFJLENBQUMsaUNBQWlDLEVBQUUsQ0FBQyxDQUFDO1FBRTNELE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxlQUFlLENBQUUsYUFBNkI7UUFDakQsWUFBWSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFL0MsK0JBQStCO1FBQy9CLE1BQU0sRUFBRSxHQUF1QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUM5RCxNQUFNLFNBQVMsR0FBZ0IsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sbUJBQW1CLEdBQU0sU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDbEgsTUFBTSxzQkFBc0IsR0FBRyxJQUFBLGtCQUFTLEVBQUMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFekUsTUFBTSxhQUFhLEdBQUcsbUJBQW1CO2FBQ3BDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsS0FBSywwQkFBMEIsQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQy9GLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFdkQsSUFBSSxhQUFhLENBQUMsTUFBTTtZQUNwQixJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRWpELE9BQU8sbUJBQW1CLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTSxvQkFBb0I7UUFDdkIsTUFBTSxnQkFBZ0IsR0FBcUI7WUFDdkMsQ0FBQyxvQkFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO1lBQ3ZFLENBQUMsb0JBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztZQUN2RSxDQUFDLG9CQUFVLENBQUMsRUFBRSxDQUFDLEVBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxrQkFBc0IsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQztZQUM5RyxDQUFDLG9CQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxrQkFBc0IsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQztZQUM5RyxDQUFDLG9CQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxrQkFBc0IsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQztTQUNqSCxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsR0FBRztZQUNSLGdCQUFnQixDQUFDLG9CQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxrQkFBc0IsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRXBJLE9BQU8sZ0JBQWdCLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsYUFBYTtRQUNwQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBVyxlQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxxQkFBcUI7UUFDeEIsT0FBTyxDQUFDLG9CQUFVLENBQUMsRUFBRSxFQUFFLG9CQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7QUEvS0wsNkNBZ0xDO0FBL0trQixxQ0FBVSxHQUFHLDBCQUEwQixDQUFDLGNBQWMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyB6aXBPYmplY3QgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IE9TIGZyb20gJ29zLWZhbWlseSc7XG5pbXBvcnQgQVBJQmFzZWRUZXN0RmlsZUNvbXBpbGVyQmFzZSBmcm9tICcuLi8uLi9hcGktYmFzZWQnO1xuaW1wb3J0IEVTTmV4dFRlc3RGaWxlQ29tcGlsZXIgZnJvbSAnLi4vZXMtbmV4dC9jb21waWxlcic7XG5pbXBvcnQgVHlwZXNjcmlwdENvbmZpZ3VyYXRpb24gZnJvbSAnLi4vLi4vLi4vLi4vY29uZmlndXJhdGlvbi90eXBlc2NyaXB0LWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgR2VuZXJhbEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi8uLi8uLi8uLi9lcnJvcnMvdHlwZXMnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IGlzUmVsYXRpdmUgfSBmcm9tICcuLi8uLi8uLi8uLi9hcGkvdGVzdC1wYWdlLXVybCc7XG5pbXBvcnQgZ2V0RXhwb3J0YWJsZUxpYlBhdGggZnJvbSAnLi4vLi4vZ2V0LWV4cG9ydGFibGUtbGliLXBhdGgnO1xuaW1wb3J0IERJU0FCTEVfVjhfT1BUSU1JWkFUSU9OX05PVEUgZnJvbSAnLi4vLi4vZGlzYWJsZS12OC1vcHRpbWl6YXRpb24tbm90ZSc7XG5cbi8vIE5PVEU6IEZvciB0eXBlIGRlZmluaXRpb25zIG9ubHlcbmltcG9ydCBUeXBlU2NyaXB0LCB7XG4gICAgQ29tcGlsZXJPcHRpb25zVmFsdWUsXG4gICAgU3ludGF4S2luZCxcbiAgICBWaXNpdFJlc3VsdCxcbiAgICBWaXNpdG9yLFxuICAgIE5vZGUsXG4gICAgdmlzaXRFYWNoQ2hpbGQsXG4gICAgdmlzaXROb2RlLFxuICAgIFRyYW5zZm9ybWVyRmFjdG9yeSxcbiAgICBTb3VyY2VGaWxlLFxuICAgIGFkZFN5bnRoZXRpY0xlYWRpbmdDb21tZW50LFxufSBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHsgRGljdGlvbmFyeSwgVHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBPcHRpb25hbENvbXBpbGVyQXJndW1lbnRzIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgRXh0ZW5zaW9ucyBmcm9tICcuLi9leHRlbnNpb25zJztcblxuZGVjbGFyZSB0eXBlIFR5cGVTY3JpcHRJbnN0YW5jZSA9IHR5cGVvZiBUeXBlU2NyaXB0O1xuXG5jb25zdCB0c0ZhY3RvcnkgPSBUeXBlU2NyaXB0LmZhY3Rvcnk7XG5cbmludGVyZmFjZSBUZXN0RmlsZUluZm8ge1xuICAgIGZpbGVuYW1lOiBzdHJpbmc7XG59XG5cbmRlY2xhcmUgaW50ZXJmYWNlIFJlcXVpcmVDb21waWxlckZ1bmN0aW9uIHtcbiAgICAoY29kZTogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgUmVxdWlyZUNvbXBpbGVycyB7XG4gICAgW2V4dGVuc2lvbjogc3RyaW5nXTogUmVxdWlyZUNvbXBpbGVyRnVuY3Rpb247XG59XG5cbmZ1bmN0aW9uIHRlc3RjYWZlSW1wb3J0UGF0aFJlcGxhY2VyPFQgZXh0ZW5kcyBOb2RlPiAoZXNtPzogYm9vbGVhbik6IFRyYW5zZm9ybWVyRmFjdG9yeTxUPiB7XG4gICAgcmV0dXJuIGNvbnRleHQgPT4ge1xuICAgICAgICBjb25zdCB2aXNpdDogVmlzaXRvciA9IChub2RlKTogVmlzaXRSZXN1bHQ8Tm9kZT4gPT4ge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgaWYgKG5vZGUucGFyZW50Py5raW5kID09PSBTeW50YXhLaW5kLkltcG9ydERlY2xhcmF0aW9uICYmIG5vZGUua2luZCA9PT0gU3ludGF4S2luZC5TdHJpbmdMaXRlcmFsICYmIG5vZGUudGV4dCA9PT0gJ3Rlc3RjYWZlJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpYlBhdGggPSBnZXRFeHBvcnRhYmxlTGliUGF0aChlc20pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRzRmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKGxpYlBhdGgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdmlzaXRFYWNoQ2hpbGQobm9kZSwgY2hpbGQgPT4gdmlzaXQoY2hpbGQpLCBjb250ZXh0KTtcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gbm9kZSA9PiB2aXNpdE5vZGUobm9kZSwgdmlzaXQpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGRpc2FibGVWOE9wdGltaXphdGlvbkNvZGVBcHBlbmRlcjxUIGV4dGVuZHMgTm9kZT4gKCk6IFRyYW5zZm9ybWVyRmFjdG9yeTxUPiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY29uc3QgdmlzaXQ6IFZpc2l0b3IgPSAobm9kZSk6IFZpc2l0UmVzdWx0PE5vZGU+ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV2YWxTdGF0ZW1lbnQgPSB0c0ZhY3RvcnkuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudCh0c0ZhY3RvcnkuY3JlYXRlQ2FsbEV4cHJlc3Npb24oXG4gICAgICAgICAgICAgICAgdHNGYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIoJ2V2YWwnKSxcbiAgICAgICAgICAgICAgICB2b2lkIDAsXG4gICAgICAgICAgICAgICAgW3RzRmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKCcnKV1cbiAgICAgICAgICAgICkpO1xuXG4gICAgICAgICAgICBjb25zdCBldmFsU3RhdGVtZW50V2l0aENvbW1lbnQgPSBhZGRTeW50aGV0aWNMZWFkaW5nQ29tbWVudChldmFsU3RhdGVtZW50LCBTeW50YXhLaW5kLk11bHRpTGluZUNvbW1lbnRUcml2aWEsIERJU0FCTEVfVjhfT1BUSU1JWkFUSU9OX05PVEUsIHRydWUpO1xuXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gdHNGYWN0b3J5LnVwZGF0ZVNvdXJjZUZpbGUobm9kZSwgWy4uLm5vZGUuc3RhdGVtZW50cywgZXZhbFN0YXRlbWVudFdpdGhDb21tZW50XSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG5vZGUgPT4gdmlzaXROb2RlKG5vZGUsIHZpc2l0KTtcbiAgICB9O1xufVxuXG5cbmNvbnN0IERFQlVHX0xPR0dFUiA9IGRlYnVnKCd0ZXN0Y2FmZTpjb21waWxlcjp0eXBlc2NyaXB0Jyk7XG5cbmNvbnN0IFJFTkFNRURfREVQRU5ERU5DSUVTX01BUCA9IG5ldyBNYXAoW1sndGVzdGNhZmUnLCBnZXRFeHBvcnRhYmxlTGliUGF0aCgpXV0pO1xuXG5jb25zdCBERUZBVUxUX1RZUEVTQ1JJUFRfQ09NUElMRVJfUEFUSCA9ICd0eXBlc2NyaXB0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVHlwZVNjcmlwdFRlc3RGaWxlQ29tcGlsZXIgZXh0ZW5kcyBBUElCYXNlZFRlc3RGaWxlQ29tcGlsZXJCYXNlIHtcbiAgICBwcml2YXRlIHN0YXRpYyB0c0RlZnNQYXRoID0gVHlwZVNjcmlwdFRlc3RGaWxlQ29tcGlsZXIuX2dldFRTRGVmc1BhdGgoKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RzQ29uZmlnOiBUeXBlc2NyaXB0Q29uZmlndXJhdGlvbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb21waWxlclBhdGg6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jdXN0b21Db21waWxlck9wdGlvbnM/OiBvYmplY3Q7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGNvbXBpbGVyT3B0aW9ucz86IFR5cGVTY3JpcHRDb21waWxlck9wdGlvbnMsIHsgYmFzZVVybCwgZXNtIH06IE9wdGlvbmFsQ29tcGlsZXJBcmd1bWVudHMgPSB7fSkge1xuICAgICAgICBzdXBlcih7IGJhc2VVcmwsIGVzbSB9KTtcblxuICAgICAgICAvLyBOT1RFOiBBdCBwcmVzZW50LCBpdCdzIG5lY2Vzc2FyeSBjcmVhdGUgYW4gaW5zdGFuY2UgVHlwZVNjcmlwdFRlc3RGaWxlQ29tcGlsZXJcbiAgICAgICAgLy8gdG8gY29sbGVjdCBhIGxpc3Qgb2Ygc3VwcG9ydGVkIHRlc3QgZmlsZSBleHRlbnNpb25zLlxuICAgICAgICAvLyBTbyBhbGwgY29tcGlsZXJzIGNyZWF0ZXMgMiB0aW1lczogZmlyc3QgdGltZSAtIGZvciBjb2xsZWN0aW5nIGFsbCBzdXBwb3J0ZWQgZmlsZSBleHRlbnNpb25zLFxuICAgICAgICAvLyBzZWNvbmQgb25lIC0gZm9yIGNvbXBpbGluZyB0ZXN0cy5cbiAgICAgICAgLy8gSW4gZnV0dXJlLCBuZWVkIHRvIHJld3JpdGUgJ2dldFN1cHBvcnRlZEV4dGVuc2lvbicgbWV0aG9kIGFzIHN0YXRpYy5cblxuICAgICAgICBjb25zdCBjb25maWdQYXRoID0gY29tcGlsZXJPcHRpb25zICYmIGNvbXBpbGVyT3B0aW9ucy5jb25maWdQYXRoIHx8IG51bGw7XG5cbiAgICAgICAgdGhpcy5fY3VzdG9tQ29tcGlsZXJPcHRpb25zID0gY29tcGlsZXJPcHRpb25zICYmIGNvbXBpbGVyT3B0aW9ucy5vcHRpb25zO1xuICAgICAgICB0aGlzLl90c0NvbmZpZyAgICAgICAgICAgICAgPSBuZXcgVHlwZXNjcmlwdENvbmZpZ3VyYXRpb24oY29uZmlnUGF0aCwgZXNtKTtcbiAgICAgICAgdGhpcy5fY29tcGlsZXJQYXRoICAgICAgICAgID0gVHlwZVNjcmlwdFRlc3RGaWxlQ29tcGlsZXIuX2dldENvbXBpbGVyUGF0aChjb21waWxlck9wdGlvbnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9nZXRDb21waWxlclBhdGggKGNvbXBpbGVyT3B0aW9ucz86IFR5cGVTY3JpcHRDb21waWxlck9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICBsZXQgY29tcGlsZXJQYXRoID0gY29tcGlsZXJPcHRpb25zICYmIGNvbXBpbGVyT3B0aW9ucy5jdXN0b21Db21waWxlck1vZHVsZVBhdGg7XG5cbiAgICAgICAgaWYgKCFjb21waWxlclBhdGggfHwgY29tcGlsZXJQYXRoID09PSBERUZBVUxUX1RZUEVTQ1JJUFRfQ09NUElMRVJfUEFUSClcbiAgICAgICAgICAgIHJldHVybiBERUZBVUxUX1RZUEVTQ1JJUFRfQ09NUElMRVJfUEFUSDtcblxuICAgICAgICAvLyBOT1RFOiBpZiB0aGUgcmVsYXRpdmUgcGF0aCB0byBjdXN0b20gVHlwZVNjcmlwdCBjb21waWxlciBtb2R1bGUgaXMgc3BlY2lmaWVkXG4gICAgICAgIC8vIHRoZW4gd2Ugd2lsbCByZXNvbHZlIHRoZSBwYXRoIGZyb20gdGhlIHJvb3Qgb2YgdGhlICd0ZXN0Y2FmZScgbW9kdWxlXG4gICAgICAgIGlmIChpc1JlbGF0aXZlKGNvbXBpbGVyUGF0aCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHRlc3RjYWZlUm9vdEZvbGRlciA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLi8uLi8uLi8uLi8uLi8nKTtcblxuICAgICAgICAgICAgY29tcGlsZXJQYXRoID0gcGF0aC5yZXNvbHZlKHRlc3RjYWZlUm9vdEZvbGRlciwgY29tcGlsZXJQYXRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb21waWxlclBhdGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbG9hZFR5cGVTY3JpcHRDb21waWxlciAoKTogVHlwZVNjcmlwdEluc3RhbmNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiByZXF1aXJlKHRoaXMuX2NvbXBpbGVyUGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLnR5cGVTY3JpcHRDb21waWxlckxvYWRpbmdFcnJvciwgZXJyLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX25vcm1hbGl6ZUZpbGVuYW1lIChmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgZmlsZW5hbWUgPSBwYXRoLnJlc29sdmUoZmlsZW5hbWUpO1xuXG4gICAgICAgIGlmIChPUy53aW4pXG4gICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgcmV0dXJuIGZpbGVuYW1lO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9nZXRUU0RlZnNQYXRoICgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gVHlwZVNjcmlwdFRlc3RGaWxlQ29tcGlsZXIuX25vcm1hbGl6ZUZpbGVuYW1lKHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLi8uLi8uLi8uLi8uLi90cy1kZWZzL2luZGV4LmQudHMnKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVwb3J0RXJyb3JzIChkaWFnbm9zdGljczogUmVhZG9ubHk8VHlwZVNjcmlwdC5EaWFnbm9zdGljW10+KTogdm9pZCB7XG4gICAgICAgIC8vIE5PVEU6IGxhenkgbG9hZCB0aGUgY29tcGlsZXJcbiAgICAgICAgY29uc3QgdHM6IFR5cGVTY3JpcHRJbnN0YW5jZSA9IHRoaXMuX2xvYWRUeXBlU2NyaXB0Q29tcGlsZXIoKTtcbiAgICAgICAgbGV0IGVyck1zZyA9ICdUeXBlU2NyaXB0IGNvbXBpbGF0aW9uIGZhaWxlZC5cXG4nO1xuXG4gICAgICAgIGRpYWdub3N0aWNzLmZvckVhY2goZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdHMuZmxhdHRlbkRpYWdub3N0aWNNZXNzYWdlVGV4dChkLm1lc3NhZ2VUZXh0LCAnXFxuJyk7XG4gICAgICAgICAgICBjb25zdCBmaWxlICAgID0gZC5maWxlO1xuXG4gICAgICAgICAgICBpZiAoZmlsZSAmJiBkLnN0YXJ0ICE9PSB2b2lkIDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGxpbmUsIGNoYXJhY3RlciB9ID0gZmlsZS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihkLnN0YXJ0KTtcblxuICAgICAgICAgICAgICAgIGVyck1zZyArPSBgJHtmaWxlLmZpbGVOYW1lfSAoJHtsaW5lICsgMX0sICR7Y2hhcmFjdGVyICsgMX0pOiBgO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBlcnJNc2cgKz0gYCR7bWVzc2FnZX1cXG5gO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyTXNnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgX2NvbXBpbGVDb2RlRm9yVGVzdEZpbGVzICh0ZXN0RmlsZXNJbmZvOiBUZXN0RmlsZUluZm9bXSk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RzQ29uZmlnLmluaXQodGhpcy5fY3VzdG9tQ29tcGlsZXJPcHRpb25zKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5fY29tcGlsZUNvZGVGb3JUZXN0RmlsZXModGVzdEZpbGVzSW5mbyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jb21waWxlRmlsZXNUb0NhY2hlICh0czogVHlwZVNjcmlwdEluc3RhbmNlLCBmaWxlbmFtZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9wdHMgICAgPSB0aGlzLl90c0NvbmZpZy5nZXRPcHRpb25zKCkgYXMgRGljdGlvbmFyeTxDb21waWxlck9wdGlvbnNWYWx1ZT47XG4gICAgICAgIGNvbnN0IHByb2dyYW0gPSB0cy5jcmVhdGVQcm9ncmFtKFtUeXBlU2NyaXB0VGVzdEZpbGVDb21waWxlci50c0RlZnNQYXRoLCAuLi5maWxlbmFtZXNdLCBvcHRzKTtcblxuICAgICAgICBERUJVR19MT0dHRVIoJ3ZlcnNpb246ICVzJywgdHMudmVyc2lvbik7XG4gICAgICAgIERFQlVHX0xPR0dFUignb3B0aW9uczogJU8nLCBvcHRzKTtcblxuICAgICAgICBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkuZm9yRWFjaChzb3VyY2VGaWxlID0+IHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgQSBoYWNrIHRvIGFsbG93IGltcG9ydCBnbG9iYWxseSBpbnN0YWxsZWQgVGVzdENhZmUgaW4gdGVzdHNcbiAgICAgICAgICAgIHNvdXJjZUZpbGUucmVuYW1lZERlcGVuZGVuY2llcyA9IFJFTkFNRURfREVQRU5ERU5DSUVTX01BUDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgZGlhZ25vc3RpY3MgPSB0cy5nZXRQcmVFbWl0RGlhZ25vc3RpY3MocHJvZ3JhbSk7XG5cbiAgICAgICAgaWYgKGRpYWdub3N0aWNzLmxlbmd0aClcbiAgICAgICAgICAgIHRoaXMuX3JlcG9ydEVycm9ycyhkaWFnbm9zdGljcyk7XG5cbiAgICAgICAgLy8gTk9URTogVGhlIGZpcnN0IGFyZ3VtZW50IG9mIGVtaXQoKSBpcyBhIHNvdXJjZSBmaWxlIHRvIGJlIGNvbXBpbGVkLiBJZiBpdCdzIHVuZGVmaW5lZCwgYWxsIGZpbGVzIGluXG4gICAgICAgIC8vIDxwcm9ncmFtPiB3aWxsIGJlIGNvbXBpbGVkLiA8cHJvZ3JhbT4gY29udGFpbnMgYSBmaWxlIHNwZWNpZmllZCBpbiBjcmVhdGVQcm9ncmFtKCkgcGx1cyBhbGwgaXRzIGRlcGVuZGVuY2llcy5cbiAgICAgICAgLy8gVGhpcyBtb2RlIGlzIG11Y2ggZmFzdGVyIHRoYW4gY29tcGlsaW5nIGZpbGVzIG9uZS1ieS1vbmUsIGFuZCBpdCBpcyB1c2VkIGluIHRoZSB0c2MgQ0xJIGNvbXBpbGVyLlxuICAgICAgICBwcm9ncmFtLmVtaXQodm9pZCAwLCAob3V0cHV0TmFtZSwgcmVzdWx0LCB3cml0ZUJPTSwgb25FcnJvciwgc291cmNlcykgPT4ge1xuICAgICAgICAgICAgaWYgKCFzb3VyY2VzKVxuICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3Qgc291cmNlUGF0aCA9IFR5cGVTY3JpcHRUZXN0RmlsZUNvbXBpbGVyLl9ub3JtYWxpemVGaWxlbmFtZShzb3VyY2VzWzBdLmZpbGVOYW1lKTtcblxuICAgICAgICAgICAgdGhpcy5jYWNoZVtzb3VyY2VQYXRoXSA9IHJlc3VsdDtcbiAgICAgICAgfSwgdm9pZCAwLCB2b2lkIDAsIHtcbiAgICAgICAgICAgIGJlZm9yZTogdGhpcy5fZ2V0VHlwZXNjcmlwdFRyYW5zZm9ybWVycygpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRUeXBlc2NyaXB0VHJhbnNmb3JtZXJzICgpOiBUcmFuc2Zvcm1lckZhY3Rvcnk8U291cmNlRmlsZT5bXSB7XG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybWVyczogVHJhbnNmb3JtZXJGYWN0b3J5PFNvdXJjZUZpbGU+W10gPSBbdGVzdGNhZmVJbXBvcnRQYXRoUmVwbGFjZXIodGhpcy5lc20pXTtcblxuICAgICAgICBpZiAodGhpcy5lc20pXG4gICAgICAgICAgICB0cmFuc2Zvcm1lcnMucHVzaChkaXNhYmxlVjhPcHRpbWl6YXRpb25Db2RlQXBwZW5kZXIoKSk7XG5cbiAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVycztcbiAgICB9XG5cbiAgICBwdWJsaWMgX3ByZWNvbXBpbGVDb2RlICh0ZXN0RmlsZXNJbmZvOiBUZXN0RmlsZUluZm9bXSk6IHN0cmluZ1tdIHtcbiAgICAgICAgREVCVUdfTE9HR0VSKCdwYXRoOiBcIiVzXCInLCB0aGlzLl9jb21waWxlclBhdGgpO1xuXG4gICAgICAgIC8vIE5PVEU6IGxhenkgbG9hZCB0aGUgY29tcGlsZXJcbiAgICAgICAgY29uc3QgdHM6IFR5cGVTY3JpcHRJbnN0YW5jZSA9IHRoaXMuX2xvYWRUeXBlU2NyaXB0Q29tcGlsZXIoKTtcbiAgICAgICAgY29uc3QgZmlsZW5hbWVzICAgICAgICAgICAgICA9IHRlc3RGaWxlc0luZm8ubWFwKCh7IGZpbGVuYW1lIH0pID0+IGZpbGVuYW1lKTtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZEZpbGVuYW1lcyAgICA9IGZpbGVuYW1lcy5tYXAoZmlsZW5hbWUgPT4gVHlwZVNjcmlwdFRlc3RGaWxlQ29tcGlsZXIuX25vcm1hbGl6ZUZpbGVuYW1lKGZpbGVuYW1lKSk7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRGaWxlbmFtZXNNYXAgPSB6aXBPYmplY3Qobm9ybWFsaXplZEZpbGVuYW1lcywgZmlsZW5hbWVzKTtcblxuICAgICAgICBjb25zdCB1bmNhY2hlZEZpbGVzID0gbm9ybWFsaXplZEZpbGVuYW1lc1xuICAgICAgICAgICAgLmZpbHRlcihmaWxlbmFtZSA9PiBmaWxlbmFtZSAhPT0gVHlwZVNjcmlwdFRlc3RGaWxlQ29tcGlsZXIudHNEZWZzUGF0aCAmJiAhdGhpcy5jYWNoZVtmaWxlbmFtZV0pXG4gICAgICAgICAgICAubWFwKGZpbGVuYW1lID0+IG5vcm1hbGl6ZWRGaWxlbmFtZXNNYXBbZmlsZW5hbWVdKTtcblxuICAgICAgICBpZiAodW5jYWNoZWRGaWxlcy5sZW5ndGgpXG4gICAgICAgICAgICB0aGlzLl9jb21waWxlRmlsZXNUb0NhY2hlKHRzLCB1bmNhY2hlZEZpbGVzKTtcblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZEZpbGVuYW1lcy5tYXAoZmlsZW5hbWUgPT4gdGhpcy5jYWNoZVtmaWxlbmFtZV0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBfZ2V0UmVxdWlyZUNvbXBpbGVycyAoKTogUmVxdWlyZUNvbXBpbGVycyB7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVDb21waWxlcnM6IFJlcXVpcmVDb21waWxlcnMgPSB7XG4gICAgICAgICAgICBbRXh0ZW5zaW9ucy50c106ICAoY29kZSwgZmlsZW5hbWUpID0+IHRoaXMuX2NvbXBpbGVDb2RlKGNvZGUsIGZpbGVuYW1lKSxcbiAgICAgICAgICAgIFtFeHRlbnNpb25zLnRzeF06IChjb2RlLCBmaWxlbmFtZSkgPT4gdGhpcy5fY29tcGlsZUNvZGUoY29kZSwgZmlsZW5hbWUpLFxuICAgICAgICAgICAgW0V4dGVuc2lvbnMuanNdOiAgKGNvZGUsIGZpbGVuYW1lKSA9PiBFU05leHRUZXN0RmlsZUNvbXBpbGVyLnByb3RvdHlwZS5fY29tcGlsZUNvZGUuY2FsbCh0aGlzLCBjb2RlLCBmaWxlbmFtZSksXG4gICAgICAgICAgICBbRXh0ZW5zaW9ucy5janNdOiAoY29kZSwgZmlsZW5hbWUpID0+IEVTTmV4dFRlc3RGaWxlQ29tcGlsZXIucHJvdG90eXBlLl9jb21waWxlQ29kZS5jYWxsKHRoaXMsIGNvZGUsIGZpbGVuYW1lKSxcbiAgICAgICAgICAgIFtFeHRlbnNpb25zLmpzeF06IChjb2RlLCBmaWxlbmFtZSkgPT4gRVNOZXh0VGVzdEZpbGVDb21waWxlci5wcm90b3R5cGUuX2NvbXBpbGVDb2RlLmNhbGwodGhpcywgY29kZSwgZmlsZW5hbWUpLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmVzbSlcbiAgICAgICAgICAgIHJlcXVpcmVDb21waWxlcnNbRXh0ZW5zaW9ucy5tanNdID0gKGNvZGUsIGZpbGVuYW1lKSA9PiBFU05leHRUZXN0RmlsZUNvbXBpbGVyLnByb3RvdHlwZS5fY29tcGlsZUNvZGUuY2FsbCh0aGlzLCBjb2RlLCBmaWxlbmFtZSk7XG5cbiAgICAgICAgcmV0dXJuIHJlcXVpcmVDb21waWxlcnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjYW5QcmVjb21waWxlICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjYW5Db21waWxlSW5Fc20gKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3VwcG9ydGVkRXh0ZW5zaW9uICgpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBbRXh0ZW5zaW9ucy50cywgRXh0ZW5zaW9ucy50c3hdO1xuICAgIH1cbn1cbiJdfQ==
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcGlsZXIvdGVzdC1maWxlL2Zvcm1hdHMvdHlwZXNjcmlwdC9jb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQXdCO0FBQ3hCLG1DQUFtQztBQUNuQywwREFBMkI7QUFDM0IsZ0VBQTJEO0FBQzNELG1FQUF5RDtBQUN6RCxrSEFBeUY7QUFDekYsd0RBQTBEO0FBQzFELG9EQUEwRDtBQUMxRCxrREFBMEI7QUFDMUIsaUVBQTJEO0FBQzNELDRGQUFpRTtBQUNqRSxzR0FBOEU7QUFFOUUsa0NBQWtDO0FBQ2xDLHlEQVdvQjtBQUlwQiwrREFBdUM7QUFJdkMsTUFBTSxTQUFTLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUM7QUFjckMsU0FBUywwQkFBMEIsQ0FBa0IsR0FBYTtJQUM5RCxPQUFPLE9BQU8sQ0FBQyxFQUFFO1FBQ2IsTUFBTSxLQUFLLEdBQVksQ0FBQyxJQUFJLEVBQXFCLEVBQUU7O1lBQy9DLGFBQWE7WUFDYixJQUFJLENBQUEsTUFBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxJQUFJLE1BQUssdUJBQVUsQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLHVCQUFVLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO2dCQUMxSCxNQUFNLE9BQU8sR0FBRyxJQUFBLGlDQUFvQixFQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUUxQyxPQUFPLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNqRDtZQUVELE9BQU8sSUFBQSwyQkFBYyxFQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUM7UUFFRixP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SSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUM7WUFDOUcsQ0FBQyxvQkFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsa0JBQXNCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUM7WUFDOUcsQ0FBQyxvQkFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsa0JBQXNCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUM7U0FDakgsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLEdBQUc7WUFDUixnQkFBZ0IsQ0FBQyxvQkFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsa0JBQXNCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVwSSxPQUFPLGdCQUFnQixDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0scUJBQXFCO1FBQ3hCLE9BQU8sQ0FBQyxvQkFBVSxDQUFDLEVBQUUsRUFBRSxvQkFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7O0FBbExMLDZDQW1MQztBQWxMa0IscUNBQVUsR0FBRywwQkFBMEIsQ0FBQyxjQUFjLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgemlwT2JqZWN0IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBPUyBmcm9tICdvcy1mYW1pbHknO1xuaW1wb3J0IEFQSUJhc2VkVGVzdEZpbGVDb21waWxlckJhc2UgZnJvbSAnLi4vLi4vYXBpLWJhc2VkJztcbmltcG9ydCBFU05leHRUZXN0RmlsZUNvbXBpbGVyIGZyb20gJy4uL2VzLW5leHQvY29tcGlsZXInO1xuaW1wb3J0IFR5cGVzY3JpcHRDb25maWd1cmF0aW9uIGZyb20gJy4uLy4uLy4uLy4uL2NvbmZpZ3VyYXRpb24vdHlwZXNjcmlwdC1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IEdlbmVyYWxFcnJvciB9IGZyb20gJy4uLy4uLy4uLy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vLi4vLi4vLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBpc1JlbGF0aXZlIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXBpL3Rlc3QtcGFnZS11cmwnO1xuaW1wb3J0IGdldEV4cG9ydGFibGVMaWJQYXRoIGZyb20gJy4uLy4uL2dldC1leHBvcnRhYmxlLWxpYi1wYXRoJztcbmltcG9ydCBESVNBQkxFX1Y4X09QVElNSVpBVElPTl9OT1RFIGZyb20gJy4uLy4uL2Rpc2FibGUtdjgtb3B0aW1pemF0aW9uLW5vdGUnO1xuXG4vLyBOT1RFOiBGb3IgdHlwZSBkZWZpbml0aW9ucyBvbmx5XG5pbXBvcnQgVHlwZVNjcmlwdCwge1xuICAgIENvbXBpbGVyT3B0aW9uc1ZhbHVlLFxuICAgIFN5bnRheEtpbmQsXG4gICAgVmlzaXRSZXN1bHQsXG4gICAgVmlzaXRvcixcbiAgICBOb2RlLFxuICAgIHZpc2l0RWFjaENoaWxkLFxuICAgIHZpc2l0Tm9kZSxcbiAgICBUcmFuc2Zvcm1lckZhY3RvcnksXG4gICAgU291cmNlRmlsZSxcbiAgICBhZGRTeW50aGV0aWNMZWFkaW5nQ29tbWVudCxcbn0gZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7IERpY3Rpb25hcnksIFR5cGVTY3JpcHRDb21waWxlck9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgT3B0aW9uYWxDb21waWxlckFyZ3VtZW50cyB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IEV4dGVuc2lvbnMgZnJvbSAnLi4vZXh0ZW5zaW9ucyc7XG5cbmRlY2xhcmUgdHlwZSBUeXBlU2NyaXB0SW5zdGFuY2UgPSB0eXBlb2YgVHlwZVNjcmlwdDtcblxuY29uc3QgdHNGYWN0b3J5ID0gVHlwZVNjcmlwdC5mYWN0b3J5O1xuXG5pbnRlcmZhY2UgVGVzdEZpbGVJbmZvIHtcbiAgICBmaWxlbmFtZTogc3RyaW5nO1xufVxuXG5kZWNsYXJlIGludGVyZmFjZSBSZXF1aXJlQ29tcGlsZXJGdW5jdGlvbiB7XG4gICAgKGNvZGU6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFJlcXVpcmVDb21waWxlcnMge1xuICAgIFtleHRlbnNpb246IHN0cmluZ106IFJlcXVpcmVDb21waWxlckZ1bmN0aW9uO1xufVxuXG5mdW5jdGlvbiB0ZXN0Y2FmZUltcG9ydFBhdGhSZXBsYWNlcjxUIGV4dGVuZHMgTm9kZT4gKGVzbT86IGJvb2xlYW4pOiBUcmFuc2Zvcm1lckZhY3Rvcnk8VD4ge1xuICAgIHJldHVybiBjb250ZXh0ID0+IHtcbiAgICAgICAgY29uc3QgdmlzaXQ6IFZpc2l0b3IgPSAobm9kZSk6IFZpc2l0UmVzdWx0PE5vZGU+ID0+IHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGlmIChub2RlLnBhcmVudD8ua2luZCA9PT0gU3ludGF4S2luZC5JbXBvcnREZWNsYXJhdGlvbiAmJiBub2RlLmtpbmQgPT09IFN5bnRheEtpbmQuU3RyaW5nTGl0ZXJhbCAmJiBub2RlLnRleHQgPT09ICd0ZXN0Y2FmZScpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaWJQYXRoID0gZ2V0RXhwb3J0YWJsZUxpYlBhdGgoZXNtKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0c0ZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbChsaWJQYXRoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZpc2l0RWFjaENoaWxkKG5vZGUsIGNoaWxkID0+IHZpc2l0KGNoaWxkKSwgY29udGV4dCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG5vZGUgPT4gdmlzaXROb2RlKG5vZGUsIHZpc2l0KTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBkaXNhYmxlVjhPcHRpbWl6YXRpb25Db2RlQXBwZW5kZXI8VCBleHRlbmRzIE5vZGU+ICgpOiBUcmFuc2Zvcm1lckZhY3Rvcnk8VD4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHZpc2l0OiBWaXNpdG9yID0gKG5vZGUpOiBWaXNpdFJlc3VsdDxOb2RlPiA9PiB7XG4gICAgICAgICAgICBjb25zdCBldmFsU3RhdGVtZW50ID0gdHNGYWN0b3J5LmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQodHNGYWN0b3J5LmNyZWF0ZUNhbGxFeHByZXNzaW9uKFxuICAgICAgICAgICAgICAgIHRzRmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKCdldmFsJyksXG4gICAgICAgICAgICAgICAgdm9pZCAwLFxuICAgICAgICAgICAgICAgIFt0c0ZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbCgnJyldXG4gICAgICAgICAgICApKTtcblxuICAgICAgICAgICAgY29uc3QgZXZhbFN0YXRlbWVudFdpdGhDb21tZW50ID0gYWRkU3ludGhldGljTGVhZGluZ0NvbW1lbnQoZXZhbFN0YXRlbWVudCwgU3ludGF4S2luZC5NdWx0aUxpbmVDb21tZW50VHJpdmlhLCBESVNBQkxFX1Y4X09QVElNSVpBVElPTl9OT1RFLCB0cnVlKTtcblxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcmV0dXJuIHRzRmFjdG9yeS51cGRhdGVTb3VyY2VGaWxlKG5vZGUsIFsuLi5ub2RlLnN0YXRlbWVudHMsIGV2YWxTdGF0ZW1lbnRXaXRoQ29tbWVudF0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBub2RlID0+IHZpc2l0Tm9kZShub2RlLCB2aXNpdCk7XG4gICAgfTtcbn1cblxuXG5jb25zdCBERUJVR19MT0dHRVIgPSBkZWJ1ZygndGVzdGNhZmU6Y29tcGlsZXI6dHlwZXNjcmlwdCcpO1xuXG5jb25zdCBSRU5BTUVEX0RFUEVOREVOQ0lFU19NQVAgPSBuZXcgTWFwKFtbJ3Rlc3RjYWZlJywgZ2V0RXhwb3J0YWJsZUxpYlBhdGgoKV1dKTtcblxuY29uc3QgREVGQVVMVF9UWVBFU0NSSVBUX0NPTVBJTEVSX1BBVEggPSAndHlwZXNjcmlwdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFR5cGVTY3JpcHRUZXN0RmlsZUNvbXBpbGVyIGV4dGVuZHMgQVBJQmFzZWRUZXN0RmlsZUNvbXBpbGVyQmFzZSB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgdHNEZWZzUGF0aCA9IFR5cGVTY3JpcHRUZXN0RmlsZUNvbXBpbGVyLl9nZXRUU0RlZnNQYXRoKCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF90c0NvbmZpZzogVHlwZXNjcmlwdENvbmZpZ3VyYXRpb247XG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29tcGlsZXJQYXRoOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfY3VzdG9tQ29tcGlsZXJPcHRpb25zPzogb2JqZWN0O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChjb21waWxlck9wdGlvbnM/OiBUeXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zLCB7IGJhc2VVcmwsIGVzbSB9OiBPcHRpb25hbENvbXBpbGVyQXJndW1lbnRzID0ge30pIHtcbiAgICAgICAgc3VwZXIoeyBiYXNlVXJsLCBlc20gfSk7XG5cbiAgICAgICAgLy8gTk9URTogQXQgcHJlc2VudCwgaXQncyBuZWNlc3NhcnkgY3JlYXRlIGFuIGluc3RhbmNlIFR5cGVTY3JpcHRUZXN0RmlsZUNvbXBpbGVyXG4gICAgICAgIC8vIHRvIGNvbGxlY3QgYSBsaXN0IG9mIHN1cHBvcnRlZCB0ZXN0IGZpbGUgZXh0ZW5zaW9ucy5cbiAgICAgICAgLy8gU28gYWxsIGNvbXBpbGVycyBjcmVhdGVzIDIgdGltZXM6IGZpcnN0IHRpbWUgLSBmb3IgY29sbGVjdGluZyBhbGwgc3VwcG9ydGVkIGZpbGUgZXh0ZW5zaW9ucyxcbiAgICAgICAgLy8gc2Vjb25kIG9uZSAtIGZvciBjb21waWxpbmcgdGVzdHMuXG4gICAgICAgIC8vIEluIGZ1dHVyZSwgbmVlZCB0byByZXdyaXRlICdnZXRTdXBwb3J0ZWRFeHRlbnNpb24nIG1ldGhvZCBhcyBzdGF0aWMuXG5cbiAgICAgICAgY29uc3QgY29uZmlnUGF0aCA9IGNvbXBpbGVyT3B0aW9ucyAmJiBjb21waWxlck9wdGlvbnMuY29uZmlnUGF0aCB8fCBudWxsO1xuXG4gICAgICAgIHRoaXMuX2N1c3RvbUNvbXBpbGVyT3B0aW9ucyA9IGNvbXBpbGVyT3B0aW9ucyAmJiBjb21waWxlck9wdGlvbnMub3B0aW9ucztcbiAgICAgICAgdGhpcy5fdHNDb25maWcgICAgICAgICAgICAgID0gbmV3IFR5cGVzY3JpcHRDb25maWd1cmF0aW9uKGNvbmZpZ1BhdGgsIGVzbSk7XG4gICAgICAgIHRoaXMuX2NvbXBpbGVyUGF0aCAgICAgICAgICA9IFR5cGVTY3JpcHRUZXN0RmlsZUNvbXBpbGVyLl9nZXRDb21waWxlclBhdGgoY29tcGlsZXJPcHRpb25zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfZ2V0Q29tcGlsZXJQYXRoIChjb21waWxlck9wdGlvbnM/OiBUeXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGNvbXBpbGVyUGF0aCA9IGNvbXBpbGVyT3B0aW9ucyAmJiBjb21waWxlck9wdGlvbnMuY3VzdG9tQ29tcGlsZXJNb2R1bGVQYXRoO1xuXG4gICAgICAgIGlmICghY29tcGlsZXJQYXRoIHx8IGNvbXBpbGVyUGF0aCA9PT0gREVGQVVMVF9UWVBFU0NSSVBUX0NPTVBJTEVSX1BBVEgpXG4gICAgICAgICAgICByZXR1cm4gREVGQVVMVF9UWVBFU0NSSVBUX0NPTVBJTEVSX1BBVEg7XG5cbiAgICAgICAgLy8gTk9URTogaWYgdGhlIHJlbGF0aXZlIHBhdGggdG8gY3VzdG9tIFR5cGVTY3JpcHQgY29tcGlsZXIgbW9kdWxlIGlzIHNwZWNpZmllZFxuICAgICAgICAvLyB0aGVuIHdlIHdpbGwgcmVzb2x2ZSB0aGUgcGF0aCBmcm9tIHRoZSByb290IG9mIHRoZSAndGVzdGNhZmUnIG1vZHVsZVxuICAgICAgICBpZiAoaXNSZWxhdGl2ZShjb21waWxlclBhdGgpKSB7XG4gICAgICAgICAgICBjb25zdCB0ZXN0Y2FmZVJvb3RGb2xkZXIgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4vLi4vLi4vLi4vLi4vJyk7XG5cbiAgICAgICAgICAgIGNvbXBpbGVyUGF0aCA9IHBhdGgucmVzb2x2ZSh0ZXN0Y2FmZVJvb3RGb2xkZXIsIGNvbXBpbGVyUGF0aCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29tcGlsZXJQYXRoO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2xvYWRUeXBlU2NyaXB0Q29tcGlsZXIgKCk6IFR5cGVTY3JpcHRJbnN0YW5jZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gcmVxdWlyZSh0aGlzLl9jb21waWxlclBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEdlbmVyYWxFcnJvcihSVU5USU1FX0VSUk9SUy50eXBlU2NyaXB0Q29tcGlsZXJMb2FkaW5nRXJyb3IsIGVyci5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9ub3JtYWxpemVGaWxlbmFtZSAoZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGZpbGVuYW1lID0gcGF0aC5yZXNvbHZlKGZpbGVuYW1lKTtcblxuICAgICAgICBpZiAoT1Mud2luKVxuICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIHJldHVybiBmaWxlbmFtZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfZ2V0VFNEZWZzUGF0aCAoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFR5cGVTY3JpcHRUZXN0RmlsZUNvbXBpbGVyLl9ub3JtYWxpemVGaWxlbmFtZShwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4vLi4vLi4vLi4vLi4vdHMtZGVmcy9pbmRleC5kLnRzJykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlcG9ydEVycm9ycyAoZGlhZ25vc3RpY3M6IFJlYWRvbmx5PFR5cGVTY3JpcHQuRGlhZ25vc3RpY1tdPik6IHZvaWQge1xuICAgICAgICAvLyBOT1RFOiBsYXp5IGxvYWQgdGhlIGNvbXBpbGVyXG4gICAgICAgIGNvbnN0IHRzOiBUeXBlU2NyaXB0SW5zdGFuY2UgPSB0aGlzLl9sb2FkVHlwZVNjcmlwdENvbXBpbGVyKCk7XG4gICAgICAgIGxldCBlcnJNc2cgPSAnVHlwZVNjcmlwdCBjb21waWxhdGlvbiBmYWlsZWQuXFxuJztcblxuICAgICAgICBkaWFnbm9zdGljcy5mb3JFYWNoKGQgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRzLmZsYXR0ZW5EaWFnbm9zdGljTWVzc2FnZVRleHQoZC5tZXNzYWdlVGV4dCwgJ1xcbicpO1xuICAgICAgICAgICAgY29uc3QgZmlsZSAgICA9IGQuZmlsZTtcblxuICAgICAgICAgICAgaWYgKGZpbGUgJiYgZC5zdGFydCAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBsaW5lLCBjaGFyYWN0ZXIgfSA9IGZpbGUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oZC5zdGFydCk7XG5cbiAgICAgICAgICAgICAgICBlcnJNc2cgKz0gYCR7ZmlsZS5maWxlTmFtZX0gKCR7bGluZSArIDF9LCAke2NoYXJhY3RlciArIDF9KTogYDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXJyTXNnICs9IGAke21lc3NhZ2V9XFxuYDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVyck1zZyk7XG4gICAgfVxuXG4gICAgcHVibGljIF9jb21waWxlQ29kZUZvclRlc3RGaWxlcyAodGVzdEZpbGVzSW5mbzogVGVzdEZpbGVJbmZvW10pOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90c0NvbmZpZy5pbml0KHRoaXMuX2N1c3RvbUNvbXBpbGVyT3B0aW9ucylcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuX2NvbXBpbGVDb2RlRm9yVGVzdEZpbGVzKHRlc3RGaWxlc0luZm8pO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY29tcGlsZUZpbGVzVG9DYWNoZSAodHM6IFR5cGVTY3JpcHRJbnN0YW5jZSwgZmlsZW5hbWVzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBvcHRzID0gdGhpcy5fdHNDb25maWcuZ2V0T3B0aW9ucygpIGFzIERpY3Rpb25hcnk8Q29tcGlsZXJPcHRpb25zVmFsdWU+O1xuXG4gICAgICAgIGZpbGVuYW1lcyA9IGZpbGVuYW1lcy5tYXAobmFtZSA9PiBUeXBlU2NyaXB0VGVzdEZpbGVDb21waWxlci5fbm9ybWFsaXplRmlsZW5hbWUobmFtZSkpO1xuXG4gICAgICAgIGNvbnN0IHByb2dyYW0gPSB0cy5jcmVhdGVQcm9ncmFtKFtUeXBlU2NyaXB0VGVzdEZpbGVDb21waWxlci50c0RlZnNQYXRoLCAuLi5maWxlbmFtZXNdLCBvcHRzKTtcblxuICAgICAgICBERUJVR19MT0dHRVIoJ3ZlcnNpb246ICVzJywgdHMudmVyc2lvbik7XG4gICAgICAgIERFQlVHX0xPR0dFUignb3B0aW9uczogJU8nLCBvcHRzKTtcblxuICAgICAgICBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkuZm9yRWFjaChzb3VyY2VGaWxlID0+IHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgQSBoYWNrIHRvIGFsbG93IGltcG9ydCBnbG9iYWxseSBpbnN0YWxsZWQgVGVzdENhZmUgaW4gdGVzdHNcbiAgICAgICAgICAgIHNvdXJjZUZpbGUucmVuYW1lZERlcGVuZGVuY2llcyA9IFJFTkFNRURfREVQRU5ERU5DSUVTX01BUDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgZGlhZ25vc3RpY3MgPSB0cy5nZXRQcmVFbWl0RGlhZ25vc3RpY3MocHJvZ3JhbSk7XG5cbiAgICAgICAgaWYgKGRpYWdub3N0aWNzLmxlbmd0aClcbiAgICAgICAgICAgIHRoaXMuX3JlcG9ydEVycm9ycyhkaWFnbm9zdGljcyk7XG5cbiAgICAgICAgLy8gTk9URTogVGhlIGZpcnN0IGFyZ3VtZW50IG9mIGVtaXQoKSBpcyBhIHNvdXJjZSBmaWxlIHRvIGJlIGNvbXBpbGVkLiBJZiBpdCdzIHVuZGVmaW5lZCwgYWxsIGZpbGVzIGluXG4gICAgICAgIC8vIDxwcm9ncmFtPiB3aWxsIGJlIGNvbXBpbGVkLiA8cHJvZ3JhbT4gY29udGFpbnMgYSBmaWxlIHNwZWNpZmllZCBpbiBjcmVhdGVQcm9ncmFtKCkgcGx1cyBhbGwgaXRzIGRlcGVuZGVuY2llcy5cbiAgICAgICAgLy8gVGhpcyBtb2RlIGlzIG11Y2ggZmFzdGVyIHRoYW4gY29tcGlsaW5nIGZpbGVzIG9uZS1ieS1vbmUsIGFuZCBpdCBpcyB1c2VkIGluIHRoZSB0c2MgQ0xJIGNvbXBpbGVyLlxuICAgICAgICBwcm9ncmFtLmVtaXQodm9pZCAwLCAob3V0cHV0TmFtZSwgcmVzdWx0LCB3cml0ZUJPTSwgb25FcnJvciwgc291cmNlcykgPT4ge1xuICAgICAgICAgICAgaWYgKCFzb3VyY2VzKVxuICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3Qgc291cmNlUGF0aCA9IFR5cGVTY3JpcHRUZXN0RmlsZUNvbXBpbGVyLl9ub3JtYWxpemVGaWxlbmFtZShzb3VyY2VzWzBdLmZpbGVOYW1lKTtcblxuICAgICAgICAgICAgdGhpcy5jYWNoZVtzb3VyY2VQYXRoXSA9IHJlc3VsdDtcbiAgICAgICAgfSwgdm9pZCAwLCB2b2lkIDAsIHtcbiAgICAgICAgICAgIGJlZm9yZTogdGhpcy5fZ2V0VHlwZXNjcmlwdFRyYW5zZm9ybWVycygpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRUeXBlc2NyaXB0VHJhbnNmb3JtZXJzICgpOiBUcmFuc2Zvcm1lckZhY3Rvcnk8U291cmNlRmlsZT5bXSB7XG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybWVyczogVHJhbnNmb3JtZXJGYWN0b3J5PFNvdXJjZUZpbGU+W10gPSBbdGVzdGNhZmVJbXBvcnRQYXRoUmVwbGFjZXIodGhpcy5lc20pXTtcblxuICAgICAgICBpZiAodGhpcy5lc20pXG4gICAgICAgICAgICB0cmFuc2Zvcm1lcnMucHVzaChkaXNhYmxlVjhPcHRpbWl6YXRpb25Db2RlQXBwZW5kZXIoKSk7XG5cbiAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVycztcbiAgICB9XG5cbiAgICBwdWJsaWMgX3ByZWNvbXBpbGVDb2RlICh0ZXN0RmlsZXNJbmZvOiBUZXN0RmlsZUluZm9bXSk6IHN0cmluZ1tdIHtcbiAgICAgICAgREVCVUdfTE9HR0VSKCdwYXRoOiBcIiVzXCInLCB0aGlzLl9jb21waWxlclBhdGgpO1xuXG4gICAgICAgIC8vIE5PVEU6IGxhenkgbG9hZCB0aGUgY29tcGlsZXJcbiAgICAgICAgY29uc3QgdHM6IFR5cGVTY3JpcHRJbnN0YW5jZSA9IHRoaXMuX2xvYWRUeXBlU2NyaXB0Q29tcGlsZXIoKTtcbiAgICAgICAgY29uc3QgZmlsZW5hbWVzICAgICAgICAgICAgICA9IHRlc3RGaWxlc0luZm8ubWFwKCh7IGZpbGVuYW1lIH0pID0+IGZpbGVuYW1lKTtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZEZpbGVuYW1lcyAgICA9IGZpbGVuYW1lcy5tYXAoZmlsZW5hbWUgPT4gVHlwZVNjcmlwdFRlc3RGaWxlQ29tcGlsZXIuX25vcm1hbGl6ZUZpbGVuYW1lKGZpbGVuYW1lKSk7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRGaWxlbmFtZXNNYXAgPSB6aXBPYmplY3Qobm9ybWFsaXplZEZpbGVuYW1lcywgZmlsZW5hbWVzKTtcblxuICAgICAgICBjb25zdCB1bmNhY2hlZEZpbGVzID0gbm9ybWFsaXplZEZpbGVuYW1lc1xuICAgICAgICAgICAgLmZpbHRlcihmaWxlbmFtZSA9PiBmaWxlbmFtZSAhPT0gVHlwZVNjcmlwdFRlc3RGaWxlQ29tcGlsZXIudHNEZWZzUGF0aCAmJiAhdGhpcy5jYWNoZVtmaWxlbmFtZV0pXG4gICAgICAgICAgICAubWFwKGZpbGVuYW1lID0+IG5vcm1hbGl6ZWRGaWxlbmFtZXNNYXBbZmlsZW5hbWVdKTtcblxuICAgICAgICBpZiAodW5jYWNoZWRGaWxlcy5sZW5ndGgpXG4gICAgICAgICAgICB0aGlzLl9jb21waWxlRmlsZXNUb0NhY2hlKHRzLCB1bmNhY2hlZEZpbGVzKTtcblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZEZpbGVuYW1lcy5tYXAoZmlsZW5hbWUgPT4gdGhpcy5jYWNoZVtmaWxlbmFtZV0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBfZ2V0UmVxdWlyZUNvbXBpbGVycyAoKTogUmVxdWlyZUNvbXBpbGVycyB7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVDb21waWxlcnM6IFJlcXVpcmVDb21waWxlcnMgPSB7XG4gICAgICAgICAgICBbRXh0ZW5zaW9ucy50c106ICAoY29kZSwgZmlsZW5hbWUpID0+IHRoaXMuX2NvbXBpbGVDb2RlKGNvZGUsIGZpbGVuYW1lKSxcbiAgICAgICAgICAgIFtFeHRlbnNpb25zLnRzeF06IChjb2RlLCBmaWxlbmFtZSkgPT4gdGhpcy5fY29tcGlsZUNvZGUoY29kZSwgZmlsZW5hbWUpLFxuICAgICAgICAgICAgW0V4dGVuc2lvbnMuanNdOiAgKGNvZGUsIGZpbGVuYW1lKSA9PiBFU05leHRUZXN0RmlsZUNvbXBpbGVyLnByb3RvdHlwZS5fY29tcGlsZUNvZGUuY2FsbCh0aGlzLCBjb2RlLCBmaWxlbmFtZSksXG4gICAgICAgICAgICBbRXh0ZW5zaW9ucy5janNdOiAoY29kZSwgZmlsZW5hbWUpID0+IEVTTmV4dFRlc3RGaWxlQ29tcGlsZXIucHJvdG90eXBlLl9jb21waWxlQ29kZS5jYWxsKHRoaXMsIGNvZGUsIGZpbGVuYW1lKSxcbiAgICAgICAgICAgIFtFeHRlbnNpb25zLmpzeF06IChjb2RlLCBmaWxlbmFtZSkgPT4gRVNOZXh0VGVzdEZpbGVDb21waWxlci5wcm90b3R5cGUuX2NvbXBpbGVDb2RlLmNhbGwodGhpcywgY29kZSwgZmlsZW5hbWUpLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmVzbSlcbiAgICAgICAgICAgIHJlcXVpcmVDb21waWxlcnNbRXh0ZW5zaW9ucy5tanNdID0gKGNvZGUsIGZpbGVuYW1lKSA9PiBFU05leHRUZXN0RmlsZUNvbXBpbGVyLnByb3RvdHlwZS5fY29tcGlsZUNvZGUuY2FsbCh0aGlzLCBjb2RlLCBmaWxlbmFtZSk7XG5cbiAgICAgICAgcmV0dXJuIHJlcXVpcmVDb21waWxlcnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjYW5QcmVjb21waWxlICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjYW5Db21waWxlSW5Fc20gKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3VwcG9ydGVkRXh0ZW5zaW9uICgpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBbRXh0ZW5zaW9ucy50cywgRXh0ZW5zaW9ucy50c3hdO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -15,6 +15,8 @@ const render_template_1 = __importDefault(require("../utils/render-template"));
|
|
|
15
15
|
const warning_message_1 = __importDefault(require("../notifications/warning-message"));
|
|
16
16
|
const log_1 = __importDefault(require("../cli/log"));
|
|
17
17
|
const formats_1 = __importDefault(require("./formats"));
|
|
18
|
+
const runtime_1 = require("../errors/runtime");
|
|
19
|
+
const types_1 = require("../errors/types");
|
|
18
20
|
const DEBUG_LOGGER = (0, debug_1.default)('testcafe:configuration');
|
|
19
21
|
class Configuration {
|
|
20
22
|
constructor(configurationFilesNames) {
|
|
@@ -34,11 +36,11 @@ class Configuration {
|
|
|
34
36
|
static _showConsoleWarning(message) {
|
|
35
37
|
log_1.default.write(message);
|
|
36
38
|
}
|
|
37
|
-
static
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
DEBUG_LOGGER(message);
|
|
39
|
+
static _throwReadConfigError(code, error, path, renderCallsite) {
|
|
40
|
+
const readConfigError = new runtime_1.ReadConfigFileError(code, error, path, renderCallsite);
|
|
41
|
+
DEBUG_LOGGER(readConfigError.message);
|
|
41
42
|
DEBUG_LOGGER(error);
|
|
43
|
+
throw readConfigError;
|
|
42
44
|
}
|
|
43
45
|
static _resolveFilePath(path) {
|
|
44
46
|
if (!path)
|
|
@@ -160,7 +162,7 @@ class Configuration {
|
|
|
160
162
|
return require(filePath);
|
|
161
163
|
}
|
|
162
164
|
catch (error) {
|
|
163
|
-
Configuration.
|
|
165
|
+
Configuration._throwReadConfigError(types_1.RUNTIME_ERRORS.cannotReadConfigFile, error, filePath, true);
|
|
164
166
|
}
|
|
165
167
|
}
|
|
166
168
|
return null;
|
|
@@ -170,7 +172,7 @@ class Configuration {
|
|
|
170
172
|
return await (0, promisified_functions_1.readFile)(filePath);
|
|
171
173
|
}
|
|
172
174
|
catch (error) {
|
|
173
|
-
Configuration.
|
|
175
|
+
Configuration._throwReadConfigError(types_1.RUNTIME_ERRORS.cannotReadConfigFile, error, filePath || '', false);
|
|
174
176
|
}
|
|
175
177
|
return null;
|
|
176
178
|
}
|
|
@@ -179,7 +181,7 @@ class Configuration {
|
|
|
179
181
|
return json5_1.default.parse(configurationFileContent.toString());
|
|
180
182
|
}
|
|
181
183
|
catch (error) {
|
|
182
|
-
Configuration.
|
|
184
|
+
Configuration._throwReadConfigError(types_1.RUNTIME_ERRORS.cannotParseConfigFile, error, filePath || '', false);
|
|
183
185
|
}
|
|
184
186
|
return null;
|
|
185
187
|
}
|
|
@@ -227,4 +229,4 @@ class Configuration {
|
|
|
227
229
|
}
|
|
228
230
|
exports.default = Configuration;
|
|
229
231
|
module.exports = exports.default;
|
|
230
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQTJDO0FBQzNDLGtEQUEwQjtBQUMxQixrREFBMEI7QUFFMUIsbUNBS2dCO0FBRWhCLDBFQUFnRTtBQUNoRSxzREFBOEI7QUFDOUIsb0VBQTJDO0FBQzNDLHVHQUE0RTtBQUM1RSwrRUFBc0Q7QUFDdEQsdUZBQWdFO0FBQ2hFLHFEQUE2QjtBQUU3Qix3REFBbUM7QUFFbkMsTUFBTSxZQUFZLEdBQUcsSUFBQSxlQUFLLEVBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUVyRCxNQUFxQixhQUFhO0lBTTlCLFlBQW9CLHVCQUFpRDs7UUFDakUsSUFBSSxDQUFDLFFBQVEsR0FBYSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBUSxJQUFJLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsU0FBUyxHQUFZLE1BQUEsSUFBSSxDQUFDLGFBQWEsMENBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRVMsTUFBTSxDQUFDLFFBQVEsQ0FBRSxHQUFXO1FBQ2xDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ3pDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLGdCQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUM7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LE1BQU0sSUFBSSxNQUFNLEtBQUssdUJBQVksQ0FBQyxhQUFhO1lBQ3BHLE9BQU87UUFFWCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFUyxlQUFlLENBQUUsTUFBYyxFQUFFLEtBQWtCO1FBQ3pELElBQUksSUFBQSxzQkFBYSxFQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFBLHNCQUFhLEVBQUMsS0FBSyxDQUFDO1lBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEtBQWUsQ0FBQyxDQUFDO2FBQ3ZDO1lBQ0QsSUFBSSxDQUFDLCtCQUErQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXRGLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3hCO1FBRUQsTUFBTSxDQUFDLE1BQU0sR0FBRyx1QkFBWSxDQUFDLEtBQUssQ0FBQztJQUN2QyxDQUFDO0NBQ0o7QUE1UkQsZ0NBNFJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0bmFtZSwgaXNBYnNvbHV0ZSB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBKU09ONSBmcm9tICdqc29uNSc7XG5cbmltcG9ydCB7XG4gICAgY2FzdEFycmF5LFxuICAgIGNsb25lRGVlcCxcbiAgICBpc1BsYWluT2JqZWN0LFxuICAgIG1lcmdlV2l0aCxcbn0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgcmVhZEZpbGUsIHN0YXQgfSBmcm9tICcuLi91dGlscy9wcm9taXNpZmllZC1mdW5jdGlvbnMnO1xuaW1wb3J0IE9wdGlvbiBmcm9tICcuL29wdGlvbic7XG5pbXBvcnQgT3B0aW9uU291cmNlIGZyb20gJy4vb3B0aW9uLXNvdXJjZSc7XG5pbXBvcnQgcmVzb2x2ZVBhdGhSZWxhdGl2ZWx5Q3dkIGZyb20gJy4uL3V0aWxzL3Jlc29sdmUtcGF0aC1yZWxhdGl2ZWx5LWN3ZCc7XG5pbXBvcnQgcmVuZGVyVGVtcGxhdGUgZnJvbSAnLi4vdXRpbHMvcmVuZGVyLXRlbXBsYXRlJztcbmltcG9ydCBXQVJOSU5HX01FU1NBR0VTIGZyb20gJy4uL25vdGlmaWNhdGlvbnMvd2FybmluZy1tZXNzYWdlJztcbmltcG9ydCBsb2cgZnJvbSAnLi4vY2xpL2xvZyc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCBFeHRlbnNpb25zIGZyb20gJy4vZm9ybWF0cyc7XG5cbmNvbnN0IERFQlVHX0xPR0dFUiA9IGRlYnVnKCd0ZXN0Y2FmZTpjb25maWd1cmF0aW9uJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbmZpZ3VyYXRpb24ge1xuICAgIHByb3RlY3RlZCBfb3B0aW9uczogRGljdGlvbmFyeTxPcHRpb24+O1xuICAgIHByb3RlY3RlZCBfZmlsZVBhdGg/OiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kZWZhdWx0UGF0aHM/OiBzdHJpbmdbXTtcbiAgICBwcm90ZWN0ZWQgX292ZXJyaWRkZW5PcHRpb25zOiBzdHJpbmdbXTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoY29uZmlndXJhdGlvbkZpbGVzTmFtZXM6IHN0cmluZyB8IG51bGwgfCBzdHJpbmdbXSkge1xuICAgICAgICB0aGlzLl9vcHRpb25zICAgICAgICAgICA9IHt9O1xuICAgICAgICB0aGlzLl9kZWZhdWx0UGF0aHMgICAgICA9IHRoaXMuX3Jlc29sdmVGaWxlUGF0aHMoY29uZmlndXJhdGlvbkZpbGVzTmFtZXMpO1xuICAgICAgICB0aGlzLl9maWxlUGF0aCAgICAgICAgICA9IHRoaXMuX2RlZmF1bHRQYXRocz8uWzBdO1xuICAgICAgICB0aGlzLl9vdmVycmlkZGVuT3B0aW9ucyA9IFtdO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgX2Zyb21PYmogKG9iajogb2JqZWN0KTogRGljdGlvbmFyeTxPcHRpb24+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgICAgICBPYmplY3QuZW50cmllcyhvYmopLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBuZXcgT3B0aW9uKGtleSwgdmFsdWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgX3Nob3dDb25zb2xlV2FybmluZyAobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGxvZy53cml0ZShtZXNzYWdlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfc2hvd1dhcm5pbmdGb3JFcnJvciAoZXJyb3I6IEVycm9yLCB3YXJuaW5nVGVtcGxhdGU6IHN0cmluZywgLi4uYXJnczogVGVtcGxhdGVBcmd1bWVudHMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHJlbmRlclRlbXBsYXRlKHdhcm5pbmdUZW1wbGF0ZSwgLi4uYXJncyk7XG5cbiAgICAgICAgQ29uZmlndXJhdGlvbi5fc2hvd0NvbnNvbGVXYXJuaW5nKG1lc3NhZ2UpO1xuXG4gICAgICAgIERFQlVHX0xPR0dFUihtZXNzYWdlKTtcbiAgICAgICAgREVCVUdfTE9HR0VSKGVycm9yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfcmVzb2x2ZUZpbGVQYXRoIChwYXRoOiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmICghcGF0aClcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgIHJldHVybiBpc0Fic29sdXRlKHBhdGgpID8gcGF0aCA6IHJlc29sdmVQYXRoUmVsYXRpdmVseUN3ZChwYXRoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZXNvbHZlRmlsZVBhdGhzIChmaWxlc05hbWVzOiBzdHJpbmcgfCBudWxsIHwgc3RyaW5nW10pOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghZmlsZXNOYW1lcylcbiAgICAgICAgICAgIHJldHVybiB2b2lkIDA7XG5cbiAgICAgICAgcmV0dXJuIGNhc3RBcnJheShmaWxlc05hbWVzKS5yZWR1Y2UoKHJlc3VsdCwgbmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZUZpbGVQYXRoID0gQ29uZmlndXJhdGlvbi5fcmVzb2x2ZUZpbGVQYXRoKG5hbWUpO1xuXG4gICAgICAgICAgICBpZiAocmVzb2x2ZUZpbGVQYXRoKVxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHJlc29sdmVGaWxlUGF0aCk7XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sIFtdIGFzIHN0cmluZ1tdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5pdCAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuX292ZXJyaWRkZW5PcHRpb25zID0gW107XG4gICAgfVxuXG4gICAgcHVibGljIG1lcmdlT3B0aW9ucyAob3B0aW9uczogb2JqZWN0KTogdm9pZCB7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLl9lbnN1cmVPcHRpb24oa2V5LCB2YWx1ZSwgT3B0aW9uU291cmNlLklucHV0KTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlID09PSB2b2lkIDApXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICB0aGlzLl9zZXRPcHRpb25WYWx1ZShvcHRpb24sIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG1lcmdlRGVlcCAob3B0aW9uOiBPcHRpb24sIHNvdXJjZTogb2JqZWN0KTogdm9pZCB7XG4gICAgICAgIG1lcmdlV2l0aChvcHRpb24udmFsdWUsIHNvdXJjZSwgKHRhcmdldFZhbHVlOiBPcHRpb25WYWx1ZSwgc291cmNlVmFsdWU6IE9wdGlvblZhbHVlLCBwcm9wZXJ0eTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9hZGRPdmVycmlkZGVuT3B0aW9uSWZOZWNlc3NhcnkodGFyZ2V0VmFsdWUsIHNvdXJjZVZhbHVlLCBvcHRpb24uc291cmNlLCBgJHtvcHRpb24ubmFtZX0uJHtwcm9wZXJ0eX1gKTtcblxuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZVZhbHVlICE9PSB2b2lkIDAgPyBzb3VyY2VWYWx1ZSA6IHRhcmdldFZhbHVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2dldE9wdGlvbiAoa2V5OiBzdHJpbmcpOiBPcHRpb25WYWx1ZSB7XG4gICAgICAgIGlmICgha2V5KVxuICAgICAgICAgICAgcmV0dXJuIHZvaWQgMDtcblxuICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLl9vcHRpb25zW2tleV07XG5cbiAgICAgICAgaWYgKCFvcHRpb24pXG4gICAgICAgICAgICByZXR1cm4gdm9pZCAwO1xuXG4gICAgICAgIHJldHVybiBvcHRpb24udmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE9wdGlvbjxUeXBlPiAoa2V5OiBzdHJpbmcpOiBUeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbihrZXkpIGFzIFR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE9wdGlvbnMgKHByZWRpY2F0ZT86IChuYW1lOiBzdHJpbmcsIG9wdGlvbjogT3B0aW9uKSA9PiBib29sZWFuKTogRGljdGlvbmFyeTxPcHRpb25WYWx1ZT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgICAgICAgID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgbGV0IGluY2x1ZGVJblJlc3VsdCA9IHRydWU7XG5cbiAgICAgICAgT2JqZWN0LmVudHJpZXModGhpcy5fb3B0aW9ucykuZm9yRWFjaCgoW25hbWUsIG9wdGlvbl0pID0+IHtcbiAgICAgICAgICAgIGluY2x1ZGVJblJlc3VsdCA9IHByZWRpY2F0ZSA/IHByZWRpY2F0ZShuYW1lLCBvcHRpb24pIDogdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKGluY2x1ZGVJblJlc3VsdClcbiAgICAgICAgICAgICAgICByZXN1bHRbbmFtZV0gPSBvcHRpb24udmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb25lIChub25DbG9uZWRPcHRpb25zPzogc3RyaW5nIHwgc3RyaW5nW10pOiBDb25maWd1cmF0aW9uIHtcbiAgICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IGNsb25lRGVlcCh0aGlzKTtcblxuICAgICAgICBpZiAobm9uQ2xvbmVkT3B0aW9ucykge1xuICAgICAgICAgICAgY2FzdEFycmF5KG5vbkNsb25lZE9wdGlvbnMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5fb3B0aW9uc1trZXldKVxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLl9vcHRpb25zW2tleV0udmFsdWUgPSB0aGlzLl9vcHRpb25zW2tleV0udmFsdWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsZVBhdGggKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlUGF0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRlZmF1bHRQYXRocyAoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFBhdGhzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBfbG9hZCAoKTogUHJvbWlzZTxudWxsIHwgb2JqZWN0PiB7XG4gICAgICAgIGlmICghdGhpcy5kZWZhdWx0UGF0aHM/Lmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbnN0IGNvbmZpZ3MgPSBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmRlZmF1bHRQYXRocy5tYXAoYXN5bmMgZmlsZVBhdGggPT4ge1xuICAgICAgICAgICAgaWYgKCFhd2FpdCB0aGlzLl9pc0NvbmZpZ3VyYXRpb25GaWxlRXhpc3RzKGZpbGVQYXRoKSlcbiAgICAgICAgICAgICAgICByZXR1cm4geyBmaWxlUGF0aCwgb3B0aW9uczogbnVsbCB9O1xuXG4gICAgICAgICAgICBsZXQgb3B0aW9ucyA9IG51bGwgYXMgb2JqZWN0IHwgbnVsbDtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2lzSlNDb25maWd1cmF0aW9uKGZpbGVQYXRoKSlcbiAgICAgICAgICAgICAgICBvcHRpb25zID0gdGhpcy5fcmVhZEpzQ29uZmlndXJhdGlvbkZpbGVDb250ZW50KGZpbGVQYXRoKTtcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25GaWxlQ29udGVudCA9IGF3YWl0IHRoaXMuX3JlYWRDb25maWd1cmF0aW9uRmlsZUNvbnRlbnQoZmlsZVBhdGgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb25GaWxlQ29udGVudClcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyA9IHRoaXMuX3BhcnNlQ29uZmlndXJhdGlvbkZpbGVDb250ZW50KGNvbmZpZ3VyYXRpb25GaWxlQ29udGVudCwgZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4geyBmaWxlUGF0aCwgb3B0aW9ucyB9O1xuICAgICAgICB9KSk7XG5cbiAgICAgICAgY29uc3QgZXhpc3RlZENvbmZpZ3MgPSBjb25maWdzLmZpbHRlcihjb25maWcgPT4gISFjb25maWcub3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKCFleGlzdGVkQ29uZmlncy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICB0aGlzLl9maWxlUGF0aCA9IGV4aXN0ZWRDb25maWdzWzBdLmZpbGVQYXRoO1xuXG4gICAgICAgIGlmIChleGlzdGVkQ29uZmlncy5sZW5ndGggPiAxKVxuICAgICAgICAgICAgQ29uZmlndXJhdGlvbi5fc2hvd0NvbnNvbGVXYXJuaW5nKHJlbmRlclRlbXBsYXRlKFdBUk5JTkdfTUVTU0FHRVMubXVsdGlwbGVDb25maWd1cmF0aW9uRmlsZXNGb3VuZCwgdGhpcy5fZmlsZVBhdGgpKTtcblxuICAgICAgICByZXR1cm4gZXhpc3RlZENvbmZpZ3NbMF0ub3B0aW9ucztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgX2lzQ29uZmlndXJhdGlvbkZpbGVFeGlzdHMgKGZpbGVQYXRoID0gdGhpcy5maWxlUGF0aCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgc3RhdChmaWxlUGF0aCk7XG5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgICBERUJVR19MT0dHRVIocmVuZGVyVGVtcGxhdGUoV0FSTklOR19NRVNTQUdFUy5jYW5ub3RGaW5kQ29uZmlndXJhdGlvbkZpbGUsIGZpbGVQYXRoLCBlcnJvci5zdGFjaykpO1xuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfaGFzRXh0ZW5zaW9uIChmaWxlUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkLCBleHRlbnRpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISFmaWxlUGF0aCAmJiBleHRuYW1lKGZpbGVQYXRoKSA9PT0gZXh0ZW50aW9uO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaXNKU0NvbmZpZ3VyYXRpb24gKGZpbGVQYXRoID0gdGhpcy5maWxlUGF0aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gQ29uZmlndXJhdGlvbi5faGFzRXh0ZW5zaW9uKGZpbGVQYXRoLCBFeHRlbnNpb25zLmpzKSB8fCBDb25maWd1cmF0aW9uLl9oYXNFeHRlbnNpb24oZmlsZVBhdGgsIEV4dGVuc2lvbnMuY2pzKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2lzSlNPTkNvbmZpZ3VyYXRpb24gKGZpbGVQYXRoID0gdGhpcy5maWxlUGF0aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gQ29uZmlndXJhdGlvbi5faGFzRXh0ZW5zaW9uKGZpbGVQYXRoLCBFeHRlbnNpb25zLmpzb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBfcmVhZEpzQ29uZmlndXJhdGlvbkZpbGVDb250ZW50IChmaWxlUGF0aCA9IHRoaXMuZmlsZVBhdGgpOiBvYmplY3QgfCBudWxsIHtcbiAgICAgICAgaWYgKGZpbGVQYXRoKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW2ZpbGVQYXRoXTtcblxuICAgICAgICAgICAgICAgIHJldHVybiByZXF1aXJlKGZpbGVQYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbi5fc2hvd1dhcm5pbmdGb3JFcnJvcihlcnJvciwgV0FSTklOR19NRVNTQUdFUy5jYW5ub3RSZWFkQ29uZmlnRmlsZSwgZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIF9yZWFkQ29uZmlndXJhdGlvbkZpbGVDb250ZW50IChmaWxlUGF0aCA9IHRoaXMuZmlsZVBhdGgpOiBQcm9taXNlPEJ1ZmZlciB8IG51bGw+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCByZWFkRmlsZShmaWxlUGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgIENvbmZpZ3VyYXRpb24uX3Nob3dXYXJuaW5nRm9yRXJyb3IoZXJyb3IsIFdBUk5JTkdfTUVTU0FHRVMuY2Fubm90UmVhZENvbmZpZ0ZpbGUsIGZpbGVQYXRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhcnNlQ29uZmlndXJhdGlvbkZpbGVDb250ZW50IChjb25maWd1cmF0aW9uRmlsZUNvbnRlbnQ6IEJ1ZmZlciwgZmlsZVBhdGggPSB0aGlzLmZpbGVQYXRoKTogb2JqZWN0IHwgbnVsbCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTjUucGFyc2UoY29uZmlndXJhdGlvbkZpbGVDb250ZW50LnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgICBDb25maWd1cmF0aW9uLl9zaG93V2FybmluZ0ZvckVycm9yKGVycm9yLCBXQVJOSU5HX01FU1NBR0VTLmNhbm5vdFBhcnNlQ29uZmlnRmlsZSwgZmlsZVBhdGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9lbnN1cmVBcnJheU9wdGlvbiAobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9vcHRpb25zW25hbWVdO1xuXG4gICAgICAgIGlmICghb3B0aW9ucylcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAvLyBOT1RFOiBhIGhhY2sgdG8gZml4IGxvZGFzaCB0eXBlIGRlZmluaXRpb25zXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgb3B0aW9ucy52YWx1ZSA9IGNhc3RBcnJheShvcHRpb25zLnZhbHVlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2Vuc3VyZU9wdGlvbiAobmFtZTogc3RyaW5nLCB2YWx1ZTogT3B0aW9uVmFsdWUsIHNvdXJjZTogT3B0aW9uU291cmNlKTogT3B0aW9uIHtcbiAgICAgICAgbGV0IG9wdGlvbiA9IG51bGw7XG5cbiAgICAgICAgaWYgKG5hbWUgaW4gdGhpcy5fb3B0aW9ucylcbiAgICAgICAgICAgIG9wdGlvbiA9IHRoaXMuX29wdGlvbnNbbmFtZV07XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb3B0aW9uID0gbmV3IE9wdGlvbihuYW1lLCB2YWx1ZSwgc291cmNlKTtcblxuICAgICAgICAgICAgdGhpcy5fb3B0aW9uc1tuYW1lXSA9IG9wdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvcHRpb247XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9lbnN1cmVPcHRpb25XaXRoVmFsdWUgKG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBPcHRpb25WYWx1ZSwgc291cmNlOiBPcHRpb25Tb3VyY2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5fZW5zdXJlT3B0aW9uKG5hbWUsIGRlZmF1bHRWYWx1ZSwgc291cmNlKTtcblxuICAgICAgICBpZiAob3B0aW9uLnZhbHVlICE9PSB2b2lkIDApXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgb3B0aW9uLnZhbHVlICA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgb3B0aW9uLnNvdXJjZSA9IHNvdXJjZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2FkZE92ZXJyaWRkZW5PcHRpb25JZk5lY2Vzc2FyeSAodmFsdWUxOiBPcHRpb25WYWx1ZSwgdmFsdWUyOiBPcHRpb25WYWx1ZSwgc291cmNlOiBPcHRpb25Tb3VyY2UsIG9wdGlvbk5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoc291cmNlID09PSBPcHRpb25Tb3VyY2UuRGVmYXVsdClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBpZiAodmFsdWUxID09PSB2b2lkIDAgfHwgdmFsdWUyID09PSB2b2lkIDAgfHwgdmFsdWUxID09PSB2YWx1ZTIgfHwgc291cmNlICE9PSBPcHRpb25Tb3VyY2UuQ29uZmlndXJhdGlvbilcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLl9vdmVycmlkZGVuT3B0aW9ucy5wdXNoKG9wdGlvbk5hbWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfc2V0T3B0aW9uVmFsdWUgKG9wdGlvbjogT3B0aW9uLCB2YWx1ZTogT3B0aW9uVmFsdWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzUGxhaW5PYmplY3Qob3B0aW9uLnZhbHVlKSAmJiBpc1BsYWluT2JqZWN0KHZhbHVlKSlcbiAgICAgICAgICAgIHRoaXMubWVyZ2VEZWVwKG9wdGlvbiwgdmFsdWUgYXMgb2JqZWN0KTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9hZGRPdmVycmlkZGVuT3B0aW9uSWZOZWNlc3Nhcnkob3B0aW9uLnZhbHVlLCB2YWx1ZSwgb3B0aW9uLnNvdXJjZSwgb3B0aW9uLm5hbWUpO1xuXG4gICAgICAgICAgICBvcHRpb24udmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIG9wdGlvbi5zb3VyY2UgPSBPcHRpb25Tb3VyY2UuSW5wdXQ7XG4gICAgfVxufVxuIl19
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQTJDO0FBQzNDLGtEQUEwQjtBQUMxQixrREFBMEI7QUFFMUIsbUNBS2dCO0FBRWhCLDBFQUFnRTtBQUNoRSxzREFBOEI7QUFDOUIsb0VBQTJDO0FBQzNDLHVHQUE0RTtBQUM1RSwrRUFBc0Q7QUFDdEQsdUZBQWdFO0FBQ2hFLHFEQUE2QjtBQUU3Qix3REFBbUM7QUFDbkMsK0NBQXdEO0FBQ3hELDJDQUFpRDtBQUVqRCxNQUFNLFlBQVksR0FBRyxJQUFBLGVBQUssRUFBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBRXJELE1BQXFCLGFBQWE7SUFNOUIsWUFBb0IsdUJBQWlEOztRQUNqRSxJQUFJLENBQUMsUUFBUSxHQUFhLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFRLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxTQUFTLEdBQVksTUFBQSxJQUFJLENBQUMsYUFBYSwwQ0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFUyxNQUFNLENBQUMsUUFBUSxDQUFFLEdBQVc7UUFDbEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDekMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksZ0JBQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFD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O1lBQy9CLE9BQU87UUFFWCxJQUFJLE1BQU0sS0FBSyxLQUFLLENBQUMsSUFBSSxNQUFNLEtBQUssS0FBSyxDQUFDLElBQUksTUFBTSxLQUFLLE1BQU0sSUFBSSxNQUFNLEtBQUssdUJBQVksQ0FBQyxhQUFhO1lBQ3BHLE9BQU87UUFFWCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFUyxlQUFlLENBQUUsTUFBYyxFQUFFLEtBQWtCO1FBQ3pELElBQUksSUFBQSxzQkFBYSxFQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFBLHNCQUFhLEVBQUMsS0FBSyxDQUFDO1lBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEtBQWUsQ0FBQyxDQUFDO2FBQ3ZDO1lBQ0QsSUFBSSxDQUFDLCtCQUErQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXRGLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3hCO1FBRUQsTUFBTSxDQUFDLE1BQU0sR0FBRyx1QkFBWSxDQUFDLEtBQUssQ0FBQztJQUN2QyxDQUFDO0NBQ0o7QUE1UkQsZ0NBNFJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0bmFtZSwgaXNBYnNvbHV0ZSB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBKU09ONSBmcm9tICdqc29uNSc7XG5cbmltcG9ydCB7XG4gICAgY2FzdEFycmF5LFxuICAgIGNsb25lRGVlcCxcbiAgICBpc1BsYWluT2JqZWN0LFxuICAgIG1lcmdlV2l0aCxcbn0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgcmVhZEZpbGUsIHN0YXQgfSBmcm9tICcuLi91dGlscy9wcm9taXNpZmllZC1mdW5jdGlvbnMnO1xuaW1wb3J0IE9wdGlvbiBmcm9tICcuL29wdGlvbic7XG5pbXBvcnQgT3B0aW9uU291cmNlIGZyb20gJy4vb3B0aW9uLXNvdXJjZSc7XG5pbXBvcnQgcmVzb2x2ZVBhdGhSZWxhdGl2ZWx5Q3dkIGZyb20gJy4uL3V0aWxzL3Jlc29sdmUtcGF0aC1yZWxhdGl2ZWx5LWN3ZCc7XG5pbXBvcnQgcmVuZGVyVGVtcGxhdGUgZnJvbSAnLi4vdXRpbHMvcmVuZGVyLXRlbXBsYXRlJztcbmltcG9ydCBXQVJOSU5HX01FU1NBR0VTIGZyb20gJy4uL25vdGlmaWNhdGlvbnMvd2FybmluZy1tZXNzYWdlJztcbmltcG9ydCBsb2cgZnJvbSAnLi4vY2xpL2xvZyc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCBFeHRlbnNpb25zIGZyb20gJy4vZm9ybWF0cyc7XG5pbXBvcnQgeyBSZWFkQ29uZmlnRmlsZUVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi9lcnJvcnMvdHlwZXMnO1xuXG5jb25zdCBERUJVR19MT0dHRVIgPSBkZWJ1ZygndGVzdGNhZmU6Y29uZmlndXJhdGlvbicpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25maWd1cmF0aW9uIHtcbiAgICBwcm90ZWN0ZWQgX29wdGlvbnM6IERpY3Rpb25hcnk8T3B0aW9uPjtcbiAgICBwcm90ZWN0ZWQgX2ZpbGVQYXRoPzogc3RyaW5nO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfZGVmYXVsdFBhdGhzPzogc3RyaW5nW107XG4gICAgcHJvdGVjdGVkIF9vdmVycmlkZGVuT3B0aW9uczogc3RyaW5nW107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGNvbmZpZ3VyYXRpb25GaWxlc05hbWVzOiBzdHJpbmcgfCBudWxsIHwgc3RyaW5nW10pIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyAgICAgICAgICAgPSB7fTtcbiAgICAgICAgdGhpcy5fZGVmYXVsdFBhdGhzICAgICAgPSB0aGlzLl9yZXNvbHZlRmlsZVBhdGhzKGNvbmZpZ3VyYXRpb25GaWxlc05hbWVzKTtcbiAgICAgICAgdGhpcy5fZmlsZVBhdGggICAgICAgICAgPSB0aGlzLl9kZWZhdWx0UGF0aHM/LlswXTtcbiAgICAgICAgdGhpcy5fb3ZlcnJpZGRlbk9wdGlvbnMgPSBbXTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9mcm9tT2JqIChvYmo6IG9iamVjdCk6IERpY3Rpb25hcnk8T3B0aW9uPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMob2JqKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gbmV3IE9wdGlvbihrZXksIHZhbHVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9zaG93Q29uc29sZVdhcm5pbmcgKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBsb2cud3JpdGUobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX3Rocm93UmVhZENvbmZpZ0Vycm9yIChjb2RlOiBzdHJpbmcsIGVycm9yOiBFcnJvciwgcGF0aDogc3RyaW5nLCByZW5kZXJDYWxsc2l0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCByZWFkQ29uZmlnRXJyb3IgPSBuZXcgUmVhZENvbmZpZ0ZpbGVFcnJvcihjb2RlLCBlcnJvciwgcGF0aCwgcmVuZGVyQ2FsbHNpdGUpO1xuXG4gICAgICAgIERFQlVHX0xPR0dFUihyZWFkQ29uZmlnRXJyb3IubWVzc2FnZSk7XG4gICAgICAgIERFQlVHX0xPR0dFUihlcnJvcik7XG5cbiAgICAgICAgdGhyb3cgcmVhZENvbmZpZ0Vycm9yO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9yZXNvbHZlRmlsZVBhdGggKHBhdGg6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKCFwYXRoKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgcmV0dXJuIGlzQWJzb2x1dGUocGF0aCkgPyBwYXRoIDogcmVzb2x2ZVBhdGhSZWxhdGl2ZWx5Q3dkKHBhdGgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Jlc29sdmVGaWxlUGF0aHMgKGZpbGVzTmFtZXM6IHN0cmluZyB8IG51bGwgfCBzdHJpbmdbXSk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFmaWxlc05hbWVzKVxuICAgICAgICAgICAgcmV0dXJuIHZvaWQgMDtcblxuICAgICAgICByZXR1cm4gY2FzdEFycmF5KGZpbGVzTmFtZXMpLnJlZHVjZSgocmVzdWx0LCBuYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXNvbHZlRmlsZVBhdGggPSBDb25maWd1cmF0aW9uLl9yZXNvbHZlRmlsZVBhdGgobmFtZSk7XG5cbiAgICAgICAgICAgIGlmIChyZXNvbHZlRmlsZVBhdGgpXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocmVzb2x2ZUZpbGVQYXRoKTtcblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSwgW10gYXMgc3RyaW5nW10pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0ICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5fb3ZlcnJpZGRlbk9wdGlvbnMgPSBbXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWVyZ2VPcHRpb25zIChvcHRpb25zOiBvYmplY3QpOiB2b2lkIHtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMob3B0aW9ucykubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuX2Vuc3VyZU9wdGlvbihrZXksIHZhbHVlLCBPcHRpb25Tb3VyY2UuSW5wdXQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHZvaWQgMClcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIHRoaXMuX3NldE9wdGlvblZhbHVlKG9wdGlvbiwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbWVyZ2VEZWVwIChvcHRpb246IE9wdGlvbiwgc291cmNlOiBvYmplY3QpOiB2b2lkIHtcbiAgICAgICAgbWVyZ2VXaXRoKG9wdGlvbi52YWx1ZSwgc291cmNlLCAodGFyZ2V0VmFsdWU6IE9wdGlvblZhbHVlLCBzb3VyY2VWYWx1ZTogT3B0aW9uVmFsdWUsIHByb3BlcnR5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2FkZE92ZXJyaWRkZW5PcHRpb25JZk5lY2Vzc2FyeSh0YXJnZXRWYWx1ZSwgc291cmNlVmFsdWUsIG9wdGlvbi5zb3VyY2UsIGAke29wdGlvbi5uYW1lfS4ke3Byb3BlcnR5fWApO1xuXG4gICAgICAgICAgICByZXR1cm4gc291cmNlVmFsdWUgIT09IHZvaWQgMCA/IHNvdXJjZVZhbHVlIDogdGFyZ2V0VmFsdWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZ2V0T3B0aW9uIChrZXk6IHN0cmluZyk6IE9wdGlvblZhbHVlIHtcbiAgICAgICAgaWYgKCFrZXkpXG4gICAgICAgICAgICByZXR1cm4gdm9pZCAwO1xuXG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuX29wdGlvbnNba2V5XTtcblxuICAgICAgICBpZiAoIW9wdGlvbilcbiAgICAgICAgICAgIHJldHVybiB2b2lkIDA7XG5cbiAgICAgICAgcmV0dXJuIG9wdGlvbi52YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0T3B0aW9uPFR5cGU+IChrZXk6IHN0cmluZyk6IFR5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKGtleSkgYXMgVHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0T3B0aW9ucyAocHJlZGljYXRlPzogKG5hbWU6IHN0cmluZywgb3B0aW9uOiBPcHRpb24pID0+IGJvb2xlYW4pOiBEaWN0aW9uYXJ5PE9wdGlvblZhbHVlPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCAgICAgICAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICBsZXQgaW5jbHVkZUluUmVzdWx0ID0gdHJ1ZTtcblxuICAgICAgICBPYmplY3QuZW50cmllcyh0aGlzLl9vcHRpb25zKS5mb3JFYWNoKChbbmFtZSwgb3B0aW9uXSkgPT4ge1xuICAgICAgICAgICAgaW5jbHVkZUluUmVzdWx0ID0gcHJlZGljYXRlID8gcHJlZGljYXRlKG5hbWUsIG9wdGlvbikgOiB0cnVlO1xuXG4gICAgICAgICAgICBpZiAoaW5jbHVkZUluUmVzdWx0KVxuICAgICAgICAgICAgICAgIHJlc3VsdFtuYW1lXSA9IG9wdGlvbi52YWx1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvbmUgKG5vbkNsb25lZE9wdGlvbnM/OiBzdHJpbmcgfCBzdHJpbmdbXSk6IENvbmZpZ3VyYXRpb24ge1xuICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gY2xvbmVEZWVwKHRoaXMpO1xuXG4gICAgICAgIGlmIChub25DbG9uZWRPcHRpb25zKSB7XG4gICAgICAgICAgICBjYXN0QXJyYXkobm9uQ2xvbmVkT3B0aW9ucykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uLl9vcHRpb25zW2tleV0pXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uX29wdGlvbnNba2V5XS52YWx1ZSA9IHRoaXMuX29wdGlvbnNba2V5XS52YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWxlUGF0aCAoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVQYXRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGVmYXVsdFBhdGhzICgpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0UGF0aHM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIF9sb2FkICgpOiBQcm9taXNlPG51bGwgfCBvYmplY3Q+IHtcbiAgICAgICAgaWYgKCF0aGlzLmRlZmF1bHRQYXRocz8ubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgY29uc3QgY29uZmlncyA9IGF3YWl0IFByb21pc2UuYWxsKHRoaXMuZGVmYXVsdFBhdGhzLm1hcChhc3luYyBmaWxlUGF0aCA9PiB7XG4gICAgICAgICAgICBpZiAoIWF3YWl0IHRoaXMuX2lzQ29uZmlndXJhdGlvbkZpbGVFeGlzdHMoZmlsZVBhdGgpKVxuICAgICAgICAgICAgICAgIHJldHVybiB7IGZpbGVQYXRoLCBvcHRpb25zOiBudWxsIH07XG5cbiAgICAgICAgICAgIGxldCBvcHRpb25zID0gbnVsbCBhcyBvYmplY3QgfCBudWxsO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5faXNKU0NvbmZpZ3VyYXRpb24oZmlsZVBhdGgpKVxuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLl9yZWFkSnNDb25maWd1cmF0aW9uRmlsZUNvbnRlbnQoZmlsZVBhdGgpO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29uZmlndXJhdGlvbkZpbGVDb250ZW50ID0gYXdhaXQgdGhpcy5fcmVhZENvbmZpZ3VyYXRpb25GaWxlQ29udGVudChmaWxlUGF0aCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbkZpbGVDb250ZW50KVxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gdGhpcy5fcGFyc2VDb25maWd1cmF0aW9uRmlsZUNvbnRlbnQoY29uZmlndXJhdGlvbkZpbGVDb250ZW50LCBmaWxlUGF0aCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7IGZpbGVQYXRoLCBvcHRpb25zIH07XG4gICAgICAgIH0pKTtcblxuICAgICAgICBjb25zdCBleGlzdGVkQ29uZmlncyA9IGNvbmZpZ3MuZmlsdGVyKGNvbmZpZyA9PiAhIWNvbmZpZy5vcHRpb25zKTtcblxuICAgICAgICBpZiAoIWV4aXN0ZWRDb25maWdzLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgIHRoaXMuX2ZpbGVQYXRoID0gZXhpc3RlZENvbmZpZ3NbMF0uZmlsZVBhdGg7XG5cbiAgICAgICAgaWYgKGV4aXN0ZWRDb25maWdzLmxlbmd0aCA+IDEpXG4gICAgICAgICAgICBDb25maWd1cmF0aW9uLl9zaG93Q29uc29sZVdhcm5pbmcocmVuZGVyVGVtcGxhdGUoV0FSTklOR19NRVNTQUdFUy5tdWx0aXBsZUNvbmZpZ3VyYXRpb25GaWxlc0ZvdW5kLCB0aGlzLl9maWxlUGF0aCkpO1xuXG4gICAgICAgIHJldHVybiBleGlzdGVkQ29uZmlnc1swXS5vcHRpb25zO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBfaXNDb25maWd1cmF0aW9uRmlsZUV4aXN0cyAoZmlsZVBhdGggPSB0aGlzLmZpbGVQYXRoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBzdGF0KGZpbGVQYXRoKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgIERFQlVHX0xPR0dFUihyZW5kZXJUZW1wbGF0ZShXQVJOSU5HX01FU1NBR0VTLmNhbm5vdEZpbmRDb25maWd1cmF0aW9uRmlsZSwgZmlsZVBhdGgsIGVycm9yLnN0YWNrKSk7XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9oYXNFeHRlbnNpb24gKGZpbGVQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQsIGV4dGVudGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIWZpbGVQYXRoICYmIGV4dG5hbWUoZmlsZVBhdGgpID09PSBleHRlbnRpb247XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9pc0pTQ29uZmlndXJhdGlvbiAoZmlsZVBhdGggPSB0aGlzLmZpbGVQYXRoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBDb25maWd1cmF0aW9uLl9oYXNFeHRlbnNpb24oZmlsZVBhdGgsIEV4dGVuc2lvbnMuanMpIHx8IENvbmZpZ3VyYXRpb24uX2hhc0V4dGVuc2lvbihmaWxlUGF0aCwgRXh0ZW5zaW9ucy5janMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaXNKU09OQ29uZmlndXJhdGlvbiAoZmlsZVBhdGggPSB0aGlzLmZpbGVQYXRoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBDb25maWd1cmF0aW9uLl9oYXNFeHRlbnNpb24oZmlsZVBhdGgsIEV4dGVuc2lvbnMuanNvbik7XG4gICAgfVxuXG4gICAgcHVibGljIF9yZWFkSnNDb25maWd1cmF0aW9uRmlsZUNvbnRlbnQgKGZpbGVQYXRoID0gdGhpcy5maWxlUGF0aCk6IG9iamVjdCB8IG51bGwge1xuICAgICAgICBpZiAoZmlsZVBhdGgpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHJlcXVpcmUuY2FjaGVbZmlsZVBhdGhdO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmUoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uLl90aHJvd1JlYWRDb25maWdFcnJvcihSVU5USU1FX0VSUk9SUy5jYW5ub3RSZWFkQ29uZmlnRmlsZSwgZXJyb3IsIGZpbGVQYXRoLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBfcmVhZENvbmZpZ3VyYXRpb25GaWxlQ29udGVudCAoZmlsZVBhdGggPSB0aGlzLmZpbGVQYXRoKTogUHJvbWlzZTxCdWZmZXIgfCBudWxsPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgcmVhZEZpbGUoZmlsZVBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgICBDb25maWd1cmF0aW9uLl90aHJvd1JlYWRDb25maWdFcnJvcihSVU5USU1FX0VSUk9SUy5jYW5ub3RSZWFkQ29uZmlnRmlsZSwgZXJyb3IsIGZpbGVQYXRoIHx8ICcnLCBmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZUNvbmZpZ3VyYXRpb25GaWxlQ29udGVudCAoY29uZmlndXJhdGlvbkZpbGVDb250ZW50OiBCdWZmZXIsIGZpbGVQYXRoID0gdGhpcy5maWxlUGF0aCk6IG9iamVjdCB8IG51bGwge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIEpTT041LnBhcnNlKGNvbmZpZ3VyYXRpb25GaWxlQ29udGVudC50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgQ29uZmlndXJhdGlvbi5fdGhyb3dSZWFkQ29uZmlnRXJyb3IoUlVOVElNRV9FUlJPUlMuY2Fubm90UGFyc2VDb25maWdGaWxlLCBlcnJvciwgZmlsZVBhdGggfHwgJycsIGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZW5zdXJlQXJyYXlPcHRpb24gKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fb3B0aW9uc1tuYW1lXTtcblxuICAgICAgICBpZiAoIW9wdGlvbnMpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgLy8gTk9URTogYSBoYWNrIHRvIGZpeCBsb2Rhc2ggdHlwZSBkZWZpbml0aW9uc1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIG9wdGlvbnMudmFsdWUgPSBjYXN0QXJyYXkob3B0aW9ucy52YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9lbnN1cmVPcHRpb24gKG5hbWU6IHN0cmluZywgdmFsdWU6IE9wdGlvblZhbHVlLCBzb3VyY2U6IE9wdGlvblNvdXJjZSk6IE9wdGlvbiB7XG4gICAgICAgIGxldCBvcHRpb24gPSBudWxsO1xuXG4gICAgICAgIGlmIChuYW1lIGluIHRoaXMuX29wdGlvbnMpXG4gICAgICAgICAgICBvcHRpb24gPSB0aGlzLl9vcHRpb25zW25hbWVdO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvbiA9IG5ldyBPcHRpb24obmFtZSwgdmFsdWUsIHNvdXJjZSk7XG5cbiAgICAgICAgICAgIHRoaXMuX29wdGlvbnNbbmFtZV0gPSBvcHRpb247XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZW5zdXJlT3B0aW9uV2l0aFZhbHVlIChuYW1lOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogT3B0aW9uVmFsdWUsIHNvdXJjZTogT3B0aW9uU291cmNlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuX2Vuc3VyZU9wdGlvbihuYW1lLCBkZWZhdWx0VmFsdWUsIHNvdXJjZSk7XG5cbiAgICAgICAgaWYgKG9wdGlvbi52YWx1ZSAhPT0gdm9pZCAwKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIG9wdGlvbi52YWx1ZSAgPSBkZWZhdWx0VmFsdWU7XG4gICAgICAgIG9wdGlvbi5zb3VyY2UgPSBzb3VyY2U7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9hZGRPdmVycmlkZGVuT3B0aW9uSWZOZWNlc3NhcnkgKHZhbHVlMTogT3B0aW9uVmFsdWUsIHZhbHVlMjogT3B0aW9uVmFsdWUsIHNvdXJjZTogT3B0aW9uU291cmNlLCBvcHRpb25OYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHNvdXJjZSA9PT0gT3B0aW9uU291cmNlLkRlZmF1bHQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgaWYgKHZhbHVlMSA9PT0gdm9pZCAwIHx8IHZhbHVlMiA9PT0gdm9pZCAwIHx8IHZhbHVlMSA9PT0gdmFsdWUyIHx8IHNvdXJjZSAhPT0gT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5fb3ZlcnJpZGRlbk9wdGlvbnMucHVzaChvcHRpb25OYW1lKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3NldE9wdGlvblZhbHVlIChvcHRpb246IE9wdGlvbiwgdmFsdWU6IE9wdGlvblZhbHVlKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1BsYWluT2JqZWN0KG9wdGlvbi52YWx1ZSkgJiYgaXNQbGFpbk9iamVjdCh2YWx1ZSkpXG4gICAgICAgICAgICB0aGlzLm1lcmdlRGVlcChvcHRpb24sIHZhbHVlIGFzIG9iamVjdCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fYWRkT3ZlcnJpZGRlbk9wdGlvbklmTmVjZXNzYXJ5KG9wdGlvbi52YWx1ZSwgdmFsdWUsIG9wdGlvbi5zb3VyY2UsIG9wdGlvbi5uYW1lKTtcblxuICAgICAgICAgICAgb3B0aW9uLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBvcHRpb24uc291cmNlID0gT3B0aW9uU291cmNlLklucHV0O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getDefaultCompilerOptions = exports.TYPESCRIPT_BLACKLISTED_OPTIONS = exports.TYPESCRIPT_COMPILER_NON_OVERRIDABLE_OPTIONS = exports.DEFAULT_TYPESCRIPT_COMPILER_OPTIONS = exports.DEFAULT_DISABLE_CROSS_DOMAIN = exports.DEFAULT_FILTER_FN = exports.DEFAULT_SCREENSHOT_THUMBNAILS = exports.
|
|
6
|
+
exports.getDefaultCompilerOptions = exports.TYPESCRIPT_BLACKLISTED_OPTIONS = exports.TYPESCRIPT_COMPILER_NON_OVERRIDABLE_OPTIONS = exports.DEFAULT_TYPESCRIPT_COMPILER_OPTIONS = exports.DEFAULT_DISABLE_CROSS_DOMAIN = exports.DEFAULT_FILTER_FN = exports.DEFAULT_SCREENSHOT_THUMBNAILS = exports.DEFAULT_DISABLE_NATIVE_AUTOMATION = exports.DEFAULT_DISABLE_HTTP2 = exports.DEFAULT_RETRY_TEST_PAGES = exports.DEFAULT_DEVELOPMENT_MODE = exports.DEFAULT_SOURCE_DIRECTORIES = exports.DEFAULT_CONCURRENCY_VALUE = exports.DEFAULT_APP_INIT_DELAY = exports.DEFAULT_SPEED_VALUE = exports.DEFAULT_TIMEOUT = void 0;
|
|
7
7
|
const customizable_compilers_1 = __importDefault(require("./customizable-compilers"));
|
|
8
8
|
exports.DEFAULT_TIMEOUT = {
|
|
9
9
|
selector: 10000,
|
|
@@ -17,7 +17,7 @@ exports.DEFAULT_SOURCE_DIRECTORIES = ['tests', 'test'];
|
|
|
17
17
|
exports.DEFAULT_DEVELOPMENT_MODE = false;
|
|
18
18
|
exports.DEFAULT_RETRY_TEST_PAGES = false;
|
|
19
19
|
exports.DEFAULT_DISABLE_HTTP2 = false;
|
|
20
|
-
exports.
|
|
20
|
+
exports.DEFAULT_DISABLE_NATIVE_AUTOMATION = false;
|
|
21
21
|
exports.DEFAULT_SCREENSHOT_THUMBNAILS = true;
|
|
22
22
|
exports.DEFAULT_FILTER_FN = null;
|
|
23
23
|
exports.DEFAULT_DISABLE_CROSS_DOMAIN = false;
|
|
@@ -54,4 +54,4 @@ function getDefaultCompilerOptions() {
|
|
|
54
54
|
return Object.assign({}, DEFAULT_COMPILER_OPTIONS);
|
|
55
55
|
}
|
|
56
56
|
exports.getDefaultCompilerOptions = getDefaultCompilerOptions;
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC12YWx1ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlndXJhdGlvbi9kZWZhdWx0LXZhbHVlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxzRkFBNkQ7QUFFaEQsUUFBQSxlQUFlLEdBQUc7SUFDM0IsUUFBUSxFQUFHLEtBQUs7SUFDaEIsU0FBUyxFQUFFLElBQUk7SUFDZixRQUFRLEVBQUcsSUFBSTtDQUNsQixDQUFDO0FBRVcsUUFBQSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7QUFFeEIsUUFBQSxzQkFBc0IsR0FBRyxJQUFJLENBQUM7QUFFOUIsUUFBQSx5QkFBeUIsR0FBRyxDQUFDLENBQUM7QUFFOUIsUUFBQSwwQkFBMEIsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUUvQyxRQUFBLHdCQUF3QixHQUFZLEtBQUssQ0FBQztBQUMxQyxRQUFBLHdCQUF3QixHQUFZLEtBQUssQ0FBQztBQUMxQyxRQUFBLHFCQUFxQixHQUFlLEtBQUssQ0FBQztBQUMxQyxRQUFBLGlDQUFpQyxHQUFHLEtBQUssQ0FBQztBQUMxQyxRQUFBLDZCQUE2QixHQUFPLElBQUksQ0FBQztBQUN6QyxRQUFBLGlCQUFpQixHQUFtQixJQUFJLENBQUM7QUFDekMsUUFBQSw0QkFBNEIsR0FBTyxLQUFLLENBQUM7QUFFekMsUUFBQSxtQ0FBbUMsR0FBaUM7SUFDN0Usc0JBQXNCLEVBQUcsSUFBSTtJQUM3QixxQkFBcUIsRUFBSSxJQUFJO0lBQzdCLE9BQU8sRUFBa0IsSUFBSTtJQUM3QixNQUFNLEVBQW1CLElBQUk7SUFDN0IsZUFBZSxFQUFVLElBQUk7SUFDN0IsYUFBYSxFQUFZLEtBQUs7SUFDOUIsTUFBTSxFQUFtQixDQUFDLENBQUMsNEJBQTRCO0lBQ3ZELGdCQUFnQixFQUFTLENBQUMsQ0FBQyxrQ0FBa0M7SUFDN0QsTUFBTSxFQUFtQixDQUFDLENBQUMsNEJBQTRCO0lBQ3ZELEdBQUcsRUFBc0IsQ0FBQyxDQUFDLHNCQUFzQjtJQUNqRCx1QkFBdUIsRUFBRSxJQUFJO0lBQzdCLFlBQVksRUFBYSxJQUFJO0NBQ2hDLENBQUM7QUFFVyxRQUFBLDJDQUEyQyxHQUFHLENBQUMsUUFBUSxFQUFFLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBRXZGLFFBQUEsOEJBQThCLEdBQUc7SUFDMUMsYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixxQkFBcUI7SUFDckIsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixXQUFXO0lBQ1gsU0FBUztJQUNULEtBQUs7Q0FDUixDQUFDO0FBRUYsTUFBTSx3QkFBd0IsR0FBRztJQUM3QixDQUFDLGdDQUFxQixDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUU7Q0FDekMsQ0FBQztBQUVGLFNBQWdCLHlCQUF5QjtJQUNyQyx5RkFBeUY7SUFDekYsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0FBQ3ZELENBQUM7QUFIRCw4REFHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IEN1c3RvbWl6YWJsZUNvbXBpbGVycyBmcm9tICcuL2N1c3RvbWl6YWJsZS1jb21waWxlcnMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9USU1FT1VUID0ge1xuICAgIHNlbGVjdG9yOiAgMTAwMDAsXG4gICAgYXNzZXJ0aW9uOiAzMDAwLFxuICAgIHBhZ2VMb2FkOiAgMzAwMCxcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NQRUVEX1ZBTFVFID0gMTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQVBQX0lOSVRfREVMQVkgPSAxMDAwO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9DT05DVVJSRU5DWV9WQUxVRSA9IDE7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NPVVJDRV9ESVJFQ1RPUklFUyA9IFsndGVzdHMnLCAndGVzdCddO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9ERVZFTE9QTUVOVF9NT0RFICAgICAgICAgID0gZmFsc2U7XG5leHBvcnQgY29uc3QgREVGQVVMVF9SRVRSWV9URVNUX1BBR0VTICAgICAgICAgID0gZmFsc2U7XG5leHBvcnQgY29uc3QgREVGQVVMVF9ESVNBQkxFX0hUVFAyICAgICAgICAgICAgID0gZmFsc2U7XG5leHBvcnQgY29uc3QgREVGQVVMVF9ESVNBQkxFX05BVElWRV9BVVRPTUFUSU9OID0gZmFsc2U7XG5leHBvcnQgY29uc3QgREVGQVVMVF9TQ1JFRU5TSE9UX1RIVU1CTkFJTFMgICAgID0gdHJ1ZTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZJTFRFUl9GTiAgICAgICAgICAgICAgICAgPSBudWxsO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRElTQUJMRV9DUk9TU19ET01BSU4gICAgID0gZmFsc2U7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1RZUEVTQ1JJUFRfQ09NUElMRVJfT1BUSU9OUzogRGljdGlvbmFyeTxib29sZWFuIHwgbnVtYmVyPiA9IHtcbiAgICBleHBlcmltZW50YWxEZWNvcmF0b3JzOiAgdHJ1ZSxcbiAgICBlbWl0RGVjb3JhdG9yTWV0YWRhdGE6ICAgdHJ1ZSxcbiAgICBhbGxvd0pzOiAgICAgICAgICAgICAgICAgdHJ1ZSxcbiAgICBwcmV0dHk6ICAgICAgICAgICAgICAgICAgdHJ1ZSxcbiAgICBpbmxpbmVTb3VyY2VNYXA6ICAgICAgICAgdHJ1ZSxcbiAgICBub0ltcGxpY2l0QW55OiAgICAgICAgICAgZmFsc2UsXG4gICAgbW9kdWxlOiAgICAgICAgICAgICAgICAgIDEgLyogdHMuTW9kdWxlS2luZC5Db21tb25KUyAqLyxcbiAgICBtb2R1bGVSZXNvbHV0aW9uOiAgICAgICAgMiAvKiB0cy5Nb2R1bGVSZXNvbHV0aW9uS2luZC5Ob2RlICovLFxuICAgIHRhcmdldDogICAgICAgICAgICAgICAgICAzIC8qIHRzLlNjcmlwdFRhcmdldC5FUzIwMTYgKi8sXG4gICAganN4OiAgICAgICAgICAgICAgICAgICAgIDIgLyogdHMuSnN4RW1pdC5SZWFjdCAqLyxcbiAgICBzdXBwcmVzc091dHB1dFBhdGhDaGVjazogdHJ1ZSxcbiAgICBza2lwTGliQ2hlY2s6ICAgICAgICAgICAgdHJ1ZSxcbn07XG5cbmV4cG9ydCBjb25zdCBUWVBFU0NSSVBUX0NPTVBJTEVSX05PTl9PVkVSUklEQUJMRV9PUFRJT05TID0gWydtb2R1bGUnLCAnbW9kdWxlUmVzb2x1dGlvbicsICd0YXJnZXQnXTtcblxuZXhwb3J0IGNvbnN0IFRZUEVTQ1JJUFRfQkxBQ0tMSVNURURfT1BUSU9OUyA9IFtcbiAgICAnaW5jcmVtZW50YWwnLFxuICAgICd0c0J1aWxkSW5mb0ZpbGUnLFxuICAgICdlbWl0RGVjbGFyYXRpb25Pbmx5JyxcbiAgICAnZGVjbGFyYXRpb25NYXAnLFxuICAgICdkZWNsYXJhdGlvbkRpcicsXG4gICAgJ2NvbXBvc2l0ZScsXG4gICAgJ291dEZpbGUnLFxuICAgICdvdXQnLFxuXTtcblxuY29uc3QgREVGQVVMVF9DT01QSUxFUl9PUFRJT05TID0ge1xuICAgIFtDdXN0b21pemFibGVDb21waWxlcnMudHlwZXNjcmlwdF06IHt9LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRDb21waWxlck9wdGlvbnMgKCk6IG9iamVjdCB7XG4gICAgLy8gTk9URTogUmV0dXJuIHRoZSBjb3B5IG9mIHRoZSBjb25zdGFudCB0byBwcmV2ZW50IHRoZSBtb2RpZmljYXRpb24gb2Ygb2JqZWN0IHByb3BlcnRpZXNcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9DT01QSUxFUl9PUFRJT05TKTtcbn1cbiJdfQ==
|
|
@@ -47,7 +47,7 @@ var OptionNames;
|
|
|
47
47
|
OptionNames["debugLogger"] = "debugLogger";
|
|
48
48
|
OptionNames["disableMultipleWindows"] = "disableMultipleWindows";
|
|
49
49
|
OptionNames["disableHttp2"] = "disableHttp2";
|
|
50
|
-
OptionNames["
|
|
50
|
+
OptionNames["disableNativeAutomation"] = "disableNativeAutomation";
|
|
51
51
|
OptionNames["compilerOptions"] = "compilerOptions";
|
|
52
52
|
OptionNames["pageRequestTimeout"] = "pageRequestTimeout";
|
|
53
53
|
OptionNames["ajaxRequestTimeout"] = "ajaxRequestTimeout";
|
|
@@ -55,7 +55,6 @@ var OptionNames;
|
|
|
55
55
|
OptionNames["userVariables"] = "userVariables";
|
|
56
56
|
OptionNames["v8Flags"] = "v8Flags";
|
|
57
57
|
OptionNames["hooks"] = "hooks";
|
|
58
|
-
OptionNames["dashboard"] = "dashboard";
|
|
59
58
|
OptionNames["baseUrl"] = "baseUrl";
|
|
60
59
|
OptionNames["disableCrossDomain"] = "disableCrossDomain";
|
|
61
60
|
OptionNames["esm"] = "esm";
|
|
@@ -63,4 +62,4 @@ var OptionNames;
|
|
|
63
62
|
})(OptionNames || (OptionNames = {}));
|
|
64
63
|
exports.default = OptionNames;
|
|
65
64
|
module.exports = exports.default;
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLW5hbWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZ3VyYXRpb24vb3B0aW9uLW5hbWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBSyxXQTBESjtBQTFERCxXQUFLLFdBQVc7SUFDWiwwQkFBVyxDQUFBO0lBQ1gsb0NBQXFCLENBQUE7SUFDckIsMENBQTJCLENBQUE7SUFDM0IsZ0NBQWlCLENBQUE7SUFDakIsaURBQWtDLENBQUE7SUFDbEMsdURBQXdDLENBQUE7SUFDeEMsb0NBQXFCLENBQUE7SUFDckIsMEJBQVcsQ0FBQTtJQUNYLDhCQUFlLENBQUE7SUFDZiwwQ0FBMkIsQ0FBQTtJQUMzQixnREFBaUMsQ0FBQTtJQUNqQyw4REFBK0MsQ0FBQTtJQUMvQyxnRUFBaUQsQ0FBQTtJQUNqRCwwQ0FBMkIsQ0FBQTtJQUMzQix3Q0FBeUIsQ0FBQTtJQUN6Qiw0Q0FBNkIsQ0FBQTtJQUM3Qiw0Q0FBNkIsQ0FBQTtJQUM3QixnREFBaUMsQ0FBQTtJQUNqQyxzQ0FBdUIsQ0FBQTtJQUN2QiwwQ0FBMkIsQ0FBQTtJQUMzQix3REFBeUMsQ0FBQTtJQUN6QyxrREFBbUMsQ0FBQTtJQUNuQyxrREFBbUMsQ0FBQTtJQUNuQyxvREFBcUMsQ0FBQTtJQUNyQyxrREFBbUMsQ0FBQTtJQUNuQyx3REFBeUMsQ0FBQTtJQUN6Qyw0REFBNkMsQ0FBQTtJQUM3QywwREFBMkMsQ0FBQTtJQUMzQyxzQ0FBdUIsQ0FBQTtJQUN2Qiw0Q0FBNkIsQ0FBQTtJQUM3Qiw0REFBNkMsQ0FBQTtJQUM3Qyw0Q0FBNkIsQ0FBQTtJQUM3Qiw4Q0FBK0IsQ0FBQTtJQUMvQiw0Q0FBNkIsQ0FBQTtJQUM3QixnREFBaUMsQ0FBQTtJQUNqQyxvQ0FBcUIsQ0FBQTtJQUNyQiw4QkFBZSxDQUFBO0lBQ2YsOEJBQWUsQ0FBQTtJQUNmLGtEQUFtQyxDQUFBO0lBQ25DLHdEQUF5QyxDQUFBO0lBQ3pDLHdEQUF5QyxDQUFBO0lBQ3pDLHdEQUF5QyxDQUFBO0lBQ3pDLDBDQUEyQixDQUFBO0lBQzNCLGdFQUFpRCxDQUFBO0lBQ2pELDRDQUE2QixDQUFBO0lBQzdCLGtFQUFtRCxDQUFBO0lBQ25ELGtEQUFtQyxDQUFBO0lBQ25DLHdEQUF5QyxDQUFBO0lBQ3pDLHdEQUF5QyxDQUFBO0lBQ3pDLDhCQUFlLENBQUE7SUFDZiw4Q0FBK0IsQ0FBQTtJQUMvQixrQ0FBbUIsQ0FBQTtJQUNuQiw4QkFBZSxDQUFBO0lBQ2Ysa0NBQW1CLENBQUE7SUFDbkIsd0RBQXlDLENBQUE7SUFDekMsMEJBQVcsQ0FBQTtJQUNYLDhDQUErQixDQUFBO0FBQ25DLENBQUMsRUExREksV0FBVyxLQUFYLFdBQVcsUUEwRGY7QUFFRCxrQkFBZSxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJlbnVtIE9wdGlvbk5hbWVzIHtcbiAgICBzcmMgPSAnc3JjJyxcbiAgICBicm93c2VycyA9ICdicm93c2VycycsXG4gICAgY29uY3VycmVuY3kgPSAnY29uY3VycmVuY3knLFxuICAgIGZpbHRlciA9ICdmaWx0ZXInLFxuICAgIGZpbHRlclRlc3RHcmVwID0gJ2ZpbHRlci50ZXN0R3JlcCcsXG4gICAgZmlsdGVyRml4dHVyZUdyZXAgPSAnZmlsdGVyLmZpeHR1cmVHcmVwJyxcbiAgICByZXBvcnRlciA9ICdyZXBvcnRlcicsXG4gICAgc3NsID0gJ3NzbCcsXG4gICAgc3BlZWQgPSAnc3BlZWQnLFxuICAgIHNjcmVlbnNob3RzID0gJ3NjcmVlbnNob3RzJyxcbiAgICBzY3JlZW5zaG90UGF0aCA9ICdzY3JlZW5zaG90UGF0aCcsXG4gICAgc2NyZWVuc2hvdFBhdGhQYXR0ZXJuID0gJ3NjcmVlbnNob3RQYXRoUGF0dGVybicsXG4gICAgdGFrZVNjcmVlbnNob3RzT25GYWlscyA9ICd0YWtlU2NyZWVuc2hvdHNPbkZhaWxzJyxcbiAgICBwcm94eUJ5cGFzcyA9ICdwcm94eUJ5cGFzcycsXG4gICAgYXBwQ29tbWFuZCA9ICdhcHBDb21tYW5kJyxcbiAgICBhcHBJbml0RGVsYXkgPSAnYXBwSW5pdERlbGF5JyxcbiAgICBza2lwSnNFcnJvcnMgPSAnc2tpcEpzRXJyb3JzJyxcbiAgICBxdWFyYW50aW5lTW9kZSA9ICdxdWFyYW50aW5lTW9kZScsXG4gICAgZGVidWdNb2RlID0gJ2RlYnVnTW9kZScsXG4gICAgZGVidWdPbkZhaWwgPSAnZGVidWdPbkZhaWwnLFxuICAgIHNraXBVbmNhdWdodEVycm9ycyA9ICdza2lwVW5jYXVnaHRFcnJvcnMnLFxuICAgIHN0b3BPbkZpcnN0RmFpbCA9ICdzdG9wT25GaXJzdEZhaWwnLFxuICAgIHNlbGVjdG9yVGltZW91dCA9ICdzZWxlY3RvclRpbWVvdXQnLFxuICAgIGFzc2VydGlvblRpbWVvdXQgPSAnYXNzZXJ0aW9uVGltZW91dCcsXG4gICAgcGFnZUxvYWRUaW1lb3V0ID0gJ3BhZ2VMb2FkVGltZW91dCcsXG4gICAgYnJvd3NlckluaXRUaW1lb3V0ID0gJ2Jyb3dzZXJJbml0VGltZW91dCcsXG4gICAgdGVzdEV4ZWN1dGlvblRpbWVvdXQgPSAndGVzdEV4ZWN1dGlvblRpbWVvdXQnLFxuICAgIHJ1bkV4ZWN1dGlvblRpbWVvdXQgPSAncnVuRXhlY3V0aW9uVGltZW91dCcsXG4gICAgdmlkZW9QYXRoID0gJ3ZpZGVvUGF0aCcsXG4gICAgdmlkZW9PcHRpb25zID0gJ3ZpZGVvT3B0aW9ucycsXG4gICAgdmlkZW9FbmNvZGluZ09wdGlvbnMgPSAndmlkZW9FbmNvZGluZ09wdGlvbnMnLFxuICAgIHRzQ29uZmlnUGF0aCA9ICd0c0NvbmZpZ1BhdGgnLFxuICAgIGNsaWVudFNjcmlwdHMgPSAnY2xpZW50U2NyaXB0cycsXG4gICAgcmVxdWVzdEhvb2tzID0gJ3JlcXVlc3RIb29rcycsXG4gICAgcmV0cnlUZXN0UGFnZXMgPSAncmV0cnlUZXN0UGFnZXMnLFxuICAgIGhvc3RuYW1lID0gJ2hvc3RuYW1lJyxcbiAgICBwb3J0MSA9ICdwb3J0MScsXG4gICAgcG9ydDIgPSAncG9ydDInLFxuICAgIGRldmVsb3BtZW50TW9kZSA9ICdkZXZlbG9wbWVudE1vZGUnLFxuICAgIGRpc2FibGVQYWdlUmVsb2FkcyA9ICdkaXNhYmxlUGFnZVJlbG9hZHMnLFxuICAgIGRpc2FibGVQYWdlQ2FjaGluZyA9ICdkaXNhYmxlUGFnZUNhY2hpbmcnLFxuICAgIGRpc2FibGVTY3JlZW5zaG90cyA9ICdkaXNhYmxlU2NyZWVuc2hvdHMnLFxuICAgIGRlYnVnTG9nZ2VyID0gJ2RlYnVnTG9nZ2VyJyxcbiAgICBkaXNhYmxlTXVsdGlwbGVXaW5kb3dzID0gJ2Rpc2FibGVNdWx0aXBsZVdpbmRvd3MnLFxuICAgIGRpc2FibGVIdHRwMiA9ICdkaXNhYmxlSHR0cDInLFxuICAgIGRpc2FibGVOYXRpdmVBdXRvbWF0aW9uID0gJ2Rpc2FibGVOYXRpdmVBdXRvbWF0aW9uJyxcbiAgICBjb21waWxlck9wdGlvbnMgPSAnY29tcGlsZXJPcHRpb25zJyxcbiAgICBwYWdlUmVxdWVzdFRpbWVvdXQgPSAncGFnZVJlcXVlc3RUaW1lb3V0JyxcbiAgICBhamF4UmVxdWVzdFRpbWVvdXQgPSAnYWpheFJlcXVlc3RUaW1lb3V0JyxcbiAgICBjYWNoZSA9ICdjYWNoZScsXG4gICAgdXNlclZhcmlhYmxlcyA9ICd1c2VyVmFyaWFibGVzJyxcbiAgICB2OEZsYWdzID0gJ3Y4RmxhZ3MnLFxuICAgIGhvb2tzID0gJ2hvb2tzJyxcbiAgICBiYXNlVXJsID0gJ2Jhc2VVcmwnLFxuICAgIGRpc2FibGVDcm9zc0RvbWFpbiA9ICdkaXNhYmxlQ3Jvc3NEb21haW4nLFxuICAgIGVzbSA9ICdlc20nLFxuICAgIGN1c3RvbUFjdGlvbnMgPSAnY3VzdG9tQWN0aW9ucycsXG59XG5cbmV4cG9ydCBkZWZhdWx0IE9wdGlvbk5hbWVzO1xuIl19
|