@ngxs/store 3.7.6-dev.master-2df2f65 → 3.7.6-dev.master-1bdb8c0
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/bundles/ngxs-store-operators.umd.js +11 -11
- package/bundles/ngxs-store-operators.umd.js.map +1 -1
- package/bundles/ngxs-store-operators.umd.min.js.map +1 -1
- package/bundles/ngxs-store.umd.js +238 -75
- package/bundles/ngxs-store.umd.js.map +1 -1
- package/bundles/ngxs-store.umd.min.js +1 -1
- package/bundles/ngxs-store.umd.min.js.map +1 -1
- package/esm2015/index.js +2 -2
- package/esm2015/ngxs-store.js +15 -14
- package/esm2015/operators/append.js +2 -2
- package/esm2015/operators/compose.js +2 -2
- package/esm2015/operators/iif.js +7 -7
- package/esm2015/operators/index.js +1 -1
- package/esm2015/operators/insert-item.js +1 -1
- package/esm2015/operators/patch.js +4 -4
- package/esm2015/operators/remove-item.js +1 -1
- package/esm2015/operators/types.js +5 -0
- package/esm2015/operators/update-item.js +1 -1
- package/esm2015/operators/utils.js +1 -1
- package/esm2015/src/dev-features/ngxs-development.module.js +26 -0
- package/esm2015/src/dev-features/ngxs-unhandled-actions-logger.js +69 -0
- package/esm2015/src/dev-features/symbols.js +24 -0
- package/esm2015/src/internal/state-context-factory.js +2 -2
- package/esm2015/src/internal/state-factory.js +21 -5
- package/esm2015/src/internal/state-operators.js +1 -1
- package/esm2015/src/public_api.js +3 -1
- package/esm2015/src/symbols.js +1 -1
- package/esm5/index.js +2 -2
- package/esm5/ngxs-store.js +15 -14
- package/esm5/operators/append.js +2 -2
- package/esm5/operators/compose.js +2 -2
- package/esm5/operators/iif.js +7 -7
- package/esm5/operators/index.js +1 -1
- package/esm5/operators/insert-item.js +1 -1
- package/esm5/operators/patch.js +4 -4
- package/esm5/operators/remove-item.js +1 -1
- package/esm5/operators/types.js +5 -0
- package/esm5/operators/update-item.js +1 -1
- package/esm5/operators/utils.js +1 -1
- package/esm5/src/dev-features/ngxs-development.module.js +34 -0
- package/esm5/src/dev-features/ngxs-unhandled-actions-logger.js +98 -0
- package/esm5/src/dev-features/symbols.js +24 -0
- package/esm5/src/internal/state-context-factory.js +2 -2
- package/esm5/src/internal/state-factory.js +21 -5
- package/esm5/src/internal/state-operators.js +1 -1
- package/esm5/src/public_api.js +3 -1
- package/esm5/src/symbols.js +1 -1
- package/fesm2015/ngxs-store-operators.js +11 -11
- package/fesm2015/ngxs-store-operators.js.map +1 -1
- package/fesm2015/ngxs-store.js +171 -45
- package/fesm2015/ngxs-store.js.map +1 -1
- package/fesm5/ngxs-store-operators.js +11 -11
- package/fesm5/ngxs-store-operators.js.map +1 -1
- package/fesm5/ngxs-store.js +220 -60
- package/fesm5/ngxs-store.js.map +1 -1
- package/ngxs-store.d.ts +14 -13
- package/ngxs-store.metadata.json +1 -1
- package/operators/append.d.ts +2 -3
- package/operators/compose.d.ts +1 -2
- package/operators/iif.d.ts +3 -4
- package/operators/index.d.ts +2 -1
- package/operators/insert-item.d.ts +2 -3
- package/operators/ngxs-store-operators.metadata.json +1 -1
- package/operators/patch.d.ts +5 -4
- package/operators/remove-item.d.ts +3 -4
- package/operators/types.d.ts +53 -0
- package/operators/update-item.d.ts +3 -4
- package/operators/utils.d.ts +2 -4
- package/package.json +1 -1
- package/src/dev-features/ngxs-development.module.d.ts +5 -0
- package/src/dev-features/ngxs-unhandled-actions-logger.d.ts +14 -0
- package/src/dev-features/symbols.d.ts +8 -0
- package/src/internal/state-operators.d.ts +1 -1
- package/src/public_api.d.ts +3 -0
- package/src/symbols.d.ts +3 -2
- package/esm2015/operators/internals.js +0 -5
- package/esm5/operators/internals.js +0 -5
- package/operators/internals.d.ts +0 -2
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import { NgModule } from '@angular/core';
|
|
6
|
+
import { NGXS_DEVELOPMENT_OPTIONS } from './symbols';
|
|
7
|
+
import { NgxsUnhandledActionsLogger } from './ngxs-unhandled-actions-logger';
|
|
8
|
+
var NgxsDevelopmentModule = /** @class */ (function () {
|
|
9
|
+
function NgxsDevelopmentModule() {
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* @param {?} options
|
|
13
|
+
* @return {?}
|
|
14
|
+
*/
|
|
15
|
+
NgxsDevelopmentModule.forRoot = /**
|
|
16
|
+
* @param {?} options
|
|
17
|
+
* @return {?}
|
|
18
|
+
*/
|
|
19
|
+
function (options) {
|
|
20
|
+
return {
|
|
21
|
+
ngModule: NgxsDevelopmentModule,
|
|
22
|
+
providers: [
|
|
23
|
+
NgxsUnhandledActionsLogger,
|
|
24
|
+
{ provide: NGXS_DEVELOPMENT_OPTIONS, useValue: options }
|
|
25
|
+
]
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
NgxsDevelopmentModule.decorators = [
|
|
29
|
+
{ type: NgModule }
|
|
30
|
+
];
|
|
31
|
+
return NgxsDevelopmentModule;
|
|
32
|
+
}());
|
|
33
|
+
export { NgxsDevelopmentModule };
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4cy1kZXZlbG9wbWVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy9zdG9yZS8iLCJzb3VyY2VzIjpbInNyYy9kZXYtZmVhdHVyZXMvbmd4cy1kZXZlbG9wbWVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBMEIsd0JBQXdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDN0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFN0U7SUFBQTtJQVdBLENBQUM7Ozs7O0lBVFEsNkJBQU87Ozs7SUFBZCxVQUFlLE9BQStCO1FBQzVDLE9BQU87WUFDTCxRQUFRLEVBQUUscUJBQXFCO1lBQy9CLFNBQVMsRUFBRTtnQkFDVCwwQkFBMEI7Z0JBQzFCLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7YUFDekQ7U0FDRixDQUFDO0lBQ0osQ0FBQzs7Z0JBVkYsUUFBUTs7SUFXVCw0QkFBQztDQUFBLEFBWEQsSUFXQztTQVZZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE5neHNEZXZlbG9wbWVudE9wdGlvbnMsIE5HWFNfREVWRUxPUE1FTlRfT1BUSU9OUyB9IGZyb20gJy4vc3ltYm9scyc7XG5pbXBvcnQgeyBOZ3hzVW5oYW5kbGVkQWN0aW9uc0xvZ2dlciB9IGZyb20gJy4vbmd4cy11bmhhbmRsZWQtYWN0aW9ucy1sb2dnZXInO1xuXG5ATmdNb2R1bGUoKVxuZXhwb3J0IGNsYXNzIE5neHNEZXZlbG9wbWVudE1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KG9wdGlvbnM6IE5neHNEZXZlbG9wbWVudE9wdGlvbnMpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5neHNEZXZlbG9wbWVudE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTmd4c0RldmVsb3BtZW50TW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIE5neHNVbmhhbmRsZWRBY3Rpb25zTG9nZ2VyLFxuICAgICAgICB7IHByb3ZpZGU6IE5HWFNfREVWRUxPUE1FTlRfT1BUSU9OUywgdXNlVmFsdWU6IG9wdGlvbnMgfVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import * as tslib_1 from "tslib";
|
|
6
|
+
import { Inject, Injectable } from '@angular/core';
|
|
7
|
+
import { getActionTypeFromInstance } from '../utils/utils';
|
|
8
|
+
import { InitState, UpdateState } from '../actions/actions';
|
|
9
|
+
import { NGXS_DEVELOPMENT_OPTIONS } from './symbols';
|
|
10
|
+
var NgxsUnhandledActionsLogger = /** @class */ (function () {
|
|
11
|
+
function NgxsUnhandledActionsLogger(options) {
|
|
12
|
+
/**
|
|
13
|
+
* These actions should be ignored by default; the user can increase this
|
|
14
|
+
* list in the future via the `ignoreActions` method.
|
|
15
|
+
*/
|
|
16
|
+
this._ignoredActions = new Set([InitState.type, UpdateState.type]);
|
|
17
|
+
this.ignoreActions.apply(this, tslib_1.__spread(options.warnOnUnhandledActions.ignore));
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Adds actions to the internal list of actions that should be ignored.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Adds actions to the internal list of actions that should be ignored.
|
|
24
|
+
* @param {...?} actions
|
|
25
|
+
* @return {?}
|
|
26
|
+
*/
|
|
27
|
+
NgxsUnhandledActionsLogger.prototype.ignoreActions = /**
|
|
28
|
+
* Adds actions to the internal list of actions that should be ignored.
|
|
29
|
+
* @param {...?} actions
|
|
30
|
+
* @return {?}
|
|
31
|
+
*/
|
|
32
|
+
function () {
|
|
33
|
+
var actions = [];
|
|
34
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
35
|
+
actions[_i] = arguments[_i];
|
|
36
|
+
}
|
|
37
|
+
var e_1, _a;
|
|
38
|
+
try {
|
|
39
|
+
for (var actions_1 = tslib_1.__values(actions), actions_1_1 = actions_1.next(); !actions_1_1.done; actions_1_1 = actions_1.next()) {
|
|
40
|
+
var action = actions_1_1.value;
|
|
41
|
+
this._ignoredActions.add(action.type);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
45
|
+
finally {
|
|
46
|
+
try {
|
|
47
|
+
if (actions_1_1 && !actions_1_1.done && (_a = actions_1.return)) _a.call(actions_1);
|
|
48
|
+
}
|
|
49
|
+
finally { if (e_1) throw e_1.error; }
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
/** @internal */
|
|
53
|
+
/**
|
|
54
|
+
* \@internal
|
|
55
|
+
* @param {?} action
|
|
56
|
+
* @return {?}
|
|
57
|
+
*/
|
|
58
|
+
NgxsUnhandledActionsLogger.prototype.warn = /**
|
|
59
|
+
* \@internal
|
|
60
|
+
* @param {?} action
|
|
61
|
+
* @return {?}
|
|
62
|
+
*/
|
|
63
|
+
function (action) {
|
|
64
|
+
/** @type {?} */
|
|
65
|
+
var actionShouldBeIgnored = Array.from(this._ignoredActions).some((/**
|
|
66
|
+
* @param {?} type
|
|
67
|
+
* @return {?}
|
|
68
|
+
*/
|
|
69
|
+
function (type) { return type === getActionTypeFromInstance(action); }));
|
|
70
|
+
if (actionShouldBeIgnored) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
action =
|
|
74
|
+
action.constructor && action.constructor.name !== 'Object'
|
|
75
|
+
? action.constructor.name
|
|
76
|
+
: action.type;
|
|
77
|
+
console.warn("The " + action + " action has been dispatched but hasn't been handled. This may happen if the state with an action handler for this action is not registered.");
|
|
78
|
+
};
|
|
79
|
+
NgxsUnhandledActionsLogger.decorators = [
|
|
80
|
+
{ type: Injectable }
|
|
81
|
+
];
|
|
82
|
+
/** @nocollapse */
|
|
83
|
+
NgxsUnhandledActionsLogger.ctorParameters = function () { return [
|
|
84
|
+
{ type: undefined, decorators: [{ type: Inject, args: [NGXS_DEVELOPMENT_OPTIONS,] }] }
|
|
85
|
+
]; };
|
|
86
|
+
return NgxsUnhandledActionsLogger;
|
|
87
|
+
}());
|
|
88
|
+
export { NgxsUnhandledActionsLogger };
|
|
89
|
+
if (false) {
|
|
90
|
+
/**
|
|
91
|
+
* These actions should be ignored by default; the user can increase this
|
|
92
|
+
* list in the future via the `ignoreActions` method.
|
|
93
|
+
* @type {?}
|
|
94
|
+
* @private
|
|
95
|
+
*/
|
|
96
|
+
NgxsUnhandledActionsLogger.prototype._ignoredActions;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4cy11bmhhbmRsZWQtYWN0aW9ucy1sb2dnZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy9zdG9yZS8iLCJzb3VyY2VzIjpbInNyYy9kZXYtZmVhdHVyZXMvbmd4cy11bmhhbmRsZWQtYWN0aW9ucy1sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVELE9BQU8sRUFBMEIsd0JBQXdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFN0U7SUFRRSxvQ0FBOEMsT0FBK0I7Ozs7O1FBRnJFLG9CQUFlLEdBQUcsSUFBSSxHQUFHLENBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRzVFLElBQUksQ0FBQyxhQUFhLE9BQWxCLElBQUksbUJBQWtCLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEdBQUU7SUFDL0QsQ0FBQztJQUVEOztPQUVHOzs7Ozs7SUFDSCxrREFBYTs7Ozs7SUFBYjtRQUFjLGlCQUF3QjthQUF4QixVQUF3QixFQUF4QixxQkFBd0IsRUFBeEIsSUFBd0I7WUFBeEIsNEJBQXdCOzs7O1lBQ3BDLEtBQXFCLElBQUEsWUFBQSxpQkFBQSxPQUFPLENBQUEsZ0NBQUEscURBQUU7Z0JBQXpCLElBQU0sTUFBTSxvQkFBQTtnQkFDZixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdkM7Ozs7Ozs7OztJQUNILENBQUM7SUFFRCxnQkFBZ0I7Ozs7OztJQUNoQix5Q0FBSTs7Ozs7SUFBSixVQUFLLE1BQVc7O1lBQ1IscUJBQXFCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSTs7OztRQUNqRSxVQUFBLElBQUksSUFBSSxPQUFBLElBQUksS0FBSyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsRUFBMUMsQ0FBMEMsRUFDbkQ7UUFFRCxJQUFJLHFCQUFxQixFQUFFO1lBQ3pCLE9BQU87U0FDUjtRQUVELE1BQU07WUFDSixNQUFNLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLFFBQVE7Z0JBQ3hELENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUk7Z0JBQ3pCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBRWxCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsU0FBTyxNQUFNLGdKQUE2SSxDQUMzSixDQUFDO0lBQ0osQ0FBQzs7Z0JBdkNGLFVBQVU7Ozs7Z0RBUUksTUFBTSxTQUFDLHdCQUF3Qjs7SUFnQzlDLGlDQUFDO0NBQUEsQUF4Q0QsSUF3Q0M7U0F2Q1ksMEJBQTBCOzs7Ozs7OztJQUtyQyxxREFBOEUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWN0aW9uVHlwZSB9IGZyb20gJy4uL2FjdGlvbnMvc3ltYm9scyc7XG5pbXBvcnQgeyBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgSW5pdFN0YXRlLCBVcGRhdGVTdGF0ZSB9IGZyb20gJy4uL2FjdGlvbnMvYWN0aW9ucyc7XG5pbXBvcnQgeyBOZ3hzRGV2ZWxvcG1lbnRPcHRpb25zLCBOR1hTX0RFVkVMT1BNRU5UX09QVElPTlMgfSBmcm9tICcuL3N5bWJvbHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmd4c1VuaGFuZGxlZEFjdGlvbnNMb2dnZXIge1xuICAvKipcbiAgICogVGhlc2UgYWN0aW9ucyBzaG91bGQgYmUgaWdub3JlZCBieSBkZWZhdWx0OyB0aGUgdXNlciBjYW4gaW5jcmVhc2UgdGhpc1xuICAgKiBsaXN0IGluIHRoZSBmdXR1cmUgdmlhIHRoZSBgaWdub3JlQWN0aW9uc2AgbWV0aG9kLlxuICAgKi9cbiAgcHJpdmF0ZSBfaWdub3JlZEFjdGlvbnMgPSBuZXcgU2V0PHN0cmluZz4oW0luaXRTdGF0ZS50eXBlLCBVcGRhdGVTdGF0ZS50eXBlXSk7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChOR1hTX0RFVkVMT1BNRU5UX09QVElPTlMpIG9wdGlvbnM6IE5neHNEZXZlbG9wbWVudE9wdGlvbnMpIHtcbiAgICB0aGlzLmlnbm9yZUFjdGlvbnMoLi4ub3B0aW9ucy53YXJuT25VbmhhbmRsZWRBY3Rpb25zLmlnbm9yZSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhY3Rpb25zIHRvIHRoZSBpbnRlcm5hbCBsaXN0IG9mIGFjdGlvbnMgdGhhdCBzaG91bGQgYmUgaWdub3JlZC5cbiAgICovXG4gIGlnbm9yZUFjdGlvbnMoLi4uYWN0aW9uczogQWN0aW9uVHlwZVtdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgdGhpcy5faWdub3JlZEFjdGlvbnMuYWRkKGFjdGlvbi50eXBlKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHdhcm4oYWN0aW9uOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBhY3Rpb25TaG91bGRCZUlnbm9yZWQgPSBBcnJheS5mcm9tKHRoaXMuX2lnbm9yZWRBY3Rpb25zKS5zb21lKFxuICAgICAgdHlwZSA9PiB0eXBlID09PSBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGFjdGlvbilcbiAgICApO1xuXG4gICAgaWYgKGFjdGlvblNob3VsZEJlSWdub3JlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGFjdGlvbiA9XG4gICAgICBhY3Rpb24uY29uc3RydWN0b3IgJiYgYWN0aW9uLmNvbnN0cnVjdG9yLm5hbWUgIT09ICdPYmplY3QnXG4gICAgICAgID8gYWN0aW9uLmNvbnN0cnVjdG9yLm5hbWVcbiAgICAgICAgOiBhY3Rpb24udHlwZTtcblxuICAgIGNvbnNvbGUud2FybihcbiAgICAgIGBUaGUgJHthY3Rpb259IGFjdGlvbiBoYXMgYmVlbiBkaXNwYXRjaGVkIGJ1dCBoYXNuJ3QgYmVlbiBoYW5kbGVkLiBUaGlzIG1heSBoYXBwZW4gaWYgdGhlIHN0YXRlIHdpdGggYW4gYWN0aW9uIGhhbmRsZXIgZm9yIHRoaXMgYWN0aW9uIGlzIG5vdCByZWdpc3RlcmVkLmBcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import { InjectionToken } from '@angular/core';
|
|
6
|
+
/**
|
|
7
|
+
* @record
|
|
8
|
+
*/
|
|
9
|
+
export function NgxsDevelopmentOptions() { }
|
|
10
|
+
if (false) {
|
|
11
|
+
/** @type {?} */
|
|
12
|
+
NgxsDevelopmentOptions.prototype.warnOnUnhandledActions;
|
|
13
|
+
}
|
|
14
|
+
/** @type {?} */
|
|
15
|
+
export var NGXS_DEVELOPMENT_OPTIONS = new InjectionToken('NGXS_DEVELOPMENT_OPTIONS', {
|
|
16
|
+
providedIn: 'root',
|
|
17
|
+
factory: (/**
|
|
18
|
+
* @return {?}
|
|
19
|
+
*/
|
|
20
|
+
function () { return ({
|
|
21
|
+
warnOnUnhandledActions: { ignore: [] }
|
|
22
|
+
}); })
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9scy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL3N0b3JlLyIsInNvdXJjZXMiOlsic3JjL2Rldi1mZWF0dXJlcy9zeW1ib2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBSS9DLDRDQUlDOzs7SUFIQyx3REFFRTs7O0FBR0osTUFBTSxLQUFPLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUN4RCwwQkFBMEIsRUFDMUI7SUFDRSxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPOzs7SUFBRSxjQUFNLE9BQUEsQ0FBQztRQUNkLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtLQUN2QyxDQUFDLEVBRmEsQ0FFYixDQUFBO0NBQ0gsQ0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFjdGlvblR5cGUgfSBmcm9tICcuLi9hY3Rpb25zL3N5bWJvbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5neHNEZXZlbG9wbWVudE9wdGlvbnMge1xuICB3YXJuT25VbmhhbmRsZWRBY3Rpb25zOiB7XG4gICAgaWdub3JlOiBBY3Rpb25UeXBlW107XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBOR1hTX0RFVkVMT1BNRU5UX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48Tmd4c0RldmVsb3BtZW50T3B0aW9ucz4oXG4gICdOR1hTX0RFVkVMT1BNRU5UX09QVElPTlMnLFxuICB7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3Rvcnk6ICgpID0+ICh7XG4gICAgICB3YXJuT25VbmhhbmRsZWRBY3Rpb25zOiB7IGlnbm9yZTogW10gfVxuICAgIH0pXG4gIH1cbik7XG4iXX0=
|
|
@@ -65,7 +65,7 @@ var StateContextFactory = /** @class */ (function () {
|
|
|
65
65
|
/** @type {?} */
|
|
66
66
|
var local = getState(currentAppState);
|
|
67
67
|
/** @type {?} */
|
|
68
|
-
var newValue = stateOperator(local);
|
|
68
|
+
var newValue = stateOperator((/** @type {?} */ (local)));
|
|
69
69
|
return setStateValue(currentAppState, newValue);
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
@@ -132,4 +132,4 @@ if (false) {
|
|
|
132
132
|
*/
|
|
133
133
|
StateContextFactory.prototype._internalStateOperations;
|
|
134
134
|
}
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtY29udGV4dC1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMvc3RvcmUvIiwic291cmNlcyI6WyJzcmMvaW50ZXJuYWwvc3RhdGUtY29udGV4dC1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQU1oRDtJQUVFLDZCQUFvQix3QkFBaUQ7UUFBakQsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUF5QjtJQUFHLENBQUM7SUFFekU7O09BRUc7Ozs7Ozs7SUFDSCxnREFBa0I7Ozs7OztJQUFsQixVQUFzQixXQUF3Qjs7WUFDdEMsSUFBSSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxzQkFBc0IsRUFBRTs7Ozs7UUFFbkUsU0FBUyxRQUFRLENBQUMsZUFBb0I7WUFDcEMsT0FBTyxRQUFRLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCxDQUFDOzs7Ozs7UUFFRCxTQUFTLGFBQWEsQ0FBQyxlQUFvQixFQUFFLFFBQVc7O2dCQUNoRCxXQUFXLEdBQUcsUUFBUSxDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztZQUN6RSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNCLE9BQU8sV0FBVyxDQUFDO1lBQ25CLHNFQUFzRTtZQUN0RSw2REFBNkQ7WUFDN0Qsb0RBQW9EO1lBQ3BELG9HQUFvRztZQUNwRyxzREFBc0Q7WUFDdEQsNEVBQTRFO1FBQzlFLENBQUM7Ozs7OztRQUVELFNBQVMsb0JBQW9CLENBQUMsZUFBb0IsRUFBRSxhQUErQjs7Z0JBQzNFLEtBQUssR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDOztnQkFDakMsUUFBUSxHQUFHLGFBQWEsQ0FBQyxtQkFBQSxLQUFLLEVBQW9CLENBQUM7WUFDekQsT0FBTyxhQUFhLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELENBQUM7Ozs7O1FBRUQsU0FBUyxlQUFlLENBQUMsS0FBMkI7WUFDbEQsT0FBTyxPQUFPLEtBQUssS0FBSyxVQUFVLENBQUM7UUFDckMsQ0FBQztRQUVELE9BQU87WUFDTCxRQUFROzs7WUFBUjs7b0JBQ1EsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3ZDLE9BQU8sUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFDRCxVQUFVOzs7O1lBQVYsVUFBVyxHQUFlOztvQkFDbEIsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUU7O29CQUNqQyxhQUFhLEdBQUcsV0FBVyxDQUFJLEdBQUcsQ0FBQztnQkFDekMsT0FBTyxvQkFBb0IsQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDOUQsQ0FBQztZQUNELFFBQVE7Ozs7WUFBUixVQUFTLEdBQXlCOztvQkFDMUIsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3ZDLE9BQU8sZUFBZSxDQUFDLEdBQUcsQ0FBQztvQkFDekIsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUM7b0JBQzVDLENBQUMsQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLENBQUM7WUFDRCxRQUFROzs7O1lBQVIsVUFBUyxPQUFvQjtnQkFDM0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hDLENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQzs7Z0JBeERGLFVBQVU7Ozs7Z0JBUEYsdUJBQXVCOztJQWdFaEMsMEJBQUM7Q0FBQSxBQXpERCxJQXlEQztTQXhEWSxtQkFBbUI7Ozs7OztJQUNsQix1REFBeUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEV4aXN0aW5nU3RhdGUsIFN0YXRlT3BlcmF0b3IgfSBmcm9tICdAbmd4cy9zdG9yZS9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTdGF0ZUNvbnRleHQgfSBmcm9tICcuLi9zeW1ib2xzJztcbmltcG9ydCB7IE1hcHBlZFN0b3JlIH0gZnJvbSAnLi4vaW50ZXJuYWwvaW50ZXJuYWxzJztcbmltcG9ydCB7IHNldFZhbHVlLCBnZXRWYWx1ZSB9IGZyb20gJy4uL3V0aWxzL3V0aWxzJztcbmltcG9ydCB7IEludGVybmFsU3RhdGVPcGVyYXRpb25zIH0gZnJvbSAnLi4vaW50ZXJuYWwvc3RhdGUtb3BlcmF0aW9ucyc7XG5pbXBvcnQgeyBzaW1wbGVQYXRjaCB9IGZyb20gJy4vc3RhdGUtb3BlcmF0b3JzJztcblxuLyoqXG4gKiBTdGF0ZSBDb250ZXh0IGZhY3RvcnkgY2xhc3NcbiAqIEBpZ25vcmVcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN0YXRlQ29udGV4dEZhY3Rvcnkge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9pbnRlcm5hbFN0YXRlT3BlcmF0aW9uczogSW50ZXJuYWxTdGF0ZU9wZXJhdGlvbnMpIHt9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgc3RhdGUgY29udGV4dFxuICAgKi9cbiAgY3JlYXRlU3RhdGVDb250ZXh0PFQ+KG1hcHBlZFN0b3JlOiBNYXBwZWRTdG9yZSk6IFN0YXRlQ29udGV4dDxUPiB7XG4gICAgY29uc3Qgcm9vdCA9IHRoaXMuX2ludGVybmFsU3RhdGVPcGVyYXRpb25zLmdldFJvb3RTdGF0ZU9wZXJhdGlvbnMoKTtcblxuICAgIGZ1bmN0aW9uIGdldFN0YXRlKGN1cnJlbnRBcHBTdGF0ZTogYW55KTogVCB7XG4gICAgICByZXR1cm4gZ2V0VmFsdWUoY3VycmVudEFwcFN0YXRlLCBtYXBwZWRTdG9yZS5wYXRoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRTdGF0ZVZhbHVlKGN1cnJlbnRBcHBTdGF0ZTogYW55LCBuZXdWYWx1ZTogVCk6IGFueSB7XG4gICAgICBjb25zdCBuZXdBcHBTdGF0ZSA9IHNldFZhbHVlKGN1cnJlbnRBcHBTdGF0ZSwgbWFwcGVkU3RvcmUucGF0aCwgbmV3VmFsdWUpO1xuICAgICAgcm9vdC5zZXRTdGF0ZShuZXdBcHBTdGF0ZSk7XG4gICAgICByZXR1cm4gbmV3QXBwU3RhdGU7XG4gICAgICAvLyBJbiBkb2luZyB0aGlzIHJlZmFjdG9yaW5nIEkgbm90aWNlZCB0aGF0IHRoZXJlIGlzIGEgJ2J1Zycgd2hlcmUgdGhlXG4gICAgICAvLyBhcHBsaWNhdGlvbiBzdGF0ZSBpcyByZXR1cm5lZCBpbnN0ZWFkIG9mIHRoaXMgc3RhdGUgc2xpY2UuXG4gICAgICAvLyBUaGlzIGhhcyB3b3JrZWQgdGhpcyB3YXkgc2luY2UgdGhlIGJlZ2lubmluZyBzZWU6XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbmd4cy9zdG9yZS9ibGFtZS8zMjRjNjY3YjRiN2RlYmQ4ZWI5NzkwMDZjNjdjYTBhZTM0N2Q4OGNkL3NyYy9zdGF0ZS1mYWN0b3J5LnRzXG4gICAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIGZpeGVkLCBidXQgaXMgYSAnYnJlYWtpbmcnIGNoYW5nZS5cbiAgICAgIC8vIEkgd2lsbCBkbyB0aGlzIGZpeCBpbiBhIHN1YnNlcXVlbnQgUFIgYW5kIHdlIGNhbiBkZWNpZGUgaG93IHRvIGhhbmRsZSBpdC5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRTdGF0ZUZyb21PcGVyYXRvcihjdXJyZW50QXBwU3RhdGU6IGFueSwgc3RhdGVPcGVyYXRvcjogU3RhdGVPcGVyYXRvcjxUPikge1xuICAgICAgY29uc3QgbG9jYWwgPSBnZXRTdGF0ZShjdXJyZW50QXBwU3RhdGUpO1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSBzdGF0ZU9wZXJhdG9yKGxvY2FsIGFzIEV4aXN0aW5nU3RhdGU8VD4pO1xuICAgICAgcmV0dXJuIHNldFN0YXRlVmFsdWUoY3VycmVudEFwcFN0YXRlLCBuZXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNTdGF0ZU9wZXJhdG9yKHZhbHVlOiBUIHwgU3RhdGVPcGVyYXRvcjxUPik6IHZhbHVlIGlzIFN0YXRlT3BlcmF0b3I8VD4ge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2V0U3RhdGUoKTogVCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBcHBTdGF0ZSA9IHJvb3QuZ2V0U3RhdGUoKTtcbiAgICAgICAgcmV0dXJuIGdldFN0YXRlKGN1cnJlbnRBcHBTdGF0ZSk7XG4gICAgICB9LFxuICAgICAgcGF0Y2hTdGF0ZSh2YWw6IFBhcnRpYWw8VD4pOiBUIHtcbiAgICAgICAgY29uc3QgY3VycmVudEFwcFN0YXRlID0gcm9vdC5nZXRTdGF0ZSgpO1xuICAgICAgICBjb25zdCBwYXRjaE9wZXJhdG9yID0gc2ltcGxlUGF0Y2g8VD4odmFsKTtcbiAgICAgICAgcmV0dXJuIHNldFN0YXRlRnJvbU9wZXJhdG9yKGN1cnJlbnRBcHBTdGF0ZSwgcGF0Y2hPcGVyYXRvcik7XG4gICAgICB9LFxuICAgICAgc2V0U3RhdGUodmFsOiBUIHwgU3RhdGVPcGVyYXRvcjxUPik6IFQge1xuICAgICAgICBjb25zdCBjdXJyZW50QXBwU3RhdGUgPSByb290LmdldFN0YXRlKCk7XG4gICAgICAgIHJldHVybiBpc1N0YXRlT3BlcmF0b3IodmFsKVxuICAgICAgICAgID8gc2V0U3RhdGVGcm9tT3BlcmF0b3IoY3VycmVudEFwcFN0YXRlLCB2YWwpXG4gICAgICAgICAgOiBzZXRTdGF0ZVZhbHVlKGN1cnJlbnRBcHBTdGF0ZSwgdmFsKTtcbiAgICAgIH0sXG4gICAgICBkaXNwYXRjaChhY3Rpb25zOiBhbnkgfCBhbnlbXSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gcm9vdC5kaXNwYXRjaChhY3Rpb25zKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -16,6 +16,7 @@ import { InternalDispatchedActionResults } from '../internal/dispatcher';
|
|
|
16
16
|
import { StateContextFactory } from '../internal/state-context-factory';
|
|
17
17
|
import { StoreValidators } from '../utils/store-validators';
|
|
18
18
|
import { ensureStateClassIsInjectable } from '../ivy/ivy-enabled-in-dev-mode';
|
|
19
|
+
import { NgxsUnhandledActionsLogger } from '../dev-features/ngxs-unhandled-actions-logger';
|
|
19
20
|
/**
|
|
20
21
|
* State factory class
|
|
21
22
|
* @ignore
|
|
@@ -157,10 +158,8 @@ var StateFactory = /** @class */ (function () {
|
|
|
157
158
|
* @return {?}
|
|
158
159
|
*/
|
|
159
160
|
function () {
|
|
160
|
-
//
|
|
161
|
-
//
|
|
162
|
-
// on the `StateFactory` until its initialized :) An it's initialized
|
|
163
|
-
// for the first time along with the `NgxsRootModule`.
|
|
161
|
+
// This is being non-null asserted since `_actionsSubscrition` is
|
|
162
|
+
// initialized within the constructor.
|
|
164
163
|
(/** @type {?} */ (this._actionsSubscription)).unsubscribe();
|
|
165
164
|
};
|
|
166
165
|
/**
|
|
@@ -337,6 +336,10 @@ var StateFactory = /** @class */ (function () {
|
|
|
337
336
|
var type = (/** @type {?} */ (getActionTypeFromInstance(action)));
|
|
338
337
|
/** @type {?} */
|
|
339
338
|
var results = [];
|
|
339
|
+
// Determines whether the dispatched action has been handled, this is assigned
|
|
340
|
+
// to `true` within the below `for` loop if any `actionMetas` has been found.
|
|
341
|
+
/** @type {?} */
|
|
342
|
+
var actionHasBeenHandled = false;
|
|
340
343
|
try {
|
|
341
344
|
for (var _c = tslib_1.__values(this.states), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
342
345
|
var metadata = _d.value;
|
|
@@ -389,6 +392,7 @@ var StateFactory = /** @class */ (function () {
|
|
|
389
392
|
catch (e) {
|
|
390
393
|
results.push(throwError(e));
|
|
391
394
|
}
|
|
395
|
+
actionHasBeenHandled = true;
|
|
392
396
|
}
|
|
393
397
|
}
|
|
394
398
|
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
@@ -408,6 +412,18 @@ var StateFactory = /** @class */ (function () {
|
|
|
408
412
|
}
|
|
409
413
|
finally { if (e_2) throw e_2.error; }
|
|
410
414
|
}
|
|
415
|
+
// The `NgxsUnhandledActionsLogger` is a tree-shakable class which functions
|
|
416
|
+
// only during development.
|
|
417
|
+
if ((typeof ngDevMode === 'undefined' || ngDevMode) && !actionHasBeenHandled) {
|
|
418
|
+
/** @type {?} */
|
|
419
|
+
var unhandledActionsLogger = this._injector.get(NgxsUnhandledActionsLogger, null);
|
|
420
|
+
// The `NgxsUnhandledActionsLogger` will not be resolved by the injector if the
|
|
421
|
+
// `NgxsDevelopmentModule` is not provided. It's enough to check whether the `injector.get`
|
|
422
|
+
// didn't return `null` so we may ensure the module has been imported.
|
|
423
|
+
if (unhandledActionsLogger) {
|
|
424
|
+
unhandledActionsLogger.warn(action);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
411
427
|
if (!results.length) {
|
|
412
428
|
results.push(of({}));
|
|
413
429
|
}
|
|
@@ -580,4 +596,4 @@ if (false) {
|
|
|
580
596
|
*/
|
|
581
597
|
StateFactory.prototype._initialState;
|
|
582
598
|
}
|
|
583
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL3N0b3JlLyIsInNvdXJjZXMiOlsic3JjL2ludGVybmFsL3N0YXRlLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQ0wsUUFBUSxFQUNSLElBQUksRUFFSixFQUFFLEVBQ0YsVUFBVSxFQUVWLE9BQU8sRUFDUCxZQUFZLEVBQ2IsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsVUFBVSxFQUNWLGNBQWMsRUFDZCxNQUFNLEVBQ04sR0FBRyxFQUNILFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxFQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFpQixPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRixPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNsRCxPQUFPLEVBQ0wsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixRQUFRLEVBR1IsV0FBVyxFQUNYLFVBQVUsRUFLVixlQUFlLEVBR2YsZ0JBQWdCLEVBQ2pCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUErQixlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFF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NkU7UUFDN0UseUZBQXlGO1FBQ3pGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRDs7Ozs7O09BTUc7Ozs7Ozs7Ozs7SUFDSyxvREFBNkI7Ozs7Ozs7OztJQUFyQyxVQUFzQyxJQUFZLEVBQUUsSUFBWTs7WUFDeEQsaUNBQWlDLEdBQ3JDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxLQUFLLFNBQVM7UUFDbEQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLGlDQUFpQyxDQUFDO0lBQ3RFLENBQUM7O2dCQTNTRixVQUFVOzs7O2dCQXBEVSxRQUFRO2dCQXNCVixVQUFVO2dCQXVDRCxZQUFZLHVCQUZuQyxRQUFRLFlBQ1IsUUFBUTtnQkFsQnlCLGVBQWU7Z0JBQzVDLCtCQUErQjtnQkFDL0IsbUJBQW1CO2dEQXFCdkIsUUFBUSxZQUNSLE1BQU0sU0FBQyxtQkFBbUI7O0lBOFIvQixtQkFBQztDQUFBLEFBNVNELElBNFNDO1NBM1NZLFlBQVk7Ozs7OztJQUN2Qiw0Q0FBeUQ7Ozs7O0lBZ0J6RCwrQkFBb0M7Ozs7O0lBTXBDLHFDQUF5Qzs7Ozs7SUFNekMsbUNBQWdEOztJQU1oRCxpREFpQ0c7Ozs7O0lBaEVELGlDQUEyQjs7Ozs7SUFDM0IsK0JBQTJCOzs7OztJQUMzQixzQ0FFb0M7Ozs7O0lBQ3BDLGdDQUFpQzs7Ozs7SUFDakMsc0NBQXVEOzs7OztJQUN2RCw0Q0FBaUQ7Ozs7O0lBQ2pELHFDQUUwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBPcHRpb25hbCwgU2tpcFNlbGYsIEluamVjdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBmb3JrSm9pbixcbiAgZnJvbSxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIHRocm93RXJyb3IsXG4gIFN1YnNjcmlwdGlvbixcbiAgU3ViamVjdCxcbiAgaXNPYnNlcnZhYmxlXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgY2F0Y2hFcnJvcixcbiAgZGVmYXVsdElmRW1wdHksXG4gIGZpbHRlcixcbiAgbWFwLFxuICBtZXJnZU1hcCxcbiAgc2hhcmVSZXBsYXksXG4gIHRha2VVbnRpbFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJTklUSUFMX1NUQVRFX1RPS0VOLCBQbGFpbk9iamVjdE9mLCBtZW1vaXplIH0gZnJvbSAnQG5neHMvc3RvcmUvaW50ZXJuYWxzJztcblxuaW1wb3J0IHsgTUVUQV9LRVksIE5neHNDb25maWcgfSBmcm9tICcuLi9zeW1ib2xzJztcbmltcG9ydCB7XG4gIGJ1aWxkR3JhcGgsXG4gIGZpbmRGdWxsUGFyZW50UGF0aCxcbiAgaXNPYmplY3QsXG4gIE1hcHBlZFN0b3JlLFxuICBNZXRhRGF0YU1vZGVsLFxuICBuYW1lVG9TdGF0ZSxcbiAgcHJvcEdldHRlcixcbiAgU3RhdGVDbGFzc0ludGVybmFsLFxuICBTdGF0ZUtleUdyYXBoLFxuICBTdGF0ZXNBbmREZWZhdWx0cyxcbiAgU3RhdGVzQnlOYW1lLFxuICB0b3BvbG9naWNhbFNvcnQsXG4gIFJ1bnRpbWVTZWxlY3RvckNvbnRleHQsXG4gIFNoYXJlZFNlbGVjdG9yT3B0aW9ucyxcbiAgZ2V0U3RvcmVNZXRhZGF0YVxufSBmcm9tICcuL2ludGVybmFscyc7XG5pbXBvcnQgeyBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlLCBnZXRWYWx1ZSwgc2V0VmFsdWUgfSBmcm9tICcuLi91dGlscy91dGlscyc7XG5pbXBvcnQgeyBvZkFjdGlvbkRpc3BhdGNoZWQgfSBmcm9tICcuLi9vcGVyYXRvcnMvb2YtYWN0aW9uJztcbmltcG9ydCB7IEFjdGlvbkNvbnRleHQsIEFjdGlvblN0YXR1cywgSW50ZXJuYWxBY3Rpb25zIH0gZnJvbSAnLi4vYWN0aW9ucy1zdHJlYW0nO1xuaW1wb3J0IHsgSW50ZXJuYWxEaXNwYXRjaGVkQWN0aW9uUmVzdWx0cyB9IGZyb20gJy4uL2ludGVybmFsL2Rpc3BhdGNoZXInO1xuaW1wb3J0IHsgU3RhdGVDb250ZXh0RmFjdG9yeSB9IGZyb20gJy4uL2ludGVybmFsL3N0YXRlLWNvbnRleHQtZmFjdG9yeSc7XG5pbXBvcnQgeyBTdG9yZVZhbGlkYXRvcnMgfSBmcm9tICcuLi91dGlscy9zdG9yZS12YWxpZGF0b3JzJztcbmltcG9ydCB7IGVuc3VyZVN0YXRlQ2xhc3NJc0luamVjdGFibGUgfSBmcm9tICcuLi9pdnkvaXZ5LWVuYWJsZWQtaW4tZGV2LW1vZGUnO1xuXG4vKipcbiAqIFN0YXRlIGZhY3RvcnkgY2xhc3NcbiAqIEBpZ25vcmVcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN0YXRlRmFjdG9yeSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2FjdGlvbnNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIF9jb25maWc6IE5neHNDb25maWcsXG4gICAgQE9wdGlvbmFsKClcbiAgICBAU2tpcFNlbGYoKVxuICAgIHByaXZhdGUgX3BhcmVudEZhY3Rvcnk6IFN0YXRlRmFjdG9yeSxcbiAgICBwcml2YXRlIF9hY3Rpb25zOiBJbnRlcm5hbEFjdGlvbnMsXG4gICAgcHJpdmF0ZSBfYWN0aW9uUmVzdWx0czogSW50ZXJuYWxEaXNwYXRjaGVkQWN0aW9uUmVzdWx0cyxcbiAgICBwcml2YXRlIF9zdGF0ZUNvbnRleHRGYWN0b3J5OiBTdGF0ZUNvbnRleHRGYWN0b3J5LFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChJTklUSUFMX1NUQVRFX1RPS0VOKVxuICAgIHByaXZhdGUgX2luaXRpYWxTdGF0ZTogYW55XG4gICkge31cblxuICBwcml2YXRlIF9zdGF0ZXM6IE1hcHBlZFN0b3JlW10gPSBbXTtcblxuICBnZXQgc3RhdGVzKCk6IE1hcHBlZFN0b3JlW10ge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnRGYWN0b3J5ID8gdGhpcy5fcGFyZW50RmFjdG9yeS5zdGF0ZXMgOiB0aGlzLl9zdGF0ZXM7XG4gIH1cblxuICBwcml2YXRlIF9zdGF0ZXNCeU5hbWU6IFN0YXRlc0J5TmFtZSA9IHt9O1xuXG4gIGdldCBzdGF0ZXNCeU5hbWUoKTogU3RhdGVzQnlOYW1lIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50RmFjdG9yeSA/IHRoaXMuX3BhcmVudEZhY3Rvcnkuc3RhdGVzQnlOYW1lIDogdGhpcy5fc3RhdGVzQnlOYW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3RhdGVQYXRoczogUGxhaW5PYmplY3RPZjxzdHJpbmc+ID0ge307XG5cbiAgcHJpdmF0ZSBnZXQgc3RhdGVQYXRocygpOiBQbGFpbk9iamVjdE9mPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnRGYWN0b3J5ID8gdGhpcy5fcGFyZW50RmFjdG9yeS5zdGF0ZVBhdGhzIDogdGhpcy5fc3RhdGVQYXRocztcbiAgfVxuXG4gIGdldFJ1bnRpbWVTZWxlY3RvckNvbnRleHQgPSBtZW1vaXplKCgpID0+IHtcbiAgICBjb25zdCBzdGF0ZUZhY3RvcnkgPSB0aGlzO1xuXG4gICAgZnVuY3Rpb24gcmVzb2x2ZUdldHRlcihrZXk6IHN0cmluZykge1xuICAgICAgY29uc3QgcGF0aCA9IHN0YXRlRmFjdG9yeS5zdGF0ZVBhdGhzW2tleV07XG4gICAgICByZXR1cm4gcGF0aCA/IHByb3BHZXR0ZXIocGF0aC5zcGxpdCgnLicpLCBzdGF0ZUZhY3RvcnkuX2NvbmZpZykgOiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRleHQ6IFJ1bnRpbWVTZWxlY3RvckNvbnRleHQgPSB0aGlzLl9wYXJlbnRGYWN0b3J5XG4gICAgICA/IHRoaXMuX3BhcmVudEZhY3RvcnkuZ2V0UnVudGltZVNlbGVjdG9yQ29udGV4dCgpXG4gICAgICA6IHtcbiAgICAgICAgICBnZXRTdGF0ZUdldHRlcihrZXk6IHN0cmluZykge1xuICAgICAgICAgICAgbGV0IGdldHRlciA9IHJlc29sdmVHZXR0ZXIoa2V5KTtcbiAgICAgICAgICAgIGlmIChnZXR0ZXIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGdldHRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgICAvLyBMYXRlIGxvYWRlZCBnZXR0ZXJcbiAgICAgICAgICAgICAgaWYgKCFnZXR0ZXIpIHtcbiAgICAgICAgICAgICAgICBnZXR0ZXIgPSByZXNvbHZlR2V0dGVyKGtleSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGdldHRlciA/IGdldHRlciguLi5hcmdzKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXRTZWxlY3Rvck9wdGlvbnMobG9jYWxPcHRpb25zPzogU2hhcmVkU2VsZWN0b3JPcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxTZWxlY3Rvck9wdGlvbnMgPSBzdGF0ZUZhY3RvcnkuX2NvbmZpZy5zZWxlY3Rvck9wdGlvbnM7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5nbG9iYWxTZWxlY3Rvck9wdGlvbnMsXG4gICAgICAgICAgICAgIC4uLihsb2NhbE9wdGlvbnMgfHwge30pXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICByZXR1cm4gY29udGV4dDtcbiAgfSk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY2xvbmVEZWZhdWx0cyhkZWZhdWx0czogYW55KTogYW55IHtcbiAgICBsZXQgdmFsdWUgPSB7fTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGRlZmF1bHRzKSkge1xuICAgICAgdmFsdWUgPSBkZWZhdWx0cy5zbGljZSgpO1xuICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoZGVmYXVsdHMpKSB7XG4gICAgICB2YWx1ZSA9IHsgLi4uZGVmYXVsdHMgfTtcbiAgICB9IGVsc2UgaWYgKGRlZmF1bHRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhbHVlID0ge307XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gZGVmYXVsdHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gSSdtIHVzaW5nIG5vbi1udWxsIGFzc2VydGlvbiBoZXJlIHNpbmNlIGBfYWN0aW9uc1N1YnNjcml0aW9uYCB3aWxsXG4gICAgLy8gYmUgMTAwJSBkZWZpbmVkLiBUaGlzIGlzIGJlY2F1c2UgYG5nT25EZXN0cm95KClgIGNhbm5vdCBiZSBpbnZva2VkXG4gICAgLy8gb24gdGhlIGBTdGF0ZUZhY3RvcnlgIHVudGlsIGl0cyBpbml0aWFsaXplZCA6KSBBbiBpdCdzIGluaXRpYWxpemVkXG4gICAgLy8gZm9yIHRoZSBmaXJzdCB0aW1lIGFsb25nIHdpdGggdGhlIGBOZ3hzUm9vdE1vZHVsZWAuXG4gICAgdGhpcy5fYWN0aW9uc1N1YnNjcmlwdGlvbiEudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgc3RhdGUgdG8gdGhlIGdsb2JhbCBkZWZzLlxuICAgKi9cbiAgYWRkKHN0YXRlQ2xhc3NlczogU3RhdGVDbGFzc0ludGVybmFsW10pOiBNYXBwZWRTdG9yZVtdIHtcbiAgICAvLyBDYXJldGFrZXIgbm90ZTogd2UgaGF2ZSBzdGlsbCBsZWZ0IHRoZSBgdHlwZW9mYCBjb25kaXRpb24gaW4gb3JkZXIgdG8gYXZvaWRcbiAgICAvLyBjcmVhdGluZyBhIGJyZWFraW5nIGNoYW5nZSBmb3IgcHJvamVjdHMgdGhhdCBzdGlsbCB1c2UgdGhlIFZpZXcgRW5naW5lLlxuICAgIGlmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpIHtcbiAgICAgIFN0b3JlVmFsaWRhdG9ycy5jaGVja1RoYXRTdGF0ZUNsYXNzZXNIYXZlQmVlbkRlY29yYXRlZChzdGF0ZUNsYXNzZXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgbmV3U3RhdGVzIH0gPSB0aGlzLmFkZFRvU3RhdGVzTWFwKHN0YXRlQ2xhc3Nlcyk7XG4gICAgaWYgKCFuZXdTdGF0ZXMubGVuZ3RoKSByZXR1cm4gW107XG5cbiAgICBjb25zdCBzdGF0ZUdyYXBoOiBTdGF0ZUtleUdyYXBoID0gYnVpbGRHcmFwaChuZXdTdGF0ZXMpO1xuICAgIGNvbnN0IHNvcnRlZFN0YXRlczogc3RyaW5nW10gPSB0b3BvbG9naWNhbFNvcnQoc3RhdGVHcmFwaCk7XG4gICAgY29uc3QgcGF0aHM6IFBsYWluT2JqZWN0T2Y8c3RyaW5nPiA9IGZpbmRGdWxsUGFyZW50UGF0aChzdGF0ZUdyYXBoKTtcbiAgICBjb25zdCBuYW1lR3JhcGg6IFBsYWluT2JqZWN0T2Y8U3RhdGVDbGFzc0ludGVybmFsPiA9IG5hbWVUb1N0YXRlKG5ld1N0YXRlcyk7XG4gICAgY29uc3QgYm9vdHN0cmFwcGVkU3RvcmVzOiBNYXBwZWRTdG9yZVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IG5hbWUgb2Ygc29ydGVkU3RhdGVzKSB7XG4gICAgICBjb25zdCBzdGF0ZUNsYXNzOiBTdGF0ZUNsYXNzSW50ZXJuYWwgPSBuYW1lR3JhcGhbbmFtZV07XG4gICAgICBjb25zdCBwYXRoOiBzdHJpbmcgPSBwYXRoc1tuYW1lXTtcbiAgICAgIGNvbnN0IG1ldGE6IE1ldGFEYXRhTW9kZWwgPSBzdGF0ZUNsYXNzW01FVEFfS0VZXSE7XG5cbiAgICAgIHRoaXMuYWRkUnVudGltZUluZm9Ub01ldGEobWV0YSwgcGF0aCk7XG5cbiAgICAgIC8vIE5vdGU6IHByZXZpb3VzbHkgd2UgY2FsbGVkIGBlbnN1cmVTdGF0ZUNsYXNzSXNJbmplY3RhYmxlYCB3aXRoaW4gdGhlXG4gICAgICAvLyBgU3RhdGVgIGRlY29yYXRvci4gVGhpcyBjaGVjayBpcyBtb3ZlZCBoZXJlIGJlY2F1c2UgdGhlIGDJtXByb3ZgIHByb3BlcnR5XG4gICAgICAvLyB3aWxsIG5vdCBleGlzdCBvbiB0aGUgY2xhc3MgaW4gSklUIG1vZGUgKGJlY2F1c2UgaXQncyBzZXQgYXN5bmNocm9ub3VzbHlcbiAgICAgIC8vIGR1cmluZyBKSVQgY29tcGlsYXRpb24gdGhyb3VnaCBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCkuXG4gICAgICBpZiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSB7XG4gICAgICAgIGVuc3VyZVN0YXRlQ2xhc3NJc0luamVjdGFibGUoc3RhdGVDbGFzcyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0YXRlTWFwOiBNYXBwZWRTdG9yZSA9IHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgaXNJbml0aWFsaXNlZDogZmFsc2UsXG4gICAgICAgIGFjdGlvbnM6IG1ldGEuYWN0aW9ucyxcbiAgICAgICAgaW5zdGFuY2U6IHRoaXMuX2luamVjdG9yLmdldChzdGF0ZUNsYXNzKSxcbiAgICAgICAgZGVmYXVsdHM6IFN0YXRlRmFjdG9yeS5jbG9uZURlZmF1bHRzKG1ldGEuZGVmYXVsdHMpXG4gICAgICB9O1xuXG4gICAgICAvLyBlbnN1cmUgb3VyIHN0b3JlIGhhc24ndCBhbHJlYWR5IGJlZW4gYWRkZWRcbiAgICAgIC8vIGJ1dCBkb24ndCB0aHJvdyBzaW5jZSBpdCBjb3VsZCBiZSBsYXp5XG4gICAgICAvLyBsb2FkZWQgZnJvbSBkaWZmZXJlbnQgcGF0aHNcbiAgICAgIGlmICghdGhpcy5oYXNCZWVuTW91bnRlZEFuZEJvb3RzdHJhcHBlZChuYW1lLCBwYXRoKSkge1xuICAgICAgICBib290c3RyYXBwZWRTdG9yZXMucHVzaChzdGF0ZU1hcCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc3RhdGVzLnB1c2goc3RhdGVNYXApO1xuICAgIH1cblxuICAgIHJldHVybiBib290c3RyYXBwZWRTdG9yZXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgc2V0IG9mIHN0YXRlcyB0byB0aGUgc3RvcmUgYW5kIHJldHVybiB0aGUgZGVmYXVsdHNcbiAgICovXG4gIGFkZEFuZFJldHVybkRlZmF1bHRzKHN0YXRlQ2xhc3NlczogU3RhdGVDbGFzc0ludGVybmFsW10pOiBTdGF0ZXNBbmREZWZhdWx0cyB7XG4gICAgY29uc3QgY2xhc3NlczogU3RhdGVDbGFzc0ludGVybmFsW10gPSBzdGF0ZUNsYXNzZXMgfHwgW107XG5cbiAgICBjb25zdCBtYXBwZWRTdG9yZXM6IE1hcHBlZFN0b3JlW10gPSB0aGlzLmFkZChjbGFzc2VzKTtcbiAgICBjb25zdCBkZWZhdWx0cyA9IG1hcHBlZFN0b3Jlcy5yZWR1Y2UoXG4gICAgICAocmVzdWx0OiBhbnksIG1hcHBlZFN0b3JlOiBNYXBwZWRTdG9yZSkgPT5cbiAgICAgICAgc2V0VmFsdWUocmVzdWx0LCBtYXBwZWRTdG9yZS5wYXRoLCBtYXBwZWRTdG9yZS5kZWZhdWx0cyksXG4gICAgICB7fVxuICAgICk7XG4gICAgcmV0dXJuIHsgZGVmYXVsdHMsIHN0YXRlczogbWFwcGVkU3RvcmVzIH07XG4gIH1cblxuICAvKipcbiAgICogQmluZCB0aGUgYWN0aW9ucyB0byB0aGUgaGFuZGxlcnNcbiAgICovXG4gIGNvbm5lY3RBY3Rpb25IYW5kbGVycygpIHtcbiAgICBpZiAodGhpcy5fYWN0aW9uc1N1YnNjcmlwdGlvbiAhPT0gbnVsbCkgcmV0dXJuO1xuICAgIGNvbnN0IGRpc3BhdGNoZWQkID0gbmV3IFN1YmplY3Q8QWN0aW9uQ29udGV4dD4oKTtcbiAgICB0aGlzLl9hY3Rpb25zU3Vic2NyaXB0aW9uID0gdGhpcy5fYWN0aW9uc1xuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoY3R4OiBBY3Rpb25Db250ZXh0KSA9PiBjdHguc3RhdHVzID09PSBBY3Rpb25TdGF0dXMuRGlzcGF0Y2hlZCksXG4gICAgICAgIG1lcmdlTWFwKGN0eCA9PiB7XG4gICAgICAgICAgZGlzcGF0Y2hlZCQubmV4dChjdHgpO1xuICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IGN0eC5hY3Rpb247XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW52b2tlQWN0aW9ucyhkaXNwYXRjaGVkJCwgYWN0aW9uISkucGlwZShcbiAgICAgICAgICAgIG1hcCgoKSA9PiA8QWN0aW9uQ29udGV4dD57IGFjdGlvbiwgc3RhdHVzOiBBY3Rpb25TdGF0dXMuU3VjY2Vzc2Z1bCB9KSxcbiAgICAgICAgICAgIGRlZmF1bHRJZkVtcHR5KDxBY3Rpb25Db250ZXh0PnsgYWN0aW9uLCBzdGF0dXM6IEFjdGlvblN0YXR1cy5DYW5jZWxlZCB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT5cbiAgICAgICAgICAgICAgb2YoPEFjdGlvbkNvbnRleHQ+eyBhY3Rpb24sIHN0YXR1czogQWN0aW9uU3RhdHVzLkVycm9yZWQsIGVycm9yIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoY3R4ID0+IHRoaXMuX2FjdGlvblJlc3VsdHMubmV4dChjdHgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnZva2UgYWN0aW9ucyBvbiB0aGUgc3RhdGVzLlxuICAgKi9cbiAgaW52b2tlQWN0aW9ucyhkaXNwYXRjaGVkJDogT2JzZXJ2YWJsZTxBY3Rpb25Db250ZXh0PiwgYWN0aW9uOiBhbnkpIHtcbiAgICBjb25zdCB0eXBlID0gZ2V0QWN0aW9uVHlwZUZyb21JbnN0YW5jZShhY3Rpb24pITtcbiAgICBjb25zdCByZXN1bHRzID0gW107XG5cbiAgICBmb3IgKGNvbnN0IG1ldGFkYXRhIG9mIHRoaXMuc3RhdGVzKSB7XG4gICAgICBjb25zdCBhY3Rpb25NZXRhcyA9IG1ldGFkYXRhLmFjdGlvbnNbdHlwZV07XG5cbiAgICAgIGlmIChhY3Rpb25NZXRhcykge1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGlvbk1ldGEgb2YgYWN0aW9uTWV0YXMpIHtcbiAgICAgICAgICBjb25zdCBzdGF0ZUNvbnRleHQgPSB0aGlzLl9zdGF0ZUNvbnRleHRGYWN0b3J5LmNyZWF0ZVN0YXRlQ29udGV4dChtZXRhZGF0YSk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBtZXRhZGF0YS5pbnN0YW5jZVthY3Rpb25NZXRhLmZuXShzdGF0ZUNvbnRleHQsIGFjdGlvbik7XG5cbiAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgIHJlc3VsdCA9IGZyb20ocmVzdWx0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShyZXN1bHQpKSB7XG4gICAgICAgICAgICAgIC8vIElmIHRoaXMgb2JzZXJ2YWJsZSBoYXMgYmVlbiBjb21wbGV0ZWQgdy9vIGVtaXR0aW5nXG4gICAgICAgICAgICAgIC8vIGFueSB2YWx1ZSB0aGVuIHdlIHdvdWxkbid0IHdhbnQgdG8gY29tcGxldGUgdGhlIHdob2xlIGNoYWluXG4gICAgICAgICAgICAgIC8vIG9mIGFjdGlvbnMuIFNpbmNlIGlmIGFueSBvYnNlcnZhYmxlIGNvbXBsZXRlcyB0aGVuXG4gICAgICAgICAgICAgIC8vIGFjdGlvbiB3aWxsIGJlIGNhbmNlbGVkLlxuICAgICAgICAgICAgICAvLyBGb3IgaW5zdGFuY2UgaWYgYW55IGFjdGlvbiBoYW5kbGVyIHdvdWxkJ3ZlIGhhZCBzdWNoIHN0YXRlbWVudDpcbiAgICAgICAgICAgICAgLy8gYGhhbmRsZXIoY3R4KSB7IHJldHVybiBFTVBUWTsgfWBcbiAgICAgICAgICAgICAgLy8gdGhlbiB0aGUgYWN0aW9uIHdpbGwgYmUgY2FuY2VsZWQuXG4gICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbmd4cy9zdG9yZS9pc3N1ZXMvMTU2OFxuICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucGlwZShcbiAgICAgICAgICAgICAgICBtZXJnZU1hcCgodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJvbSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpZiAoaXNPYnNlcnZhYmxlKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICByZXR1cm4gb2YodmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGRlZmF1bHRJZkVtcHR5KHt9KVxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIGlmIChhY3Rpb25NZXRhLm9wdGlvbnMuY2FuY2VsVW5jb21wbGV0ZWQpIHtcbiAgICAgICAgICAgICAgICAvLyB0b2RvOiBvZkFjdGlvbkRpc3BhdGNoZWQgc2hvdWxkIGJlIHVzZWQgd2l0aCBhY3Rpb24gY2xhc3NcbiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucGlwZShcbiAgICAgICAgICAgICAgICAgIHRha2VVbnRpbChkaXNwYXRjaGVkJC5waXBlKG9mQWN0aW9uRGlzcGF0Y2hlZChhY3Rpb24gYXMgYW55KSkpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzdWx0ID0gb2Yoe30pLnBpcGUoc2hhcmVSZXBsYXkoKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaCh0aHJvd0Vycm9yKGUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXJlc3VsdHMubGVuZ3RoKSB7XG4gICAgICByZXN1bHRzLnB1c2gob2Yoe30pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9ya0pvaW4ocmVzdWx0cyk7XG4gIH1cblxuICBwcml2YXRlIGFkZFRvU3RhdGVzTWFwKFxuICAgIHN0YXRlQ2xhc3NlczogU3RhdGVDbGFzc0ludGVybmFsW11cbiAgKTogeyBuZXdTdGF0ZXM6IFN0YXRlQ2xhc3NJbnRlcm5hbFtdIH0ge1xuICAgIGNvbnN0IG5ld1N0YXRlczogU3RhdGVDbGFzc0ludGVybmFsW10gPSBbXTtcbiAgICBjb25zdCBzdGF0ZXNNYXA6IFN0YXRlc0J5TmFtZSA9IHRoaXMuc3RhdGVzQnlOYW1lO1xuXG4gICAgZm9yIChjb25zdCBzdGF0ZUNsYXNzIG9mIHN0YXRlQ2xhc3Nlcykge1xuICAgICAgY29uc3Qgc3RhdGVOYW1lID0gZ2V0U3RvcmVNZXRhZGF0YShzdGF0ZUNsYXNzKS5uYW1lITtcbiAgICAgIC8vIENhcmV0YWtlciBub3RlOiB3ZSBoYXZlIHN0aWxsIGxlZnQgdGhlIGB0eXBlb2ZgIGNvbmRpdGlvbiBpbiBvcmRlciB0byBhdm9pZFxuICAgICAgLy8gY3JlYXRpbmcgYSBicmVha2luZyBjaGFuZ2UgZm9yIHByb2plY3RzIHRoYXQgc3RpbGwgdXNlIHRoZSBWaWV3IEVuZ2luZS5cbiAgICAgIGlmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpIHtcbiAgICAgICAgU3RvcmVWYWxpZGF0b3JzLmNoZWNrVGhhdFN0YXRlTmFtZUlzVW5pcXVlKHN0YXRlTmFtZSwgc3RhdGVDbGFzcywgc3RhdGVzTWFwKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHVubW91bnRlZFN0YXRlID0gIXN0YXRlc01hcFtzdGF0ZU5hbWVdO1xuICAgICAgaWYgKHVubW91bnRlZFN0YXRlKSB7XG4gICAgICAgIG5ld1N0YXRlcy5wdXNoKHN0YXRlQ2xhc3MpO1xuICAgICAgICBzdGF0ZXNNYXBbc3RhdGVOYW1lXSA9IHN0YXRlQ2xhc3M7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbmV3U3RhdGVzIH07XG4gIH1cblxuICBwcml2YXRlIGFkZFJ1bnRpbWVJbmZvVG9NZXRhKG1ldGE6IE1ldGFEYXRhTW9kZWwsIHBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVQYXRoc1ttZXRhLm5hbWUhXSA9IHBhdGg7XG4gICAgLy8gVE9ETzogdjQgLSB3ZSBwbGFuIHRvIGdldCByaWQgb2YgdGhlIHBhdGggcHJvcGVydHkgYmVjYXVzZSBpdCBpcyBub24tZGV0ZXJtaW5pc3RpY1xuICAgIC8vIHdlIGNhbiBkbyB0aGlzIHdoZW4gd2UgZ2V0IHJpZCBvZiB0aGUgaW5jb3JyZWN0bHkgZXhwb3NlZCBnZXRTdG9yZU1ldGFkYXRhXG4gICAgLy8gV2Ugd2lsbCBuZWVkIHRvIGNvbWUgdXAgd2l0aCBhbiBhbHRlcm5hdGl2ZSBpbiB2NCBiZWNhdXNlIHRoaXMgaXMgdXNlZCBieSBtYW55IHBsdWdpbnNcbiAgICBtZXRhLnBhdGggPSBwYXRoO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiB0aGUgbWV0aG9kIGNoZWNrcyBpZiB0aGUgc3RhdGUgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCB0byB0aGUgdHJlZVxuICAgKiBhbmQgY29tcGxldGVkIHRoZSBsaWZlIGN5Y2xlXG4gICAqIEBwYXJhbSBuYW1lXG4gICAqIEBwYXJhbSBwYXRoXG4gICAqL1xuICBwcml2YXRlIGhhc0JlZW5Nb3VudGVkQW5kQm9vdHN0cmFwcGVkKG5hbWU6IHN0cmluZywgcGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdmFsdWVJc0Jvb3RzdHJhcHBlZEluSW5pdGlhbFN0YXRlOiBib29sZWFuID1cbiAgICAgIGdldFZhbHVlKHRoaXMuX2luaXRpYWxTdGF0ZSwgcGF0aCkgIT09IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZXNCeU5hbWVbbmFtZV0gJiYgdmFsdWVJc0Jvb3RzdHJhcHBlZEluSW5pdGlhbFN0YXRlO1xuICB9XG59XG4iXX0=
|
|
599
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL3N0b3JlLyIsInNvdXJjZXMiOlsic3JjL2ludGVybmFsL3N0YXRlLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQ0wsUUFBUSxFQUNSLElBQUksRUFFSixFQUFFLEVBQ0YsVUFBVSxFQUVWLE9BQU8sRUFDUCxZQUFZLEVBQ2IsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsVUFBVSxFQUNWLGNBQWMsRUFDZCxNQUFNLEVBQ04sR0FBRyxFQUNILFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxFQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFpQixPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRixPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNsRCxPQUFPLEVBQ0wsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixRQUFRLEVBR1IsV0FBVyxFQUNYLFVBQVUsRUFLVixlQUFlLEVBR2YsZ0JBQWdCLEVBQ2pCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUErQixlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFF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RCxpREFpQ0c7Ozs7O0lBaEVELGlDQUEyQjs7Ozs7SUFDM0IsK0JBQTJCOzs7OztJQUMzQixzQ0FFb0M7Ozs7O0lBQ3BDLGdDQUFpQzs7Ozs7SUFDakMsc0NBQXVEOzs7OztJQUN2RCw0Q0FBaUQ7Ozs7O0lBQ2pELHFDQUUwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBPcHRpb25hbCwgU2tpcFNlbGYsIEluamVjdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBmb3JrSm9pbixcbiAgZnJvbSxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIHRocm93RXJyb3IsXG4gIFN1YnNjcmlwdGlvbixcbiAgU3ViamVjdCxcbiAgaXNPYnNlcnZhYmxlXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgY2F0Y2hFcnJvcixcbiAgZGVmYXVsdElmRW1wdHksXG4gIGZpbHRlcixcbiAgbWFwLFxuICBtZXJnZU1hcCxcbiAgc2hhcmVSZXBsYXksXG4gIHRha2VVbnRpbFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJTklUSUFMX1NUQVRFX1RPS0VOLCBQbGFpbk9iamVjdE9mLCBtZW1vaXplIH0gZnJvbSAnQG5neHMvc3RvcmUvaW50ZXJuYWxzJztcblxuaW1wb3J0IHsgTUVUQV9LRVksIE5neHNDb25maWcgfSBmcm9tICcuLi9zeW1ib2xzJztcbmltcG9ydCB7XG4gIGJ1aWxkR3JhcGgsXG4gIGZpbmRGdWxsUGFyZW50UGF0aCxcbiAgaXNPYmplY3QsXG4gIE1hcHBlZFN0b3JlLFxuICBNZXRhRGF0YU1vZGVsLFxuICBuYW1lVG9TdGF0ZSxcbiAgcHJvcEdldHRlcixcbiAgU3RhdGVDbGFzc0ludGVybmFsLFxuICBTdGF0ZUtleUdyYXBoLFxuICBTdGF0ZXNBbmREZWZhdWx0cyxcbiAgU3RhdGVzQnlOYW1lLFxuICB0b3BvbG9naWNhbFNvcnQsXG4gIFJ1bnRpbWVTZWxlY3RvckNvbnRleHQsXG4gIFNoYXJlZFNlbGVjdG9yT3B0aW9ucyxcbiAgZ2V0U3RvcmVNZXRhZGF0YVxufSBmcm9tICcuL2ludGVybmFscyc7XG5pbXBvcnQgeyBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlLCBnZXRWYWx1ZSwgc2V0VmFsdWUgfSBmcm9tICcuLi91dGlscy91dGlscyc7XG5pbXBvcnQgeyBvZkFjdGlvbkRpc3BhdGNoZWQgfSBmcm9tICcuLi9vcGVyYXRvcnMvb2YtYWN0aW9uJztcbmltcG9ydCB7IEFjdGlvbkNvbnRleHQsIEFjdGlvblN0YXR1cywgSW50ZXJuYWxBY3Rpb25zIH0gZnJvbSAnLi4vYWN0aW9ucy1zdHJlYW0nO1xuaW1wb3J0IHsgSW50ZXJuYWxEaXNwYXRjaGVkQWN0aW9uUmVzdWx0cyB9IGZyb20gJy4uL2ludGVybmFsL2Rpc3BhdGNoZXInO1xuaW1wb3J0IHsgU3RhdGVDb250ZXh0RmFjdG9yeSB9IGZyb20gJy4uL2ludGVybmFsL3N0YXRlLWNvbnRleHQtZmFjdG9yeSc7XG5pbXBvcnQgeyBTdG9yZVZhbGlkYXRvcnMgfSBmcm9tICcuLi91dGlscy9zdG9yZS12YWxpZGF0b3JzJztcbmltcG9ydCB7IGVuc3VyZVN0YXRlQ2xhc3NJc0luamVjdGFibGUgfSBmcm9tICcuLi9pdnkvaXZ5LWVuYWJsZWQtaW4tZGV2LW1vZGUnO1xuaW1wb3J0IHsgTmd4c1VuaGFuZGxlZEFjdGlvbnNMb2dnZXIgfSBmcm9tICcuLi9kZXYtZmVhdHVyZXMvbmd4cy11bmhhbmRsZWQtYWN0aW9ucy1sb2dnZXInO1xuXG4vKipcbiAqIFN0YXRlIGZhY3RvcnkgY2xhc3NcbiAqIEBpZ25vcmVcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN0YXRlRmFjdG9yeSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2FjdGlvbnNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIF9jb25maWc6IE5neHNDb25maWcsXG4gICAgQE9wdGlvbmFsKClcbiAgICBAU2tpcFNlbGYoKVxuICAgIHByaXZhdGUgX3BhcmVudEZhY3Rvcnk6IFN0YXRlRmFjdG9yeSxcbiAgICBwcml2YXRlIF9hY3Rpb25zOiBJbnRlcm5hbEFjdGlvbnMsXG4gICAgcHJpdmF0ZSBfYWN0aW9uUmVzdWx0czogSW50ZXJuYWxEaXNwYXRjaGVkQWN0aW9uUmVzdWx0cyxcbiAgICBwcml2YXRlIF9zdGF0ZUNvbnRleHRGYWN0b3J5OiBTdGF0ZUNvbnRleHRGYWN0b3J5LFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChJTklUSUFMX1NUQVRFX1RPS0VOKVxuICAgIHByaXZhdGUgX2luaXRpYWxTdGF0ZTogYW55XG4gICkge31cblxuICBwcml2YXRlIF9zdGF0ZXM6IE1hcHBlZFN0b3JlW10gPSBbXTtcblxuICBnZXQgc3RhdGVzKCk6IE1hcHBlZFN0b3JlW10ge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnRGYWN0b3J5ID8gdGhpcy5fcGFyZW50RmFjdG9yeS5zdGF0ZXMgOiB0aGlzLl9zdGF0ZXM7XG4gIH1cblxuICBwcml2YXRlIF9zdGF0ZXNCeU5hbWU6IFN0YXRlc0J5TmFtZSA9IHt9O1xuXG4gIGdldCBzdGF0ZXNCeU5hbWUoKTogU3RhdGVzQnlOYW1lIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50RmFjdG9yeSA/IHRoaXMuX3BhcmVudEZhY3Rvcnkuc3RhdGVzQnlOYW1lIDogdGhpcy5fc3RhdGVzQnlOYW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3RhdGVQYXRoczogUGxhaW5PYmplY3RPZjxzdHJpbmc+ID0ge307XG5cbiAgcHJpdmF0ZSBnZXQgc3RhdGVQYXRocygpOiBQbGFpbk9iamVjdE9mPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnRGYWN0b3J5ID8gdGhpcy5fcGFyZW50RmFjdG9yeS5zdGF0ZVBhdGhzIDogdGhpcy5fc3RhdGVQYXRocztcbiAgfVxuXG4gIGdldFJ1bnRpbWVTZWxlY3RvckNvbnRleHQgPSBtZW1vaXplKCgpID0+IHtcbiAgICBjb25zdCBzdGF0ZUZhY3RvcnkgPSB0aGlzO1xuXG4gICAgZnVuY3Rpb24gcmVzb2x2ZUdldHRlcihrZXk6IHN0cmluZykge1xuICAgICAgY29uc3QgcGF0aCA9IHN0YXRlRmFjdG9yeS5zdGF0ZVBhdGhzW2tleV07XG4gICAgICByZXR1cm4gcGF0aCA/IHByb3BHZXR0ZXIocGF0aC5zcGxpdCgnLicpLCBzdGF0ZUZhY3RvcnkuX2NvbmZpZykgOiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRleHQ6IFJ1bnRpbWVTZWxlY3RvckNvbnRleHQgPSB0aGlzLl9wYXJlbnRGYWN0b3J5XG4gICAgICA/IHRoaXMuX3BhcmVudEZhY3RvcnkuZ2V0UnVudGltZVNlbGVjdG9yQ29udGV4dCgpXG4gICAgICA6IHtcbiAgICAgICAgICBnZXRTdGF0ZUdldHRlcihrZXk6IHN0cmluZykge1xuICAgICAgICAgICAgbGV0IGdldHRlciA9IHJlc29sdmVHZXR0ZXIoa2V5KTtcbiAgICAgICAgICAgIGlmIChnZXR0ZXIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGdldHRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgICAvLyBMYXRlIGxvYWRlZCBnZXR0ZXJcbiAgICAgICAgICAgICAgaWYgKCFnZXR0ZXIpIHtcbiAgICAgICAgICAgICAgICBnZXR0ZXIgPSByZXNvbHZlR2V0dGVyKGtleSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGdldHRlciA/IGdldHRlciguLi5hcmdzKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXRTZWxlY3Rvck9wdGlvbnMobG9jYWxPcHRpb25zPzogU2hhcmVkU2VsZWN0b3JPcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxTZWxlY3Rvck9wdGlvbnMgPSBzdGF0ZUZhY3RvcnkuX2NvbmZpZy5zZWxlY3Rvck9wdGlvbnM7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5nbG9iYWxTZWxlY3Rvck9wdGlvbnMsXG4gICAgICAgICAgICAgIC4uLihsb2NhbE9wdGlvbnMgfHwge30pXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICByZXR1cm4gY29udGV4dDtcbiAgfSk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY2xvbmVEZWZhdWx0cyhkZWZhdWx0czogYW55KTogYW55IHtcbiAgICBsZXQgdmFsdWUgPSB7fTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGRlZmF1bHRzKSkge1xuICAgICAgdmFsdWUgPSBkZWZhdWx0cy5zbGljZSgpO1xuICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoZGVmYXVsdHMpKSB7XG4gICAgICB2YWx1ZSA9IHsgLi4uZGVmYXVsdHMgfTtcbiAgICB9IGVsc2UgaWYgKGRlZmF1bHRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhbHVlID0ge307XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gZGVmYXVsdHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gVGhpcyBpcyBiZWluZyBub24tbnVsbCBhc3NlcnRlZCBzaW5jZSBgX2FjdGlvbnNTdWJzY3JpdGlvbmAgaXNcbiAgICAvLyBpbml0aWFsaXplZCB3aXRoaW4gdGhlIGNvbnN0cnVjdG9yLlxuICAgIHRoaXMuX2FjdGlvbnNTdWJzY3JpcHRpb24hLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IHN0YXRlIHRvIHRoZSBnbG9iYWwgZGVmcy5cbiAgICovXG4gIGFkZChzdGF0ZUNsYXNzZXM6IFN0YXRlQ2xhc3NJbnRlcm5hbFtdKTogTWFwcGVkU3RvcmVbXSB7XG4gICAgLy8gQ2FyZXRha2VyIG5vdGU6IHdlIGhhdmUgc3RpbGwgbGVmdCB0aGUgYHR5cGVvZmAgY29uZGl0aW9uIGluIG9yZGVyIHRvIGF2b2lkXG4gICAgLy8gY3JlYXRpbmcgYSBicmVha2luZyBjaGFuZ2UgZm9yIHByb2plY3RzIHRoYXQgc3RpbGwgdXNlIHRoZSBWaWV3IEVuZ2luZS5cbiAgICBpZiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSB7XG4gICAgICBTdG9yZVZhbGlkYXRvcnMuY2hlY2tUaGF0U3RhdGVDbGFzc2VzSGF2ZUJlZW5EZWNvcmF0ZWQoc3RhdGVDbGFzc2VzKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IG5ld1N0YXRlcyB9ID0gdGhpcy5hZGRUb1N0YXRlc01hcChzdGF0ZUNsYXNzZXMpO1xuICAgIGlmICghbmV3U3RhdGVzLmxlbmd0aCkgcmV0dXJuIFtdO1xuXG4gICAgY29uc3Qgc3RhdGVHcmFwaDogU3RhdGVLZXlHcmFwaCA9IGJ1aWxkR3JhcGgobmV3U3RhdGVzKTtcbiAgICBjb25zdCBzb3J0ZWRTdGF0ZXM6IHN0cmluZ1tdID0gdG9wb2xvZ2ljYWxTb3J0KHN0YXRlR3JhcGgpO1xuICAgIGNvbnN0IHBhdGhzOiBQbGFpbk9iamVjdE9mPHN0cmluZz4gPSBmaW5kRnVsbFBhcmVudFBhdGgoc3RhdGVHcmFwaCk7XG4gICAgY29uc3QgbmFtZUdyYXBoOiBQbGFpbk9iamVjdE9mPFN0YXRlQ2xhc3NJbnRlcm5hbD4gPSBuYW1lVG9TdGF0ZShuZXdTdGF0ZXMpO1xuICAgIGNvbnN0IGJvb3RzdHJhcHBlZFN0b3JlczogTWFwcGVkU3RvcmVbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBuYW1lIG9mIHNvcnRlZFN0YXRlcykge1xuICAgICAgY29uc3Qgc3RhdGVDbGFzczogU3RhdGVDbGFzc0ludGVybmFsID0gbmFtZUdyYXBoW25hbWVdO1xuICAgICAgY29uc3QgcGF0aDogc3RyaW5nID0gcGF0aHNbbmFtZV07XG4gICAgICBjb25zdCBtZXRhOiBNZXRhRGF0YU1vZGVsID0gc3RhdGVDbGFzc1tNRVRBX0tFWV0hO1xuXG4gICAgICB0aGlzLmFkZFJ1bnRpbWVJbmZvVG9NZXRhKG1ldGEsIHBhdGgpO1xuXG4gICAgICAvLyBOb3RlOiBwcmV2aW91c2x5IHdlIGNhbGxlZCBgZW5zdXJlU3RhdGVDbGFzc0lzSW5qZWN0YWJsZWAgd2l0aGluIHRoZVxuICAgICAgLy8gYFN0YXRlYCBkZWNvcmF0b3IuIFRoaXMgY2hlY2sgaXMgbW92ZWQgaGVyZSBiZWNhdXNlIHRoZSBgybVwcm92YCBwcm9wZXJ0eVxuICAgICAgLy8gd2lsbCBub3QgZXhpc3Qgb24gdGhlIGNsYXNzIGluIEpJVCBtb2RlIChiZWNhdXNlIGl0J3Mgc2V0IGFzeW5jaHJvbm91c2x5XG4gICAgICAvLyBkdXJpbmcgSklUIGNvbXBpbGF0aW9uIHRocm91Z2ggYE9iamVjdC5kZWZpbmVQcm9wZXJ0eWApLlxuICAgICAgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkge1xuICAgICAgICBlbnN1cmVTdGF0ZUNsYXNzSXNJbmplY3RhYmxlKHN0YXRlQ2xhc3MpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdGF0ZU1hcDogTWFwcGVkU3RvcmUgPSB7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIGlzSW5pdGlhbGlzZWQ6IGZhbHNlLFxuICAgICAgICBhY3Rpb25zOiBtZXRhLmFjdGlvbnMsXG4gICAgICAgIGluc3RhbmNlOiB0aGlzLl9pbmplY3Rvci5nZXQoc3RhdGVDbGFzcyksXG4gICAgICAgIGRlZmF1bHRzOiBTdGF0ZUZhY3RvcnkuY2xvbmVEZWZhdWx0cyhtZXRhLmRlZmF1bHRzKVxuICAgICAgfTtcblxuICAgICAgLy8gZW5zdXJlIG91ciBzdG9yZSBoYXNuJ3QgYWxyZWFkeSBiZWVuIGFkZGVkXG4gICAgICAvLyBidXQgZG9uJ3QgdGhyb3cgc2luY2UgaXQgY291bGQgYmUgbGF6eVxuICAgICAgLy8gbG9hZGVkIGZyb20gZGlmZmVyZW50IHBhdGhzXG4gICAgICBpZiAoIXRoaXMuaGFzQmVlbk1vdW50ZWRBbmRCb290c3RyYXBwZWQobmFtZSwgcGF0aCkpIHtcbiAgICAgICAgYm9vdHN0cmFwcGVkU3RvcmVzLnB1c2goc3RhdGVNYXApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnN0YXRlcy5wdXNoKHN0YXRlTWFwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYm9vdHN0cmFwcGVkU3RvcmVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHNldCBvZiBzdGF0ZXMgdG8gdGhlIHN0b3JlIGFuZCByZXR1cm4gdGhlIGRlZmF1bHRzXG4gICAqL1xuICBhZGRBbmRSZXR1cm5EZWZhdWx0cyhzdGF0ZUNsYXNzZXM6IFN0YXRlQ2xhc3NJbnRlcm5hbFtdKTogU3RhdGVzQW5kRGVmYXVsdHMge1xuICAgIGNvbnN0IGNsYXNzZXM6IFN0YXRlQ2xhc3NJbnRlcm5hbFtdID0gc3RhdGVDbGFzc2VzIHx8IFtdO1xuXG4gICAgY29uc3QgbWFwcGVkU3RvcmVzOiBNYXBwZWRTdG9yZVtdID0gdGhpcy5hZGQoY2xhc3Nlcyk7XG4gICAgY29uc3QgZGVmYXVsdHMgPSBtYXBwZWRTdG9yZXMucmVkdWNlKFxuICAgICAgKHJlc3VsdDogYW55LCBtYXBwZWRTdG9yZTogTWFwcGVkU3RvcmUpID0+XG4gICAgICAgIHNldFZhbHVlKHJlc3VsdCwgbWFwcGVkU3RvcmUucGF0aCwgbWFwcGVkU3RvcmUuZGVmYXVsdHMpLFxuICAgICAge31cbiAgICApO1xuICAgIHJldHVybiB7IGRlZmF1bHRzLCBzdGF0ZXM6IG1hcHBlZFN0b3JlcyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmQgdGhlIGFjdGlvbnMgdG8gdGhlIGhhbmRsZXJzXG4gICAqL1xuICBjb25uZWN0QWN0aW9uSGFuZGxlcnMoKSB7XG4gICAgaWYgKHRoaXMuX2FjdGlvbnNTdWJzY3JpcHRpb24gIT09IG51bGwpIHJldHVybjtcbiAgICBjb25zdCBkaXNwYXRjaGVkJCA9IG5ldyBTdWJqZWN0PEFjdGlvbkNvbnRleHQ+KCk7XG4gICAgdGhpcy5fYWN0aW9uc1N1YnNjcmlwdGlvbiA9IHRoaXMuX2FjdGlvbnNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGN0eDogQWN0aW9uQ29udGV4dCkgPT4gY3R4LnN0YXR1cyA9PT0gQWN0aW9uU3RhdHVzLkRpc3BhdGNoZWQpLFxuICAgICAgICBtZXJnZU1hcChjdHggPT4ge1xuICAgICAgICAgIGRpc3BhdGNoZWQkLm5leHQoY3R4KTtcbiAgICAgICAgICBjb25zdCBhY3Rpb24gPSBjdHguYWN0aW9uO1xuICAgICAgICAgIHJldHVybiB0aGlzLmludm9rZUFjdGlvbnMoZGlzcGF0Y2hlZCQsIGFjdGlvbiEpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKCkgPT4gPEFjdGlvbkNvbnRleHQ+eyBhY3Rpb24sIHN0YXR1czogQWN0aW9uU3RhdHVzLlN1Y2Nlc3NmdWwgfSksXG4gICAgICAgICAgICBkZWZhdWx0SWZFbXB0eSg8QWN0aW9uQ29udGV4dD57IGFjdGlvbiwgc3RhdHVzOiBBY3Rpb25TdGF0dXMuQ2FuY2VsZWQgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+XG4gICAgICAgICAgICAgIG9mKDxBY3Rpb25Db250ZXh0PnsgYWN0aW9uLCBzdGF0dXM6IEFjdGlvblN0YXR1cy5FcnJvcmVkLCBlcnJvciB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGN0eCA9PiB0aGlzLl9hY3Rpb25SZXN1bHRzLm5leHQoY3R4KSk7XG4gIH1cblxuICAvKipcbiAgICogSW52b2tlIGFjdGlvbnMgb24gdGhlIHN0YXRlcy5cbiAgICovXG4gIGludm9rZUFjdGlvbnMoZGlzcGF0Y2hlZCQ6IE9ic2VydmFibGU8QWN0aW9uQ29udGV4dD4sIGFjdGlvbjogYW55KSB7XG4gICAgY29uc3QgdHlwZSA9IGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UoYWN0aW9uKSE7XG4gICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuXG4gICAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBkaXNwYXRjaGVkIGFjdGlvbiBoYXMgYmVlbiBoYW5kbGVkLCB0aGlzIGlzIGFzc2lnbmVkXG4gICAgLy8gdG8gYHRydWVgIHdpdGhpbiB0aGUgYmVsb3cgYGZvcmAgbG9vcCBpZiBhbnkgYGFjdGlvbk1ldGFzYCBoYXMgYmVlbiBmb3VuZC5cbiAgICBsZXQgYWN0aW9uSGFzQmVlbkhhbmRsZWQgPSBmYWxzZTtcblxuICAgIGZvciAoY29uc3QgbWV0YWRhdGEgb2YgdGhpcy5zdGF0ZXMpIHtcbiAgICAgIGNvbnN0IGFjdGlvbk1ldGFzID0gbWV0YWRhdGEuYWN0aW9uc1t0eXBlXTtcblxuICAgICAgaWYgKGFjdGlvbk1ldGFzKSB7XG4gICAgICAgIGZvciAoY29uc3QgYWN0aW9uTWV0YSBvZiBhY3Rpb25NZXRhcykge1xuICAgICAgICAgIGNvbnN0IHN0YXRlQ29udGV4dCA9IHRoaXMuX3N0YXRlQ29udGV4dEZhY3RvcnkuY3JlYXRlU3RhdGVDb250ZXh0KG1ldGFkYXRhKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IG1ldGFkYXRhLmluc3RhbmNlW2FjdGlvbk1ldGEuZm5dKHN0YXRlQ29udGV4dCwgYWN0aW9uKTtcblxuICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgcmVzdWx0ID0gZnJvbShyZXN1bHQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNPYnNlcnZhYmxlKHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgLy8gSWYgdGhpcyBvYnNlcnZhYmxlIGhhcyBiZWVuIGNvbXBsZXRlZCB3L28gZW1pdHRpbmdcbiAgICAgICAgICAgICAgLy8gYW55IHZhbHVlIHRoZW4gd2Ugd291bGRuJ3Qgd2FudCB0byBjb21wbGV0ZSB0aGUgd2hvbGUgY2hhaW5cbiAgICAgICAgICAgICAgLy8gb2YgYWN0aW9ucy4gU2luY2UgaWYgYW55IG9ic2VydmFibGUgY29tcGxldGVzIHRoZW5cbiAgICAgICAgICAgICAgLy8gYWN0aW9uIHdpbGwgYmUgY2FuY2VsZWQuXG4gICAgICAgICAgICAgIC8vIEZvciBpbnN0YW5jZSBpZiBhbnkgYWN0aW9uIGhhbmRsZXIgd291bGQndmUgaGFkIHN1Y2ggc3RhdGVtZW50OlxuICAgICAgICAgICAgICAvLyBgaGFuZGxlcihjdHgpIHsgcmV0dXJuIEVNUFRZOyB9YFxuICAgICAgICAgICAgICAvLyB0aGVuIHRoZSBhY3Rpb24gd2lsbCBiZSBjYW5jZWxlZC5cbiAgICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9uZ3hzL3N0b3JlL2lzc3Vlcy8xNTY4XG4gICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5waXBlKFxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmcm9tKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmIChpc09ic2VydmFibGUodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJldHVybiBvZih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZGVmYXVsdElmRW1wdHkoe30pXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgaWYgKGFjdGlvbk1ldGEub3B0aW9ucy5jYW5jZWxVbmNvbXBsZXRlZCkge1xuICAgICAgICAgICAgICAgIC8vIHRvZG86IG9mQWN0aW9uRGlzcGF0Y2hlZCBzaG91bGQgYmUgdXNlZCB3aXRoIGFjdGlvbiBjbGFzc1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5waXBlKFxuICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKGRpc3BhdGNoZWQkLnBpcGUob2ZBY3Rpb25EaXNwYXRjaGVkKGFjdGlvbiBhcyBhbnkpKSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHQgPSBvZih7fSkucGlwZShzaGFyZVJlcGxheSgpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHRocm93RXJyb3IoZSkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGFjdGlvbkhhc0JlZW5IYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoZSBgTmd4c1VuaGFuZGxlZEFjdGlvbnNMb2dnZXJgIGlzIGEgdHJlZS1zaGFrYWJsZSBjbGFzcyB3aGljaCBmdW5jdGlvbnNcbiAgICAvLyBvbmx5IGR1cmluZyBkZXZlbG9wbWVudC5cbiAgICBpZiAoKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkgJiYgIWFjdGlvbkhhc0JlZW5IYW5kbGVkKSB7XG4gICAgICBjb25zdCB1bmhhbmRsZWRBY3Rpb25zTG9nZ2VyID0gdGhpcy5faW5qZWN0b3IuZ2V0KE5neHNVbmhhbmRsZWRBY3Rpb25zTG9nZ2VyLCBudWxsKTtcbiAgICAgIC8vIFRoZSBgTmd4c1VuaGFuZGxlZEFjdGlvbnNMb2dnZXJgIHdpbGwgbm90IGJlIHJlc29sdmVkIGJ5IHRoZSBpbmplY3RvciBpZiB0aGVcbiAgICAgIC8vIGBOZ3hzRGV2ZWxvcG1lbnRNb2R1bGVgIGlzIG5vdCBwcm92aWRlZC4gSXQncyBlbm91Z2ggdG8gY2hlY2sgd2hldGhlciB0aGUgYGluamVjdG9yLmdldGBcbiAgICAgIC8vIGRpZG4ndCByZXR1cm4gYG51bGxgIHNvIHdlIG1heSBlbnN1cmUgdGhlIG1vZHVsZSBoYXMgYmVlbiBpbXBvcnRlZC5cbiAgICAgIGlmICh1bmhhbmRsZWRBY3Rpb25zTG9nZ2VyKSB7XG4gICAgICAgIHVuaGFuZGxlZEFjdGlvbnNMb2dnZXIud2FybihhY3Rpb24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcmVzdWx0cy5sZW5ndGgpIHtcbiAgICAgIHJlc3VsdHMucHVzaChvZih7fSkpO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JrSm9pbihyZXN1bHRzKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkVG9TdGF0ZXNNYXAoXG4gICAgc3RhdGVDbGFzc2VzOiBTdGF0ZUNsYXNzSW50ZXJuYWxbXVxuICApOiB7IG5ld1N0YXRlczogU3RhdGVDbGFzc0ludGVybmFsW10gfSB7XG4gICAgY29uc3QgbmV3U3RhdGVzOiBTdGF0ZUNsYXNzSW50ZXJuYWxbXSA9IFtdO1xuICAgIGNvbnN0IHN0YXRlc01hcDogU3RhdGVzQnlOYW1lID0gdGhpcy5zdGF0ZXNCeU5hbWU7XG5cbiAgICBmb3IgKGNvbnN0IHN0YXRlQ2xhc3Mgb2Ygc3RhdGVDbGFzc2VzKSB7XG4gICAgICBjb25zdCBzdGF0ZU5hbWUgPSBnZXRTdG9yZU1ldGFkYXRhKHN0YXRlQ2xhc3MpLm5hbWUhO1xuICAgICAgLy8gQ2FyZXRha2VyIG5vdGU6IHdlIGhhdmUgc3RpbGwgbGVmdCB0aGUgYHR5cGVvZmAgY29uZGl0aW9uIGluIG9yZGVyIHRvIGF2b2lkXG4gICAgICAvLyBjcmVhdGluZyBhIGJyZWFraW5nIGNoYW5nZSBmb3IgcHJvamVjdHMgdGhhdCBzdGlsbCB1c2UgdGhlIFZpZXcgRW5naW5lLlxuICAgICAgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkge1xuICAgICAgICBTdG9yZVZhbGlkYXRvcnMuY2hlY2tUaGF0U3RhdGVOYW1lSXNVbmlxdWUoc3RhdGVOYW1lLCBzdGF0ZUNsYXNzLCBzdGF0ZXNNYXApO1xuICAgICAgfVxuICAgICAgY29uc3QgdW5tb3VudGVkU3RhdGUgPSAhc3RhdGVzTWFwW3N0YXRlTmFtZV07XG4gICAgICBpZiAodW5tb3VudGVkU3RhdGUpIHtcbiAgICAgICAgbmV3U3RhdGVzLnB1c2goc3RhdGVDbGFzcyk7XG4gICAgICAgIHN0YXRlc01hcFtzdGF0ZU5hbWVdID0gc3RhdGVDbGFzcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBuZXdTdGF0ZXMgfTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkUnVudGltZUluZm9Ub01ldGEobWV0YTogTWV0YURhdGFNb2RlbCwgcGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZVBhdGhzW21ldGEubmFtZSFdID0gcGF0aDtcbiAgICAvLyBUT0RPOiB2NCAtIHdlIHBsYW4gdG8gZ2V0IHJpZCBvZiB0aGUgcGF0aCBwcm9wZXJ0eSBiZWNhdXNlIGl0IGlzIG5vbi1kZXRlcm1pbmlzdGljXG4gICAgLy8gd2UgY2FuIGRvIHRoaXMgd2hlbiB3ZSBnZXQgcmlkIG9mIHRoZSBpbmNvcnJlY3RseSBleHBvc2VkIGdldFN0b3JlTWV0YWRhdGFcbiAgICAvLyBXZSB3aWxsIG5lZWQgdG8gY29tZSB1cCB3aXRoIGFuIGFsdGVybmF0aXZlIGluIHY0IGJlY2F1c2UgdGhpcyBpcyB1c2VkIGJ5IG1hbnkgcGx1Z2luc1xuICAgIG1ldGEucGF0aCA9IHBhdGg7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIHRoZSBtZXRob2QgY2hlY2tzIGlmIHRoZSBzdGF0ZSBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIHRoZSB0cmVlXG4gICAqIGFuZCBjb21wbGV0ZWQgdGhlIGxpZmUgY3ljbGVcbiAgICogQHBhcmFtIG5hbWVcbiAgICogQHBhcmFtIHBhdGhcbiAgICovXG4gIHByaXZhdGUgaGFzQmVlbk1vdW50ZWRBbmRCb290c3RyYXBwZWQobmFtZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCB2YWx1ZUlzQm9vdHN0cmFwcGVkSW5Jbml0aWFsU3RhdGU6IGJvb2xlYW4gPVxuICAgICAgZ2V0VmFsdWUodGhpcy5faW5pdGlhbFN0YXRlLCBwYXRoKSAhPT0gdW5kZWZpbmVkO1xuICAgIHJldHVybiB0aGlzLnN0YXRlc0J5TmFtZVtuYW1lXSAmJiB2YWx1ZUlzQm9vdHN0cmFwcGVkSW5Jbml0aWFsU3RhdGU7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -31,4 +31,4 @@ export function simplePatch(val) {
|
|
|
31
31
|
return (/** @type {?} */ (newState));
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtb3BlcmF0b3JzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMvc3RvcmUvIiwic291cmNlcyI6WyJzcmMvaW50ZXJuYWwvc3RhdGUtb3BlcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QiwyQkFBMkIsRUFDNUIsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7O0FBR3BDLE1BQU0sVUFBVSxXQUFXLENBQUksR0FBZTtJQUM1Qzs7OztJQUFPLFVBQUMsYUFBK0I7UUFDckMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3RCLHVCQUF1QixFQUFFLENBQUM7U0FDM0I7YUFBTSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUNsQywyQkFBMkIsRUFBRSxDQUFDO1NBQy9COztZQUVLLFFBQVEsd0JBQWEsQ0FBQyxtQkFBQSxhQUFhLEVBQU8sQ0FBQyxDQUFFO1FBQ25ELEtBQUssSUFBTSxHQUFHLElBQUksR0FBRyxFQUFFO1lBQ3JCLHFDQUFxQztZQUNyQywyQ0FBMkM7WUFDM0MsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsbUJBQUEsR0FBRyxFQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNuQztRQUVELE9BQU8sbUJBQUEsUUFBUSxFQUFLLENBQUM7SUFDdkIsQ0FBQyxFQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHRocm93UGF0Y2hpbmdBcnJheUVycm9yLFxuICB0aHJvd1BhdGNoaW5nUHJpbWl0aXZlRXJyb3Jcbn0gZnJvbSAnLi4vY29uZmlncy9tZXNzYWdlcy5jb25maWcnO1xuaW1wb3J0IHsgRXhpc3RpbmdTdGF0ZSwgU3RhdGVPcGVyYXRvciB9IGZyb20gJ0BuZ3hzL3N0b3JlL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzaW1wbGVQYXRjaDxUPih2YWw6IFBhcnRpYWw8VD4pOiBTdGF0ZU9wZXJhdG9yPFQ+IHtcbiAgcmV0dXJuIChleGlzdGluZ1N0YXRlOiBFeGlzdGluZ1N0YXRlPFQ+KSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgICAgdGhyb3dQYXRjaGluZ0FycmF5RXJyb3IoKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvd1BhdGNoaW5nUHJpbWl0aXZlRXJyb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdTdGF0ZTogYW55ID0geyAuLi4oZXhpc3RpbmdTdGF0ZSBhcyBhbnkpIH07XG4gICAgZm9yIChjb25zdCBrZXkgaW4gdmFsKSB7XG4gICAgICAvLyBkZWVwIGNsb25lIGZvciBwYXRjaCBjb21wYXRpYmlsaXR5XG4gICAgICAvLyBub2luc3BlY3Rpb24gSlNVbmZpbHRlcmVkRm9ySW5Mb29wIChJREUpXG4gICAgICBuZXdTdGF0ZVtrZXldID0gKHZhbCBhcyBhbnkpW2tleV07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld1N0YXRlIGFzIFQ7XG4gIH07XG59XG4iXX0=
|
package/esm5/src/public_api.js
CHANGED
|
@@ -26,4 +26,6 @@ export { getActionTypeFromInstance, actionMatcher } from './utils/utils';
|
|
|
26
26
|
export { createSelector } from './utils/selector-utils';
|
|
27
27
|
export { NoopNgxsExecutionStrategy } from './execution/noop-ngxs-execution-strategy';
|
|
28
28
|
export { StateToken } from './state-token/state-token';
|
|
29
|
-
|
|
29
|
+
export { NgxsDevelopmentModule } from './dev-features/ngxs-development.module';
|
|
30
|
+
export { NgxsUnhandledActionsLogger } from './dev-features/ngxs-unhandled-actions-logger';
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL3N0b3JlLyIsInNvdXJjZXMiOlsic3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDaEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBK0IsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7OztBQVd4RSxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3ZCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUNMLFFBQVEsRUFDUixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsaUJBQWlCLEVBRWxCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQU9MLGdCQUFnQixFQUNqQixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHeEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDckYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgTmd4c01vZHVsZSB9IGZyb20gJy4vbW9kdWxlJztcbmV4cG9ydCB7IEFjdGlvbiB9IGZyb20gJy4vZGVjb3JhdG9ycy9hY3Rpb24nO1xuZXhwb3J0IHsgU3RvcmUgfSBmcm9tICcuL3N0b3JlJztcbmV4cG9ydCB7IFN0YXRlIH0gZnJvbSAnLi9kZWNvcmF0b3JzL3N0YXRlJztcbmV4cG9ydCB7IFNlbGVjdCB9IGZyb20gJy4vZGVjb3JhdG9ycy9zZWxlY3Qvc2VsZWN0JztcbmV4cG9ydCB7IFNlbGVjdG9yT3B0aW9ucyB9IGZyb20gJy4vZGVjb3JhdG9ycy9zZWxlY3Rvci1vcHRpb25zJztcbmV4cG9ydCB7IEFjdGlvbnMsIEFjdGlvbkNvbnRleHQsIEFjdGlvblN0YXR1cyB9IGZyb20gJy4vYWN0aW9ucy1zdHJlYW0nO1xuXG4vLyBUT0RPOiB2NCAtIFdlIG5lZWQgdG8gY29tZSB1cCB3aXRoIGFuIGFsdGVybmF0aXZlIGFwaSB0byBleHBvc2luZyB0aGlzIG1ldGFkYXRhXG4vLyAgIGJlY2F1c2UgaXQgaXMgY3VycmVudGx5IHVzZWQgYnkgdGhlIGZvbGxvd2luZyAoYWZ0ZXIgYSBnaXRodWIgc2VhcmNoKTpcbi8vIC0gaHR0cHM6Ly9naXRodWIuY29tL25neHMtbGFicy9lbWl0dGVyL2Jsb2IvODFkMjFkMTM1NDAwZDdlMzc2NWZjNTc5ZTA5YWVhMjliMWI5MmJmNy9lbWl0dGVyL3NyYy9saWIvY29yZS9kZWNvcmF0b3JzL3JlY2VpdmVyLnRzI0w5MVxuLy8gLSBodHRwczovL2dpdGh1Yi5jb20vbmd4cy1sYWJzL2RhdGEvYmxvYi83M2EzMjAwNTlmMjE5MjRlYjk3NWE4NmFkYWU1MTY5YTQwNDA3MWZkL3NyYy9saWIvZGVjb3JhdG9ycy9wZXJzaXN0ZW5jZS9wZXJzaXN0ZW5jZS50cyNMMTNcbi8vIC0gaHR0cHM6Ly9naXRodWIuY29tL25nLXR1cmtleS9uZ3hzLXJlc2V0LXBsdWdpbi9ibG9iLzBmMjJmMjJlMjc3YzdkZTViMzQwZDE5MTdhYWUzMDNkMDEwMjBjZWUvc3JjL2xpYi9yZXNldC5wbHVnaW4udHMjTDE5XG4vLyB0c2xpbnQ6ZGlzYWJsZTogbWF4LWxpbmUtbGVuZ3RoXG4vLyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9uZ3hzLWxhYnMvZmlyZWJhc2UtcGx1Z2luL2Jsb2IvNzI1MWQ4NzdhZWFkZWZlYThjM2M4OTFiN2I1NWU3NjUzYTlmMjg5Yy9zcmMvbGliL2RlY29yYXRvcnMvbmd4cy1maXJlc3RvcmUtY29ubmVjdC50cyNMMjNcbi8vIC0gaHR0cHM6Ly9naXRodWIuY29tL3N0ZWZhbi1zY2h1YmVydC9uZ3hzLWV4dGVuc2lvbnMvYmxvYi85MjJlZTJmODdlYmExNzgyM2I1ZWZhYjE0MmI2NTZiMGQyOWY4MjdkL3NyYy9saWIvY29yZS9kZWNvcmF0b3JzL3Jlc2V0LXN0YXRlLmRlY29yYXRvci50cyNMMThcbi8vIHRzbGludDplbmFibGU6IG1heC1saW5lLWxlbmd0aFxuZXhwb3J0IHtcbiAgZ2V0U2VsZWN0b3JNZXRhZGF0YSxcbiAgZ2V0U3RvcmVNZXRhZGF0YSxcbiAgZW5zdXJlU3RvcmVNZXRhZGF0YSxcbiAgZW5zdXJlU2VsZWN0b3JNZXRhZGF0YVxufSBmcm9tICcuL3B1YmxpY190b19kZXByZWNhdGUnO1xuZXhwb3J0IHtcbiAgb2ZBY3Rpb24sXG4gIG9mQWN0aW9uRGlzcGF0Y2hlZCxcbiAgb2ZBY3Rpb25TdWNjZXNzZnVsLFxuICBvZkFjdGlvbkNhbmNlbGVkLFxuICBvZkFjdGlvbkVycm9yZWQsXG4gIG9mQWN0aW9uQ29tcGxldGVkLFxuICBBY3Rpb25Db21wbGV0aW9uXG59IGZyb20gJy4vb3BlcmF0b3JzL29mLWFjdGlvbic7XG5leHBvcnQge1xuICBTdGF0ZUNvbnRleHQsXG4gIFN0YXRlT3BlcmF0b3IsXG4gIE5neHNPbkluaXQsXG4gIE5neHNBZnRlckJvb3RzdHJhcCxcbiAgTmd4c09uQ2hhbmdlcyxcbiAgTmd4c01vZHVsZU9wdGlvbnMsXG4gIE5neHNTaW1wbGVDaGFuZ2Vcbn0gZnJvbSAnLi9zeW1ib2xzJztcbmV4cG9ydCB7IFNlbGVjdG9yIH0gZnJvbSAnLi9kZWNvcmF0b3JzL3NlbGVjdG9yL3NlbGVjdG9yJztcbmV4cG9ydCB7IGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UsIGFjdGlvbk1hdGNoZXIgfSBmcm9tICcuL3V0aWxzL3V0aWxzJztcbmV4cG9ydCB7IGNyZWF0ZVNlbGVjdG9yIH0gZnJvbSAnLi91dGlscy9zZWxlY3Rvci11dGlscyc7XG5leHBvcnQgeyBOZ3hzRXhlY3V0aW9uU3RyYXRlZ3kgfSBmcm9tICcuL2V4ZWN1dGlvbi9zeW1ib2xzJztcbmV4cG9ydCB7IEFjdGlvblR5cGUsIEFjdGlvbk9wdGlvbnMgfSBmcm9tICcuL2FjdGlvbnMvc3ltYm9scyc7XG5leHBvcnQgeyBOb29wTmd4c0V4ZWN1dGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9leGVjdXRpb24vbm9vcC1uZ3hzLWV4ZWN1dGlvbi1zdHJhdGVneSc7XG5leHBvcnQgeyBTdGF0ZVRva2VuIH0gZnJvbSAnLi9zdGF0ZS10b2tlbi9zdGF0ZS10b2tlbic7XG5cbmV4cG9ydCB7IE5neHNEZXZlbG9wbWVudE9wdGlvbnMgfSBmcm9tICcuL2Rldi1mZWF0dXJlcy9zeW1ib2xzJztcbmV4cG9ydCB7IE5neHNEZXZlbG9wbWVudE1vZHVsZSB9IGZyb20gJy4vZGV2LWZlYXR1cmVzL25neHMtZGV2ZWxvcG1lbnQubW9kdWxlJztcbmV4cG9ydCB7IE5neHNVbmhhbmRsZWRBY3Rpb25zTG9nZ2VyIH0gZnJvbSAnLi9kZXYtZmVhdHVyZXMvbmd4cy11bmhhbmRsZWQtYWN0aW9ucy1sb2dnZXInO1xuIl19
|
package/esm5/src/symbols.js
CHANGED
|
@@ -227,4 +227,4 @@ if (false) {
|
|
|
227
227
|
*/
|
|
228
228
|
NgxsAfterBootstrap.prototype.ngxsAfterBootstrap = function (ctx) { };
|
|
229
229
|
}
|
|
230
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9scy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL3N0b3JlLyIsInNvdXJjZXMiOlsic3JjL3N5bWJvbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBTWpFLE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLDJEQUEyRCxDQUFDOztBQUtySCxNQUFNLEtBQU8sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQU0sa0JBQWtCLENBQUM7O0FBQzNFLE1BQU0sS0FBTyxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FBTSxxQkFBcUIsQ0FBQzs7QUFDakYsTUFBTSxLQUFPLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBQyxjQUFjLENBQUM7O0FBRTlELE1BQU0sS0FBTyxRQUFRLEdBQUcsV0FBVzs7QUFDbkMsTUFBTSxLQUFPLGdCQUFnQixHQUFHLG1CQUFtQjs7QUFDbkQsTUFBTSxLQUFPLGlCQUFpQixHQUFHLG9CQUFvQjs7OztBQVdyRDtJQStDRTs7Ozs7OztRQVRBLGtCQUFhLEdBQWdCLEVBQUUsQ0FBQzs7OztRQUloQyxvQkFBZSxHQUEwQjtZQUN2QyxvQkFBb0IsRUFBRSxJQUFJOztZQUMxQixjQUFjLEVBQUUsSUFBSSxDQUFDLGlEQUFpRDtTQUN2RSxDQUFDO1FBR0EsSUFBSSxDQUFDLGFBQWEsR0FBRztZQUNuQiwyQkFBMkIsRUFBRSxLQUFLO1NBQ25DLENBQUM7UUFDRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsd0NBQXdDLENBQUM7SUFDcEUsQ0FBQzs7Z0JBcERGLFVBQVU7Ozs7SUFxRFgsaUJBQUM7Q0FBQSxBQXJERCxJQXFEQztTQXBEWSxVQUFVOzs7Ozs7Ozs7Ozs7SUFVckIscUNBQXlCOztJQUN6QixtQ0FPRTs7Ozs7Ozs7Ozs7OztJQVlGLHVDQUErQzs7Ozs7Ozs7SUFPL0MsbUNBQWdDOzs7OztJQUloQyxxQ0FHRTs7Ozs7OztBQWVKLGtDQW9CQzs7Ozs7O0lBaEJDLGtEQUFjOzs7Ozs7SUFLZCxxREFBdUM7Ozs7OztJQUt2Qyx1REFBK0I7Ozs7OztJQUsvQix5REFBaUQ7Ozs7OztBQVFuRCxnQ0FLQzs7Ozs7Ozs7O0lBREMsaUVBQTZEOzs7Ozs7O0FBTS9ELGtDQWVDOzs7Ozs7SUFYQyw0QkFBNkI7Ozs7O0lBSzdCLGdDQUFhOzs7OztJQUtiLGdDQUF3Qjs7Ozs7OztBQU8xQjs7Ozs7O0lBQ0UsMEJBQ2tCLGFBQWdCLEVBQ2hCLFlBQWUsRUFDZixXQUFvQjtRQUZwQixrQkFBYSxHQUFiLGFBQWEsQ0FBRztRQUNoQixpQkFBWSxHQUFaLFlBQVksQ0FBRztRQUNmLGdCQUFXLEdBQVgsV0FBVyxDQUFTO0lBQ25DLENBQUM7SUFDTix1QkFBQztBQUFELENBQUMsQUFORCxJQU1DOzs7Ozs7Ozs7SUFKRyx5Q0FBZ0M7O0lBQ2hDLHdDQUErQjs7SUFDL0IsdUNBQW9DOzs7Ozs7QUFPeEMsZ0NBRUM7Ozs7OztJQURDLHFEQUF5Qzs7Ozs7O0FBTTNDLG1DQUVDOzs7Ozs7SUFEQyw4REFBOEM7Ozs7OztBQU1oRCx3Q0FFQzs7Ozs7O0lBREMscUVBQWlEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUGxhaW5PYmplY3QsIFN0YXRlQ2xhc3MgfSBmcm9tICdAbmd4cy9zdG9yZS9pbnRlcm5hbHMnO1xuaW1wb3J0IHsgU3RhdGVPcGVyYXRvciB9IGZyb20gJ0BuZ3hzL3N0b3JlL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IERpc3BhdGNoT3V0c2lkZVpvbmVOZ3hzRXhlY3V0aW9uU3RyYXRlZ3kgfSBmcm9tICcuL2V4ZWN1dGlvbi9kaXNwYXRjaC1vdXRzaWRlLXpvbmUtbmd4cy1leGVjdXRpb24tc3RyYXRlZ3knO1xuaW1wb3J0IHsgTmd4c0V4ZWN1dGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9leGVjdXRpb24vc3ltYm9scyc7XG5pbXBvcnQgeyBTaGFyZWRTZWxlY3Rvck9wdGlvbnMgfSBmcm9tICcuL2ludGVybmFsL2ludGVybmFscyc7XG5pbXBvcnQgeyBTdGF0ZVRva2VuIH0gZnJvbSAnLi9zdGF0ZS10b2tlbi9zdGF0ZS10b2tlbic7XG5cbmV4cG9ydCBjb25zdCBST09UX1NUQVRFX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oJ1JPT1RfU1RBVEVfVE9LRU4nKTtcbmV4cG9ydCBjb25zdCBGRUFUVVJFX1NUQVRFX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oJ0ZFQVRVUkVfU1RBVEVfVE9LRU4nKTtcbmV4cG9ydCBjb25zdCBOR1hTX1BMVUdJTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ05HWFNfUExVR0lOUycpO1xuXG5leHBvcnQgY29uc3QgTUVUQV9LRVkgPSAnTkdYU19NRVRBJztcbmV4cG9ydCBjb25zdCBNRVRBX09QVElPTlNfS0VZID0gJ05HWFNfT1BUSU9OU19NRVRBJztcbmV4cG9ydCBjb25zdCBTRUxFQ1RPUl9NRVRBX0tFWSA9ICdOR1hTX1NFTEVDVE9SX01FVEEnO1xuXG5leHBvcnQgdHlwZSBOZ3hzTGlmZUN5Y2xlID0gUGFydGlhbDxOZ3hzT25DaGFuZ2VzPiAmXG4gIFBhcnRpYWw8Tmd4c09uSW5pdD4gJlxuICBQYXJ0aWFsPE5neHNBZnRlckJvb3RzdHJhcD47XG5cbmV4cG9ydCB0eXBlIE5neHNQbHVnaW5GbiA9IChzdGF0ZTogYW55LCBtdXRhdGlvbjogYW55LCBuZXh0OiBOZ3hzTmV4dFBsdWdpbkZuKSA9PiBhbnk7XG5cbi8qKlxuICogVGhlIE5HWFMgY29uZmlnIHNldHRpbmdzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmd4c0NvbmZpZyB7XG4gIC8qKlxuICAgKiBSdW4gaW4gZGV2ZWxvcG1lbnQgbW9kZS4gVGhpcyB3aWxsIGFkZCBhZGRpdGlvbmFsIGRlYnVnZ2luZyBmZWF0dXJlczpcbiAgICogLSBPYmplY3QuZnJlZXplIG9uIHRoZSBzdGF0ZSBhbmQgYWN0aW9ucyB0byBndWFyYW50ZWUgaW1tdXRhYmlsaXR5XG4gICAqIChkZWZhdWx0OiBmYWxzZSlcbiAgICpcbiAgICogTm90ZTogdGhpcyBwcm9wZXJ0eSB3aWxsIGJlIGFjY291bnRlZCBvbmx5IGluIGRldmVsb3BtZW50IG1vZGUgd2hlbiB1c2luZyB0aGUgSXZ5IGNvbXBpbGVyLlxuICAgKiBJdCBtYWtlcyBzZW5zZSB0byB1c2UgaXQgb25seSBkdXJpbmcgZGV2ZWxvcG1lbnQgdG8gZW5zdXJlIHRoZXJlJ3JlIG5vIHN0YXRlIG11dGF0aW9ucy5cbiAgICogV2hlbiBidWlsZGluZyBmb3IgcHJvZHVjdGlvbiwgdGhlIE9iamVjdC5mcmVlemUgd2lsbCBiZSB0cmVlLXNoYWtlbiBhd2F5LlxuICAgKi9cbiAgZGV2ZWxvcG1lbnRNb2RlOiBib29sZWFuO1xuICBjb21wYXRpYmlsaXR5OiB7XG4gICAgLyoqXG4gICAgICogU3VwcG9ydCBhIHN0cmljdCBDb250ZW50IFNlY3VyaXR5IFBvbGljeS5cbiAgICAgKiBUaGlzIHdpbGwgY2lyY3VtdmVudCBzb21lIG9wdGltaXNhdGlvbnMgdGhhdCB2aW9sYXRlIGEgc3RyaWN0IENTUCB0aHJvdWdoIHRoZSB1c2Ugb2YgYG5ldyBGdW5jdGlvbiguLi4pYC5cbiAgICAgKiAoZGVmYXVsdDogZmFsc2UpXG4gICAgICovXG4gICAgc3RyaWN0Q29udGVudFNlY3VyaXR5UG9saWN5OiBib29sZWFuO1xuICB9O1xuICAvKipcbiAgICogRGV0ZXJtaW5lcyB0aGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gcGVyZm9ybSBhc3luYyBvcGVyYXRpb25zIGluc2lkZS4gQW4gaW1wbGVtZW50YXRpb24gY2FuIGJlXG4gICAqIHByb3ZpZGVkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW91ciB3aGVyZSB0aGUgYXN5bmMgb3BlcmF0aW9ucyBhcmUgcnVuXG4gICAqIG91dHNpZGUgQW5ndWxhcidzIHpvbmUgYnV0IGFsbCBvYnNlcnZhYmxlIGJlaGF2aW91cnMgb2YgTkdYUyBhcmUgcnVuIGJhY2sgaW5zaWRlIEFuZ3VsYXIncyB6b25lLlxuICAgKiBUaGVzZSBvYnNlcnZhYmxlIGJlaGF2aW91cnMgYXJlIGZyb206XG4gICAqICAgYEBTZWxlY3QoLi4uKWAsIGBzdG9yZS5zZWxlY3QoLi4uKWAsIGBhY3Rpb25zLnN1YnNjcmliZSguLi4pYCBvciBgc3RvcmUuZGlzcGF0Y2goLi4uKS5zdWJzY3JpYmUoLi4uKWBcbiAgICogRXZlcnkgYHpvbmUucnVuYCBjYXVzZXMgQW5ndWxhciB0byBydW4gY2hhbmdlIGRldGVjdGlvbiBvbiB0aGUgd2hvbGUgdHJlZSAoYGFwcC50aWNrKClgKSBzbyBvZiB5b3VyXG4gICAqIGFwcGxpY2F0aW9uIGRvZXNuJ3QgcmVseSBvbiB6b25lLmpzIHJ1bm5pbmcgY2hhbmdlIGRldGVjdGlvbiB0aGVuIHlvdSBjYW4gc3dpdGNoIHRvIHRoZVxuICAgKiBgTm9vcE5neHNFeGVjdXRpb25TdHJhdGVneWAgdGhhdCBkb2Vzbid0IGludGVyYWN0IHdpdGggem9uZXMuXG4gICAqIChkZWZhdWx0OiBudWxsKVxuICAgKi9cbiAgZXhlY3V0aW9uU3RyYXRlZ3k6IFR5cGU8Tmd4c0V4ZWN1dGlvblN0cmF0ZWd5PjtcbiAgLyoqXG4gICAqIERlZmluaW5nIHRoZSBkZWZhdWx0IHN0YXRlIGJlZm9yZSBtb2R1bGUgaW5pdGlhbGl6YXRpb25cbiAgICogVGhpcyBpcyBjb252ZW5pZW50IGlmIHdlIG5lZWQgdG8gY3JlYXRlIGEgZGVmaW5lIG91ciBvd24gc2V0IG9mIHN0YXRlcy5cbiAgICogQGRlcHJlY2F0ZWQgd2lsbCBiZSByZW1vdmVkIGFmdGVyIHY0XG4gICAqIChkZWZhdWx0OiB7fSlcbiAgICovXG4gIGRlZmF1bHRzU3RhdGU6IFBsYWluT2JqZWN0ID0ge307XG4gIC8qKlxuICAgKiBEZWZpbmluZyBzaGFyZWQgc2VsZWN0b3Igb3B0aW9uc1xuICAgKi9cbiAgc2VsZWN0b3JPcHRpb25zOiBTaGFyZWRTZWxlY3Rvck9wdGlvbnMgPSB7XG4gICAgaW5qZWN0Q29udGFpbmVyU3RhdGU6IHRydWUsIC8vIFRPRE86IGRlZmF1bHQgaXMgdHJ1ZSBpbiB2Mywgd2lsbCBjaGFuZ2UgaW4gdjRcbiAgICBzdXBwcmVzc0Vycm9yczogdHJ1ZSAvLyBUT0RPOiBkZWZhdWx0IGlzIHRydWUgaW4gdjMsIHdpbGwgY2hhbmdlIGluIHY0XG4gIH07XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jb21wYXRpYmlsaXR5ID0ge1xuICAgICAgc3RyaWN0Q29udGVudFNlY3VyaXR5UG9saWN5OiBmYWxzZVxuICAgIH07XG4gICAgdGhpcy5leGVjdXRpb25TdHJhdGVneSA9IERpc3BhdGNoT3V0c2lkZVpvbmVOZ3hzRXhlY3V0aW9uU3RyYXRlZ3k7XG4gIH1cbn1cblxuZXhwb3J0IHsgU3RhdGVPcGVyYXRvciB9O1xuXG4vKipcbiAqIFN0YXRlIGNvbnRleHQgcHJvdmlkZWQgdG8gdGhlIGFjdGlvbnMgaW4gdGhlIHN0YXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRlQ29udGV4dDxUPiB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgc3RhdGUuXG4gICAqL1xuICBnZXRTdGF0ZSgpOiBUO1xuXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgc3RhdGUgdG8gYSBuZXcgdmFsdWUuXG4gICAqL1xuICBzZXRTdGF0ZSh2YWw6IFQgfCBTdGF0ZU9wZXJhdG9yPFQ+KTogVDtcblxuICAvKipcbiAgICogUGF0Y2ggdGhlIGV4aXN0aW5nIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHZhbHVlLlxuICAgKi9cbiAgcGF0Y2hTdGF0ZSh2YWw6IFBhcnRpYWw8VD4pOiBUO1xuXG4gIC8qKlxuICAgKiBEaXNwYXRjaCBhIG5ldyBhY3Rpb24gYW5kIHJldHVybiB0aGUgZGlzcGF0Y2hlZCBvYnNlcnZhYmxlLlxuICAgKi9cbiAgZGlzcGF0Y2goYWN0aW9uczogYW55IHwgYW55W10pOiBPYnNlcnZhYmxlPHZvaWQ+O1xufVxuXG5leHBvcnQgdHlwZSBOZ3hzTmV4dFBsdWdpbkZuID0gKHN0YXRlOiBhbnksIG11dGF0aW9uOiBhbnkpID0+IGFueTtcblxuLyoqXG4gKiBQbHVnaW4gaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmd4c1BsdWdpbiB7XG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHN0YXRlL2FjdGlvbiBiZWZvcmUgaXRzIHN1Ym1pdHRlZCB0byB0aGUgc3RhdGUgaGFuZGxlcnMuXG4gICAqL1xuICBoYW5kbGUoc3RhdGU6IGFueSwgYWN0aW9uOiBhbnksIG5leHQ6IE5neHNOZXh0UGx1Z2luRm4pOiBhbnk7XG59XG5cbi8qKlxuICogT3B0aW9ucyB0aGF0IGNhbiBiZSBwcm92aWRlZCB0byB0aGUgc3RvcmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmVPcHRpb25zPFQ+IHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHN0YXRlLiBSZXF1aXJlZC5cbiAgICovXG4gIG5hbWU6IHN0cmluZyB8IFN0YXRlVG9rZW48VD47XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgdmFsdWVzIGZvciB0aGUgc3RhdGUuIElmIG5vdCBwcm92aWRlZCwgdXNlcyBlbXB0eSBvYmplY3QuXG4gICAqL1xuICBkZWZhdWx0cz86IFQ7XG5cbiAgLyoqXG4gICAqIFN1YiBzdGF0ZXMgZm9yIHRoZSBnaXZlbiBzdGF0ZS5cbiAgICovXG4gIGNoaWxkcmVuPzogU3RhdGVDbGFzc1tdO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBiYXNpYyBjaGFuZ2UgZnJvbSBhIHByZXZpb3VzIHRvIGEgbmV3IHZhbHVlIGZvciBhIHNpbmdsZSBzdGF0ZSBpbnN0YW5jZS5cbiAqIFBhc3NlZCBhcyBhIHZhbHVlIGluIGEgTmd4c1NpbXBsZUNoYW5nZXMgb2JqZWN0IHRvIHRoZSBuZ3hzT25DaGFuZ2VzIGhvb2suXG4gKi9cbmV4cG9ydCBjbGFzcyBOZ3hzU2ltcGxlQ2hhbmdlPFQgPSBhbnk+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHByZXZpb3VzVmFsdWU6IFQsXG4gICAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRWYWx1ZTogVCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgZmlyc3RDaGFuZ2U6IGJvb2xlYW5cbiAgKSB7fVxufVxuXG4vKipcbiAqIE9uIGluaXQgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmd4c09uSW5pdCB7XG4gIG5neHNPbkluaXQoY3R4OiBTdGF0ZUNvbnRleHQ8YW55Pik6IHZvaWQ7XG59XG5cbi8qKlxuICogT24gY2hhbmdlIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5neHNPbkNoYW5nZXMge1xuICBuZ3hzT25DaGFuZ2VzKGNoYW5nZTogTmd4c1NpbXBsZUNoYW5nZSk6IHZvaWQ7XG59XG5cbi8qKlxuICogQWZ0ZXIgYm9vdHN0cmFwIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5neHNBZnRlckJvb3RzdHJhcCB7XG4gIG5neHNBZnRlckJvb3RzdHJhcChjdHg6IFN0YXRlQ29udGV4dDxhbnk+KTogdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgTmd4c01vZHVsZU9wdGlvbnMgPSBQYXJ0aWFsPE5neHNDb25maWc+O1xuXG4vKiogQGludGVybmFsICovXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGNvbnN0IG5nRGV2TW9kZTogYm9vbGVhbjtcbn1cbiJdfQ==
|
|
@@ -18,7 +18,7 @@ function append(items) {
|
|
|
18
18
|
/** @type {?} */
|
|
19
19
|
const itemsNotProvidedButExistingIs = (!items || !items.length) && existing;
|
|
20
20
|
if (itemsNotProvidedButExistingIs) {
|
|
21
|
-
return (/** @type {?} */ (existing));
|
|
21
|
+
return (/** @type {?} */ (((/** @type {?} */ (existing)))));
|
|
22
22
|
}
|
|
23
23
|
if (Array.isArray(existing)) {
|
|
24
24
|
return existing.concat((/** @type {?} */ (((/** @type {?} */ (items))))));
|
|
@@ -49,7 +49,7 @@ function compose(...operators) {
|
|
|
49
49
|
* @param {?} operator
|
|
50
50
|
* @return {?}
|
|
51
51
|
*/
|
|
52
|
-
(accumulator, operator) => operator(accumulator)), existing);
|
|
52
|
+
(accumulator, operator) => operator((/** @type {?} */ (accumulator)))), (/** @type {?} */ (existing)));
|
|
53
53
|
});
|
|
54
54
|
}
|
|
55
55
|
|
|
@@ -110,7 +110,7 @@ function isNil(value) {
|
|
|
110
110
|
/**
|
|
111
111
|
* @template T
|
|
112
112
|
* @param {?} operatorOrValue
|
|
113
|
-
* @param {
|
|
113
|
+
* @param {?} existing
|
|
114
114
|
* @return {?}
|
|
115
115
|
*/
|
|
116
116
|
function retrieveValue(operatorOrValue, existing) {
|
|
@@ -118,14 +118,14 @@ function retrieveValue(operatorOrValue, existing) {
|
|
|
118
118
|
// then call it with an original value
|
|
119
119
|
if (isStateOperator(operatorOrValue)) {
|
|
120
120
|
/** @type {?} */
|
|
121
|
-
const value = operatorOrValue(
|
|
121
|
+
const value = operatorOrValue(existing);
|
|
122
122
|
return (/** @type {?} */ (value));
|
|
123
123
|
}
|
|
124
124
|
// If operator or value was not provided
|
|
125
125
|
// e.g. `elseOperatorOrValue` is `undefined`
|
|
126
126
|
// then we just return an original value
|
|
127
127
|
if (isUndefined(operatorOrValue)) {
|
|
128
|
-
return (/** @type {?} */ (
|
|
128
|
+
return (/** @type {?} */ (existing));
|
|
129
129
|
}
|
|
130
130
|
return (/** @type {?} */ (operatorOrValue));
|
|
131
131
|
}
|
|
@@ -149,12 +149,12 @@ function iif(condition, trueOperatorOrValue, elseOperatorOrValue) {
|
|
|
149
149
|
let result = !!condition;
|
|
150
150
|
// but if it is a function then run it to get the result
|
|
151
151
|
if (isPredicate(condition)) {
|
|
152
|
-
result = condition(existing);
|
|
152
|
+
result = condition((/** @type {?} */ (existing)));
|
|
153
153
|
}
|
|
154
154
|
if (result) {
|
|
155
|
-
return retrieveValue(
|
|
155
|
+
return retrieveValue((/** @type {?} */ (trueOperatorOrValue)), existing);
|
|
156
156
|
}
|
|
157
|
-
return retrieveValue((/** @type {?} */ (
|
|
157
|
+
return retrieveValue((/** @type {?} */ ((/** @type {?} */ (elseOperatorOrValue)))), existing);
|
|
158
158
|
});
|
|
159
159
|
}
|
|
160
160
|
|
|
@@ -208,7 +208,7 @@ function insertItem(value, beforePosition) {
|
|
|
208
208
|
* @return {?}
|
|
209
209
|
*/
|
|
210
210
|
function patch(patchObject) {
|
|
211
|
-
return (/**
|
|
211
|
+
return (/**
|
|
212
212
|
* @param {?} existing
|
|
213
213
|
* @return {?}
|
|
214
214
|
*/
|
|
@@ -219,7 +219,7 @@ function patch(patchObject) {
|
|
|
219
219
|
/** @type {?} */
|
|
220
220
|
const newValue = patchObject[k];
|
|
221
221
|
/** @type {?} */
|
|
222
|
-
const existingPropValue = existing[
|
|
222
|
+
const existingPropValue = existing[k];
|
|
223
223
|
/** @type {?} */
|
|
224
224
|
const newPropValue = isStateOperator(newValue)
|
|
225
225
|
? newValue((/** @type {?} */ (existingPropValue)))
|
|
@@ -232,7 +232,7 @@ function patch(patchObject) {
|
|
|
232
232
|
}
|
|
233
233
|
}
|
|
234
234
|
return clone || existing;
|
|
235
|
-
})
|
|
235
|
+
});
|
|
236
236
|
}
|
|
237
237
|
|
|
238
238
|
/**
|