ng-mocks 11.2.7 → 11.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/CHANGELOG.md +35 -0
- package/README.md +41 -3174
- package/dist/lib/common/core.helpers.d.ts +2 -2
- package/dist/lib/common/core.helpers.js +55 -27
- package/dist/lib/common/{core.reflect.body.d.ts → core.reflect.body-catch.d.ts} +0 -0
- package/dist/lib/common/core.reflect.body-catch.js +12 -0
- package/dist/lib/common/core.reflect.body-global.d.ts +3 -0
- package/dist/lib/common/core.reflect.body-global.js +11 -0
- package/dist/lib/common/core.reflect.directive-resolve.js +6 -4
- package/dist/lib/common/core.reflect.jit.d.ts +3 -0
- package/dist/lib/common/core.reflect.jit.js +11 -0
- package/dist/lib/common/core.reflect.module-resolve.js +6 -4
- package/dist/lib/common/core.reflect.pipe-resolve.js +6 -4
- package/dist/lib/common/core.tokens.d.ts +2 -2
- package/dist/lib/common/core.tokens.js +1 -1
- package/dist/lib/common/decorate.inputs.js +2 -2
- package/dist/lib/common/decorate.mock.d.ts +3 -0
- package/dist/lib/common/decorate.mock.js +13 -0
- package/dist/lib/common/decorate.outputs.js +2 -2
- package/dist/lib/common/decorate.queries.js +2 -2
- package/dist/lib/common/func.is-mock-control-value-accessor.js +2 -3
- package/dist/lib/common/func.is-mock-validator.js +2 -3
- package/dist/lib/common/func.is-ng-def.d.ts +7 -1
- package/dist/lib/common/func.is-ng-def.js +5 -1
- package/dist/lib/common/func.is-ng-injection-token.js +2 -3
- package/dist/lib/common/func.is-ng-module-def-with-providers.js +2 -3
- package/dist/lib/common/func.is-ng-type.d.ts +2 -2
- package/dist/lib/common/func.is-ng-type.js +6 -5
- package/dist/lib/common/mock-control-value-accessor.d.ts +3 -3
- package/dist/lib/common/mock-control-value-accessor.js +1 -1
- package/dist/lib/common/mock.js +31 -26
- package/dist/lib/common/ng-mocks-universe.d.ts +5 -0
- package/dist/lib/common/ng-mocks-universe.js +65 -7
- package/dist/lib/mock/clone-providers.js +23 -6
- package/dist/lib/mock/decorate-declaration.js +6 -6
- package/dist/lib/mock/to-existing-provider.d.ts +1 -1
- package/dist/lib/mock/to-factory-provider.d.ts +1 -1
- package/dist/lib/mock-builder/mock-builder-stash.js +3 -1
- package/dist/lib/mock-builder/mock-builder.js +2 -2
- package/dist/lib/mock-builder/mock-builder.performance.js +2 -2
- package/dist/lib/mock-builder/mock-builder.promise.js +4 -1
- package/dist/lib/mock-builder/promise/create-ng-mocks-overrides-token.js +2 -2
- package/dist/lib/mock-builder/promise/create-ng-mocks-touches-token.js +2 -2
- package/dist/lib/mock-builder/promise/get-override-meta.js +4 -4
- package/dist/lib/mock-builder/promise/get-root-provider-parameters.js +3 -3
- package/dist/lib/mock-builder/promise/init-module.js +2 -2
- package/dist/lib/mock-builder/promise/init-ng-modules.js +2 -2
- package/dist/lib/mock-component/mock-component.d.ts +1 -1
- package/dist/lib/mock-component/mock-component.js +9 -17
- package/dist/lib/mock-directive/mock-directive.d.ts +1 -1
- package/dist/lib/mock-directive/mock-directive.js +10 -23
- package/dist/lib/mock-helper/func.global-prepare.d.ts +2 -0
- package/dist/lib/mock-helper/func.global-prepare.js +9 -0
- package/dist/lib/mock-helper/mock-helper.auto-spy.js +2 -2
- package/dist/lib/mock-helper/mock-helper.d.ts +38 -0
- package/dist/lib/mock-helper/mock-helper.global-exclude.d.ts +4 -0
- package/dist/lib/mock-helper/mock-helper.global-exclude.js +9 -0
- package/dist/lib/mock-helper/mock-helper.global-keep.d.ts +4 -0
- package/dist/lib/mock-helper/mock-helper.global-keep.js +9 -0
- package/dist/lib/mock-helper/mock-helper.global-mock.d.ts +4 -0
- package/dist/lib/mock-helper/mock-helper.global-mock.js +9 -0
- package/dist/lib/mock-helper/mock-helper.global-replace.d.ts +3 -0
- package/dist/lib/mock-helper/mock-helper.global-replace.js +26 -0
- package/dist/lib/mock-helper/mock-helper.global-wipe.d.ts +4 -0
- package/dist/lib/mock-helper/mock-helper.global-wipe.js +11 -0
- package/dist/lib/mock-helper/mock-helper.guts.js +100 -37
- package/dist/lib/mock-helper/mock-helper.js +15 -1
- package/dist/lib/mock-helper/mock-helper.reset.js +2 -1
- package/dist/lib/mock-helper/mock-helper.stub-member.d.ts +2 -0
- package/dist/lib/mock-helper/mock-helper.stub-member.js +25 -0
- package/dist/lib/mock-helper/mock-helper.stub.js +2 -1
- package/dist/lib/mock-helper/mock-helper.throw-on-console.d.ts +2 -0
- package/dist/lib/mock-helper/mock-helper.throw-on-console.js +25 -0
- package/dist/lib/mock-instance/mock-instance.js +11 -7
- package/dist/lib/mock-module/mock-module.d.ts +2 -2
- package/dist/lib/mock-module/mock-module.js +7 -9
- package/dist/lib/mock-module/mock-ng-def.js +29 -12
- package/dist/lib/mock-pipe/mock-pipe.d.ts +2 -2
- package/dist/lib/mock-pipe/mock-pipe.js +18 -44
- package/dist/lib/mock-provider/mock-provider.d.ts +3 -3
- package/dist/lib/mock-provider/mock-provider.js +1 -1
- package/dist/lib/mock-render/func.generate-template.d.ts +2 -0
- package/dist/lib/mock-render/func.generate-template.js +87 -0
- package/dist/lib/mock-render/func.install-prop-reader.d.ts +2 -0
- package/dist/lib/mock-render/func.install-prop-reader.js +80 -0
- package/dist/lib/mock-render/mock-render.d.ts +16 -2
- package/dist/lib/mock-render/mock-render.js +111 -132
- package/dist/lib/mock-service/helper.resolve-provider.js +9 -12
- package/dist/lib/mock-service/helper.use-factory.js +3 -3
- package/dist/lib/mock-service/mock-provider.js +2 -1
- package/dist/lib/mock-service/mock-service.d.ts +4 -4
- package/dist/lib/mock-service/mock-service.js +1 -1
- package/examples/MockBuilder/test.deep.spec.ts +1 -1
- package/examples/MockBuilder/test.ng-mocks.spec.ts +1 -1
- package/examples/MockForms/test.spec.ts +2 -2
- package/examples/MockInstance/test.spec.ts +1 -1
- package/examples/MockObservable/test.spec.ts +7 -4
- package/examples/MockPipe/test.spec.ts +1 -1
- package/examples/MockProvider/test.spec.ts +5 -6
- package/examples/MockReactiveForms/test.spec.ts +2 -2
- package/examples/MockViewChild/test.spec.ts +3 -3
- package/examples/TestAttributeDirective/test.spec.ts +1 -1
- package/examples/TestHttpInterceptor/test.spec.ts +10 -4
- package/examples/TestHttpRequest/test.spec.ts +6 -4
- package/examples/TestLifecycleHooks/test.spec.ts +6 -2
- package/examples/TestLifecycleHooks/test.string.spec.ts +3 -2
- package/examples/TestLifecycleHooks/test.type-without-params.spec.ts +3 -2
- package/examples/TestMultiToken/test.spec.ts +3 -3
- package/examples/TestProvider/test.spec.ts +2 -3
- package/examples/TestProviderWithDependencies/test.spec.ts +7 -3
- package/examples/TestProviderWithUseClass/test.spec.ts +9 -3
- package/examples/TestProviderWithUseExisting/test.spec.ts +9 -3
- package/examples/TestProviderWithUseFactory/test.spec.ts +2 -3
- package/examples/TestProviderWithUseValue/test.spec.ts +4 -4
- package/examples/TestRoute/test.spec.ts +7 -7
- package/examples/TestRoutingGuard/test.spec.ts +8 -6
- package/examples/TestRoutingResolver/test.spec.ts +6 -4
- package/examples/TestToken/test.spec.ts +7 -6
- package/examples/main/test.spec.ts +2 -2
- package/examples/ngMocksFaster/test.spec.ts +2 -2
- package/package.json +2 -3
- package/dist/lib/common/core.reflect.body.js +0 -12
- package/dist/lib/common/core.reflect.d.ts +0 -6
- package/dist/lib/common/core.reflect.js +0 -10
- package/dist/lib/common/mock-of.d.ts +0 -3
- package/dist/lib/common/mock-of.js +0 -23
|
@@ -1,4 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __values = (this && this.__values) || function(o) {
|
|
14
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
15
|
+
if (m) return m.call(o);
|
|
16
|
+
if (o && typeof o.length === "number") return {
|
|
17
|
+
next: function () {
|
|
18
|
+
if (o && i >= o.length) o = void 0;
|
|
19
|
+
return { value: o && o[i++], done: !o };
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
23
|
+
};
|
|
2
24
|
var __read = (this && this.__read) || function (o, n) {
|
|
3
25
|
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
26
|
if (!m) return o;
|
|
@@ -19,126 +41,21 @@ var __spread = (this && this.__spread) || function () {
|
|
|
19
41
|
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
|
|
20
42
|
return ar;
|
|
21
43
|
};
|
|
22
|
-
var __values = (this && this.__values) || function(o) {
|
|
23
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
24
|
-
if (m) return m.call(o);
|
|
25
|
-
if (o && typeof o.length === "number") return {
|
|
26
|
-
next: function () {
|
|
27
|
-
if (o && i >= o.length) o = void 0;
|
|
28
|
-
return { value: o && o[i++], done: !o };
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
32
|
-
};
|
|
33
44
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
45
|
exports.MockRender = void 0;
|
|
35
46
|
var core_1 = require("@angular/core");
|
|
36
47
|
var testing_1 = require("@angular/core/testing");
|
|
37
|
-
var
|
|
48
|
+
var core_helpers_1 = require("../common/core.helpers");
|
|
38
49
|
var core_reflect_directive_resolve_1 = require("../common/core.reflect.directive-resolve");
|
|
50
|
+
var func_is_ng_def_1 = require("../common/func.is-ng-def");
|
|
39
51
|
var mock_helper_1 = require("../mock-helper/mock-helper");
|
|
40
|
-
var
|
|
41
|
-
var
|
|
42
|
-
|
|
43
|
-
return '($event)';
|
|
44
|
-
}
|
|
45
|
-
if (output && typeof output === 'object' && output instanceof core_1.EventEmitter) {
|
|
46
|
-
return '.emit($event)';
|
|
47
|
-
}
|
|
48
|
-
if (output && typeof output === 'object' && output instanceof rxjs_1.Subject) {
|
|
49
|
-
return '.next($event)';
|
|
50
|
-
}
|
|
51
|
-
return '=$event';
|
|
52
|
-
};
|
|
53
|
-
var createProperty = function (pointComponentInstance, key) {
|
|
54
|
-
return {
|
|
55
|
-
get: function () {
|
|
56
|
-
if (typeof pointComponentInstance[key] === 'function') {
|
|
57
|
-
return function () {
|
|
58
|
-
var args = [];
|
|
59
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
60
|
-
args[_i] = arguments[_i];
|
|
61
|
-
}
|
|
62
|
-
return pointComponentInstance[key].apply(pointComponentInstance, __spread(args));
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
return pointComponentInstance[key];
|
|
66
|
-
},
|
|
67
|
-
set: function (v) { return (pointComponentInstance[key] = v); },
|
|
68
|
-
};
|
|
69
|
-
};
|
|
70
|
-
var extractAllKeys = function (instance) { return __spread(helper_mock_service_1.default.extractPropertiesFromPrototype(Object.getPrototypeOf(instance)), helper_mock_service_1.default.extractMethodsFromPrototype(Object.getPrototypeOf(instance)), Object.keys(instance)); };
|
|
71
|
-
var extractOwnKeys = function (instance) { return __spread(Object.getOwnPropertyNames(instance), Object.keys(instance)); };
|
|
72
|
-
var installProxy = function (componentInstance, pointComponentInstance) {
|
|
73
|
-
var e_1, _a;
|
|
74
|
-
if (!pointComponentInstance) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
var exists = extractOwnKeys(componentInstance);
|
|
78
|
-
try {
|
|
79
|
-
for (var _b = __values(extractAllKeys(pointComponentInstance)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
80
|
-
var key = _c.value;
|
|
81
|
-
if (exists.indexOf(key) !== -1) {
|
|
82
|
-
continue;
|
|
83
|
-
}
|
|
84
|
-
Object.defineProperty(componentInstance, key, createProperty(pointComponentInstance, key));
|
|
85
|
-
exists.push(key);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
89
|
-
finally {
|
|
90
|
-
try {
|
|
91
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
92
|
-
}
|
|
93
|
-
finally { if (e_1) throw e_1.error; }
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
var generateTemplateAttrWrap = function (prop, type) { return (type === 'i' ? "[" + prop + "]" : "(" + prop + ")"); };
|
|
97
|
-
var generateTemplateAttrWithParams = function (params, prop, type) {
|
|
98
|
-
return " " + generateTemplateAttrWrap(prop, type) + "=\"" + prop + (type === 'o' ? solveOutput(params[prop]) : '') + "\"";
|
|
99
|
-
};
|
|
100
|
-
var generateTemplateAttrWithoutParams = function (key, value, type) {
|
|
101
|
-
return " " + generateTemplateAttrWrap(key, type) + "=\"" + value + (type === 'o' ? '.emit($event)' : '') + "\"";
|
|
102
|
-
};
|
|
103
|
-
var generateTemplateAttr = function (params, attr, type) {
|
|
104
|
-
var e_2, _a;
|
|
105
|
-
var mockTemplate = '';
|
|
106
|
-
try {
|
|
107
|
-
for (var attr_1 = __values(attr), attr_1_1 = attr_1.next(); !attr_1_1.done; attr_1_1 = attr_1.next()) {
|
|
108
|
-
var definition = attr_1_1.value;
|
|
109
|
-
var _b = __read(definition.split(': '), 2), property = _b[0], alias = _b[1];
|
|
110
|
-
mockTemplate += params
|
|
111
|
-
? generateTemplateAttrWithParams(params, alias || property, type)
|
|
112
|
-
: generateTemplateAttrWithoutParams(alias || property, property, type);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
116
|
-
finally {
|
|
117
|
-
try {
|
|
118
|
-
if (attr_1_1 && !attr_1_1.done && (_a = attr_1.return)) _a.call(attr_1);
|
|
119
|
-
}
|
|
120
|
-
finally { if (e_2) throw e_2.error; }
|
|
121
|
-
}
|
|
122
|
-
return mockTemplate;
|
|
123
|
-
};
|
|
124
|
-
var generateTemplate = function (declaration, _a) {
|
|
125
|
-
var selector = _a.selector, params = _a.params, inputs = _a.inputs, outputs = _a.outputs;
|
|
126
|
-
var mockTemplate = '';
|
|
127
|
-
if (typeof declaration === 'string') {
|
|
128
|
-
mockTemplate = declaration;
|
|
129
|
-
}
|
|
130
|
-
else if (selector) {
|
|
131
|
-
mockTemplate += "<" + selector;
|
|
132
|
-
mockTemplate += generateTemplateAttr(params, inputs, 'i');
|
|
133
|
-
mockTemplate += generateTemplateAttr(params, outputs, 'o');
|
|
134
|
-
mockTemplate += "></" + selector + ">";
|
|
135
|
-
}
|
|
136
|
-
return mockTemplate;
|
|
137
|
-
};
|
|
52
|
+
var mock_service_1 = require("../mock-service/mock-service");
|
|
53
|
+
var func_generate_template_1 = require("./func.generate-template");
|
|
54
|
+
var func_install_prop_reader_1 = require("./func.install-prop-reader");
|
|
138
55
|
var applyParamsToFixtureInstanceGetData = function (params, keys) { return (!params && keys ? keys : []); };
|
|
139
56
|
var applyParamsToFixtureInstance = function (instance, params, inputs, outputs) {
|
|
140
|
-
var
|
|
141
|
-
|
|
57
|
+
var e_1, _a, e_2, _b;
|
|
58
|
+
func_install_prop_reader_1.default(instance, params);
|
|
142
59
|
try {
|
|
143
60
|
for (var _c = __values(applyParamsToFixtureInstanceGetData(params, inputs)), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
144
61
|
var definition = _d.value;
|
|
@@ -146,12 +63,12 @@ var applyParamsToFixtureInstance = function (instance, params, inputs, outputs)
|
|
|
146
63
|
instance[property] = undefined;
|
|
147
64
|
}
|
|
148
65
|
}
|
|
149
|
-
catch (
|
|
66
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
150
67
|
finally {
|
|
151
68
|
try {
|
|
152
69
|
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
|
|
153
70
|
}
|
|
154
|
-
finally { if (
|
|
71
|
+
finally { if (e_1) throw e_1.error; }
|
|
155
72
|
}
|
|
156
73
|
try {
|
|
157
74
|
for (var _f = __values(applyParamsToFixtureInstanceGetData(params, outputs)), _g = _f.next(); !_g.done; _g = _f.next()) {
|
|
@@ -160,14 +77,48 @@ var applyParamsToFixtureInstance = function (instance, params, inputs, outputs)
|
|
|
160
77
|
instance[property] = new core_1.EventEmitter();
|
|
161
78
|
}
|
|
162
79
|
}
|
|
163
|
-
catch (
|
|
80
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
164
81
|
finally {
|
|
165
82
|
try {
|
|
166
83
|
if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
|
|
167
84
|
}
|
|
168
|
-
finally { if (
|
|
85
|
+
finally { if (e_2) throw e_2.error; }
|
|
169
86
|
}
|
|
170
87
|
};
|
|
88
|
+
var registerTemplateMiddleware = function (template, meta) {
|
|
89
|
+
var child = core_helpers_1.extendClass(template);
|
|
90
|
+
var providers = meta.providers || [];
|
|
91
|
+
providers = __spread(providers, [
|
|
92
|
+
{
|
|
93
|
+
provide: template,
|
|
94
|
+
useExisting: child,
|
|
95
|
+
},
|
|
96
|
+
]);
|
|
97
|
+
meta.providers = providers;
|
|
98
|
+
if (func_is_ng_def_1.isNgDef(template, 'c')) {
|
|
99
|
+
core_1.Component(meta)(child);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
core_1.Directive(meta)(child);
|
|
103
|
+
}
|
|
104
|
+
testing_1.TestBed.configureTestingModule({
|
|
105
|
+
declarations: [child],
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
var reflectTemplate = function (template) {
|
|
109
|
+
if (!func_is_ng_def_1.isNgDef(template, 'c') && !func_is_ng_def_1.isNgDef(template, 'd')) {
|
|
110
|
+
return {};
|
|
111
|
+
}
|
|
112
|
+
var meta = __assign({}, core_reflect_directive_resolve_1.default(template));
|
|
113
|
+
if (meta.selector && meta.selector.match(/[\[\],]/)) {
|
|
114
|
+
meta.selector = '';
|
|
115
|
+
}
|
|
116
|
+
if (!meta.selector) {
|
|
117
|
+
meta.selector = "ng-mocks-" + template.name;
|
|
118
|
+
registerTemplateMiddleware(template, meta);
|
|
119
|
+
}
|
|
120
|
+
return meta;
|
|
121
|
+
};
|
|
171
122
|
var generateFixture = function (_a) {
|
|
172
123
|
var params = _a.params, options = _a.options, inputs = _a.inputs, outputs = _a.outputs;
|
|
173
124
|
var MockRenderComponent = /** @class */ (function () {
|
|
@@ -177,12 +128,46 @@ var generateFixture = function (_a) {
|
|
|
177
128
|
return MockRenderComponent;
|
|
178
129
|
}());
|
|
179
130
|
core_1.Component(options)(MockRenderComponent);
|
|
180
|
-
mock_helper_1.ngMocks.flushTestBed();
|
|
181
131
|
testing_1.TestBed.configureTestingModule({
|
|
182
132
|
declarations: [MockRenderComponent],
|
|
183
133
|
});
|
|
184
134
|
return testing_1.TestBed.createComponent(MockRenderComponent);
|
|
185
135
|
};
|
|
136
|
+
var fixtureFactory = function (template, meta, params, flags) {
|
|
137
|
+
var mockTemplate = func_generate_template_1.default(template, __assign(__assign({}, meta), { params: params }));
|
|
138
|
+
var options = { providers: flags.providers, selector: 'mock-render', template: mockTemplate };
|
|
139
|
+
var fixture = generateFixture(__assign(__assign({}, meta), { params: params, options: options }));
|
|
140
|
+
if (flags.detectChanges) {
|
|
141
|
+
fixture.detectChanges();
|
|
142
|
+
}
|
|
143
|
+
return fixture;
|
|
144
|
+
};
|
|
145
|
+
var isExpectedRender = function (template) {
|
|
146
|
+
return typeof template === 'string' || func_is_ng_def_1.isNgDef(template, 'c') || func_is_ng_def_1.isNgDef(template, 'd');
|
|
147
|
+
};
|
|
148
|
+
var renderDeclaration = function (fixture, template, params) {
|
|
149
|
+
fixture.point = fixture.debugElement.children[0] || fixture.debugElement.childNodes[0];
|
|
150
|
+
if (func_is_ng_def_1.isNgDef(template, 'd')) {
|
|
151
|
+
Object.defineProperty(fixture.point, 'componentInstance', {
|
|
152
|
+
configurable: true,
|
|
153
|
+
get: function () { return mock_helper_1.ngMocks.get(fixture.point, template); },
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
tryWhen(!params, function () { var _a; return func_install_prop_reader_1.default(fixture.componentInstance, (_a = fixture.point) === null || _a === void 0 ? void 0 : _a.componentInstance); });
|
|
157
|
+
};
|
|
158
|
+
var renderInjection = function (fixture, template, params) {
|
|
159
|
+
var instance = testing_1.TestBed.get(template);
|
|
160
|
+
if (params) {
|
|
161
|
+
mock_helper_1.ngMocks.stub(instance, params);
|
|
162
|
+
}
|
|
163
|
+
fixture.point = mock_service_1.MockService(core_1.DebugElement, {
|
|
164
|
+
childNodes: [],
|
|
165
|
+
children: [],
|
|
166
|
+
componentInstance: instance,
|
|
167
|
+
nativeElement: mock_service_1.MockService(HTMLElement),
|
|
168
|
+
});
|
|
169
|
+
func_install_prop_reader_1.default(fixture.componentInstance, fixture.point.componentInstance, true);
|
|
170
|
+
};
|
|
186
171
|
var tryWhen = function (flag, callback) {
|
|
187
172
|
if (!flag) {
|
|
188
173
|
return;
|
|
@@ -196,24 +181,18 @@ var tryWhen = function (flag, callback) {
|
|
|
196
181
|
}
|
|
197
182
|
};
|
|
198
183
|
function MockRender(template, params, flags) {
|
|
199
|
-
var _a;
|
|
200
184
|
if (flags === void 0) { flags = true; }
|
|
201
185
|
var flagsObject = typeof flags === 'boolean' ? { detectChanges: flags } : flags;
|
|
202
|
-
var
|
|
203
|
-
|
|
204
|
-
var
|
|
205
|
-
if (
|
|
206
|
-
(
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
var fixture = generateFixture({ params: params, options: options, inputs: inputs, outputs: outputs });
|
|
211
|
-
if (flagsObject.detectChanges) {
|
|
212
|
-
fixture.detectChanges();
|
|
186
|
+
var meta = typeof template === 'string' || func_is_ng_def_1.isNgDef(template, 't') ? {} : reflectTemplate(template);
|
|
187
|
+
mock_helper_1.ngMocks.flushTestBed();
|
|
188
|
+
var fixture = fixtureFactory(template, meta, params, flagsObject);
|
|
189
|
+
if (isExpectedRender(template)) {
|
|
190
|
+
renderDeclaration(fixture, template, params);
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
renderInjection(fixture, template, params);
|
|
213
194
|
}
|
|
214
|
-
fixture.point = fixture.debugElement.children[0] || fixture.debugElement.childNodes[0];
|
|
215
|
-
tryWhen(!params, function () { var _a; return installProxy(fixture.componentInstance, (_a = fixture.point) === null || _a === void 0 ? void 0 : _a.componentInstance); });
|
|
216
195
|
return fixture;
|
|
217
196
|
}
|
|
218
197
|
exports.MockRender = MockRender;
|
|
219
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1yZW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvbW9jay1yZW5kZXIvbW9jay1yZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNDQUF3RDtBQUN4RCxpREFBZ0Q7QUFDaEQsNkJBQStCO0FBRS9CLDJGQUFtRjtBQUVuRiwwREFBcUQ7QUFDckQsMkVBQW9FO0FBSXBFLElBQU0sV0FBVyxHQUFHLFVBQUMsTUFBVztJQUM5QixJQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsRUFBRTtRQUNoQyxPQUFPLFVBQVUsQ0FBQztLQUNuQjtJQUNELElBQUksTUFBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxNQUFNLFlBQVksbUJBQVksRUFBRTtRQUMxRSxPQUFPLGVBQWUsQ0FBQztLQUN4QjtJQUNELElBQUksTUFBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxNQUFNLFlBQVksY0FBTyxFQUFFO1FBQ3JFLE9BQU8sZUFBZSxDQUFDO0tBQ3hCO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUYsSUFBTSxjQUFjLEdBQUcsVUFBQyxzQkFBOEMsRUFBRSxHQUFXO0lBQ2pGLE9BQU87UUFDTCxHQUFHLEVBQUU7WUFDSCxJQUFJLE9BQU8sc0JBQXNCLENBQUMsR0FBRyxDQUFDLEtBQUssVUFBVSxFQUFFO2dCQUNyRCxPQUFPO29CQUFDLGNBQWM7eUJBQWQsVUFBYyxFQUFkLHFCQUFjLEVBQWQsSUFBYzt3QkFBZCx5QkFBYzs7b0JBQUssT0FBQSxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsT0FBM0Isc0JBQXNCLFdBQVMsSUFBSTtnQkFBbkMsQ0FBb0MsQ0FBQzthQUNqRTtZQUVELE9BQU8sc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUNELEdBQUcsRUFBRSxVQUFDLENBQU0s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YSxFQUFFLENBQUM7S0FDekI7SUFDRCxPQUFPLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxzQkFBTSxPQUFBLFlBQVksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLFFBQUUsT0FBTyxDQUFDLEtBQUssMENBQUUsaUJBQWlCLENBQUMsQ0FBQSxFQUFBLENBQUMsQ0FBQztJQUVsRyxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRVEsZ0NBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGVzdEJlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCBjb3JlUmVmbGVjdERpcmVjdGl2ZVJlc29sdmUgZnJvbSAnLi4vY29tbW9uL2NvcmUucmVmbGVjdC5kaXJlY3RpdmUtcmVzb2x2ZSc7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSAnLi4vY29tbW9uL2NvcmUudHlwZXMnO1xuaW1wb3J0IHsgbmdNb2NrcyB9IGZyb20gJy4uL21vY2staGVscGVyL21vY2staGVscGVyJztcbmltcG9ydCBoZWxwZXJNb2NrU2VydmljZSBmcm9tICcuLi9tb2NrLXNlcnZpY2UvaGVscGVyLm1vY2stc2VydmljZSc7XG5cbmltcG9ydCB7IElNb2NrUmVuZGVyT3B0aW9ucywgTW9ja2VkQ29tcG9uZW50Rml4dHVyZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBzb2x2ZU91dHB1dCA9IChvdXRwdXQ6IGFueSk6IHN0cmluZyA9PiB7XG4gIGlmICh0eXBlb2Ygb3V0cHV0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuICcoJGV2ZW50KSc7XG4gIH1cbiAgaWYgKG91dHB1dCAmJiB0eXBlb2Ygb3V0cHV0ID09PSAnb2JqZWN0JyAmJiBvdXRwdXQgaW5zdGFuY2VvZiBFdmVudEVtaXR0ZXIpIHtcbiAgICByZXR1cm4gJy5lbWl0KCRldmVudCknO1xuICB9XG4gIGlmIChvdXRwdXQgJiYgdHlwZW9mIG91dHB1dCA9PT0gJ29iamVjdCcgJiYgb3V0cHV0IGluc3RhbmNlb2YgU3ViamVjdCkge1xuICAgIHJldHVybiAnLm5leHQoJGV2ZW50KSc7XG4gIH1cblxuICByZXR1cm4gJz0kZXZlbnQnO1xufTtcblxuY29uc3QgY3JlYXRlUHJvcGVydHkgPSAocG9pbnRDb21wb25lbnRJbnN0YW5jZTogUmVjb3JkPGtleW9mIGFueSwgYW55Piwga2V5OiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQ6ICgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgcG9pbnRDb21wb25lbnRJbnN0YW5jZVtrZXldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IHBvaW50Q29tcG9uZW50SW5zdGFuY2Vba2V5XSguLi5hcmdzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBvaW50Q29tcG9uZW50SW5zdGFuY2Vba2V5XTtcbiAgICB9LFxuICAgIHNldDogKHY6IGFueSkgPT4gKHBvaW50Q29tcG9uZW50SW5zdGFuY2Vba2V5XSA9IHYpLFxuICB9O1xufTtcblxuY29uc3QgZXh0cmFjdEFsbEtleXMgPSAoaW5zdGFuY2U6IG9iamVjdCkgPT4gW1xuICAuLi5oZWxwZXJNb2NrU2VydmljZS5leHRyYWN0UHJvcGVydGllc0Zyb21Qcm90b3R5cGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKGluc3RhbmNlKSksXG4gIC4uLmhlbHBlck1vY2tTZXJ2aWNlLmV4dHJhY3RNZXRob2RzRnJvbVByb3RvdHlwZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoaW5zdGFuY2UpKSxcbiAgLi4uT2JqZWN0LmtleXMoaW5zdGFuY2UpLFxuXTtcblxuY29uc3QgZXh0cmFjdE93bktleXMgPSAoaW5zdGFuY2U6IG9iamVjdCkgPT4gWy4uLk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluc3RhbmNlKSwgLi4uT2JqZWN0LmtleXMoaW5zdGFuY2UpXTtcblxuY29uc3QgaW5zdGFsbFByb3h5ID0gKFxuICBjb21wb25lbnRJbnN0YW5jZTogUmVjb3JkPGtleW9mIGFueSwgYW55PixcbiAgcG9pbnRDb21wb25lbnRJbnN0YW5jZT86IFJlY29yZDxrZXlvZiBhbnksIGFueT4sXG4pOiB2b2lkID0+IHtcbiAgaWYgKCFwb2ludENvbXBvbmVudEluc3RhbmNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZXhpc3RzID0gZXh0cmFjdE93bktleXMoY29tcG9uZW50SW5zdGFuY2UpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBleHRyYWN0QWxsS2V5cyhwb2ludENvbXBvbmVudEluc3RhbmNlKSkge1xuICAgIGlmIChleGlzdHMuaW5kZXhPZihrZXkpICE9PSAtMSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbXBvbmVudEluc3RhbmNlLCBrZXksIGNyZWF0ZVByb3BlcnR5KHBvaW50Q29tcG9uZW50SW5zdGFuY2UsIGtleSkpO1xuICAgIGV4aXN0cy5wdXNoKGtleSk7XG4gIH1cbn07XG5cbmNvbnN0IGdlbmVyYXRlVGVtcGxhdGVBdHRyV3JhcCA9IChwcm9wOiBzdHJpbmcsIHR5cGU6ICdpJyB8ICdvJykgPT4gKHR5cGUgPT09ICdpJyA/IGBbJHtwcm9wfV1gIDogYCgke3Byb3B9KWApO1xuXG5jb25zdCBnZW5lcmF0ZVRlbXBsYXRlQXR0cldpdGhQYXJhbXMgPSAocGFyYW1zOiBhbnksIHByb3A6IHN0cmluZywgdHlwZTogJ2knIHwgJ28nKTogc3RyaW5nID0+XG4gIGAgJHtnZW5lcmF0ZVRlbXBsYXRlQXR0cldyYXAocHJvcCwgdHlwZSl9PVwiJHtwcm9wfSR7dHlwZSA9PT0gJ28nID8gc29sdmVPdXRwdXQocGFyYW1zW3Byb3BdKSA6ICcnfVwiYDtcblxuY29uc3QgZ2VuZXJhdGVUZW1wbGF0ZUF0dHJXaXRob3V0UGFyYW1zID0gKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCB0eXBlOiAnaScgfCAnbycpOiBzdHJpbmcgPT5cbiAgYCAke2dlbmVyYXRlVGVtcGxhdGVBdHRyV3JhcChrZXksIHR5cGUpfT1cIiR7dmFsdWV9JHt0eXBlID09PSAnbycgPyAnLmVtaXQoJGV2ZW50KScgOiAnJ31cImA7XG5cbmNvbnN0IGdlbmVyYXRlVGVtcGxhdGVBdHRyID0gKHBhcmFtczogYW55LCBhdHRyOiBhbnksIHR5cGU6ICdpJyB8ICdvJykgPT4ge1xuICBsZXQgbW9ja1RlbXBsYXRlID0gJyc7XG4gIGZvciAoY29uc3QgZGVmaW5pdGlvbiBvZiBhdHRyKSB7XG4gICAgY29uc3QgW3Byb3BlcnR5LCBhbGlhc10gPSBkZWZpbml0aW9uLnNwbGl0KCc6ICcpO1xuICAgIG1vY2tUZW1wbGF0ZSArPSBwYXJhbXNcbiAgICAgID8gZ2VuZXJhdGVUZW1wbGF0ZUF0dHJXaXRoUGFyYW1zKHBhcmFtcywgYWxpYXMgfHwgcHJvcGVydHksIHR5cGUpXG4gICAgICA6IGdlbmVyYXRlVGVtcGxhdGVBdHRyV2l0aG91dFBhcmFtcyhhbGlhcyB8fCBwcm9wZXJ0eSwgcHJvcGVydHksIHR5cGUpO1xuICB9XG5cbiAgcmV0dXJuIG1vY2tUZW1wbGF0ZTtcbn07XG5cbmNvbnN0IGdlbmVyYXRlVGVtcGxhdGUgPSAoZGVjbGFyYXRpb246IGFueSwgeyBzZWxlY3RvciwgcGFyYW1zLCBpbnB1dHMsIG91dHB1dHMgfTogYW55KTogc3RyaW5nID0+IHtcbiAgbGV0IG1vY2tUZW1wbGF0ZSA9ICcnO1xuXG4gIGlmICh0eXBlb2YgZGVjbGFyYXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgbW9ja1RlbXBsYXRlID0gZGVjbGFyYXRpb247XG4gIH0gZWxzZSBpZiAoc2VsZWN0b3IpIHtcbiAgICBtb2NrVGVtcGxhdGUgKz0gYDwke3NlbGVjdG9yfWA7XG4gICAgbW9ja1RlbXBsYXRlICs9IGdlbmVyYXRlVGVtcGxhdGVBdHRyKHBhcmFtcywgaW5wdXRzLCAnaScpO1xuICAgIG1vY2tUZW1wbGF0ZSArPSBnZW5lcmF0ZVRlbXBsYXRlQXR0cihwYXJhbXMsIG91dHB1dHMsICdvJyk7XG4gICAgbW9ja1RlbXBsYXRlICs9IGA+PC8ke3NlbGVjdG9yfT5gO1xuICB9XG5cbiAgcmV0dXJuIG1vY2tUZW1wbGF0ZTtcbn07XG5cbmNvbnN0IGFwcGx5UGFyYW1zVG9GaXh0dXJlSW5zdGFuY2VHZXREYXRhID0gKHBhcmFtczogYW55LCBrZXlzOiBzdHJpbmdbXSkgPT4gKCFwYXJhbXMgJiYga2V5cyA/IGtleXMgOiBbXSk7XG5cbmNvbnN0IGFwcGx5UGFyYW1zVG9GaXh0dXJlSW5zdGFuY2UgPSAoXG4gIGluc3RhbmNlOiBSZWNvcmQ8a2V5b2YgYW55LCBhbnk+LFxuICBwYXJhbXM6IGFueSxcbiAgaW5wdXRzOiBzdHJpbmdbXSxcbiAgb3V0cHV0czogc3RyaW5nW10sXG4pOiB2b2lkID0+IHtcbiAgaW5zdGFsbFByb3h5KGluc3RhbmNlLCBwYXJhbXMpO1xuICBmb3IgKGNvbnN0IGRlZmluaXRpb24gb2YgYXBwbHlQYXJhbXNUb0ZpeHR1cmVJbnN0YW5jZUdldERhdGEocGFyYW1zLCBpbnB1dHMpKSB7XG4gICAgY29uc3QgW3Byb3BlcnR5XSA9IGRlZmluaXRpb24uc3BsaXQoJzogJyk7XG4gICAgaW5zdGFuY2VbcHJvcGVydHldID0gdW5kZWZpbmVkO1xuICB9XG4gIGZvciAoY29uc3QgZGVmaW5pdGlvbiBvZiBhcHBseVBhcmFtc1RvRml4dHVyZUluc3RhbmNlR2V0RGF0YShwYXJhbXMsIG91dHB1dHMpKSB7XG4gICAgY29uc3QgW3Byb3BlcnR5XSA9IGRlZmluaXRpb24uc3BsaXQoJzogJyk7XG4gICAgaW5zdGFuY2VbcHJvcGVydHldID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICB9XG59O1xuXG5jb25zdCBnZW5lcmF0ZUZpeHR1cmUgPSAoeyBwYXJhbXMsIG9wdGlvbnMsIGlucHV0cywgb3V0cHV0cyB9OiBhbnkpID0+IHtcbiAgY2xhc3MgTW9ja1JlbmRlckNvbXBvbmVudCB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgYXBwbHlQYXJhbXNUb0ZpeHR1cmVJbnN0YW5jZSh0aGlzLCBwYXJhbXMsIGlucHV0cywgb3V0cHV0cyk7XG4gICAgfVxuICB9XG5cbiAgQ29tcG9uZW50KG9wdGlvbnMpKE1vY2tSZW5kZXJDb21wb25lbnQpO1xuICBuZ01vY2tzLmZsdXNoVGVzdEJlZCgpO1xuICBUZXN0QmVkLmNvbmZpZ3VyZVRlc3RpbmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW01vY2tSZW5kZXJDb21wb25lbnRdLFxuICB9KTtcblxuICByZXR1cm4gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQoTW9ja1JlbmRlckNvbXBvbmVudCk7XG59O1xuXG5jb25zdCB0cnlXaGVuID0gKGZsYWc6IGJvb2xlYW4sIGNhbGxiYWNrOiAoKSA9PiB2b2lkKSA9PiB7XG4gIGlmICghZmxhZykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyeSB7XG4gICAgLy8gaXZ5IHRocm93cyBFcnJvcjogRXhwZWN0aW5nIGluc3RhbmNlIG9mIERPTSBFbGVtZW50XG4gICAgY2FsbGJhY2soKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIG5vdGhpbmcgdG8gZG9cbiAgfVxufTtcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pa2UxOHQvbmctbW9ja3MjbW9ja3JlbmRlclxuICovXG5mdW5jdGlvbiBNb2NrUmVuZGVyPE1Db21wb25lbnQ+KFxuICB0ZW1wbGF0ZTogVHlwZTxNQ29tcG9uZW50PixcbiAgcGFyYW1zOiB1bmRlZmluZWQsXG4gIGRldGVjdENoYW5nZXM/OiBib29sZWFuIHwgSU1vY2tSZW5kZXJPcHRpb25zLFxuKTogTW9ja2VkQ29tcG9uZW50Rml4dHVyZTxNQ29tcG9uZW50LCBNQ29tcG9uZW50PjtcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pa2UxOHQvbmctbW9ja3MjbW9ja3JlbmRlclxuICovXG5mdW5jdGlvbiBNb2NrUmVuZGVyPE1Db21wb25lbnQsIFRDb21wb25lbnQgZXh0ZW5kcyBvYmplY3Q+KFxuICB0ZW1wbGF0ZTogVHlwZTxNQ29tcG9uZW50PixcbiAgcGFyYW1zOiBUQ29tcG9uZW50LFxuICBkZXRlY3RDaGFuZ2VzPzogYm9vbGVhbiB8IElNb2NrUmVuZGVyT3B0aW9ucyxcbik6IE1vY2tlZENvbXBvbmVudEZpeHR1cmU8TUNvbXBvbmVudCwgVENvbXBvbmVudD47XG5cbi8qKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaWtlMTh0L25nLW1vY2tzI21vY2tyZW5kZXJcbiAqL1xuZnVuY3Rpb24gTW9ja1JlbmRlcjxNQ29tcG9uZW50LCBUQ29tcG9uZW50IGV4dGVuZHMgb2JqZWN0ID0gUmVjb3JkPGtleW9mIGFueSwgYW55Pj4oXG4gIHRlbXBsYXRlOiBUeXBlPE1Db21wb25lbnQ+LFxuICBwYXJhbXM6IFRDb21wb25lbnQsXG4gIGRldGVjdENoYW5nZXM/OiBib29sZWFuIHwgSU1vY2tSZW5kZXJPcHRpb25zLFxuKTogTW9ja2VkQ29tcG9uZW50Rml4dHVyZTxNQ29tcG9uZW50LCBUQ29tcG9uZW50PjtcblxuLyoqXG4gKiBXaXRob3V0IHBhcmFtcyB3ZSBzaG91bGRuJ3QgYXV0b2NvbXBsZXRlIGFueSBrZXlzIG9mIGFueSB0eXBlcy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pa2UxOHQvbmctbW9ja3MjbW9ja3JlbmRlclxuICovXG5mdW5jdGlvbiBNb2NrUmVuZGVyPE1Db21wb25lbnQ+KHRlbXBsYXRlOiBUeXBlPE1Db21wb25lbnQ+KTogTW9ja2VkQ29tcG9uZW50Rml4dHVyZTxNQ29tcG9uZW50LCBNQ29tcG9uZW50PjtcblxuLyoqXG4gKiBXaXRob3V0IHBhcmFtcyB3ZSBzaG91bGRuJ3QgYXV0b2NvbXBsZXRlIGFueSBrZXlzIG9mIGFueSB0eXBlcy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pa2UxOHQvbmctbW9ja3MjbW9ja3JlbmRlclxuICovXG5mdW5jdGlvbiBNb2NrUmVuZGVyPE1Db21wb25lbnQgPSB2b2lkPih0ZW1wbGF0ZTogc3RyaW5nKTogTW9ja2VkQ29tcG9uZW50Rml4dHVyZTxNQ29tcG9uZW50PjtcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pa2UxOHQvbmctbW9ja3MjbW9ja3JlbmRlclxuICovXG5mdW5jdGlvbiBNb2NrUmVuZGVyPE1Db21wb25lbnQgPSB2b2lkPihcbiAgdGVtcGxhdGU6IHN0cmluZyxcbiAgcGFyYW1zOiBSZWNvcmQ8a2V5b2YgYW55LCBhbnk+LFxuICBkZXRlY3RDaGFuZ2VzPzogYm9vbGVhbiB8IElNb2NrUmVuZGVyT3B0aW9ucyxcbik6IE1vY2tlZENvbXBvbmVudEZpeHR1cmU8TUNvbXBvbmVudCwgUmVjb3JkPGtleW9mIGFueSwgYW55Pj47XG5cbi8qKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaWtlMTh0L25nLW1vY2tzI21vY2tyZW5kZXJcbiAqL1xuZnVuY3Rpb24gTW9ja1JlbmRlcjxNQ29tcG9uZW50LCBUQ29tcG9uZW50IGV4dGVuZHMgUmVjb3JkPGtleW9mIGFueSwgYW55PiA9IFJlY29yZDxrZXlvZiBhbnksIGFueT4+KFxuICB0ZW1wbGF0ZTogc3RyaW5nLFxuICBwYXJhbXM6IFRDb21wb25lbnQsXG4gIGRldGVjdENoYW5nZXM/OiBib29sZWFuIHwgSU1vY2tSZW5kZXJPcHRpb25zLFxuKTogTW9ja2VkQ29tcG9uZW50Rml4dHVyZTxNQ29tcG9uZW50LCBUQ29tcG9uZW50PjtcblxuZnVuY3Rpb24gTW9ja1JlbmRlcjxNQ29tcG9uZW50LCBUQ29tcG9uZW50IGV4dGVuZHMgUmVjb3JkPGtleW9mIGFueSwgYW55Pj4oXG4gIHRlbXBsYXRlOiBzdHJpbmcgfCBUeXBlPE1Db21wb25lbnQ+LFxuICBwYXJhbXM/OiBUQ29tcG9uZW50LFxuICBmbGFnczogYm9vbGVhbiB8IElNb2NrUmVuZGVyT3B0aW9ucyA9IHRydWUsXG4pOiBNb2NrZWRDb21wb25lbnRGaXh0dXJlPE1Db21wb25lbnQsIFRDb21wb25lbnQ+IHtcbiAgY29uc3QgZmxhZ3NPYmplY3Q6IElNb2NrUmVuZGVyT3B0aW9ucyA9IHR5cGVvZiBmbGFncyA9PT0gJ2Jvb2xlYW4nID8geyBkZXRlY3RDaGFuZ2VzOiBmbGFncyB9IDogZmxhZ3M7XG5cbiAgbGV0IGlucHV0czogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gIGxldCBvdXRwdXRzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgbGV0IHNlbGVjdG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlmICh0eXBlb2YgdGVtcGxhdGUgIT09ICdzdHJpbmcnKSB7XG4gICAgKHsgaW5wdXRzLCBvdXRwdXRzLCBzZWxlY3RvciB9ID0gY29yZVJlZmxlY3REaXJlY3RpdmVSZXNvbHZlKHRlbXBsYXRlKSk7XG4gIH1cblxuICBjb25zdCBtb2NrVGVtcGxhdGUgPSBnZW5lcmF0ZVRlbXBsYXRlKHRlbXBsYXRlLCB7IHNlbGVjdG9yLCBwYXJhbXMsIGlucHV0cywgb3V0cHV0cyB9KTtcbiAgY29uc3Qgb3B0aW9uczogQ29tcG9uZW50ID0geyBwcm92aWRlcnM6IGZsYWdzT2JqZWN0LnByb3ZpZGVycywgc2VsZWN0b3I6ICdtb2NrLXJlbmRlcicsIHRlbXBsYXRlOiBtb2NrVGVtcGxhdGUgfTtcbiAgY29uc3QgZml4dHVyZTogYW55ID0gZ2VuZXJhdGVGaXh0dXJlKHsgcGFyYW1zLCBvcHRpb25zLCBpbnB1dHMsIG91dHB1dHMgfSk7XG4gIGlmIChmbGFnc09iamVjdC5kZXRlY3RDaGFuZ2VzKSB7XG4gICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgZml4dHVyZS5wb2ludCA9IGZpeHR1cmUuZGVidWdFbGVtZW50LmNoaWxkcmVuWzBdIHx8IGZpeHR1cmUuZGVidWdFbGVtZW50LmNoaWxkTm9kZXNbMF07XG4gIHRyeVdoZW4oIXBhcmFtcywgKCkgPT4gaW5zdGFsbFByb3h5KGZpeHR1cmUuY29tcG9uZW50SW5zdGFuY2UsIGZpeHR1cmUucG9pbnQ/LmNvbXBvbmVudEluc3RhbmNlKSk7XG5cbiAgcmV0dXJuIGZpeHR1cmU7XG59XG5cbmV4cG9ydCB7IE1vY2tSZW5kZXIgfTtcbiJdfQ==
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1yZW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvbW9jay1yZW5kZXIvbW9jay1yZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0NBQWlHO0FBQ2pHLGlEQUFrRTtBQUVsRSx1REFBcUQ7QUFDckQsMkZBQW1GO0FBRW5GLDJEQUFtRDtBQUNuRCwwREFBcUQ7QUFDckQsNkRBQTJEO0FBRTNELG1FQUE0RDtBQUM1RCx1RUFBK0Q7QUFHL0QsSUFBTSxtQ0FBbUMsR0FBRyxVQUFDLE1BQVcsRUFBRSxJQUFjLElBQUssT0FBQSxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBN0IsQ0FBNkIsQ0FBQztBQUUzRyxJQUFNLDRCQUE0QixHQUFHLFVBQ25DLFFBQWdDLEVBQ2hDLE1BQVcsRUFDWCxNQUFnQixFQUNoQixPQUFpQjs7SUFFakIsa0NBQXFCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDOztRQUN4QyxLQUF5QixJQUFBLEtBQUEsU0FBQSxtQ0FBbUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUEsZ0JBQUEsNEJBQUU7WUFBekUsSUFBTSxVQUFVLFdBQUE7WUFDYixJQUFBLEtBQUEsT0FBYSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFBLEVBQWxDLFFBQVEsUUFBMEIsQ0FBQztZQUMxQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsU0FBUyxDQUFDO1NBQ2hDOzs7Ozs7Ozs7O1FBQ0QsS0FBeUIsSUFBQSxLQUFBLFNBQUEsbUNBQW1DLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFBLGdCQUFBLDRCQUFFO1lBQTFFLElBQU0sVUFBVSxXQUFBO1lBQ2IsSUFBQSxLQUFBLE9BQWEsVUFBVSxD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LHFCQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkIsSUFBTSxPQUFPLEdBQVEsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3pFLElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDOUIsaUJBQWlCLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUM5QztTQUFNO1FBQ0wsZUFBZSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDNUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRVEsZ0NBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIERlYnVnRWxlbWVudCwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlLCBUZXN0QmVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcblxuaW1wb3J0IHsgZXh0ZW5kQ2xhc3MgfSBmcm9tICcuLi9jb21tb24vY29yZS5oZWxwZXJzJztcbmltcG9ydCBjb3JlUmVmbGVjdERpcmVjdGl2ZVJlc29sdmUgZnJvbSAnLi4vY29tbW9uL2NvcmUucmVmbGVjdC5kaXJlY3RpdmUtcmVzb2x2ZSc7XG5pbXBvcnQgeyBBbnlUeXBlLCBUeXBlIH0gZnJvbSAnLi4vY29tbW9uL2NvcmUudHlwZXMnO1xuaW1wb3J0IHsgaXNOZ0RlZiB9IGZyb20gJy4uL2NvbW1vbi9mdW5jLmlzLW5nLWRlZic7XG5pbXBvcnQgeyBuZ01vY2tzIH0gZnJvbSAnLi4vbW9jay1oZWxwZXIvbW9jay1oZWxwZXInO1xuaW1wb3J0IHsgTW9ja1NlcnZpY2UgfSBmcm9tICcuLi9tb2NrLXNlcnZpY2UvbW9jay1zZXJ2aWNlJztcblxuaW1wb3J0IGZ1bmNHZW5lcmF0ZVRlbXBsYXRlIGZyb20gJy4vZnVuYy5nZW5lcmF0ZS10ZW1wbGF0ZSc7XG5pbXBvcnQgZnVuY0luc3RhbGxQcm9wUmVhZGVyIGZyb20gJy4vZnVuYy5pbnN0YWxsLXByb3AtcmVhZGVyJztcbmltcG9ydCB7IElNb2NrUmVuZGVyT3B0aW9ucywgTW9ja2VkQ29tcG9uZW50Rml4dHVyZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBhcHBseVBhcmFtc1RvRml4dHVyZUluc3RhbmNlR2V0RGF0YSA9IChwYXJhbXM6IGFueSwga2V5czogc3RyaW5nW10pID0+ICghcGFyYW1zICYmIGtleXMgPyBrZXlzIDogW10pO1xuXG5jb25zdCBhcHBseVBhcmFtc1RvRml4dHVyZUluc3RhbmNlID0gKFxuICBpbnN0YW5jZTogUmVjb3JkPGtleW9mIGFueSwgYW55PixcbiAgcGFyYW1zOiBhbnksXG4gIGlucHV0czogc3RyaW5nW10sXG4gIG91dHB1dHM6IHN0cmluZ1tdLFxuKTogdm9pZCA9PiB7XG4gIGZ1bmNJbnN0YWxsUHJvcFJlYWRlcihpbnN0YW5jZSwgcGFyYW1zKTtcbiAgZm9yIChjb25zdCBkZWZpbml0aW9uIG9mIGFwcGx5UGFyYW1zVG9GaXh0dXJlSW5zdGFuY2VHZXREYXRhKHBhcmFtcywgaW5wdXRzKSkge1xuICAgIGNvbnN0IFtwcm9wZXJ0eV0gPSBkZWZpbml0aW9uLnNwbGl0KCc6ICcpO1xuICAgIGluc3RhbmNlW3Byb3BlcnR5XSA9IHVuZGVmaW5lZDtcbiAgfVxuICBmb3IgKGNvbnN0IGRlZmluaXRpb24gb2YgYXBwbHlQYXJhbXNUb0ZpeHR1cmVJbnN0YW5jZUdldERhdGEocGFyYW1zLCBvdXRwdXRzKSkge1xuICAgIGNvbnN0IFtwcm9wZXJ0eV0gPSBkZWZpbml0aW9uLnNwbGl0KCc6ICcpO1xuICAgIGluc3RhbmNlW3Byb3BlcnR5XSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgfVxufTtcblxuY29uc3QgcmVnaXN0ZXJUZW1wbGF0ZU1pZGRsZXdhcmUgPSAodGVtcGxhdGU6IEFueVR5cGU8YW55PiwgbWV0YTogRGlyZWN0aXZlKTogdm9pZCA9PiB7XG4gIGNvbnN0IGNoaWxkID0gZXh0ZW5kQ2xhc3ModGVtcGxhdGUpO1xuXG4gIGxldCBwcm92aWRlcnMgPSBtZXRhLnByb3ZpZGVycyB8fCBbXTtcbiAgcHJvdmlkZXJzID0gW1xuICAgIC4uLnByb3ZpZGVycyxcbiAgICB7XG4gICAgICBwcm92aWRlOiB0ZW1wbGF0ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBjaGlsZCxcbiAgICB9LFxuICBdO1xuICBtZXRhLnByb3ZpZGVycyA9IHByb3ZpZGVycztcblxuICBpZiAoaXNOZ0RlZih0ZW1wbGF0ZSwgJ2MnKSkge1xuICAgIENvbXBvbmVudChtZXRhKShjaGlsZCk7XG4gIH0gZWxzZSB7XG4gICAgRGlyZWN0aXZlKG1ldGEpKGNoaWxkKTtcbiAgfVxuICBUZXN0QmVkLmNvbmZpZ3VyZVRlc3RpbmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW2NoaWxkXSxcbiAgfSk7XG59O1xuXG5jb25zdCByZWZsZWN0VGVtcGxhdGUgPSAodGVtcGxhdGU6IEFueVR5cGU8YW55Pik6IERpcmVjdGl2ZSA9PiB7XG4gIGlmICghaXNOZ0RlZih0ZW1wbGF0ZSwgJ2MnKSAmJiAhaXNOZ0RlZih0ZW1wbGF0ZSwgJ2QnKSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IG1ldGEgPSB7IC4uLmNvcmVSZWZsZWN0RGlyZWN0aXZlUmVzb2x2ZSh0ZW1wbGF0ZSkgfTtcblxuICBpZiAobWV0YS5zZWxlY3RvciAmJiBtZXRhLnNlbGVjdG9yLm1hdGNoKC9bXFxbXFxdLF0vKSkge1xuICAgIG1ldGEuc2VsZWN0b3IgPSAnJztcbiAgfVxuXG4gIGlmICghbWV0YS5zZWxlY3Rvcikge1xuICAgIG1ldGEuc2VsZWN0b3IgPSBgbmctbW9ja3MtJHt0ZW1wbGF0ZS5uYW1lfWA7XG4gICAgcmVnaXN0ZXJUZW1wbGF0ZU1pZGRsZXdhcmUodGVtcGxhdGUsIG1ldGEpO1xuICB9XG5cbiAgcmV0dXJuIG1ldGE7XG59O1xuXG5jb25zdCBnZW5lcmF0ZUZpeHR1cmUgPSAoeyBwYXJhbXMsIG9wdGlvbnMsIGlucHV0cywgb3V0cHV0cyB9OiBhbnkpID0+IHtcbiAgY2xhc3MgTW9ja1JlbmRlckNvbXBvbmVudCB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgYXBwbHlQYXJhbXNUb0ZpeHR1cmVJbnN0YW5jZSh0aGlzLCBwYXJhbXMsIGlucHV0cywgb3V0cHV0cyk7XG4gICAgfVxuICB9XG5cbiAgQ29tcG9uZW50KG9wdGlvbnMpKE1vY2tSZW5kZXJDb21wb25lbnQpO1xuICBUZXN0QmVkLmNvbmZpZ3VyZVRlc3RpbmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW01vY2tSZW5kZXJDb21wb25lbnRdLFxuICB9KTtcblxuICByZXR1cm4gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQoTW9ja1JlbmRlckNvbXBvbmVudCk7XG59O1xuXG5jb25zdCBmaXh0dXJlRmFjdG9yeSA9IDxUPih0ZW1wbGF0ZTogYW55LCBtZXRhOiBEaXJlY3RpdmUsIHBhcmFtczogYW55LCBmbGFnczogYW55KTogQ29tcG9uZW50Rml4dHVyZTxUPiA9PiB7XG4gIGNvbnN0IG1vY2tUZW1wbGF0ZSA9IGZ1bmNHZW5lcmF0ZVRlbXBsYXRlKHRlbXBsYXRlLCB7IC4uLm1ldGEsIHBhcmFtcyB9KTtcbiAgY29uc3Qgb3B0aW9uczogQ29tcG9uZW50ID0geyBwcm92aWRlcnM6IGZsYWdzLnByb3ZpZGVycywgc2VsZWN0b3I6ICdtb2NrLXJlbmRlcicsIHRlbXBsYXRlOiBtb2NrVGVtcGxhdGUgfTtcbiAgY29uc3QgZml4dHVyZTogYW55ID0gZ2VuZXJhdGVGaXh0dXJlKHsgLi4ubWV0YSwgcGFyYW1zLCBvcHRpb25zIH0pO1xuICBpZiAoZmxhZ3MuZGV0ZWN0Q2hhbmdlcykge1xuICAgIGZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmV0dXJuIGZpeHR1cmU7XG59O1xuXG5jb25zdCBpc0V4cGVjdGVkUmVuZGVyID0gKHRlbXBsYXRlOiBhbnkpOiBib29sZWFuID0+XG4gIHR5cGVvZiB0ZW1wbGF0ZSA9PT0gJ3N0cmluZycgfHwgaXNOZ0RlZih0ZW1wbGF0ZSwgJ2MnKSB8fCBpc05nRGVmKHRlbXBsYXRlLCAnZCcpO1xuXG5jb25zdCByZW5kZXJEZWNsYXJhdGlvbiA9IChmaXh0dXJlOiBhbnksIHRlbXBsYXRlOiBhbnksIHBhcmFtczogYW55KTogdm9pZCA9PiB7XG4gIGZpeHR1cmUucG9pbnQgPSBmaXh0dXJlLmRlYnVnRWxlbWVudC5jaGlsZHJlblswXSB8fCBmaXh0dXJlLmRlYnVnRWxlbWVudC5jaGlsZE5vZGVzWzBdO1xuICBpZiAoaXNOZ0RlZih0ZW1wbGF0ZSwgJ2QnKSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmaXh0dXJlLnBvaW50LCAnY29tcG9uZW50SW5zdGFuY2UnLCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQ6ICgpID0+IG5nTW9ja3MuZ2V0KGZpeHR1cmUucG9pbnQsIHRlbXBsYXRlKSxcbiAgICB9KTtcbiAgfVxuICB0cnlXaGVuKCFwYXJhbXMsICgpID0+IGZ1bmNJbnN0YWxsUHJvcFJlYWRlcihmaXh0dXJlLmNvbXBvbmVudEluc3RhbmNlLCBmaXh0dXJlLnBvaW50Py5jb21wb25lbnRJbnN0YW5jZSkpO1xufTtcblxuY29uc3QgcmVuZGVySW5qZWN0aW9uID0gKGZpeHR1cmU6IGFueSwgdGVtcGxhdGU6IGFueSwgcGFyYW1zOiBhbnkpOiB2b2lkID0+IHtcbiAgY29uc3QgaW5zdGFuY2UgPSBUZXN0QmVkLmdldCh0ZW1wbGF0ZSk7XG4gIGlmIChwYXJhbXMpIHtcbiAgICBuZ01vY2tzLnN0dWIoaW5zdGFuY2UsIHBhcmFtcyk7XG4gIH1cbiAgZml4dHVyZS5wb2ludCA9IE1vY2tTZXJ2aWNlKERlYnVnRWxlbWVudCwge1xuICAgIGNoaWxkTm9kZXM6IFtdLFxuICAgIGNoaWxkcmVuOiBbXSxcbiAgICBjb21wb25lbnRJbnN0YW5jZTogaW5zdGFuY2UsXG4gICAgbmF0aXZlRWxlbWVudDogTW9ja1NlcnZpY2UoSFRNTEVsZW1lbnQpLFxuICB9KTtcbiAgZnVuY0luc3RhbGxQcm9wUmVhZGVyKGZpeHR1cmUuY29tcG9uZW50SW5zdGFuY2UsIGZpeHR1cmUucG9pbnQuY29tcG9uZW50SW5zdGFuY2UsIHRydWUpO1xufTtcblxuY29uc3QgdHJ5V2hlbiA9IChmbGFnOiBib29sZWFuLCBjYWxsYmFjazogKCkgPT4gdm9pZCkgPT4ge1xuICBpZiAoIWZsYWcpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdHJ5IHtcbiAgICAvLyBpdnkgdGhyb3dzIEVycm9yOiBFeHBlY3RpbmcgaW5zdGFuY2Ugb2YgRE9NIEVsZW1lbnRcbiAgICBjYWxsYmFjaygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gbm90aGluZyB0byBkb1xuICB9XG59O1xuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2lrZTE4dC9uZy1tb2NrcyNtb2NrcmVuZGVyXG4gKi9cbmZ1bmN0aW9uIE1vY2tSZW5kZXI8TUNvbXBvbmVudD4oXG4gIHRlbXBsYXRlOiBJbmplY3Rpb25Ub2tlbjxNQ29tcG9uZW50PixcbiAgcGFyYW1zPzogdW5kZWZpbmVkLFxuICBkZXRlY3RDaGFuZ2VzPzogYm9vbGVhbiB8IElNb2NrUmVuZGVyT3B0aW9ucyxcbik6IE1vY2tlZENvbXBvbmVudEZpeHR1cmU8TUNvbXBvbmVudCwgdm9pZD47XG5cbi8qKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaWtlMTh0L25nLW1vY2tzI21vY2tyZW5kZXJcbiAqL1xuZnVuY3Rpb24gTW9ja1JlbmRlcjxNQ29tcG9uZW50PihcbiAgdGVtcGxhdGU6IFR5cGU8TUNvbXBvbmVudD4sXG4gIHBhcmFtczogdW5kZWZpbmVkLFxuICBkZXRlY3RDaGFuZ2VzPzogYm9vbGVhbiB8IElNb2NrUmVuZGVyT3B0aW9ucyxcbik6IE1vY2tlZENvbXBvbmVudEZpeHR1cmU8TUNvbXBvbmVudCwgTUNvbXBvbmVudD47XG5cbi8qKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaWtlMTh0L25nLW1vY2tzI21vY2tyZW5kZXJcbiAqL1xuZnVuY3Rpb24gTW9ja1JlbmRlcjxNQ29tcG9uZW50LCBUQ29tcG9uZW50IGV4dGVuZHMgb2JqZWN0PihcbiAgdGVtcGxhdGU6IFR5cGU8TUNvbXBvbmVudD4sXG4gIHBhcmFtczogVENvbXBvbmVudCxcbiAgZGV0ZWN0Q2hhbmdlcz86IGJvb2xlYW4gfCBJTW9ja1JlbmRlck9wdGlvbnMsXG4pOiBNb2NrZWRDb21wb25lbnRGaXh0dXJlPE1Db21wb25lbnQsIFRDb21wb25lbnQ+O1xuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2lrZTE4dC9uZy1tb2NrcyNtb2NrcmVuZGVyXG4gKi9cbmZ1bmN0aW9uIE1vY2tSZW5kZXI8TUNvbXBvbmVudCwgVENvbXBvbmVudCBleHRlbmRzIG9iamVjdCA9IFJlY29yZDxrZXlvZiBhbnksIGFueT4+KFxuICB0ZW1wbGF0ZTogVHlwZTxNQ29tcG9uZW50PixcbiAgcGFyYW1zOiBUQ29tcG9uZW50LFxuICBkZXRlY3RDaGFuZ2VzPzogYm9vbGVhbiB8IElNb2NrUmVuZGVyT3B0aW9ucyxcbik6IE1vY2tlZENvbXBvbmVudEZpeHR1cmU8TUNvbXBvbmVudCwgVENvbXBvbmVudD47XG5cbi8qKlxuICogV2l0aG91dCBwYXJhbXMgd2Ugc2hvdWxkIG5vdCBhdXRvY29tcGxldGUgYW55IGtleXMgb2YgYW55IHR5cGVzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2lrZTE4dC9uZy1tb2NrcyNtb2NrcmVuZGVyXG4gKi9cbmZ1bmN0aW9uIE1vY2tSZW5kZXI8TUNvbXBvbmVudD4odGVtcGxhdGU6IFR5cGU8TUNvbXBvbmVudD4pOiBNb2NrZWRDb21wb25lbnRGaXh0dXJlPE1Db21wb25lbnQsIE1Db21wb25lbnQ+O1xuXG4vKipcbiAqIEFuIGVtcHR5IHN0cmluZyBkb2VzIG5vdCBoYXZlIHBvaW50LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2lrZTE4dC9uZy1tb2NrcyNtb2NrcmVuZGVyXG4gKi9cbmZ1bmN0aW9uIE1vY2tSZW5kZXIodGVtcGxhdGU6ICcnKTogQ29tcG9uZW50Rml4dHVyZTx2b2lkPiAmIHsgcG9pbnQ6IHVuZGVmaW5lZCB9O1xuXG4vKipcbiAqIFdpdGhvdXQgcGFyYW1zIHdlIHNob3VsZCBub3QgYXV0b2NvbXBsZXRlIGFueSBrZXlzIG9mIGFueSB0eXBlcy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pa2UxOHQvbmctbW9ja3MjbW9ja3JlbmRlclxuICovXG5mdW5jdGlvbiBNb2NrUmVuZGVyPE1Db21wb25lbnQgPSB2b2lkPih0ZW1wbGF0ZTogc3RyaW5nKTogTW9ja2VkQ29tcG9uZW50Rml4dHVyZTxNQ29tcG9uZW50PjtcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pa2UxOHQvbmctbW9ja3MjbW9ja3JlbmRlclxuICovXG5mdW5jdGlvbiBNb2NrUmVuZGVyPE1Db21wb25lbnQgPSB2b2lkPihcbiAgdGVtcGxhdGU6IHN0cmluZyxcbiAgcGFyYW1zOiBSZWNvcmQ8a2V5b2YgYW55LCBhbnk+LFxuICBkZXRlY3RDaGFuZ2VzPzogYm9vbGVhbiB8IElNb2NrUmVuZGVyT3B0aW9ucyxcbik6IE1vY2tlZENvbXBvbmVudEZpeHR1cmU8TUNvbXBvbmVudCwgUmVjb3JkPGtleW9mIGFueSwgYW55Pj47XG5cbi8qKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaWtlMTh0L25nLW1vY2tzI21vY2tyZW5kZXJcbiAqL1xuZnVuY3Rpb24gTW9ja1JlbmRlcjxNQ29tcG9uZW50LCBUQ29tcG9uZW50IGV4dGVuZHMgUmVjb3JkPGtleW9mIGFueSwgYW55PiA9IFJlY29yZDxrZXlvZiBhbnksIGFueT4+KFxuICB0ZW1wbGF0ZTogc3RyaW5nLFxuICBwYXJhbXM6IFRDb21wb25lbnQsXG4gIGRldGVjdENoYW5nZXM/OiBib29sZWFuIHwgSU1vY2tSZW5kZXJPcHRpb25zLFxuKTogTW9ja2VkQ29tcG9uZW50Rml4dHVyZTxNQ29tcG9uZW50LCBUQ29tcG9uZW50PjtcblxuZnVuY3Rpb24gTW9ja1JlbmRlcjxNQ29tcG9uZW50LCBUQ29tcG9uZW50IGV4dGVuZHMgUmVjb3JkPGtleW9mIGFueSwgYW55Pj4oXG4gIHRlbXBsYXRlOiBzdHJpbmcgfCBUeXBlPE1Db21wb25lbnQ+IHwgSW5qZWN0aW9uVG9rZW48TUNvbXBvbmVudD4sXG4gIHBhcmFtcz86IFRDb21wb25lbnQsXG4gIGZsYWdzOiBib29sZWFuIHwgSU1vY2tSZW5kZXJPcHRpb25zID0gdHJ1ZSxcbik6IGFueSB7XG4gIGNvbnN0IGZsYWdzT2JqZWN0OiBJTW9ja1JlbmRlck9wdGlvbnMgPSB0eXBlb2YgZmxhZ3MgPT09ICdib29sZWFuJyA/IHsgZGV0ZWN0Q2hhbmdlczogZmxhZ3MgfSA6IGZsYWdzO1xuICBjb25zdCBtZXRhOiBEaXJlY3RpdmUgPSB0eXBlb2YgdGVtcGxhdGUgPT09ICdzdHJpbmcnIHx8IGlzTmdEZWYodGVtcGxhdGUsICd0JykgPyB7fSA6IHJlZmxlY3RUZW1wbGF0ZSh0ZW1wbGF0ZSk7XG5cbiAgbmdNb2Nrcy5mbHVzaFRlc3RCZWQoKTtcbiAgY29uc3QgZml4dHVyZTogYW55ID0gZml4dHVyZUZhY3RvcnkodGVtcGxhdGUsIG1ldGEsIHBhcmFtcywgZmxhZ3NPYmplY3QpO1xuICBpZiAoaXNFeHBlY3RlZFJlbmRlcih0ZW1wbGF0ZSkpIHtcbiAgICByZW5kZXJEZWNsYXJhdGlvbihmaXh0dXJlLCB0ZW1wbGF0ZSwgcGFyYW1zKTtcbiAgfSBlbHNlIHtcbiAgICByZW5kZXJJbmplY3Rpb24oZml4dHVyZSwgdGVtcGxhdGUsIHBhcmFtcyk7XG4gIH1cblxuICByZXR1cm4gZml4dHVyZTtcbn1cblxuZXhwb3J0IHsgTW9ja1JlbmRlciB9O1xuIl19
|
|
@@ -52,7 +52,7 @@ var anyDiffers = function (a, b) {
|
|
|
52
52
|
}
|
|
53
53
|
return false;
|
|
54
54
|
};
|
|
55
|
-
var createFromResolution = function (provide, resolution
|
|
55
|
+
var createFromResolution = function (provide, resolution) {
|
|
56
56
|
var mockDef = resolution;
|
|
57
57
|
var existingMock = ng_mocks_universe_1.default.builtProviders.get(provide);
|
|
58
58
|
if (existingMock) {
|
|
@@ -65,7 +65,7 @@ var createFromResolution = function (provide, resolution, multi) {
|
|
|
65
65
|
useClass: mockDef,
|
|
66
66
|
};
|
|
67
67
|
}
|
|
68
|
-
return
|
|
68
|
+
return mockDef;
|
|
69
69
|
};
|
|
70
70
|
var isSuitableProvider = function (provider, provide) {
|
|
71
71
|
return ng_mocks_universe_1.default.builtProviders.has(core_tokens_1.NG_MOCKS_INTERCEPTORS) &&
|
|
@@ -126,10 +126,10 @@ var createPredefinedMockProvider = function (provider, provide) {
|
|
|
126
126
|
}
|
|
127
127
|
return undefined;
|
|
128
128
|
};
|
|
129
|
-
var createMockProvider = function (provider, provide,
|
|
129
|
+
var createMockProvider = function (provider, provide, change) {
|
|
130
130
|
var _a;
|
|
131
131
|
var mockDef = createPredefinedMockProvider(provider, provide);
|
|
132
|
-
if (!mockDef && ng_mocks_universe_1.default.flags.has('skipMock')) {
|
|
132
|
+
if (!mockDef && ng_mocks_universe_1.default.flags.has('skipMock') && ng_mocks_universe_1.default.getResolution(provide) !== 'mock') {
|
|
133
133
|
(_a = ng_mocks_universe_1.default.config.get('ngMocksDepsSkip')) === null || _a === void 0 ? void 0 : _a.add(provide);
|
|
134
134
|
mockDef = provider;
|
|
135
135
|
}
|
|
@@ -137,9 +137,6 @@ var createMockProvider = function (provider, provide, resolutions, change) {
|
|
|
137
137
|
mockDef = mock_provider_1.default(provider);
|
|
138
138
|
}
|
|
139
139
|
mockDef = replaceWithMocks(provider, provide, mockDef);
|
|
140
|
-
if (!func_is_ng_injection_token_1.isNgInjectionToken(provide) || provider !== mockDef) {
|
|
141
|
-
resolutions.set(provide, mockDef);
|
|
142
|
-
}
|
|
143
140
|
if (!areEqualDefs(mockDef, provider, provide)) {
|
|
144
141
|
change();
|
|
145
142
|
}
|
|
@@ -164,7 +161,7 @@ var areEqualDefs = function (mockDef, provider, provide) {
|
|
|
164
161
|
return !providerDiffers;
|
|
165
162
|
};
|
|
166
163
|
var isPreconfiguredDependency = function (provider, provide) {
|
|
167
|
-
// we
|
|
164
|
+
// we should not touch excluded providers.
|
|
168
165
|
if (ng_mocks_universe_1.default.builtProviders.has(provide) && ng_mocks_universe_1.default.builtProviders.get(provide) === null) {
|
|
169
166
|
return true;
|
|
170
167
|
}
|
|
@@ -176,7 +173,7 @@ var isPreconfiguredDependency = function (provider, provide) {
|
|
|
176
173
|
// tries to resolve a provider based on current universe state.
|
|
177
174
|
exports.default = (function (provider, resolutions, changed) {
|
|
178
175
|
var _a = parseProvider(provider, changed), provide = _a.provide, multi = _a.multi, change = _a.change;
|
|
179
|
-
// we
|
|
176
|
+
// we should not touch our system providers.
|
|
180
177
|
if (provider && typeof provider === 'object' && provider.useExisting && provider.useExisting.__ngMocksSkip) {
|
|
181
178
|
return provider;
|
|
182
179
|
}
|
|
@@ -184,9 +181,9 @@ exports.default = (function (provider, resolutions, changed) {
|
|
|
184
181
|
return change();
|
|
185
182
|
}
|
|
186
183
|
if (resolutions.has(provide)) {
|
|
187
|
-
return createFromResolution(provide, resolutions.get(provide)
|
|
184
|
+
return createFromResolution(provide, resolutions.get(provide));
|
|
188
185
|
}
|
|
189
|
-
var mockDef = createMockProvider(provider, provide,
|
|
186
|
+
var mockDef = createMockProvider(provider, provide, change);
|
|
190
187
|
return multi && typeof mockDef === 'object' ? __assign(__assign({}, mockDef), { multi: multi }) : mockDef;
|
|
191
188
|
});
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLnJlc29sdmUtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvbW9jay1zZXJ2aWNlL2hlbHBlci5yZXNvbHZlLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUEyRDtBQUMzRCxxREFBOEQ7QUFDOUQsaUVBQTBEO0FBQzFELG1GQUEwRTtBQUMxRSxpRUFBMEQ7QUFFMUQsNkRBQXNEO0FBQ3RELGlEQUEyQztBQUUzQyxJQUFNLFVBQVUsR0FBRyxVQUFDLENBQU0sRUFBRSxDQUFNOztJQUFFLGNBQWlCO1NBQWpCLFVBQWlCLEVBQWpCLHFCQUFpQixFQUFqQixJQUFpQjtRQUFqQiw2QkFBaUI7OztRQUNuRCxLQUFrQixJQUFBLFNBQUEsU0FBQSxJQUFJLENBQUEsMEJBQUEsNENBQUU7WUFBbkIsSUFBTSxHQUFHLGlCQUFBO1lBQ1osSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNyQixPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7Ozs7Ozs7OztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsSUFBTSxvQkFBb0IsR0FBRyxVQUFDLE9BQVksRUFBRSxVQUFlLEVBQUUsS0FBZTtJQUMxRSxJQUFJLE9BQU8sR0FBRyxVQUFVLENBQUM7SUFFekIsSUFBTSxZQUFZLEdBQUcsMkJBQWUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pFLElBQUksWUFBWSxFQUFFO1FBQ2hCLE9BQU8sR0FBRyxZQUFZLENBQUM7S0FDeEI7SUFFRCxtRUFBbUU7SUFDbkUsSUFBSSxPQUFPLE9BQU8sS0FBSyxVQUFVLEVBQUU7UUFDakMsT0FBTyxHQUFHO1lBQ1IsT0FBTyxTQUFBO1lBQ1AsUUFBUSxFQUFFLE9BQU87U0FDbEIsQ0FBQztLQUNI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LEVBQUUsTUFBTSxZQUFxQyxDQUFDO0lBQ3BFLDRDQUE0QztJQUM1QyxJQUFJLFFBQVEsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksUUFBUSxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRTtRQUMxRyxPQUFPLFFBQVEsQ0FBQztLQUNqQjtJQUNELElBQUkseUJBQXlCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQ2hELE9BQU8sTUFBTSxFQUFFLENBQUM7S0FDakI7SUFDRCxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDNUIsT0FBTyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUN2RTtJQUVELElBQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTNFLE9BQU8sS0FBSyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLHVCQUFNLE9BQU8sS0FBRSxLQUFLLE9BQUEsSUFBRyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQ2hGLENBQUMsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dHJhY3REZXBlbmRlbmN5IH0gZnJvbSAnLi4vY29tbW9uL2NvcmUuaGVscGVycyc7XG5pbXBvcnQgeyBOR19NT0NLU19JTlRFUkNFUFRPUlMgfSBmcm9tICcuLi9jb21tb24vY29yZS50b2tlbnMnO1xuaW1wb3J0IGZ1bmNHZXRQcm92aWRlciBmcm9tICcuLi9jb21tb24vZnVuYy5nZXQtcHJvdmlkZXInO1xuaW1wb3J0IHsgaXNOZ0luamVjdGlvblRva2VuIH0gZnJvbSAnLi4vY29tbW9uL2Z1bmMuaXMtbmctaW5qZWN0aW9uLXRva2VuJztcbmltcG9ydCBuZ01vY2tzVW5pdmVyc2UgZnJvbSAnLi4vY29tbW9uL25nLW1vY2tzLXVuaXZlcnNlJztcblxuaW1wb3J0IGhlbHBlck1vY2tTZXJ2aWNlIGZyb20gJy4vaGVscGVyLm1vY2stc2VydmljZSc7XG5pbXBvcnQgbW9ja1Byb3ZpZGVyIGZyb20gJy4vbW9jay1wcm92aWRlcic7XG5cbmNvbnN0IGFueURpZmZlcnMgPSAoYTogYW55LCBiOiBhbnksIC4uLmtleXM6IHN0cmluZ1tdKTogYm9vbGVhbiA9PiB7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBpZiAoYVtrZXldICE9PSBiW2tleV0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZyb21SZXNvbHV0aW9uID0gKHByb3ZpZGU6IGFueSwgcmVzb2x1dGlvbjogYW55LCBtdWx0aT86IGJvb2xlYW4pID0+IHtcbiAgbGV0IG1vY2tEZWYgPSByZXNvbHV0aW9uO1xuXG4gIGNvbnN0IGV4aXN0aW5nTW9jayA9IG5nTW9ja3NVbml2ZXJzZS5idWlsdFByb3ZpZGVycy5nZXQocHJvdmlkZSk7XG4gIGlmIChleGlzdGluZ01vY2spIHtcbiAgICBtb2NrRGVmID0gZXhpc3RpbmdNb2NrO1xuICB9XG5cbiAgLy8gQSBjYXNlIHdoZW4gYSBwcm92aWRlciBpcyBhY3R1YWxseSBhIGNvbXBvbmVudCwgZGlyZWN0aXZlLCBwaXBlLlxuICBpZiAodHlwZW9mIG1vY2tEZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICBtb2NrRGVmID0ge1xuICAgICAgcHJvdmlkZSxcbiAgICAgIHVzZUNsYXNzOiBtb2NrRGVmLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbXVsdGkgJiYgdHlwZW9mIG1vY2tEZWYgPT09ICdvYmplY3QnID8geyAuLi5tb2NrRGVmLCBtdWx0aSB9IDogbW9ja0RlZjtcbn07XG5cbmNvbnN0IGlzU3VpdGFibGVQcm92aWRlciA9IChwcm92aWRlcjogYW55LCBwcm92aWRlOiBhbnkpOiBib29sZWFuID0+XG4gIG5nTW9ja3NVbml2ZXJzZS5idWlsdFByb3ZpZGVycy5oYXMoTkdfTU9DS1NfSU5URVJDRVBUT1JTKSAmJlxuICBuZ01vY2tzVW5pdmVyc2UuYnVpbHRQcm92aWRlcnMuZ2V0KE5HX01PQ0tTX0lOVEVSQ0VQVE9SUykgPT09IG51bGwgJiZcbiAgaXNOZ0luamVjdGlvblRva2VuKHByb3ZpZGUpICYmXG4gIHByb3ZpZGUudG9TdHJpbmcoKSA9PT0gJ0luamVjdGlvblRva2VuIEhUVFBfSU5URVJDRVBUT1JTJyAmJlxuICBwcm92aWRlICE9PSBwcm92aWRlcjtcblxuY29uc3QgZXhjbHVkZUludGVyY2VwdG9ycyA9IChwcm92aWRlcjogYW55LCBwcm92aWRlOiBhbnkpOiBib29sZWFuID0+IHtcbiAgaWYgKGlzU3VpdGFibGVQcm92aWRlcihwcm92aWRlciwgcHJvdmlkZSkpIHtcbiAgICBpZiAocHJvdmlkZXIudXNlRmFjdG9yeSB8fCBwcm92aWRlci51c2VWYWx1ZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGludGVyY2VwdG9yID0gcHJvdmlkZXIudXNlRXhpc3RpbmcgfHwgcHJvdmlkZXIudXNlQ2xhc3M7XG4gICAgaWYgKCFuZ01vY2tzVW5pdmVyc2UuYnVpbHRQcm92aWRlcnMuaGFzKGludGVyY2VwdG9yKSB8fCBuZ01vY2tzVW5pdmVyc2UuYnVpbHRQcm92aWRlcnMuZ2V0KGludGVyY2VwdG9yKSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuY29uc3QgcGFyc2VQcm92aWRlciA9IChcbiAgcHJvdmlkZXI6IGFueSxcbiAgY2FsbGJhY2s6IGFueSxcbik6IHtcbiAgY2hhbmdlOiAoKSA9PiB2b2lkO1xuICBtdWx0aTogYm9vbGVhbjtcbiAgcHJvdmlkZTogYW55O1xufSA9PiB7XG4gIGNvbnN0IHByb3ZpZGUgPSBmdW5jR2V0UHJvdmlkZXIocHJvdmlkZXIpO1xuICBjb25zdCBtdWx0aSA9IHByb3ZpZGVyICE9PSBwcm92aWRlICYmICEhcHJvdmlkZXIubXVsdGk7XG5cbiAgcmV0dXJuIHtcbiAgICBjaGFuZ2U6ICgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH0sXG4gICAgbXVsdGksXG4gICAgcHJvdmlkZSxcbiAgfTtcbn07XG5cbi8vIGlmIHRoZSBwcm92aWRlciBpcyBhIHZhbHVlLCB3ZSBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIHZhbHVlIGFuZCB0byByZXBsYWNlIGFsbCBtb2NrIGluc3RhbmNlcy5cbmNvbnN0IHJlcGxhY2VXaXRoTW9ja3MgPSAocHJvdmlkZXI6IGFueSwgcHJvdmlkZTogYW55LCBtb2NrRGVmOiBhbnkpID0+IHtcbiAgaWYgKHByb3ZpZGUgIT09IHByb3ZpZGVyICYmIG1vY2tEZWYgJiYgbW9ja0RlZi51c2VWYWx1ZSkge1xuICAgIGNvbnN0IHVzZVZhbHVlID0gaGVscGVyTW9ja1NlcnZpY2UucmVwbGFjZVdpdGhNb2Nrcyhtb2NrRGVmLnVzZVZhbHVlKTtcblxuICAgIHJldHVybiB1c2VWYWx1ZSA9PT0gbW9ja0RlZi51c2VWYWx1ZVxuICAgICAgPyBtb2NrRGVmXG4gICAgICA6IHtcbiAgICAgICAgICAuLi5tb2NrRGVmLFxuICAgICAgICAgIHVzZVZhbHVlLFxuICAgICAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG1vY2tEZWY7XG59O1xuXG5jb25zdCBjcmVhdGVQcmVkZWZpbmVkTW9ja1Byb3ZpZGVyID0gKHByb3ZpZGVyOiBhbnksIHByb3ZpZGU6IGFueSk6IGFueSA9PiB7XG4gIC8vIFRoZW4gd2UgY2hlY2sgZGVjaXNpb25zIHdoZXRoZXIgd2Ugc2hvdWxkIGtlZXAgb3IgcmVwbGFjZSBhIHByb3ZpZGVyLlxuICBpZiAobmdNb2Nrc1VuaXZlcnNlLmJ1aWx0UHJvdmlkZXJzLmhhcyhwcm92aWRlKSkge1xuICAgIGNvbnN0IG1vY2tEZWYgPSBuZ01vY2tzVW5pdmVyc2UuYnVpbHRQcm92aWRlcnMuZ2V0KHByb3ZpZGUpO1xuICAgIGlmIChtb2NrRGVmID09PSBwcm92aWRlKSB7XG4gICAgICByZXR1cm4gcHJvdmlkZXI7XG4gICAgfVxuICAgIGlmIChtb2NrRGVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByb3ZpZGUsXG4gICAgICAgIHVzZVZhbHVlOiB1bmRlZmluZWQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBtb2NrRGVmO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGNyZWF0ZU1vY2tQcm92aWRlciA9IChwcm92aWRlcjogYW55LCBwcm92aWRlOiBhbnksIHJlc29sdXRpb25zOiBNYXA8YW55LCBhbnk+LCBjaGFuZ2U6ICgpID0+IHZvaWQpID0+IHtcbiAgbGV0IG1vY2tEZWYgPSBjcmVhdGVQcmVkZWZpbmVkTW9ja1Byb3ZpZGVyKHByb3ZpZGVyLCBwcm92aWRlKTtcblxuICBpZiAoIW1vY2tEZWYgJiYgbmdNb2Nrc1VuaXZlcnNlLmZsYWdzLmhhcygnc2tpcE1vY2snKSkge1xuICAgIG5nTW9ja3NVbml2ZXJzZS5jb25maWcuZ2V0KCduZ01vY2tzRGVwc1NraXAnKT8uYWRkKHByb3ZpZGUpO1xuICAgIG1vY2tEZWYgPSBwcm92aWRlcjtcbiAgfVxuICBpZiAoIW1vY2tEZWYpIHtcbiAgICBtb2NrRGVmID0gbW9ja1Byb3ZpZGVyKHByb3ZpZGVyKTtcbiAgfVxuXG4gIG1vY2tEZWYgPSByZXBsYWNlV2l0aE1vY2tzKHByb3ZpZGVyLCBwcm92aWRlLCBtb2NrRGVmKTtcbiAgaWYgKCFpc05nSW5qZWN0aW9uVG9rZW4ocHJvdmlkZSkgfHwgcHJvdmlkZXIgIT09IG1vY2tEZWYpIHtcbiAgICByZXNvbHV0aW9ucy5zZXQocHJvdmlkZSwgbW9ja0RlZik7XG4gIH1cbiAgaWYgKCFhcmVFcXVhbERlZnMobW9ja0RlZiwgcHJvdmlkZXIsIHByb3ZpZGUpKSB7XG4gICAgY2hhbmdlKCk7XG4gIH1cbiAgLy8gVG91Y2hpbmcgb25seSB3aGVuIHdlIHJlYWxseSBwcm92aWRlIGEgdmFsdWUuXG4gIGlmIChtb2NrRGVmKSB7XG4gICAgbmdNb2Nrc1VuaXZlcnNlLnRvdWNoZXMuYWRkKHByb3ZpZGUpO1xuICB9XG5cbiAgcmV0dXJuIG1vY2tEZWY7XG59O1xuXG5jb25zdCBhcmVFcXVhbERlZnMgPSAobW9ja0RlZjogYW55LCBwcm92aWRlcjogYW55LCBwcm92aWRlOiBhbnkpOiBib29sZWFuID0+IHtcbiAgbGV0IHByb3ZpZGVyRGlmZmVycyA9IGZhbHNlO1xuICBsZXQgZGVmRGlmZmVycyA9ICFtb2NrRGVmO1xuICBpZiAocHJvdmlkZXIgJiYgbW9ja0RlZiAmJiAhZGVmRGlmZmVycykge1xuICAgIGRlZkRpZmZlcnMgPSBhbnlEaWZmZXJzKHByb3ZpZGVyLCBtb2NrRGVmLCAncHJvdmlkZScsICd1c2VWYWx1ZScsICd1c2VDbGFzcycsICd1c2VFeGlzdGluZycsICd1c2VGYWN0b3J5JywgJ2RlcHMnKTtcbiAgfVxuICBpZiAocHJvdmlkZXIgPT09IHByb3ZpZGUgJiYgbW9ja0RlZiAhPT0gcHJvdmlkZXIpIHtcbiAgICBwcm92aWRlckRpZmZlcnMgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHByb3ZpZGVyICE9PSBwcm92aWRlICYmIGRlZkRpZmZlcnMpIHtcbiAgICBwcm92aWRlckRpZmZlcnMgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuICFwcm92aWRlckRpZmZlcnM7XG59O1xuXG5jb25zdCBpc1ByZWNvbmZpZ3VyZWREZXBlbmRlbmN5ID0gKHByb3ZpZGVyOiBhbnksIHByb3ZpZGU6IGFueSk6IGJvb2xlYW4gPT4ge1xuICAvLyAgd2Ugc2hvdWxkbid0IHRvdWNoIGV4Y2x1ZGVkIHByb3ZpZGVycy5cbiAgaWYgKG5nTW9ja3NVbml2ZXJzZS5idWlsdFByb3ZpZGVycy5oYXMocHJvdmlkZSkgJiYgbmdNb2Nrc1VuaXZlcnNlLmJ1aWx0UHJvdmlkZXJzLmdldChwcm92aWRlKSA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHByb3ZpZGUgIT09IHByb3ZpZGVyICYmIHByb3ZpZGVyLmRlcHMpIHtcbiAgICBleHRyYWN0RGVwZW5kZW5jeShwcm92aWRlci5kZXBzLCBuZ01vY2tzVW5pdmVyc2UuY29uZmlnLmdldCgnbmdNb2Nrc0RlcHMnKSk7XG4gIH1cblxuICByZXR1cm4gZXhjbHVkZUludGVyY2VwdG9ycyhwcm92aWRlciwgcHJvdmlkZSk7XG59O1xuXG4vLyB0cmllcyB0byByZXNvbHZlIGEgcHJvdmlkZXIgYmFzZWQgb24gY3VycmVudCB1bml2ZXJzZSBzdGF0ZS5cbmV4cG9ydCBkZWZhdWx0IChwcm92aWRlcjogYW55LCByZXNvbHV0aW9uczogTWFwPGFueSwgYW55PiwgY2hhbmdlZD86ICgpID0+IHZvaWQpID0+IHtcbiAgY29uc3QgeyBwcm92aWRlLCBtdWx0aSwgY2hhbmdlIH0gPSBwYXJzZVByb3ZpZGVyKHByb3ZpZGVyLCBjaGFuZ2VkKTtcbiAgLy8gIHdlIHNob3VsZG4ndCB0b3VjaCBvdXIgc3lzdGVtIHByb3ZpZGVycy5cbiAgaWYgKHByb3ZpZGVyICYmIHR5cGVvZiBwcm92aWRlciA9PT0gJ29iamVjdCcgJiYgcHJvdmlkZXIudXNlRXhpc3RpbmcgJiYgcHJvdmlkZXIudXNlRXhpc3RpbmcuX19uZ01vY2tzU2tpcCkge1xuICAgIHJldHVybiBwcm92aWRlcjtcbiAgfVxuICBpZiAoaXNQcmVjb25maWd1cmVkRGVwZW5kZW5jeShwcm92aWRlciwgcHJvdmlkZSkpIHtcbiAgICByZXR1cm4gY2hhbmdlKCk7XG4gIH1cbiAgaWYgKHJlc29sdXRpb25zLmhhcyhwcm92aWRlKSkge1xuICAgIHJldHVybiBjcmVhdGVGcm9tUmVzb2x1dGlvbihwcm92aWRlLCByZXNvbHV0aW9ucy5nZXQocHJvdmlkZSksIG11bHRpKTtcbiAgfVxuXG4gIGNvbnN0IG1vY2tEZWYgPSBjcmVhdGVNb2NrUHJvdmlkZXIocHJvdmlkZXIsIHByb3ZpZGUsIHJlc29sdXRpb25zLCBjaGFuZ2UpO1xuXG4gIHJldHVybiBtdWx0aSAmJiB0eXBlb2YgbW9ja0RlZiA9PT0gJ29iamVjdCcgPyB7IC4uLm1vY2tEZWYsIG11bHRpIH0gOiBtb2NrRGVmO1xufTtcbiJdfQ==
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLnJlc29sdmUtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvbW9jay1zZXJ2aWNlL2hlbHBlci5yZXNvbHZlLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUEyRDtBQUMzRCxxREFBOEQ7QUFDOUQsaUVBQTBEO0FBQzFELG1GQUEwRTtBQUMxRSxpRUFBMEQ7QUFFMUQsNkRBQXNEO0FBQ3RELGlEQUEyQztBQUUzQyxJQUFNLFVBQVUsR0FBRyxVQUFDLENBQU0sRUFBRSxDQUFNOztJQUFFLGNBQWlCO1NBQWpCLFVBQWlCLEVBQWpCLHFCQUFpQixFQUFqQixJQUFpQjtRQUFqQiw2QkFBaUI7OztRQUNuRCxLQUFrQixJQUFBLFNBQUEsU0FBQSxJQUFJLENBQUEsMEJBQUEsNENBQUU7WUFBbkIsSUFBTSxHQUFHLGlCQUFBO1lBQ1osSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNyQixPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7Ozs7Ozs7OztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsSUFBTSxvQkFBb0IsR0FBRyxVQUFDLE9BQVksRUFBRSxVQUFlO0lBQ3pELElBQUksT0FBTyxHQUFHLFVBQVUsQ0FBQztJQUV6QixJQUFNLFlBQVksR0FBRywyQkFBZSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakUsSUFBSSxZQUFZLEVBQUU7UUFDaEIsT0FBTyxHQUFHLFlBQVksQ0FBQztLQUN4QjtJQUVELG1FQUFtRTtJQUNuRSxJQUFJLE9BQU8sT0FBTyxLQUFLLFVBQVUsRUFBRTtRQUNqQyxPQUFPLEdBQUc7WUFDUixPQUFPLFNBQUE7WUFDUCxRQUFRLEVBQUUsT0FBTztTQUNsQixDQUFDO0tBQ0g7SUFFRCxPQUFP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Q0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUU7UUFDaEQsT0FBTyxNQUFNLEVBQUUsQ0FBQztLQUNqQjtJQUNELElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUM1QixPQUFPLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDaEU7SUFFRCxJQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTlELE9BQU8sS0FBSyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLHVCQUFNLE9BQU8sS0FBRSxLQUFLLE9BQUEsSUFBRyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQ2hGLENBQUMsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dHJhY3REZXBlbmRlbmN5IH0gZnJvbSAnLi4vY29tbW9uL2NvcmUuaGVscGVycyc7XG5pbXBvcnQgeyBOR19NT0NLU19JTlRFUkNFUFRPUlMgfSBmcm9tICcuLi9jb21tb24vY29yZS50b2tlbnMnO1xuaW1wb3J0IGZ1bmNHZXRQcm92aWRlciBmcm9tICcuLi9jb21tb24vZnVuYy5nZXQtcHJvdmlkZXInO1xuaW1wb3J0IHsgaXNOZ0luamVjdGlvblRva2VuIH0gZnJvbSAnLi4vY29tbW9uL2Z1bmMuaXMtbmctaW5qZWN0aW9uLXRva2VuJztcbmltcG9ydCBuZ01vY2tzVW5pdmVyc2UgZnJvbSAnLi4vY29tbW9uL25nLW1vY2tzLXVuaXZlcnNlJztcblxuaW1wb3J0IGhlbHBlck1vY2tTZXJ2aWNlIGZyb20gJy4vaGVscGVyLm1vY2stc2VydmljZSc7XG5pbXBvcnQgbW9ja1Byb3ZpZGVyIGZyb20gJy4vbW9jay1wcm92aWRlcic7XG5cbmNvbnN0IGFueURpZmZlcnMgPSAoYTogYW55LCBiOiBhbnksIC4uLmtleXM6IHN0cmluZ1tdKTogYm9vbGVhbiA9PiB7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBpZiAoYVtrZXldICE9PSBiW2tleV0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmNvbnN0IGNyZWF0ZUZyb21SZXNvbHV0aW9uID0gKHByb3ZpZGU6IGFueSwgcmVzb2x1dGlvbjogYW55KSA9PiB7XG4gIGxldCBtb2NrRGVmID0gcmVzb2x1dGlvbjtcblxuICBjb25zdCBleGlzdGluZ01vY2sgPSBuZ01vY2tzVW5pdmVyc2UuYnVpbHRQcm92aWRlcnMuZ2V0KHByb3ZpZGUpO1xuICBpZiAoZXhpc3RpbmdNb2NrKSB7XG4gICAgbW9ja0RlZiA9IGV4aXN0aW5nTW9jaztcbiAgfVxuXG4gIC8vIEEgY2FzZSB3aGVuIGEgcHJvdmlkZXIgaXMgYWN0dWFsbHkgYSBjb21wb25lbnQsIGRpcmVjdGl2ZSwgcGlwZS5cbiAgaWYgKHR5cGVvZiBtb2NrRGVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgbW9ja0RlZiA9IHtcbiAgICAgIHByb3ZpZGUsXG4gICAgICB1c2VDbGFzczogbW9ja0RlZixcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG1vY2tEZWY7XG59O1xuXG5jb25zdCBpc1N1aXRhYmxlUHJvdmlkZXIgPSAocHJvdmlkZXI6IGFueSwgcHJvdmlkZTogYW55KTogYm9vbGVhbiA9PlxuICBuZ01vY2tzVW5pdmVyc2UuYnVpbHRQcm92aWRlcnMuaGFzKE5HX01PQ0tTX0lOVEVSQ0VQVE9SUykgJiZcbiAgbmdNb2Nrc1VuaXZlcnNlLmJ1aWx0UHJvdmlkZXJzLmdldChOR19NT0NLU19JTlRFUkNFUFRPUlMpID09PSBudWxsICYmXG4gIGlzTmdJbmplY3Rpb25Ub2tlbihwcm92aWRlKSAmJlxuICBwcm92aWRlLnRvU3RyaW5nKCkgPT09ICdJbmplY3Rpb25Ub2tlbiBIVFRQX0lOVEVSQ0VQVE9SUycgJiZcbiAgcHJvdmlkZSAhPT0gcHJvdmlkZXI7XG5cbmNvbnN0IGV4Y2x1ZGVJbnRlcmNlcHRvcnMgPSAocHJvdmlkZXI6IGFueSwgcHJvdmlkZTogYW55KTogYm9vbGVhbiA9PiB7XG4gIGlmIChpc1N1aXRhYmxlUHJvdmlkZXIocHJvdmlkZXIsIHByb3ZpZGUpKSB7XG4gICAgaWYgKHByb3ZpZGVyLnVzZUZhY3RvcnkgfHwgcHJvdmlkZXIudXNlVmFsdWUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBpbnRlcmNlcHRvciA9IHByb3ZpZGVyLnVzZUV4aXN0aW5nIHx8IHByb3ZpZGVyLnVzZUNsYXNzO1xuICAgIGlmICghbmdNb2Nrc1VuaXZlcnNlLmJ1aWx0UHJvdmlkZXJzLmhhcyhpbnRlcmNlcHRvcikgfHwgbmdNb2Nrc1VuaXZlcnNlLmJ1aWx0UHJvdmlkZXJzLmdldChpbnRlcmNlcHRvcikgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmNvbnN0IHBhcnNlUHJvdmlkZXIgPSAoXG4gIHByb3ZpZGVyOiBhbnksXG4gIGNhbGxiYWNrOiBhbnksXG4pOiB7XG4gIGNoYW5nZTogKCkgPT4gdm9pZDtcbiAgbXVsdGk6IGJvb2xlYW47XG4gIHByb3ZpZGU6IGFueTtcbn0gPT4ge1xuICBjb25zdCBwcm92aWRlID0gZnVuY0dldFByb3ZpZGVyKHByb3ZpZGVyKTtcbiAgY29uc3QgbXVsdGkgPSBwcm92aWRlciAhPT0gcHJvdmlkZSAmJiAhIXByb3ZpZGVyLm11bHRpO1xuXG4gIHJldHVybiB7XG4gICAgY2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG11bHRpLFxuICAgIHByb3ZpZGUsXG4gIH07XG59O1xuXG4vLyBpZiB0aGUgcHJvdmlkZXIgaXMgYSB2YWx1ZSwgd2UgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSB2YWx1ZSBhbmQgdG8gcmVwbGFjZSBhbGwgbW9jayBpbnN0YW5jZXMuXG5jb25zdCByZXBsYWNlV2l0aE1vY2tzID0gKHByb3ZpZGVyOiBhbnksIHByb3ZpZGU6IGFueSwgbW9ja0RlZjogYW55KSA9PiB7XG4gIGlmIChwcm92aWRlICE9PSBwcm92aWRlciAmJiBtb2NrRGVmICYmIG1vY2tEZWYudXNlVmFsdWUpIHtcbiAgICBjb25zdCB1c2VWYWx1ZSA9IGhlbHBlck1vY2tTZXJ2aWNlLnJlcGxhY2VXaXRoTW9ja3MobW9ja0RlZi51c2VWYWx1ZSk7XG5cbiAgICByZXR1cm4gdXNlVmFsdWUgPT09IG1vY2tEZWYudXNlVmFsdWVcbiAgICAgID8gbW9ja0RlZlxuICAgICAgOiB7XG4gICAgICAgICAgLi4ubW9ja0RlZixcbiAgICAgICAgICB1c2VWYWx1ZSxcbiAgICAgICAgfTtcbiAgfVxuXG4gIHJldHVybiBtb2NrRGVmO1xufTtcblxuY29uc3QgY3JlYXRlUHJlZGVmaW5lZE1vY2tQcm92aWRlciA9IChwcm92aWRlcjogYW55LCBwcm92aWRlOiBhbnkpOiBhbnkgPT4ge1xuICAvLyBUaGVuIHdlIGNoZWNrIGRlY2lzaW9ucyB3aGV0aGVyIHdlIHNob3VsZCBrZWVwIG9yIHJlcGxhY2UgYSBwcm92aWRlci5cbiAgaWYgKG5nTW9ja3NVbml2ZXJzZS5idWlsdFByb3ZpZGVycy5oYXMocHJvdmlkZSkpIHtcbiAgICBjb25zdCBtb2NrRGVmID0gbmdNb2Nrc1VuaXZlcnNlLmJ1aWx0UHJvdmlkZXJzLmdldChwcm92aWRlKTtcbiAgICBpZiAobW9ja0RlZiA9PT0gcHJvdmlkZSkge1xuICAgICAgcmV0dXJuIHByb3ZpZGVyO1xuICAgIH1cbiAgICBpZiAobW9ja0RlZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcm92aWRlLFxuICAgICAgICB1c2VWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbW9ja0RlZjtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBjcmVhdGVNb2NrUHJvdmlkZXIgPSAocHJvdmlkZXI6IGFueSwgcHJvdmlkZTogYW55LCBjaGFuZ2U6ICgpID0+IHZvaWQpID0+IHtcbiAgbGV0IG1vY2tEZWYgPSBjcmVhdGVQcmVkZWZpbmVkTW9ja1Byb3ZpZGVyKHByb3ZpZGVyLCBwcm92aWRlKTtcblxuICBpZiAoIW1vY2tEZWYgJiYgbmdNb2Nrc1VuaXZlcnNlLmZsYWdzLmhhcygnc2tpcE1vY2snKSAmJiBuZ01vY2tzVW5pdmVyc2UuZ2V0UmVzb2x1dGlvbihwcm92aWRlKSAhPT0gJ21vY2snKSB7XG4gICAgbmdNb2Nrc1VuaXZlcnNlLmNvbmZpZy5nZXQoJ25nTW9ja3NEZXBzU2tpcCcpPy5hZGQocHJvdmlkZSk7XG4gICAgbW9ja0RlZiA9IHByb3ZpZGVyO1xuICB9XG4gIGlmICghbW9ja0RlZikge1xuICAgIG1vY2tEZWYgPSBtb2NrUHJvdmlkZXIocHJvdmlkZXIpO1xuICB9XG5cbiAgbW9ja0RlZiA9IHJlcGxhY2VXaXRoTW9ja3MocHJvdmlkZXIsIHByb3ZpZGUsIG1vY2tEZWYpO1xuICBpZiAoIWFyZUVxdWFsRGVmcyhtb2NrRGVmLCBwcm92aWRlciwgcHJvdmlkZSkpIHtcbiAgICBjaGFuZ2UoKTtcbiAgfVxuICAvLyBUb3VjaGluZyBvbmx5IHdoZW4gd2UgcmVhbGx5IHByb3ZpZGUgYSB2YWx1ZS5cbiAgaWYgKG1vY2tEZWYpIHtcbiAgICBuZ01vY2tzVW5pdmVyc2UudG91Y2hlcy5hZGQocHJvdmlkZSk7XG4gIH1cblxuICByZXR1cm4gbW9ja0RlZjtcbn07XG5cbmNvbnN0IGFyZUVxdWFsRGVmcyA9IChtb2NrRGVmOiBhbnksIHByb3ZpZGVyOiBhbnksIHByb3ZpZGU6IGFueSk6IGJvb2xlYW4gPT4ge1xuICBsZXQgcHJvdmlkZXJEaWZmZXJzID0gZmFsc2U7XG4gIGxldCBkZWZEaWZmZXJzID0gIW1vY2tEZWY7XG4gIGlmIChwcm92aWRlciAmJiBtb2NrRGVmICYmICFkZWZEaWZmZXJzKSB7XG4gICAgZGVmRGlmZmVycyA9IGFueURpZmZlcnMocHJvdmlkZXIsIG1vY2tEZWYsICdwcm92aWRlJywgJ3VzZVZhbHVlJywgJ3VzZUNsYXNzJywgJ3VzZUV4aXN0aW5nJywgJ3VzZUZhY3RvcnknLCAnZGVwcycpO1xuICB9XG4gIGlmIChwcm92aWRlciA9PT0gcHJvdmlkZSAmJiBtb2NrRGVmICE9PSBwcm92aWRlcikge1xuICAgIHByb3ZpZGVyRGlmZmVycyA9IHRydWU7XG4gIH0gZWxzZSBpZiAocHJvdmlkZXIgIT09IHByb3ZpZGUgJiYgZGVmRGlmZmVycykge1xuICAgIHByb3ZpZGVyRGlmZmVycyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gIXByb3ZpZGVyRGlmZmVycztcbn07XG5cbmNvbnN0IGlzUHJlY29uZmlndXJlZERlcGVuZGVuY3kgPSAocHJvdmlkZXI6IGFueSwgcHJvdmlkZTogYW55KTogYm9vbGVhbiA9PiB7XG4gIC8vICB3ZSBzaG91bGQgbm90IHRvdWNoIGV4Y2x1ZGVkIHByb3ZpZGVycy5cbiAgaWYgKG5nTW9ja3NVbml2ZXJzZS5idWlsdFByb3ZpZGVycy5oYXMocHJvdmlkZSkgJiYgbmdNb2Nrc1VuaXZlcnNlLmJ1aWx0UHJvdmlkZXJzLmdldChwcm92aWRlKSA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHByb3ZpZGUgIT09IHByb3ZpZGVyICYmIHByb3ZpZGVyLmRlcHMpIHtcbiAgICBleHRyYWN0RGVwZW5kZW5jeShwcm92aWRlci5kZXBzLCBuZ01vY2tzVW5pdmVyc2UuY29uZmlnLmdldCgnbmdNb2Nrc0RlcHMnKSk7XG4gIH1cblxuICByZXR1cm4gZXhjbHVkZUludGVyY2VwdG9ycyhwcm92aWRlciwgcHJvdmlkZSk7XG59O1xuXG4vLyB0cmllcyB0byByZXNvbHZlIGEgcHJvdmlkZXIgYmFzZWQgb24gY3VycmVudCB1bml2ZXJzZSBzdGF0ZS5cbmV4cG9ydCBkZWZhdWx0IChwcm92aWRlcjogYW55LCByZXNvbHV0aW9uczogTWFwPGFueSwgYW55PiwgY2hhbmdlZD86ICgpID0+IHZvaWQpID0+IHtcbiAgY29uc3QgeyBwcm92aWRlLCBtdWx0aSwgY2hhbmdlIH0gPSBwYXJzZVByb3ZpZGVyKHByb3ZpZGVyLCBjaGFuZ2VkKTtcbiAgLy8gIHdlIHNob3VsZCBub3QgdG91Y2ggb3VyIHN5c3RlbSBwcm92aWRlcnMuXG4gIGlmIChwcm92aWRlciAmJiB0eXBlb2YgcHJvdmlkZXIgPT09ICdvYmplY3QnICYmIHByb3ZpZGVyLnVzZUV4aXN0aW5nICYmIHByb3ZpZGVyLnVzZUV4aXN0aW5nLl9fbmdNb2Nrc1NraXApIHtcbiAgICByZXR1cm4gcHJvdmlkZXI7XG4gIH1cbiAgaWYgKGlzUHJlY29uZmlndXJlZERlcGVuZGVuY3kocHJvdmlkZXIsIHByb3ZpZGUpKSB7XG4gICAgcmV0dXJuIGNoYW5nZSgpO1xuICB9XG4gIGlmIChyZXNvbHV0aW9ucy5oYXMocHJvdmlkZSkpIHtcbiAgICByZXR1cm4gY3JlYXRlRnJvbVJlc29sdXRpb24ocHJvdmlkZSwgcmVzb2x1dGlvbnMuZ2V0KHByb3ZpZGUpKTtcbiAgfVxuXG4gIGNvbnN0IG1vY2tEZWYgPSBjcmVhdGVNb2NrUHJvdmlkZXIocHJvdmlkZXIsIHByb3ZpZGUsIGNoYW5nZSk7XG5cbiAgcmV0dXJuIG11bHRpICYmIHR5cGVvZiBtb2NrRGVmID09PSAnb2JqZWN0JyA/IHsgLi4ubW9ja0RlZiwgbXVsdGkgfSA6IG1vY2tEZWY7XG59O1xuIl19
|
|
@@ -60,10 +60,10 @@ exports.default = (function (def, init, overrides) { return ({
|
|
|
60
60
|
if (overrides) {
|
|
61
61
|
callbacks.push(overrides);
|
|
62
62
|
}
|
|
63
|
-
if ((_a = ng_mocks_universe_1.default.
|
|
64
|
-
callbacks.push(ng_mocks_universe_1.default.
|
|
63
|
+
if ((_a = ng_mocks_universe_1.default.configInstance.get(def)) === null || _a === void 0 ? void 0 : _a.init) {
|
|
64
|
+
callbacks.push(ng_mocks_universe_1.default.configInstance.get(def).init);
|
|
65
65
|
}
|
|
66
66
|
return applyCallback(def, instance, callbacks, injector, overrides);
|
|
67
67
|
},
|
|
68
68
|
}); });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLnVzZS1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL21vY2stc2VydmljZS9oZWxwZXIudXNlLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLHNDQUEwRDtBQUUxRCx1REFBbUQ7QUFDbkQsbUZBQTBFO0FBQzFFLGlFQUEwRDtBQUMxRCxvRUFBNkQ7QUFDN0QsNkRBQTJEO0FBRTNELElBQU0sa0JBQWtCLEdBQUcsVUFBQyxHQUFRLElBQWMsT0FBQSwrQ0FBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQWxELENBQWtELENBQUM7QUFFckcsSUFBTSxhQUFhLEdBQUcsVUFBQyxHQUFRLEVBQUUsSUFBUyxFQUFFLFNBQWdCLEVBQUUsUUFBbUIsRUFBRSxTQUFlOztJQUNoRyxJQUFJLFFBQVEsR0FBUSxJQUFJLENBQUM7O1FBRXpCLEtBQXVCLElBQUEsY0FBQSxTQUFBLFNBQVMsQ0FBQSxvQ0FBQSwyREFBRTtZQUE3QixJQUFNLFFBQVEsc0JBQUE7WUFDakIsSUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM5QyxJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMzQixRQUFRLEdBQUcsUUFBUSxDQUFDO2dCQUNwQixTQUFTO2FBQ1Y7WUFFRCwrQkFBK0I7WUFDL0IsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFO2dCQUMxQixRQUFRLEdBQUcsUUFBUSxDQUFDO2dCQUNwQixTQUFTO2FBQ1Y7WUFFRCxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNiLFNBQVM7YUFDVjtZQUVELDBCQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ3BDOzs7Ozs7Ozs7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixtQkFBZSxVQUNiLEdBQU0sRUFDTixJQUFjLEVBQ2QsU0FBK0QsSUFDM0MsT0FBQSxDQUFDO0lBQ3JCLElBQUksRUFBRSxDQUFDLGVBQVEsQ0FBQztJQUNoQixPQUFPLEVBQUUsR0FBRztJQUNaLFVBQVUsRUFBRSxVQUFDLFFBQW1COztRQUM5QixJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQywwQkFBVyxDQUFDLEdBQVUsQ0FBQyxDQUFDO1FBRXpELElBQU0sWUFBWSxHQUF5QiwyQkFBZSxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRixJQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLHdCQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5RCxJQUFJLFNBQVMsRUFBRTtZQUNiLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDM0I7UUFDRCxVQUFJLDJCQUFlLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsMENBQUUsSUFBSSxFQUFFO1lBQ2pELFNBQVMsQ0FBQyxJQUFJLENBQUMsMkJBQWUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlEO1FBRUQsT0FBTyxhQUFhLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7Q0FDRixDQUFDLEVBakJvQixDQWlCcEIsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhY3RvcnlQcm92aWRlciwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgbWFwVmFsdWVzIH0gZnJvbSAnLi4vY29tbW9uL2NvcmUuaGVscGVycyc7XG5pbXBvcnQgeyBpc05nSW5qZWN0aW9uVG9rZW4gfSBmcm9tICcuLi9jb21tb24vZnVuYy5pcy1uZy1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IG5nTW9ja3NVbml2ZXJzZSBmcm9tICcuLi9jb21tb24vbmctbW9ja3MtdW5pdmVyc2UnO1xuaW1wb3J0IG1vY2tIZWxwZXJTdHViIGZyb20gJy4uL21vY2staGVscGVyL21vY2staGVscGVyLnN0dWInO1xuaW1wb3J0IHsgTW9ja1NlcnZpY2UgfSBmcm9tICcuLi9tb2NrLXNlcnZpY2UvbW9jay1zZXJ2aWNlJztcblxuY29uc3QgYXBwbHlDYWxsYmFja1Rva2VuID0gKGRlZjogYW55KTogYm9vbGVhbiA9PiBpc05nSW5qZWN0aW9uVG9rZW4oZGVmKSB8fCB0eXBlb2YgZGVmID09PSAnc3RyaW5nJztcblxuY29uc3QgYXBwbHlDYWxsYmFjayA9IChkZWY6IGFueSwgaW5zdDogYW55LCBjYWxsYmFja3M6IGFueVtdLCBpbmplY3Rvcj86IEluamVjdG9yLCBvdmVycmlkZXM/OiBhbnkpOiB2b2lkID0+IHtcbiAgbGV0IGluc3RhbmNlOiBhbnkgPSBpbnN0O1xuXG4gIGZvciAoY29uc3QgY2FsbGJhY2sgb2YgY2FsbGJhY2tzKSB7XG4gICAgY29uc3Qgb3ZlcnJpZGUgPSBjYWxsYmFjayhpbnN0YW5jZSwgaW5qZWN0b3IpO1xuICAgIGlmIChhcHBseUNhbGxiYWNrVG9rZW4oZGVmKSkge1xuICAgICAgaW5zdGFuY2UgPSBvdmVycmlkZTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIG92ZXJyaWRlcyByZXR1cm4gcmVhbCB2YWx1ZS5cbiAgICBpZiAoY2FsbGJhY2sgPT09IG92ZXJyaWRlcykge1xuICAgICAgaW5zdGFuY2UgPSBvdmVycmlkZTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICghb3ZlcnJpZGUpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIG1vY2tIZWxwZXJTdHViKGluc3RhbmNlLCBvdmVycmlkZSk7XG4gIH1cblxuICByZXR1cm4gaW5zdGFuY2U7XG59O1xuXG5leHBvcnQgZGVmYXVsdCA8RCwgST4oXG4gIGRlZjogRCxcbiAgaW5pdD86ICgpID0+IEksXG4gIG92ZXJyaWRlcz86IChpbnN0YW5jZTogSSwgaW5qZWN0b3I6IEluamVjdG9yKSA9PiBJIHwgUGFydGlhbDxJPixcbik6IEZhY3RvcnlQcm92aWRlciA9PiAoe1xuICBkZXBzOiBbSW5qZWN0b3JdLFxuICBwcm92aWRlOiBkZWYsXG4gIHVzZUZhY3Rvcnk6IChpbmplY3Rvcj86IEluamVjdG9yKSA9PiB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBpbml0ID8gaW5pdCgpIDogTW9ja1NlcnZpY2UoZGVmIGFzIGFueSk7XG5cbiAgICBjb25zdCBjb25maWdHbG9iYWw6IFNldDxhbnk+IHwgdW5kZWZpbmVkID0gbmdNb2Nrc1VuaXZlcnNlLmdldE92ZXJyaWRlcygpLmdldChkZWYpO1xuICAgIGNvbnN0IGNhbGxiYWNrcyA9IGNvbmZpZ0dsb2JhbCA/IG1hcFZhbHVlcyhjb25maWdHbG9iYWwpIDogW107XG4gICAgaWYgKG92ZXJyaWRlcykge1xuICAgICAgY2FsbGJhY2tzLnB1c2gob3ZlcnJpZGVzKTtcbiAgICB9XG4gICAgaWYgKG5nTW9ja3NVbml2ZXJzZS5jb25maWdJbnN0YW5jZS5nZXQoZGVmKT8uaW5pdCkge1xuICAgICAgY2FsbGJhY2tzLnB1c2gobmdNb2Nrc1VuaXZlcnNlLmNvbmZpZ0luc3RhbmNlLmdldChkZWYpLmluaXQpO1xuICAgIH1cblxuICAgIHJldHVybiBhcHBseUNhbGxiYWNrKGRlZiwgaW5zdGFuY2UsIGNhbGxiYWNrcywgaW5qZWN0b3IsIG92ZXJyaWRlcyk7XG4gIH0sXG59KTtcbiJdfQ==
|
|
@@ -47,6 +47,7 @@ var applyMissedClassProperties = function (instance, useClass) {
|
|
|
47
47
|
var def = Object.getOwnPropertyDescriptor(child, name_1);
|
|
48
48
|
// istanbul ignore else
|
|
49
49
|
if (def) {
|
|
50
|
+
def.configurable = true;
|
|
50
51
|
Object.defineProperty(instance, name_1, def);
|
|
51
52
|
}
|
|
52
53
|
}
|
|
@@ -172,4 +173,4 @@ function default_1(provider) {
|
|
|
172
173
|
return createMockProvider(provider, provide, cacheProviders) || handleProvider(provider, provide);
|
|
173
174
|
}
|
|
174
175
|
exports.default = default_1;
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9tb2NrLXNlcnZpY2UvbW9jay1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLHFEQUErQztBQUUvQyxpRUFBMEQ7QUFDMUQsbUZBQTBFO0FBQzFFLGlFQUEwRDtBQUUxRCwyREFBb0Q7QUFDcEQsK0NBQTZDO0FBRXJDLElBQUEseUJBQXlCLEdBQXFCLHFCQUFVLDBCQUEvQixFQUFFLGNBQWMsR0FBSyxxQkFBVSxlQUFmLENBQWdCO0FBRWpFLElBQU0sMEJBQTBCLEdBQUcsVUFBQyxRQUFhLEVBQUUsUUFBbUI7O0lBQ3BFLElBQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0RCxJQUFNLEtBQUssR0FBRywwQkFBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDOztRQUVwQyxLQUFtQixJQUFBLEtBQUEsU0FBQSxNQUFNLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUEsZ0JBQUEsNEJBQUU7WUFBakQsSUFBTSxNQUFJLFdBQUE7WUFDYixJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ2pDLFNBQVM7YUFDVjtZQUNELElBQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsTUFBSSxDQUFDLENBQUM7WUFDekQsdUJBQXVCO1lBQ3ZCLElBQUksR0FBRyxFQUFFO2dCQUNQLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLE1BQUksRUFBRSxHQUFHLENBQUMsQ0FBQzthQUM1QztTQUNGOzs7Ozs7Ozs7QUFDSCxDQUFDLENBQUM7QUFFRixJQUFNLHFCQUFxQixHQUFHLFVBQUMsUUFBYSxFQUFFLE9BQVk7SUFDeEQsT0FBQSw0QkFBZ0IsQ0FBQyxP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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgY29yZUNvbmZpZyBmcm9tICcuLi9jb21tb24vY29yZS5jb25maWcnO1xuaW1wb3J0IHsgVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9jb3JlLnR5cGVzJztcbmltcG9ydCBmdW5jR2V0UHJvdmlkZXIgZnJvbSAnLi4vY29tbW9uL2Z1bmMuZ2V0LXByb3ZpZGVyJztcbmltcG9ydCB7IGlzTmdJbmplY3Rpb25Ub2tlbiB9IGZyb20gJy4uL2NvbW1vbi9mdW5jLmlzLW5nLWluamVjdGlvbi10b2tlbic7XG5pbXBvcnQgbmdNb2Nrc1VuaXZlcnNlIGZyb20gJy4uL2NvbW1vbi9uZy1tb2Nrcy11bml2ZXJzZSc7XG5cbmltcG9ydCBoZWxwZXJVc2VGYWN0b3J5IGZyb20gJy4vaGVscGVyLnVzZS1mYWN0b3J5JztcbmltcG9ydCB7IE1vY2tTZXJ2aWNlIH0gZnJvbSAnLi9tb2NrLXNlcnZpY2UnO1xuXG5jb25zdCB7IG5ldmVyTW9ja1Byb3ZpZGVkRnVuY3Rpb24sIG5ldmVyTW9ja1Rva2VuIH0gPSBjb3JlQ29uZmlnO1xuXG5jb25zdCBhcHBseU1pc3NlZENsYXNzUHJvcGVydGllcyA9IChpbnN0YW5jZTogYW55LCB1c2VDbGFzczogVHlwZTxhbnk+KSA9PiB7XG4gIGNvbnN0IGV4aXN0aW5nID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaW5zdGFuY2UpO1xuICBjb25zdCBjaGlsZCA9IE1vY2tTZXJ2aWNlKHVzZUNsYXNzKTtcblxuICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoY2hpbGQpKSB7XG4gICAgaWYgKGV4aXN0aW5nLmluZGV4T2YobmFtZSkgIT09IC0xKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgZGVmID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjaGlsZCwgbmFtZSk7XG4gICAgLy8gaXN0YW5idWwgaWdub3JlIGVsc2VcbiAgICBpZiAoZGVmKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5zdGFuY2UsIG5hbWUsIGRlZik7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBjcmVhdGVGYWN0b3J5UHJvdmlkZXIgPSAocHJvdmlkZXI6IGFueSwgcHJvdmlkZTogYW55KSA9PlxuICBoZWxwZXJVc2VGYWN0b3J5KHByb3ZpZGUsICgpID0+IHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IE1vY2tTZXJ2aWNlKHByb3ZpZGUpO1xuICAgIC8vIE1hZ2ljIGJlbG93IGFkZHMgbWlzc2VkIHByb3BlcnRpZXMgdG8gdGhlIGluc3RhbmNlIHRvXG4gICAgLy8gZnVsZmlsbCBtaXNzZWQgYWJzdHJhY3QgbWV0aG9kcy5cbiAgICBpZiAocHJvdmlkZSAhPT0gcHJvdmlkZXIgJiYgT2JqZWN0LmtleXMocHJvdmlkZXIpLmluZGV4T2YoJ3VzZUNsYXNzJykgIT09IC0xKSB7XG4gICAgICBhcHBseU1pc3NlZENsYXNzUHJvcGVydGllcyhpbnN0YW5jZSwgcHJvdmlkZXIudXNlQ2xhc3MpO1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSk7XG5cbmNvbnN0IG5vcm1hbGl6ZVByaW1pdGl2ZXNNYXA6IEFycmF5PFsodmFsdWU6IGFueSkgPT4gYm9vbGVhbiwgYW55XT4gPSBbXG4gIFt2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJywgZmFsc2VdLFxuICBbdmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJywgMF0sXG4gIFt2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnLCAnJ10sXG4gIFt2YWx1ZSA9PiB2YWx1ZSA9PT0gbnVsbCwgbnVsbF0sXG5dO1xuXG5jb25zdCBub3JtYWxpemVQcmltaXRpdmVzID0gKHZhbHVlOiBhbnkpOiBhbnkgPT4ge1xuICBmb3IgKGNvbnN0IFtjaGVjaywgcmVzdWx0XSBvZiBub3JtYWxpemVQcmltaXRpdmVzTWFwKSB7XG4gICAgaWYgKGNoZWNrKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuY29uc3QgY3JlYXRlVmFsdWVQcm92aWRlciA9IChwcm92aWRlcjogYW55LCBwcm92aWRlOiBhbnkpID0+XG4gIGhlbHBlclVzZUZhY3RvcnkocHJvdmlkZSwgKCkgPT5cbiAgICBwcm92aWRlci51c2VWYWx1ZSAmJiB0eXBlb2YgcHJvdmlkZXIudXNlVmFsdWUgPT09ICdvYmplY3QnXG4gICAgICA/IE1vY2tTZXJ2aWNlKHByb3ZpZGVyLnVzZVZhbHVlKVxuICAgICAgOiBub3JtYWxpemVQcmltaXRpdmVzKHByb3ZpZGVyLnVzZVZhbHVlKSxcbiAgKTtcblxuY29uc3QgY3JlYXRlQ2xhc3NQcm92aWRlciA9IChwcm92aWRlcjogYW55LCBwcm92aWRlOiBhbnkpID0+XG4gIG5nTW9ja3NVbml2ZXJzZS5idWlsdFByb3ZpZGVycy5oYXMocHJvdmlkZXIudXNlQ2xhc3MpICYmXG4gIG5nTW9ja3NVbml2ZXJzZS5idWlsdFByb3ZpZGVycy5nZXQocHJvdmlkZXIudXNlQ2xhc3MpID09PSBwcm92aWRlci51c2VDbGFzc1xuICAgID8gcHJvdmlkZXJcbiAgICA6IGhlbHBlclVzZUZhY3RvcnkocHJvdmlkZSwgKCkgPT4gTW9ja1NlcnZpY2UocHJvdmlkZXIudXNlQ2xhc3MpKTtcblxuY29uc3QgY3JlYXRlTW9ja1Byb3ZpZGVyID0gKHByb3ZpZGVyOiBhbnksIHByb3ZpZGU6IGFueSwgY2FjaGVQcm92aWRlcnM/OiBNYXA8YW55LCBhbnk+KTogUHJvdmlkZXIgfCB1bmRlZmluZWQgPT4ge1xuICBsZXQgbW9ja1Byb3ZpZGVyOiBQcm92aWRlciB8IHVuZGVmaW5lZDtcbiAgaWYgKHR5cGVvZiBwcm92aWRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgbW9ja1Byb3ZpZGVyID0gY3JlYXRlRmFjdG9yeVByb3ZpZGVyKHByb3ZpZGVyLCBwcm92aWRlKTtcbiAgfVxuICBpZiAocHJvdmlkZSA9PT0gcHJvdmlkZXIgJiYgbW9ja1Byb3ZpZGVyICYmIGNhY2hlUHJvdmlkZXJzKSB7XG4gICAgY2FjaGVQcm92aWRlcnMuc2V0KHByb3ZpZGUsIG1vY2tQcm92aWRlcik7XG4gIH1cblxuICByZXR1cm4gbW9ja1Byb3ZpZGVyO1xufTtcblxuLy8gVG9rZW5zIGFyZSBzcGVjaWFsIHN1YmplY3QsIHdlIGNhbiBza2lwIGFkZGluZyB0aGVtIGJlY2F1c2UgaW4gYSBtb2NrIG1vZHVsZSB0aGV5IGFyZSB1c2VsZXNzLlxuLy8gVGhlIG1haW4gcHJvYmxlbSBpcyB0aGF0IHByb3ZpZGluZyB1bmRlZmluZWQgdG8gSFRUUF9JTlRFUkNFUFRPUlMgYW5kIG90aGVycyBicmVha3MgdGhlaXIgY29kZS5cbi8vIElmIGEgdGVzdGluZyBtb2R1bGUgLyBjb21wb25lbnQgcmVxdWlyZXMgb21pdHRlZCB0b2tlbnMgdGhlbiB0aGV5IHNob3VsZCBiZSBwcm92aWRlZCBtYW51YWxseVxuLy8gZHVyaW5nIGNyZWF0aW9uIG9mIFRlc3RCZWQgbW9kdWxlLlxuY29uc3QgaGFuZGxlUHJvdmlkZXIgPSAocHJvdmlkZXI6IGFueSwgcHJvdmlkZTogYW55KSA9PiB7XG4gIGlmIChwcm92aWRlID09PSBwcm92aWRlcikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHByb3ZpZGVyLm11bHRpKSB7XG4gICAgbmdNb2Nrc1VuaXZlcnNlLmNvbmZpZy5nZXQoJ25nTW9ja3NNdWx0aScpPy5hZGQocHJvdmlkZSk7XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgbGV0IG1vY2tQcm92aWRlcjogYW55O1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZVxuICBpZiAoT2JqZWN0LmtleXMocHJvdmlkZXIpLmluZGV4T2YoJ3VzZVZhbHVlJykgIT09IC0xKSB7XG4gICAgbW9ja1Byb3ZpZGVyID0gY3JlYXRlVmFsdWVQcm92aWRlcihwcm92aWRlciwgcHJvdmlkZSk7XG4gIH0gZWxzZSBpZiAoT2JqZWN0LmtleXMocHJvdmlkZXIpLmluZGV4T2YoJ3VzZUV4aXN0aW5nJykgIT09IC0xKSB7XG4gICAgbW9ja1Byb3ZpZGVyID0gcHJvdmlkZXI7XG4gIH0gZWxzZSBpZiAoT2JqZWN0LmtleXMocHJvdmlkZXIpLmluZGV4T2YoJ3VzZUNsYXNzJykgIT09IC0xKSB7XG4gICAgbW9ja1Byb3ZpZGVyID0gY3JlYXRlQ2xhc3NQcm92aWRlcihwcm92aWRlciwgcHJvdmlkZSk7XG4gIH0gZWxzZSBpZiAoT2JqZWN0LmtleXMocHJvdmlkZXIpLmluZGV4T2YoJ3VzZUZhY3RvcnknKSAhPT0gLTEpIHtcbiAgICBtb2NrUHJvdmlkZXIgPSBoZWxwZXJVc2VGYWN0b3J5KHByb3ZpZGUsICgpID0+ICh7fSkpO1xuICB9XG5cbiAgcmV0dXJuIG1vY2tQcm92aWRlcjtcbn07XG5cbmNvbnN0IGlzTmV2ZXJNb2NrRnVuY3Rpb24gPSAocHJvdmlkZTogYW55KTogYm9vbGVhbiA9PlxuICB0eXBlb2YgcHJvdmlkZSA9PT0gJ2Z1bmN0aW9uJyAmJiBuZXZlck1vY2tQcm92aWRlZEZ1bmN0aW9uLmluZGV4T2YocHJvdmlkZS5uYW1lKSAhPT0gLTE7XG5cbmNvbnN0IGlzTmV2ZXJNb2NrVG9rZW4gPSAocHJvdmlkZTogYW55KTogYm9vbGVhbiA9PlxuICBpc05nSW5qZWN0aW9uVG9rZW4ocHJvdmlkZSkgJiYgbmV2ZXJNb2NrVG9rZW4uaW5kZXhPZihwcm92aWRlLnRvU3RyaW5nKCkpICE9PSAtMTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHByb3ZpZGVyOiBhbnkpOiBQcm92aWRlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHByb3ZpZGUgPSBmdW5jR2V0UHJvdmlkZXIocHJvdmlkZXIpO1xuXG4gIGlmIChpc05ldmVyTW9ja0Z1bmN0aW9uKHByb3ZpZGUpKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVyO1xuICB9XG4gIGlmIChpc05ldmVyTW9ja1Rva2VuKHByb3ZpZGUpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIE9ubHkgcHVyZSBwcm92aWRlcyBzaG91bGQgYmUgY2FjaGVkIHRvIGF2b2lkIHRoZWlyIGluZmx1ZW5jZSBvblxuICAvLyBhbm90aGVyIGRpZmZlcmVudCBkZWNsYXJhdGlvbnMuXG4gIGNvbnN0IGNhY2hlUHJvdmlkZXJzID0gbmdNb2Nrc1VuaXZlcnNlLmZsYWdzLmhhcygnY2FjaGVQcm92aWRlcicpXG4gICAgPyBuZ01vY2tzVW5pdmVyc2UuY2FjaGVQcm92aWRlcnNcbiAgICA6IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIHVuZGVmaW5lZDtcbiAgaWYgKHByb3ZpZGUgPT09IHByb3ZpZGVyICYmIGNhY2hlUHJvdmlkZXJzICYmIGNhY2hlUHJvdmlkZXJzLmhhcyhwcm92aWRlKSkge1xuICAgIHJldHVybiBjYWNoZVByb3ZpZGVycy5nZXQocHJvdmlkZSk7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlTW9ja1Byb3ZpZGVyKHByb3ZpZGVyLCBwcm92aWRlLCBjYWNoZVByb3ZpZGVycykgfHwgaGFuZGxlUHJvdmlkZXIocHJvdmlkZXIsIHByb3ZpZGUpO1xufVxuIl19
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9tb2NrLXNlcnZpY2UvbW9jay1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLHFEQUErQztBQUUvQyxpRUFBMEQ7QUFDMUQsbUZBQTBFO0FBQzFFLGlFQUEwRDtBQUUxRCwyREFBb0Q7QUFDcEQsK0NBQTZDO0FBRXJDLElBQUEseUJBQXlCLEdBQXFCLHFCQUFVLDBCQUEvQixFQUFFLGNBQWMsR0FBSyxxQkFBVSxlQUFmLENBQWdCO0FBRWpFLElBQU0sMEJBQTBCLEdBQUcsVUFBQyxRQUFhLEVBQUUsUUFBbUI7O0lBQ3BFLElBQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0RCxJQUFNLEtBQUssR0FBRywwQkFBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDOztRQUVwQyxLQUFtQixJQUFBLEtBQUEsU0FBQSxNQUFNLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUEsZ0JBQUEsNEJBQUU7WUFBakQsSUFBTSxNQUFJLFdBQUE7WUFDYixJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ2pDLFNBQVM7YUFDVjtZQUNELElBQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsTUFBSSxDQUFDLENBQUM7WUFDekQsdUJBQXVCO1lBQ3ZCLElBQUksR0FBRyxFQUFFO2dCQUNQLEdBQUcsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxNQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDNUM7U0FDRjs7Ozs7Ozs7O0FBQ0gsQ0FBQyxDQUFDO0FBRUYsSUFBTSxxQkFBcUIsR0FBRyxVQUFDLFFB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QU8sQ0FBQyxDQUFDO0FBQ3BHLENBQUM7QUFwQkQsNEJBb0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IGNvcmVDb25maWcgZnJvbSAnLi4vY29tbW9uL2NvcmUuY29uZmlnJztcbmltcG9ydCB7IFR5cGUgfSBmcm9tICcuLi9jb21tb24vY29yZS50eXBlcyc7XG5pbXBvcnQgZnVuY0dldFByb3ZpZGVyIGZyb20gJy4uL2NvbW1vbi9mdW5jLmdldC1wcm92aWRlcic7XG5pbXBvcnQgeyBpc05nSW5qZWN0aW9uVG9rZW4gfSBmcm9tICcuLi9jb21tb24vZnVuYy5pcy1uZy1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IG5nTW9ja3NVbml2ZXJzZSBmcm9tICcuLi9jb21tb24vbmctbW9ja3MtdW5pdmVyc2UnO1xuXG5pbXBvcnQgaGVscGVyVXNlRmFjdG9yeSBmcm9tICcuL2hlbHBlci51c2UtZmFjdG9yeSc7XG5pbXBvcnQgeyBNb2NrU2VydmljZSB9IGZyb20gJy4vbW9jay1zZXJ2aWNlJztcblxuY29uc3QgeyBuZXZlck1vY2tQcm92aWRlZEZ1bmN0aW9uLCBuZXZlck1vY2tUb2tlbiB9ID0gY29yZUNvbmZpZztcblxuY29uc3QgYXBwbHlNaXNzZWRDbGFzc1Byb3BlcnRpZXMgPSAoaW5zdGFuY2U6IGFueSwgdXNlQ2xhc3M6IFR5cGU8YW55PikgPT4ge1xuICBjb25zdCBleGlzdGluZyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluc3RhbmNlKTtcbiAgY29uc3QgY2hpbGQgPSBNb2NrU2VydmljZSh1c2VDbGFzcyk7XG5cbiAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNoaWxkKSkge1xuICAgIGlmIChleGlzdGluZy5pbmRleE9mKG5hbWUpICE9PSAtMSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGRlZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY2hpbGQsIG5hbWUpO1xuICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlXG4gICAgaWYgKGRlZikge1xuICAgICAgZGVmLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5zdGFuY2UsIG5hbWUsIGRlZik7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBjcmVhdGVGYWN0b3J5UHJvdmlkZXIgPSAocHJvdmlkZXI6IGFueSwgcHJvdmlkZTogYW55KSA9PlxuICBoZWxwZXJVc2VGYWN0b3J5KHByb3ZpZGUsICgpID0+IHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IE1vY2tTZXJ2aWNlKHByb3ZpZGUpO1xuICAgIC8vIE1hZ2ljIGJlbG93IGFkZHMgbWlzc2VkIHByb3BlcnRpZXMgdG8gdGhlIGluc3RhbmNlIHRvXG4gICAgLy8gZnVsZmlsbCBtaXNzZWQgYWJzdHJhY3QgbWV0aG9kcy5cbiAgICBpZiAocHJvdmlkZSAhPT0gcHJvdmlkZXIgJiYgT2JqZWN0LmtleXMocHJvdmlkZXIpLmluZGV4T2YoJ3VzZUNsYXNzJykgIT09IC0xKSB7XG4gICAgICBhcHBseU1pc3NlZENsYXNzUHJvcGVydGllcyhpbnN0YW5jZSwgcHJvdmlkZXIudXNlQ2xhc3MpO1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSk7XG5cbmNvbnN0IG5vcm1hbGl6ZVByaW1pdGl2ZXNNYXA6IEFycmF5PFsodmFsdWU6IGFueSkgPT4gYm9vbGVhbiwgYW55XT4gPSBbXG4gIFt2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJywgZmFsc2VdLFxuICBbdmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJywgMF0sXG4gIFt2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnLCAnJ10sXG4gIFt2YWx1ZSA9PiB2YWx1ZSA9PT0gbnVsbCwgbnVsbF0sXG5dO1xuXG5jb25zdCBub3JtYWxpemVQcmltaXRpdmVzID0gKHZhbHVlOiBhbnkpOiBhbnkgPT4ge1xuICBmb3IgKGNvbnN0IFtjaGVjaywgcmVzdWx0XSBvZiBub3JtYWxpemVQcmltaXRpdmVzTWFwKSB7XG4gICAgaWYgKGNoZWNrKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuY29uc3QgY3JlYXRlVmFsdWVQcm92aWRlciA9IChwcm92aWRlcjogYW55LCBwcm92aWRlOiBhbnkpID0+XG4gIGhlbHBlclVzZUZhY3RvcnkocHJvdmlkZSwgKCkgPT5cbiAgICBwcm92aWRlci51c2VWYWx1ZSAmJiB0eXBlb2YgcHJvdmlkZXIudXNlVmFsdWUgPT09ICdvYmplY3QnXG4gICAgICA/IE1vY2tTZXJ2aWNlKHByb3ZpZGVyLnVzZVZhbHVlKVxuICAgICAgOiBub3JtYWxpemVQcmltaXRpdmVzKHByb3ZpZGVyLnVzZVZhbHVlKSxcbiAgKTtcblxuY29uc3QgY3JlYXRlQ2xhc3NQcm92aWRlciA9IChwcm92aWRlcjogYW55LCBwcm92aWRlOiBhbnkpID0+XG4gIG5nTW9ja3NVbml2ZXJzZS5idWlsdFByb3ZpZGVycy5oYXMocHJvdmlkZXIudXNlQ2xhc3MpICYmXG4gIG5nTW9ja3NVbml2ZXJzZS5idWlsdFByb3ZpZGVycy5nZXQocHJvdmlkZXIudXNlQ2xhc3MpID09PSBwcm92aWRlci51c2VDbGFzc1xuICAgID8gcHJvdmlkZXJcbiAgICA6IGhlbHBlclVzZUZhY3RvcnkocHJvdmlkZSwgKCkgPT4gTW9ja1NlcnZpY2UocHJvdmlkZXIudXNlQ2xhc3MpKTtcblxuY29uc3QgY3JlYXRlTW9ja1Byb3ZpZGVyID0gKHByb3ZpZGVyOiBhbnksIHByb3ZpZGU6IGFueSwgY2FjaGVQcm92aWRlcnM/OiBNYXA8YW55LCBhbnk+KTogUHJvdmlkZXIgfCB1bmRlZmluZWQgPT4ge1xuICBsZXQgbW9ja1Byb3ZpZGVyOiBQcm92aWRlciB8IHVuZGVmaW5lZDtcbiAgaWYgKHR5cGVvZiBwcm92aWRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgbW9ja1Byb3ZpZGVyID0gY3JlYXRlRmFjdG9yeVByb3ZpZGVyKHByb3ZpZGVyLCBwcm92aWRlKTtcbiAgfVxuICBpZiAocHJvdmlkZSA9PT0gcHJvdmlkZXIgJiYgbW9ja1Byb3ZpZGVyICYmIGNhY2hlUHJvdmlkZXJzKSB7XG4gICAgY2FjaGVQcm92aWRlcnMuc2V0KHByb3ZpZGUsIG1vY2tQcm92aWRlcik7XG4gIH1cblxuICByZXR1cm4gbW9ja1Byb3ZpZGVyO1xufTtcblxuLy8gVG9rZW5zIGFyZSBzcGVjaWFsIHN1YmplY3QsIHdlIGNhbiBza2lwIGFkZGluZyB0aGVtIGJlY2F1c2UgaW4gYSBtb2NrIG1vZHVsZSB0aGV5IGFyZSB1c2VsZXNzLlxuLy8gVGhlIG1haW4gcHJvYmxlbSBpcyB0aGF0IHByb3ZpZGluZyB1bmRlZmluZWQgdG8gSFRUUF9JTlRFUkNFUFRPUlMgYW5kIG90aGVycyBicmVha3MgdGhlaXIgY29kZS5cbi8vIElmIGEgdGVzdGluZyBtb2R1bGUgLyBjb21wb25lbnQgcmVxdWlyZXMgb21pdHRlZCB0b2tlbnMgdGhlbiB0aGV5IHNob3VsZCBiZSBwcm92aWRlZCBtYW51YWxseVxuLy8gZHVyaW5nIGNyZWF0aW9uIG9mIFRlc3RCZWQgbW9kdWxlLlxuY29uc3QgaGFuZGxlUHJvdmlkZXIgPSAocHJvdmlkZXI6IGFueSwgcHJvdmlkZTogYW55KSA9PiB7XG4gIGlmIChwcm92aWRlID09PSBwcm92aWRlcikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHByb3ZpZGVyLm11bHRpKSB7XG4gICAgbmdNb2Nrc1VuaXZlcnNlLmNvbmZpZy5nZXQoJ25nTW9ja3NNdWx0aScpPy5hZGQocHJvdmlkZSk7XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgbGV0IG1vY2tQcm92aWRlcjogYW55O1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZVxuICBpZiAoT2JqZWN0LmtleXMocHJvdmlkZXIpLmluZGV4T2YoJ3VzZVZhbHVlJykgIT09IC0xKSB7XG4gICAgbW9ja1Byb3ZpZGVyID0gY3JlYXRlVmFsdWVQcm92aWRlcihwcm92aWRlciwgcHJvdmlkZSk7XG4gIH0gZWxzZSBpZiAoT2JqZWN0LmtleXMocHJvdmlkZXIpLmluZGV4T2YoJ3VzZUV4aXN0aW5nJykgIT09IC0xKSB7XG4gICAgbW9ja1Byb3ZpZGVyID0gcHJvdmlkZXI7XG4gIH0gZWxzZSBpZiAoT2JqZWN0LmtleXMocHJvdmlkZXIpLmluZGV4T2YoJ3VzZUNsYXNzJykgIT09IC0xKSB7XG4gICAgbW9ja1Byb3ZpZGVyID0gY3JlYXRlQ2xhc3NQcm92aWRlcihwcm92aWRlciwgcHJvdmlkZSk7XG4gIH0gZWxzZSBpZiAoT2JqZWN0LmtleXMocHJvdmlkZXIpLmluZGV4T2YoJ3VzZUZhY3RvcnknKSAhPT0gLTEpIHtcbiAgICBtb2NrUHJvdmlkZXIgPSBoZWxwZXJVc2VGYWN0b3J5KHByb3ZpZGUsICgpID0+ICh7fSkpO1xuICB9XG5cbiAgcmV0dXJuIG1vY2tQcm92aWRlcjtcbn07XG5cbmNvbnN0IGlzTmV2ZXJNb2NrRnVuY3Rpb24gPSAocHJvdmlkZTogYW55KTogYm9vbGVhbiA9PlxuICB0eXBlb2YgcHJvdmlkZSA9PT0gJ2Z1bmN0aW9uJyAmJiBuZXZlck1vY2tQcm92aWRlZEZ1bmN0aW9uLmluZGV4T2YocHJvdmlkZS5uYW1lKSAhPT0gLTE7XG5cbmNvbnN0IGlzTmV2ZXJNb2NrVG9rZW4gPSAocHJvdmlkZTogYW55KTogYm9vbGVhbiA9PlxuICBpc05nSW5qZWN0aW9uVG9rZW4ocHJvdmlkZSkgJiYgbmV2ZXJNb2NrVG9rZW4uaW5kZXhPZihwcm92aWRlLnRvU3RyaW5nKCkpICE9PSAtMTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHByb3ZpZGVyOiBhbnkpOiBQcm92aWRlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHByb3ZpZGUgPSBmdW5jR2V0UHJvdmlkZXIocHJvdmlkZXIpO1xuXG4gIGlmIChpc05ldmVyTW9ja0Z1bmN0aW9uKHByb3ZpZGUpKSB7XG4gICAgcmV0dXJuIHByb3ZpZGVyO1xuICB9XG4gIGlmIChpc05ldmVyTW9ja1Rva2VuKHByb3ZpZGUpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIE9ubHkgcHVyZSBwcm92aWRlcyBzaG91bGQgYmUgY2FjaGVkIHRvIGF2b2lkIHRoZWlyIGluZmx1ZW5jZSBvblxuICAvLyBhbm90aGVyIGRpZmZlcmVudCBkZWNsYXJhdGlvbnMuXG4gIGNvbnN0IGNhY2hlUHJvdmlkZXJzID0gbmdNb2Nrc1VuaXZlcnNlLmZsYWdzLmhhcygnY2FjaGVQcm92aWRlcicpXG4gICAgPyBuZ01vY2tzVW5pdmVyc2UuY2FjaGVQcm92aWRlcnNcbiAgICA6IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIHVuZGVmaW5lZDtcbiAgaWYgKHByb3ZpZGUgPT09IHByb3ZpZGVyICYmIGNhY2hlUHJvdmlkZXJzICYmIGNhY2hlUHJvdmlkZXJzLmhhcyhwcm92aWRlKSkge1xuICAgIHJldHVybiBjYWNoZVByb3ZpZGVycy5nZXQocHJvdmlkZSk7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlTW9ja1Byb3ZpZGVyKHByb3ZpZGVyLCBwcm92aWRlLCBjYWNoZVByb3ZpZGVycykgfHwgaGFuZGxlUHJvdmlkZXIocHJvdmlkZXIsIHByb3ZpZGUpO1xufVxuIl19
|