@ngrx/store-devtools 6.0.1 → 7.0.0-beta.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/bundles/store-devtools.umd.js +807 -604
- package/bundles/store-devtools.umd.js.map +1 -1
- package/bundles/store-devtools.umd.min.js +2 -2
- package/bundles/store-devtools.umd.min.js.map +1 -1
- package/esm2015/index.js +3 -3
- package/esm2015/public_api.js +3 -3
- package/esm2015/src/actions.js +72 -24
- package/esm2015/src/config.js +89 -5
- package/esm2015/src/devtools-dispatcher.js +13 -0
- package/esm2015/src/devtools.js +56 -45
- package/esm2015/src/extension.js +96 -78
- package/esm2015/src/index.js +3 -2
- package/esm2015/src/instrument.js +9 -48
- package/esm2015/src/reducer.js +190 -106
- package/esm2015/src/utils.js +56 -3
- package/esm2015/store-devtools.js +5 -5
- package/esm5/index.js +1 -1
- package/esm5/src/actions.js +19 -1
- package/esm5/src/config.js +40 -1
- package/esm5/src/devtools-dispatcher.js +34 -0
- package/esm5/src/devtools.js +39 -38
- package/esm5/src/extension.js +69 -32
- package/esm5/src/index.js +2 -1
- package/esm5/src/instrument.js +16 -33
- package/esm5/src/reducer.js +259 -194
- package/esm5/src/utils.js +50 -14
- package/esm5/store-devtools.js +5 -5
- package/fesm2015/store-devtools.js +425 -201
- package/fesm2015/store-devtools.js.map +1 -1
- package/fesm5/store-devtools.js +509 -307
- package/fesm5/store-devtools.js.map +1 -1
- package/migrations/6_0_0/index.js +3 -3
- package/package.json +4 -3
- package/schematics/collection.json +10 -0
- package/schematics/ng-add/index.d.ts +4 -0
- package/schematics/ng-add/index.js +119 -0
- package/schematics/ng-add/schema.d.ts +8 -0
- package/schematics/ng-add/schema.js +13 -0
- package/schematics/ng-add/schema.json +34 -0
- package/schematics-core/index.d.ts +6 -6
- package/schematics-core/index.js +5 -3
- package/schematics-core/utility/ast-utils.js +13 -11
- package/schematics-core/utility/change.js +1 -1
- package/schematics-core/utility/config.js +1 -1
- package/schematics-core/utility/find-module.js +2 -2
- package/schematics-core/utility/ngrx-utils.d.ts +1 -1
- package/schematics-core/utility/ngrx-utils.js +12 -12
- package/schematics-core/utility/package.js +1 -1
- package/schematics-core/utility/parse-name.js +1 -1
- package/schematics-core/utility/project.d.ts +12 -0
- package/schematics-core/utility/project.js +12 -3
- package/schematics-core/utility/route-utils.js +1 -1
- package/schematics-core/utility/strings.js +1 -1
- package/schematics-core/utility/update.js +1 -1
- package/src/actions.d.ts +24 -12
- package/src/config.d.ts +15 -1
- package/src/devtools-dispatcher.d.ts +3 -0
- package/src/devtools.d.ts +3 -2
- package/src/extension.d.ts +10 -10
- package/src/index.d.ts +1 -1
- package/src/instrument.d.ts +1 -4
- package/src/reducer.d.ts +8 -2
- package/src/utils.d.ts +13 -1
- package/store-devtools.d.ts +4 -4
- package/store-devtools.metadata.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-devtools.js","sources":["../../../../../../../../../../execroot/ngrx/bazel-out/darwin-fastbuild/bin/modules/store-devtools/npm_package.es6/modules/store-devtools/src/config.js","../../../../../../../../../../execroot/ngrx/bazel-out/darwin-fastbuild/bin/modules/store-devtools/npm_package.es6/modules/store-devtools/src/actions.js","../../../../../../../../../../execroot/ngrx/bazel-out/darwin-fastbuild/bin/modules/store-devtools/npm_package.es6/modules/store-devtools/src/utils.js","../../../../../../../../../../execroot/ngrx/bazel-out/darwin-fastbuild/bin/modules/store-devtools/npm_package.es6/modules/store-devtools/src/extension.js","../../../../../../../../../../execroot/ngrx/bazel-out/darwin-fastbuild/bin/modules/store-devtools/npm_package.es6/modules/store-devtools/src/reducer.js","../../../../../../../../../../execroot/ngrx/bazel-out/darwin-fastbuild/bin/modules/store-devtools/npm_package.es6/modules/store-devtools/src/devtools.js","../../../../../../../../../../execroot/ngrx/bazel-out/darwin-fastbuild/bin/modules/store-devtools/npm_package.es6/modules/store-devtools/src/instrument.js","../../../../../../../../../../execroot/ngrx/bazel-out/darwin-fastbuild/bin/modules/store-devtools/npm_package.es6/modules/store-devtools/src/index.js","../../../../../../../../../../execroot/ngrx/bazel-out/darwin-fastbuild/bin/modules/store-devtools/npm_package.es6/modules/store-devtools/public_api.js","../../../../../../../../../../execroot/ngrx/bazel-out/darwin-fastbuild/bin/modules/store-devtools/npm_package.es6/modules/store-devtools/index.js","../../../../../../../../../../execroot/ngrx/bazel-out/darwin-fastbuild/bin/modules/store-devtools/npm_package.es6/modules/store-devtools/store-devtools.js"],"sourcesContent":["/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nimport { InjectionToken } from '@angular/core';\nexport class StoreDevtoolsConfig {\n}\nfunction StoreDevtoolsConfig_tsickle_Closure_declarations() {\n /** @type {?} */\n StoreDevtoolsConfig.prototype.maxAge;\n /** @type {?} */\n StoreDevtoolsConfig.prototype.monitor;\n /** @type {?} */\n StoreDevtoolsConfig.prototype.actionSanitizer;\n /** @type {?} */\n StoreDevtoolsConfig.prototype.stateSanitizer;\n /** @type {?} */\n StoreDevtoolsConfig.prototype.name;\n /** @type {?} */\n StoreDevtoolsConfig.prototype.serialize;\n /** @type {?} */\n StoreDevtoolsConfig.prototype.logOnly;\n /** @type {?} */\n StoreDevtoolsConfig.prototype.features;\n}\nexport const /** @type {?} */ STORE_DEVTOOLS_CONFIG = new InjectionToken('@ngrx/devtools Options');\nexport const /** @type {?} */ INITIAL_OPTIONS = new InjectionToken('@ngrx/devtools Initial Config');\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zdG9yZS1kZXZ0b29scy9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBS3JELE1BQU07Q0FTTDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVELE1BQU0sQ0FBQyx1QkFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FDckQsd0JBQXdCLENBQ3pCLENBQUM7QUFDRixNQUFNLENBQUMsdUJBQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUMvQywrQkFBK0IsQ0FDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvblJlZHVjZXIsIEFjdGlvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEluamVjdGlvblRva2VuLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIEFjdGlvblNhbml0aXplciA9IChhY3Rpb246IEFjdGlvbiwgaWQ6IG51bWJlcikgPT4gQWN0aW9uO1xuZXhwb3J0IHR5cGUgU3RhdGVTYW5pdGl6ZXIgPSAoc3RhdGU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gYW55O1xuXG5leHBvcnQgY2xhc3MgU3RvcmVEZXZ0b29sc0NvbmZpZyB7XG4gIG1heEFnZTogbnVtYmVyIHwgZmFsc2U7XG4gIG1vbml0b3I6IEFjdGlvblJlZHVjZXI8YW55LCBhbnk+O1xuICBhY3Rpb25TYW5pdGl6ZXI/OiBBY3Rpb25TYW5pdGl6ZXI7XG4gIHN0YXRlU2FuaXRpemVyPzogU3RhdGVTYW5pdGl6ZXI7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHNlcmlhbGl6ZT86IGJvb2xlYW47XG4gIGxvZ09ubHk/OiBib29sZWFuO1xuICBmZWF0dXJlcz86IGFueTtcbn1cblxuZXhwb3J0IGNvbnN0IFNUT1JFX0RFVlRPT0xTX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTdG9yZURldnRvb2xzQ29uZmlnPihcbiAgJ0BuZ3J4L2RldnRvb2xzIE9wdGlvbnMnXG4pO1xuZXhwb3J0IGNvbnN0IElOSVRJQUxfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTdG9yZURldnRvb2xzQ29uZmlnPihcbiAgJ0BuZ3J4L2RldnRvb2xzIEluaXRpYWwgQ29uZmlnJ1xuKTtcblxuZXhwb3J0IHR5cGUgU3RvcmVEZXZ0b29sc09wdGlvbnMgPVxuICB8IFBhcnRpYWw8U3RvcmVEZXZ0b29sc0NvbmZpZz5cbiAgfCAoKCkgPT4gUGFydGlhbDxTdG9yZURldnRvb2xzQ29uZmlnPik7XG4iXX0=","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nexport const /** @type {?} */ PERFORM_ACTION = 'PERFORM_ACTION';\nexport const /** @type {?} */ REFRESH = 'REFRESH';\nexport const /** @type {?} */ RESET = 'RESET';\nexport const /** @type {?} */ ROLLBACK = 'ROLLBACK';\nexport const /** @type {?} */ COMMIT = 'COMMIT';\nexport const /** @type {?} */ SWEEP = 'SWEEP';\nexport const /** @type {?} */ TOGGLE_ACTION = 'TOGGLE_ACTION';\nexport const /** @type {?} */ SET_ACTIONS_ACTIVE = 'SET_ACTIONS_ACTIVE';\nexport const /** @type {?} */ JUMP_TO_STATE = 'JUMP_TO_STATE';\nexport const /** @type {?} */ JUMP_TO_ACTION = 'JUMP_TO_ACTION';\nexport const /** @type {?} */ IMPORT_STATE = 'IMPORT_STATE';\nexport class PerformAction {\n /**\n * @param {?} action\n * @param {?} timestamp\n */\n constructor(action, timestamp) {\n this.action = action;\n this.timestamp = timestamp;\n this.type = PERFORM_ACTION;\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' +\n 'Have you misspelled a constant?');\n }\n }\n}\nfunction PerformAction_tsickle_Closure_declarations() {\n /** @type {?} */\n PerformAction.prototype.type;\n /** @type {?} */\n PerformAction.prototype.action;\n /** @type {?} */\n PerformAction.prototype.timestamp;\n}\nexport class Refresh {\n constructor() {\n this.type = REFRESH;\n }\n}\nfunction Refresh_tsickle_Closure_declarations() {\n /** @type {?} */\n Refresh.prototype.type;\n}\nexport class Reset {\n /**\n * @param {?} timestamp\n */\n constructor(timestamp) {\n this.timestamp = timestamp;\n this.type = RESET;\n }\n}\nfunction Reset_tsickle_Closure_declarations() {\n /** @type {?} */\n Reset.prototype.type;\n /** @type {?} */\n Reset.prototype.timestamp;\n}\nexport class Rollback {\n /**\n * @param {?} timestamp\n */\n constructor(timestamp) {\n this.timestamp = timestamp;\n this.type = ROLLBACK;\n }\n}\nfunction Rollback_tsickle_Closure_declarations() {\n /** @type {?} */\n Rollback.prototype.type;\n /** @type {?} */\n Rollback.prototype.timestamp;\n}\nexport class Commit {\n /**\n * @param {?} timestamp\n */\n constructor(timestamp) {\n this.timestamp = timestamp;\n this.type = COMMIT;\n }\n}\nfunction Commit_tsickle_Closure_declarations() {\n /** @type {?} */\n Commit.prototype.type;\n /** @type {?} */\n Commit.prototype.timestamp;\n}\nexport class Sweep {\n constructor() {\n this.type = SWEEP;\n }\n}\nfunction Sweep_tsickle_Closure_declarations() {\n /** @type {?} */\n Sweep.prototype.type;\n}\nexport class ToggleAction {\n /**\n * @param {?} id\n */\n constructor(id) {\n this.id = id;\n this.type = TOGGLE_ACTION;\n }\n}\nfunction ToggleAction_tsickle_Closure_declarations() {\n /** @type {?} */\n ToggleAction.prototype.type;\n /** @type {?} */\n ToggleAction.prototype.id;\n}\nexport class SetActionsActive {\n /**\n * @param {?} start\n * @param {?} end\n * @param {?=} active\n */\n constructor(start, end, active = true) {\n this.start = start;\n this.end = end;\n this.active = active;\n this.type = SET_ACTIONS_ACTIVE;\n }\n}\nfunction SetActionsActive_tsickle_Closure_declarations() {\n /** @type {?} */\n SetActionsActive.prototype.type;\n /** @type {?} */\n SetActionsActive.prototype.start;\n /** @type {?} */\n SetActionsActive.prototype.end;\n /** @type {?} */\n SetActionsActive.prototype.active;\n}\nexport class JumpToState {\n /**\n * @param {?} index\n */\n constructor(index) {\n this.index = index;\n this.type = JUMP_TO_STATE;\n }\n}\nfunction JumpToState_tsickle_Closure_declarations() {\n /** @type {?} */\n JumpToState.prototype.type;\n /** @type {?} */\n JumpToState.prototype.index;\n}\nexport class JumpToAction {\n /**\n * @param {?} actionId\n */\n constructor(actionId) {\n this.actionId = actionId;\n this.type = JUMP_TO_ACTION;\n }\n}\nfunction JumpToAction_tsickle_Closure_declarations() {\n /** @type {?} */\n JumpToAction.prototype.type;\n /** @type {?} */\n JumpToAction.prototype.actionId;\n}\nexport class ImportState {\n /**\n * @param {?} nextLiftedState\n */\n constructor(nextLiftedState) {\n this.nextLiftedState = nextLiftedState;\n this.type = IMPORT_STATE;\n }\n}\nfunction ImportState_tsickle_Closure_declarations() {\n /** @type {?} */\n ImportState.prototype.type;\n /** @type {?} */\n ImportState.prototype.nextLiftedState;\n}\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc3RvcmUtZGV2dG9vbHMvc3JjL2FjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLE1BQU0sQ0FBQyx1QkFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUM7QUFDL0MsTUFBTSxDQUFDLHVCQUFNLE9BQU8sR0FBRyxTQUFTLENBQUM7QUFDakMsTUFBTSxDQUFDLHVCQUFNLEtBQUssR0FBRyxPQUFPLENBQUM7QUFDN0IsTUFBTSxDQUFDLHVCQUFNLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFDbkMsTUFBTSxDQUFDLHVCQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFDL0IsTUFBTSxDQUFDLHVCQUFNLEtBQUssR0FBRyxPQUFPLENBQUM7QUFDN0IsTUFBTSxDQUFDLHVCQUFNLGFBQWEsR0FBRyxlQUFlLENBQUM7QUFDN0MsTUFBTSxDQUFDLHVCQUFNLGtCQUFrQixHQUFHLG9CQUFvQixDQUFDO0FBQ3ZELE1BQU0sQ0FBQyx1QkFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDO0FBQzdDLE1BQU0sQ0FBQyx1QkFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUM7QUFDL0MsTUFBTSxDQUFDLHVCQUFNLFlBQVksR0FBRyxjQUFjLENBQUM7QUFFM0MsTUFBTTs7Ozs7SUFHSixZQUFtQixNQUFjLEVBQVMsU0FBaUI7UUFBeEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFTLGNBQVMsR0FBVCxTQUFTLENBQVE7b0JBRjNDLGNBQWM7UUFHNUIsRUFBRSxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FDYixxREFBcUQ7Z0JBQ25ELGlDQUFpQyxDQUNwQyxDQUFDO1NBQ0g7S0FDRjtDQUNGOzs7Ozs7Ozs7QUFFRCxNQUFNOztvQkFDWSxPQUFPOztDQUN4Qjs7Ozs7QUFFRCxNQUFNOzs7O0lBR0osWUFBbUIsU0FBaUI7UUFBakIsY0FBUyxHQUFULFNBQVMsQ0FBUTtvQkFGcEIsS0FBSztLQUVtQjtDQUN6Qzs7Ozs7OztBQUVELE1BQU07Ozs7SUFHSixZQUFtQixTQUFpQjtRQUFqQixjQUFTLEdBQVQsU0FBUyxDQUFRO29CQUZwQixRQUFRO0tBRWdCO0NBQ3pDOzs7Ozs7O0FBRUQsTUFBTTs7OztJQUdKLFlBQW1CLFNBQWlCO1FBQWpCLGNBQVMsR0FBVCxTQUFTLENBQVE7b0JBRnBCLE1BQU07S0FFa0I7Q0FDekM7Ozs7Ozs7QUFFRCxNQUFNOztvQkFDWSxLQUFLOztDQUN0Qjs7Ozs7QUFFRCxNQUFNOzs7O0lBR0osWUFBbUIsRUFBVTtRQUFWLE9BQUUsR0FBRixFQUFFLENBQVE7b0JBRmIsYUFBYTtLQUVJO0NBQ2xDOzs7Ozs7O0FBRUQsTUFBTTs7Ozs7O0lBR0osWUFDUyxPQUNBLEtBQ0EsU0FBa0IsSUFBSTtRQUZ0QixVQUFLLEdBQUwsS0FBSztRQUNMLFFBQUcsR0FBSCxHQUFHO1FBQ0gsV0FBTSxHQUFOLE1BQU07b0JBTEMsa0JBQWtCO0tBTTlCO0NBQ0w7Ozs7Ozs7Ozs7O0FBRUQsTUFBTTs7OztJQUdKLFlBQW1CLEtBQWE7UUFBYixVQUFLLEdBQUwsS0FBSyxDQUFRO29CQUZoQixhQUFhO0tBRU87Q0FDckM7Ozs7Ozs7QUFFRCxNQUFNOzs7O0lBR0osWUFBbUIsUUFBZ0I7UUFBaEIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtvQkFGbkIsY0FBYztLQUVTO0NBQ3hDOzs7Ozs7O0FBRUQsTUFBTTs7OztJQUdKLFlBQW1CLGVBQW9CO1FBQXBCLG9CQUFlLEdBQWYsZUFBZSxDQUFLO29CQUZ2QixZQUFZO0tBRWU7Q0FDNUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbmV4cG9ydCBjb25zdCBQRVJGT1JNX0FDVElPTiA9ICdQRVJGT1JNX0FDVElPTic7XG5leHBvcnQgY29uc3QgUkVGUkVTSCA9ICdSRUZSRVNIJztcbmV4cG9ydCBjb25zdCBSRVNFVCA9ICdSRVNFVCc7XG5leHBvcnQgY29uc3QgUk9MTEJBQ0sgPSAnUk9MTEJBQ0snO1xuZXhwb3J0IGNvbnN0IENPTU1JVCA9ICdDT01NSVQnO1xuZXhwb3J0IGNvbnN0IFNXRUVQID0gJ1NXRUVQJztcbmV4cG9ydCBjb25zdCBUT0dHTEVfQUNUSU9OID0gJ1RPR0dMRV9BQ1RJT04nO1xuZXhwb3J0IGNvbnN0IFNFVF9BQ1RJT05TX0FDVElWRSA9ICdTRVRfQUNUSU9OU19BQ1RJVkUnO1xuZXhwb3J0IGNvbnN0IEpVTVBfVE9fU1RBVEUgPSAnSlVNUF9UT19TVEFURSc7XG5leHBvcnQgY29uc3QgSlVNUF9UT19BQ1RJT04gPSAnSlVNUF9UT19BQ1RJT04nO1xuZXhwb3J0IGNvbnN0IElNUE9SVF9TVEFURSA9ICdJTVBPUlRfU1RBVEUnO1xuXG5leHBvcnQgY2xhc3MgUGVyZm9ybUFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XG4gIHJlYWRvbmx5IHR5cGUgPSBQRVJGT1JNX0FDVElPTjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgYWN0aW9uOiBBY3Rpb24sIHB1YmxpYyB0aW1lc3RhbXA6IG51bWJlcikge1xuICAgIGlmICh0eXBlb2YgYWN0aW9uLnR5cGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdBY3Rpb25zIG1heSBub3QgaGF2ZSBhbiB1bmRlZmluZWQgXCJ0eXBlXCIgcHJvcGVydHkuICcgK1xuICAgICAgICAgICdIYXZlIHlvdSBtaXNzcGVsbGVkIGEgY29uc3RhbnQ/J1xuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlZnJlc2ggaW1wbGVtZW50cyBBY3Rpb24ge1xuICByZWFkb25seSB0eXBlID0gUkVGUkVTSDtcbn1cblxuZXhwb3J0IGNsYXNzIFJlc2V0IGltcGxlbWVudHMgQWN0aW9uIHtcbiAgcmVhZG9ubHkgdHlwZSA9IFJFU0VUO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0aW1lc3RhbXA6IG51bWJlcikge31cbn1cblxuZXhwb3J0IGNsYXNzIFJvbGxiYWNrIGltcGxlbWVudHMgQWN0aW9uIHtcbiAgcmVhZG9ubHkgdHlwZSA9IFJPTExCQUNLO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0aW1lc3RhbXA6IG51bWJlcikge31cbn1cblxuZXhwb3J0IGNsYXNzIENvbW1pdCBpbXBsZW1lbnRzIEFjdGlvbiB7XG4gIHJlYWRvbmx5IHR5cGUgPSBDT01NSVQ7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHRpbWVzdGFtcDogbnVtYmVyKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgU3dlZXAgaW1wbGVtZW50cyBBY3Rpb24ge1xuICByZWFkb25seSB0eXBlID0gU1dFRVA7XG59XG5cbmV4cG9ydCBjbGFzcyBUb2dnbGVBY3Rpb24gaW1wbGVtZW50cyBBY3Rpb24ge1xuICByZWFkb25seSB0eXBlID0gVE9HR0xFX0FDVElPTjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaWQ6IG51bWJlcikge31cbn1cblxuZXhwb3J0IGNsYXNzIFNldEFjdGlvbnNBY3RpdmUgaW1wbGVtZW50cyBBY3Rpb24ge1xuICByZWFkb25seSB0eXBlID0gU0VUX0FDVElPTlNfQUNUSVZFO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBzdGFydDogbnVtYmVyLFxuICAgIHB1YmxpYyBlbmQ6IG51bWJlcixcbiAgICBwdWJsaWMgYWN0aXZlOiBib29sZWFuID0gdHJ1ZVxuICApIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBKdW1wVG9TdGF0ZSBpbXBsZW1lbnRzIEFjdGlvbiB7XG4gIHJlYWRvbmx5IHR5cGUgPSBKVU1QX1RPX1NUQVRFO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpbmRleDogbnVtYmVyKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgSnVtcFRvQWN0aW9uIGltcGxlbWVudHMgQWN0aW9uIHtcbiAgcmVhZG9ubHkgdHlwZSA9IEpVTVBfVE9fQUNUSU9OO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBhY3Rpb25JZDogbnVtYmVyKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgSW1wb3J0U3RhdGUgaW1wbGVtZW50cyBBY3Rpb24ge1xuICByZWFkb25seSB0eXBlID0gSU1QT1JUX1NUQVRFO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuZXh0TGlmdGVkU3RhdGU6IGFueSkge31cbn1cblxuZXhwb3J0IHR5cGUgQWxsID1cbiAgfCBQZXJmb3JtQWN0aW9uXG4gIHwgUmVmcmVzaFxuICB8IFJlc2V0XG4gIHwgUm9sbGJhY2tcbiAgfCBDb21taXRcbiAgfCBTd2VlcFxuICB8IFRvZ2dsZUFjdGlvblxuICB8IFNldEFjdGlvbnNBY3RpdmVcbiAgfCBKdW1wVG9TdGF0ZVxuICB8IEp1bXBUb0FjdGlvblxuICB8IEltcG9ydFN0YXRlO1xuIl19","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nimport * as Actions from './actions';\n/**\n * @param {?} first\n * @param {?} second\n * @return {?}\n */\nexport function difference(first, second) {\n return first.filter(item => second.indexOf(item) < 0);\n}\n/**\n * Provides an app's view into the state of the lifted store.\n * @param {?} liftedState\n * @return {?}\n */\nexport function unliftState(liftedState) {\n const { computedStates, currentStateIndex } = liftedState;\n const { state } = computedStates[currentStateIndex];\n return state;\n}\n/**\n * @param {?} liftedState\n * @return {?}\n */\nexport function unliftAction(liftedState) {\n return liftedState.actionsById[liftedState.nextActionId - 1];\n}\n/**\n * Lifts an app's action into an action on the lifted store.\n * @param {?} action\n * @return {?}\n */\nexport function liftAction(action) {\n return new Actions.PerformAction(action, +Date.now());\n}\n/**\n * Sanitizes given actions with given function.\n * @param {?} actionSanitizer\n * @param {?} actions\n * @return {?}\n */\nexport function sanitizeActions(actionSanitizer, actions) {\n return Object.keys(actions).reduce((sanitizedActions, actionIdx) => {\n const /** @type {?} */ idx = Number(actionIdx);\n sanitizedActions[idx] = sanitizeAction(actionSanitizer, actions[idx], idx);\n return sanitizedActions;\n }, /** @type {?} */ ({}));\n}\n/**\n * Sanitizes given action with given function.\n * @param {?} actionSanitizer\n * @param {?} action\n * @param {?} actionIdx\n * @return {?}\n */\nexport function sanitizeAction(actionSanitizer, action, actionIdx) {\n return Object.assign({}, action, { action: actionSanitizer(action.action, actionIdx) });\n}\n/**\n * Sanitizes given states with given function.\n * @param {?} stateSanitizer\n * @param {?} states\n * @return {?}\n */\nexport function sanitizeStates(stateSanitizer, states) {\n return states.map((computedState, idx) => ({\n state: sanitizeState(stateSanitizer, computedState.state, idx),\n error: computedState.error,\n }));\n}\n/**\n * Sanitizes given state with given function.\n * @param {?} stateSanitizer\n * @param {?} state\n * @param {?} stateIdx\n * @return {?}\n */\nexport function sanitizeState(stateSanitizer, state, stateIdx) {\n return stateSanitizer(state, stateIdx);\n}\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JlLWRldnRvb2xzL3NyYy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBR0EsT0FBTyxLQUFLLE9BQU8sTUFBTSxXQUFXLENBQUM7Ozs7OztBQVNyQyxNQUFNLHFCQUFxQixLQUFZLEVBQUUsTUFBYTtJQUNwRCxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDdkQ7Ozs7OztBQUtELE1BQU0sc0JBQXNCLFdBQXdCO0lBQ2xELE1BQU0sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxXQUFXLENBQUM7SUFDMUQsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRXBELE1BQU0sQ0FBQyxLQUFLLENBQUM7Q0FDZDs7Ozs7QUFFRCxNQUFNLHVCQUF1QixXQUF3QjtJQUNuRCxNQUFNLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQzlEOzs7Ozs7QUFLRCxNQUFNLHFCQUFxQixNQUFjO0lBQ3ZDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7Q0FDdkQ7Ozs7Ozs7QUFLRCxNQUFNLDBCQUNKLGVBQWdDLEVBQ2hDLE9BQXNCO0lBRXRCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FDaEMsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsRUFBRTtRQUM5Qix1QkFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlCLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLGNBQWMsQ0FDcEMsZUFBZSxFQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFDWixHQUFHLENBQ0osQ0FBQztRQUNGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztLQUN6QixvQkFDYyxFQUFFLEVBQ2xCLENBQUM7Q0FDSDs7Ozs7Ozs7QUFLRCxNQUFNLHlCQUNKLGVBQWdDLEVBQ2hDLE1BQW9CLEVBQ3BCLFNBQWlCO0lBRWpCLE1BQU0sbUJBQ0QsTUFBTSxJQUNULE1BQU0sRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsSUFDakQ7Q0FDSDs7Ozs7OztBQUtELE1BQU0seUJBQ0osY0FBOEIsRUFDOUIsTUFBdUI7SUFFdkIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLEtBQUssRUFBRSxhQUFhLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDO1FBQzlELEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSztLQUMzQixDQUFDLENBQUMsQ0FBQztDQUNMOzs7Ozs7OztBQUtELE1BQU0sd0JBQ0osY0FBOEIsRUFDOUIsS0FBVSxFQUNWLFFBQWdCO0lBRWhCLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0NBQ3hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgKiBhcyBBY3Rpb25zIGZyb20gJy4vYWN0aW9ucyc7XG5pbXBvcnQgeyBBY3Rpb25TYW5pdGl6ZXIsIFN0YXRlU2FuaXRpemVyIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHtcbiAgQ29tcHV0ZWRTdGF0ZSxcbiAgTGlmdGVkQWN0aW9uLFxuICBMaWZ0ZWRBY3Rpb25zLFxuICBMaWZ0ZWRTdGF0ZSxcbn0gZnJvbSAnLi9yZWR1Y2VyJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZlcmVuY2UoZmlyc3Q6IGFueVtdLCBzZWNvbmQ6IGFueVtdKSB7XG4gIHJldHVybiBmaXJzdC5maWx0ZXIoaXRlbSA9PiBzZWNvbmQuaW5kZXhPZihpdGVtKSA8IDApO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGFuIGFwcCdzIHZpZXcgaW50byB0aGUgc3RhdGUgb2YgdGhlIGxpZnRlZCBzdG9yZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVubGlmdFN0YXRlKGxpZnRlZFN0YXRlOiBMaWZ0ZWRTdGF0ZSkge1xuICBjb25zdCB7IGNvbXB1dGVkU3RhdGVzLCBjdXJyZW50U3RhdGVJbmRleCB9ID0gbGlmdGVkU3RhdGU7XG4gIGNvbnN0IHsgc3RhdGUgfSA9IGNvbXB1dGVkU3RhdGVzW2N1cnJlbnRTdGF0ZUluZGV4XTtcblxuICByZXR1cm4gc3RhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmxpZnRBY3Rpb24obGlmdGVkU3RhdGU6IExpZnRlZFN0YXRlKTogTGlmdGVkQWN0aW9uIHtcbiAgcmV0dXJuIGxpZnRlZFN0YXRlLmFjdGlvbnNCeUlkW2xpZnRlZFN0YXRlLm5leHRBY3Rpb25JZCAtIDFdO1xufVxuXG4vKipcbiAqIExpZnRzIGFuIGFwcCdzIGFjdGlvbiBpbnRvIGFuIGFjdGlvbiBvbiB0aGUgbGlmdGVkIHN0b3JlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlmdEFjdGlvbihhY3Rpb246IEFjdGlvbikge1xuICByZXR1cm4gbmV3IEFjdGlvbnMuUGVyZm9ybUFjdGlvbihhY3Rpb24sICtEYXRlLm5vdygpKTtcbn1cblxuLyoqXG4gKiBTYW5pdGl6ZXMgZ2l2ZW4gYWN0aW9ucyB3aXRoIGdpdmVuIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemVBY3Rpb25zKFxuICBhY3Rpb25TYW5pdGl6ZXI6IEFjdGlvblNhbml0aXplcixcbiAgYWN0aW9uczogTGlmdGVkQWN0aW9uc1xuKTogTGlmdGVkQWN0aW9ucyB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhhY3Rpb25zKS5yZWR1Y2UoXG4gICAgKHNhbml0aXplZEFjdGlvbnMsIGFjdGlvbklkeCkgPT4ge1xuICAgICAgY29uc3QgaWR4ID0gTnVtYmVyKGFjdGlvbklkeCk7XG4gICAgICBzYW5pdGl6ZWRBY3Rpb25zW2lkeF0gPSBzYW5pdGl6ZUFjdGlvbihcbiAgICAgICAgYWN0aW9uU2FuaXRpemVyLFxuICAgICAgICBhY3Rpb25zW2lkeF0sXG4gICAgICAgIGlkeFxuICAgICAgKTtcbiAgICAgIHJldHVybiBzYW5pdGl6ZWRBY3Rpb25zO1xuICAgIH0sXG4gICAgPExpZnRlZEFjdGlvbnM+e31cbiAgKTtcbn1cblxuLyoqXG4gKiBTYW5pdGl6ZXMgZ2l2ZW4gYWN0aW9uIHdpdGggZ2l2ZW4gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZUFjdGlvbihcbiAgYWN0aW9uU2FuaXRpemVyOiBBY3Rpb25TYW5pdGl6ZXIsXG4gIGFjdGlvbjogTGlmdGVkQWN0aW9uLFxuICBhY3Rpb25JZHg6IG51bWJlclxuKTogTGlmdGVkQWN0aW9uIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5hY3Rpb24sXG4gICAgYWN0aW9uOiBhY3Rpb25TYW5pdGl6ZXIoYWN0aW9uLmFjdGlvbiwgYWN0aW9uSWR4KSxcbiAgfTtcbn1cblxuLyoqXG4gKiBTYW5pdGl6ZXMgZ2l2ZW4gc3RhdGVzIHdpdGggZ2l2ZW4gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZVN0YXRlcyhcbiAgc3RhdGVTYW5pdGl6ZXI6IFN0YXRlU2FuaXRpemVyLFxuICBzdGF0ZXM6IENvbXB1dGVkU3RhdGVbXVxuKTogQ29tcHV0ZWRTdGF0ZVtdIHtcbiAgcmV0dXJuIHN0YXRlcy5tYXAoKGNvbXB1dGVkU3RhdGUsIGlkeCkgPT4gKHtcbiAgICBzdGF0ZTogc2FuaXRpemVTdGF0ZShzdGF0ZVNhbml0aXplciwgY29tcHV0ZWRTdGF0ZS5zdGF0ZSwgaWR4KSxcbiAgICBlcnJvcjogY29tcHV0ZWRTdGF0ZS5lcnJvcixcbiAgfSkpO1xufVxuXG4vKipcbiAqIFNhbml0aXplcyBnaXZlbiBzdGF0ZSB3aXRoIGdpdmVuIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemVTdGF0ZShcbiAgc3RhdGVTYW5pdGl6ZXI6IFN0YXRlU2FuaXRpemVyLFxuICBzdGF0ZTogYW55LFxuICBzdGF0ZUlkeDogbnVtYmVyXG4pIHtcbiAgcmV0dXJuIHN0YXRlU2FuaXRpemVyKHN0YXRlLCBzdGF0ZUlkeCk7XG59XG4iXX0=","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nimport { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { empty, Observable } from 'rxjs';\nimport { filter, map, share, switchMap, takeUntil } from 'rxjs/operators';\nimport { PERFORM_ACTION } from './actions';\nimport { STORE_DEVTOOLS_CONFIG, StoreDevtoolsConfig } from './config';\nimport { sanitizeAction, sanitizeActions, sanitizeState, sanitizeStates, unliftState, } from './utils';\nexport const /** @type {?} */ ExtensionActionTypes = {\n START: 'START',\n DISPATCH: 'DISPATCH',\n STOP: 'STOP',\n ACTION: 'ACTION',\n};\nexport const /** @type {?} */ REDUX_DEVTOOLS_EXTENSION = new InjectionToken('Redux Devtools Extension');\n/**\n * @record\n */\nexport function ReduxDevtoolsExtensionConnection() { }\nfunction ReduxDevtoolsExtensionConnection_tsickle_Closure_declarations() {\n /** @type {?} */\n ReduxDevtoolsExtensionConnection.prototype.subscribe;\n /** @type {?} */\n ReduxDevtoolsExtensionConnection.prototype.unsubscribe;\n /** @type {?} */\n ReduxDevtoolsExtensionConnection.prototype.send;\n /** @type {?} */\n ReduxDevtoolsExtensionConnection.prototype.init;\n /** @type {?} */\n ReduxDevtoolsExtensionConnection.prototype.error;\n}\n/**\n * @record\n */\nexport function ReduxDevtoolsExtensionConfig() { }\nfunction ReduxDevtoolsExtensionConfig_tsickle_Closure_declarations() {\n /** @type {?|undefined} */\n ReduxDevtoolsExtensionConfig.prototype.features;\n /** @type {?} */\n ReduxDevtoolsExtensionConfig.prototype.name;\n /** @type {?} */\n ReduxDevtoolsExtensionConfig.prototype.instanceId;\n /** @type {?|undefined} */\n ReduxDevtoolsExtensionConfig.prototype.maxAge;\n /** @type {?|undefined} */\n ReduxDevtoolsExtensionConfig.prototype.serialize;\n}\n/**\n * @record\n */\nexport function ReduxDevtoolsExtension() { }\nfunction ReduxDevtoolsExtension_tsickle_Closure_declarations() {\n /** @type {?} */\n ReduxDevtoolsExtension.prototype.connect;\n /** @type {?} */\n ReduxDevtoolsExtension.prototype.send;\n}\nexport class DevtoolsExtension {\n /**\n * @param {?} devtoolsExtension\n * @param {?} config\n */\n constructor(devtoolsExtension, config) {\n this.config = config;\n this.instanceId = `ngrx-store-${Date.now()}`;\n this.devtoolsExtension = devtoolsExtension;\n this.createActionStreams();\n }\n /**\n * @param {?} action\n * @param {?} state\n * @return {?}\n */\n notify(action, state) {\n if (!this.devtoolsExtension) {\n return;\n }\n // Check to see if the action requires a full update of the liftedState.\n // If it is a simple action generated by the user's app, only send the\n // action and the current state (fast).\n //\n // A full liftedState update (slow: serializes the entire liftedState) is\n // only required when:\n // a) redux-devtools-extension fires the @@Init action (ignored by\n // @ngrx/store-devtools)\n // b) an action is generated by an @ngrx module (e.g. @ngrx/effects/init\n // or @ngrx/store/update-reducers)\n // c) the state has been recomputed due to time-traveling\n // d) any action that is not a PerformAction to err on the side of\n // caution.\n if (action.type === PERFORM_ACTION) {\n const /** @type {?} */ currentState = unliftState(state);\n const /** @type {?} */ sanitizedState = this.config.stateSanitizer\n ? sanitizeState(this.config.stateSanitizer, currentState, state.currentStateIndex)\n : currentState;\n const /** @type {?} */ sanitizedAction = this.config.actionSanitizer\n ? sanitizeAction(this.config.actionSanitizer, action, state.nextActionId)\n : action;\n this.extensionConnection.send(sanitizedAction, sanitizedState);\n }\n else {\n // Requires full state update\n const /** @type {?} */ sanitizedLiftedState = Object.assign({}, state, { actionsById: this.config.actionSanitizer\n ? sanitizeActions(this.config.actionSanitizer, state.actionsById)\n : state.actionsById, computedStates: this.config.stateSanitizer\n ? sanitizeStates(this.config.stateSanitizer, state.computedStates)\n : state.computedStates });\n this.devtoolsExtension.send(null, sanitizedLiftedState, this.getExtensionConfig(this.instanceId, this.config), this.instanceId);\n }\n }\n /**\n * @return {?}\n */\n createChangesObservable() {\n if (!this.devtoolsExtension) {\n return empty();\n }\n return new Observable(subscriber => {\n const /** @type {?} */ connection = this.devtoolsExtension.connect(this.getExtensionConfig(this.instanceId, this.config));\n this.extensionConnection = connection;\n connection.init();\n connection.subscribe((change) => subscriber.next(change));\n return connection.unsubscribe;\n });\n }\n /**\n * @return {?}\n */\n createActionStreams() {\n // Listens to all changes based on our instanceId\n const /** @type {?} */ changes$ = this.createChangesObservable().pipe(share());\n // Listen for the start action\n const /** @type {?} */ start$ = changes$.pipe(filter((change) => change.type === ExtensionActionTypes.START));\n // Listen for the stop action\n const /** @type {?} */ stop$ = changes$.pipe(filter((change) => change.type === ExtensionActionTypes.STOP));\n // Listen for lifted actions\n const /** @type {?} */ liftedActions$ = changes$.pipe(filter(change => change.type === ExtensionActionTypes.DISPATCH), map(change => this.unwrapAction(change.payload)));\n // Listen for unlifted actions\n const /** @type {?} */ actions$ = changes$.pipe(filter(change => change.type === ExtensionActionTypes.ACTION), map(change => this.unwrapAction(change.payload)));\n const /** @type {?} */ actionsUntilStop$ = actions$.pipe(takeUntil(stop$));\n const /** @type {?} */ liftedUntilStop$ = liftedActions$.pipe(takeUntil(stop$));\n this.start$ = start$.pipe(takeUntil(stop$));\n // Only take the action sources between the start/stop events\n this.actions$ = this.start$.pipe(switchMap(() => actionsUntilStop$));\n this.liftedActions$ = this.start$.pipe(switchMap(() => liftedUntilStop$));\n }\n /**\n * @param {?} action\n * @return {?}\n */\n unwrapAction(action) {\n return typeof action === 'string' ? eval(`(${action})`) : action;\n }\n /**\n * @param {?} instanceId\n * @param {?} config\n * @return {?}\n */\n getExtensionConfig(instanceId, config) {\n const /** @type {?} */ extensionOptions = {\n instanceId: instanceId,\n name: config.name,\n features: config.features,\n serialize: config.serialize,\n };\n if (config.maxAge !== false /* support === 0 */) {\n extensionOptions.maxAge = config.maxAge;\n }\n return extensionOptions;\n }\n}\nDevtoolsExtension.decorators = [\n { type: Injectable }\n];\n/** @nocollapse */\nDevtoolsExtension.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [REDUX_DEVTOOLS_EXTENSION,] },] },\n { type: StoreDevtoolsConfig, decorators: [{ type: Inject, args: [STORE_DEVTOOLS_CONFIG,] },] },\n];\nfunction DevtoolsExtension_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n DevtoolsExtension.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n DevtoolsExtension.ctorParameters;\n /** @type {?} */\n DevtoolsExtension.prototype.instanceId;\n /** @type {?} */\n DevtoolsExtension.prototype.devtoolsExtension;\n /** @type {?} */\n DevtoolsExtension.prototype.extensionConnection;\n /** @type {?} */\n DevtoolsExtension.prototype.liftedActions$;\n /** @type {?} */\n DevtoolsExtension.prototype.actions$;\n /** @type {?} */\n DevtoolsExtension.prototype.start$;\n /** @type {?} */\n DevtoolsExtension.prototype.config;\n}\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zdG9yZS1kZXZ0b29scy9zcmMvZXh0ZW5zaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV0RSxPQUFPLEVBQ0wsY0FBYyxFQUNkLGVBQWUsRUFDZixhQUFhLEVBQ2IsY0FBYyxFQUNkLFdBQVcsR0FDWixNQUFNLFNBQVMsQ0FBQztBQUVqQixNQUFNLENBQUMsdUJBQU0sb0JBQW9CLEdBQUc7SUFDbEMsS0FBSyxFQUFFLE9BQU87SUFDZCxRQUFRLEVBQUUsVUFBVTtJQUNwQixJQUFJLEVBQUUsTUFBTTtJQUNaLE1BQU0sRUFBRSxRQUFRO0NBQ2pCLENBQUM7QUFFRixNQUFNLENBQUMsdUJBQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBRXhELDBCQUEwQixDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE4QjlCLE1BQU07Ozs7O0lBU0osWUFDb0MsbUJBQ0s7UUFBQSxXQUFNLEdBQU4sTUFBTTswQkFWMUIsY0FBYyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFZN0MsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBQzNDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0tBQzVCOzs7Ozs7SUFFRCxNQUFNLENBQUMsTUFBb0IsRUFBRSxLQUFrQjtRQUM3QyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDNUIsTUFBTSxDQUFDO1NBQ1I7Ozs7Ozs7Ozs7Ozs7O1FBZUQsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsQ0FBQyxDQUFDO1lBQ25DLHVCQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEMsdUJBQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYztnQkFDL0MsQ0FBQyxDQUFDLGFBQWEsQ0FDWCxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFDMUIsWUFBWSxFQUNaLEtBQUssQ0FBQyxpQkFBaUIsQ0FDeEI7Z0JBQ0gsQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUNqQix1QkFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlO2dCQUNqRCxDQUFDLENBQUMsY0FBYyxDQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUMzQixNQUFNLEVBQ04sS0FBSyxDQUFDLFlBQVksQ0FDbkI7Z0JBQ0gsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNYLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1NBQ2hFO1FBQUMsSUFBSSxDQUFDLENBQUM7O1lBRU4sdUJBQU0sb0JBQW9CLHFCQUNyQixLQUFLLElBQ1IsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZTtvQkFDdEMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDO29CQUNqRSxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFDckIsY0FBYyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYztvQkFDeEMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDO29CQUNsRSxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FDekIsQ0FBQztZQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQ3pCLElBQUksRUFDSixvQkFBb0IsRUFDcEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUNyRCxJQUFJLENBQUMsVUFBVSxDQUNoQixDQUFDO1NBQ0g7S0FDRjs7OztJQUVPLHVCQUF1QjtRQUM3QixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDNUIsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2hCO1FBRUQsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ2pDLHVCQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUMvQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQ3RELENBQUM7WUFDRixJQUFJLENBQUMsbUJBQW1CLEdBQUcsVUFBVSxDQUFDO1lBQ3RDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVsQixVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDL0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUM7U0FDL0IsQ0FBQyxDQUFDOzs7OztJQUdHLG1CQUFtQjs7UUFFekIsdUJBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDOztRQUc5RCx1QkFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FDMUIsTUFBTSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUNwRSxDQUFDOztRQUdGLHVCQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxDQUN6QixNQUFNLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQ25FLENBQUM7O1FBR0YsdUJBQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQ2xDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssb0JBQW9CLENBQUMsUUFBUSxDQUFDLEVBQy9ELEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQ2pELENBQUM7O1FBR0YsdUJBQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQzVCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssb0JBQW9CLENBQUMsTUFBTSxDQUFDLEVBQzdELEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQ2pELENBQUM7UUFFRix1QkFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFELHVCQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDOztRQUc1QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDOzs7Ozs7SUFHcEUsWUFBWSxDQUFDLE1BQWM7UUFDakMsTUFBTSxDQUFDLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDOzs7Ozs7O0lBRzNELGtCQUFrQixDQUFDLFVBQWtCLEVBQUUsTUFBMkI7UUFDeEUsdUJBQU0sZ0JBQWdCLEdBQWlDO1lBQ3JELFVBQVUsRUFBRSxVQUFVO1lBQ3RCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDekIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1NBUTVCLENBQUM7UUFDRixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLEtBQUssb0JBQW9CLENBQUMsQ0FBQyxDQUFDO1lBQ2hELGdCQUFnQixDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1NBQ3pDO1FBQ0QsTUFBTSxDQUFDLGdCQUFnQixDQUFDOzs7O1lBbEozQixVQUFVOzs7OzRDQVdOLE1BQU0sU0FBQyx3QkFBd0I7WUEzREosbUJBQW1CLHVCQTREOUMsTUFBTSxTQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGVtcHR5LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc2hhcmUsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBQRVJGT1JNX0FDVElPTiB9IGZyb20gJy4vYWN0aW9ucyc7XG5pbXBvcnQgeyBTVE9SRV9ERVZUT09MU19DT05GSUcsIFN0b3JlRGV2dG9vbHNDb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBMaWZ0ZWRBY3Rpb24sIExpZnRlZFN0YXRlIH0gZnJvbSAnLi9yZWR1Y2VyJztcbmltcG9ydCB7XG4gIHNhbml0aXplQWN0aW9uLFxuICBzYW5pdGl6ZUFjdGlvbnMsXG4gIHNhbml0aXplU3RhdGUsXG4gIHNhbml0aXplU3RhdGVzLFxuICB1bmxpZnRTdGF0ZSxcbn0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBFeHRlbnNpb25BY3Rpb25UeXBlcyA9IHtcbiAgU1RBUlQ6ICdTVEFSVCcsXG4gIERJU1BBVENIOiAnRElTUEFUQ0gnLFxuICBTVE9QOiAnU1RPUCcsXG4gIEFDVElPTjogJ0FDVElPTicsXG59O1xuXG5leHBvcnQgY29uc3QgUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OID0gbmV3IEluamVjdGlvblRva2VuPFxuICBSZWR1eERldnRvb2xzRXh0ZW5zaW9uXG4+KCdSZWR1eCBEZXZ0b29scyBFeHRlbnNpb24nKTtcblxuZXhwb3J0IGludGVyZmFjZSBSZWR1eERldnRvb2xzRXh0ZW5zaW9uQ29ubmVjdGlvbiB7XG4gIHN1YnNjcmliZShsaXN0ZW5lcjogKGNoYW5nZTogYW55KSA9PiB2b2lkKTogdm9pZDtcbiAgdW5zdWJzY3JpYmUoKTogdm9pZDtcbiAgc2VuZChhY3Rpb246IGFueSwgc3RhdGU6IGFueSk6IHZvaWQ7XG4gIGluaXQoc3RhdGU/OiBhbnkpOiB2b2lkO1xuICBlcnJvcihhbnlFcnI6IGFueSk6IHZvaWQ7XG59XG5leHBvcnQgaW50ZXJmYWNlIFJlZHV4RGV2dG9vbHNFeHRlbnNpb25Db25maWcge1xuICBmZWF0dXJlcz86IG9iamVjdCB8IGJvb2xlYW47XG4gIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgaW5zdGFuY2VJZDogc3RyaW5nO1xuICBtYXhBZ2U/OiBudW1iZXI7XG4gIHNlcmlhbGl6ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVkdXhEZXZ0b29sc0V4dGVuc2lvbiB7XG4gIGNvbm5lY3QoXG4gICAgb3B0aW9uczogUmVkdXhEZXZ0b29sc0V4dGVuc2lvbkNvbmZpZ1xuICApOiBSZWR1eERldnRvb2xzRXh0ZW5zaW9uQ29ubmVjdGlvbjtcbiAgc2VuZChcbiAgICBhY3Rpb246IGFueSxcbiAgICBzdGF0ZTogYW55LFxuICAgIG9wdGlvbnM6IFJlZHV4RGV2dG9vbHNFeHRlbnNpb25Db25maWcsXG4gICAgaW5zdGFuY2VJZD86IHN0cmluZ1xuICApOiB2b2lkO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGV2dG9vbHNFeHRlbnNpb24ge1xuICBwcml2YXRlIGluc3RhbmNlSWQgPSBgbmdyeC1zdG9yZS0ke0RhdGUubm93KCl9YDtcbiAgcHJpdmF0ZSBkZXZ0b29sc0V4dGVuc2lvbjogUmVkdXhEZXZ0b29sc0V4dGVuc2lvbjtcbiAgcHJpdmF0ZSBleHRlbnNpb25Db25uZWN0aW9uOiBSZWR1eERldnRvb2xzRXh0ZW5zaW9uQ29ubmVjdGlvbjtcblxuICBsaWZ0ZWRBY3Rpb25zJDogT2JzZXJ2YWJsZTxhbnk+O1xuICBhY3Rpb25zJDogT2JzZXJ2YWJsZTxhbnk+O1xuICBzdGFydCQ6IE9ic2VydmFibGU8YW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFJFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTikgZGV2dG9vbHNFeHRlbnNpb246IFJlZHV4RGV2dG9vbHNFeHRlbnNpb24sXG4gICAgQEluamVjdChTVE9SRV9ERVZUT09MU19DT05GSUcpIHByaXZhdGUgY29uZmlnOiBTdG9yZURldnRvb2xzQ29uZmlnXG4gICkge1xuICAgIHRoaXMuZGV2dG9vbHNFeHRlbnNpb24gPSBkZXZ0b29sc0V4dGVuc2lvbjtcbiAgICB0aGlzLmNyZWF0ZUFjdGlvblN0cmVhbXMoKTtcbiAgfVxuXG4gIG5vdGlmeShhY3Rpb246IExpZnRlZEFjdGlvbiwgc3RhdGU6IExpZnRlZFN0YXRlKSB7XG4gICAgaWYgKCF0aGlzLmRldnRvb2xzRXh0ZW5zaW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBhY3Rpb24gcmVxdWlyZXMgYSBmdWxsIHVwZGF0ZSBvZiB0aGUgbGlmdGVkU3RhdGUuXG4gICAgLy8gSWYgaXQgaXMgYSBzaW1wbGUgYWN0aW9uIGdlbmVyYXRlZCBieSB0aGUgdXNlcidzIGFwcCwgb25seSBzZW5kIHRoZVxuICAgIC8vIGFjdGlvbiBhbmQgdGhlIGN1cnJlbnQgc3RhdGUgKGZhc3QpLlxuICAgIC8vXG4gICAgLy8gQSBmdWxsIGxpZnRlZFN0YXRlIHVwZGF0ZSAoc2xvdzogc2VyaWFsaXplcyB0aGUgZW50aXJlIGxpZnRlZFN0YXRlKSBpc1xuICAgIC8vIG9ubHkgcmVxdWlyZWQgd2hlbjpcbiAgICAvLyAgIGEpIHJlZHV4LWRldnRvb2xzLWV4dGVuc2lvbiBmaXJlcyB0aGUgQEBJbml0IGFjdGlvbiAoaWdub3JlZCBieVxuICAgIC8vICAgICAgQG5ncngvc3RvcmUtZGV2dG9vbHMpXG4gICAgLy8gICBiKSBhbiBhY3Rpb24gaXMgZ2VuZXJhdGVkIGJ5IGFuIEBuZ3J4IG1vZHVsZSAoZS5nLiBAbmdyeC9lZmZlY3RzL2luaXRcbiAgICAvLyAgICAgIG9yIEBuZ3J4L3N0b3JlL3VwZGF0ZS1yZWR1Y2VycylcbiAgICAvLyAgIGMpIHRoZSBzdGF0ZSBoYXMgYmVlbiByZWNvbXB1dGVkIGR1ZSB0byB0aW1lLXRyYXZlbGluZ1xuICAgIC8vICAgZCkgYW55IGFjdGlvbiB0aGF0IGlzIG5vdCBhIFBlcmZvcm1BY3Rpb24gdG8gZXJyIG9uIHRoZSBzaWRlIG9mXG4gICAgLy8gICAgICBjYXV0aW9uLlxuICAgIGlmIChhY3Rpb24udHlwZSA9PT0gUEVSRk9STV9BQ1RJT04pIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IHVubGlmdFN0YXRlKHN0YXRlKTtcbiAgICAgIGNvbnN0IHNhbml0aXplZFN0YXRlID0gdGhpcy5jb25maWcuc3RhdGVTYW5pdGl6ZXJcbiAgICAgICAgPyBzYW5pdGl6ZVN0YXRlKFxuICAgICAgICAgICAgdGhpcy5jb25maWcuc3RhdGVTYW5pdGl6ZXIsXG4gICAgICAgICAgICBjdXJyZW50U3RhdGUsXG4gICAgICAgICAgICBzdGF0ZS5jdXJyZW50U3RhdGVJbmRleFxuICAgICAgICAgIClcbiAgICAgICAgOiBjdXJyZW50U3RhdGU7XG4gICAgICBjb25zdCBzYW5pdGl6ZWRBY3Rpb24gPSB0aGlzLmNvbmZpZy5hY3Rpb25TYW5pdGl6ZXJcbiAgICAgICAgPyBzYW5pdGl6ZUFjdGlvbihcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmFjdGlvblNhbml0aXplcixcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIHN0YXRlLm5leHRBY3Rpb25JZFxuICAgICAgICAgIClcbiAgICAgICAgOiBhY3Rpb247XG4gICAgICB0aGlzLmV4dGVuc2lvbkNvbm5lY3Rpb24uc2VuZChzYW5pdGl6ZWRBY3Rpb24sIHNhbml0aXplZFN0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVxdWlyZXMgZnVsbCBzdGF0ZSB1cGRhdGVcbiAgICAgIGNvbnN0IHNhbml0aXplZExpZnRlZFN0YXRlID0ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYWN0aW9uc0J5SWQ6IHRoaXMuY29uZmlnLmFjdGlvblNhbml0aXplclxuICAgICAgICAgID8gc2FuaXRpemVBY3Rpb25zKHRoaXMuY29uZmlnLmFjdGlvblNhbml0aXplciwgc3RhdGUuYWN0aW9uc0J5SWQpXG4gICAgICAgICAgOiBzdGF0ZS5hY3Rpb25zQnlJZCxcbiAgICAgICAgY29tcHV0ZWRTdGF0ZXM6IHRoaXMuY29uZmlnLnN0YXRlU2FuaXRpemVyXG4gICAgICAgICAgPyBzYW5pdGl6ZVN0YXRlcyh0aGlzLmNvbmZpZy5zdGF0ZVNhbml0aXplciwgc3RhdGUuY29tcHV0ZWRTdGF0ZXMpXG4gICAgICAgICAgOiBzdGF0ZS5jb21wdXRlZFN0YXRlcyxcbiAgICAgIH07XG4gICAgICB0aGlzLmRldnRvb2xzRXh0ZW5zaW9uLnNlbmQoXG4gICAgICAgIG51bGwsXG4gICAgICAgIHNhbml0aXplZExpZnRlZFN0YXRlLFxuICAgICAgICB0aGlzLmdldEV4dGVuc2lvbkNvbmZpZyh0aGlzLmluc3RhbmNlSWQsIHRoaXMuY29uZmlnKSxcbiAgICAgICAgdGhpcy5pbnN0YW5jZUlkXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ2hhbmdlc09ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuZGV2dG9vbHNFeHRlbnNpb24pIHtcbiAgICAgIHJldHVybiBlbXB0eSgpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShzdWJzY3JpYmVyID0+IHtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLmRldnRvb2xzRXh0ZW5zaW9uLmNvbm5lY3QoXG4gICAgICAgIHRoaXMuZ2V0RXh0ZW5zaW9uQ29uZmlnKHRoaXMuaW5zdGFuY2VJZCwgdGhpcy5jb25maWcpXG4gICAgICApO1xuICAgICAgdGhpcy5leHRlbnNpb25Db25uZWN0aW9uID0gY29ubmVjdGlvbjtcbiAgICAgIGNvbm5lY3Rpb24uaW5pdCgpO1xuXG4gICAgICBjb25uZWN0aW9uLnN1YnNjcmliZSgoY2hhbmdlOiBhbnkpID0+IHN1YnNjcmliZXIubmV4dChjaGFuZ2UpKTtcbiAgICAgIHJldHVybiBjb25uZWN0aW9uLnVuc3Vic2NyaWJlO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBY3Rpb25TdHJlYW1zKCkge1xuICAgIC8vIExpc3RlbnMgdG8gYWxsIGNoYW5nZXMgYmFzZWQgb24gb3VyIGluc3RhbmNlSWRcbiAgICBjb25zdCBjaGFuZ2VzJCA9IHRoaXMuY3JlYXRlQ2hhbmdlc09ic2VydmFibGUoKS5waXBlKHNoYXJlKCkpO1xuXG4gICAgLy8gTGlzdGVuIGZvciB0aGUgc3RhcnQgYWN0aW9uXG4gICAgY29uc3Qgc3RhcnQkID0gY2hhbmdlcyQucGlwZShcbiAgICAgIGZpbHRlcigoY2hhbmdlOiBhbnkpID0+IGNoYW5nZS50eXBlID09PSBFeHRlbnNpb25BY3Rpb25UeXBlcy5TVEFSVClcbiAgICApO1xuXG4gICAgLy8gTGlzdGVuIGZvciB0aGUgc3RvcCBhY3Rpb25cbiAgICBjb25zdCBzdG9wJCA9IGNoYW5nZXMkLnBpcGUoXG4gICAgICBmaWx0ZXIoKGNoYW5nZTogYW55KSA9PiBjaGFuZ2UudHlwZSA9PT0gRXh0ZW5zaW9uQWN0aW9uVHlwZXMuU1RPUClcbiAgICApO1xuXG4gICAgLy8gTGlzdGVuIGZvciBsaWZ0ZWQgYWN0aW9uc1xuICAgIGNvbnN0IGxpZnRlZEFjdGlvbnMkID0gY2hhbmdlcyQucGlwZShcbiAgICAgIGZpbHRlcihjaGFuZ2UgPT4gY2hhbmdlLnR5cGUgPT09IEV4dGVuc2lvbkFjdGlvblR5cGVzLkRJU1BBVENIKSxcbiAgICAgIG1hcChjaGFuZ2UgPT4gdGhpcy51bndyYXBBY3Rpb24oY2hhbmdlLnBheWxvYWQpKVxuICAgICk7XG5cbiAgICAvLyBMaXN0ZW4gZm9yIHVubGlmdGVkIGFjdGlvbnNcbiAgICBjb25zdCBhY3Rpb25zJCA9IGNoYW5nZXMkLnBpcGUoXG4gICAgICBmaWx0ZXIoY2hhbmdlID0+IGNoYW5nZS50eXBlID09PSBFeHRlbnNpb25BY3Rpb25UeXBlcy5BQ1RJT04pLFxuICAgICAgbWFwKGNoYW5nZSA9PiB0aGlzLnVud3JhcEFjdGlvbihjaGFuZ2UucGF5bG9hZCkpXG4gICAgKTtcblxuICAgIGNvbnN0IGFjdGlvbnNVbnRpbFN0b3AkID0gYWN0aW9ucyQucGlwZSh0YWtlVW50aWwoc3RvcCQpKTtcbiAgICBjb25zdCBsaWZ0ZWRVbnRpbFN0b3AkID0gbGlmdGVkQWN0aW9ucyQucGlwZSh0YWtlVW50aWwoc3RvcCQpKTtcbiAgICB0aGlzLnN0YXJ0JCA9IHN0YXJ0JC5waXBlKHRha2VVbnRpbChzdG9wJCkpO1xuXG4gICAgLy8gT25seSB0YWtlIHRoZSBhY3Rpb24gc291cmNlcyBiZXR3ZWVuIHRoZSBzdGFydC9zdG9wIGV2ZW50c1xuICAgIHRoaXMuYWN0aW9ucyQgPSB0aGlzLnN0YXJ0JC5waXBlKHN3aXRjaE1hcCgoKSA9PiBhY3Rpb25zVW50aWxTdG9wJCkpO1xuICAgIHRoaXMubGlmdGVkQWN0aW9ucyQgPSB0aGlzLnN0YXJ0JC5waXBlKHN3aXRjaE1hcCgoKSA9PiBsaWZ0ZWRVbnRpbFN0b3AkKSk7XG4gIH1cblxuICBwcml2YXRlIHVud3JhcEFjdGlvbihhY3Rpb246IEFjdGlvbikge1xuICAgIHJldHVybiB0eXBlb2YgYWN0aW9uID09PSAnc3RyaW5nJyA/IGV2YWwoYCgke2FjdGlvbn0pYCkgOiBhY3Rpb247XG4gIH1cblxuICBwcml2YXRlIGdldEV4dGVuc2lvbkNvbmZpZyhpbnN0YW5jZUlkOiBzdHJpbmcsIGNvbmZpZzogU3RvcmVEZXZ0b29sc0NvbmZpZykge1xuICAgIGNvbnN0IGV4dGVuc2lvbk9wdGlvbnM6IFJlZHV4RGV2dG9vbHNFeHRlbnNpb25Db25maWcgPSB7XG4gICAgICBpbnN0YW5jZUlkOiBpbnN0YW5jZUlkLFxuICAgICAgbmFtZTogY29uZmlnLm5hbWUsXG4gICAgICBmZWF0dXJlczogY29uZmlnLmZlYXR1cmVzLFxuICAgICAgc2VyaWFsaXplOiBjb25maWcuc2VyaWFsaXplLFxuICAgICAgLy8gVGhlIGFjdGlvbi9zdGF0ZSBzYW5pdGl6ZXJzIGFyZSBub3QgYWRkZWQgdG8gdGhlIGNvbmZpZ1xuICAgICAgLy8gYmVjYXVzZSBzYW5pdGF0aW9uIGlzIGRvbmUgaW4gdGhpcyBjbGFzcyBhbHJlYWR5LlxuICAgICAgLy8gSXQgaXMgZG9uZSBiZWZvcmUgc2VuZGluZyBpdCB0byB0aGUgZGV2dG9vbHMgZXh0ZW5zaW9uIGZvciBjb25zaXN0ZW5jeTpcbiAgICAgIC8vIC0gSWYgd2UgY2FsbCBleHRlbnNpb25Db25uZWN0aW9uLnNlbmQoLi4uKSxcbiAgICAgIC8vICAgdGhlIGV4dGVuc2lvbiB3b3VsZCBjYWxsIHRoZSBzYW5pdGl6ZXJzLlxuICAgICAgLy8gLSBJZiB3ZSBjYWxsIGRldnRvb2xzRXh0ZW5zaW9uLnNlbmQoLi4uKSAoYWthIGZ1bGwgc3RhdGUgdXBkYXRlKSxcbiAgICAgIC8vICAgdGhlIGV4dGVuc2lvbiB3b3VsZCBOT1QgY2FsbCB0aGUgc2FuaXRpemVycywgc28gd2UgaGF2ZSB0byBkbyBpdCBvdXJzZWx2ZXMuXG4gICAgfTtcbiAgICBpZiAoY29uZmlnLm1heEFnZSAhPT0gZmFsc2UgLyogc3VwcG9ydCA9PT0gMCAqLykge1xuICAgICAgZXh0ZW5zaW9uT3B0aW9ucy5tYXhBZ2UgPSBjb25maWcubWF4QWdlO1xuICAgIH1cbiAgICByZXR1cm4gZXh0ZW5zaW9uT3B0aW9ucztcbiAgfVxufVxuIl19","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nimport { UPDATE, INIT, } from '@ngrx/store';\nimport { difference, liftAction } from './utils';\nimport * as Actions from './actions';\nimport { PerformAction } from './actions';\nexport const /** @type {?} */ INIT_ACTION = { type: INIT };\n/**\n * @record\n */\nexport function ComputedState() { }\nfunction ComputedState_tsickle_Closure_declarations() {\n /** @type {?} */\n ComputedState.prototype.state;\n /** @type {?} */\n ComputedState.prototype.error;\n}\n/**\n * @record\n */\nexport function LiftedAction() { }\nfunction LiftedAction_tsickle_Closure_declarations() {\n /** @type {?} */\n LiftedAction.prototype.type;\n /** @type {?} */\n LiftedAction.prototype.action;\n}\n/**\n * @record\n */\nexport function LiftedActions() { }\nfunction LiftedActions_tsickle_Closure_declarations() {\n /* TODO: handle strange member:\n [id: number]: LiftedAction;\n */\n}\n/**\n * @record\n */\nexport function LiftedState() { }\nfunction LiftedState_tsickle_Closure_declarations() {\n /** @type {?} */\n LiftedState.prototype.monitorState;\n /** @type {?} */\n LiftedState.prototype.nextActionId;\n /** @type {?} */\n LiftedState.prototype.actionsById;\n /** @type {?} */\n LiftedState.prototype.stagedActionIds;\n /** @type {?} */\n LiftedState.prototype.skippedActionIds;\n /** @type {?} */\n LiftedState.prototype.committedState;\n /** @type {?} */\n LiftedState.prototype.currentStateIndex;\n /** @type {?} */\n LiftedState.prototype.computedStates;\n}\n/**\n * Computes the next entry in the log by applying an action.\n * @param {?} reducer\n * @param {?} action\n * @param {?} state\n * @param {?} error\n * @param {?} errorHandler\n * @return {?}\n */\nfunction computeNextEntry(reducer, action, state, error, errorHandler) {\n if (error) {\n return {\n state,\n error: 'Interrupted by an error up the chain',\n };\n }\n let /** @type {?} */ nextState = state;\n let /** @type {?} */ nextError;\n try {\n nextState = reducer(state, action);\n }\n catch (/** @type {?} */ err) {\n nextError = err.toString();\n errorHandler.handleError(err.stack || err);\n }\n return {\n state: nextState,\n error: nextError,\n };\n}\n/**\n * Runs the reducer on invalidated actions to get a fresh computation log.\n * @param {?} computedStates\n * @param {?} minInvalidatedStateIndex\n * @param {?} reducer\n * @param {?} committedState\n * @param {?} actionsById\n * @param {?} stagedActionIds\n * @param {?} skippedActionIds\n * @param {?} errorHandler\n * @return {?}\n */\nfunction recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler) {\n // Optimization: exit early and return the same reference\n // if we know nothing could have changed.\n if (minInvalidatedStateIndex >= computedStates.length &&\n computedStates.length === stagedActionIds.length) {\n return computedStates;\n }\n const /** @type {?} */ nextComputedStates = computedStates.slice(0, minInvalidatedStateIndex);\n for (let /** @type {?} */ i = minInvalidatedStateIndex; i < stagedActionIds.length; i++) {\n const /** @type {?} */ actionId = stagedActionIds[i];\n const /** @type {?} */ action = actionsById[actionId].action;\n const /** @type {?} */ previousEntry = nextComputedStates[i - 1];\n const /** @type {?} */ previousState = previousEntry ? previousEntry.state : committedState;\n const /** @type {?} */ previousError = previousEntry ? previousEntry.error : undefined;\n const /** @type {?} */ shouldSkip = skippedActionIds.indexOf(actionId) > -1;\n const /** @type {?} */ entry = shouldSkip\n ? previousEntry\n : computeNextEntry(reducer, action, previousState, previousError, errorHandler);\n nextComputedStates.push(entry);\n }\n return nextComputedStates;\n}\n/**\n * @param {?=} initialCommittedState\n * @param {?=} monitorReducer\n * @return {?}\n */\nexport function liftInitialState(initialCommittedState, monitorReducer) {\n return {\n monitorState: monitorReducer(undefined, {}),\n nextActionId: 1,\n actionsById: { 0: liftAction(INIT_ACTION) },\n stagedActionIds: [0],\n skippedActionIds: [],\n committedState: initialCommittedState,\n currentStateIndex: 0,\n computedStates: [],\n };\n}\n/**\n * Creates a history state reducer from an app's reducer.\n * @param {?} initialCommittedState\n * @param {?} initialLiftedState\n * @param {?} errorHandler\n * @param {?=} monitorReducer\n * @param {?=} options\n * @return {?}\n */\nexport function liftReducerWith(initialCommittedState, initialLiftedState, errorHandler, monitorReducer, options = {}) {\n /**\n * Manages how the history actions modify the history state.\n */\n return (reducer) => (liftedState, liftedAction) => {\n let { monitorState, actionsById, nextActionId, stagedActionIds, skippedActionIds, committedState, currentStateIndex, computedStates, } = liftedState || initialLiftedState;\n if (!liftedState) {\n // Prevent mutating initialLiftedState\n actionsById = Object.create(actionsById);\n }\n /**\n * @param {?} n\n * @return {?}\n */\n function commitExcessActions(n) {\n // Auto-commits n-number of excess actions.\n let /** @type {?} */ excess = n;\n let /** @type {?} */ idsToDelete = stagedActionIds.slice(1, excess + 1);\n for (let /** @type {?} */ i = 0; i < idsToDelete.length; i++) {\n if (computedStates[i + 1].error) {\n // Stop if error is found. Commit actions up to error.\n excess = i;\n idsToDelete = stagedActionIds.slice(1, excess + 1);\n break;\n }\n else {\n delete actionsById[idsToDelete[i]];\n }\n }\n skippedActionIds = skippedActionIds.filter(id => idsToDelete.indexOf(id) === -1);\n stagedActionIds = [0, ...stagedActionIds.slice(excess + 1)];\n committedState = computedStates[excess].state;\n computedStates = computedStates.slice(excess);\n currentStateIndex =\n currentStateIndex > excess ? currentStateIndex - excess : 0;\n }\n // By default, aggressively recompute every state whatever happens.\n // This has O(n) performance, so we'll override this to a sensible\n // value whenever we feel like we don't have to recompute the states.\n let /** @type {?} */ minInvalidatedStateIndex = 0;\n switch (liftedAction.type) {\n case Actions.RESET: {\n // Get back to the state the store was created with.\n actionsById = { 0: liftAction(INIT_ACTION) };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n committedState = initialCommittedState;\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case Actions.COMMIT: {\n // Consider the last committed state the new starting point.\n // Squash any staged actions into a single committed state.\n actionsById = { 0: liftAction(INIT_ACTION) };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n committedState = computedStates[currentStateIndex].state;\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case Actions.ROLLBACK: {\n // Forget about any staged actions.\n // Start again from the last committed state.\n actionsById = { 0: liftAction(INIT_ACTION) };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case Actions.TOGGLE_ACTION: {\n // Toggle whether an action with given ID is skipped.\n // Being skipped means it is a no-op during the computation.\n const { id: actionId } = liftedAction;\n const /** @type {?} */ index = skippedActionIds.indexOf(actionId);\n if (index === -1) {\n skippedActionIds = [actionId, ...skippedActionIds];\n }\n else {\n skippedActionIds = skippedActionIds.filter(id => id !== actionId);\n }\n // Optimization: we know history before this action hasn't changed\n minInvalidatedStateIndex = stagedActionIds.indexOf(actionId);\n break;\n }\n case Actions.SET_ACTIONS_ACTIVE: {\n // Toggle whether an action with given ID is skipped.\n // Being skipped means it is a no-op during the computation.\n const { start, end, active } = liftedAction;\n const /** @type {?} */ actionIds = [];\n for (let /** @type {?} */ i = start; i < end; i++)\n actionIds.push(i);\n if (active) {\n skippedActionIds = difference(skippedActionIds, actionIds);\n }\n else {\n skippedActionIds = [...skippedActionIds, ...actionIds];\n }\n // Optimization: we know history before this action hasn't changed\n minInvalidatedStateIndex = stagedActionIds.indexOf(start);\n break;\n }\n case Actions.JUMP_TO_STATE: {\n // Without recomputing anything, move the pointer that tell us\n // which state is considered the current one. Useful for sliders.\n currentStateIndex = liftedAction.index;\n // Optimization: we know the history has not changed.\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case Actions.JUMP_TO_ACTION: {\n // Jumps to a corresponding state to a specific action.\n // Useful when filtering actions.\n const /** @type {?} */ index = stagedActionIds.indexOf(liftedAction.actionId);\n if (index !== -1)\n currentStateIndex = index;\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case Actions.SWEEP: {\n // Forget any actions that are currently being skipped.\n stagedActionIds = difference(stagedActionIds, skippedActionIds);\n skippedActionIds = [];\n currentStateIndex = Math.min(currentStateIndex, stagedActionIds.length - 1);\n break;\n }\n case Actions.PERFORM_ACTION: {\n // Auto-commit as new actions come in.\n if (options.maxAge && stagedActionIds.length === options.maxAge) {\n commitExcessActions(1);\n }\n if (currentStateIndex === stagedActionIds.length - 1) {\n currentStateIndex++;\n }\n const /** @type {?} */ actionId = nextActionId++;\n // Mutation! This is the hottest path, and we optimize on purpose.\n // It is safe because we set a new key in a cache dictionary.\n actionsById[actionId] = liftedAction;\n stagedActionIds = [...stagedActionIds, actionId];\n // Optimization: we know that only the new action needs computing.\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n break;\n }\n case Actions.IMPORT_STATE: {\n // Completely replace everything.\n ({\n monitorState,\n actionsById,\n nextActionId,\n stagedActionIds,\n skippedActionIds,\n committedState,\n currentStateIndex,\n computedStates,\n } = liftedAction.nextLiftedState);\n break;\n }\n case INIT: {\n // Always recompute states on hot reload and init.\n minInvalidatedStateIndex = 0;\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n // States must be recomputed before committing excess.\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler);\n commitExcessActions(stagedActionIds.length - options.maxAge);\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n break;\n }\n case UPDATE: {\n const /** @type {?} */ stateHasErrors = computedStates.filter(state => state.error).length > 0;\n if (stateHasErrors) {\n // Recompute all states\n minInvalidatedStateIndex = 0;\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n // States must be recomputed before committing excess.\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler);\n commitExcessActions(stagedActionIds.length - options.maxAge);\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n }\n else {\n if (currentStateIndex === stagedActionIds.length - 1) {\n currentStateIndex++;\n }\n // Add a new action to only recompute state\n const /** @type {?} */ actionId = nextActionId++;\n actionsById[actionId] = new PerformAction(liftedAction, +Date.now());\n stagedActionIds = [...stagedActionIds, actionId];\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n // States must be recomputed before committing excess.\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler);\n // Recompute state history with latest reducer and update action\n computedStates = computedStates.map(cmp => (Object.assign({}, cmp, { state: reducer(cmp.state, liftedAction) })));\n currentStateIndex = minInvalidatedStateIndex;\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n commitExcessActions(stagedActionIds.length - options.maxAge);\n }\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n break;\n }\n default: {\n // If the action is not recognized, it's a monitor action.\n // Optimization: a monitor action can't change history.\n minInvalidatedStateIndex = Infinity;\n break;\n }\n }\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds, errorHandler);\n monitorState = monitorReducer(monitorState, liftedAction);\n return {\n monitorState,\n actionsById,\n nextActionId,\n stagedActionIds,\n skippedActionIds,\n committedState,\n currentStateIndex,\n computedStates,\n };\n };\n}\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc3RvcmUtZGV2dG9vbHMvc3JjL3JlZHVjZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFLTCxNQUFNLEVBQ04sSUFBSSxHQUNMLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pELE9BQU8sS0FBSyxPQUFPLE1BQU0sV0FBVyxDQUFDO0FBRXJDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFhMUMsTUFBTSxDQUFDLHVCQUFNLFdBQVcsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQThCMUMsMEJBQ0UsT0FBZ0MsRUFDaEMsTUFBYyxFQUNkLEtBQVUsRUFDVixLQUFVLEVBQ1YsWUFBMEI7SUFFMUIsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNWLE1BQU0sQ0FBQztZQUNMLEtBQUs7WUFDTCxLQUFLLEVBQUUsc0NBQXNDO1NBQzlDLENBQUM7S0FDSDtJQUVELHFCQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDdEIscUJBQUksU0FBUyxDQUFDO0lBQ2QsSUFBSSxDQUFDO1FBQ0gsU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDcEM7SUFBQyxLQUFLLENBQUMsQ0FBQyxpQkFBQSxHQUFHLEVBQUUsQ0FBQztRQUNiLFNBQVMsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0IsWUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0tBQzVDO0lBRUQsTUFBTSxDQUFDO1FBQ0wsS0FBSyxFQUFFLFNBQVM7UUFDaEIsS0FBSyxFQUFFLFNBQVM7S0FDakIsQ0FBQztDQUNIOzs7Ozs7Ozs7Ozs7O0FBS0QseUJBQ0UsY0FBK0IsRUFDL0Isd0JBQWdDLEVBQ2hDLE9BQWdDLEVBQ2hDLGNBQW1CLEVBQ25CLFdBQTBCLEVBQzFCLGVBQXlCLEVBQ3pCLGdCQUEwQixFQUMxQixZQUEwQjs7O0lBSTFCLEVBQUUsQ0FBQyxDQUNELHdCQUF3QixJQUFJLGNBQWMsQ0FBQyxNQUFNO1FBQ2pELGNBQWMsQ0FBQyxNQUFNLEtBQUssZUFBZSxDQUFDLE1BQzVDLENBQUMsQ0FBQyxDQUFDO1FBQ0QsTUFBTSxDQUFDLGNBQWMsQ0FBQztLQUN2QjtJQUVELHVCQUFNLGtCQUFrQixHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLHdCQUF3QixDQUFDLENBQUM7SUFDN0UsR0FBRyxDQUFDLENBQUMscUJBQUksQ0FBQyxHQUFHLHdCQUF3QixFQUFFLENBQUMsR0FBRyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdkUsdUJBQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyx1QkFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUU1Qyx1QkFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2hELHVCQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUMzRSx1QkFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFdEUsdUJBQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzRCx1QkFBTSxLQUFLLEdBQWtCLFVBQVU7WUFDckMsQ0FBQyxDQUFDLGFBQWE7WUFDZixDQUFDLENBQUMsZ0JBQWdCLENBQ2QsT0FBTyxFQUNQLE1BQU0sRUFDTixhQUFhLEVBQ2IsYUFBYSxFQUNiLFlBQVksQ0FDYixDQUFDO1FBRU4sa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2hDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDO0NBQzNCOzs7Ozs7QUFFRCxNQUFNLDJCQUNKLHFCQUEyQixFQUMzQixjQUFvQjtJQUVwQixNQUFNLENBQUM7UUFDTCxZQUFZLEVBQUUsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7UUFDM0MsWUFBWSxFQUFFLENBQUM7UUFDZixXQUFXLEVBQUUsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQzNDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwQixnQkFBZ0IsRUFBRSxFQUFFO1FBQ3BCLGNBQWMsRUFBRSxxQkFBcUI7UUFDckMsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQixjQUFjLEVBQUUsRUFBRTtLQUNuQixDQUFDO0NBQ0g7Ozs7Ozs7Ozs7QUFLRCxNQUFNLDBCQUNKLHFCQUEwQixFQUMxQixrQkFBK0IsRUFDL0IsWUFBMEIsRUFDMUIsY0FBb0IsRUFDcEIsVUFBd0MsRUFBRTs7OztJQUsxQyxNQUFNLENBQUMsQ0FDTCxPQUFnQyxFQUNLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsRUFBRTtRQUN0RSxJQUFJLEVBQ0YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osZUFBZSxFQUNmLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLGNBQWMsR0FDZixHQUNDLFdBQVcsSUFBSSxrQkFBa0IsQ0FBQztRQUVwQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7O1lBRWpCLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzFDOzs7OztRQUVELDZCQUE2QixDQUFTOztZQUVwQyxxQkFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2YscUJBQUksV0FBVyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUV2RCxHQUFHLENBQUMsQ0FBQyxxQkFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzVDLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzs7b0JBRWhDLE1BQU0sR0FBRyxDQUFDLENBQUM7b0JBQ1gsV0FBVyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDbkQsS0FBSyxDQUFDO2lCQUNQO2dCQUFDLElBQUksQ0FBQyxDQUFDO29CQUNOLE9BQU8sV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNwQzthQUNGO1lBRUQsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUN4QyxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3JDLENBQUM7WUFDRixlQUFlLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVELGNBQWMsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzlDLGNBQWMsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzlDLGlCQUFpQjtnQkFDZixpQkFBaUIsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQy9EOzs7O1FBS0QscUJBQUksd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO1FBRWpDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzFCLEtBQUssT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDOztnQkFFbkIsV0FBVyxHQUFHLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUM3QyxZQUFZLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQixlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEIsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixjQUFjLEdBQUcscUJBQXFCLENBQUM7Z0JBQ3ZDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztnQkFDdEIsY0FBYyxHQUFHLEVBQUUsQ0FBQztnQkFDcEIsS0FBSyxDQUFDO2FBQ1A7WUFDRCxLQUFLLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQzs7O2dCQUdwQixXQUFXLEdBQUcsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQzdDLFlBQVksR0FBRyxDQUFDLENBQUM7Z0JBQ2pCLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixnQkFBZ0IsR0FBRyxFQUFFLENBQUM7Z0JBQ3RCLGNBQWMsR0FBRyxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQ3pELGlCQUFpQixHQUFHLENBQUMsQ0FBQztnQkFDdEIsY0FBYyxHQUFHLEVBQUUsQ0FBQztnQkFDcEIsS0FBSyxDQUFDO2FBQ1A7WUFDRCxLQUFLLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQzs7O2dCQUd0QixXQUFXLEdBQUcsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQzdDLFlBQVksR0FBRyxDQUFDLENBQUM7Z0JBQ2pCLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixnQkFBZ0IsR0FBRyxFQUFFLENBQUM7Z0JBQ3RCLGlCQUFpQixHQUFHLENBQUMsQ0FBQztnQkFDdEIsY0FBYyxHQUFHLEVBQUUsQ0FBQztnQkFDcEIsS0FBSyxDQUFDO2FBQ1A7WUFDRCxLQUFLLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQzs7O2dCQUczQixNQUFNLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxHQUFHLFlBQVksQ0FBQztnQkFDdEMsdUJBQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDakQsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDakIsZ0JBQWdCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO2lCQUNwRDtnQkFBQyxJQUFJLENBQUMsQ0FBQztvQkFDTixnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUM7aUJBQ25FOztnQkFFRCx3QkFBd0IsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM3RCxLQUFLLENBQUM7YUFDUDtZQUNELEtBQUssT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7OztnQkFHaEMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsWUFBWSxDQUFDO2dCQUM1Qyx1QkFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO2dCQUNyQixHQUFHLENBQUMsQ0FBQyxxQkFBSSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFO29CQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BELEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBQ1gsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFDO2lCQUM1RDtnQkFBQyxJQUFJLENBQUMsQ0FBQztvQkFDTixnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztpQkFDeEQ7O2dCQUdELHdCQUF3QixHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFELEtBQUssQ0FBQzthQUNQO1lBQ0QsS0FBSyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7OztnQkFHM0IsaUJBQWlCLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQzs7Z0JBRXZDLHdCQUF3QixHQUFHLFFBQVEsQ0FBQztnQkFDcEMsS0FBSyxDQUFDO2FBQ1A7WUFDRCxLQUFLLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQzs7O2dCQUc1Qix1QkFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzdELEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7Z0JBQzVDLHdCQUF3QixHQUFHLFFBQVEsQ0FBQztnQkFDcEMsS0FBSyxDQUFDO2FBQ1A7WUFDRCxLQUFLLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQzs7Z0JBRW5CLGVBQWUsR0FBRyxVQUFVLENBQUMsZUFBZSxFQUFFLGdCQUFnQixDQUFDLENBQUM7Z0JBQ2hFLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztnQkFDdEIsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDMUIsaUJBQWlCLEVBQ2pCLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUMzQixDQUFDO2dCQUNGLEtBQUssQ0FBQzthQUNQO1lBQ0QsS0FBSyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7O2dCQUU1QixFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLGVBQWUsQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBQ2hFLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN4QjtnQkFFRCxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsS0FBSyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3JELGlCQUFpQixFQUFFLENBQUM7aUJBQ3JCO2dCQUNELHVCQUFNLFFBQVEsR0FBRyxZQUFZLEVBQUUsQ0FBQzs7O2dCQUdoQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsWUFBWSxDQUFDO2dCQUVyQyxlQUFlLEdBQUcsQ0FBQyxHQUFHLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQzs7Z0JBRWpELHdCQUF3QixHQUFHLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2dCQUN0RCxLQUFLLENBQUM7YUFDUDtZQUNELEtBQUssT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDOztnQkFFMUIsQ0FBQztvQkFDQyxZQUFZO29CQUNaLFdBQVc7b0JBQ1gsWUFBWTtvQkFDWixlQUFlO29CQUNmLGdCQUFnQjtvQkFDaEIsY0FBYztvQkFDZCxpQkFBaUI7b0JBQ2pCLGNBQWM7aUJBQ2YsR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ2xDLEtBQUssQ0FBQzthQUNQO1lBQ0QsS0FBSyxJQUFJLEVBQUUsQ0FBQzs7Z0JBRVYsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO2dCQUU3QixFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLGVBQWUsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7O29CQUU5RCxjQUFjLEdBQUcsZUFBZSxDQUM5QixjQUFjLEVBQ2Qsd0JBQXdCLEVBQ3hCLE9BQU8sRUFDUCxjQUFjLEVBQ2QsV0FBVyxFQUNYLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsWUFBWSxDQUNiLENBQUM7b0JBRUYsbUJBQW1CLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7O29CQUc3RCx3QkFBd0IsR0FBRyxRQUFRLENBQUM7aUJBQ3JDO2dCQUVELEtBQUssQ0FBQzthQUNQO1lBQ0QsS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDWix1QkFBTSxjQUFjLEdBQ2xCLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztnQkFFekQsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQzs7b0JBRW5CLHdCQUF3QixHQUFHLENBQUMsQ0FBQztvQkFFN0IsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDOzt3QkFFOUQsY0FBYyxHQUFHLGVBQWUsQ0FDOUIsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixPQUFPLEVBQ1AsY0FBYyxFQUNkLFdBQVcsRUFDWCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLFlBQVksQ0FDYixDQUFDO3dCQUVGLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDOzt3QkFHN0Qsd0JBQXdCLEdBQUcsUUFBUSxDQUFDO3FCQUNyQztpQkFDRjtnQkFBQyxJQUFJLENBQUMsQ0FBQztvQkFDTixFQUFFLENBQUMsQ0FBQyxpQkFBaUIsS0FBSyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3JELGlCQUFpQixFQUFFLENBQUM7cUJBQ3JCOztvQkFHRCx1QkFBTSxRQUFRLEdBQUcsWUFBWSxFQUFFLENBQUM7b0JBQ2hDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztvQkFDckUsZUFBZSxHQUFHLENBQUMsR0FBRyxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBRWpELHdCQUF3QixHQUFHLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDOztvQkFHdEQsY0FBYyxHQUFHLGVBQWUsQ0FDOUIsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixPQUFPLEVBQ1AsY0FBYyxFQUNkLFdBQVcsRUFDWCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLFlBQVksQ0FDYixDQUFDOztvQkFHRixjQUFjLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLG1CQUN0QyxHQUFHLElBQ04sS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxJQUN2QyxDQUFDLENBQUM7b0JBRUosaUJBQWlCLEdBQUcsd0JBQXdCLENBQUM7b0JBRTdDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzt3QkFDOUQsbUJBQW1CLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7cUJBQzlEOztvQkFHRCx3QkFBd0IsR0FBRyxRQUFRLENBQUM7aUJBQ3JDO2dCQUVELEtBQUssQ0FBQzthQUNQO1lBQ0QsU0FBUyxDQUFDOzs7Z0JBR1Isd0JBQXdCLEdBQUcsUUFBUSxDQUFDO2dCQUNwQyxLQUFLLENBQUM7YUFDUDtTQUNGO1FBRUQsY0FBYyxHQUFHLGVBQWUsQ0FDOUIsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixPQUFPLEVBQ1AsY0FBYyxFQUNkLFdBQVcsRUFDWCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLFlBQVksQ0FDYixDQUFDO1FBQ0YsWUFBWSxHQUFHLGNBQWMsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFMUQsTUFBTSxDQUFDO1lBQ0wsWUFBWTtZQUNaLFdBQVc7WUFDWCxZQUFZO1lBQ1osZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLGNBQWM7U0FDZixDQUFDO0tBQ0gsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXJyb3JIYW5kbGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3Rpb24sXG4gIEFjdGlvblJlZHVjZXIsXG4gIEFjdGlvbnNTdWJqZWN0LFxuICBSZWR1Y2VyTWFuYWdlcixcbiAgVVBEQVRFLFxuICBJTklULFxufSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBkaWZmZXJlbmNlLCBsaWZ0QWN0aW9uIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgKiBhcyBBY3Rpb25zIGZyb20gJy4vYWN0aW9ucyc7XG5pbXBvcnQgeyBTdG9yZURldnRvb2xzQ29uZmlnLCBTdGF0ZVNhbml0aXplciB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IFBlcmZvcm1BY3Rpb24gfSBmcm9tICcuL2FjdGlvbnMnO1xuXG5leHBvcnQgdHlwZSBJbml0QWN0aW9uID0ge1xuICByZWFkb25seSB0eXBlOiB0eXBlb2YgSU5JVDtcbn07XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZVJlZHVjZXJBY3Rpb24gPSB7XG4gIHJlYWRvbmx5IHR5cGU6IHR5cGVvZiBVUERBVEU7XG59O1xuXG5leHBvcnQgdHlwZSBDb3JlQWN0aW9ucyA9IEluaXRBY3Rpb24gfCBVcGRhdGVSZWR1Y2VyQWN0aW9uO1xuZXhwb3J0IHR5cGUgQWN0aW9ucyA9IEFjdGlvbnMuQWxsIHwgQ29yZUFjdGlvbnM7XG5cbmV4cG9ydCBjb25zdCBJTklUX0FDVElPTiA9IHsgdHlwZTogSU5JVCB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkU3RhdGUge1xuICBzdGF0ZTogYW55O1xuICBlcnJvcjogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpZnRlZEFjdGlvbiB7XG4gIHR5cGU6IHN0cmluZztcbiAgYWN0aW9uOiBBY3Rpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlmdGVkQWN0aW9ucyB7XG4gIFtpZDogbnVtYmVyXTogTGlmdGVkQWN0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpZnRlZFN0YXRlIHtcbiAgbW9uaXRvclN0YXRlOiBhbnk7XG4gIG5leHRBY3Rpb25JZDogbnVtYmVyO1xuICBhY3Rpb25zQnlJZDogTGlmdGVkQWN0aW9ucztcbiAgc3RhZ2VkQWN0aW9uSWRzOiBudW1iZXJbXTtcbiAgc2tpcHBlZEFjdGlvbklkczogbnVtYmVyW107XG4gIGNvbW1pdHRlZFN0YXRlOiBhbnk7XG4gIGN1cnJlbnRTdGF0ZUluZGV4OiBudW1iZXI7XG4gIGNvbXB1dGVkU3RhdGVzOiBDb21wdXRlZFN0YXRlW107XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIG5leHQgZW50cnkgaW4gdGhlIGxvZyBieSBhcHBseWluZyBhbiBhY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNvbXB1dGVOZXh0RW50cnkoXG4gIHJlZHVjZXI6IEFjdGlvblJlZHVjZXI8YW55LCBhbnk+LFxuICBhY3Rpb246IEFjdGlvbixcbiAgc3RhdGU6IGFueSxcbiAgZXJyb3I6IGFueSxcbiAgZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXJcbikge1xuICBpZiAoZXJyb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGUsXG4gICAgICBlcnJvcjogJ0ludGVycnVwdGVkIGJ5IGFuIGVycm9yIHVwIHRoZSBjaGFpbicsXG4gICAgfTtcbiAgfVxuXG4gIGxldCBuZXh0U3RhdGUgPSBzdGF0ZTtcbiAgbGV0IG5leHRFcnJvcjtcbiAgdHJ5IHtcbiAgICBuZXh0U3RhdGUgPSByZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBuZXh0RXJyb3IgPSBlcnIudG9TdHJpbmcoKTtcbiAgICBlcnJvckhhbmRsZXIuaGFuZGxlRXJyb3IoZXJyLnN0YWNrIHx8IGVycik7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN0YXRlOiBuZXh0U3RhdGUsXG4gICAgZXJyb3I6IG5leHRFcnJvcixcbiAgfTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSByZWR1Y2VyIG9uIGludmFsaWRhdGVkIGFjdGlvbnMgdG8gZ2V0IGEgZnJlc2ggY29tcHV0YXRpb24gbG9nLlxuICovXG5mdW5jdGlvbiByZWNvbXB1dGVTdGF0ZXMoXG4gIGNvbXB1dGVkU3RhdGVzOiBDb21wdXRlZFN0YXRlW10sXG4gIG1pbkludmFsaWRhdGVkU3RhdGVJbmRleDogbnVtYmVyLFxuICByZWR1Y2VyOiBBY3Rpb25SZWR1Y2VyPGFueSwgYW55PixcbiAgY29tbWl0dGVkU3RhdGU6IGFueSxcbiAgYWN0aW9uc0J5SWQ6IExpZnRlZEFjdGlvbnMsXG4gIHN0YWdlZEFjdGlvbklkczogbnVtYmVyW10sXG4gIHNraXBwZWRBY3Rpb25JZHM6IG51bWJlcltdLFxuICBlcnJvckhhbmRsZXI6IEVycm9ySGFuZGxlclxuKSB7XG4gIC8vIE9wdGltaXphdGlvbjogZXhpdCBlYXJseSBhbmQgcmV0dXJuIHRoZSBzYW1lIHJlZmVyZW5jZVxuICAvLyBpZiB3ZSBrbm93IG5vdGhpbmcgY291bGQgaGF2ZSBjaGFuZ2VkLlxuICBpZiAoXG4gICAgbWluSW52YWxpZGF0ZWRTdGF0ZUluZGV4ID49IGNvbXB1dGVkU3RhdGVzLmxlbmd0aCAmJlxuICAgIGNvbXB1dGVkU3RhdGVzLmxlbmd0aCA9PT0gc3RhZ2VkQWN0aW9uSWRzLmxlbmd0aFxuICApIHtcbiAgICByZXR1cm4gY29tcHV0ZWRTdGF0ZXM7XG4gIH1cblxuICBjb25zdCBuZXh0Q29tcHV0ZWRTdGF0ZXMgPSBjb21wdXRlZFN0YXRlcy5zbGljZSgwLCBtaW5JbnZhbGlkYXRlZFN0YXRlSW5kZXgpO1xuICBmb3IgKGxldCBpID0gbWluSW52YWxpZGF0ZWRTdGF0ZUluZGV4OyBpIDwgc3RhZ2VkQWN0aW9uSWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgYWN0aW9uSWQgPSBzdGFnZWRBY3Rpb25JZHNbaV07XG4gICAgY29uc3QgYWN0aW9uID0gYWN0aW9uc0J5SWRbYWN0aW9uSWRdLmFjdGlvbjtcblxuICAgIGNvbnN0IHByZXZpb3VzRW50cnkgPSBuZXh0Q29tcHV0ZWRTdGF0ZXNbaSAtIDFdO1xuICAgIGNvbnN0IHByZXZpb3VzU3RhdGUgPSBwcmV2aW91c0VudHJ5ID8gcHJldmlvdXNFbnRyeS5zdGF0ZSA6IGNvbW1pdHRlZFN0YXRlO1xuICAgIGNvbnN0IHByZXZpb3VzRXJyb3IgPSBwcmV2aW91c0VudHJ5ID8gcHJldmlvdXNFbnRyeS5lcnJvciA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHNob3VsZFNraXAgPSBza2lwcGVkQWN0aW9uSWRzLmluZGV4T2YoYWN0aW9uSWQpID4gLTE7XG4gICAgY29uc3QgZW50cnk6IENvbXB1dGVkU3RhdGUgPSBzaG91bGRTa2lwXG4gICAgICA/IHByZXZpb3VzRW50cnlcbiAgICAgIDogY29tcHV0ZU5leHRFbnRyeShcbiAgICAgICAgICByZWR1Y2VyLFxuICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICBwcmV2aW91c1N0YXRlLFxuICAgICAgICAgIHByZXZpb3VzRXJyb3IsXG4gICAgICAgICAgZXJyb3JIYW5kbGVyXG4gICAgICAgICk7XG5cbiAgICBuZXh0Q29tcHV0ZWRTdGF0ZXMucHVzaChlbnRyeSk7XG4gIH1cblxuICByZXR1cm4gbmV4dENvbXB1dGVkU3RhdGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlmdEluaXRpYWxTdGF0ZShcbiAgaW5pdGlhbENvbW1pdHRlZFN0YXRlPzogYW55LFxuICBtb25pdG9yUmVkdWNlcj86IGFueVxuKTogTGlmdGVkU3RhdGUge1xuICByZXR1cm4ge1xuICAgIG1vbml0b3JTdGF0ZTogbW9uaXRvclJlZHVjZXIodW5kZWZpbmVkLCB7fSksXG4gICAgbmV4dEFjdGlvbklkOiAxLFxuICAgIGFjdGlvbnNCeUlkOiB7IDA6IGxpZnRBY3Rpb24oSU5JVF9BQ1RJT04pIH0sXG4gICAgc3RhZ2VkQWN0aW9uSWRzOiBbMF0sXG4gICAgc2tpcHBlZEFjdGlvbklkczogW10sXG4gICAgY29tbWl0dGVkU3RhdGU6IGluaXRpYWxDb21taXR0ZWRTdGF0ZSxcbiAgICBjdXJyZW50U3RhdGVJbmRleDogMCxcbiAgICBjb21wdXRlZFN0YXRlczogW10sXG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGhpc3Rvcnkgc3RhdGUgcmVkdWNlciBmcm9tIGFuIGFwcCdzIHJlZHVjZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaWZ0UmVkdWNlcldpdGgoXG4gIGluaXRpYWxDb21taXR0ZWRTdGF0ZTogYW55LFxuICBpbml0aWFsTGlmdGVkU3RhdGU6IExpZnRlZFN0YXRlLFxuICBlcnJvckhhbmRsZXI6IEVycm9ySGFuZGxlcixcbiAgbW9uaXRvclJlZHVjZXI/OiBhbnksXG4gIG9wdGlvbnM6IFBhcnRpYWw8U3RvcmVEZXZ0b29sc0NvbmZpZz4gPSB7fVxuKSB7XG4gIC8qKlxuICAgKiBNYW5hZ2VzIGhvdyB0aGUgaGlzdG9yeSBhY3Rpb25zIG1vZGlmeSB0aGUgaGlzdG9yeSBzdGF0ZS5cbiAgICovXG4gIHJldHVybiAoXG4gICAgcmVkdWNlcjogQWN0aW9uUmVkdWNlcjxhbnksIGFueT5cbiAgKTogQWN0aW9uUmVkdWNlcjxMaWZ0ZWRTdGF0ZSwgQWN0aW9ucz4gPT4gKGxpZnRlZFN0YXRlLCBsaWZ0ZWRBY3Rpb24pID0+IHtcbiAgICBsZXQge1xuICAgICAgbW9uaXRvclN0YXRlLFxuICAgICAgYWN0aW9uc0J5SWQsXG4gICAgICBuZXh0QWN0aW9uSWQsXG4gICAgICBzdGFnZWRBY3Rpb25JZHMsXG4gICAgICBza2lwcGVkQWN0aW9uSWRzLFxuICAgICAgY29tbWl0dGVkU3RhdGUsXG4gICAgICBjdXJyZW50U3RhdGVJbmRleCxcbiAgICAgIGNvbXB1dGVkU3RhdGVzLFxuICAgIH0gPVxuICAgICAgbGlmdGVkU3RhdGUgfHwgaW5pdGlhbExpZnRlZFN0YXRlO1xuXG4gICAgaWYgKCFsaWZ0ZWRTdGF0ZSkge1xuICAgICAgLy8gUHJldmVudCBtdXRhdGluZyBpbml0aWFsTGlmdGVkU3RhdGVcbiAgICAgIGFjdGlvbnNCeUlkID0gT2JqZWN0LmNyZWF0ZShhY3Rpb25zQnlJZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tbWl0RXhjZXNzQWN0aW9ucyhuOiBudW1iZXIpIHtcbiAgICAgIC8vIEF1dG8tY29tbWl0cyBuLW51bWJlciBvZiBleGNlc3MgYWN0aW9ucy5cbiAgICAgIGxldCBleGNlc3MgPSBuO1xuICAgICAgbGV0IGlkc1RvRGVsZXRlID0gc3RhZ2VkQWN0aW9uSWRzLnNsaWNlKDEsIGV4Y2VzcyArIDEpO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlkc1RvRGVsZXRlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChjb21wdXRlZFN0YXRlc1tpICsgMV0uZXJyb3IpIHtcbiAgICAgICAgICAvLyBTdG9wIGlmIGVycm9yIGlzIGZvdW5kLiBDb21taXQgYWN0aW9ucyB1cCB0byBlcnJvci5cbiAgICAgICAgICBleGNlc3MgPSBpO1xuICAgICAgICAgIGlkc1RvRGVsZXRlID0gc3RhZ2VkQWN0aW9uSWRzLnNsaWNlKDEsIGV4Y2VzcyArIDEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlbGV0ZSBhY3Rpb25zQnlJZFtpZHNUb0RlbGV0ZVtpXV07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2tpcHBlZEFjdGlvbklkcyA9IHNraXBwZWRBY3Rpb25JZHMuZmlsdGVyKFxuICAgICAgICBpZCA9PiBpZHNUb0RlbGV0ZS5pbmRleE9mKGlkKSA9PT0gLTFcbiAgICAgICk7XG4gICAgICBzdGFnZWRBY3Rpb25JZHMgPSBbMCwgLi4uc3RhZ2VkQWN0aW9uSWRzLnNsaWNlKGV4Y2VzcyArIDEpXTtcbiAgICAgIGNvbW1pdHRlZFN0YXRlID0gY29tcHV0ZWRTdGF0ZXNbZXhjZXNzXS5zdGF0ZTtcbiAgICAgIGNvbXB1dGVkU3RhdGVzID0gY29tcHV0ZWRTdGF0ZXMuc2xpY2UoZXhjZXNzKTtcbiAgICAgIGN1cnJlbnRTdGF0ZUluZGV4ID1cbiAgICAgICAgY3VycmVudFN0YXRlSW5kZXggPiBleGNlc3MgPyBjdXJyZW50U3RhdGVJbmRleCAtIGV4Y2VzcyA6IDA7XG4gICAgfVxuXG4gICAgLy8gQnkgZGVmYXVsdCwgYWdncmVzc2l2ZWx5IHJlY29tcHV0ZSBldmVyeSBzdGF0ZSB3aGF0ZXZlciBoYXBwZW5zLlxuICAgIC8vIFRoaXMgaGFzIE8obikgcGVyZm9ybWFuY2UsIHNvIHdlJ2xsIG92ZXJyaWRlIHRoaXMgdG8gYSBzZW5zaWJsZVxuICAgIC8vIHZhbHVlIHdoZW5ldmVyIHdlIGZlZWwgbGlrZSB3ZSBkb24ndCBoYXZlIHRvIHJlY29tcHV0ZSB0aGUgc3RhdGVzLlxuICAgIGxldCBtaW5JbnZhbGlkYXRlZFN0YXRlSW5kZXggPSAwO1xuXG4gICAgc3dpdGNoIChsaWZ0ZWRBY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSBBY3Rpb25zLlJFU0VUOiB7XG4gICAgICAgIC8vIEdldCBiYWNrIHRvIHRoZSBzdGF0ZSB0aGUgc3RvcmUgd2FzIGNyZWF0ZWQgd2l0aC5cbiAgICAgICAgYWN0aW9uc0J5SWQgPSB7IDA6IGxpZnRBY3Rpb24oSU5JVF9BQ1RJT04pIH07XG4gICAgICAgIG5leHRBY3Rpb25JZCA9IDE7XG4gICAgICAgIHN0YWdlZEFjdGlvbklkcyA9IFswXTtcbiAgICAgICAgc2tpcHBlZEFjdGlvbklkcyA9IFtdO1xuICAgICAgICBjb21taXR0ZWRTdGF0ZSA9IGluaXRpYWxDb21taXR0ZWRTdGF0ZTtcbiAgICAgICAgY3VycmVudFN0YXRlSW5kZXggPSAwO1xuICAgICAgICBjb21wdXRlZFN0YXRlcyA9IFtdO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgQWN0aW9ucy5DT01NSVQ6IHtcbiAgICAgICAgLy8gQ29uc2lkZXIgdGhlIGxhc3QgY29tbWl0dGVkIHN0YXRlIHRoZSBuZXcgc3RhcnRpbmcgcG9pbnQuXG4gICAgICAgIC8vIFNxdWFzaCBhbnkgc3RhZ2VkIGFjdGlvbnMgaW50byBhIHNpbmdsZSBjb21taXR0ZWQgc3RhdGUuXG4gICAgICAgIGFjdGlvbnNCeUlkID0geyAwOiBsaWZ0QWN0aW9uKElOSVRfQUNUSU9OKSB9O1xuICAgICAgICBuZXh0QWN0aW9uSWQgPSAxO1xuICAgICAgICBzdGFnZWRBY3Rpb25JZHMgPSBbMF07XG4gICAgICAgIHNraXBwZWRBY3Rpb25JZHMgPSBbXTtcbiAgICAgICAgY29tbWl0dGVkU3RhdGUgPSBjb21wdXRlZFN0YXRlc1tjdXJyZW50U3RhdGVJbmRleF0uc3RhdGU7XG4gICAgICAgIGN1cnJlbnRTdGF0ZUluZGV4ID0gMDtcbiAgICAgICAgY29tcHV0ZWRTdGF0ZXMgPSBbXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEFjdGlvbnMuUk9MTEJBQ0s6IHtcbiAgICAgICAgLy8gRm9yZ2V0IGFib3V0IGFueSBzdGFnZWQgYWN0aW9ucy5cbiAgICAgICAgLy8gU3RhcnQgYWdhaW4gZnJvbSB0aGUgbGFzdCBjb21taXR0ZWQgc3RhdGUuXG4gICAgICAgIGFjdGlvbnNCeUlkID0geyAwOiBsaWZ0QWN0aW9uKElOSVRfQUNUSU9OKSB9O1xuICAgICAgICBuZXh0QWN0aW9uSWQgPSAxO1xuICAgICAgICBzdGFnZWRBY3Rpb25JZHMgPSBbMF07XG4gICAgICAgIHNraXBwZWRBY3Rpb25JZHMgPSBbXTtcbiAgICAgICAgY3VycmVudFN0YXRlSW5kZXggPSAwO1xuICAgICAgICBjb21wdXRlZFN0YXRlcyA9IFtdO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgQWN0aW9ucy5UT0dHTEVfQUNUSU9OOiB7XG4gICAgICAgIC8vIFRvZ2dsZSB3aGV0aGVyIGFuIGFjdGlvbiB3aXRoIGdpdmVuIElEIGlzIHNraXBwZWQuXG4gICAgICAgIC8vIEJlaW5nIHNraXBwZWQgbWVhbnMgaXQgaXMgYSBuby1vcCBkdXJpbmcgdGhlIGNvbXB1dGF0aW9uLlxuICAgICAgICBjb25zdCB7IGlkOiBhY3Rpb25JZCB9ID0gbGlmdGVkQWN0aW9uO1xuICAgICAgICBjb25zdCBpbmRleCA9IHNraXBwZWRBY3Rpb25JZHMuaW5kZXhPZihhY3Rpb25JZCk7XG4gICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICBza2lwcGVkQWN0aW9uSWRzID0gW2FjdGlvbklkLCAuLi5za2lwcGVkQWN0aW9uSWRzXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBza2lwcGVkQWN0aW9uSWRzID0gc2tpcHBlZEFjdGlvbklkcy5maWx0ZXIoaWQgPT4gaWQgIT09IGFjdGlvbklkKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBPcHRpbWl6YXRpb246IHdlIGtub3cgaGlzdG9yeSBiZWZvcmUgdGhpcyBhY3Rpb24gaGFzbid0IGNoYW5nZWRcbiAgICAgICAgbWluSW52YWxpZGF0ZWRTdGF0ZUluZGV4ID0gc3RhZ2VkQWN0aW9uSWRzLmluZGV4T2YoYWN0aW9uSWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgQWN0aW9ucy5TRVRfQUNUSU9OU19BQ1RJVkU6IHtcbiAgICAgICAgLy8gVG9nZ2xlIHdoZXRoZXIgYW4gYWN0aW9uIHdpdGggZ2l2ZW4gSUQgaXMgc2tpcHBlZC5cbiAgICAgICAgLy8gQmVpbmcgc2tpcHBlZCBtZWFucyBpdCBpcyBhIG5vLW9wIGR1cmluZyB0aGUgY29tcHV0YXRpb24uXG4gICAgICAgIGNvbnN0IHsgc3RhcnQsIGVuZCwgYWN0aXZlIH0gPSBsaWZ0ZWRBY3Rpb247XG4gICAgICAgIGNvbnN0IGFjdGlvbklkcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykgYWN0aW9uSWRzLnB1c2goaSk7XG4gICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICBza2lwcGVkQWN0aW9uSWRzID0gZGlmZmVyZW5jZShza2lwcGVkQWN0aW9uSWRzLCBhY3Rpb25JZHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNraXBwZWRBY3Rpb25JZHMgPSBbLi4uc2tpcHBlZEFjdGlvbklkcywgLi4uYWN0aW9uSWRzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9wdGltaXphdGlvbjogd2Uga25vdyBoaXN0b3J5IGJlZm9yZSB0aGlzIGFjdGlvbiBoYXNuJ3QgY2hhbmdlZFxuICAgICAgICBtaW5JbnZhbGlkYXRlZFN0YXRlSW5kZXggPSBzdGFnZWRBY3Rpb25JZHMuaW5kZXhPZihzdGFydCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBBY3Rpb25zLkpVTVBfVE9fU1RBVEU6IHtcbiAgICAgICAgLy8gV2l0aG91dCByZWNvbXB1dGluZyBhbnl0aGluZywgbW92ZSB0aGUgcG9pbnRlciB0aGF0IHRlbGwgdXNcbiAgICAgICAgLy8gd2hpY2ggc3RhdGUgaXMgY29uc2lkZXJlZCB0aGUgY3VycmVudCBvbmUuIFVzZWZ1bCBmb3Igc2xpZGVycy5cbiAgICAgICAgY3VycmVudFN0YXRlSW5kZXggPSBsaWZ0ZWRBY3Rpb24uaW5kZXg7XG4gICAgICAgIC8vIE9wdGltaXphdGlvbjogd2Uga25vdyB0aGUgaGlzdG9yeSBoYXMgbm90IGNoYW5nZWQuXG4gICAgICAgIG1pbkludmFsaWRhdGVkU3RhdGVJbmRleCA9IEluZmluaXR5O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgQWN0aW9ucy5KVU1QX1RPX0FDVElPTjoge1xuICAgICAgICAvLyBKdW1wcyB0byBhIGNvcnJlc3BvbmRpbmcgc3RhdGUgdG8gYSBzcGVjaWZpYyBhY3Rpb24uXG4gICAgICAgIC8vIFVzZWZ1bCB3aGVuIGZpbHRlcmluZyBhY3Rpb25zLlxuICAgICAgICBjb25zdCBpbmRleCA9IHN0YWdlZEFjdGlvbklkcy5pbmRleE9mKGxpZnRlZEFjdGlvbi5hY3Rpb25JZCk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIGN1cnJlbnRTdGF0ZUluZGV4ID0gaW5kZXg7XG4gICAgICAgIG1pbkludmFsaWRhdGVkU3RhdGVJbmRleCA9IEluZmluaXR5O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgQWN0aW9ucy5TV0VFUDoge1xuICAgICAgICAvLyBGb3JnZXQgYW55IGFjdGlvbnMgdGhhdCBhcmUgY3VycmVudGx5IGJlaW5nIHNraXBwZWQuXG4gICAgICAgIHN0YWdlZEFjdGlvbklkcyA9IGRpZmZlcmVuY2Uoc3RhZ2VkQWN0aW9uSWRzLCBza2lwcGVkQWN0aW9uSWRzKTtcbiAgICAgICAgc2tpcHBlZEFjdGlvbklkcyA9IFtdO1xuICAgICAgICBjdXJyZW50U3RhdGVJbmRleCA9IE1hdGgubWluKFxuICAgICAgICAgIGN1cnJlbnRTdGF0ZUluZGV4LFxuICAgICAgICAgIHN0YWdlZEFjdGlvbklkcy5sZW5ndGggLSAxXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBBY3Rpb25zLlBFUkZPUk1fQUNUSU9OOiB7XG4gICAgICAgIC8vIEF1dG8tY29tbWl0IGFzIG5ldyBhY3Rpb25zIGNvbWUgaW4uXG4gICAgICAgIGlmIChvcHRpb25zLm1heEFnZSAmJiBzdGFnZWRBY3Rpb25JZHMubGVuZ3RoID09PSBvcHRpb25zLm1heEFnZSkge1xuICAgICAgICAgIGNvbW1pdEV4Y2Vzc0FjdGlvbnMoMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3VycmVudFN0YXRlSW5kZXggPT09IHN0YWdlZEFjdGlvbklkcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgY3VycmVudFN0YXRlSW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY3Rpb25JZCA9IG5leHRBY3Rpb25JZCsrO1xuICAgICAgICAvLyBNdXRhdGlvbiEgVGhpcyBpcyB0aGUgaG90dGVzdCBwYXRoLCBhbmQgd2Ugb3B0aW1pemUgb24gcHVycG9zZS5cbiAgICAgICAgLy8gSXQgaXMgc2FmZSBiZWNhdXNlIHdlIHNldCBhIG5ldyBrZXkgaW4gYSBjYWNoZSBkaWN0aW9uYXJ5LlxuICAgICAgICBhY3Rpb25zQnlJZFthY3Rpb25JZF0gPSBsaWZ0ZWRBY3Rpb247XG5cbiAgICAgICAgc3RhZ2VkQWN0aW9uSWRzID0gWy4uLnN0YWdlZEFjdGlvbklkcywgYWN0aW9uSWRdO1xuICAgICAgICAvLyBPcHRpbWl6YXRpb246IHdlIGtub3cgdGhhdCBvbmx5IHRoZSBuZXcgYWN0aW9uIG5lZWRzIGNvbXB1dGluZy5cbiAgICAgICAgbWluSW52YWxpZGF0ZWRTdGF0ZUluZGV4ID0gc3RhZ2VkQWN0aW9uSWRzLmxlbmd0aCAtIDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBBY3Rpb25zLklNUE9SVF9TVEFURToge1xuICAgICAgICAvLyBDb21wbGV0ZWx5IHJlcGxhY2UgZXZlcnl0aGluZy5cbiAgICAgICAgKHtcbiAgICAgICAgICBtb25pdG9yU3RhdGUsXG4gICAgICAgICAgYWN0aW9uc0J5SWQsXG4gICAgICAgICAgbmV4dEFjdGlvbklkLFxuICAgICAgICAgIHN0YWdlZEFjdGlvbklkcyxcbiAgICAgICAgICBza2lwcGVkQWN0aW9uSWRzLFxuICAgICAgICAgIGNvbW1pdHRlZFN0YXRlLFxuICAgICAgICAgIGN1cnJlbnRTdGF0ZUluZGV4LFxuICAgICAgICAgIGNvbXB1dGVkU3RhdGVzLFxuICAgICAgICB9ID0gbGlmdGVkQWN0aW9uLm5leHRMaWZ0ZWRTdGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBJTklUOiB7XG4gICAgICAgIC8vIEFsd2F5cyByZWNvbXB1dGUgc3RhdGVzIG9uIGhvdCByZWxvYWQgYW5kIGluaXQuXG4gICAgICAgIG1pbkludmFsaWRhdGVkU3RhdGVJbmRleCA9IDA7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubWF4QWdlICYmIHN0YWdlZEFjdGlvbklkcy5sZW5ndGggPiBvcHRpb25zLm1heEFnZSkge1xuICAgICAgICAgIC8vIFN0YXRlcyBtdXN0IGJlIHJlY29tcHV0ZWQgYmVmb3JlIGNvbW1pdHRpbmcgZXhjZXNzLlxuICAgICAgICAgIGNvbXB1dGVkU3RhdGVzID0gcmVjb21wdXRlU3RhdGVzKFxuICAgICAgICAgICAgY29tcHV0ZWRTdGF0ZXMsXG4gICAgICAgICAgICBtaW5JbnZhbGlkYXRlZFN0YXRlSW5kZXgsXG4gICAgICAgICAgICByZWR1Y2VyLFxuICAgICAgICAgICAgY29tbWl0dGVkU3RhdGUsXG4gICAgICAgICAgICBhY3Rpb25zQnlJZCxcbiAgICAgICAgICAgIHN0YWdlZEFjdGlvbklkcyxcbiAgICAgICAgICAgIHNraXBwZWRBY3Rpb25JZHMsXG4gICAgICAgICAgICBlcnJvckhhbmRsZXJcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29tbWl0RXhjZXNzQWN0aW9ucyhzdGFnZWRBY3Rpb25JZHMubGVuZ3RoIC0gb3B0aW9ucy5tYXhBZ2UpO1xuXG4gICAgICAgICAgLy8gQXZvaWQgZG91YmxlIGNvbXB1dGF0aW9uLlxuICAgICAgICAgIG1pbkludmFsaWRhdGVkU3RhdGVJbmRleCA9IEluZmluaXR5O1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFVQREFURToge1xuICAgICAgICBjb25zdCBzdGF0ZUhhc0Vycm9ycyA9XG4gICAgICAgICAgY29tcHV0ZWRTdGF0ZXMuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmVycm9yKS5sZW5ndGggPiAwO1xuXG4gICAgICAgIGlmIChzdGF0ZUhhc0Vycm9ycykge1xuICAgICAgICAgIC8vIFJlY29tcHV0ZSBhbGwgc3RhdGVzXG4gICAgICAgICAgbWluSW52YWxpZGF0ZWRTdGF0ZUluZGV4ID0gMDtcblxuICAgICAgICAgIGlmIChvcHRpb25zLm1heEFnZSAmJiBzdGFnZWRBY3Rpb25JZHMubGVuZ3RoID4gb3B0aW9ucy5tYXhBZ2UpIHtcbiAgICAgICAgICAgIC8vIFN0YXRlcyBtdXN0IGJlIHJlY29tcHV0ZWQgYmVmb3JlIGNvbW1pdHRpbmcgZXhjZXNzLlxuICAgICAgICAgICAgY29tcHV0ZWRTdGF0ZXMgPSByZWNvbXB1dGVTdGF0ZXMoXG4gICAgICAgICAgICAgIGNvbXB1dGVkU3RhdGVzLFxuICAgICAgICAgICAgICBtaW5JbnZhbGlkYXRlZFN0YXRlSW5kZXgsXG4gICAgICAgICAgICAgIHJlZHVjZXIsXG4gICAgICAgICAgICAgIGNvbW1pdHRlZFN0YXRlLFxuICAgICAgICAgICAgICBhY3Rpb25zQnlJZCxcbiAgICAgICAgICAgICAgc3RhZ2VkQWN0aW9uSWRzLFxuICAgICAgICAgICAgICBza2lwcGVkQWN0aW9uSWRzLFxuICAgICAgICAgICAgICBlcnJvckhhbmRsZXJcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbW1pdEV4Y2Vzc0FjdGlvbnMoc3RhZ2VkQWN0aW9uSWRzLmxlbmd0aCAtIG9wdGlvbnMubWF4QWdlKTtcblxuICAgICAgICAgICAgLy8gQXZvaWQgZG91YmxlIGNvbXB1dGF0aW9uLlxuICAgICAgICAgICAgbWluSW52YWxpZGF0ZWRTdGF0ZUluZGV4ID0gSW5maW5pdHk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChjdXJyZW50U3RhdGVJbmRleCA9PT0gc3RhZ2VkQWN0aW9uSWRzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGN1cnJlbnRTdGF0ZUluZGV4Kys7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQWRkIGEgbmV3IGFjdGlvbiB0byBvbmx5IHJlY29tcHV0ZSBzdGF0ZVxuICAgICAgICAgIGNvbnN0IGFjdGlvbklkID0gbmV4dEFjdGlvbklkKys7XG4gICAgICAgICAgYWN0aW9uc0J5SWRbYWN0aW9uSWRdID0gbmV3IFBlcmZvcm1BY3Rpb24obGlmdGVkQWN0aW9uLCArRGF0ZS5ub3coKSk7XG4gICAgICAgICAgc3RhZ2VkQWN0aW9uSWRzID0gWy4uLnN0YWdlZEFjdGlvbklkcywgYWN0aW9uSWRdO1xuXG4gICAgICAgICAgbWluSW52YWxpZGF0ZWRTdGF0ZUluZGV4ID0gc3RhZ2VkQWN0aW9uSWRzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgICAvLyBTdGF0ZXMgbXVzdCBiZSByZWNvbXB1dGVkIGJlZm9yZSBjb21taXR0aW5nIGV4Y2Vzcy5cbiAgICAgICAgICBjb21wdXRlZFN0YXRlcyA9IHJlY29tcHV0ZVN0YXRlcyhcbiAgICAgICAgICAgIGNvbXB1dGVkU3RhdGVzLFxuICAgICAgICAgICAgbWluSW52YWxpZGF0ZWRTdGF0ZUluZGV4LFxuICAgICAgICAgICAgcmVkdWNlcixcbiAgICAgICAgICAgIGNvbW1pdHRlZFN0YXRlLFxuICAgICAgICAgICAgYWN0aW9uc0J5SWQsXG4gICAgICAgICAgICBzdGFnZWRBY3Rpb25JZHMsXG4gICAgICAgICAgICBza2lwcGVkQWN0aW9uSWRzLFxuICAgICAgICAgICAgZXJyb3JIYW5kbGVyXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8vIFJlY29tcHV0ZSBzdGF0ZSBoaXN0b3J5IHdpdGggbGF0ZXN0IHJlZHVjZXIgYW5kIHVwZGF0ZSBhY3Rpb25cbiAgICAgICAgICBjb21wdXRlZFN0YXRlcyA9IGNvbXB1dGVkU3RhdGVzLm1hcChjbXAgPT4gKHtcbiAgICAgICAgICAgIC4uLmNtcCxcbiAgICAgICAgICAgIHN0YXRlOiByZWR1Y2VyKGNtcC5zdGF0ZSwgbGlmdGVkQWN0aW9uKSxcbiAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICBjdXJyZW50U3RhdGVJbmRleCA9IG1pbkludmFsaWRhdGVkU3RhdGVJbmRleDtcblxuICAgICAgICAgIGlmIChvcHRpb25zLm1heEFnZSAmJiBzdGFnZWRBY3Rpb25JZHMubGVuZ3RoID4gb3B0aW9ucy5tYXhBZ2UpIHtcbiAgICAgICAgICAgIGNvbW1pdEV4Y2Vzc0FjdGlvbnMoc3RhZ2VkQWN0aW9uSWRzLmxlbmd0aCAtIG9wdGlvbnMubWF4QWdlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBBdm9pZCBkb3VibGUgY29tcHV0YXRpb24uXG4gICAgICAgICAgbWluSW52YWxpZGF0ZWRTdGF0ZUluZGV4ID0gSW5maW5pdHk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgcmVjb2duaXplZCwgaXQncyBhIG1vbml0b3IgYWN0aW9uLlxuICAgICAgICAvLyBPcHRpbWl6YXRpb246IGEgbW9uaXRvciBhY3Rpb24gY2FuJ3QgY2hhbmdlIGhpc3RvcnkuXG4gICAgICAgIG1pbkludmFsaWRhdGVkU3RhdGVJbmRleCA9IEluZmluaXR5O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wdXRlZFN0YXRlcyA9IHJlY29tcHV0ZVN0YXRlcyhcbiAgICAgIGNvbXB1dGVkU3RhdGVzLFxuICAgICAgbWluSW52YWxpZGF0ZWRTdGF0ZUluZGV4LFxuICAgICAgcmVkdWNlcixcbiAgICAgIGNvbW1pdHRlZFN0YXRlLFxuICAgICAgYWN0aW9uc0J5SWQsXG4gICAgICBzdGFnZWRBY3Rpb25JZHMsXG4gICAgICBza2lwcGVkQWN0aW9uSWRzLFxuICAgICAgZXJyb3JIYW5kbGVyXG4gICAgKTtcbiAgICBtb25pdG9yU3RhdGUgPSBtb25pdG9yUmVkdWNlcihtb25pdG9yU3RhdGUsIGxpZnRlZEFjdGlvbik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbW9uaXRvclN0YXRlLFxuICAgICAgYWN0aW9uc0J5SWQsXG4gICAgICBuZXh0QWN0aW9uSWQsXG4gICAgICBzdGFnZWRBY3Rpb25JZHMsXG4gICAgICBza2lwcGVkQWN0aW9uSWRzLFxuICAgICAgY29tbWl0dGVkU3RhdGUsXG4gICAgICBjdXJyZW50U3RhdGVJbmRleCxcbiAgICAgIGNvbXB1dGVkU3RhdGVzLFxuICAgIH07XG4gIH07XG59XG4iXX0=","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nimport { Injectable, Inject, ErrorHandler } from '@angular/core';\nimport { ActionsSubject, INITIAL_STATE, ReducerObservable, ScannedActionsSubject, } from '@ngrx/store';\nimport { merge, queueScheduler, ReplaySubject, } from 'rxjs';\nimport { map, observeOn, scan, skip, withLatestFrom } from 'rxjs/operators';\nimport * as Actions from './actions';\nimport { STORE_DEVTOOLS_CONFIG, StoreDevtoolsConfig } from './config';\nimport { DevtoolsExtension } from './extension';\nimport { liftInitialState, liftReducerWith } from './reducer';\nimport { liftAction, unliftState } from './utils';\nexport class DevtoolsDispatcher extends ActionsSubject {\n}\nDevtoolsDispatcher.decorators = [\n { type: Injectable }\n];\nfunction DevtoolsDispatcher_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n DevtoolsDispatcher.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n DevtoolsDispatcher.ctorParameters;\n}\nexport class StoreDevtools {\n /**\n * @param {?} dispatcher\n * @param {?} actions$\n * @param {?} reducers$\n * @param {?} extension\n * @param {?} scannedActions\n * @param {?} errorHandler\n * @param {?} initialState\n * @param {?} config\n */\n constructor(dispatcher, actions$, reducers$, extension, scannedActions, errorHandler, initialState, config) {\n const /** @type {?} */ liftedInitialState = liftInitialState(initialState, config.monitor);\n const /** @type {?} */ liftReducer = liftReducerWith(initialState, liftedInitialState, errorHandler, config.monitor, config);\n const /** @type {?} */ liftedAction$ = merge(merge(actions$.asObservable().pipe(skip(1)), extension.actions$).pipe(map(liftAction)), dispatcher, extension.liftedActions$).pipe(observeOn(queueScheduler));\n const /** @type {?} */ liftedReducer$ = reducers$.pipe(map(liftReducer));\n const /** @type {?} */ liftedStateSubject = new ReplaySubject(1);\n const /** @type {?} */ liftedStateSubscription = liftedAction$\n .pipe(withLatestFrom(liftedReducer$), scan(({ state: liftedState }, [action, reducer]) => {\n const /** @type {?} */ reducedLiftedState = reducer(liftedState, action);\n // // Extension should be sent the sanitized lifted state\n extension.notify(action, reducedLiftedState);\n return { state: reducedLiftedState, action };\n }, { state: liftedInitialState, action: /** @type {?} */ (null) }))\n .subscribe(({ state, action }) => {\n liftedStateSubject.next(state);\n if (action.type === Actions.PERFORM_ACTION) {\n const /** @type {?} */ unliftedAction = (/** @type {?} */ (action)).action;\n scannedActions.next(unliftedAction);\n }\n });\n const /** @type {?} */ extensionStartSubscription = extension.start$.subscribe(() => {\n this.refresh();\n });\n const /** @type {?} */ liftedState$ = /** @type {?} */ (liftedStateSubject.asObservable());\n const /** @type {?} */ state$ = liftedState$.pipe(map(unliftState));\n this.extensionStartSubscription = extensionStartSubscription;\n this.stateSubscription = liftedStateSubscription;\n this.dispatcher = dispatcher;\n this.liftedState = liftedState$;\n this.state = state$;\n }\n /**\n * @param {?} action\n * @return {?}\n */\n dispatch(action) {\n this.dispatcher.next(action);\n }\n /**\n * @param {?} action\n * @return {?}\n */\n next(action) {\n this.dispatcher.next(action);\n }\n /**\n * @param {?} error\n * @return {?}\n */\n error(error) { }\n /**\n * @return {?}\n */\n complete() { }\n /**\n * @param {?} action\n * @return {?}\n */\n performAction(action) {\n this.dispatch(new Actions.PerformAction(action, +Date.now()));\n }\n /**\n * @return {?}\n */\n refresh() {\n this.dispatch(new Actions.Refresh());\n }\n /**\n * @return {?}\n */\n reset() {\n this.dispatch(new Actions.Reset(+Date.now()));\n }\n /**\n * @return {?}\n */\n rollback() {\n this.dispatch(new Actions.Rollback(+Date.now()));\n }\n /**\n * @return {?}\n */\n commit() {\n this.dispatch(new Actions.Commit(+Date.now()));\n }\n /**\n * @return {?}\n */\n sweep() {\n this.dispatch(new Actions.Sweep());\n }\n /**\n * @param {?} id\n * @return {?}\n */\n toggleAction(id) {\n this.dispatch(new Actions.ToggleAction(id));\n }\n /**\n * @param {?} actionId\n * @return {?}\n */\n jumpToAction(actionId) {\n this.dispatch(new Actions.JumpToAction(actionId));\n }\n /**\n * @param {?} index\n * @return {?}\n */\n jumpToState(index) {\n this.dispatch(new Actions.JumpToState(index));\n }\n /**\n * @param {?} nextLiftedState\n * @return {?}\n */\n importState(nextLiftedState) {\n this.dispatch(new Actions.ImportState(nextLiftedState));\n }\n}\nStoreDevtools.decorators = [\n { type: Injectable }\n];\n/** @nocollapse */\nStoreDevtools.ctorParameters = () => [\n { type: DevtoolsDispatcher, },\n { type: ActionsSubject, },\n { type: ReducerObservable, },\n { type: DevtoolsExtension, },\n { type: ScannedActionsSubject, },\n { type: ErrorHandler, },\n { type: undefined, decorators: [{ type: Inject, args: [INITIAL_STATE,] },] },\n { type: StoreDevtoolsConfig, decorators: [{ type: Inject, args: [STORE_DEVTOOLS_CONFIG,] },] },\n];\nfunction StoreDevtools_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n StoreDevtools.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n StoreDevtools.ctorParameters;\n /** @type {?} */\n StoreDevtools.prototype.stateSubscription;\n /** @type {?} */\n StoreDevtools.prototype.extensionStartSubscription;\n /** @type {?} */\n StoreDevtools.prototype.dispatcher;\n /** @type {?} */\n StoreDevtools.prototype.liftedState;\n /** @type {?} */\n StoreDevtools.prototype.state;\n}\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2dG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JlLWRldnRvb2xzL3NyYy9kZXZ0b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQWEsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFHTCxjQUFjLEVBQ2QsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixxQkFBcUIsR0FDdEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLEtBQUssRUFHTCxjQUFjLEVBQ2QsYUFBYSxHQUVkLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RSxPQUFPLEtBQUssT0FBTyxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBZSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHbEQsTUFBTSx5QkFBMEIsU0FBUSxjQUFjOzs7WUFEckQsVUFBVTs7Ozs7Ozs7Ozs7QUFJWCxNQUFNOzs7Ozs7Ozs7OztJQU9KLFlBQ0UsVUFBOEIsRUFDOUIsUUFBd0IsRUFDeEIsU0FBNEIsRUFDNUIsU0FBNEIsRUFDNUIsY0FBcUMsRUFDckMsWUFBMEIsRUFDSCxjQUNRO1FBRS9CLHVCQUFNLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUUs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QUMsQ0FBQztLQUMvQzs7Ozs7SUFFRCxXQUFXLENBQUMsZUFBb0I7UUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztLQUN6RDs7O1lBeElGLFVBQVU7Ozs7WUFGRSxrQkFBa0I7WUF0QjdCLGNBQWM7WUFFZCxpQkFBaUI7WUFlVixpQkFBaUI7WUFkeEIscUJBQXFCO1lBUGlCLFlBQVk7NENBMkMvQyxNQUFNLFNBQUMsYUFBYTtZQXZCTyxtQkFBbUIsdUJBd0I5QyxNQUFNLFNBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBPbkRlc3Ryb3ksIEVycm9ySGFuZGxlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aW9uLFxuICBBY3Rpb25SZWR1Y2VyLFxuICBBY3Rpb25zU3ViamVjdCxcbiAgSU5JVElBTF9TVEFURSxcbiAgUmVkdWNlck9ic2VydmFibGUsXG4gIFNjYW5uZWRBY3Rpb25zU3ViamVjdCxcbn0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgbWVyZ2UsXG4gIE9ic2VydmFibGUsXG4gIE9ic2VydmVyLFxuICBxdWV1ZVNjaGVkdWxlcixcbiAgUmVwbGF5U3ViamVjdCxcbiAgU3Vic2NyaXB0aW9uLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgb2JzZXJ2ZU9uLCBzY2FuLCBza2lwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0ICogYXMgQWN0aW9ucyBmcm9tICcuL2FjdGlvbnMnO1xuaW1wb3J0IHsgU1RPUkVfREVWVE9PTFNfQ09ORklHLCBTdG9yZURldnRvb2xzQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgRGV2dG9vbHNFeHRlbnNpb24gfSBmcm9tICcuL2V4dGVuc2lvbic7XG5pbXBvcnQgeyBMaWZ0ZWRTdGF0ZSwgbGlmdEluaXRpYWxTdGF0ZSwgbGlmdFJlZHVjZXJXaXRoIH0gZnJvbSAnLi9yZWR1Y2VyJztcbmltcG9ydCB7IGxpZnRBY3Rpb24sIHVubGlmdFN0YXRlIH0gZnJvbSAnLi91dGlscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEZXZ0b29sc0Rpc3BhdGNoZXIgZXh0ZW5kcyBBY3Rpb25zU3ViamVjdCB7fVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3RvcmVEZXZ0b29scyBpbXBsZW1lbnRzIE9ic2VydmVyPGFueT4ge1xuICBwcml2YXRlIHN0YXRlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgZXh0ZW5zaW9uU3RhcnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGRpc3BhdGNoZXI6IEFjdGlvbnNTdWJqZWN0O1xuICBwdWJsaWMgbGlmdGVkU3RhdGU6IE9ic2VydmFibGU8TGlmdGVkU3RhdGU+O1xuICBwdWJsaWMgc3RhdGU6IE9ic2VydmFibGU8YW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBkaXNwYXRjaGVyOiBEZXZ0b29sc0Rpc3BhdGNoZXIsXG4gICAgYWN0aW9ucyQ6IEFjdGlvbnNTdWJqZWN0LFxuICAgIHJlZHVjZXJzJDogUmVkdWNlck9ic2VydmFibGUsXG4gICAgZXh0ZW5zaW9uOiBEZXZ0b29sc0V4dGVuc2lvbixcbiAgICBzY2FubmVkQWN0aW9uczogU2Nhbm5lZEFjdGlvbnNTdWJqZWN0LFxuICAgIGVycm9ySGFuZGxlcjogRXJyb3JIYW5kbGVyLFxuICAgIEBJbmplY3QoSU5JVElBTF9TVEFURSkgaW5pdGlhbFN0YXRlOiBhbnksXG4gICAgQEluamVjdChTVE9SRV9ERVZUT09MU19DT05GSUcpIGNvbmZpZzogU3RvcmVEZXZ0b29sc0NvbmZpZ1xuICApIHtcbiAgICBjb25zdCBsaWZ0ZWRJbml0aWFsU3RhdGUgPSBsaWZ0SW5pdGlhbFN0YXRlKGluaXRpYWxTdGF0ZSwgY29uZmlnLm1vbml0b3IpO1xuICAgIGNvbnN0IGxpZnRSZWR1Y2VyID0gbGlmdFJlZHVjZXJXaXRoKFxuICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgbGlmdGVkSW5pdGlhbFN0YXRlLFxuICAgICAgZXJyb3JIYW5kbGVyLFxuICAgICAgY29uZmlnLm1vbml0b3IsXG4gICAgICBjb25maWdcbiAgICApO1xuXG4gICAgY29uc3QgbGlmdGVkQWN0aW9uJCA9IG1lcmdlKFxuICAgICAgbWVyZ2UoYWN0aW9ucyQuYXNPYnNlcnZhYmxlKCkucGlwZShza2lwKDEpKSwgZXh0ZW5zaW9uLmFjdGlvbnMkKS5waXBlKFxuICAgICAgICBtYXAobGlmdEFjdGlvbilcbiAgICAgICksXG4gICAgICBkaXNwYXRjaGVyLFxuICAgICAgZXh0ZW5zaW9uLmxpZnRlZEFjdGlvbnMkXG4gICAgKS5waXBlKG9ic2VydmVPbihxdWV1ZVNjaGVkdWxlcikpO1xuXG4gICAgY29uc3QgbGlmdGVkUmVkdWNlciQgPSByZWR1Y2VycyQucGlwZShtYXAobGlmdFJlZHVjZXIpKTtcblxuICAgIGNvbnN0IGxpZnRlZFN0YXRlU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PExpZnRlZFN0YXRlPigxKTtcblxuICAgIGNvbnN0IGxpZnRlZFN0YXRlU3Vic2NyaXB0aW9uID0gbGlmdGVkQWN0aW9uJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKGxpZnRlZFJlZHVjZXIkKSxcbiAgICAgICAgc2NhbjxcbiAgICAgICAgICBbYW55LCBBY3Rpb25SZWR1Y2VyPExpZnRlZFN0YXRlLCBBY3Rpb25zLkFsbD5dLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXRlOiBMaWZ0ZWRTdGF0ZTtcbiAgICAgICAgICAgIGFjdGlvbjogYW55O1xuICAgICAgICAgIH1cbiAgICAgICAgPihcbiAgICAgICAgICAoeyBzdGF0ZTogbGlmdGVkU3RhdGUgfSwgW2FjdGlvbiwgcmVkdWNlcl0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlZHVjZWRMaWZ0ZWRTdGF0ZSA9IHJlZHVjZXIobGlmdGVkU3RhdGUsIGFjdGlvbik7XG5cbiAgICAgICAgICAgIC8vIC8vIEV4dGVuc2lvbiBzaG91bGQgYmUgc2VudCB0aGUgc2FuaXRpemVkIGxpZnRlZCBzdGF0ZVxuICAgICAgICAgICAgZXh0ZW5zaW9uLm5vdGlmeShhY3Rpb24sIHJlZHVjZWRMaWZ0ZWRTdGF0ZSk7XG5cbiAgICAgICAgICAgIHJldHVybiB7IHN0YXRlOiByZWR1Y2VkTGlmdGVkU3RhdGUsIGFjdGlvbiB9O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBzdGF0ZTogbGlmdGVkSW5pdGlhbFN0YXRlLCBhY3Rpb246IG51bGwgYXMgYW55IH1cbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoeyBzdGF0ZSwgYWN0aW9uIH0pID0+IHtcbiAgICAgICAgbGlmdGVkU3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuXG4gICAgICAgIGlmIChhY3Rpb24udHlwZSA9PT0gQWN0aW9ucy5QRVJGT1JNX0FDVElPTikge1xuICAgICAgICAgIGNvbnN0IHVubGlmdGVkQWN0aW9uID0gKGFjdGlvbiBhcyBBY3Rpb25zLlBlcmZvcm1BY3Rpb24pLmFjdGlvbjtcblxuICAgICAgICAgIHNjYW5uZWRBY3Rpb25zLm5leHQodW5saWZ0ZWRBY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGNvbnN0IGV4dGVuc2lvblN0YXJ0U3Vic2NyaXB0aW9uID0gZXh0ZW5zaW9uLnN0YXJ0JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBsaWZ0ZWRTdGF0ZSQgPSBsaWZ0ZWRTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCkgYXMgT2JzZXJ2YWJsZTxcbiAgICAgIExpZnRlZFN0YXRlXG4gICAgPjtcbiAgICBjb25zdCBzdGF0ZSQgPSBsaWZ0ZWRTdGF0ZSQucGlwZShtYXAodW5saWZ0U3RhdGUpKTtcblxuICAgIHRoaXMuZXh0ZW5zaW9uU3RhcnRTdWJzY3JpcHRpb24gPSBleHRlbnNpb25TdGFydFN1YnNjcmlwdGlvbjtcbiAgICB0aGlzLnN0YXRlU3Vic2NyaXB0aW9uID0gbGlmdGVkU3RhdGVTdWJzY3JpcHRpb247XG4gICAgdGhpcy5kaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjtcbiAgICB0aGlzLmxpZnRlZFN0YXRlID0gbGlmdGVkU3RhdGUkO1xuICAgIHRoaXMuc3RhdGUgPSBzdGF0ZSQ7XG4gIH1cblxuICBkaXNwYXRjaChhY3Rpb246IEFjdGlvbikge1xuICAgIHRoaXMuZGlzcGF0Y2hlci5uZXh0KGFjdGlvbik7XG4gIH1cblxuICBuZXh0KGFjdGlvbjogYW55KSB7XG4gICAgdGhpcy5kaXNwYXRjaGVyLm5leHQoYWN0aW9uKTtcbiAgfVxuXG4gIGVycm9yKGVycm9yOiBhbnkpIHt9XG5cbiAgY29tcGxldGUoKSB7fVxuXG4gIHBlcmZvcm1BY3Rpb24oYWN0aW9uOiBhbnkpIHtcbiAgICB0aGlzLmRpc3BhdGNoKG5ldyBBY3Rpb25zLlBlcmZvcm1BY3Rpb24oYWN0aW9uLCArRGF0ZS5ub3coKSkpO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLmRpc3BhdGNoKG5ldyBBY3Rpb25zLlJlZnJlc2goKSk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLmRpc3BhdGNoKG5ldyBBY3Rpb25zLlJlc2V0KCtEYXRlLm5vdygpKSk7XG4gIH1cblxuICByb2xsYmFjaygpIHtcbiAgICB0aGlzLmRpc3BhdGNoKG5ldyBBY3Rpb25zLlJvbGxiYWNrKCtEYXRlLm5vdygpKSk7XG4gIH1cblxuICBjb21taXQoKSB7XG4gICAgdGhpcy5kaXNwYXRjaChuZXcgQWN0aW9ucy5Db21taXQoK0RhdGUubm93KCkpKTtcbiAgfVxuXG4gIHN3ZWVwKCkge1xuICAgIHRoaXMuZGlzcGF0Y2gobmV3IEFjdGlvbnMuU3dlZXAoKSk7XG4gIH1cblxuICB0b2dnbGVBY3Rpb24oaWQ6IG51bWJlcikge1xuICAgIHRoaXMuZGlzcGF0Y2gobmV3IEFjdGlvbnMuVG9nZ2xlQWN0aW9uKGlkKSk7XG4gIH1cblxuICBqdW1wVG9BY3Rpb24oYWN0aW9uSWQ6IG51bWJlcikge1xuICAgIHRoaXMuZGlzcGF0Y2gobmV3IEFjdGlvbnMuSnVtcFRvQWN0aW9uKGFjdGlvbklkKSk7XG4gIH1cblxuICBqdW1wVG9TdGF0ZShpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5kaXNwYXRjaChuZXcgQWN0aW9ucy5KdW1wVG9TdGF0ZShpbmRleCkpO1xuICB9XG5cbiAgaW1wb3J0U3RhdGUobmV4dExpZnRlZFN0YXRlOiBhbnkpIHtcbiAgICB0aGlzLmRpc3BhdGNoKG5ldyBBY3Rpb25zLkltcG9ydFN0YXRlKG5leHRMaWZ0ZWRTdGF0ZSkpO1xuICB9XG59XG4iXX0=","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nimport { InjectionToken, NgModule } from '@angular/core';\nimport { ReducerManagerDispatcher, StateObservable } from '@ngrx/store';\nimport { INITIAL_OPTIONS, STORE_DEVTOOLS_CONFIG, } from './config';\nimport { DevtoolsDispatcher, StoreDevtools } from './devtools';\nimport { DevtoolsExtension, REDUX_DEVTOOLS_EXTENSION, } from './extension';\nexport const /** @type {?} */ IS_EXTENSION_OR_MONITOR_PRESENT = new InjectionToken('Is Devtools Extension or Monitor Present');\n/**\n * @param {?} extension\n * @param {?} config\n * @return {?}\n */\nexport function createIsExtensionOrMonitorPresent(extension, config) {\n return Boolean(extension) || config.monitor !== noMonitor;\n}\n/**\n * @return {?}\n */\nexport function createReduxDevtoolsExtension() {\n const /** @type {?} */ extensionKey = '__REDUX_DEVTOOLS_EXTENSION__';\n if (typeof window === 'object' &&\n typeof (/** @type {?} */ (window))[extensionKey] !== 'undefined') {\n return (/** @type {?} */ (window))[extensionKey];\n }\n else {\n return null;\n }\n}\n/**\n * @param {?} devtools\n * @return {?}\n */\nexport function createStateObservable(devtools) {\n return devtools.state;\n}\n/**\n * @return {?}\n */\nexport function noMonitor() {\n return null;\n}\nexport const /** @type {?} */ DEFAULT_NAME = 'NgRx Store DevTools';\n/**\n * @param {?} _options\n * @return {?}\n */\nexport function createConfig(_options) {\n const /** @type {?} */ DEFAULT_OPTIONS = {\n maxAge: false,\n monitor: noMonitor,\n actionSanitizer: undefined,\n stateSanitizer: undefined,\n name: DEFAULT_NAME,\n serialize: false,\n logOnly: false,\n features: false,\n };\n let /** @type {?} */ options = typeof _options === 'function' ? _options() : _options;\n const /** @type {?} */ logOnly = options.logOnly\n ? { pause: true, export: true, test: true }\n : false;\n const /** @type {?} */ features = options.features || logOnly;\n const /** @type {?} */ config = Object.assign({}, DEFAULT_OPTIONS, { features }, options);\n if (config.maxAge && config.maxAge < 2) {\n throw new Error(`Devtools 'maxAge' cannot be less than 2, got ${config.maxAge}`);\n }\n return config;\n}\nexport class StoreDevtoolsModule {\n /**\n * @param {?=} options\n * @return {?}\n */\n static instrument(options = {}) {\n return {\n ngModule: StoreDevtoolsModule,\n providers: [\n DevtoolsExtension,\n DevtoolsDispatcher,\n StoreDevtools,\n {\n provide: INITIAL_OPTIONS,\n useValue: options,\n },\n {\n provide: IS_EXTENSION_OR_MONITOR_PRESENT,\n deps: [REDUX_DEVTOOLS_EXTENSION, STORE_DEVTOOLS_CONFIG],\n useFactory: createIsExtensionOrMonitorPresent,\n },\n {\n provide: REDUX_DEVTOOLS_EXTENSION,\n useFactory: createReduxDevtoolsExtension,\n },\n {\n provide: STORE_DEVTOOLS_CONFIG,\n deps: [INITIAL_OPTIONS],\n useFactory: createConfig,\n },\n {\n provide: StateObservable,\n deps: [StoreDevtools],\n useFactory: createStateObservable,\n },\n {\n provide: ReducerManagerDispatcher,\n useExisting: DevtoolsDispatcher,\n },\n ],\n };\n }\n}\nStoreDevtoolsModule.decorators = [\n { type: NgModule, args: [{},] }\n];\nfunction StoreDevtoolsModule_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n StoreDevtoolsModule.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n StoreDevtoolsModule.ctorParameters;\n}\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc3RvcmUtZGV2dG9vbHMvc3JjL2luc3RydW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3hFLE9BQU8sRUFDTCxlQUFlLEVBQ2YscUJBQXFCLEdBR3RCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDL0QsT0FBTyxFQUNMLGlCQUFpQixFQUNqQix3QkFBd0IsR0FFekIsTUFBTSxhQUFhLENBQUM7QUFFckIsTUFBTSxDQUFDLHVCQUFNLCtCQUErQixHQUFHLElBQUksY0FBYyxDQUMvRCwwQ0FBMEMsQ0FDM0MsQ0FBQzs7Ozs7O0FBRUYsTUFBTSw0Q0FDSixTQUF3QyxFQUN4QyxNQUEyQjtJQUUzQixNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDO0NBQzNEOzs7O0FBRUQsTUFBTTtJQUNKLHVCQUFNLFlBQVksR0FBRyw4QkFBOEIsQ0FBQztJQUVwRCxFQUFFLENBQUMsQ0FDRCxPQUFPLE1BQU0sS0FBSyxRQUFRO1FBQzFCLE9BQU8sbUJBQUMsTUFBYSxFQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssV0FDM0MsQ0FBQyxDQUFDLENBQUM7UUFDRCxNQUFNLENBQUMsbUJBQUMsTUFBYSxFQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDdEM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUM7S0FDYjtDQUNGOzs7OztBQUVELE1BQU0sZ0NBQ0osUUFBdUI7SUFFdkIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7Q0FDdkI7Ozs7QUFFRCxNQUFNO0lBQ0osTUFBTSxDQUFDLElBQUksQ0FBQztDQUNiO0FBRUQsTUFBTSxDQUFDLHVCQUFNLFlBQVksR0FBRyxxQkFBcUIsQ0FBQzs7Ozs7QUFFbEQsTUFBTSx1QkFDSixRQUE4QjtJQUU5Qix1QkFBTSxlQUFlLEdBQXdCO1FBQzNDLE1BQU0sRUFBRSxLQUFLO1FBQ2IsT0FBTyxFQUFFLFNBQVM7UUFDbEIsZUFBZSxFQUFFLFNBQVM7UUFDMUIsY0FBYyxFQUFFLFNBQVM7UUFDekIsSUFBSSxFQUFFLFlBQVk7UUFDbEIsU0FBUyxFQUFFLEtBQUs7UUFDaEIsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUsS0FBSztLQUNoQixDQUFDO0lBRUYscUJBQUksT0FBTyxHQUFHLE9BQU8sUUFBUSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNyRSx1QkFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU87UUFDN0IsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7UUFDM0MsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNWLHVCQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQztJQUM3Qyx1QkFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsZUFBZSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFekUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FDYixnREFBZ0QsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUNoRSxDQUFDO0tBQ0g7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDO0NBQ2Y7QUFHRCxNQUFNOzs7OztJQUNKLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBZ0MsRUFBRTtRQUNsRCxNQUFNLENBQUM7WUFDTCxRQUFRLEVBQUUsbUJBQW1CO1lBQzdCLFNBQVMsRUFBRTtnQkFDVCxpQkFBaUI7Z0JBQ2pCLGtCQUFrQjtnQkFDbEIsYUFBYTtnQkFDYjtvQkFDRSxPQUFPLEVBQUUsZUFBZTtvQkFDeEIsUUFBUSxFQUFFLE9BQU87aUJBQ2xCO2dCQUNEO29CQUNFLE9BQU8sRUFBRSwrQkFBK0I7b0JBQ3hDLElBQUksRUFBRSxDQUFDLHdCQUF3QixFQUFFLHFCQUFxQixDQUFDO29CQUN2RCxVQUFVLEVBQUUsaUNBQWlDO2lCQUM5QztnQkFDRDtvQkFDRSxPQUFPLEVBQUUsd0JBQXdCO29CQUNqQyxVQUFVLEVBQUUsNEJBQTRCO2lCQUN6QztnQkFDRDtvQkFDRSxPQUFPLEVBQUUscUJBQXFCO29CQUM5QixJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQ3ZCLFVBQVUsRUFBRSxZQUFZO2lCQUN6QjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsZUFBZTtvQkFDeEIsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUNyQixVQUFVLEVBQUUscUJBQXFCO2lCQUNsQztnQkFDRDtvQkFDRSxPQUFPLEVBQUUsd0JBQXdCO29CQUNqQyxXQUFXLEVBQUUsa0JBQWtCO2lCQUNoQzthQUNGO1NBQ0YsQ0FBQztLQUNIOzs7WUF0Q0YsUUFBUSxTQUFDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlZHVjZXJNYW5hZ2VyRGlzcGF0Y2hlciwgU3RhdGVPYnNlcnZhYmxlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBJTklUSUFMX09QVElPTlMsXG4gIFNUT1JFX0RFVlRPT0xTX0NPTkZJRyxcbiAgU3RvcmVEZXZ0b29sc0NvbmZpZyxcbiAgU3RvcmVEZXZ0b29sc09wdGlvbnMsXG59IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IERldnRvb2xzRGlzcGF0Y2hlciwgU3RvcmVEZXZ0b29scyB9IGZyb20gJy4vZGV2dG9vbHMnO1xuaW1wb3J0IHtcbiAgRGV2dG9vbHNFeHRlbnNpb24sXG4gIFJFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTixcbiAgUmVkdXhEZXZ0b29sc0V4dGVuc2lvbixcbn0gZnJvbSAnLi9leHRlbnNpb24nO1xuXG5leHBvcnQgY29uc3QgSVNfRVhURU5TSU9OX09SX01PTklUT1JfUFJFU0VOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxib29sZWFuPihcbiAgJ0lzIERldnRvb2xzIEV4dGVuc2lvbiBvciBNb25pdG9yIFByZXNlbnQnXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSXNFeHRlbnNpb25Pck1vbml0b3JQcmVzZW50KFxuICBleHRlbnNpb246IFJlZHV4RGV2dG9vbHNFeHRlbnNpb24gfCBudWxsLFxuICBjb25maWc6IFN0b3JlRGV2dG9vbHNDb25maWdcbikge1xuICByZXR1cm4gQm9vbGVhbihleHRlbnNpb24pIHx8IGNvbmZpZy5tb25pdG9yICE9PSBub01vbml0b3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWR1eERldnRvb2xzRXh0ZW5zaW9uKCkge1xuICBjb25zdCBleHRlbnNpb25LZXkgPSAnX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fXyc7XG5cbiAgaWYgKFxuICAgIHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnICYmXG4gICAgdHlwZW9mICh3aW5kb3cgYXMgYW55KVtleHRlbnNpb25LZXldICE9PSAndW5kZWZpbmVkJ1xuICApIHtcbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpW2V4dGVuc2lvbktleV07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN0YXRlT2JzZXJ2YWJsZShcbiAgZGV2dG9vbHM6IFN0b3JlRGV2dG9vbHNcbik6IE9ic2VydmFibGU8YW55PiB7XG4gIHJldHVybiBkZXZ0b29scy5zdGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vTW9uaXRvcigpOiBudWxsIHtcbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX05BTUUgPSAnTmdSeCBTdG9yZSBEZXZUb29scyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb25maWcoXG4gIF9vcHRpb25zOiBTdG9yZURldnRvb2xzT3B0aW9uc1xuKTogU3RvcmVEZXZ0b29sc0NvbmZpZyB7XG4gIGNvbnN0IERFRkFVTFRfT1BUSU9OUzogU3RvcmVEZXZ0b29sc0NvbmZpZyA9IHtcbiAgICBtYXhBZ2U6IGZhbHNlLFxuICAgIG1vbml0b3I6IG5vTW9uaXRvcixcbiAgICBhY3Rpb25TYW5pdGl6ZXI6IHVuZGVmaW5lZCxcbiAgICBzdGF0ZVNhbml0aXplcjogdW5kZWZpbmVkLFxuICAgIG5hbWU6IERFRkFVTFRfTkFNRSxcbiAgICBzZXJpYWxpemU6IGZhbHNlLFxuICAgIGxvZ09ubHk6IGZhbHNlLFxuICAgIGZlYXR1cmVzOiBmYWxzZSxcbiAgfTtcblxuICBsZXQgb3B0aW9ucyA9IHR5cGVvZiBfb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJyA/IF9vcHRpb25zKCkgOiBfb3B0aW9ucztcbiAgY29uc3QgbG9nT25seSA9IG9wdGlvbnMubG9nT25seVxuICAgID8geyBwYXVzZTogdHJ1ZSwgZXhwb3J0OiB0cnVlLCB0ZXN0OiB0cnVlIH1cbiAgICA6IGZhbHNlO1xuICBjb25zdCBmZWF0dXJlcyA9IG9wdGlvbnMuZmVhdHVyZXMgfHwgbG9nT25seTtcbiAgY29uc3QgY29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9PUFRJT05TLCB7IGZlYXR1cmVzIH0sIG9wdGlvbnMpO1xuXG4gIGlmIChjb25maWcubWF4QWdlICYmIGNvbmZpZy5tYXhBZ2UgPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYERldnRvb2xzICdtYXhBZ2UnIGNhbm5vdCBiZSBsZXNzIHRoYW4gMiwgZ290ICR7Y29uZmlnLm1heEFnZX1gXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBjb25maWc7XG59XG5cbkBOZ01vZHVsZSh7fSlcbmV4cG9ydCBjbGFzcyBTdG9yZURldnRvb2xzTW9kdWxlIHtcbiAgc3RhdGljIGluc3RydW1lbnQob3B0aW9uczogU3RvcmVEZXZ0b29sc09wdGlvbnMgPSB7fSk6IE1vZHVsZVdpdGhQcm92aWRlcnMge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogU3RvcmVEZXZ0b29sc01vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICBEZXZ0b29sc0V4dGVuc2lvbixcbiAgICAgICAgRGV2dG9vbHNEaXNwYXRjaGVyLFxuICAgICAgICBTdG9yZURldnRvb2xzLFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogSU5JVElBTF9PUFRJT05TLFxuICAgICAgICAgIHVzZVZhbHVlOiBvcHRpb25zLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogSVNfRVhURU5TSU9OX09SX01PTklUT1JfUFJFU0VOVCxcbiAgICAgICAgICBkZXBzOiBbUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OLCBTVE9SRV9ERVZUT09MU19DT05GSUddLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IGNyZWF0ZUlzRXh0ZW5zaW9uT3JNb25pdG9yUHJlc2VudCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IFJFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTixcbiAgICAgICAgICB1c2VGYWN0b3J5OiBjcmVhdGVSZWR1eERldnRvb2xzRXh0ZW5zaW9uLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogU1RPUkVfREVWVE9PTFNfQ09ORklHLFxuICAgICAgICAgIGRlcHM6IFtJTklUSUFMX09QVElPTlNdLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IGNyZWF0ZUNvbmZpZyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IFN0YXRlT2JzZXJ2YWJsZSxcbiAgICAgICAgICBkZXBzOiBbU3RvcmVEZXZ0b29sc10sXG4gICAgICAgICAgdXNlRmFjdG9yeTogY3JlYXRlU3RhdGVPYnNlcnZhYmxlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogUmVkdWNlck1hbmFnZXJEaXNwYXRjaGVyLFxuICAgICAgICAgIHVzZUV4aXN0aW5nOiBEZXZ0b29sc0Rpc3BhdGNoZXIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nexport { StoreDevtoolsModule } from './instrument';\nexport { StoreDevtools } from './devtools';\nexport { StoreDevtoolsConfig } from './config';\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JlLWRldnRvb2xzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRW5ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUF3QixNQUFNLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFN0b3JlRGV2dG9vbHNNb2R1bGUgfSBmcm9tICcuL2luc3RydW1lbnQnO1xuZXhwb3J0IHsgTGlmdGVkU3RhdGUgfSBmcm9tICcuL3JlZHVjZXInO1xuZXhwb3J0IHsgU3RvcmVEZXZ0b29scyB9IGZyb20gJy4vZGV2dG9vbHMnO1xuZXhwb3J0IHsgU3RvcmVEZXZ0b29sc0NvbmZpZywgU3RvcmVEZXZ0b29sc09wdGlvbnMgfSBmcm9tICcuL2NvbmZpZyc7XG4iXX0=","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nexport { StoreDevtoolsModule, StoreDevtools, StoreDevtoolsConfig } from './src/index';\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc3RvcmUtZGV2dG9vbHMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsd0VBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvaW5kZXgnO1xuIl19","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\nexport { StoreDevtoolsModule, StoreDevtools, StoreDevtoolsConfig } from './public_api';\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JlLWRldnRvb2xzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQU1BLHdFQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRE8gTk9UIEVESVRcbiAqXG4gKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYXQgYnVpbGRcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\nexport { INITIAL_OPTIONS as ɵngrx_modules_store_devtools_store_devtools_i, STORE_DEVTOOLS_CONFIG as ɵngrx_modules_store_devtools_store_devtools_h } from './src/config';\nexport { DevtoolsDispatcher as ɵngrx_modules_store_devtools_store_devtools_g } from './src/devtools';\nexport { DevtoolsExtension as ɵngrx_modules_store_devtools_store_devtools_k, REDUX_DEVTOOLS_EXTENSION as ɵngrx_modules_store_devtools_store_devtools_j } from './src/extension';\nexport { IS_EXTENSION_OR_MONITOR_PRESENT as ɵngrx_modules_store_devtools_store_devtools_a, createConfig as ɵngrx_modules_store_devtools_store_devtools_f, createIsExtensionOrMonitorPresent as ɵngrx_modules_store_devtools_store_devtools_b, createReduxDevtoolsExtension as ɵngrx_modules_store_devtools_store_devtools_c, createStateObservable as ɵngrx_modules_store_devtools_store_devtools_d, noMonitor as ɵngrx_modules_store_devtools_store_devtools_e } from './src/instrument';\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtZGV2dG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JlLWRldnRvb2xzL3N0b3JlLWRldnRvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUM7QUFFeEIsT0FBTyxFQUFDLGVBQWUsSUFBSSw2Q0FBNkMsRUFBQyxxQkFBcUIsSUFBSSw2Q0FBNkMsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNySyxPQUFPLEVBQUMsa0JBQWtCLElBQUksNkNBQTZDLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRyxPQUFPLEVBQUMsaUJBQWlCLElBQUksNkNBQTZDLEVBQUMsd0JBQXdCLElBQUksNkNBQTZDLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3SyxPQUFPLEVBQUMsK0JBQStCLElBQUksNkNBQTZDLEVBQUMsWUFBWSxJQUFJLDZDQUE2QyxFQUFDLGlDQUFpQyxJQUFJLDZDQUE2QyxFQUFDLDRCQUE0QixJQUFJLDZDQUE2QyxFQUFDLHFCQUFxQixJQUFJLDZDQUE2QyxFQUFDLFNBQVMsSUFBSSw2Q0FBNkMsRUFBQyxNQUFNLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcblxuZXhwb3J0IHtJTklUSUFMX09QVElPTlMgYXMgybVuZ3J4X21vZHVsZXNfc3RvcmVfZGV2dG9vbHNfc3RvcmVfZGV2dG9vbHNfaSxTVE9SRV9ERVZUT09MU19DT05GSUcgYXMgybVuZ3J4X21vZHVsZXNfc3RvcmVfZGV2dG9vbHNfc3RvcmVfZGV2dG9vbHNfaH0gZnJvbSAnLi9zcmMvY29uZmlnJztcbmV4cG9ydCB7RGV2dG9vbHNEaXNwYXRjaGVyIGFzIMm1bmdyeF9tb2R1bGVzX3N0b3JlX2RldnRvb2xzX3N0b3JlX2RldnRvb2xzX2d9IGZyb20gJy4vc3JjL2RldnRvb2xzJztcbmV4cG9ydCB7RGV2dG9vbHNFeHRlbnNpb24gYXMgybVuZ3J4X21vZHVsZXNfc3RvcmVfZGV2dG9vbHNfc3RvcmVfZGV2dG9vbHNfayxSRURVWF9ERVZUT09MU19FWFRFTlNJT04gYXMgybVuZ3J4X21vZHVsZXNfc3RvcmVfZGV2dG9vbHNfc3RvcmVfZGV2dG9vbHNfan0gZnJvbSAnLi9zcmMvZXh0ZW5zaW9uJztcbmV4cG9ydCB7SVNfRVhURU5TSU9OX09SX01PTklUT1JfUFJFU0VOVCBhcyDJtW5ncnhfbW9kdWxlc19zdG9yZV9kZXZ0b29sc19zdG9yZV9kZXZ0b29sc19hLGNyZWF0ZUNvbmZpZyBhcyDJtW5ncnhfbW9kdWxlc19zdG9yZV9kZXZ0b29sc19zdG9yZV9kZXZ0b29sc19mLGNyZWF0ZUlzRXh0ZW5zaW9uT3JNb25pdG9yUHJlc2VudCBhcyDJtW5ncnhfbW9kdWxlc19zdG9yZV9kZXZ0b29sc19zdG9yZV9kZXZ0b29sc19iLGNyZWF0ZVJlZHV4RGV2dG9vbHNFeHRlbnNpb24gYXMgybVuZ3J4X21vZHVsZXNfc3RvcmVfZGV2dG9vbHNfc3RvcmVfZGV2dG9vbHNfYyxjcmVhdGVTdGF0ZU9ic2VydmFibGUgYXMgybVuZ3J4X21vZHVsZXNfc3RvcmVfZGV2dG9vbHNfc3RvcmVfZGV2dG9vbHNfZCxub01vbml0b3IgYXMgybVuZ3J4X21vZHVsZXNfc3RvcmVfZGV2dG9vbHNfc3RvcmVfZGV2dG9vbHNfZX0gZnJvbSAnLi9zcmMvaW5zdHJ1bWVudCc7Il19"],"names":["Actions.PerformAction","Actions.RESET","Actions.COMMIT","Actions.ROLLBACK","Actions.TOGGLE_ACTION","Actions.SET_ACTIONS_ACTIVE","Actions.JUMP_TO_STATE","Actions.JUMP_TO_ACTION","Actions.SWEEP","Actions.PERFORM_ACTION","Actions.IMPORT_STATE","Actions.Refresh","Actions.Reset","Actions.Rollback","Actions.Commit","Actions.Sweep","Actions.ToggleAction","Actions.JumpToAction","Actions.JumpToState","Actions.ImportState"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store-devtools.js","sources":["../src/config.ts","../src/actions.ts","../src/utils.ts","../src/devtools-dispatcher.ts","../src/extension.ts","../src/reducer.ts","../src/devtools.ts","../src/instrument.ts","../store-devtools.ts"],"sourcesContent":["import { ActionReducer, Action } from '@ngrx/store';\nimport { InjectionToken, Type } from '@angular/core';\n\nexport type ActionSanitizer = (action: Action, id: number) => Action;\nexport type StateSanitizer = (state: any, index: number) => any;\nexport type SerializationOptions = {\n options?: boolean | any;\n replacer?: (key: any, value: any) => {};\n reviver?: (key: any, value: any) => {};\n immutable?: any;\n refs?: Array<any>;\n};\nexport type Predicate = (state: any, action: Action) => boolean;\n\nexport class StoreDevtoolsConfig {\n maxAge: number | false;\n monitor: ActionReducer<any, any>;\n actionSanitizer?: ActionSanitizer;\n stateSanitizer?: StateSanitizer;\n name?: string;\n serialize?: boolean | SerializationOptions;\n logOnly?: boolean;\n features?: any;\n actionsBlacklist?: string[];\n actionsWhitelist?: string[];\n predicate?: Predicate;\n}\n\nexport const STORE_DEVTOOLS_CONFIG = new InjectionToken<StoreDevtoolsConfig>(\n '@ngrx/devtools Options'\n);\nexport const INITIAL_OPTIONS = new InjectionToken<StoreDevtoolsConfig>(\n '@ngrx/devtools Initial Config'\n);\n\nexport type StoreDevtoolsOptions =\n | Partial<StoreDevtoolsConfig>\n | (() => Partial<StoreDevtoolsConfig>);\n\nexport function noMonitor(): null {\n return null;\n}\n\nexport const DEFAULT_NAME = 'NgRx Store DevTools';\n\nexport function createConfig(\n _options: StoreDevtoolsOptions\n): StoreDevtoolsConfig {\n const DEFAULT_OPTIONS: StoreDevtoolsConfig = {\n maxAge: false,\n monitor: noMonitor,\n actionSanitizer: undefined,\n stateSanitizer: undefined,\n name: DEFAULT_NAME,\n serialize: false,\n logOnly: false,\n // Add all features explicitely. This prevent buggy behavior for\n // options like \"lock\" which might otherwise not show up.\n features: {\n pause: true, // start/pause recording of dispatched actions\n lock: true, // lock/unlock dispatching actions and side effects\n persist: true, // persist states on page reloading\n export: true, // export history of actions in a file\n import: 'custom', // import history of actions from a file\n jump: true, // jump back and forth (time travelling)\n skip: true, // skip (cancel) actions\n reorder: true, // drag and drop actions in the history list\n dispatch: true, // dispatch custom actions or action creators\n test: true, // generate tests for the selected actions\n },\n };\n\n let options = typeof _options === 'function' ? _options() : _options;\n const logOnly = options.logOnly\n ? { pause: true, export: true, test: true }\n : false;\n const features = options.features || logOnly || DEFAULT_OPTIONS.features;\n const config = Object.assign({}, DEFAULT_OPTIONS, { features }, options);\n\n if (config.maxAge && config.maxAge < 2) {\n throw new Error(\n `Devtools 'maxAge' cannot be less than 2, got ${config.maxAge}`\n );\n }\n\n return config;\n}\n","import { Action } from '@ngrx/store';\n\nexport const PERFORM_ACTION = 'PERFORM_ACTION';\nexport const REFRESH = 'REFRESH';\nexport const RESET = 'RESET';\nexport const ROLLBACK = 'ROLLBACK';\nexport const COMMIT = 'COMMIT';\nexport const SWEEP = 'SWEEP';\nexport const TOGGLE_ACTION = 'TOGGLE_ACTION';\nexport const SET_ACTIONS_ACTIVE = 'SET_ACTIONS_ACTIVE';\nexport const JUMP_TO_STATE = 'JUMP_TO_STATE';\nexport const JUMP_TO_ACTION = 'JUMP_TO_ACTION';\nexport const IMPORT_STATE = 'IMPORT_STATE';\nexport const LOCK_CHANGES = 'LOCK_CHANGES';\nexport const PAUSE_RECORDING = 'PAUSE_RECORDING';\n\nexport class PerformAction implements Action {\n readonly type = PERFORM_ACTION;\n\n constructor(public action: Action, public timestamp: number) {\n if (typeof action.type === 'undefined') {\n throw new Error(\n 'Actions may not have an undefined \"type\" property. ' +\n 'Have you misspelled a constant?'\n );\n }\n }\n}\n\nexport class Refresh implements Action {\n readonly type = REFRESH;\n}\n\nexport class Reset implements Action {\n readonly type = RESET;\n\n constructor(public timestamp: number) {}\n}\n\nexport class Rollback implements Action {\n readonly type = ROLLBACK;\n\n constructor(public timestamp: number) {}\n}\n\nexport class Commit implements Action {\n readonly type = COMMIT;\n\n constructor(public timestamp: number) {}\n}\n\nexport class Sweep implements Action {\n readonly type = SWEEP;\n}\n\nexport class ToggleAction implements Action {\n readonly type = TOGGLE_ACTION;\n\n constructor(public id: number) {}\n}\n\nexport class SetActionsActive implements Action {\n readonly type = SET_ACTIONS_ACTIVE;\n\n constructor(\n public start: number,\n public end: number,\n public active: boolean = true\n ) {}\n}\n\nexport class JumpToState implements Action {\n readonly type = JUMP_TO_STATE;\n\n constructor(public index: number) {}\n}\n\nexport class JumpToAction implements Action {\n readonly type = JUMP_TO_ACTION;\n\n constructor(public actionId: number) {}\n}\n\nexport class ImportState implements Action {\n readonly type = IMPORT_STATE;\n\n constructor(public nextLiftedState: any) {}\n}\n\nexport class LockChanges implements Action {\n readonly type = LOCK_CHANGES;\n\n constructor(public status: boolean) {}\n}\n\nexport class PauseRecording implements Action {\n readonly type = PAUSE_RECORDING;\n\n constructor(public status: boolean) {}\n}\n\nexport type All =\n | PerformAction\n | Refresh\n | Reset\n | Rollback\n | Commit\n | Sweep\n | ToggleAction\n | SetActionsActive\n | JumpToState\n | JumpToAction\n | ImportState\n | LockChanges\n | PauseRecording;\n","import { Action } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\nimport * as Actions from './actions';\nimport {\n ActionSanitizer,\n StateSanitizer,\n Predicate,\n StoreDevtoolsConfig,\n} from './config';\nimport {\n ComputedState,\n LiftedAction,\n LiftedActions,\n LiftedState,\n} from './reducer';\n\nexport function difference(first: any[], second: any[]) {\n return first.filter(item => second.indexOf(item) < 0);\n}\n\n/**\n * Provides an app's view into the state of the lifted store.\n */\nexport function unliftState(liftedState: LiftedState) {\n const { computedStates, currentStateIndex } = liftedState;\n const { state } = computedStates[currentStateIndex];\n\n return state;\n}\n\nexport function unliftAction(liftedState: LiftedState): LiftedAction {\n return liftedState.actionsById[liftedState.nextActionId - 1];\n}\n\n/**\n * Lifts an app's action into an action on the lifted store.\n */\nexport function liftAction(action: Action) {\n return new Actions.PerformAction(action, +Date.now());\n}\n\n/**\n * Sanitizes given actions with given function.\n */\nexport function sanitizeActions(\n actionSanitizer: ActionSanitizer,\n actions: LiftedActions\n): LiftedActions {\n return Object.keys(actions).reduce(\n (sanitizedActions, actionIdx) => {\n const idx = Number(actionIdx);\n sanitizedActions[idx] = sanitizeAction(\n actionSanitizer,\n actions[idx],\n idx\n );\n return sanitizedActions;\n },\n <LiftedActions>{}\n );\n}\n\n/**\n * Sanitizes given action with given function.\n */\nexport function sanitizeAction(\n actionSanitizer: ActionSanitizer,\n action: LiftedAction,\n actionIdx: number\n): LiftedAction {\n return {\n ...action,\n action: actionSanitizer(action.action, actionIdx),\n };\n}\n\n/**\n * Sanitizes given states with given function.\n */\nexport function sanitizeStates(\n stateSanitizer: StateSanitizer,\n states: ComputedState[]\n): ComputedState[] {\n return states.map((computedState, idx) => ({\n state: sanitizeState(stateSanitizer, computedState.state, idx),\n error: computedState.error,\n }));\n}\n\n/**\n * Sanitizes given state with given function.\n */\nexport function sanitizeState(\n stateSanitizer: StateSanitizer,\n state: any,\n stateIdx: number\n) {\n return stateSanitizer(state, stateIdx);\n}\n\n/**\n * Read the config and tell if actions should be filtered\n */\nexport function shouldFilterActions(config: StoreDevtoolsConfig) {\n return config.predicate || config.actionsWhitelist || config.actionsBlacklist;\n}\n\n/**\n * Return a full filtered lifted state\n */\nexport function filterLiftedState(\n liftedState: LiftedState,\n predicate?: Predicate,\n whitelist?: string[],\n blacklist?: string[]\n): LiftedState {\n const filteredStagedActionIds: number[] = [];\n const filteredActionsById: LiftedActions = {};\n const filteredComputedStates: ComputedState[] = [];\n liftedState.stagedActionIds.forEach((id, idx) => {\n const liftedAction = liftedState.actionsById[id];\n if (!liftedAction) return;\n if (\n idx &&\n isActionFiltered(\n liftedState.computedStates[idx],\n liftedAction,\n predicate,\n whitelist,\n blacklist\n )\n ) {\n return;\n }\n filteredActionsById[id] = liftedAction;\n filteredStagedActionIds.push(id);\n filteredComputedStates.push(liftedState.computedStates[idx]);\n });\n return {\n ...liftedState,\n stagedActionIds: filteredStagedActionIds,\n actionsById: filteredActionsById,\n computedStates: filteredComputedStates,\n };\n}\n\n/**\n * Return true is the action should be ignored\n */\nexport function isActionFiltered(\n state: any,\n action: LiftedAction,\n predicate?: Predicate,\n whitelist?: string[],\n blacklist?: string[]\n) {\n return (\n (predicate && !predicate(state, action.action)) ||\n (whitelist && !action.action.type.match(whitelist.join('|'))) ||\n (blacklist && action.action.type.match(blacklist.join('|')))\n );\n}\n","import { ActionsSubject } from '@ngrx/store';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DevtoolsDispatcher extends ActionsSubject {}\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { Action } from '@ngrx/store';\nimport { empty, of, Observable } from 'rxjs';\nimport {\n filter,\n map,\n share,\n switchMap,\n takeUntil,\n concatMap,\n debounceTime,\n timeout,\n catchError,\n take,\n} from 'rxjs/operators';\n\nimport { PERFORM_ACTION, IMPORT_STATE } from './actions';\nimport {\n SerializationOptions,\n STORE_DEVTOOLS_CONFIG,\n StoreDevtoolsConfig,\n} from './config';\nimport { LiftedAction, LiftedState } from './reducer';\nimport {\n sanitizeAction,\n sanitizeActions,\n sanitizeState,\n sanitizeStates,\n unliftState,\n isActionFiltered,\n filterLiftedState,\n shouldFilterActions,\n} from './utils';\nimport { UPDATE } from '@ngrx/store';\nimport { DevtoolsDispatcher } from './devtools-dispatcher';\n\nexport const ExtensionActionTypes = {\n START: 'START',\n DISPATCH: 'DISPATCH',\n STOP: 'STOP',\n ACTION: 'ACTION',\n};\n\nexport const REDUX_DEVTOOLS_EXTENSION = new InjectionToken<\n ReduxDevtoolsExtension\n>('Redux Devtools Extension');\n\nexport interface ReduxDevtoolsExtensionConnection {\n subscribe(listener: (change: any) => void): void;\n unsubscribe(): void;\n send(action: any, state: any): void;\n init(state?: any): void;\n error(anyErr: any): void;\n}\nexport interface ReduxDevtoolsExtensionConfig {\n features?: object | boolean;\n name: string | undefined;\n maxAge?: number;\n serialize?: boolean | SerializationOptions;\n}\n\nexport interface ReduxDevtoolsExtension {\n connect(\n options: ReduxDevtoolsExtensionConfig\n ): ReduxDevtoolsExtensionConnection;\n send(action: any, state: any, options: ReduxDevtoolsExtensionConfig): void;\n}\n\n@Injectable()\nexport class DevtoolsExtension {\n private devtoolsExtension: ReduxDevtoolsExtension;\n private extensionConnection: ReduxDevtoolsExtensionConnection;\n\n liftedActions$: Observable<any>;\n actions$: Observable<any>;\n start$: Observable<any>;\n\n constructor(\n @Inject(REDUX_DEVTOOLS_EXTENSION) devtoolsExtension: ReduxDevtoolsExtension,\n @Inject(STORE_DEVTOOLS_CONFIG) private config: StoreDevtoolsConfig,\n private dispatcher: DevtoolsDispatcher\n ) {\n this.devtoolsExtension = devtoolsExtension;\n this.createActionStreams();\n }\n\n notify(action: LiftedAction, state: LiftedState) {\n if (!this.devtoolsExtension) {\n return;\n }\n // Check to see if the action requires a full update of the liftedState.\n // If it is a simple action generated by the user's app and the recording\n // is not locked/paused, only send the action and the current state (fast).\n //\n // A full liftedState update (slow: serializes the entire liftedState) is\n // only required when:\n // a) redux-devtools-extension fires the @@Init action (ignored by\n // @ngrx/store-devtools)\n // b) an action is generated by an @ngrx module (e.g. @ngrx/effects/init\n // or @ngrx/store/update-reducers)\n // c) the state has been recomputed due to time-traveling\n // d) any action that is not a PerformAction to err on the side of\n // caution.\n if (action.type === PERFORM_ACTION) {\n if (state.isLocked || state.isPaused) {\n return;\n }\n\n const currentState = unliftState(state);\n if (\n shouldFilterActions(this.config) &&\n isActionFiltered(\n currentState,\n action,\n this.config.predicate,\n this.config.actionsWhitelist,\n this.config.actionsBlacklist\n )\n ) {\n return;\n }\n const sanitizedState = this.config.stateSanitizer\n ? sanitizeState(\n this.config.stateSanitizer,\n currentState,\n state.currentStateIndex\n )\n : currentState;\n const sanitizedAction = this.config.actionSanitizer\n ? sanitizeAction(\n this.config.actionSanitizer,\n action,\n state.nextActionId\n )\n : action;\n this.extensionConnection.send(sanitizedAction, sanitizedState);\n } else {\n // Requires full state update\n const sanitizedLiftedState = {\n ...state,\n stagedActionIds: state.stagedActionIds,\n actionsById: this.config.actionSanitizer\n ? sanitizeActions(this.config.actionSanitizer, state.actionsById)\n : state.actionsById,\n computedStates: this.config.stateSanitizer\n ? sanitizeStates(this.config.stateSanitizer, state.computedStates)\n : state.computedStates,\n };\n this.devtoolsExtension.send(\n null,\n sanitizedLiftedState,\n this.getExtensionConfig(this.config)\n );\n }\n }\n\n private createChangesObservable(): Observable<any> {\n if (!this.devtoolsExtension) {\n return empty();\n }\n\n return new Observable(subscriber => {\n const connection = this.devtoolsExtension.connect(\n this.getExtensionConfig(this.config)\n );\n this.extensionConnection = connection;\n connection.init();\n\n connection.subscribe((change: any) => subscriber.next(change));\n return connection.unsubscribe;\n });\n }\n\n private createActionStreams() {\n // Listens to all changes\n const changes$ = this.createChangesObservable().pipe(share());\n\n // Listen for the start action\n const start$ = changes$.pipe(\n filter((change: any) => change.type === ExtensionActionTypes.START)\n );\n\n // Listen for the stop action\n const stop$ = changes$.pipe(\n filter((change: any) => change.type === ExtensionActionTypes.STOP)\n );\n\n // Listen for lifted actions\n const liftedActions$ = changes$.pipe(\n filter(change => change.type === ExtensionActionTypes.DISPATCH),\n map(change => this.unwrapAction(change.payload)),\n concatMap((action: any) => {\n if (action.type === IMPORT_STATE) {\n // State imports may happen in two situations:\n // 1. Explicitly by user\n // 2. User activated the \"persist state accross reloads\" option\n // and now the state is imported during reload.\n // Because of option 2, we need to give possible\n // lazy loaded reducers time to instantiate.\n // As soon as there is no UPDATE action within 1 second,\n // it is assumed that all reducers are loaded.\n return this.dispatcher.pipe(\n filter(action => action.type === UPDATE),\n timeout(1000),\n debounceTime(1000),\n map(() => action),\n catchError(() => of(action)),\n take(1)\n );\n } else {\n return of(action);\n }\n })\n );\n\n // Listen for unlifted actions\n const actions$ = changes$.pipe(\n filter(change => change.type === ExtensionActionTypes.ACTION),\n map(change => this.unwrapAction(change.payload))\n );\n\n const actionsUntilStop$ = actions$.pipe(takeUntil(stop$));\n const liftedUntilStop$ = liftedActions$.pipe(takeUntil(stop$));\n this.start$ = start$.pipe(takeUntil(stop$));\n\n // Only take the action sources between the start/stop events\n this.actions$ = this.start$.pipe(switchMap(() => actionsUntilStop$));\n this.liftedActions$ = this.start$.pipe(switchMap(() => liftedUntilStop$));\n }\n\n private unwrapAction(action: Action) {\n return typeof action === 'string' ? eval(`(${action})`) : action;\n }\n\n private getExtensionConfig(config: StoreDevtoolsConfig) {\n const extensionOptions: ReduxDevtoolsExtensionConfig = {\n name: config.name,\n features: config.features,\n serialize: config.serialize,\n // The action/state sanitizers are not added to the config\n // because sanitation is done in this class already.\n // It is done before sending it to the devtools extension for consistency:\n // - If we call extensionConnection.send(...),\n // the extension would call the sanitizers.\n // - If we call devtoolsExtension.send(...) (aka full state update),\n // the extension would NOT call the sanitizers, so we have to do it ourselves.\n };\n if (config.maxAge !== false /* support === 0 */) {\n extensionOptions.maxAge = config.maxAge;\n }\n return extensionOptions;\n }\n}\n","import { ErrorHandler } from '@angular/core';\nimport {\n Action,\n ActionReducer,\n ActionsSubject,\n ReducerManager,\n UPDATE,\n INIT,\n} from '@ngrx/store';\nimport { difference, liftAction } from './utils';\nimport * as DevtoolsActions from './actions';\nimport { StoreDevtoolsConfig, StateSanitizer } from './config';\nimport { PerformAction } from './actions';\n\nexport type InitAction = {\n readonly type: typeof INIT;\n};\n\nexport type UpdateReducerAction = {\n readonly type: typeof UPDATE;\n};\n\nexport type CoreActions = InitAction | UpdateReducerAction;\nexport type Actions = DevtoolsActions.All | CoreActions;\n\nexport const INIT_ACTION = { type: INIT };\n\nexport const RECOMPUTE = '@ngrx/store-devtools/recompute' as '@ngrx/store-devtools/recompute';\nexport const RECOMPUTE_ACTION = { type: RECOMPUTE };\n\nexport interface ComputedState {\n state: any;\n error: any;\n}\n\nexport interface LiftedAction {\n type: string;\n action: Action;\n}\n\nexport interface LiftedActions {\n [id: number]: LiftedAction;\n}\n\nexport interface LiftedState {\n monitorState: any;\n nextActionId: number;\n actionsById: LiftedActions;\n stagedActionIds: number[];\n skippedActionIds: number[];\n committedState: any;\n currentStateIndex: number;\n computedStates: ComputedState[];\n isLocked: boolean;\n isPaused: boolean;\n}\n\n/**\n * Computes the next entry in the log by applying an action.\n */\nfunction computeNextEntry(\n reducer: ActionReducer<any, any>,\n action: Action,\n state: any,\n error: any,\n errorHandler: ErrorHandler\n) {\n if (error) {\n return {\n state,\n error: 'Interrupted by an error up the chain',\n };\n }\n\n let nextState = state;\n let nextError;\n try {\n nextState = reducer(state, action);\n } catch (err) {\n nextError = err.toString();\n errorHandler.handleError(err.stack || err);\n }\n\n return {\n state: nextState,\n error: nextError,\n };\n}\n\n/**\n * Runs the reducer on invalidated actions to get a fresh computation log.\n */\nfunction recomputeStates(\n computedStates: ComputedState[],\n minInvalidatedStateIndex: number,\n reducer: ActionReducer<any, any>,\n committedState: any,\n actionsById: LiftedActions,\n stagedActionIds: number[],\n skippedActionIds: number[],\n errorHandler: ErrorHandler,\n isPaused: boolean\n) {\n // Optimization: exit early and return the same reference\n // if we know nothing could have changed.\n if (\n minInvalidatedStateIndex >= computedStates.length &&\n computedStates.length === stagedActionIds.length\n ) {\n return computedStates;\n }\n\n const nextComputedStates = computedStates.slice(0, minInvalidatedStateIndex);\n // If the recording is paused, recompute all states up until the pause state,\n // else recompute all states.\n const lastIncludedActionId = stagedActionIds.length - (isPaused ? 1 : 0);\n for (let i = minInvalidatedStateIndex; i < lastIncludedActionId; i++) {\n const actionId = stagedActionIds[i];\n const action = actionsById[actionId].action;\n\n const previousEntry = nextComputedStates[i - 1];\n const previousState = previousEntry ? previousEntry.state : committedState;\n const previousError = previousEntry ? previousEntry.error : undefined;\n\n const shouldSkip = skippedActionIds.indexOf(actionId) > -1;\n const entry: ComputedState = shouldSkip\n ? previousEntry\n : computeNextEntry(\n reducer,\n action,\n previousState,\n previousError,\n errorHandler\n );\n\n nextComputedStates.push(entry);\n }\n // If the recording is paused, the last state will not be recomputed,\n // because it's essentially not part of the state history.\n if (isPaused) {\n nextComputedStates.push(computedStates[computedStates.length - 1]);\n }\n\n return nextComputedStates;\n}\n\nexport function liftInitialState(\n initialCommittedState?: any,\n monitorReducer?: any\n): LiftedState {\n return {\n monitorState: monitorReducer(undefined, {}),\n nextActionId: 1,\n actionsById: { 0: liftAction(INIT_ACTION) },\n stagedActionIds: [0],\n skippedActionIds: [],\n committedState: initialCommittedState,\n currentStateIndex: 0,\n computedStates: [],\n isLocked: false,\n isPaused: false,\n };\n}\n\n/**\n * Creates a history state reducer from an app's reducer.\n */\nexport function liftReducerWith(\n initialCommittedState: any,\n initialLiftedState: LiftedState,\n errorHandler: ErrorHandler,\n monitorReducer?: any,\n options: Partial<StoreDevtoolsConfig> = {}\n) {\n /**\n * Manages how the history actions modify the history state.\n */\n return (\n reducer: ActionReducer<any, any>\n ): ActionReducer<LiftedState, Actions> => (liftedState, liftedAction) => {\n let {\n monitorState,\n actionsById,\n nextActionId,\n stagedActionIds,\n skippedActionIds,\n committedState,\n currentStateIndex,\n computedStates,\n isLocked,\n isPaused,\n } =\n liftedState || initialLiftedState;\n\n if (!liftedState) {\n // Prevent mutating initialLiftedState\n actionsById = Object.create(actionsById);\n }\n\n function commitExcessActions(n: number) {\n // Auto-commits n-number of excess actions.\n let excess = n;\n let idsToDelete = stagedActionIds.slice(1, excess + 1);\n\n for (let i = 0; i < idsToDelete.length; i++) {\n if (computedStates[i + 1].error) {\n // Stop if error is found. Commit actions up to error.\n excess = i;\n idsToDelete = stagedActionIds.slice(1, excess + 1);\n break;\n } else {\n delete actionsById[idsToDelete[i]];\n }\n }\n\n skippedActionIds = skippedActionIds.filter(\n id => idsToDelete.indexOf(id) === -1\n );\n stagedActionIds = [0, ...stagedActionIds.slice(excess + 1)];\n committedState = computedStates[excess].state;\n computedStates = computedStates.slice(excess);\n currentStateIndex =\n currentStateIndex > excess ? currentStateIndex - excess : 0;\n }\n\n function commitChanges() {\n // Consider the last committed state the new starting point.\n // Squash any staged actions into a single committed state.\n actionsById = { 0: liftAction(INIT_ACTION) };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n committedState = computedStates[currentStateIndex].state;\n currentStateIndex = 0;\n computedStates = [];\n }\n\n // By default, aggressively recompute every state whatever happens.\n // This has O(n) performance, so we'll override this to a sensible\n // value whenever we feel like we don't have to recompute the states.\n let minInvalidatedStateIndex = 0;\n\n switch (liftedAction.type) {\n case DevtoolsActions.LOCK_CHANGES: {\n isLocked = liftedAction.status;\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case DevtoolsActions.PAUSE_RECORDING: {\n isPaused = liftedAction.status;\n if (isPaused) {\n // Add a pause action to signal the devtools-user the recording is paused.\n // The corresponding state will be overwritten on each update to always contain\n // the latest state (see Actions.PERFORM_ACTION).\n stagedActionIds = [...stagedActionIds, nextActionId];\n actionsById[nextActionId] = new PerformAction(\n {\n type: '@ngrx/devtools/pause',\n },\n +Date.now()\n );\n nextActionId++;\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n computedStates = computedStates.concat(\n computedStates[computedStates.length - 1]\n );\n\n if (currentStateIndex === stagedActionIds.length - 2) {\n currentStateIndex++;\n }\n minInvalidatedStateIndex = Infinity;\n } else {\n commitChanges();\n }\n break;\n }\n case DevtoolsActions.RESET: {\n // Get back to the state the store was created with.\n actionsById = { 0: liftAction(INIT_ACTION) };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n committedState = initialCommittedState;\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case DevtoolsActions.COMMIT: {\n commitChanges();\n break;\n }\n case DevtoolsActions.ROLLBACK: {\n // Forget about any staged actions.\n // Start again from the last committed state.\n actionsById = { 0: liftAction(INIT_ACTION) };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case DevtoolsActions.TOGGLE_ACTION: {\n // Toggle whether an action with given ID is skipped.\n // Being skipped means it is a no-op during the computation.\n const { id: actionId } = liftedAction;\n const index = skippedActionIds.indexOf(actionId);\n if (index === -1) {\n skippedActionIds = [actionId, ...skippedActionIds];\n } else {\n skippedActionIds = skippedActionIds.filter(id => id !== actionId);\n }\n // Optimization: we know history before this action hasn't changed\n minInvalidatedStateIndex = stagedActionIds.indexOf(actionId);\n break;\n }\n case DevtoolsActions.SET_ACTIONS_ACTIVE: {\n // Toggle whether an action with given ID is skipped.\n // Being skipped means it is a no-op during the computation.\n const { start, end, active } = liftedAction;\n const actionIds = [];\n for (let i = start; i < end; i++) actionIds.push(i);\n if (active) {\n skippedActionIds = difference(skippedActionIds, actionIds);\n } else {\n skippedActionIds = [...skippedActionIds, ...actionIds];\n }\n\n // Optimization: we know history before this action hasn't changed\n minInvalidatedStateIndex = stagedActionIds.indexOf(start);\n break;\n }\n case DevtoolsActions.JUMP_TO_STATE: {\n // Without recomputing anything, move the pointer that tell us\n // which state is considered the current one. Useful for sliders.\n currentStateIndex = liftedAction.index;\n // Optimization: we know the history has not changed.\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case DevtoolsActions.JUMP_TO_ACTION: {\n // Jumps to a corresponding state to a specific action.\n // Useful when filtering actions.\n const index = stagedActionIds.indexOf(liftedAction.actionId);\n if (index !== -1) currentStateIndex = index;\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case DevtoolsActions.SWEEP: {\n // Forget any actions that are currently being skipped.\n stagedActionIds = difference(stagedActionIds, skippedActionIds);\n skippedActionIds = [];\n currentStateIndex = Math.min(\n currentStateIndex,\n stagedActionIds.length - 1\n );\n break;\n }\n case DevtoolsActions.PERFORM_ACTION: {\n // Ignore action and return state as is if recording is locked\n if (isLocked) {\n return liftedState || initialLiftedState;\n }\n\n if (isPaused) {\n // If recording is paused, overwrite the last state\n // (corresponds to the pause action) and keep everything else as is.\n // This way, the app gets the new current state while the devtools\n // do not record another action.\n const lastState = computedStates[computedStates.length - 1];\n computedStates = [\n ...computedStates.slice(0, -1),\n computeNextEntry(\n reducer,\n liftedAction.action,\n lastState.state,\n lastState.error,\n errorHandler\n ),\n ];\n minInvalidatedStateIndex = Infinity;\n break;\n }\n\n // Auto-commit as new actions come in.\n if (options.maxAge && stagedActionIds.length === options.maxAge) {\n commitExcessActions(1);\n }\n\n if (currentStateIndex === stagedActionIds.length - 1) {\n currentStateIndex++;\n }\n const actionId = nextActionId++;\n // Mutation! This is the hottest path, and we optimize on purpose.\n // It is safe because we set a new key in a cache dictionary.\n actionsById[actionId] = liftedAction;\n\n stagedActionIds = [...stagedActionIds, actionId];\n // Optimization: we know that only the new action needs computing.\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n break;\n }\n case DevtoolsActions.IMPORT_STATE: {\n // Completely replace everything.\n ({\n monitorState,\n actionsById,\n nextActionId,\n stagedActionIds,\n skippedActionIds,\n committedState,\n currentStateIndex,\n computedStates,\n isLocked,\n // prettier-ignore\n isPaused\n } = liftedAction.nextLiftedState);\n break;\n }\n case INIT: {\n // Always recompute states on hot reload and init.\n minInvalidatedStateIndex = 0;\n\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n // States must be recomputed before committing excess.\n computedStates = recomputeStates(\n computedStates,\n minInvalidatedStateIndex,\n reducer,\n committedState,\n actionsById,\n stagedActionIds,\n skippedActionIds,\n errorHandler,\n isPaused\n );\n\n commitExcessActions(stagedActionIds.length - options.maxAge);\n\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n\n break;\n }\n case UPDATE: {\n const stateHasErrors =\n computedStates.filter(state => state.error).length > 0;\n\n if (stateHasErrors) {\n // Recompute all states\n minInvalidatedStateIndex = 0;\n\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n // States must be recomputed before committing excess.\n computedStates = recomputeStates(\n computedStates,\n minInvalidatedStateIndex,\n reducer,\n committedState,\n actionsById,\n stagedActionIds,\n skippedActionIds,\n errorHandler,\n isPaused\n );\n\n commitExcessActions(stagedActionIds.length - options.maxAge);\n\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n } else {\n // If not paused/locked, add a new action to signal devtools-user\n // that there was a reducer update.\n if (!isPaused && !isLocked) {\n if (currentStateIndex === stagedActionIds.length - 1) {\n currentStateIndex++;\n }\n\n // Add a new action to only recompute state\n const actionId = nextActionId++;\n actionsById[actionId] = new PerformAction(\n liftedAction,\n +Date.now()\n );\n stagedActionIds = [...stagedActionIds, actionId];\n\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n\n computedStates = recomputeStates(\n computedStates,\n minInvalidatedStateIndex,\n reducer,\n committedState,\n actionsById,\n stagedActionIds,\n skippedActionIds,\n errorHandler,\n isPaused\n );\n }\n\n // Recompute state history with latest reducer and update action\n computedStates = computedStates.map(cmp => ({\n ...cmp,\n state: reducer(cmp.state, RECOMPUTE_ACTION),\n }));\n\n currentStateIndex = stagedActionIds.length - 1;\n\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n commitExcessActions(stagedActionIds.length - options.maxAge);\n }\n\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n\n break;\n }\n default: {\n // If the action is not recognized, it's a monitor action.\n // Optimization: a monitor action can't change history.\n minInvalidatedStateIndex = Infinity;\n break;\n }\n }\n\n computedStates = recomputeStates(\n computedStates,\n minInvalidatedStateIndex,\n reducer,\n committedState,\n actionsById,\n stagedActionIds,\n skippedActionIds,\n errorHandler,\n isPaused\n );\n monitorState = monitorReducer(monitorState, liftedAction);\n\n return {\n monitorState,\n actionsById,\n nextActionId,\n stagedActionIds,\n skippedActionIds,\n committedState,\n currentStateIndex,\n computedStates,\n isLocked,\n isPaused,\n };\n };\n}\n","import { Injectable, Inject, ErrorHandler } from '@angular/core';\nimport {\n Action,\n ActionReducer,\n ActionsSubject,\n INITIAL_STATE,\n ReducerObservable,\n ScannedActionsSubject,\n} from '@ngrx/store';\nimport {\n merge,\n Observable,\n Observer,\n queueScheduler,\n ReplaySubject,\n Subscription,\n} from 'rxjs';\nimport { map, observeOn, scan, skip, withLatestFrom } from 'rxjs/operators';\n\nimport * as Actions from './actions';\nimport { STORE_DEVTOOLS_CONFIG, StoreDevtoolsConfig } from './config';\nimport { DevtoolsExtension } from './extension';\nimport { LiftedState, liftInitialState, liftReducerWith } from './reducer';\nimport { liftAction, unliftState, shouldFilterActions, filterLiftedState } from './utils';\nimport { DevtoolsDispatcher } from './devtools-dispatcher';\nimport { PERFORM_ACTION } from './actions';\n\n@Injectable()\nexport class StoreDevtools implements Observer<any> {\n private stateSubscription: Subscription;\n private extensionStartSubscription: Subscription;\n public dispatcher: ActionsSubject;\n public liftedState: Observable<LiftedState>;\n public state: Observable<any>;\n\n constructor(\n dispatcher: DevtoolsDispatcher,\n actions$: ActionsSubject,\n reducers$: ReducerObservable,\n extension: DevtoolsExtension,\n scannedActions: ScannedActionsSubject,\n errorHandler: ErrorHandler,\n @Inject(INITIAL_STATE) initialState: any,\n @Inject(STORE_DEVTOOLS_CONFIG) config: StoreDevtoolsConfig\n ) {\n const liftedInitialState = liftInitialState(initialState, config.monitor);\n const liftReducer = liftReducerWith(\n initialState,\n liftedInitialState,\n errorHandler,\n config.monitor,\n config\n );\n\n const liftedAction$ = merge(\n merge(actions$.asObservable().pipe(skip(1)), extension.actions$).pipe(\n map(liftAction)\n ),\n dispatcher,\n extension.liftedActions$\n ).pipe(observeOn(queueScheduler));\n\n const liftedReducer$ = reducers$.pipe(map(liftReducer));\n\n const liftedStateSubject = new ReplaySubject<LiftedState>(1);\n\n const liftedStateSubscription = liftedAction$\n .pipe(\n withLatestFrom(liftedReducer$),\n scan<\n [any, ActionReducer<LiftedState, Actions.All>],\n {\n state: LiftedState;\n action: any;\n }\n >(\n ({ state: liftedState }, [action, reducer]) => {\n let reducedLiftedState = reducer(liftedState, action);\n // On full state update\n // If we have actions filters, we must filter completly our lifted state to be sync with the extension\n if (action.type !== PERFORM_ACTION && shouldFilterActions(config)) {\n reducedLiftedState = filterLiftedState(\n reducedLiftedState,\n config.predicate,\n config.actionsWhitelist,\n config.actionsBlacklist\n );\n }\n // Extension should be sent the sanitized lifted state\n extension.notify(action, reducedLiftedState);\n return { state: reducedLiftedState, action };\n },\n { state: liftedInitialState, action: null as any }\n )\n )\n .subscribe(({ state, action }) => {\n liftedStateSubject.next(state);\n\n if (action.type === Actions.PERFORM_ACTION) {\n const unliftedAction = (action as Actions.PerformAction).action;\n\n scannedActions.next(unliftedAction);\n }\n });\n\n const extensionStartSubscription = extension.start$.subscribe(() => {\n this.refresh();\n });\n\n const liftedState$ = liftedStateSubject.asObservable() as Observable<\n LiftedState\n >;\n const state$ = liftedState$.pipe(map(unliftState));\n\n this.extensionStartSubscription = extensionStartSubscription;\n this.stateSubscription = liftedStateSubscription;\n this.dispatcher = dispatcher;\n this.liftedState = liftedState$;\n this.state = state$;\n }\n\n dispatch(action: Action) {\n this.dispatcher.next(action);\n }\n\n next(action: any) {\n this.dispatcher.next(action);\n }\n\n error(error: any) { }\n\n complete() { }\n\n performAction(action: any) {\n this.dispatch(new Actions.PerformAction(action, +Date.now()));\n }\n\n refresh() {\n this.dispatch(new Actions.Refresh());\n }\n\n reset() {\n this.dispatch(new Actions.Reset(+Date.now()));\n }\n\n rollback() {\n this.dispatch(new Actions.Rollback(+Date.now()));\n }\n\n commit() {\n this.dispatch(new Actions.Commit(+Date.now()));\n }\n\n sweep() {\n this.dispatch(new Actions.Sweep());\n }\n\n toggleAction(id: number) {\n this.dispatch(new Actions.ToggleAction(id));\n }\n\n jumpToAction(actionId: number) {\n this.dispatch(new Actions.JumpToAction(actionId));\n }\n\n jumpToState(index: number) {\n this.dispatch(new Actions.JumpToState(index));\n }\n\n importState(nextLiftedState: any) {\n this.dispatch(new Actions.ImportState(nextLiftedState));\n }\n\n lockChanges(status: boolean) {\n this.dispatch(new Actions.LockChanges(status));\n }\n\n pauseRecording(status: boolean) {\n this.dispatch(new Actions.PauseRecording(status));\n }\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ReducerManagerDispatcher, StateObservable } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\nimport {\n INITIAL_OPTIONS,\n STORE_DEVTOOLS_CONFIG,\n StoreDevtoolsConfig,\n StoreDevtoolsOptions,\n noMonitor,\n createConfig,\n} from './config';\nimport { StoreDevtools } from './devtools';\nimport {\n DevtoolsExtension,\n REDUX_DEVTOOLS_EXTENSION,\n ReduxDevtoolsExtension,\n} from './extension';\nimport { DevtoolsDispatcher } from './devtools-dispatcher';\n\nexport const IS_EXTENSION_OR_MONITOR_PRESENT = new InjectionToken<boolean>(\n 'Is Devtools Extension or Monitor Present'\n);\n\nexport function createIsExtensionOrMonitorPresent(\n extension: ReduxDevtoolsExtension | null,\n config: StoreDevtoolsConfig\n) {\n return Boolean(extension) || config.monitor !== noMonitor;\n}\n\nexport function createReduxDevtoolsExtension() {\n const extensionKey = '__REDUX_DEVTOOLS_EXTENSION__';\n\n if (\n typeof window === 'object' &&\n typeof (window as any)[extensionKey] !== 'undefined'\n ) {\n return (window as any)[extensionKey];\n } else {\n return null;\n }\n}\n\nexport function createStateObservable(\n devtools: StoreDevtools\n): Observable<any> {\n return devtools.state;\n}\n\n@NgModule({})\nexport class StoreDevtoolsModule {\n static instrument(\n options: StoreDevtoolsOptions = {}\n ): ModuleWithProviders<StoreDevtoolsModule> {\n return {\n ngModule: StoreDevtoolsModule,\n providers: [\n DevtoolsExtension,\n DevtoolsDispatcher,\n StoreDevtools,\n {\n provide: INITIAL_OPTIONS,\n useValue: options,\n },\n {\n provide: IS_EXTENSION_OR_MONITOR_PRESENT,\n deps: [REDUX_DEVTOOLS_EXTENSION, STORE_DEVTOOLS_CONFIG],\n useFactory: createIsExtensionOrMonitorPresent,\n },\n {\n provide: REDUX_DEVTOOLS_EXTENSION,\n useFactory: createReduxDevtoolsExtension,\n },\n {\n provide: STORE_DEVTOOLS_CONFIG,\n deps: [INITIAL_OPTIONS],\n useFactory: createConfig,\n },\n {\n provide: StateObservable,\n deps: [StoreDevtools],\n useFactory: createStateObservable,\n },\n {\n provide: ReducerManagerDispatcher,\n useExisting: DevtoolsDispatcher,\n },\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {INITIAL_OPTIONS as ɵngrx_modules_store_devtools_store_devtools_f,STORE_DEVTOOLS_CONFIG as ɵngrx_modules_store_devtools_store_devtools_e,createConfig as ɵngrx_modules_store_devtools_store_devtools_h,noMonitor as ɵngrx_modules_store_devtools_store_devtools_g} from './src/config';\nexport {DevtoolsDispatcher as ɵngrx_modules_store_devtools_store_devtools_k} from './src/devtools-dispatcher';\nexport {DevtoolsExtension as ɵngrx_modules_store_devtools_store_devtools_j,REDUX_DEVTOOLS_EXTENSION as ɵngrx_modules_store_devtools_store_devtools_i} from './src/extension';\nexport {IS_EXTENSION_OR_MONITOR_PRESENT as ɵngrx_modules_store_devtools_store_devtools_a,createIsExtensionOrMonitorPresent as ɵngrx_modules_store_devtools_store_devtools_b,createReduxDevtoolsExtension as ɵngrx_modules_store_devtools_store_devtools_c,createStateObservable as ɵngrx_modules_store_devtools_store_devtools_d} from './src/instrument';"],"names":["Actions.PerformAction","DevtoolsActions.LOCK_CHANGES","DevtoolsActions.PAUSE_RECORDING","DevtoolsActions.RESET","DevtoolsActions.COMMIT","DevtoolsActions.ROLLBACK","DevtoolsActions.TOGGLE_ACTION","DevtoolsActions.SET_ACTIONS_ACTIVE","DevtoolsActions.JUMP_TO_STATE","DevtoolsActions.JUMP_TO_ACTION","DevtoolsActions.SWEEP","DevtoolsActions.PERFORM_ACTION","DevtoolsActions.IMPORT_STATE","Actions.PERFORM_ACTION","Actions.Refresh","Actions.Reset","Actions.Rollback","Actions.Commit","Actions.Sweep","Actions.ToggleAction","Actions.JumpToAction","Actions.JumpToState","Actions.ImportState","Actions.LockChanges","Actions.PauseRecording"],"mappings":"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"}
|