@angular/router 5.2.10 → 5.2.11

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.
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sources":["../../../packages/router/src/events.js","../../../packages/router/src/shared.js","../../../packages/router/src/config.js","../../../packages/router/src/utils/collection.js","../../../packages/router/src/url_tree.js","../../../packages/router/src/apply_redirects.js","../../../packages/router/src/utils/tree.js","../../../packages/router/src/router_state.js","../../../packages/router/src/create_router_state.js","../../../packages/router/src/create_url_tree.js","../../../packages/router/src/pre_activation.js","../../../packages/router/src/recognize.js","../../../packages/router/src/route_reuse_strategy.js","../../../packages/router/src/router_config_loader.js","../../../packages/router/src/url_handling_strategy.js","../../../packages/router/src/router.js","../../../packages/router/src/directives/router_link.js","../../../packages/router/src/directives/router_link_active.js","../../../packages/router/src/router_outlet_context.js","../../../packages/router/src/directives/router_outlet.js","../../../packages/router/src/router_preloader.js","../../../packages/router/src/router_module.js","../../../packages/router/src/version.js","../../../packages/router/src/private_export.js","../../../packages/router/src/index.js","../../../packages/router/public_api.js","../../../packages/router/router.js"],"sourcesContent":["/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * \\@whatItDoes Base for events the Router goes through, as opposed to events tied to a specific\n * Route. `RouterEvent`s will only be fired one time for any given navigation.\n *\n * Example:\n *\n * ```\n * class MyService {\n * constructor(public router: Router, logger: Logger) {\n * router.events.filter(e => e instanceof RouterEvent).subscribe(e => {\n * logger.log(e.id, e.url);\n * });\n * }\n * }\n * ```\n *\n * \\@experimental\n */\nexport class RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n */\n constructor(id, url) {\n this.id = id;\n this.url = url;\n }\n}\nfunction RouterEvent_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n RouterEvent.prototype.id;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n RouterEvent.prototype.url;\n}\n/**\n * \\@whatItDoes Represents an event triggered when a navigation starts.\n *\n * \\@stable\n */\nexport class NavigationStart extends RouterEvent {\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() { return `NavigationStart(id: ${this.id}, url: '${this.url}')`; }\n}\n/**\n * \\@whatItDoes Represents an event triggered when a navigation ends successfully.\n *\n * \\@stable\n */\nexport class NavigationEnd extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} urlAfterRedirects\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, urlAfterRedirects) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() {\n return `NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`;\n }\n}\nfunction NavigationEnd_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n NavigationEnd.prototype.urlAfterRedirects;\n}\n/**\n * \\@whatItDoes Represents an event triggered when a navigation is canceled.\n *\n * \\@stable\n */\nexport class NavigationCancel extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} reason\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, reason) {\n super(id, url);\n this.reason = reason;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() { return `NavigationCancel(id: ${this.id}, url: '${this.url}')`; }\n}\nfunction NavigationCancel_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n NavigationCancel.prototype.reason;\n}\n/**\n * \\@whatItDoes Represents an event triggered when a navigation fails due to an unexpected error.\n *\n * \\@stable\n */\nexport class NavigationError extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} error\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, error) {\n super(id, url);\n this.error = error;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() {\n return `NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`;\n }\n}\nfunction NavigationError_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n NavigationError.prototype.error;\n}\n/**\n * \\@whatItDoes Represents an event triggered when routes are recognized.\n *\n * \\@stable\n */\nexport class RoutesRecognized extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} urlAfterRedirects\n * @param {?} state\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, urlAfterRedirects, state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() {\n return `RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\nfunction RoutesRecognized_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n RoutesRecognized.prototype.urlAfterRedirects;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n RoutesRecognized.prototype.state;\n}\n/**\n * \\@whatItDoes Represents the start of the Guard phase of routing.\n *\n * \\@experimental\n */\nexport class GuardsCheckStart extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} urlAfterRedirects\n * @param {?} state\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, urlAfterRedirects, state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n }\n /**\n * @return {?}\n */\n toString() {\n return `GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\nfunction GuardsCheckStart_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n GuardsCheckStart.prototype.urlAfterRedirects;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n GuardsCheckStart.prototype.state;\n}\n/**\n * \\@whatItDoes Represents the end of the Guard phase of routing.\n *\n * \\@experimental\n */\nexport class GuardsCheckEnd extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} urlAfterRedirects\n * @param {?} state\n * @param {?} shouldActivate\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, urlAfterRedirects, state, shouldActivate) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.shouldActivate = shouldActivate;\n }\n /**\n * @return {?}\n */\n toString() {\n return `GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`;\n }\n}\nfunction GuardsCheckEnd_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n GuardsCheckEnd.prototype.urlAfterRedirects;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n GuardsCheckEnd.prototype.state;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n GuardsCheckEnd.prototype.shouldActivate;\n}\n/**\n * \\@whatItDoes Represents the start of the Resolve phase of routing. The timing of this\n * event may change, thus it's experimental. In the current iteration it will run\n * in the \"resolve\" phase whether there's things to resolve or not. In the future this\n * behavior may change to only run when there are things to be resolved.\n *\n * \\@experimental\n */\nexport class ResolveStart extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} urlAfterRedirects\n * @param {?} state\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, urlAfterRedirects, state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n }\n /**\n * @return {?}\n */\n toString() {\n return `ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\nfunction ResolveStart_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ResolveStart.prototype.urlAfterRedirects;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ResolveStart.prototype.state;\n}\n/**\n * \\@whatItDoes Represents the end of the Resolve phase of routing. See note on\n * {\\@link ResolveStart} for use of this experimental API.\n *\n * \\@experimental\n */\nexport class ResolveEnd extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} urlAfterRedirects\n * @param {?} state\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, urlAfterRedirects, state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n }\n /**\n * @return {?}\n */\n toString() {\n return `ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\nfunction ResolveEnd_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ResolveEnd.prototype.urlAfterRedirects;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ResolveEnd.prototype.state;\n}\n/**\n * \\@whatItDoes Represents an event triggered before lazy loading a route config.\n *\n * \\@experimental\n */\nexport class RouteConfigLoadStart {\n /**\n * @param {?} route\n */\n constructor(route) {\n this.route = route;\n }\n /**\n * @return {?}\n */\n toString() { return `RouteConfigLoadStart(path: ${this.route.path})`; }\n}\nfunction RouteConfigLoadStart_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n RouteConfigLoadStart.prototype.route;\n}\n/**\n * \\@whatItDoes Represents an event triggered when a route has been lazy loaded.\n *\n * \\@experimental\n */\nexport class RouteConfigLoadEnd {\n /**\n * @param {?} route\n */\n constructor(route) {\n this.route = route;\n }\n /**\n * @return {?}\n */\n toString() { return `RouteConfigLoadEnd(path: ${this.route.path})`; }\n}\nfunction RouteConfigLoadEnd_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n RouteConfigLoadEnd.prototype.route;\n}\n/**\n * \\@whatItDoes Represents the start of end of the Resolve phase of routing. See note on\n * {\\@link ChildActivationEnd} for use of this experimental API.\n *\n * \\@experimental\n */\nexport class ChildActivationStart {\n /**\n * @param {?} snapshot\n */\n constructor(snapshot) {\n this.snapshot = snapshot;\n }\n /**\n * @return {?}\n */\n toString() {\n const /** @type {?} */ path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ChildActivationStart(path: '${path}')`;\n }\n}\nfunction ChildActivationStart_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ChildActivationStart.prototype.snapshot;\n}\n/**\n * \\@whatItDoes Represents the start of end of the Resolve phase of routing. See note on\n * {\\@link ChildActivationStart} for use of this experimental API.\n *\n * \\@experimental\n */\nexport class ChildActivationEnd {\n /**\n * @param {?} snapshot\n */\n constructor(snapshot) {\n this.snapshot = snapshot;\n }\n /**\n * @return {?}\n */\n toString() {\n const /** @type {?} */ path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ChildActivationEnd(path: '${path}')`;\n }\n}\nfunction ChildActivationEnd_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ChildActivationEnd.prototype.snapshot;\n}\n/**\n * \\@whatItDoes Represents the start of end of the Resolve phase of routing. See note on\n * {\\@link ActivationEnd} for use of this experimental API.\n *\n * \\@experimental\n */\nexport class ActivationStart {\n /**\n * @param {?} snapshot\n */\n constructor(snapshot) {\n this.snapshot = snapshot;\n }\n /**\n * @return {?}\n */\n toString() {\n const /** @type {?} */ path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ActivationStart(path: '${path}')`;\n }\n}\nfunction ActivationStart_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ActivationStart.prototype.snapshot;\n}\n/**\n * \\@whatItDoes Represents the start of end of the Resolve phase of routing. See note on\n * {\\@link ActivationStart} for use of this experimental API.\n *\n * \\@experimental\n */\nexport class ActivationEnd {\n /**\n * @param {?} snapshot\n */\n constructor(snapshot) {\n this.snapshot = snapshot;\n }\n /**\n * @return {?}\n */\n toString() {\n const /** @type {?} */ path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ActivationEnd(path: '${path}')`;\n }\n}\nfunction ActivationEnd_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ActivationEnd.prototype.snapshot;\n}\n//# sourceMappingURL=events.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * \\@whatItDoes Name of the primary outlet.\n *\n * \\@stable\n */\nexport const /** @type {?} */ PRIMARY_OUTLET = 'primary';\n/**\n * Matrix and Query parameters.\n *\n * `ParamMap` makes it easier to work with parameters as they could have either a single value or\n * multiple value. Because this should be known by the user, calling `get` or `getAll` returns the\n * correct type (either `string` or `string[]`).\n *\n * The API is inspired by the URLSearchParams interface.\n * see https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams\n *\n * \\@stable\n * @record\n */\nexport function ParamMap() { }\nfunction ParamMap_tsickle_Closure_declarations() {\n /** @type {?} */\n ParamMap.prototype.has;\n /**\n * Return a single value for the given parameter name:\n * - the value when the parameter has a single value,\n * - the first value if the parameter has multiple values,\n * - `null` when there is no such parameter.\n * @type {?}\n */\n ParamMap.prototype.get;\n /**\n * Return an array of values for the given parameter name.\n *\n * If there is no such parameter, an empty array is returned.\n * @type {?}\n */\n ParamMap.prototype.getAll;\n /**\n * Name of the parameters\n * @type {?}\n */\n ParamMap.prototype.keys;\n}\nclass ParamsAsMap {\n /**\n * @param {?} params\n */\n constructor(params) { this.params = params || {}; }\n /**\n * @param {?} name\n * @return {?}\n */\n has(name) { return this.params.hasOwnProperty(name); }\n /**\n * @param {?} name\n * @return {?}\n */\n get(name) {\n if (this.has(name)) {\n const /** @type {?} */ v = this.params[name];\n return Array.isArray(v) ? v[0] : v;\n }\n return null;\n }\n /**\n * @param {?} name\n * @return {?}\n */\n getAll(name) {\n if (this.has(name)) {\n const /** @type {?} */ v = this.params[name];\n return Array.isArray(v) ? v : [v];\n }\n return [];\n }\n /**\n * @return {?}\n */\n get keys() { return Object.keys(this.params); }\n}\nfunction ParamsAsMap_tsickle_Closure_declarations() {\n /** @type {?} */\n ParamsAsMap.prototype.params;\n}\n/**\n * Convert a {\\@link Params} instance to a {\\@link ParamMap}.\n *\n * \\@stable\n * @param {?} params\n * @return {?}\n */\nexport function convertToParamMap(params) {\n return new ParamsAsMap(params);\n}\nconst /** @type {?} */ NAVIGATION_CANCELING_ERROR = 'ngNavigationCancelingError';\n/**\n * @param {?} message\n * @return {?}\n */\nexport function navigationCancelingError(message) {\n const /** @type {?} */ error = Error('NavigationCancelingError: ' + message);\n (/** @type {?} */ (error))[NAVIGATION_CANCELING_ERROR] = true;\n return error;\n}\n/**\n * @param {?} error\n * @return {?}\n */\nexport function isNavigationCancelingError(error) {\n return error && (/** @type {?} */ (error))[NAVIGATION_CANCELING_ERROR];\n}\n/**\n * @param {?} segments\n * @param {?} segmentGroup\n * @param {?} route\n * @return {?}\n */\nexport function defaultUrlMatcher(segments, segmentGroup, route) {\n const /** @type {?} */ parts = /** @type {?} */ ((route.path)).split('/');\n if (parts.length > segments.length) {\n // The actual URL is shorter than the config, no match\n return null;\n }\n if (route.pathMatch === 'full' &&\n (segmentGroup.hasChildren() || parts.length < segments.length)) {\n // The config is longer than the actual URL but we are looking for a full match, return null\n return null;\n }\n const /** @type {?} */ posParams = {};\n // Check each config part against the actual URL\n for (let /** @type {?} */ index = 0; index < parts.length; index++) {\n const /** @type {?} */ part = parts[index];\n const /** @type {?} */ segment = segments[index];\n const /** @type {?} */ isParameter = part.startsWith(':');\n if (isParameter) {\n posParams[part.substring(1)] = segment;\n }\n else if (part !== segment.path) {\n // The actual URL part does not match the config, no match\n return null;\n }\n }\n return { consumed: segments.slice(0, parts.length), posParams };\n}\n//# sourceMappingURL=shared.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { PRIMARY_OUTLET } from './shared';\n/**\n * See {\\@link Routes} for more details.\n * \\@stable\n * @record\n */\nexport function Route() { }\nfunction Route_tsickle_Closure_declarations() {\n /** @type {?|undefined} */\n Route.prototype.path;\n /** @type {?|undefined} */\n Route.prototype.pathMatch;\n /** @type {?|undefined} */\n Route.prototype.matcher;\n /** @type {?|undefined} */\n Route.prototype.component;\n /** @type {?|undefined} */\n Route.prototype.redirectTo;\n /** @type {?|undefined} */\n Route.prototype.outlet;\n /** @type {?|undefined} */\n Route.prototype.canActivate;\n /** @type {?|undefined} */\n Route.prototype.canActivateChild;\n /** @type {?|undefined} */\n Route.prototype.canDeactivate;\n /** @type {?|undefined} */\n Route.prototype.canLoad;\n /** @type {?|undefined} */\n Route.prototype.data;\n /** @type {?|undefined} */\n Route.prototype.resolve;\n /** @type {?|undefined} */\n Route.prototype.children;\n /** @type {?|undefined} */\n Route.prototype.loadChildren;\n /** @type {?|undefined} */\n Route.prototype.runGuardsAndResolvers;\n /**\n * Filled for routes with `loadChildren` once the module has been loaded\n * \\@internal\n * @type {?|undefined}\n */\n Route.prototype._loadedConfig;\n}\nexport class LoadedRouterConfig {\n /**\n * @param {?} routes\n * @param {?} module\n */\n constructor(routes, module) {\n this.routes = routes;\n this.module = module;\n }\n}\nfunction LoadedRouterConfig_tsickle_Closure_declarations() {\n /** @type {?} */\n LoadedRouterConfig.prototype.routes;\n /** @type {?} */\n LoadedRouterConfig.prototype.module;\n}\n/**\n * @param {?} config\n * @param {?=} parentPath\n * @return {?}\n */\nexport function validateConfig(config, parentPath = '') {\n // forEach doesn't iterate undefined values\n for (let /** @type {?} */ i = 0; i < config.length; i++) {\n const /** @type {?} */ route = config[i];\n const /** @type {?} */ fullPath = getFullPath(parentPath, route);\n validateNode(route, fullPath);\n }\n}\n/**\n * @param {?} route\n * @param {?} fullPath\n * @return {?}\n */\nfunction validateNode(route, fullPath) {\n if (!route) {\n throw new Error(`\n Invalid configuration of route '${fullPath}': Encountered undefined route.\n The reason might be an extra comma.\n\n Example:\n const routes: Routes = [\n { path: '', redirectTo: '/dashboard', pathMatch: 'full' },\n { path: 'dashboard', component: DashboardComponent },, << two commas\n { path: 'detail/:id', component: HeroDetailComponent }\n ];\n `);\n }\n if (Array.isArray(route)) {\n throw new Error(`Invalid configuration of route '${fullPath}': Array cannot be specified`);\n }\n if (!route.component && (route.outlet && route.outlet !== PRIMARY_OUTLET)) {\n throw new Error(`Invalid configuration of route '${fullPath}': a componentless route cannot have a named outlet set`);\n }\n if (route.redirectTo && route.children) {\n throw new Error(`Invalid configuration of route '${fullPath}': redirectTo and children cannot be used together`);\n }\n if (route.redirectTo && route.loadChildren) {\n throw new Error(`Invalid configuration of route '${fullPath}': redirectTo and loadChildren cannot be used together`);\n }\n if (route.children && route.loadChildren) {\n throw new Error(`Invalid configuration of route '${fullPath}': children and loadChildren cannot be used together`);\n }\n if (route.redirectTo && route.component) {\n throw new Error(`Invalid configuration of route '${fullPath}': redirectTo and component cannot be used together`);\n }\n if (route.path && route.matcher) {\n throw new Error(`Invalid configuration of route '${fullPath}': path and matcher cannot be used together`);\n }\n if (route.redirectTo === void 0 && !route.component && !route.children && !route.loadChildren) {\n throw new Error(`Invalid configuration of route '${fullPath}'. One of the following must be provided: component, redirectTo, children or loadChildren`);\n }\n if (route.path === void 0 && route.matcher === void 0) {\n throw new Error(`Invalid configuration of route '${fullPath}': routes must have either a path or a matcher specified`);\n }\n if (typeof route.path === 'string' && route.path.charAt(0) === '/') {\n throw new Error(`Invalid configuration of route '${fullPath}': path cannot start with a slash`);\n }\n if (route.path === '' && route.redirectTo !== void 0 && route.pathMatch === void 0) {\n const /** @type {?} */ exp = `The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.`;\n throw new Error(`Invalid configuration of route '{path: \"${fullPath}\", redirectTo: \"${route.redirectTo}\"}': please provide 'pathMatch'. ${exp}`);\n }\n if (route.pathMatch !== void 0 && route.pathMatch !== 'full' && route.pathMatch !== 'prefix') {\n throw new Error(`Invalid configuration of route '${fullPath}': pathMatch can only be set to 'prefix' or 'full'`);\n }\n if (route.children) {\n validateConfig(route.children, fullPath);\n }\n}\n/**\n * @param {?} parentPath\n * @param {?} currentRoute\n * @return {?}\n */\nfunction getFullPath(parentPath, currentRoute) {\n if (!currentRoute) {\n return parentPath;\n }\n if (!parentPath && !currentRoute.path) {\n return '';\n }\n else if (parentPath && !currentRoute.path) {\n return `${parentPath}/`;\n }\n else if (!parentPath && currentRoute.path) {\n return currentRoute.path;\n }\n else {\n return `${parentPath}/${currentRoute.path}`;\n }\n}\n/**\n * @param {?} r\n * @return {?}\n */\nexport function copyConfig(r) {\n const /** @type {?} */ children = r.children && r.children.map(copyConfig);\n return children ? Object.assign({}, r, { children }) : Object.assign({}, r);\n}\n//# sourceMappingURL=config.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ɵisObservable as isObservable, ɵisPromise as isPromise } from '@angular/core';\nimport { fromPromise } from 'rxjs/observable/fromPromise';\nimport { of } from 'rxjs/observable/of';\nimport { concatAll } from 'rxjs/operator/concatAll';\nimport { every } from 'rxjs/operator/every';\nimport * as l from 'rxjs/operator/last';\nimport { map } from 'rxjs/operator/map';\nimport { mergeAll } from 'rxjs/operator/mergeAll';\nimport { PRIMARY_OUTLET } from '../shared';\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nexport function shallowEqualArrays(a, b) {\n if (a.length !== b.length)\n return false;\n for (let /** @type {?} */ i = 0; i < a.length; ++i) {\n if (!shallowEqual(a[i], b[i]))\n return false;\n }\n return true;\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nexport function shallowEqual(a, b) {\n const /** @type {?} */ k1 = Object.keys(a);\n const /** @type {?} */ k2 = Object.keys(b);\n if (k1.length != k2.length) {\n return false;\n }\n let /** @type {?} */ key;\n for (let /** @type {?} */ i = 0; i < k1.length; i++) {\n key = k1[i];\n if (a[key] !== b[key]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Flattens single-level nested arrays.\n * @template T\n * @param {?} arr\n * @return {?}\n */\nexport function flatten(arr) {\n return Array.prototype.concat.apply([], arr);\n}\n/**\n * Return the last element of an array.\n * @template T\n * @param {?} a\n * @return {?}\n */\nexport function last(a) {\n return a.length > 0 ? a[a.length - 1] : null;\n}\n/**\n * Verifys all booleans in an array are `true`.\n * @param {?} bools\n * @return {?}\n */\nexport function and(bools) {\n return !bools.some(v => !v);\n}\n/**\n * @template K, V\n * @param {?} map\n * @param {?} callback\n * @return {?}\n */\nexport function forEach(map, callback) {\n for (const /** @type {?} */ prop in map) {\n if (map.hasOwnProperty(prop)) {\n callback(map[prop], prop);\n }\n }\n}\n/**\n * @template A, B\n * @param {?} obj\n * @param {?} fn\n * @return {?}\n */\nexport function waitForMap(obj, fn) {\n if (Object.keys(obj).length === 0) {\n return of({});\n }\n const /** @type {?} */ waitHead = [];\n const /** @type {?} */ waitTail = [];\n const /** @type {?} */ res = {};\n forEach(obj, (a, k) => {\n const /** @type {?} */ mapped = map.call(fn(k, a), (r) => res[k] = r);\n if (k === PRIMARY_OUTLET) {\n waitHead.push(mapped);\n }\n else {\n waitTail.push(mapped);\n }\n });\n const /** @type {?} */ concat$ = concatAll.call(of(...waitHead, ...waitTail));\n const /** @type {?} */ last$ = l.last.call(concat$);\n return map.call(last$, () => res);\n}\n/**\n * ANDs Observables by merging all input observables, reducing to an Observable verifying all\n * input Observables return `true`.\n * @param {?} observables\n * @return {?}\n */\nexport function andObservables(observables) {\n const /** @type {?} */ merged$ = mergeAll.call(observables);\n return every.call(merged$, (result) => result === true);\n}\n/**\n * @template T\n * @param {?} value\n * @return {?}\n */\nexport function wrapIntoObservable(value) {\n if (isObservable(value)) {\n return value;\n }\n if (isPromise(value)) {\n // Use `Promise.resolve()` to wrap promise-like instances.\n // Required ie when a Resolver returns a AngularJS `$q` promise to correctly trigger the\n // change detection.\n return fromPromise(Promise.resolve(value));\n }\n return of(/** @type {?} */ (value));\n}\n//# sourceMappingURL=collection.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { PRIMARY_OUTLET, convertToParamMap } from './shared';\nimport { forEach, shallowEqual } from './utils/collection';\n/**\n * @return {?}\n */\nexport function createEmptyUrlTree() {\n return new UrlTree(new UrlSegmentGroup([], {}), {}, null);\n}\n/**\n * @param {?} container\n * @param {?} containee\n * @param {?} exact\n * @return {?}\n */\nexport function containsTree(container, containee, exact) {\n if (exact) {\n return equalQueryParams(container.queryParams, containee.queryParams) &&\n equalSegmentGroups(container.root, containee.root);\n }\n return containsQueryParams(container.queryParams, containee.queryParams) &&\n containsSegmentGroup(container.root, containee.root);\n}\n/**\n * @param {?} container\n * @param {?} containee\n * @return {?}\n */\nfunction equalQueryParams(container, containee) {\n return shallowEqual(container, containee);\n}\n/**\n * @param {?} container\n * @param {?} containee\n * @return {?}\n */\nfunction equalSegmentGroups(container, containee) {\n if (!equalPath(container.segments, containee.segments))\n return false;\n if (container.numberOfChildren !== containee.numberOfChildren)\n return false;\n for (const /** @type {?} */ c in containee.children) {\n if (!container.children[c])\n return false;\n if (!equalSegmentGroups(container.children[c], containee.children[c]))\n return false;\n }\n return true;\n}\n/**\n * @param {?} container\n * @param {?} containee\n * @return {?}\n */\nfunction containsQueryParams(container, containee) {\n return Object.keys(containee).length <= Object.keys(container).length &&\n Object.keys(containee).every(key => containee[key] === container[key]);\n}\n/**\n * @param {?} container\n * @param {?} containee\n * @return {?}\n */\nfunction containsSegmentGroup(container, containee) {\n return containsSegmentGroupHelper(container, containee, containee.segments);\n}\n/**\n * @param {?} container\n * @param {?} containee\n * @param {?} containeePaths\n * @return {?}\n */\nfunction containsSegmentGroupHelper(container, containee, containeePaths) {\n if (container.segments.length > containeePaths.length) {\n const /** @type {?} */ current = container.segments.slice(0, containeePaths.length);\n if (!equalPath(current, containeePaths))\n return false;\n if (containee.hasChildren())\n return false;\n return true;\n }\n else if (container.segments.length === containeePaths.length) {\n if (!equalPath(container.segments, containeePaths))\n return false;\n for (const /** @type {?} */ c in containee.children) {\n if (!container.children[c])\n return false;\n if (!containsSegmentGroup(container.children[c], containee.children[c]))\n return false;\n }\n return true;\n }\n else {\n const /** @type {?} */ current = containeePaths.slice(0, container.segments.length);\n const /** @type {?} */ next = containeePaths.slice(container.segments.length);\n if (!equalPath(container.segments, current))\n return false;\n if (!container.children[PRIMARY_OUTLET])\n return false;\n return containsSegmentGroupHelper(container.children[PRIMARY_OUTLET], containee, next);\n }\n}\n/**\n * \\@whatItDoes Represents the parsed URL.\n *\n * \\@howToUse\n *\n * ```\n * \\@Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const tree: UrlTree =\n * router.parseUrl('/team/33/(user/victor//support:help)?debug=true#fragment');\n * const f = tree.fragment; // return 'fragment'\n * const q = tree.queryParams; // returns {debug: 'true'}\n * const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];\n * const s: UrlSegment[] = g.segments; // returns 2 segments 'team' and '33'\n * g.children[PRIMARY_OUTLET].segments; // returns 2 segments 'user' and 'victor'\n * g.children['support'].segments; // return 1 segment 'help'\n * }\n * }\n * ```\n *\n * \\@description\n *\n * Since a router state is a tree, and the URL is nothing but a serialized state, the URL is a\n * serialized tree.\n * UrlTree is a data structure that provides a lot of affordances in dealing with URLs\n *\n * \\@stable\n */\nexport class UrlTree {\n /**\n * \\@internal\n * @param {?} root\n * @param {?} queryParams\n * @param {?} fragment\n */\n constructor(root, queryParams, fragment) {\n this.root = root;\n this.queryParams = queryParams;\n this.fragment = fragment;\n }\n /**\n * @return {?}\n */\n get queryParamMap() {\n if (!this._queryParamMap) {\n this._queryParamMap = convertToParamMap(this.queryParams);\n }\n return this._queryParamMap;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() { return DEFAULT_SERIALIZER.serialize(this); }\n}\nfunction UrlTree_tsickle_Closure_declarations() {\n /**\n * \\@internal\n * @type {?}\n */\n UrlTree.prototype._queryParamMap;\n /**\n * The root segment group of the URL tree\n * @type {?}\n */\n UrlTree.prototype.root;\n /**\n * The query params of the URL\n * @type {?}\n */\n UrlTree.prototype.queryParams;\n /**\n * The fragment of the URL\n * @type {?}\n */\n UrlTree.prototype.fragment;\n}\n/**\n * \\@whatItDoes Represents the parsed URL segment group.\n *\n * See {\\@link UrlTree} for more information.\n *\n * \\@stable\n */\nexport class UrlSegmentGroup {\n /**\n * @param {?} segments\n * @param {?} children\n */\n constructor(segments, children) {\n this.segments = segments;\n this.children = children;\n /**\n * The parent node in the url tree\n */\n this.parent = null;\n forEach(children, (v, k) => v.parent = this);\n }\n /**\n * Whether the segment has child segments\n * @return {?}\n */\n hasChildren() { return this.numberOfChildren > 0; }\n /**\n * Number of child segments\n * @return {?}\n */\n get numberOfChildren() { return Object.keys(this.children).length; }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() { return serializePaths(this); }\n}\nfunction UrlSegmentGroup_tsickle_Closure_declarations() {\n /**\n * \\@internal\n * @type {?}\n */\n UrlSegmentGroup.prototype._sourceSegment;\n /**\n * \\@internal\n * @type {?}\n */\n UrlSegmentGroup.prototype._segmentIndexShift;\n /**\n * The parent node in the url tree\n * @type {?}\n */\n UrlSegmentGroup.prototype.parent;\n /**\n * The URL segments of this group. See {\\@link UrlSegment} for more information\n * @type {?}\n */\n UrlSegmentGroup.prototype.segments;\n /**\n * The list of children of this group\n * @type {?}\n */\n UrlSegmentGroup.prototype.children;\n}\n/**\n * \\@whatItDoes Represents a single URL segment.\n *\n * \\@howToUse\n *\n * ```\n * \\@Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const tree: UrlTree = router.parseUrl('/team;id=33');\n * const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];\n * const s: UrlSegment[] = g.segments;\n * s[0].path; // returns 'team'\n * s[0].parameters; // returns {id: 33}\n * }\n * }\n * ```\n *\n * \\@description\n *\n * A UrlSegment is a part of a URL between the two slashes. It contains a path and the matrix\n * parameters associated with the segment.\n *\n * \\@stable\n */\nexport class UrlSegment {\n /**\n * @param {?} path\n * @param {?} parameters\n */\n constructor(path, parameters) {\n this.path = path;\n this.parameters = parameters;\n }\n /**\n * @return {?}\n */\n get parameterMap() {\n if (!this._parameterMap) {\n this._parameterMap = convertToParamMap(this.parameters);\n }\n return this._parameterMap;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() { return serializePath(this); }\n}\nfunction UrlSegment_tsickle_Closure_declarations() {\n /**\n * \\@internal\n * @type {?}\n */\n UrlSegment.prototype._parameterMap;\n /**\n * The path part of a URL segment\n * @type {?}\n */\n UrlSegment.prototype.path;\n /**\n * The matrix parameters associated with a segment\n * @type {?}\n */\n UrlSegment.prototype.parameters;\n}\n/**\n * @param {?} as\n * @param {?} bs\n * @return {?}\n */\nexport function equalSegments(as, bs) {\n return equalPath(as, bs) && as.every((a, i) => shallowEqual(a.parameters, bs[i].parameters));\n}\n/**\n * @param {?} as\n * @param {?} bs\n * @return {?}\n */\nexport function equalPath(as, bs) {\n if (as.length !== bs.length)\n return false;\n return as.every((a, i) => a.path === bs[i].path);\n}\n/**\n * @template T\n * @param {?} segment\n * @param {?} fn\n * @return {?}\n */\nexport function mapChildrenIntoArray(segment, fn) {\n let /** @type {?} */ res = [];\n forEach(segment.children, (child, childOutlet) => {\n if (childOutlet === PRIMARY_OUTLET) {\n res = res.concat(fn(child, childOutlet));\n }\n });\n forEach(segment.children, (child, childOutlet) => {\n if (childOutlet !== PRIMARY_OUTLET) {\n res = res.concat(fn(child, childOutlet));\n }\n });\n return res;\n}\n/**\n * \\@whatItDoes Serializes and deserializes a URL string into a URL tree.\n *\n * \\@description The url serialization strategy is customizable. You can\n * make all URLs case insensitive by providing a custom UrlSerializer.\n *\n * See {\\@link DefaultUrlSerializer} for an example of a URL serializer.\n *\n * \\@stable\n * @abstract\n */\nexport class UrlSerializer {\n}\nfunction UrlSerializer_tsickle_Closure_declarations() {\n /**\n * Parse a url into a {\\@link UrlTree}\n * @abstract\n * @param {?} url\n * @return {?}\n */\n UrlSerializer.prototype.parse = function (url) { };\n /**\n * Converts a {\\@link UrlTree} into a url\n * @abstract\n * @param {?} tree\n * @return {?}\n */\n UrlSerializer.prototype.serialize = function (tree) { };\n}\n/**\n * \\@whatItDoes A default implementation of the {\\@link UrlSerializer}.\n *\n * \\@description\n *\n * Example URLs:\n *\n * ```\n * /inbox/33(popup:compose)\n * /inbox/33;open=true/messages/44\n * ```\n *\n * DefaultUrlSerializer uses parentheses to serialize secondary segments (e.g., popup:compose), the\n * colon syntax to specify the outlet, and the ';parameter=value' syntax (e.g., open=true) to\n * specify route specific parameters.\n *\n * \\@stable\n */\nexport class DefaultUrlSerializer {\n /**\n * Parses a url into a {\\@link UrlTree}\n * @param {?} url\n * @return {?}\n */\n parse(url) {\n const /** @type {?} */ p = new UrlParser(url);\n return new UrlTree(p.parseRootSegment(), p.parseQueryParams(), p.parseFragment());\n }\n /**\n * Converts a {\\@link UrlTree} into a url\n * @param {?} tree\n * @return {?}\n */\n serialize(tree) {\n const /** @type {?} */ segment = `/${serializeSegment(tree.root, true)}`;\n const /** @type {?} */ query = serializeQueryParams(tree.queryParams);\n const /** @type {?} */ fragment = typeof tree.fragment === `string` ? `#${encodeUriFragment((/** @type {?} */ ((tree.fragment))))}` : '';\n return `${segment}${query}${fragment}`;\n }\n}\nconst /** @type {?} */ DEFAULT_SERIALIZER = new DefaultUrlSerializer();\n/**\n * @param {?} segment\n * @return {?}\n */\nexport function serializePaths(segment) {\n return segment.segments.map(p => serializePath(p)).join('/');\n}\n/**\n * @param {?} segment\n * @param {?} root\n * @return {?}\n */\nfunction serializeSegment(segment, root) {\n if (!segment.hasChildren()) {\n return serializePaths(segment);\n }\n if (root) {\n const /** @type {?} */ primary = segment.children[PRIMARY_OUTLET] ?\n serializeSegment(segment.children[PRIMARY_OUTLET], false) :\n '';\n const /** @type {?} */ children = [];\n forEach(segment.children, (v, k) => {\n if (k !== PRIMARY_OUTLET) {\n children.push(`${k}:${serializeSegment(v, false)}`);\n }\n });\n return children.length > 0 ? `${primary}(${children.join('//')})` : primary;\n }\n else {\n const /** @type {?} */ children = mapChildrenIntoArray(segment, (v, k) => {\n if (k === PRIMARY_OUTLET) {\n return [serializeSegment(segment.children[PRIMARY_OUTLET], false)];\n }\n return [`${k}:${serializeSegment(v, false)}`];\n });\n return `${serializePaths(segment)}/(${children.join('//')})`;\n }\n}\n/**\n * Encodes a URI string with the default encoding. This function will only ever be called from\n * `encodeUriQuery` or `encodeUriSegment` as it's the base set of encodings to be used. We need\n * a custom encoding because encodeURIComponent is too aggressive and encodes stuff that doesn't\n * have to be encoded per https://url.spec.whatwg.org.\n * @param {?} s\n * @return {?}\n */\nfunction encodeUriString(s) {\n return encodeURIComponent(s)\n .replace(/%40/g, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',');\n}\n/**\n * This function should be used to encode both keys and values in a query string key/value. In\n * the following URL, you need to call encodeUriQuery on \"k\" and \"v\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n * @param {?} s\n * @return {?}\n */\nexport function encodeUriQuery(s) {\n return encodeUriString(s).replace(/%3B/gi, ';');\n}\n/**\n * This function should be used to encode a URL fragment. In the following URL, you need to call\n * encodeUriFragment on \"f\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n * @param {?} s\n * @return {?}\n */\nexport function encodeUriFragment(s) {\n return encodeURI(s);\n}\n/**\n * This function should be run on any URI segment as well as the key and value in a key/value\n * pair for matrix params. In the following URL, you need to call encodeUriSegment on \"html\",\n * \"mk\", and \"mv\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n * @param {?} s\n * @return {?}\n */\nexport function encodeUriSegment(s) {\n return encodeUriString(s).replace(/\\(/g, '%28').replace(/\\)/g, '%29').replace(/%26/gi, '&');\n}\n/**\n * @param {?} s\n * @return {?}\n */\nexport function decode(s) {\n return decodeURIComponent(s);\n}\n/**\n * @param {?} s\n * @return {?}\n */\nexport function decodeQuery(s) {\n return decode(s.replace(/\\+/g, '%20'));\n}\n/**\n * @param {?} path\n * @return {?}\n */\nexport function serializePath(path) {\n return `${encodeUriSegment(path.path)}${serializeMatrixParams(path.parameters)}`;\n}\n/**\n * @param {?} params\n * @return {?}\n */\nfunction serializeMatrixParams(params) {\n return Object.keys(params)\n .map(key => `;${encodeUriSegment(key)}=${encodeUriSegment(params[key])}`)\n .join('');\n}\n/**\n * @param {?} params\n * @return {?}\n */\nfunction serializeQueryParams(params) {\n const /** @type {?} */ strParams = Object.keys(params).map((name) => {\n const /** @type {?} */ value = params[name];\n return Array.isArray(value) ?\n value.map(v => `${encodeUriQuery(name)}=${encodeUriQuery(v)}`).join('&') :\n `${encodeUriQuery(name)}=${encodeUriQuery(value)}`;\n });\n return strParams.length ? `?${strParams.join(\"&\")}` : '';\n}\nconst /** @type {?} */ SEGMENT_RE = /^[^\\/()?;=&#]+/;\n/**\n * @param {?} str\n * @return {?}\n */\nfunction matchSegments(str) {\n const /** @type {?} */ match = str.match(SEGMENT_RE);\n return match ? match[0] : '';\n}\nconst /** @type {?} */ QUERY_PARAM_RE = /^[^=?&#]+/;\n/**\n * @param {?} str\n * @return {?}\n */\nfunction matchQueryParams(str) {\n const /** @type {?} */ match = str.match(QUERY_PARAM_RE);\n return match ? match[0] : '';\n}\nconst /** @type {?} */ QUERY_PARAM_VALUE_RE = /^[^?&#]+/;\n/**\n * @param {?} str\n * @return {?}\n */\nfunction matchUrlQueryParamValue(str) {\n const /** @type {?} */ match = str.match(QUERY_PARAM_VALUE_RE);\n return match ? match[0] : '';\n}\nclass UrlParser {\n /**\n * @param {?} url\n */\n constructor(url) {\n this.url = url;\n this.remaining = url;\n }\n /**\n * @return {?}\n */\n parseRootSegment() {\n this.consumeOptional('/');\n if (this.remaining === '' || this.peekStartsWith('?') || this.peekStartsWith('#')) {\n return new UrlSegmentGroup([], {});\n }\n // The root segment group never has segments\n return new UrlSegmentGroup([], this.parseChildren());\n }\n /**\n * @return {?}\n */\n parseQueryParams() {\n const /** @type {?} */ params = {};\n if (this.consumeOptional('?')) {\n do {\n this.parseQueryParam(params);\n } while (this.consumeOptional('&'));\n }\n return params;\n }\n /**\n * @return {?}\n */\n parseFragment() {\n return this.consumeOptional('#') ? decodeURIComponent(this.remaining) : null;\n }\n /**\n * @return {?}\n */\n parseChildren() {\n if (this.remaining === '') {\n return {};\n }\n this.consumeOptional('/');\n const /** @type {?} */ segments = [];\n if (!this.peekStartsWith('(')) {\n segments.push(this.parseSegment());\n }\n while (this.peekStartsWith('/') && !this.peekStartsWith('//') && !this.peekStartsWith('/(')) {\n this.capture('/');\n segments.push(this.parseSegment());\n }\n let /** @type {?} */ children = {};\n if (this.peekStartsWith('/(')) {\n this.capture('/');\n children = this.parseParens(true);\n }\n let /** @type {?} */ res = {};\n if (this.peekStartsWith('(')) {\n res = this.parseParens(false);\n }\n if (segments.length > 0 || Object.keys(children).length > 0) {\n res[PRIMARY_OUTLET] = new UrlSegmentGroup(segments, children);\n }\n return res;\n }\n /**\n * @return {?}\n */\n parseSegment() {\n const /** @type {?} */ path = matchSegments(this.remaining);\n if (path === '' && this.peekStartsWith(';')) {\n throw new Error(`Empty path url segment cannot have parameters: '${this.remaining}'.`);\n }\n this.capture(path);\n return new UrlSegment(decode(path), this.parseMatrixParams());\n }\n /**\n * @return {?}\n */\n parseMatrixParams() {\n const /** @type {?} */ params = {};\n while (this.consumeOptional(';')) {\n this.parseParam(params);\n }\n return params;\n }\n /**\n * @param {?} params\n * @return {?}\n */\n parseParam(params) {\n const /** @type {?} */ key = matchSegments(this.remaining);\n if (!key) {\n return;\n }\n this.capture(key);\n let /** @type {?} */ value = '';\n if (this.consumeOptional('=')) {\n const /** @type {?} */ valueMatch = matchSegments(this.remaining);\n if (valueMatch) {\n value = valueMatch;\n this.capture(value);\n }\n }\n params[decode(key)] = decode(value);\n }\n /**\n * @param {?} params\n * @return {?}\n */\n parseQueryParam(params) {\n const /** @type {?} */ key = matchQueryParams(this.remaining);\n if (!key) {\n return;\n }\n this.capture(key);\n let /** @type {?} */ value = '';\n if (this.consumeOptional('=')) {\n const /** @type {?} */ valueMatch = matchUrlQueryParamValue(this.remaining);\n if (valueMatch) {\n value = valueMatch;\n this.capture(value);\n }\n }\n const /** @type {?} */ decodedKey = decodeQuery(key);\n const /** @type {?} */ decodedVal = decodeQuery(value);\n if (params.hasOwnProperty(decodedKey)) {\n // Append to existing values\n let /** @type {?} */ currentVal = params[decodedKey];\n if (!Array.isArray(currentVal)) {\n currentVal = [currentVal];\n params[decodedKey] = currentVal;\n }\n currentVal.push(decodedVal);\n }\n else {\n // Create a new value\n params[decodedKey] = decodedVal;\n }\n }\n /**\n * @param {?} allowPrimary\n * @return {?}\n */\n parseParens(allowPrimary) {\n const /** @type {?} */ segments = {};\n this.capture('(');\n while (!this.consumeOptional(')') && this.remaining.length > 0) {\n const /** @type {?} */ path = matchSegments(this.remaining);\n const /** @type {?} */ next = this.remaining[path.length];\n // if is is not one of these characters, then the segment was unescaped\n // or the group was not closed\n if (next !== '/' && next !== ')' && next !== ';') {\n throw new Error(`Cannot parse url '${this.url}'`);\n }\n let /** @type {?} */ outletName = /** @type {?} */ ((undefined));\n if (path.indexOf(':') > -1) {\n outletName = path.substr(0, path.indexOf(':'));\n this.capture(outletName);\n this.capture(':');\n }\n else if (allowPrimary) {\n outletName = PRIMARY_OUTLET;\n }\n const /** @type {?} */ children = this.parseChildren();\n segments[outletName] = Object.keys(children).length === 1 ? children[PRIMARY_OUTLET] :\n new UrlSegmentGroup([], children);\n this.consumeOptional('//');\n }\n return segments;\n }\n /**\n * @param {?} str\n * @return {?}\n */\n peekStartsWith(str) { return this.remaining.startsWith(str); }\n /**\n * @param {?} str\n * @return {?}\n */\n consumeOptional(str) {\n if (this.peekStartsWith(str)) {\n this.remaining = this.remaining.substring(str.length);\n return true;\n }\n return false;\n }\n /**\n * @param {?} str\n * @return {?}\n */\n capture(str) {\n if (!this.consumeOptional(str)) {\n throw new Error(`Expected \"${str}\".`);\n }\n }\n}\nfunction UrlParser_tsickle_Closure_declarations() {\n /** @type {?} */\n UrlParser.prototype.remaining;\n /** @type {?} */\n UrlParser.prototype.url;\n}\n//# sourceMappingURL=url_tree.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { NgModuleRef } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\nimport { from } from 'rxjs/observable/from';\nimport { of } from 'rxjs/observable/of';\nimport { _catch } from 'rxjs/operator/catch';\nimport { concatAll } from 'rxjs/operator/concatAll';\nimport { first } from 'rxjs/operator/first';\nimport { map } from 'rxjs/operator/map';\nimport { mergeMap } from 'rxjs/operator/mergeMap';\nimport { EmptyError } from 'rxjs/util/EmptyError';\nimport { LoadedRouterConfig } from './config';\nimport { PRIMARY_OUTLET, defaultUrlMatcher, navigationCancelingError } from './shared';\nimport { UrlSegmentGroup, UrlTree } from './url_tree';\nimport { andObservables, forEach, waitForMap, wrapIntoObservable } from './utils/collection';\nclass NoMatch {\n /**\n * @param {?=} segmentGroup\n */\n constructor(segmentGroup) { this.segmentGroup = segmentGroup || null; }\n}\nfunction NoMatch_tsickle_Closure_declarations() {\n /** @type {?} */\n NoMatch.prototype.segmentGroup;\n}\nclass AbsoluteRedirect {\n /**\n * @param {?} urlTree\n */\n constructor(urlTree) {\n this.urlTree = urlTree;\n }\n}\nfunction AbsoluteRedirect_tsickle_Closure_declarations() {\n /** @type {?} */\n AbsoluteRedirect.prototype.urlTree;\n}\n/**\n * @param {?} segmentGroup\n * @return {?}\n */\nfunction noMatch(segmentGroup) {\n return new Observable((obs) => obs.error(new NoMatch(segmentGroup)));\n}\n/**\n * @param {?} newTree\n * @return {?}\n */\nfunction absoluteRedirect(newTree) {\n return new Observable((obs) => obs.error(new AbsoluteRedirect(newTree)));\n}\n/**\n * @param {?} redirectTo\n * @return {?}\n */\nfunction namedOutletsRedirect(redirectTo) {\n return new Observable((obs) => obs.error(new Error(`Only absolute redirects can have named outlets. redirectTo: '${redirectTo}'`)));\n}\n/**\n * @param {?} route\n * @return {?}\n */\nfunction canLoadFails(route) {\n return new Observable((obs) => obs.error(navigationCancelingError(`Cannot load children because the guard of the route \"path: '${route.path}'\" returned false`)));\n}\n/**\n * Returns the `UrlTree` with the redirection applied.\n *\n * Lazy modules are loaded along the way.\n * @param {?} moduleInjector\n * @param {?} configLoader\n * @param {?} urlSerializer\n * @param {?} urlTree\n * @param {?} config\n * @return {?}\n */\nexport function applyRedirects(moduleInjector, configLoader, urlSerializer, urlTree, config) {\n return new ApplyRedirects(moduleInjector, configLoader, urlSerializer, urlTree, config).apply();\n}\nclass ApplyRedirects {\n /**\n * @param {?} moduleInjector\n * @param {?} configLoader\n * @param {?} urlSerializer\n * @param {?} urlTree\n * @param {?} config\n */\n constructor(moduleInjector, configLoader, urlSerializer, urlTree, config) {\n this.configLoader = configLoader;\n this.urlSerializer = urlSerializer;\n this.urlTree = urlTree;\n this.config = config;\n this.allowRedirects = true;\n this.ngModule = moduleInjector.get(NgModuleRef);\n }\n /**\n * @return {?}\n */\n apply() {\n const /** @type {?} */ expanded$ = this.expandSegmentGroup(this.ngModule, this.config, this.urlTree.root, PRIMARY_OUTLET);\n const /** @type {?} */ urlTrees$ = map.call(expanded$, (rootSegmentGroup) => this.createUrlTree(rootSegmentGroup, this.urlTree.queryParams, /** @type {?} */ ((this.urlTree.fragment))));\n return _catch.call(urlTrees$, (e) => {\n if (e instanceof AbsoluteRedirect) {\n // after an absolute redirect we do not apply any more redirects!\n this.allowRedirects = false;\n // we need to run matching, so we can fetch all lazy-loaded modules\n return this.match(e.urlTree);\n }\n if (e instanceof NoMatch) {\n throw this.noMatchError(e);\n }\n throw e;\n });\n }\n /**\n * @param {?} tree\n * @return {?}\n */\n match(tree) {\n const /** @type {?} */ expanded$ = this.expandSegmentGroup(this.ngModule, this.config, tree.root, PRIMARY_OUTLET);\n const /** @type {?} */ mapped$ = map.call(expanded$, (rootSegmentGroup) => this.createUrlTree(rootSegmentGroup, tree.queryParams, /** @type {?} */ ((tree.fragment))));\n return _catch.call(mapped$, (e) => {\n if (e instanceof NoMatch) {\n throw this.noMatchError(e);\n }\n throw e;\n });\n }\n /**\n * @param {?} e\n * @return {?}\n */\n noMatchError(e) {\n return new Error(`Cannot match any routes. URL Segment: '${e.segmentGroup}'`);\n }\n /**\n * @param {?} rootCandidate\n * @param {?} queryParams\n * @param {?} fragment\n * @return {?}\n */\n createUrlTree(rootCandidate, queryParams, fragment) {\n const /** @type {?} */ root = rootCandidate.segments.length > 0 ?\n new UrlSegmentGroup([], { [PRIMARY_OUTLET]: rootCandidate }) :\n rootCandidate;\n return new UrlTree(root, queryParams, fragment);\n }\n /**\n * @param {?} ngModule\n * @param {?} routes\n * @param {?} segmentGroup\n * @param {?} outlet\n * @return {?}\n */\n expandSegmentGroup(ngModule, routes, segmentGroup, outlet) {\n if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {\n return map.call(this.expandChildren(ngModule, routes, segmentGroup), (children) => new UrlSegmentGroup([], children));\n }\n return this.expandSegment(ngModule, segmentGroup, routes, segmentGroup.segments, outlet, true);\n }\n /**\n * @param {?} ngModule\n * @param {?} routes\n * @param {?} segmentGroup\n * @return {?}\n */\n expandChildren(ngModule, routes, segmentGroup) {\n return waitForMap(segmentGroup.children, (childOutlet, child) => this.expandSegmentGroup(ngModule, routes, child, childOutlet));\n }\n /**\n * @param {?} ngModule\n * @param {?} segmentGroup\n * @param {?} routes\n * @param {?} segments\n * @param {?} outlet\n * @param {?} allowRedirects\n * @return {?}\n */\n expandSegment(ngModule, segmentGroup, routes, segments, outlet, allowRedirects) {\n const /** @type {?} */ routes$ = of(...routes);\n const /** @type {?} */ processedRoutes$ = map.call(routes$, (r) => {\n const /** @type {?} */ expanded$ = this.expandSegmentAgainstRoute(ngModule, segmentGroup, routes, r, segments, outlet, allowRedirects);\n return _catch.call(expanded$, (e) => {\n if (e instanceof NoMatch) {\n return of(null);\n }\n throw e;\n });\n });\n const /** @type {?} */ concattedProcessedRoutes$ = concatAll.call(processedRoutes$);\n const /** @type {?} */ first$ = first.call(concattedProcessedRoutes$, (s) => !!s);\n return _catch.call(first$, (e, _) => {\n if (e instanceof EmptyError || e.name === 'EmptyError') {\n if (this.noLeftoversInUrl(segmentGroup, segments, outlet)) {\n return of(new UrlSegmentGroup([], {}));\n }\n throw new NoMatch(segmentGroup);\n }\n throw e;\n });\n }\n /**\n * @param {?} segmentGroup\n * @param {?} segments\n * @param {?} outlet\n * @return {?}\n */\n noLeftoversInUrl(segmentGroup, segments, outlet) {\n return segments.length === 0 && !segmentGroup.children[outlet];\n }\n /**\n * @param {?} ngModule\n * @param {?} segmentGroup\n * @param {?} routes\n * @param {?} route\n * @param {?} paths\n * @param {?} outlet\n * @param {?} allowRedirects\n * @return {?}\n */\n expandSegmentAgainstRoute(ngModule, segmentGroup, routes, route, paths, outlet, allowRedirects) {\n if (getOutlet(route) !== outlet) {\n return noMatch(segmentGroup);\n }\n if (route.redirectTo === undefined) {\n return this.matchSegmentAgainstRoute(ngModule, segmentGroup, route, paths);\n }\n if (allowRedirects && this.allowRedirects) {\n return this.expandSegmentAgainstRouteUsingRedirect(ngModule, segmentGroup, routes, route, paths, outlet);\n }\n return noMatch(segmentGroup);\n }\n /**\n * @param {?} ngModule\n * @param {?} segmentGroup\n * @param {?} routes\n * @param {?} route\n * @param {?} segments\n * @param {?} outlet\n * @return {?}\n */\n expandSegmentAgainstRouteUsingRedirect(ngModule, segmentGroup, routes, route, segments, outlet) {\n if (route.path === '**') {\n return this.expandWildCardWithParamsAgainstRouteUsingRedirect(ngModule, routes, route, outlet);\n }\n return this.expandRegularSegmentAgainstRouteUsingRedirect(ngModule, segmentGroup, routes, route, segments, outlet);\n }\n /**\n * @param {?} ngModule\n * @param {?} routes\n * @param {?} route\n * @param {?} outlet\n * @return {?}\n */\n expandWildCardWithParamsAgainstRouteUsingRedirect(ngModule, routes, route, outlet) {\n const /** @type {?} */ newTree = this.applyRedirectCommands([], /** @type {?} */ ((route.redirectTo)), {});\n if (/** @type {?} */ ((route.redirectTo)).startsWith('/')) {\n return absoluteRedirect(newTree);\n }\n return mergeMap.call(this.lineralizeSegments(route, newTree), (newSegments) => {\n const /** @type {?} */ group = new UrlSegmentGroup(newSegments, {});\n return this.expandSegment(ngModule, group, routes, newSegments, outlet, false);\n });\n }\n /**\n * @param {?} ngModule\n * @param {?} segmentGroup\n * @param {?} routes\n * @param {?} route\n * @param {?} segments\n * @param {?} outlet\n * @return {?}\n */\n expandRegularSegmentAgainstRouteUsingRedirect(ngModule, segmentGroup, routes, route, segments, outlet) {\n const { matched, consumedSegments, lastChild, positionalParamSegments } = match(segmentGroup, route, segments);\n if (!matched)\n return noMatch(segmentGroup);\n const /** @type {?} */ newTree = this.applyRedirectCommands(consumedSegments, /** @type {?} */ ((route.redirectTo)), /** @type {?} */ (positionalParamSegments));\n if (/** @type {?} */ ((route.redirectTo)).startsWith('/')) {\n return absoluteRedirect(newTree);\n }\n return mergeMap.call(this.lineralizeSegments(route, newTree), (newSegments) => {\n return this.expandSegment(ngModule, segmentGroup, routes, newSegments.concat(segments.slice(lastChild)), outlet, false);\n });\n }\n /**\n * @param {?} ngModule\n * @param {?} rawSegmentGroup\n * @param {?} route\n * @param {?} segments\n * @return {?}\n */\n matchSegmentAgainstRoute(ngModule, rawSegmentGroup, route, segments) {\n if (route.path === '**') {\n if (route.loadChildren) {\n return map.call(this.configLoader.load(ngModule.injector, route), (cfg) => {\n route._loadedConfig = cfg;\n return new UrlSegmentGroup(segments, {});\n });\n }\n return of(new UrlSegmentGroup(segments, {}));\n }\n const { matched, consumedSegments, lastChild } = match(rawSegmentGroup, route, segments);\n if (!matched)\n return noMatch(rawSegmentGroup);\n const /** @type {?} */ rawSlicedSegments = segments.slice(lastChild);\n const /** @type {?} */ childConfig$ = this.getChildConfig(ngModule, route);\n return mergeMap.call(childConfig$, (routerConfig) => {\n const /** @type {?} */ childModule = routerConfig.module;\n const /** @type {?} */ childConfig = routerConfig.routes;\n const { segmentGroup, slicedSegments } = split(rawSegmentGroup, consumedSegments, rawSlicedSegments, childConfig);\n if (slicedSegments.length === 0 && segmentGroup.hasChildren()) {\n const /** @type {?} */ expanded$ = this.expandChildren(childModule, childConfig, segmentGroup);\n return map.call(expanded$, (children) => new UrlSegmentGroup(consumedSegments, children));\n }\n if (childConfig.length === 0 && slicedSegments.length === 0) {\n return of(new UrlSegmentGroup(consumedSegments, {}));\n }\n const /** @type {?} */ expanded$ = this.expandSegment(childModule, segmentGroup, childConfig, slicedSegments, PRIMARY_OUTLET, true);\n return map.call(expanded$, (cs) => new UrlSegmentGroup(consumedSegments.concat(cs.segments), cs.children));\n });\n }\n /**\n * @param {?} ngModule\n * @param {?} route\n * @return {?}\n */\n getChildConfig(ngModule, route) {\n if (route.children) {\n // The children belong to the same module\n return of(new LoadedRouterConfig(route.children, ngModule));\n }\n if (route.loadChildren) {\n // lazy children belong to the loaded module\n if (route._loadedConfig !== undefined) {\n return of(route._loadedConfig);\n }\n return mergeMap.call(runCanLoadGuard(ngModule.injector, route), (shouldLoad) => {\n if (shouldLoad) {\n return map.call(this.configLoader.load(ngModule.injector, route), (cfg) => {\n route._loadedConfig = cfg;\n return cfg;\n });\n }\n return canLoadFails(route);\n });\n }\n return of(new LoadedRouterConfig([], ngModule));\n }\n /**\n * @param {?} route\n * @param {?} urlTree\n * @return {?}\n */\n lineralizeSegments(route, urlTree) {\n let /** @type {?} */ res = [];\n let /** @type {?} */ c = urlTree.root;\n while (true) {\n res = res.concat(c.segments);\n if (c.numberOfChildren === 0) {\n return of(res);\n }\n if (c.numberOfChildren > 1 || !c.children[PRIMARY_OUTLET]) {\n return namedOutletsRedirect(/** @type {?} */ ((route.redirectTo)));\n }\n c = c.children[PRIMARY_OUTLET];\n }\n }\n /**\n * @param {?} segments\n * @param {?} redirectTo\n * @param {?} posParams\n * @return {?}\n */\n applyRedirectCommands(segments, redirectTo, posParams) {\n return this.applyRedirectCreatreUrlTree(redirectTo, this.urlSerializer.parse(redirectTo), segments, posParams);\n }\n /**\n * @param {?} redirectTo\n * @param {?} urlTree\n * @param {?} segments\n * @param {?} posParams\n * @return {?}\n */\n applyRedirectCreatreUrlTree(redirectTo, urlTree, segments, posParams) {\n const /** @type {?} */ newRoot = this.createSegmentGroup(redirectTo, urlTree.root, segments, posParams);\n return new UrlTree(newRoot, this.createQueryParams(urlTree.queryParams, this.urlTree.queryParams), urlTree.fragment);\n }\n /**\n * @param {?} redirectToParams\n * @param {?} actualParams\n * @return {?}\n */\n createQueryParams(redirectToParams, actualParams) {\n const /** @type {?} */ res = {};\n forEach(redirectToParams, (v, k) => {\n const /** @type {?} */ copySourceValue = typeof v === 'string' && v.startsWith(':');\n if (copySourceValue) {\n const /** @type {?} */ sourceName = v.substring(1);\n res[k] = actualParams[sourceName];\n }\n else {\n res[k] = v;\n }\n });\n return res;\n }\n /**\n * @param {?} redirectTo\n * @param {?} group\n * @param {?} segments\n * @param {?} posParams\n * @return {?}\n */\n createSegmentGroup(redirectTo, group, segments, posParams) {\n const /** @type {?} */ updatedSegments = this.createSegments(redirectTo, group.segments, segments, posParams);\n let /** @type {?} */ children = {};\n forEach(group.children, (child, name) => {\n children[name] = this.createSegmentGroup(redirectTo, child, segments, posParams);\n });\n return new UrlSegmentGroup(updatedSegments, children);\n }\n /**\n * @param {?} redirectTo\n * @param {?} redirectToSegments\n * @param {?} actualSegments\n * @param {?} posParams\n * @return {?}\n */\n createSegments(redirectTo, redirectToSegments, actualSegments, posParams) {\n return redirectToSegments.map(s => s.path.startsWith(':') ? this.findPosParam(redirectTo, s, posParams) :\n this.findOrReturn(s, actualSegments));\n }\n /**\n * @param {?} redirectTo\n * @param {?} redirectToUrlSegment\n * @param {?} posParams\n * @return {?}\n */\n findPosParam(redirectTo, redirectToUrlSegment, posParams) {\n const /** @type {?} */ pos = posParams[redirectToUrlSegment.path.substring(1)];\n if (!pos)\n throw new Error(`Cannot redirect to '${redirectTo}'. Cannot find '${redirectToUrlSegment.path}'.`);\n return pos;\n }\n /**\n * @param {?} redirectToUrlSegment\n * @param {?} actualSegments\n * @return {?}\n */\n findOrReturn(redirectToUrlSegment, actualSegments) {\n let /** @type {?} */ idx = 0;\n for (const /** @type {?} */ s of actualSegments) {\n if (s.path === redirectToUrlSegment.path) {\n actualSegments.splice(idx);\n return s;\n }\n idx++;\n }\n return redirectToUrlSegment;\n }\n}\nfunction ApplyRedirects_tsickle_Closure_declarations() {\n /** @type {?} */\n ApplyRedirects.prototype.allowRedirects;\n /** @type {?} */\n ApplyRedirects.prototype.ngModule;\n /** @type {?} */\n ApplyRedirects.prototype.configLoader;\n /** @type {?} */\n ApplyRedirects.prototype.urlSerializer;\n /** @type {?} */\n ApplyRedirects.prototype.urlTree;\n /** @type {?} */\n ApplyRedirects.prototype.config;\n}\n/**\n * @param {?} moduleInjector\n * @param {?} route\n * @return {?}\n */\nfunction runCanLoadGuard(moduleInjector, route) {\n const /** @type {?} */ canLoad = route.canLoad;\n if (!canLoad || canLoad.length === 0)\n return of(true);\n const /** @type {?} */ obs = map.call(from(canLoad), (injectionToken) => {\n const /** @type {?} */ guard = moduleInjector.get(injectionToken);\n return wrapIntoObservable(guard.canLoad ? guard.canLoad(route) : guard(route));\n });\n return andObservables(obs);\n}\n/**\n * @param {?} segmentGroup\n * @param {?} route\n * @param {?} segments\n * @return {?}\n */\nfunction match(segmentGroup, route, segments) {\n if (route.path === '') {\n if ((route.pathMatch === 'full') && (segmentGroup.hasChildren() || segments.length > 0)) {\n return { matched: false, consumedSegments: [], lastChild: 0, positionalParamSegments: {} };\n }\n return { matched: true, consumedSegments: [], lastChild: 0, positionalParamSegments: {} };\n }\n const /** @type {?} */ matcher = route.matcher || defaultUrlMatcher;\n const /** @type {?} */ res = matcher(segments, segmentGroup, route);\n if (!res) {\n return {\n matched: false,\n consumedSegments: /** @type {?} */ ([]),\n lastChild: 0,\n positionalParamSegments: {},\n };\n }\n return {\n matched: true,\n consumedSegments: /** @type {?} */ ((res.consumed)),\n lastChild: /** @type {?} */ ((res.consumed.length)),\n positionalParamSegments: /** @type {?} */ ((res.posParams)),\n };\n}\n/**\n * @param {?} segmentGroup\n * @param {?} consumedSegments\n * @param {?} slicedSegments\n * @param {?} config\n * @return {?}\n */\nfunction split(segmentGroup, consumedSegments, slicedSegments, config) {\n if (slicedSegments.length > 0 &&\n containsEmptyPathRedirectsWithNamedOutlets(segmentGroup, slicedSegments, config)) {\n const /** @type {?} */ s = new UrlSegmentGroup(consumedSegments, createChildrenForEmptySegments(config, new UrlSegmentGroup(slicedSegments, segmentGroup.children)));\n return { segmentGroup: mergeTrivialChildren(s), slicedSegments: [] };\n }\n if (slicedSegments.length === 0 &&\n containsEmptyPathRedirects(segmentGroup, slicedSegments, config)) {\n const /** @type {?} */ s = new UrlSegmentGroup(segmentGroup.segments, addEmptySegmentsToChildrenIfNeeded(segmentGroup, slicedSegments, config, segmentGroup.children));\n return { segmentGroup: mergeTrivialChildren(s), slicedSegments };\n }\n return { segmentGroup, slicedSegments };\n}\n/**\n * @param {?} s\n * @return {?}\n */\nfunction mergeTrivialChildren(s) {\n if (s.numberOfChildren === 1 && s.children[PRIMARY_OUTLET]) {\n const /** @type {?} */ c = s.children[PRIMARY_OUTLET];\n return new UrlSegmentGroup(s.segments.concat(c.segments), c.children);\n }\n return s;\n}\n/**\n * @param {?} segmentGroup\n * @param {?} slicedSegments\n * @param {?} routes\n * @param {?} children\n * @return {?}\n */\nfunction addEmptySegmentsToChildrenIfNeeded(segmentGroup, slicedSegments, routes, children) {\n const /** @type {?} */ res = {};\n for (const /** @type {?} */ r of routes) {\n if (isEmptyPathRedirect(segmentGroup, slicedSegments, r) && !children[getOutlet(r)]) {\n res[getOutlet(r)] = new UrlSegmentGroup([], {});\n }\n }\n return Object.assign({}, children, res);\n}\n/**\n * @param {?} routes\n * @param {?} primarySegmentGroup\n * @return {?}\n */\nfunction createChildrenForEmptySegments(routes, primarySegmentGroup) {\n const /** @type {?} */ res = {};\n res[PRIMARY_OUTLET] = primarySegmentGroup;\n for (const /** @type {?} */ r of routes) {\n if (r.path === '' && getOutlet(r) !== PRIMARY_OUTLET) {\n res[getOutlet(r)] = new UrlSegmentGroup([], {});\n }\n }\n return res;\n}\n/**\n * @param {?} segmentGroup\n * @param {?} segments\n * @param {?} routes\n * @return {?}\n */\nfunction containsEmptyPathRedirectsWithNamedOutlets(segmentGroup, segments, routes) {\n return routes.some(r => isEmptyPathRedirect(segmentGroup, segments, r) && getOutlet(r) !== PRIMARY_OUTLET);\n}\n/**\n * @param {?} segmentGroup\n * @param {?} segments\n * @param {?} routes\n * @return {?}\n */\nfunction containsEmptyPathRedirects(segmentGroup, segments, routes) {\n return routes.some(r => isEmptyPathRedirect(segmentGroup, segments, r));\n}\n/**\n * @param {?} segmentGroup\n * @param {?} segments\n * @param {?} r\n * @return {?}\n */\nfunction isEmptyPathRedirect(segmentGroup, segments, r) {\n if ((segmentGroup.hasChildren() || segments.length > 0) && r.pathMatch === 'full') {\n return false;\n }\n return r.path === '' && r.redirectTo !== undefined;\n}\n/**\n * @param {?} route\n * @return {?}\n */\nfunction getOutlet(route) {\n return route.outlet || PRIMARY_OUTLET;\n}\n//# sourceMappingURL=apply_redirects.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @template T\n */\nexport class Tree {\n /**\n * @param {?} root\n */\n constructor(root) { this._root = root; }\n /**\n * @return {?}\n */\n get root() { return this._root.value; }\n /**\n * \\@internal\n * @param {?} t\n * @return {?}\n */\n parent(t) {\n const /** @type {?} */ p = this.pathFromRoot(t);\n return p.length > 1 ? p[p.length - 2] : null;\n }\n /**\n * \\@internal\n * @param {?} t\n * @return {?}\n */\n children(t) {\n const /** @type {?} */ n = findNode(t, this._root);\n return n ? n.children.map(t => t.value) : [];\n }\n /**\n * \\@internal\n * @param {?} t\n * @return {?}\n */\n firstChild(t) {\n const /** @type {?} */ n = findNode(t, this._root);\n return n && n.children.length > 0 ? n.children[0].value : null;\n }\n /**\n * \\@internal\n * @param {?} t\n * @return {?}\n */\n siblings(t) {\n const /** @type {?} */ p = findPath(t, this._root);\n if (p.length < 2)\n return [];\n const /** @type {?} */ c = p[p.length - 2].children.map(c => c.value);\n return c.filter(cc => cc !== t);\n }\n /**\n * \\@internal\n * @param {?} t\n * @return {?}\n */\n pathFromRoot(t) { return findPath(t, this._root).map(s => s.value); }\n}\nfunction Tree_tsickle_Closure_declarations() {\n /**\n * \\@internal\n * @type {?}\n */\n Tree.prototype._root;\n}\n/**\n * @template T\n * @param {?} value\n * @param {?} node\n * @return {?}\n */\nfunction findNode(value, node) {\n if (value === node.value)\n return node;\n for (const /** @type {?} */ child of node.children) {\n const /** @type {?} */ node = findNode(value, child);\n if (node)\n return node;\n }\n return null;\n}\n/**\n * @template T\n * @param {?} value\n * @param {?} node\n * @return {?}\n */\nfunction findPath(value, node) {\n if (value === node.value)\n return [node];\n for (const /** @type {?} */ child of node.children) {\n const /** @type {?} */ path = findPath(value, child);\n if (path.length) {\n path.unshift(node);\n return path;\n }\n }\n return [];\n}\n/**\n * @template T\n */\nexport class TreeNode {\n /**\n * @param {?} value\n * @param {?} children\n */\n constructor(value, children) {\n this.value = value;\n this.children = children;\n }\n /**\n * @return {?}\n */\n toString() { return `TreeNode(${this.value})`; }\n}\nfunction TreeNode_tsickle_Closure_declarations() {\n /** @type {?} */\n TreeNode.prototype.value;\n /** @type {?} */\n TreeNode.prototype.children;\n}\n/**\n * @template T\n * @param {?} node\n * @return {?}\n */\nexport function nodeChildrenAsMap(node) {\n const /** @type {?} */ map = {};\n if (node) {\n node.children.forEach(child => map[child.value.outlet] = child);\n }\n return map;\n}\n//# sourceMappingURL=tree.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\nimport { map } from 'rxjs/operator/map';\nimport { PRIMARY_OUTLET, convertToParamMap } from './shared';\nimport { UrlSegment, equalSegments } from './url_tree';\nimport { shallowEqual, shallowEqualArrays } from './utils/collection';\nimport { Tree, TreeNode } from './utils/tree';\n/**\n * \\@whatItDoes Represents the state of the router.\n *\n * \\@howToUse\n *\n * ```\n * \\@Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const state: RouterState = router.routerState;\n * const root: ActivatedRoute = state.root;\n * const child = root.firstChild;\n * const id: Observable<string> = child.params.map(p => p.id);\n * //...\n * }\n * }\n * ```\n *\n * \\@description\n * RouterState is a tree of activated routes. Every node in this tree knows about the \"consumed\" URL\n * segments, the extracted parameters, and the resolved data.\n *\n * See {\\@link ActivatedRoute} for more information.\n *\n * \\@stable\n */\nexport class RouterState extends Tree {\n /**\n * \\@internal\n * @param {?} root\n * @param {?} snapshot\n */\n constructor(root, snapshot) {\n super(root);\n this.snapshot = snapshot;\n setRouterState(/** @type {?} */ (this), root);\n }\n /**\n * @return {?}\n */\n toString() { return this.snapshot.toString(); }\n}\nfunction RouterState_tsickle_Closure_declarations() {\n /**\n * The current snapshot of the router state\n * @type {?}\n */\n RouterState.prototype.snapshot;\n}\n/**\n * @param {?} urlTree\n * @param {?} rootComponent\n * @return {?}\n */\nexport function createEmptyState(urlTree, rootComponent) {\n const /** @type {?} */ snapshot = createEmptyStateSnapshot(urlTree, rootComponent);\n const /** @type {?} */ emptyUrl = new BehaviorSubject([new UrlSegment('', {})]);\n const /** @type {?} */ emptyParams = new BehaviorSubject({});\n const /** @type {?} */ emptyData = new BehaviorSubject({});\n const /** @type {?} */ emptyQueryParams = new BehaviorSubject({});\n const /** @type {?} */ fragment = new BehaviorSubject('');\n const /** @type {?} */ activated = new ActivatedRoute(emptyUrl, emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, snapshot.root);\n activated.snapshot = snapshot.root;\n return new RouterState(new TreeNode(activated, []), snapshot);\n}\n/**\n * @param {?} urlTree\n * @param {?} rootComponent\n * @return {?}\n */\nexport function createEmptyStateSnapshot(urlTree, rootComponent) {\n const /** @type {?} */ emptyParams = {};\n const /** @type {?} */ emptyData = {};\n const /** @type {?} */ emptyQueryParams = {};\n const /** @type {?} */ fragment = '';\n const /** @type {?} */ activated = new ActivatedRouteSnapshot([], emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, null, urlTree.root, -1, {});\n return new RouterStateSnapshot('', new TreeNode(activated, []));\n}\n/**\n * \\@whatItDoes Contains the information about a route associated with a component loaded in an\n * outlet.\n * An `ActivatedRoute` can also be used to traverse the router state tree.\n *\n * \\@howToUse\n *\n * ```\n * \\@Component({...})\n * class MyComponent {\n * constructor(route: ActivatedRoute) {\n * const id: Observable<string> = route.params.map(p => p.id);\n * const url: Observable<string> = route.url.map(segments => segments.join(''));\n * // route.data includes both `data` and `resolve`\n * const user = route.data.map(d => d.user);\n * }\n * }\n * ```\n *\n * \\@stable\n */\nexport class ActivatedRoute {\n /**\n * \\@internal\n * @param {?} url\n * @param {?} params\n * @param {?} queryParams\n * @param {?} fragment\n * @param {?} data\n * @param {?} outlet\n * @param {?} component\n * @param {?} futureSnapshot\n */\n constructor(url, params, queryParams, fragment, data, outlet, component, futureSnapshot) {\n this.url = url;\n this.params = params;\n this.queryParams = queryParams;\n this.fragment = fragment;\n this.data = data;\n this.outlet = outlet;\n this.component = component;\n this._futureSnapshot = futureSnapshot;\n }\n /**\n * The configuration used to match this route\n * @return {?}\n */\n get routeConfig() { return this._futureSnapshot.routeConfig; }\n /**\n * The root of the router state\n * @return {?}\n */\n get root() { return this._routerState.root; }\n /**\n * The parent of this route in the router state tree\n * @return {?}\n */\n get parent() { return this._routerState.parent(this); }\n /**\n * The first child of this route in the router state tree\n * @return {?}\n */\n get firstChild() { return this._routerState.firstChild(this); }\n /**\n * The children of this route in the router state tree\n * @return {?}\n */\n get children() { return this._routerState.children(this); }\n /**\n * The path from the root of the router state tree to this route\n * @return {?}\n */\n get pathFromRoot() { return this._routerState.pathFromRoot(this); }\n /**\n * @return {?}\n */\n get paramMap() {\n if (!this._paramMap) {\n this._paramMap = map.call(this.params, (p) => convertToParamMap(p));\n }\n return this._paramMap;\n }\n /**\n * @return {?}\n */\n get queryParamMap() {\n if (!this._queryParamMap) {\n this._queryParamMap =\n map.call(this.queryParams, (p) => convertToParamMap(p));\n }\n return this._queryParamMap;\n }\n /**\n * @return {?}\n */\n toString() {\n return this.snapshot ? this.snapshot.toString() : `Future(${this._futureSnapshot})`;\n }\n}\nfunction ActivatedRoute_tsickle_Closure_declarations() {\n /**\n * The current snapshot of this route\n * @type {?}\n */\n ActivatedRoute.prototype.snapshot;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRoute.prototype._futureSnapshot;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRoute.prototype._routerState;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRoute.prototype._paramMap;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRoute.prototype._queryParamMap;\n /**\n * An observable of the URL segments matched by this route\n * @type {?}\n */\n ActivatedRoute.prototype.url;\n /**\n * An observable of the matrix parameters scoped to this route\n * @type {?}\n */\n ActivatedRoute.prototype.params;\n /**\n * An observable of the query parameters shared by all the routes\n * @type {?}\n */\n ActivatedRoute.prototype.queryParams;\n /**\n * An observable of the URL fragment shared by all the routes\n * @type {?}\n */\n ActivatedRoute.prototype.fragment;\n /**\n * An observable of the static and resolved data of this route.\n * @type {?}\n */\n ActivatedRoute.prototype.data;\n /**\n * The outlet name of the route. It's a constant\n * @type {?}\n */\n ActivatedRoute.prototype.outlet;\n /**\n * The component of the route. It's a constant\n * @type {?}\n */\n ActivatedRoute.prototype.component;\n}\n/**\n * Returns the inherited params, data, and resolve for a given route.\n * By default, this only inherits values up to the nearest path-less or component-less route.\n * \\@internal\n * @param {?} route\n * @param {?=} paramsInheritanceStrategy\n * @return {?}\n */\nexport function inheritedParamsDataResolve(route, paramsInheritanceStrategy = 'emptyOnly') {\n const /** @type {?} */ pathFromRoot = route.pathFromRoot;\n let /** @type {?} */ inheritingStartingFrom = 0;\n if (paramsInheritanceStrategy !== 'always') {\n inheritingStartingFrom = pathFromRoot.length - 1;\n while (inheritingStartingFrom >= 1) {\n const /** @type {?} */ current = pathFromRoot[inheritingStartingFrom];\n const /** @type {?} */ parent = pathFromRoot[inheritingStartingFrom - 1];\n // current route is an empty path => inherits its parent's params and data\n if (current.routeConfig && current.routeConfig.path === '') {\n inheritingStartingFrom--;\n // parent is componentless => current route should inherit its params and data\n }\n else if (!parent.component) {\n inheritingStartingFrom--;\n }\n else {\n break;\n }\n }\n }\n return flattenInherited(pathFromRoot.slice(inheritingStartingFrom));\n}\n/**\n * \\@internal\n * @param {?} pathFromRoot\n * @return {?}\n */\nfunction flattenInherited(pathFromRoot) {\n return pathFromRoot.reduce((res, curr) => {\n const /** @type {?} */ params = Object.assign({}, res.params, curr.params);\n const /** @type {?} */ data = Object.assign({}, res.data, curr.data);\n const /** @type {?} */ resolve = Object.assign({}, res.resolve, curr._resolvedData);\n return { params, data, resolve };\n }, /** @type {?} */ ({ params: {}, data: {}, resolve: {} }));\n}\n/**\n * \\@whatItDoes Contains the information about a route associated with a component loaded in an\n * outlet\n * at a particular moment in time. ActivatedRouteSnapshot can also be used to traverse the router\n * state tree.\n *\n * \\@howToUse\n *\n * ```\n * \\@Component({templateUrl:'./my-component.html'})\n * class MyComponent {\n * constructor(route: ActivatedRoute) {\n * const id: string = route.snapshot.params.id;\n * const url: string = route.snapshot.url.join('');\n * const user = route.snapshot.data.user;\n * }\n * }\n * ```\n *\n * \\@stable\n */\nexport class ActivatedRouteSnapshot {\n /**\n * \\@internal\n * @param {?} url\n * @param {?} params\n * @param {?} queryParams\n * @param {?} fragment\n * @param {?} data\n * @param {?} outlet\n * @param {?} component\n * @param {?} routeConfig\n * @param {?} urlSegment\n * @param {?} lastPathIndex\n * @param {?} resolve\n */\n constructor(url, params, queryParams, fragment, data, outlet, component, routeConfig, urlSegment, lastPathIndex, resolve) {\n this.url = url;\n this.params = params;\n this.queryParams = queryParams;\n this.fragment = fragment;\n this.data = data;\n this.outlet = outlet;\n this.component = component;\n this.routeConfig = routeConfig;\n this._urlSegment = urlSegment;\n this._lastPathIndex = lastPathIndex;\n this._resolve = resolve;\n }\n /**\n * The root of the router state\n * @return {?}\n */\n get root() { return this._routerState.root; }\n /**\n * The parent of this route in the router state tree\n * @return {?}\n */\n get parent() { return this._routerState.parent(this); }\n /**\n * The first child of this route in the router state tree\n * @return {?}\n */\n get firstChild() { return this._routerState.firstChild(this); }\n /**\n * The children of this route in the router state tree\n * @return {?}\n */\n get children() { return this._routerState.children(this); }\n /**\n * The path from the root of the router state tree to this route\n * @return {?}\n */\n get pathFromRoot() { return this._routerState.pathFromRoot(this); }\n /**\n * @return {?}\n */\n get paramMap() {\n if (!this._paramMap) {\n this._paramMap = convertToParamMap(this.params);\n }\n return this._paramMap;\n }\n /**\n * @return {?}\n */\n get queryParamMap() {\n if (!this._queryParamMap) {\n this._queryParamMap = convertToParamMap(this.queryParams);\n }\n return this._queryParamMap;\n }\n /**\n * @return {?}\n */\n toString() {\n const /** @type {?} */ url = this.url.map(segment => segment.toString()).join('/');\n const /** @type {?} */ matched = this.routeConfig ? this.routeConfig.path : '';\n return `Route(url:'${url}', path:'${matched}')`;\n }\n}\nfunction ActivatedRouteSnapshot_tsickle_Closure_declarations() {\n /**\n * The configuration used to match this route *\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.routeConfig;\n /**\n * \\@internal *\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._urlSegment;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._lastPathIndex;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._resolve;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._resolvedData;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._routerState;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._paramMap;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._queryParamMap;\n /**\n * The URL segments matched by this route\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.url;\n /**\n * The matrix parameters scoped to this route\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.params;\n /**\n * The query parameters shared by all the routes\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.queryParams;\n /**\n * The URL fragment shared by all the routes\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.fragment;\n /**\n * The static and resolved data of this route\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.data;\n /**\n * The outlet name of the route\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.outlet;\n /**\n * The component of the route\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.component;\n}\n/**\n * \\@whatItDoes Represents the state of the router at a moment in time.\n *\n * \\@howToUse\n *\n * ```\n * \\@Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const state: RouterState = router.routerState;\n * const snapshot: RouterStateSnapshot = state.snapshot;\n * const root: ActivatedRouteSnapshot = snapshot.root;\n * const child = root.firstChild;\n * const id: Observable<string> = child.params.map(p => p.id);\n * //...\n * }\n * }\n * ```\n *\n * \\@description\n * RouterStateSnapshot is a tree of activated route snapshots. Every node in this tree knows about\n * the \"consumed\" URL segments, the extracted parameters, and the resolved data.\n *\n * \\@stable\n */\nexport class RouterStateSnapshot extends Tree {\n /**\n * \\@internal\n * @param {?} url\n * @param {?} root\n */\n constructor(url, root) {\n super(root);\n this.url = url;\n setRouterState(/** @type {?} */ (this), root);\n }\n /**\n * @return {?}\n */\n toString() { return serializeNode(this._root); }\n}\nfunction RouterStateSnapshot_tsickle_Closure_declarations() {\n /**\n * The url from which this snapshot was created\n * @type {?}\n */\n RouterStateSnapshot.prototype.url;\n}\n/**\n * @template U, T\n * @param {?} state\n * @param {?} node\n * @return {?}\n */\nfunction setRouterState(state, node) {\n node.value._routerState = state;\n node.children.forEach(c => setRouterState(state, c));\n}\n/**\n * @param {?} node\n * @return {?}\n */\nfunction serializeNode(node) {\n const /** @type {?} */ c = node.children.length > 0 ? ` { ${node.children.map(serializeNode).join(', ')} } ` : '';\n return `${node.value}${c}`;\n}\n/**\n * The expectation is that the activate route is created with the right set of parameters.\n * So we push new values into the observables only when they are not the initial values.\n * And we detect that by checking if the snapshot field is set.\n * @param {?} route\n * @return {?}\n */\nexport function advanceActivatedRoute(route) {\n if (route.snapshot) {\n const /** @type {?} */ currentSnapshot = route.snapshot;\n const /** @type {?} */ nextSnapshot = route._futureSnapshot;\n route.snapshot = nextSnapshot;\n if (!shallowEqual(currentSnapshot.queryParams, nextSnapshot.queryParams)) {\n (/** @type {?} */ (route.queryParams)).next(nextSnapshot.queryParams);\n }\n if (currentSnapshot.fragment !== nextSnapshot.fragment) {\n (/** @type {?} */ (route.fragment)).next(nextSnapshot.fragment);\n }\n if (!shallowEqual(currentSnapshot.params, nextSnapshot.params)) {\n (/** @type {?} */ (route.params)).next(nextSnapshot.params);\n }\n if (!shallowEqualArrays(currentSnapshot.url, nextSnapshot.url)) {\n (/** @type {?} */ (route.url)).next(nextSnapshot.url);\n }\n if (!shallowEqual(currentSnapshot.data, nextSnapshot.data)) {\n (/** @type {?} */ (route.data)).next(nextSnapshot.data);\n }\n }\n else {\n route.snapshot = route._futureSnapshot;\n // this is for resolved data\n (/** @type {?} */ (route.data)).next(route._futureSnapshot.data);\n }\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nexport function equalParamsAndUrlSegments(a, b) {\n const /** @type {?} */ equalUrlParams = shallowEqual(a.params, b.params) && equalSegments(a.url, b.url);\n const /** @type {?} */ parentsMismatch = !a.parent !== !b.parent;\n return equalUrlParams && !parentsMismatch &&\n (!a.parent || equalParamsAndUrlSegments(a.parent, /** @type {?} */ ((b.parent))));\n}\n//# sourceMappingURL=router_state.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\nimport { ActivatedRoute, RouterState } from './router_state';\nimport { TreeNode } from './utils/tree';\n/**\n * @param {?} routeReuseStrategy\n * @param {?} curr\n * @param {?} prevState\n * @return {?}\n */\nexport function createRouterState(routeReuseStrategy, curr, prevState) {\n const /** @type {?} */ root = createNode(routeReuseStrategy, curr._root, prevState ? prevState._root : undefined);\n return new RouterState(root, curr);\n}\n/**\n * @param {?} routeReuseStrategy\n * @param {?} curr\n * @param {?=} prevState\n * @return {?}\n */\nfunction createNode(routeReuseStrategy, curr, prevState) {\n // reuse an activated route that is currently displayed on the screen\n if (prevState && routeReuseStrategy.shouldReuseRoute(curr.value, prevState.value.snapshot)) {\n const /** @type {?} */ value = prevState.value;\n value._futureSnapshot = curr.value;\n const /** @type {?} */ children = createOrReuseChildren(routeReuseStrategy, curr, prevState);\n return new TreeNode(value, children);\n // retrieve an activated route that is used to be displayed, but is not currently displayed\n }\n else if (routeReuseStrategy.retrieve(curr.value)) {\n const /** @type {?} */ tree = (/** @type {?} */ (routeReuseStrategy.retrieve(curr.value))).route;\n setFutureSnapshotsOfActivatedRoutes(curr, tree);\n return tree;\n }\n else {\n const /** @type {?} */ value = createActivatedRoute(curr.value);\n const /** @type {?} */ children = curr.children.map(c => createNode(routeReuseStrategy, c));\n return new TreeNode(value, children);\n }\n}\n/**\n * @param {?} curr\n * @param {?} result\n * @return {?}\n */\nfunction setFutureSnapshotsOfActivatedRoutes(curr, result) {\n if (curr.value.routeConfig !== result.value.routeConfig) {\n throw new Error('Cannot reattach ActivatedRouteSnapshot created from a different route');\n }\n if (curr.children.length !== result.children.length) {\n throw new Error('Cannot reattach ActivatedRouteSnapshot with a different number of children');\n }\n result.value._futureSnapshot = curr.value;\n for (let /** @type {?} */ i = 0; i < curr.children.length; ++i) {\n setFutureSnapshotsOfActivatedRoutes(curr.children[i], result.children[i]);\n }\n}\n/**\n * @param {?} routeReuseStrategy\n * @param {?} curr\n * @param {?} prevState\n * @return {?}\n */\nfunction createOrReuseChildren(routeReuseStrategy, curr, prevState) {\n return curr.children.map(child => {\n for (const /** @type {?} */ p of prevState.children) {\n if (routeReuseStrategy.shouldReuseRoute(p.value.snapshot, child.value)) {\n return createNode(routeReuseStrategy, child, p);\n }\n }\n return createNode(routeReuseStrategy, child);\n });\n}\n/**\n * @param {?} c\n * @return {?}\n */\nfunction createActivatedRoute(c) {\n return new ActivatedRoute(new BehaviorSubject(c.url), new BehaviorSubject(c.params), new BehaviorSubject(c.queryParams), new BehaviorSubject(c.fragment), new BehaviorSubject(c.data), c.outlet, c.component, c);\n}\n//# sourceMappingURL=create_router_state.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { PRIMARY_OUTLET } from './shared';\nimport { UrlSegment, UrlSegmentGroup, UrlTree } from './url_tree';\nimport { forEach, last, shallowEqual } from './utils/collection';\n/**\n * @param {?} route\n * @param {?} urlTree\n * @param {?} commands\n * @param {?} queryParams\n * @param {?} fragment\n * @return {?}\n */\nexport function createUrlTree(route, urlTree, commands, queryParams, fragment) {\n if (commands.length === 0) {\n return tree(urlTree.root, urlTree.root, urlTree, queryParams, fragment);\n }\n const /** @type {?} */ nav = computeNavigation(commands);\n if (nav.toRoot()) {\n return tree(urlTree.root, new UrlSegmentGroup([], {}), urlTree, queryParams, fragment);\n }\n const /** @type {?} */ startingPosition = findStartingPosition(nav, urlTree, route);\n const /** @type {?} */ segmentGroup = startingPosition.processChildren ?\n updateSegmentGroupChildren(startingPosition.segmentGroup, startingPosition.index, nav.commands) :\n updateSegmentGroup(startingPosition.segmentGroup, startingPosition.index, nav.commands);\n return tree(startingPosition.segmentGroup, segmentGroup, urlTree, queryParams, fragment);\n}\n/**\n * @param {?} command\n * @return {?}\n */\nfunction isMatrixParams(command) {\n return typeof command === 'object' && command != null && !command.outlets && !command.segmentPath;\n}\n/**\n * @param {?} oldSegmentGroup\n * @param {?} newSegmentGroup\n * @param {?} urlTree\n * @param {?} queryParams\n * @param {?} fragment\n * @return {?}\n */\nfunction tree(oldSegmentGroup, newSegmentGroup, urlTree, queryParams, fragment) {\n let /** @type {?} */ qp = {};\n if (queryParams) {\n forEach(queryParams, (value, name) => {\n qp[name] = Array.isArray(value) ? value.map((v) => `${v}`) : `${value}`;\n });\n }\n if (urlTree.root === oldSegmentGroup) {\n return new UrlTree(newSegmentGroup, qp, fragment);\n }\n return new UrlTree(replaceSegment(urlTree.root, oldSegmentGroup, newSegmentGroup), qp, fragment);\n}\n/**\n * @param {?} current\n * @param {?} oldSegment\n * @param {?} newSegment\n * @return {?}\n */\nfunction replaceSegment(current, oldSegment, newSegment) {\n const /** @type {?} */ children = {};\n forEach(current.children, (c, outletName) => {\n if (c === oldSegment) {\n children[outletName] = newSegment;\n }\n else {\n children[outletName] = replaceSegment(c, oldSegment, newSegment);\n }\n });\n return new UrlSegmentGroup(current.segments, children);\n}\nclass Navigation {\n /**\n * @param {?} isAbsolute\n * @param {?} numberOfDoubleDots\n * @param {?} commands\n */\n constructor(isAbsolute, numberOfDoubleDots, commands) {\n this.isAbsolute = isAbsolute;\n this.numberOfDoubleDots = numberOfDoubleDots;\n this.commands = commands;\n if (isAbsolute && commands.length > 0 && isMatrixParams(commands[0])) {\n throw new Error('Root segment cannot have matrix parameters');\n }\n const /** @type {?} */ cmdWithOutlet = commands.find(c => typeof c === 'object' && c != null && c.outlets);\n if (cmdWithOutlet && cmdWithOutlet !== last(commands)) {\n throw new Error('{outlets:{}} has to be the last command');\n }\n }\n /**\n * @return {?}\n */\n toRoot() {\n return this.isAbsolute && this.commands.length === 1 && this.commands[0] == '/';\n }\n}\nfunction Navigation_tsickle_Closure_declarations() {\n /** @type {?} */\n Navigation.prototype.isAbsolute;\n /** @type {?} */\n Navigation.prototype.numberOfDoubleDots;\n /** @type {?} */\n Navigation.prototype.commands;\n}\n/**\n * Transforms commands to a normalized `Navigation`\n * @param {?} commands\n * @return {?}\n */\nfunction computeNavigation(commands) {\n if ((typeof commands[0] === 'string') && commands.length === 1 && commands[0] === '/') {\n return new Navigation(true, 0, commands);\n }\n let /** @type {?} */ numberOfDoubleDots = 0;\n let /** @type {?} */ isAbsolute = false;\n const /** @type {?} */ res = commands.reduce((res, cmd, cmdIdx) => {\n if (typeof cmd === 'object' && cmd != null) {\n if (cmd.outlets) {\n const /** @type {?} */ outlets = {};\n forEach(cmd.outlets, (commands, name) => {\n outlets[name] = typeof commands === 'string' ? commands.split('/') : commands;\n });\n return [...res, { outlets }];\n }\n if (cmd.segmentPath) {\n return [...res, cmd.segmentPath];\n }\n }\n if (!(typeof cmd === 'string')) {\n return [...res, cmd];\n }\n if (cmdIdx === 0) {\n cmd.split('/').forEach((urlPart, partIndex) => {\n if (partIndex == 0 && urlPart === '.') {\n // skip './a'\n }\n else if (partIndex == 0 && urlPart === '') {\n // '/a'\n isAbsolute = true;\n }\n else if (urlPart === '..') {\n // '../a'\n numberOfDoubleDots++;\n }\n else if (urlPart != '') {\n res.push(urlPart);\n }\n });\n return res;\n }\n return [...res, cmd];\n }, []);\n return new Navigation(isAbsolute, numberOfDoubleDots, res);\n}\nclass Position {\n /**\n * @param {?} segmentGroup\n * @param {?} processChildren\n * @param {?} index\n */\n constructor(segmentGroup, processChildren, index) {\n this.segmentGroup = segmentGroup;\n this.processChildren = processChildren;\n this.index = index;\n }\n}\nfunction Position_tsickle_Closure_declarations() {\n /** @type {?} */\n Position.prototype.segmentGroup;\n /** @type {?} */\n Position.prototype.processChildren;\n /** @type {?} */\n Position.prototype.index;\n}\n/**\n * @param {?} nav\n * @param {?} tree\n * @param {?} route\n * @return {?}\n */\nfunction findStartingPosition(nav, tree, route) {\n if (nav.isAbsolute) {\n return new Position(tree.root, true, 0);\n }\n if (route.snapshot._lastPathIndex === -1) {\n return new Position(route.snapshot._urlSegment, true, 0);\n }\n const /** @type {?} */ modifier = isMatrixParams(nav.commands[0]) ? 0 : 1;\n const /** @type {?} */ index = route.snapshot._lastPathIndex + modifier;\n return createPositionApplyingDoubleDots(route.snapshot._urlSegment, index, nav.numberOfDoubleDots);\n}\n/**\n * @param {?} group\n * @param {?} index\n * @param {?} numberOfDoubleDots\n * @return {?}\n */\nfunction createPositionApplyingDoubleDots(group, index, numberOfDoubleDots) {\n let /** @type {?} */ g = group;\n let /** @type {?} */ ci = index;\n let /** @type {?} */ dd = numberOfDoubleDots;\n while (dd > ci) {\n dd -= ci;\n g = /** @type {?} */ ((g.parent));\n if (!g) {\n throw new Error('Invalid number of \\'../\\'');\n }\n ci = g.segments.length;\n }\n return new Position(g, false, ci - dd);\n}\n/**\n * @param {?} command\n * @return {?}\n */\nfunction getPath(command) {\n if (typeof command === 'object' && command != null && command.outlets) {\n return command.outlets[PRIMARY_OUTLET];\n }\n return `${command}`;\n}\n/**\n * @param {?} commands\n * @return {?}\n */\nfunction getOutlets(commands) {\n if (!(typeof commands[0] === 'object'))\n return { [PRIMARY_OUTLET]: commands };\n if (commands[0].outlets === undefined)\n return { [PRIMARY_OUTLET]: commands };\n return commands[0].outlets;\n}\n/**\n * @param {?} segmentGroup\n * @param {?} startIndex\n * @param {?} commands\n * @return {?}\n */\nfunction updateSegmentGroup(segmentGroup, startIndex, commands) {\n if (!segmentGroup) {\n segmentGroup = new UrlSegmentGroup([], {});\n }\n if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {\n return updateSegmentGroupChildren(segmentGroup, startIndex, commands);\n }\n const /** @type {?} */ m = prefixedWith(segmentGroup, startIndex, commands);\n const /** @type {?} */ slicedCommands = commands.slice(m.commandIndex);\n if (m.match && m.pathIndex < segmentGroup.segments.length) {\n const /** @type {?} */ g = new UrlSegmentGroup(segmentGroup.segments.slice(0, m.pathIndex), {});\n g.children[PRIMARY_OUTLET] =\n new UrlSegmentGroup(segmentGroup.segments.slice(m.pathIndex), segmentGroup.children);\n return updateSegmentGroupChildren(g, 0, slicedCommands);\n }\n else if (m.match && slicedCommands.length === 0) {\n return new UrlSegmentGroup(segmentGroup.segments, {});\n }\n else if (m.match && !segmentGroup.hasChildren()) {\n return createNewSegmentGroup(segmentGroup, startIndex, commands);\n }\n else if (m.match) {\n return updateSegmentGroupChildren(segmentGroup, 0, slicedCommands);\n }\n else {\n return createNewSegmentGroup(segmentGroup, startIndex, commands);\n }\n}\n/**\n * @param {?} segmentGroup\n * @param {?} startIndex\n * @param {?} commands\n * @return {?}\n */\nfunction updateSegmentGroupChildren(segmentGroup, startIndex, commands) {\n if (commands.length === 0) {\n return new UrlSegmentGroup(segmentGroup.segments, {});\n }\n else {\n const /** @type {?} */ outlets = getOutlets(commands);\n const /** @type {?} */ children = {};\n forEach(outlets, (commands, outlet) => {\n if (commands !== null) {\n children[outlet] = updateSegmentGroup(segmentGroup.children[outlet], startIndex, commands);\n }\n });\n forEach(segmentGroup.children, (child, childOutlet) => {\n if (outlets[childOutlet] === undefined) {\n children[childOutlet] = child;\n }\n });\n return new UrlSegmentGroup(segmentGroup.segments, children);\n }\n}\n/**\n * @param {?} segmentGroup\n * @param {?} startIndex\n * @param {?} commands\n * @return {?}\n */\nfunction prefixedWith(segmentGroup, startIndex, commands) {\n let /** @type {?} */ currentCommandIndex = 0;\n let /** @type {?} */ currentPathIndex = startIndex;\n const /** @type {?} */ noMatch = { match: false, pathIndex: 0, commandIndex: 0 };\n while (currentPathIndex < segmentGroup.segments.length) {\n if (currentCommandIndex >= commands.length)\n return noMatch;\n const /** @type {?} */ path = segmentGroup.segments[currentPathIndex];\n const /** @type {?} */ curr = getPath(commands[currentCommandIndex]);\n const /** @type {?} */ next = currentCommandIndex < commands.length - 1 ? commands[currentCommandIndex + 1] : null;\n if (currentPathIndex > 0 && curr === undefined)\n break;\n if (curr && next && (typeof next === 'object') && next.outlets === undefined) {\n if (!compare(curr, next, path))\n return noMatch;\n currentCommandIndex += 2;\n }\n else {\n if (!compare(curr, {}, path))\n return noMatch;\n currentCommandIndex++;\n }\n currentPathIndex++;\n }\n return { match: true, pathIndex: currentPathIndex, commandIndex: currentCommandIndex };\n}\n/**\n * @param {?} segmentGroup\n * @param {?} startIndex\n * @param {?} commands\n * @return {?}\n */\nfunction createNewSegmentGroup(segmentGroup, startIndex, commands) {\n const /** @type {?} */ paths = segmentGroup.segments.slice(0, startIndex);\n let /** @type {?} */ i = 0;\n while (i < commands.length) {\n if (typeof commands[i] === 'object' && commands[i].outlets !== undefined) {\n const /** @type {?} */ children = createNewSegmentChildren(commands[i].outlets);\n return new UrlSegmentGroup(paths, children);\n }\n // if we start with an object literal, we need to reuse the path part from the segment\n if (i === 0 && isMatrixParams(commands[0])) {\n const /** @type {?} */ p = segmentGroup.segments[startIndex];\n paths.push(new UrlSegment(p.path, commands[0]));\n i++;\n continue;\n }\n const /** @type {?} */ curr = getPath(commands[i]);\n const /** @type {?} */ next = (i < commands.length - 1) ? commands[i + 1] : null;\n if (curr && next && isMatrixParams(next)) {\n paths.push(new UrlSegment(curr, stringify(next)));\n i += 2;\n }\n else {\n paths.push(new UrlSegment(curr, {}));\n i++;\n }\n }\n return new UrlSegmentGroup(paths, {});\n}\n/**\n * @param {?} outlets\n * @return {?}\n */\nfunction createNewSegmentChildren(outlets) {\n const /** @type {?} */ children = {};\n forEach(outlets, (commands, outlet) => {\n if (commands !== null) {\n children[outlet] = createNewSegmentGroup(new UrlSegmentGroup([], {}), 0, commands);\n }\n });\n return children;\n}\n/**\n * @param {?} params\n * @return {?}\n */\nfunction stringify(params) {\n const /** @type {?} */ res = {};\n forEach(params, (v, k) => res[k] = `${v}`);\n return res;\n}\n/**\n * @param {?} path\n * @param {?} params\n * @param {?} segment\n * @return {?}\n */\nfunction compare(path, params, segment) {\n return path == segment.path && shallowEqual(params, segment.parameters);\n}\n//# sourceMappingURL=create_url_tree.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { from } from 'rxjs/observable/from';\nimport { of } from 'rxjs/observable/of';\nimport { concatMap } from 'rxjs/operator/concatMap';\nimport { every } from 'rxjs/operator/every';\nimport { first } from 'rxjs/operator/first';\nimport { last } from 'rxjs/operator/last';\nimport { map } from 'rxjs/operator/map';\nimport { mergeMap } from 'rxjs/operator/mergeMap';\nimport { reduce } from 'rxjs/operator/reduce';\nimport { ActivationStart, ChildActivationStart } from './events';\nimport { equalParamsAndUrlSegments, inheritedParamsDataResolve } from './router_state';\nimport { andObservables, forEach, shallowEqual, wrapIntoObservable } from './utils/collection';\nimport { nodeChildrenAsMap } from './utils/tree';\nclass CanActivate {\n /**\n * @param {?} path\n */\n constructor(path) {\n this.path = path;\n this.route = this.path[this.path.length - 1];\n }\n}\nfunction CanActivate_tsickle_Closure_declarations() {\n /** @type {?} */\n CanActivate.prototype.route;\n /** @type {?} */\n CanActivate.prototype.path;\n}\nclass CanDeactivate {\n /**\n * @param {?} component\n * @param {?} route\n */\n constructor(component, route) {\n this.component = component;\n this.route = route;\n }\n}\nfunction CanDeactivate_tsickle_Closure_declarations() {\n /** @type {?} */\n CanDeactivate.prototype.component;\n /** @type {?} */\n CanDeactivate.prototype.route;\n}\n/**\n * This class bundles the actions involved in preactivation of a route.\n */\nexport class PreActivation {\n /**\n * @param {?} future\n * @param {?} curr\n * @param {?} moduleInjector\n * @param {?=} forwardEvent\n */\n constructor(future, curr, moduleInjector, forwardEvent) {\n this.future = future;\n this.curr = curr;\n this.moduleInjector = moduleInjector;\n this.forwardEvent = forwardEvent;\n this.canActivateChecks = [];\n this.canDeactivateChecks = [];\n }\n /**\n * @param {?} parentContexts\n * @return {?}\n */\n initialize(parentContexts) {\n const /** @type {?} */ futureRoot = this.future._root;\n const /** @type {?} */ currRoot = this.curr ? this.curr._root : null;\n this.setupChildRouteGuards(futureRoot, currRoot, parentContexts, [futureRoot.value]);\n }\n /**\n * @return {?}\n */\n checkGuards() {\n if (!this.isDeactivating() && !this.isActivating()) {\n return of(true);\n }\n const /** @type {?} */ canDeactivate$ = this.runCanDeactivateChecks();\n return mergeMap.call(canDeactivate$, (canDeactivate) => canDeactivate ? this.runCanActivateChecks() : of(false));\n }\n /**\n * @param {?} paramsInheritanceStrategy\n * @return {?}\n */\n resolveData(paramsInheritanceStrategy) {\n if (!this.isActivating())\n return of(null);\n const /** @type {?} */ checks$ = from(this.canActivateChecks);\n const /** @type {?} */ runningChecks$ = concatMap.call(checks$, (check) => this.runResolve(check.route, paramsInheritanceStrategy));\n return reduce.call(runningChecks$, (_, __) => _);\n }\n /**\n * @return {?}\n */\n isDeactivating() { return this.canDeactivateChecks.length !== 0; }\n /**\n * @return {?}\n */\n isActivating() { return this.canActivateChecks.length !== 0; }\n /**\n * Iterates over child routes and calls recursive `setupRouteGuards` to get `this` instance in\n * proper state to run `checkGuards()` method.\n * @param {?} futureNode\n * @param {?} currNode\n * @param {?} contexts\n * @param {?} futurePath\n * @return {?}\n */\n setupChildRouteGuards(futureNode, currNode, contexts, futurePath) {\n const /** @type {?} */ prevChildren = nodeChildrenAsMap(currNode);\n // Process the children of the future route\n futureNode.children.forEach(c => {\n this.setupRouteGuards(c, prevChildren[c.value.outlet], contexts, futurePath.concat([c.value]));\n delete prevChildren[c.value.outlet];\n });\n // Process any children left from the current route (not active for the future route)\n forEach(prevChildren, (v, k) => this.deactivateRouteAndItsChildren(v, /** @type {?} */ ((contexts)).getContext(k)));\n }\n /**\n * Iterates over child routes and calls recursive `setupRouteGuards` to get `this` instance in\n * proper state to run `checkGuards()` method.\n * @param {?} futureNode\n * @param {?} currNode\n * @param {?} parentContexts\n * @param {?} futurePath\n * @return {?}\n */\n setupRouteGuards(futureNode, currNode, parentContexts, futurePath) {\n const /** @type {?} */ future = futureNode.value;\n const /** @type {?} */ curr = currNode ? currNode.value : null;\n const /** @type {?} */ context = parentContexts ? parentContexts.getContext(futureNode.value.outlet) : null;\n // reusing the node\n if (curr && future.routeConfig === curr.routeConfig) {\n const /** @type {?} */ shouldRunGuardsAndResolvers = this.shouldRunGuardsAndResolvers(curr, future, /** @type {?} */ ((future.routeConfig)).runGuardsAndResolvers);\n if (shouldRunGuardsAndResolvers) {\n this.canActivateChecks.push(new CanActivate(futurePath));\n }\n else {\n // we need to set the data\n future.data = curr.data;\n future._resolvedData = curr._resolvedData;\n }\n // If we have a component, we need to go through an outlet.\n if (future.component) {\n this.setupChildRouteGuards(futureNode, currNode, context ? context.children : null, futurePath);\n // if we have a componentless route, we recurse but keep the same outlet map.\n }\n else {\n this.setupChildRouteGuards(futureNode, currNode, parentContexts, futurePath);\n }\n if (shouldRunGuardsAndResolvers) {\n const /** @type {?} */ outlet = /** @type {?} */ ((/** @type {?} */ ((context)).outlet));\n this.canDeactivateChecks.push(new CanDeactivate(outlet.component, curr));\n }\n }\n else {\n if (curr) {\n this.deactivateRouteAndItsChildren(currNode, context);\n }\n this.canActivateChecks.push(new CanActivate(futurePath));\n // If we have a component, we need to go through an outlet.\n if (future.component) {\n this.setupChildRouteGuards(futureNode, null, context ? context.children : null, futurePath);\n // if we have a componentless route, we recurse but keep the same outlet map.\n }\n else {\n this.setupChildRouteGuards(futureNode, null, parentContexts, futurePath);\n }\n }\n }\n /**\n * @param {?} curr\n * @param {?} future\n * @param {?} mode\n * @return {?}\n */\n shouldRunGuardsAndResolvers(curr, future, mode) {\n switch (mode) {\n case 'always':\n return true;\n case 'paramsOrQueryParamsChange':\n return !equalParamsAndUrlSegments(curr, future) ||\n !shallowEqual(curr.queryParams, future.queryParams);\n case 'paramsChange':\n default:\n return !equalParamsAndUrlSegments(curr, future);\n }\n }\n /**\n * @param {?} route\n * @param {?} context\n * @return {?}\n */\n deactivateRouteAndItsChildren(route, context) {\n const /** @type {?} */ children = nodeChildrenAsMap(route);\n const /** @type {?} */ r = route.value;\n forEach(children, (node, childName) => {\n if (!r.component) {\n this.deactivateRouteAndItsChildren(node, context);\n }\n else if (context) {\n this.deactivateRouteAndItsChildren(node, context.children.getContext(childName));\n }\n else {\n this.deactivateRouteAndItsChildren(node, null);\n }\n });\n if (!r.component) {\n this.canDeactivateChecks.push(new CanDeactivate(null, r));\n }\n else if (context && context.outlet && context.outlet.isActivated) {\n this.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, r));\n }\n else {\n this.canDeactivateChecks.push(new CanDeactivate(null, r));\n }\n }\n /**\n * @return {?}\n */\n runCanDeactivateChecks() {\n const /** @type {?} */ checks$ = from(this.canDeactivateChecks);\n const /** @type {?} */ runningChecks$ = mergeMap.call(checks$, (check) => this.runCanDeactivate(check.component, check.route));\n return every.call(runningChecks$, (result) => result === true);\n }\n /**\n * @return {?}\n */\n runCanActivateChecks() {\n const /** @type {?} */ checks$ = from(this.canActivateChecks);\n const /** @type {?} */ runningChecks$ = concatMap.call(checks$, (check) => andObservables(from([\n this.fireChildActivationStart(check.route.parent), this.fireActivationStart(check.route),\n this.runCanActivateChild(check.path), this.runCanActivate(check.route)\n ])));\n return every.call(runningChecks$, (result) => result === true);\n // this.fireChildActivationStart(check.path),\n }\n /**\n * This should fire off `ActivationStart` events for each route being activated at this\n * level.\n * In other words, if you're activating `a` and `b` below, `path` will contain the\n * `ActivatedRouteSnapshot`s for both and we will fire `ActivationStart` for both. Always\n * return\n * `true` so checks continue to run.\n * @param {?} snapshot\n * @return {?}\n */\n fireActivationStart(snapshot) {\n if (snapshot !== null && this.forwardEvent) {\n this.forwardEvent(new ActivationStart(snapshot));\n }\n return of(true);\n }\n /**\n * This should fire off `ChildActivationStart` events for each route being activated at this\n * level.\n * In other words, if you're activating `a` and `b` below, `path` will contain the\n * `ActivatedRouteSnapshot`s for both and we will fire `ChildActivationStart` for both. Always\n * return\n * `true` so checks continue to run.\n * @param {?} snapshot\n * @return {?}\n */\n fireChildActivationStart(snapshot) {\n if (snapshot !== null && this.forwardEvent) {\n this.forwardEvent(new ChildActivationStart(snapshot));\n }\n return of(true);\n }\n /**\n * @param {?} future\n * @return {?}\n */\n runCanActivate(future) {\n const /** @type {?} */ canActivate = future.routeConfig ? future.routeConfig.canActivate : null;\n if (!canActivate || canActivate.length === 0)\n return of(true);\n const /** @type {?} */ obs = map.call(from(canActivate), (c) => {\n const /** @type {?} */ guard = this.getToken(c, future);\n let /** @type {?} */ observable;\n if (guard.canActivate) {\n observable = wrapIntoObservable(guard.canActivate(future, this.future));\n }\n else {\n observable = wrapIntoObservable(guard(future, this.future));\n }\n return first.call(observable);\n });\n return andObservables(obs);\n }\n /**\n * @param {?} path\n * @return {?}\n */\n runCanActivateChild(path) {\n const /** @type {?} */ future = path[path.length - 1];\n const /** @type {?} */ canActivateChildGuards = path.slice(0, path.length - 1)\n .reverse()\n .map(p => this.extractCanActivateChild(p))\n .filter(_ => _ !== null);\n return andObservables(map.call(from(canActivateChildGuards), (d) => {\n const /** @type {?} */ obs = map.call(from(d.guards), (c) => {\n const /** @type {?} */ guard = this.getToken(c, d.node);\n let /** @type {?} */ observable;\n if (guard.canActivateChild) {\n observable = wrapIntoObservable(guard.canActivateChild(future, this.future));\n }\n else {\n observable = wrapIntoObservable(guard(future, this.future));\n }\n return first.call(observable);\n });\n return andObservables(obs);\n }));\n }\n /**\n * @param {?} p\n * @return {?}\n */\n extractCanActivateChild(p) {\n const /** @type {?} */ canActivateChild = p.routeConfig ? p.routeConfig.canActivateChild : null;\n if (!canActivateChild || canActivateChild.length === 0)\n return null;\n return { node: p, guards: canActivateChild };\n }\n /**\n * @param {?} component\n * @param {?} curr\n * @return {?}\n */\n runCanDeactivate(component, curr) {\n const /** @type {?} */ canDeactivate = curr && curr.routeConfig ? curr.routeConfig.canDeactivate : null;\n if (!canDeactivate || canDeactivate.length === 0)\n return of(true);\n const /** @type {?} */ canDeactivate$ = mergeMap.call(from(canDeactivate), (c) => {\n const /** @type {?} */ guard = this.getToken(c, curr);\n let /** @type {?} */ observable;\n if (guard.canDeactivate) {\n observable =\n wrapIntoObservable(guard.canDeactivate(component, curr, this.curr, this.future));\n }\n else {\n observable = wrapIntoObservable(guard(component, curr, this.curr, this.future));\n }\n return first.call(observable);\n });\n return every.call(canDeactivate$, (result) => result === true);\n }\n /**\n * @param {?} future\n * @param {?} paramsInheritanceStrategy\n * @return {?}\n */\n runResolve(future, paramsInheritanceStrategy) {\n const /** @type {?} */ resolve = future._resolve;\n return map.call(this.resolveNode(resolve, future), (resolvedData) => {\n future._resolvedData = resolvedData;\n future.data = Object.assign({}, future.data, inheritedParamsDataResolve(future, paramsInheritanceStrategy).resolve);\n return null;\n });\n }\n /**\n * @param {?} resolve\n * @param {?} future\n * @return {?}\n */\n resolveNode(resolve, future) {\n const /** @type {?} */ keys = Object.keys(resolve);\n if (keys.length === 0) {\n return of({});\n }\n if (keys.length === 1) {\n const /** @type {?} */ key = keys[0];\n return map.call(this.getResolver(resolve[key], future), (value) => { return { [key]: value }; });\n }\n const /** @type {?} */ data = {};\n const /** @type {?} */ runningResolvers$ = mergeMap.call(from(keys), (key) => {\n return map.call(this.getResolver(resolve[key], future), (value) => {\n data[key] = value;\n return value;\n });\n });\n return map.call(last.call(runningResolvers$), () => data);\n }\n /**\n * @param {?} injectionToken\n * @param {?} future\n * @return {?}\n */\n getResolver(injectionToken, future) {\n const /** @type {?} */ resolver = this.getToken(injectionToken, future);\n return resolver.resolve ? wrapIntoObservable(resolver.resolve(future, this.future)) :\n wrapIntoObservable(resolver(future, this.future));\n }\n /**\n * @param {?} token\n * @param {?} snapshot\n * @return {?}\n */\n getToken(token, snapshot) {\n const /** @type {?} */ config = closestLoadedConfig(snapshot);\n const /** @type {?} */ injector = config ? config.module.injector : this.moduleInjector;\n return injector.get(token);\n }\n}\nfunction PreActivation_tsickle_Closure_declarations() {\n /** @type {?} */\n PreActivation.prototype.canActivateChecks;\n /** @type {?} */\n PreActivation.prototype.canDeactivateChecks;\n /** @type {?} */\n PreActivation.prototype.future;\n /** @type {?} */\n PreActivation.prototype.curr;\n /** @type {?} */\n PreActivation.prototype.moduleInjector;\n /** @type {?} */\n PreActivation.prototype.forwardEvent;\n}\n/**\n * @param {?} snapshot\n * @return {?}\n */\nfunction closestLoadedConfig(snapshot) {\n if (!snapshot)\n return null;\n for (let /** @type {?} */ s = snapshot.parent; s; s = s.parent) {\n const /** @type {?} */ route = s.routeConfig;\n if (route && route._loadedConfig)\n return route._loadedConfig;\n }\n return null;\n}\n//# sourceMappingURL=pre_activation.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Observable } from 'rxjs/Observable';\nimport { of } from 'rxjs/observable/of';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, inheritedParamsDataResolve } from './router_state';\nimport { PRIMARY_OUTLET, defaultUrlMatcher } from './shared';\nimport { UrlSegmentGroup, mapChildrenIntoArray } from './url_tree';\nimport { forEach, last } from './utils/collection';\nimport { TreeNode } from './utils/tree';\nclass NoMatch {\n}\n/**\n * @param {?} rootComponentType\n * @param {?} config\n * @param {?} urlTree\n * @param {?} url\n * @param {?=} paramsInheritanceStrategy\n * @return {?}\n */\nexport function recognize(rootComponentType, config, urlTree, url, paramsInheritanceStrategy = 'emptyOnly') {\n return new Recognizer(rootComponentType, config, urlTree, url, paramsInheritanceStrategy)\n .recognize();\n}\nclass Recognizer {\n /**\n * @param {?} rootComponentType\n * @param {?} config\n * @param {?} urlTree\n * @param {?} url\n * @param {?} paramsInheritanceStrategy\n */\n constructor(rootComponentType, config, urlTree, url, paramsInheritanceStrategy) {\n this.rootComponentType = rootComponentType;\n this.config = config;\n this.urlTree = urlTree;\n this.url = url;\n this.paramsInheritanceStrategy = paramsInheritanceStrategy;\n }\n /**\n * @return {?}\n */\n recognize() {\n try {\n const /** @type {?} */ rootSegmentGroup = split(this.urlTree.root, [], [], this.config).segmentGroup;\n const /** @type {?} */ children = this.processSegmentGroup(this.config, rootSegmentGroup, PRIMARY_OUTLET);\n const /** @type {?} */ root = new ActivatedRouteSnapshot([], Object.freeze({}), Object.freeze(this.urlTree.queryParams), /** @type {?} */ ((this.urlTree.fragment)), {}, PRIMARY_OUTLET, this.rootComponentType, null, this.urlTree.root, -1, {});\n const /** @type {?} */ rootNode = new TreeNode(root, children);\n const /** @type {?} */ routeState = new RouterStateSnapshot(this.url, rootNode);\n this.inheritParamsAndData(routeState._root);\n return of(routeState);\n }\n catch (/** @type {?} */ e) {\n return new Observable((obs) => obs.error(e));\n }\n }\n /**\n * @param {?} routeNode\n * @return {?}\n */\n inheritParamsAndData(routeNode) {\n const /** @type {?} */ route = routeNode.value;\n const /** @type {?} */ i = inheritedParamsDataResolve(route, this.paramsInheritanceStrategy);\n route.params = Object.freeze(i.params);\n route.data = Object.freeze(i.data);\n routeNode.children.forEach(n => this.inheritParamsAndData(n));\n }\n /**\n * @param {?} config\n * @param {?} segmentGroup\n * @param {?} outlet\n * @return {?}\n */\n processSegmentGroup(config, segmentGroup, outlet) {\n if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {\n return this.processChildren(config, segmentGroup);\n }\n return this.processSegment(config, segmentGroup, segmentGroup.segments, outlet);\n }\n /**\n * @param {?} config\n * @param {?} segmentGroup\n * @return {?}\n */\n processChildren(config, segmentGroup) {\n const /** @type {?} */ children = mapChildrenIntoArray(segmentGroup, (child, childOutlet) => this.processSegmentGroup(config, child, childOutlet));\n checkOutletNameUniqueness(children);\n sortActivatedRouteSnapshots(children);\n return children;\n }\n /**\n * @param {?} config\n * @param {?} segmentGroup\n * @param {?} segments\n * @param {?} outlet\n * @return {?}\n */\n processSegment(config, segmentGroup, segments, outlet) {\n for (const /** @type {?} */ r of config) {\n try {\n return this.processSegmentAgainstRoute(r, segmentGroup, segments, outlet);\n }\n catch (/** @type {?} */ e) {\n if (!(e instanceof NoMatch))\n throw e;\n }\n }\n if (this.noLeftoversInUrl(segmentGroup, segments, outlet)) {\n return [];\n }\n throw new NoMatch();\n }\n /**\n * @param {?} segmentGroup\n * @param {?} segments\n * @param {?} outlet\n * @return {?}\n */\n noLeftoversInUrl(segmentGroup, segments, outlet) {\n return segments.length === 0 && !segmentGroup.children[outlet];\n }\n /**\n * @param {?} route\n * @param {?} rawSegment\n * @param {?} segments\n * @param {?} outlet\n * @return {?}\n */\n processSegmentAgainstRoute(route, rawSegment, segments, outlet) {\n if (route.redirectTo)\n throw new NoMatch();\n if ((route.outlet || PRIMARY_OUTLET) !== outlet)\n throw new NoMatch();\n let /** @type {?} */ snapshot;\n let /** @type {?} */ consumedSegments = [];\n let /** @type {?} */ rawSlicedSegments = [];\n if (route.path === '**') {\n const /** @type {?} */ params = segments.length > 0 ? /** @type {?} */ ((last(segments))).parameters : {};\n snapshot = new ActivatedRouteSnapshot(segments, params, Object.freeze(this.urlTree.queryParams), /** @type {?} */ ((this.urlTree.fragment)), getData(route), outlet, /** @type {?} */ ((route.component)), route, getSourceSegmentGroup(rawSegment), getPathIndexShift(rawSegment) + segments.length, getResolve(route));\n }\n else {\n const /** @type {?} */ result = match(rawSegment, route, segments);\n consumedSegments = result.consumedSegments;\n rawSlicedSegments = segments.slice(result.lastChild);\n snapshot = new ActivatedRouteSnapshot(consumedSegments, result.parameters, Object.freeze(this.urlTree.queryParams), /** @type {?} */ ((this.urlTree.fragment)), getData(route), outlet, /** @type {?} */ ((route.component)), route, getSourceSegmentGroup(rawSegment), getPathIndexShift(rawSegment) + consumedSegments.length, getResolve(route));\n }\n const /** @type {?} */ childConfig = getChildConfig(route);\n const { segmentGroup, slicedSegments } = split(rawSegment, consumedSegments, rawSlicedSegments, childConfig);\n if (slicedSegments.length === 0 && segmentGroup.hasChildren()) {\n const /** @type {?} */ children = this.processChildren(childConfig, segmentGroup);\n return [new TreeNode(snapshot, children)];\n }\n if (childConfig.length === 0 && slicedSegments.length === 0) {\n return [new TreeNode(snapshot, [])];\n }\n const /** @type {?} */ children = this.processSegment(childConfig, segmentGroup, slicedSegments, PRIMARY_OUTLET);\n return [new TreeNode(snapshot, children)];\n }\n}\nfunction Recognizer_tsickle_Closure_declarations() {\n /** @type {?} */\n Recognizer.prototype.rootComponentType;\n /** @type {?} */\n Recognizer.prototype.config;\n /** @type {?} */\n Recognizer.prototype.urlTree;\n /** @type {?} */\n Recognizer.prototype.url;\n /** @type {?} */\n Recognizer.prototype.paramsInheritanceStrategy;\n}\n/**\n * @param {?} nodes\n * @return {?}\n */\nfunction sortActivatedRouteSnapshots(nodes) {\n nodes.sort((a, b) => {\n if (a.value.outlet === PRIMARY_OUTLET)\n return -1;\n if (b.value.outlet === PRIMARY_OUTLET)\n return 1;\n return a.value.outlet.localeCompare(b.value.outlet);\n });\n}\n/**\n * @param {?} route\n * @return {?}\n */\nfunction getChildConfig(route) {\n if (route.children) {\n return route.children;\n }\n if (route.loadChildren) {\n return /** @type {?} */ ((route._loadedConfig)).routes;\n }\n return [];\n}\n/**\n * @record\n */\nfunction MatchResult() { }\nfunction MatchResult_tsickle_Closure_declarations() {\n /** @type {?} */\n MatchResult.prototype.consumedSegments;\n /** @type {?} */\n MatchResult.prototype.lastChild;\n /** @type {?} */\n MatchResult.prototype.parameters;\n}\n/**\n * @param {?} segmentGroup\n * @param {?} route\n * @param {?} segments\n * @return {?}\n */\nfunction match(segmentGroup, route, segments) {\n if (route.path === '') {\n if (route.pathMatch === 'full' && (segmentGroup.hasChildren() || segments.length > 0)) {\n throw new NoMatch();\n }\n return { consumedSegments: [], lastChild: 0, parameters: {} };\n }\n const /** @type {?} */ matcher = route.matcher || defaultUrlMatcher;\n const /** @type {?} */ res = matcher(segments, segmentGroup, route);\n if (!res)\n throw new NoMatch();\n const /** @type {?} */ posParams = {};\n forEach(/** @type {?} */ ((res.posParams)), (v, k) => { posParams[k] = v.path; });\n const /** @type {?} */ parameters = res.consumed.length > 0 ? Object.assign({}, posParams, res.consumed[res.consumed.length - 1].parameters) :\n posParams;\n return { consumedSegments: res.consumed, lastChild: res.consumed.length, parameters };\n}\n/**\n * @param {?} nodes\n * @return {?}\n */\nfunction checkOutletNameUniqueness(nodes) {\n const /** @type {?} */ names = {};\n nodes.forEach(n => {\n const /** @type {?} */ routeWithSameOutletName = names[n.value.outlet];\n if (routeWithSameOutletName) {\n const /** @type {?} */ p = routeWithSameOutletName.url.map(s => s.toString()).join('/');\n const /** @type {?} */ c = n.value.url.map(s => s.toString()).join('/');\n throw new Error(`Two segments cannot have the same outlet name: '${p}' and '${c}'.`);\n }\n names[n.value.outlet] = n.value;\n });\n}\n/**\n * @param {?} segmentGroup\n * @return {?}\n */\nfunction getSourceSegmentGroup(segmentGroup) {\n let /** @type {?} */ s = segmentGroup;\n while (s._sourceSegment) {\n s = s._sourceSegment;\n }\n return s;\n}\n/**\n * @param {?} segmentGroup\n * @return {?}\n */\nfunction getPathIndexShift(segmentGroup) {\n let /** @type {?} */ s = segmentGroup;\n let /** @type {?} */ res = (s._segmentIndexShift ? s._segmentIndexShift : 0);\n while (s._sourceSegment) {\n s = s._sourceSegment;\n res += (s._segmentIndexShift ? s._segmentIndexShift : 0);\n }\n return res - 1;\n}\n/**\n * @param {?} segmentGroup\n * @param {?} consumedSegments\n * @param {?} slicedSegments\n * @param {?} config\n * @return {?}\n */\nfunction split(segmentGroup, consumedSegments, slicedSegments, config) {\n if (slicedSegments.length > 0 &&\n containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, config)) {\n const /** @type {?} */ s = new UrlSegmentGroup(consumedSegments, createChildrenForEmptyPaths(segmentGroup, consumedSegments, config, new UrlSegmentGroup(slicedSegments, segmentGroup.children)));\n s._sourceSegment = segmentGroup;\n s._segmentIndexShift = consumedSegments.length;\n return { segmentGroup: s, slicedSegments: [] };\n }\n if (slicedSegments.length === 0 &&\n containsEmptyPathMatches(segmentGroup, slicedSegments, config)) {\n const /** @type {?} */ s = new UrlSegmentGroup(segmentGroup.segments, addEmptyPathsToChildrenIfNeeded(segmentGroup, slicedSegments, config, segmentGroup.children));\n s._sourceSegment = segmentGroup;\n s._segmentIndexShift = consumedSegments.length;\n return { segmentGroup: s, slicedSegments };\n }\n const /** @type {?} */ s = new UrlSegmentGroup(segmentGroup.segments, segmentGroup.children);\n s._sourceSegment = segmentGroup;\n s._segmentIndexShift = consumedSegments.length;\n return { segmentGroup: s, slicedSegments };\n}\n/**\n * @param {?} segmentGroup\n * @param {?} slicedSegments\n * @param {?} routes\n * @param {?} children\n * @return {?}\n */\nfunction addEmptyPathsToChildrenIfNeeded(segmentGroup, slicedSegments, routes, children) {\n const /** @type {?} */ res = {};\n for (const /** @type {?} */ r of routes) {\n if (emptyPathMatch(segmentGroup, slicedSegments, r) && !children[getOutlet(r)]) {\n const /** @type {?} */ s = new UrlSegmentGroup([], {});\n s._sourceSegment = segmentGroup;\n s._segmentIndexShift = segmentGroup.segments.length;\n res[getOutlet(r)] = s;\n }\n }\n return Object.assign({}, children, res);\n}\n/**\n * @param {?} segmentGroup\n * @param {?} consumedSegments\n * @param {?} routes\n * @param {?} primarySegment\n * @return {?}\n */\nfunction createChildrenForEmptyPaths(segmentGroup, consumedSegments, routes, primarySegment) {\n const /** @type {?} */ res = {};\n res[PRIMARY_OUTLET] = primarySegment;\n primarySegment._sourceSegment = segmentGroup;\n primarySegment._segmentIndexShift = consumedSegments.length;\n for (const /** @type {?} */ r of routes) {\n if (r.path === '' && getOutlet(r) !== PRIMARY_OUTLET) {\n const /** @type {?} */ s = new UrlSegmentGroup([], {});\n s._sourceSegment = segmentGroup;\n s._segmentIndexShift = consumedSegments.length;\n res[getOutlet(r)] = s;\n }\n }\n return res;\n}\n/**\n * @param {?} segmentGroup\n * @param {?} slicedSegments\n * @param {?} routes\n * @return {?}\n */\nfunction containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, routes) {\n return routes.some(r => emptyPathMatch(segmentGroup, slicedSegments, r) && getOutlet(r) !== PRIMARY_OUTLET);\n}\n/**\n * @param {?} segmentGroup\n * @param {?} slicedSegments\n * @param {?} routes\n * @return {?}\n */\nfunction containsEmptyPathMatches(segmentGroup, slicedSegments, routes) {\n return routes.some(r => emptyPathMatch(segmentGroup, slicedSegments, r));\n}\n/**\n * @param {?} segmentGroup\n * @param {?} slicedSegments\n * @param {?} r\n * @return {?}\n */\nfunction emptyPathMatch(segmentGroup, slicedSegments, r) {\n if ((segmentGroup.hasChildren() || slicedSegments.length > 0) && r.pathMatch === 'full') {\n return false;\n }\n return r.path === '' && r.redirectTo === undefined;\n}\n/**\n * @param {?} route\n * @return {?}\n */\nfunction getOutlet(route) {\n return route.outlet || PRIMARY_OUTLET;\n}\n/**\n * @param {?} route\n * @return {?}\n */\nfunction getData(route) {\n return route.data || {};\n}\n/**\n * @param {?} route\n * @return {?}\n */\nfunction getResolve(route) {\n return route.resolve || {};\n}\n//# sourceMappingURL=recognize.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * \\@whatItDoes Provides a way to customize when activated routes get reused.\n *\n * \\@experimental\n * @abstract\n */\nexport class RouteReuseStrategy {\n}\nfunction RouteReuseStrategy_tsickle_Closure_declarations() {\n /**\n * Determines if this route (and its subtree) should be detached to be reused later\n * @abstract\n * @param {?} route\n * @return {?}\n */\n RouteReuseStrategy.prototype.shouldDetach = function (route) { };\n /**\n * Stores the detached route.\n *\n * Storing a `null` value should erase the previously stored value.\n * @abstract\n * @param {?} route\n * @param {?} handle\n * @return {?}\n */\n RouteReuseStrategy.prototype.store = function (route, handle) { };\n /**\n * Determines if this route (and its subtree) should be reattached\n * @abstract\n * @param {?} route\n * @return {?}\n */\n RouteReuseStrategy.prototype.shouldAttach = function (route) { };\n /**\n * Retrieves the previously stored route\n * @abstract\n * @param {?} route\n * @return {?}\n */\n RouteReuseStrategy.prototype.retrieve = function (route) { };\n /**\n * Determines if a route should be reused\n * @abstract\n * @param {?} future\n * @param {?} curr\n * @return {?}\n */\n RouteReuseStrategy.prototype.shouldReuseRoute = function (future, curr) { };\n}\n/**\n * Does not detach any subtrees. Reuses routes as long as their route config is the same.\n */\nexport class DefaultRouteReuseStrategy {\n /**\n * @param {?} route\n * @return {?}\n */\n shouldDetach(route) { return false; }\n /**\n * @param {?} route\n * @param {?} detachedTree\n * @return {?}\n */\n store(route, detachedTree) { }\n /**\n * @param {?} route\n * @return {?}\n */\n shouldAttach(route) { return false; }\n /**\n * @param {?} route\n * @return {?}\n */\n retrieve(route) { return null; }\n /**\n * @param {?} future\n * @param {?} curr\n * @return {?}\n */\n shouldReuseRoute(future, curr) {\n return future.routeConfig === curr.routeConfig;\n }\n}\n//# sourceMappingURL=route_reuse_strategy.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { InjectionToken, NgModuleFactory } from '@angular/core';\nimport { fromPromise } from 'rxjs/observable/fromPromise';\nimport { of } from 'rxjs/observable/of';\nimport { map } from 'rxjs/operator/map';\nimport { mergeMap } from 'rxjs/operator/mergeMap';\nimport { LoadedRouterConfig, copyConfig } from './config';\nimport { flatten, wrapIntoObservable } from './utils/collection';\n/**\n * \\@docsNotRequired\n * \\@experimental\n */\nexport const /** @type {?} */ ROUTES = new InjectionToken('ROUTES');\nexport class RouterConfigLoader {\n /**\n * @param {?} loader\n * @param {?} compiler\n * @param {?=} onLoadStartListener\n * @param {?=} onLoadEndListener\n */\n constructor(loader, compiler, onLoadStartListener, onLoadEndListener) {\n this.loader = loader;\n this.compiler = compiler;\n this.onLoadStartListener = onLoadStartListener;\n this.onLoadEndListener = onLoadEndListener;\n }\n /**\n * @param {?} parentInjector\n * @param {?} route\n * @return {?}\n */\n load(parentInjector, route) {\n if (this.onLoadStartListener) {\n this.onLoadStartListener(route);\n }\n const /** @type {?} */ moduleFactory$ = this.loadModuleFactory(/** @type {?} */ ((route.loadChildren)));\n return map.call(moduleFactory$, (factory) => {\n if (this.onLoadEndListener) {\n this.onLoadEndListener(route);\n }\n const /** @type {?} */ module = factory.create(parentInjector);\n return new LoadedRouterConfig(flatten(module.injector.get(ROUTES)).map(copyConfig), module);\n });\n }\n /**\n * @param {?} loadChildren\n * @return {?}\n */\n loadModuleFactory(loadChildren) {\n if (typeof loadChildren === 'string') {\n return fromPromise(this.loader.load(loadChildren));\n }\n else {\n return mergeMap.call(wrapIntoObservable(loadChildren()), (t) => {\n if (t instanceof NgModuleFactory) {\n return of(t);\n }\n else {\n return fromPromise(this.compiler.compileModuleAsync(t));\n }\n });\n }\n }\n}\nfunction RouterConfigLoader_tsickle_Closure_declarations() {\n /** @type {?} */\n RouterConfigLoader.prototype.loader;\n /** @type {?} */\n RouterConfigLoader.prototype.compiler;\n /** @type {?} */\n RouterConfigLoader.prototype.onLoadStartListener;\n /** @type {?} */\n RouterConfigLoader.prototype.onLoadEndListener;\n}\n//# sourceMappingURL=router_config_loader.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * \\@whatItDoes Provides a way to migrate AngularJS applications to Angular.\n *\n * \\@experimental\n * @abstract\n */\nexport class UrlHandlingStrategy {\n}\nfunction UrlHandlingStrategy_tsickle_Closure_declarations() {\n /**\n * Tells the router if this URL should be processed.\n *\n * When it returns true, the router will execute the regular navigation.\n * When it returns false, the router will set the router state to an empty state.\n * As a result, all the active components will be destroyed.\n *\n * @abstract\n * @param {?} url\n * @return {?}\n */\n UrlHandlingStrategy.prototype.shouldProcessUrl = function (url) { };\n /**\n * Extracts the part of the URL that should be handled by the router.\n * The rest of the URL will remain untouched.\n * @abstract\n * @param {?} url\n * @return {?}\n */\n UrlHandlingStrategy.prototype.extract = function (url) { };\n /**\n * Merges the URL fragment with the rest of the URL.\n * @abstract\n * @param {?} newUrlPart\n * @param {?} rawUrl\n * @return {?}\n */\n UrlHandlingStrategy.prototype.merge = function (newUrlPart, rawUrl) { };\n}\n/**\n * \\@experimental\n */\nexport class DefaultUrlHandlingStrategy {\n /**\n * @param {?} url\n * @return {?}\n */\n shouldProcessUrl(url) { return true; }\n /**\n * @param {?} url\n * @return {?}\n */\n extract(url) { return url; }\n /**\n * @param {?} newUrlPart\n * @param {?} wholeUrl\n * @return {?}\n */\n merge(newUrlPart, wholeUrl) { return newUrlPart; }\n}\n//# sourceMappingURL=url_handling_strategy.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { NgModuleRef, isDevMode } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\nimport { Subject } from 'rxjs/Subject';\nimport { of } from 'rxjs/observable/of';\nimport { concatMap } from 'rxjs/operator/concatMap';\nimport { map } from 'rxjs/operator/map';\nimport { mergeMap } from 'rxjs/operator/mergeMap';\nimport { applyRedirects } from './apply_redirects';\nimport { copyConfig, validateConfig } from './config';\nimport { createRouterState } from './create_router_state';\nimport { createUrlTree } from './create_url_tree';\nimport { ActivationEnd, ChildActivationEnd, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RoutesRecognized } from './events';\nimport { PreActivation } from './pre_activation';\nimport { recognize } from './recognize';\nimport { DefaultRouteReuseStrategy } from './route_reuse_strategy';\nimport { RouterConfigLoader } from './router_config_loader';\nimport { advanceActivatedRoute, createEmptyState } from './router_state';\nimport { isNavigationCancelingError } from './shared';\nimport { DefaultUrlHandlingStrategy } from './url_handling_strategy';\nimport { UrlTree, containsTree, createEmptyUrlTree } from './url_tree';\nimport { forEach } from './utils/collection';\nimport { nodeChildrenAsMap } from './utils/tree';\n/**\n * \\@whatItDoes Represents the extra options used during navigation.\n *\n * \\@stable\n * @record\n */\nexport function NavigationExtras() { }\nfunction NavigationExtras_tsickle_Closure_declarations() {\n /**\n * Enables relative navigation from the current ActivatedRoute.\n *\n * Configuration:\n *\n * ```\n * [{\n * path: 'parent',\n * component: ParentComponent,\n * children: [{\n * path: 'list',\n * component: ListComponent\n * },{\n * path: 'child',\n * component: ChildComponent\n * }]\n * }]\n * ```\n *\n * Navigate to list route from child route:\n *\n * ```\n * \\@Component({...})\n * class ChildComponent {\n * constructor(private router: Router, private route: ActivatedRoute) {}\n *\n * go() {\n * this.router.navigate(['../list'], { relativeTo: this.route });\n * }\n * }\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.relativeTo;\n /**\n * Sets query parameters to the URL.\n *\n * ```\n * // Navigate to /results?page=1\n * this.router.navigate(['/results'], { queryParams: { page: 1 } });\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.queryParams;\n /**\n * Sets the hash fragment for the URL.\n *\n * ```\n * // Navigate to /results#top\n * this.router.navigate(['/results'], { fragment: 'top' });\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.fragment;\n /**\n * Preserves the query parameters for the next navigation.\n *\n * deprecated, use `queryParamsHandling` instead\n *\n * ```\n * // Preserve query params from /results?page=1 to /view?page=1\n * this.router.navigate(['/view'], { preserveQueryParams: true });\n * ```\n *\n * @deprecated since v4\n * @type {?|undefined}\n */\n NavigationExtras.prototype.preserveQueryParams;\n /**\n * config strategy to handle the query parameters for the next navigation.\n *\n * ```\n * // from /results?page=1 to /view?page=1&page=2\n * this.router.navigate(['/view'], { queryParams: { page: 2 }, queryParamsHandling: \"merge\" });\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.queryParamsHandling;\n /**\n * Preserves the fragment for the next navigation\n *\n * ```\n * // Preserve fragment from /results#top to /view#top\n * this.router.navigate(['/view'], { preserveFragment: true });\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.preserveFragment;\n /**\n * Navigates without pushing a new state into history.\n *\n * ```\n * // Navigate silently to /view\n * this.router.navigate(['/view'], { skipLocationChange: true });\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.skipLocationChange;\n /**\n * Navigates while replacing the current state in history.\n *\n * ```\n * // Navigate to /view\n * this.router.navigate(['/view'], { replaceUrl: true });\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.replaceUrl;\n}\n/**\n * @param {?} error\n * @return {?}\n */\nfunction defaultErrorHandler(error) {\n throw error;\n}\n/**\n * \\@internal\n * @param {?} snapshot\n * @return {?}\n */\nfunction defaultRouterHook(snapshot) {\n return /** @type {?} */ (of(null));\n}\n/**\n * \\@whatItDoes Provides the navigation and url manipulation capabilities.\n *\n * See {\\@link Routes} for more details and examples.\n *\n * \\@ngModule RouterModule\n *\n * \\@stable\n */\nexport class Router {\n /**\n * Creates the router service.\n * @param {?} rootComponentType\n * @param {?} urlSerializer\n * @param {?} rootContexts\n * @param {?} location\n * @param {?} injector\n * @param {?} loader\n * @param {?} compiler\n * @param {?} config\n */\n constructor(rootComponentType, urlSerializer, rootContexts, location, injector, loader, compiler, config) {\n this.rootComponentType = rootComponentType;\n this.urlSerializer = urlSerializer;\n this.rootContexts = rootContexts;\n this.location = location;\n this.config = config;\n this.navigations = new BehaviorSubject(/** @type {?} */ ((null)));\n this.navigationId = 0;\n this.events = new Subject();\n /**\n * Error handler that is invoked when a navigation errors.\n *\n * See {\\@link ErrorHandler} for more information.\n */\n this.errorHandler = defaultErrorHandler;\n /**\n * Indicates if at least one navigation happened.\n */\n this.navigated = false;\n /**\n * Used by RouterModule. This allows us to\n * pause the navigation either before preactivation or after it.\n * \\@internal\n */\n this.hooks = {\n beforePreactivation: defaultRouterHook,\n afterPreactivation: defaultRouterHook\n };\n /**\n * Extracts and merges URLs. Used for AngularJS to Angular migrations.\n */\n this.urlHandlingStrategy = new DefaultUrlHandlingStrategy();\n this.routeReuseStrategy = new DefaultRouteReuseStrategy();\n /**\n * Define what the router should do if it receives a navigation request to the current URL.\n * By default, the router will ignore this navigation. However, this prevents features such\n * as a \"refresh\" button. Use this option to configure the behavior when navigating to the\n * current URL. Default is 'ignore'.\n */\n this.onSameUrlNavigation = 'ignore';\n /**\n * Defines how the router merges params, data and resolved data from parent to child\n * routes. Available options are:\n *\n * - `'emptyOnly'`, the default, only inherits parent params for path-less or component-less\n * routes.\n * - `'always'`, enables unconditional inheritance of parent params.\n */\n this.paramsInheritanceStrategy = 'emptyOnly';\n const /** @type {?} */ onLoadStart = (r) => this.triggerEvent(new RouteConfigLoadStart(r));\n const /** @type {?} */ onLoadEnd = (r) => this.triggerEvent(new RouteConfigLoadEnd(r));\n this.ngModule = injector.get(NgModuleRef);\n this.resetConfig(config);\n this.currentUrlTree = createEmptyUrlTree();\n this.rawUrlTree = this.currentUrlTree;\n this.configLoader = new RouterConfigLoader(loader, compiler, onLoadStart, onLoadEnd);\n this.routerState = createEmptyState(this.currentUrlTree, this.rootComponentType);\n this.processNavigations();\n }\n /**\n * \\@internal\n * TODO: this should be removed once the constructor of the router made internal\n * @param {?} rootComponentType\n * @return {?}\n */\n resetRootComponentType(rootComponentType) {\n this.rootComponentType = rootComponentType;\n // TODO: vsavkin router 4.0 should make the root component set to null\n // this will simplify the lifecycle of the router.\n this.routerState.root.component = this.rootComponentType;\n }\n /**\n * Sets up the location change listener and performs the initial navigation.\n * @return {?}\n */\n initialNavigation() {\n this.setUpLocationChangeListener();\n if (this.navigationId === 0) {\n this.navigateByUrl(this.location.path(true), { replaceUrl: true });\n }\n }\n /**\n * Sets up the location change listener.\n * @return {?}\n */\n setUpLocationChangeListener() {\n // Don't need to use Zone.wrap any more, because zone.js\n // already patch onPopState, so location change callback will\n // run into ngZone\n if (!this.locationSubscription) {\n this.locationSubscription = /** @type {?} */ (this.location.subscribe((change) => {\n const /** @type {?} */ rawUrlTree = this.urlSerializer.parse(change['url']);\n const /** @type {?} */ source = change['type'] === 'popstate' ? 'popstate' : 'hashchange';\n setTimeout(() => { this.scheduleNavigation(rawUrlTree, source, { replaceUrl: true }); }, 0);\n }));\n }\n }\n /**\n * The current url\n * @return {?}\n */\n get url() { return this.serializeUrl(this.currentUrlTree); }\n /**\n * \\@internal\n * @param {?} e\n * @return {?}\n */\n triggerEvent(e) { (/** @type {?} */ (this.events)).next(e); }\n /**\n * Resets the configuration used for navigation and generating links.\n *\n * ### Usage\n *\n * ```\n * router.resetConfig([\n * { path: 'team/:id', component: TeamCmp, children: [\n * { path: 'simple', component: SimpleCmp },\n * { path: 'user/:name', component: UserCmp }\n * ]}\n * ]);\n * ```\n * @param {?} config\n * @return {?}\n */\n resetConfig(config) {\n validateConfig(config);\n this.config = config.map(copyConfig);\n this.navigated = false;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n ngOnDestroy() { this.dispose(); }\n /**\n * Disposes of the router\n * @return {?}\n */\n dispose() {\n if (this.locationSubscription) {\n this.locationSubscription.unsubscribe();\n this.locationSubscription = /** @type {?} */ ((null));\n }\n }\n /**\n * Applies an array of commands to the current url tree and creates a new url tree.\n *\n * When given an activate route, applies the given commands starting from the route.\n * When not given a route, applies the given command starting from the root.\n *\n * ### Usage\n *\n * ```\n * // create /team/33/user/11\n * router.createUrlTree(['/team', 33, 'user', 11]);\n *\n * // create /team/33;expand=true/user/11\n * router.createUrlTree(['/team', 33, {expand: true}, 'user', 11]);\n *\n * // you can collapse static segments like this (this works only with the first passed-in value):\n * router.createUrlTree(['/team/33/user', userId]);\n *\n * // If the first segment can contain slashes, and you do not want the router to split it, you\n * // can do the following:\n *\n * router.createUrlTree([{segmentPath: '/one/two'}]);\n *\n * // create /team/33/(user/11//right:chat)\n * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: 'chat'}}]);\n *\n * // remove the right secondary node\n * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: null}}]);\n *\n * // assuming the current url is `/team/33/user/11` and the route points to `user/11`\n *\n * // navigate to /team/33/user/11/details\n * router.createUrlTree(['details'], {relativeTo: route});\n *\n * // navigate to /team/33/user/22\n * router.createUrlTree(['../22'], {relativeTo: route});\n *\n * // navigate to /team/44/user/22\n * router.createUrlTree(['../../team/44/user/22'], {relativeTo: route});\n * ```\n * @param {?} commands\n * @param {?=} navigationExtras\n * @return {?}\n */\n createUrlTree(commands, navigationExtras = {}) {\n const { relativeTo, queryParams, fragment, preserveQueryParams, queryParamsHandling, preserveFragment } = navigationExtras;\n if (isDevMode() && preserveQueryParams && /** @type {?} */ (console) && /** @type {?} */ (console.warn)) {\n console.warn('preserveQueryParams is deprecated, use queryParamsHandling instead.');\n }\n const /** @type {?} */ a = relativeTo || this.routerState.root;\n const /** @type {?} */ f = preserveFragment ? this.currentUrlTree.fragment : fragment;\n let /** @type {?} */ q = null;\n if (queryParamsHandling) {\n switch (queryParamsHandling) {\n case 'merge':\n q = Object.assign({}, this.currentUrlTree.queryParams, queryParams);\n break;\n case 'preserve':\n q = this.currentUrlTree.queryParams;\n break;\n default:\n q = queryParams || null;\n }\n }\n else {\n q = preserveQueryParams ? this.currentUrlTree.queryParams : queryParams || null;\n }\n if (q !== null) {\n q = this.removeEmptyProps(q);\n }\n return createUrlTree(a, this.currentUrlTree, commands, /** @type {?} */ ((q)), /** @type {?} */ ((f)));\n }\n /**\n * Navigate based on the provided url. This navigation is always absolute.\n *\n * Returns a promise that:\n * - resolves to 'true' when navigation succeeds,\n * - resolves to 'false' when navigation fails,\n * - is rejected when an error happens.\n *\n * ### Usage\n *\n * ```\n * router.navigateByUrl(\"/team/33/user/11\");\n *\n * // Navigate without updating the URL\n * router.navigateByUrl(\"/team/33/user/11\", { skipLocationChange: true });\n * ```\n *\n * In opposite to `navigate`, `navigateByUrl` takes a whole URL\n * and does not apply any delta to the current one.\n * @param {?} url\n * @param {?=} extras\n * @return {?}\n */\n navigateByUrl(url, extras = { skipLocationChange: false }) {\n const /** @type {?} */ urlTree = url instanceof UrlTree ? url : this.parseUrl(url);\n const /** @type {?} */ mergedTree = this.urlHandlingStrategy.merge(urlTree, this.rawUrlTree);\n return this.scheduleNavigation(mergedTree, 'imperative', extras);\n }\n /**\n * Navigate based on the provided array of commands and a starting point.\n * If no starting route is provided, the navigation is absolute.\n *\n * Returns a promise that:\n * - resolves to 'true' when navigation succeeds,\n * - resolves to 'false' when navigation fails,\n * - is rejected when an error happens.\n *\n * ### Usage\n *\n * ```\n * router.navigate(['team', 33, 'user', 11], {relativeTo: route});\n *\n * // Navigate without updating the URL\n * router.navigate(['team', 33, 'user', 11], {relativeTo: route, skipLocationChange: true});\n * ```\n *\n * In opposite to `navigateByUrl`, `navigate` always takes a delta that is applied to the current\n * URL.\n * @param {?} commands\n * @param {?=} extras\n * @return {?}\n */\n navigate(commands, extras = { skipLocationChange: false }) {\n validateCommands(commands);\n return this.navigateByUrl(this.createUrlTree(commands, extras), extras);\n }\n /**\n * Serializes a {\\@link UrlTree} into a string\n * @param {?} url\n * @return {?}\n */\n serializeUrl(url) { return this.urlSerializer.serialize(url); }\n /**\n * Parses a string into a {\\@link UrlTree}\n * @param {?} url\n * @return {?}\n */\n parseUrl(url) { return this.urlSerializer.parse(url); }\n /**\n * Returns whether the url is activated\n * @param {?} url\n * @param {?} exact\n * @return {?}\n */\n isActive(url, exact) {\n if (url instanceof UrlTree) {\n return containsTree(this.currentUrlTree, url, exact);\n }\n const /** @type {?} */ urlTree = this.urlSerializer.parse(url);\n return containsTree(this.currentUrlTree, urlTree, exact);\n }\n /**\n * @param {?} params\n * @return {?}\n */\n removeEmptyProps(params) {\n return Object.keys(params).reduce((result, key) => {\n const /** @type {?} */ value = params[key];\n if (value !== null && value !== undefined) {\n result[key] = value;\n }\n return result;\n }, {});\n }\n /**\n * @return {?}\n */\n processNavigations() {\n concatMap\n .call(this.navigations, (nav) => {\n if (nav) {\n this.executeScheduledNavigation(nav);\n // a failed navigation should not stop the router from processing\n // further navigations => the catch\n return nav.promise.catch(() => { });\n }\n else {\n return /** @type {?} */ (of(null));\n }\n })\n .subscribe(() => { });\n }\n /**\n * @param {?} rawUrl\n * @param {?} source\n * @param {?} extras\n * @return {?}\n */\n scheduleNavigation(rawUrl, source, extras) {\n const /** @type {?} */ lastNavigation = this.navigations.value;\n // If the user triggers a navigation imperatively (e.g., by using navigateByUrl),\n // and that navigation results in 'replaceState' that leads to the same URL,\n // we should skip those.\n if (lastNavigation && source !== 'imperative' && lastNavigation.source === 'imperative' &&\n lastNavigation.rawUrl.toString() === rawUrl.toString()) {\n return Promise.resolve(true); // return value is not used\n }\n // Because of a bug in IE and Edge, the location class fires two events (popstate and\n // hashchange) every single time. The second one should be ignored. Otherwise, the URL will\n // flicker. Handles the case when a popstate was emitted first.\n if (lastNavigation && source == 'hashchange' && lastNavigation.source === 'popstate' &&\n lastNavigation.rawUrl.toString() === rawUrl.toString()) {\n return Promise.resolve(true); // return value is not used\n }\n // Because of a bug in IE and Edge, the location class fires two events (popstate and\n // hashchange) every single time. The second one should be ignored. Otherwise, the URL will\n // flicker. Handles the case when a hashchange was emitted first.\n if (lastNavigation && source == 'popstate' && lastNavigation.source === 'hashchange' &&\n lastNavigation.rawUrl.toString() === rawUrl.toString()) {\n return Promise.resolve(true); // return value is not used\n }\n let /** @type {?} */ resolve = null;\n let /** @type {?} */ reject = null;\n const /** @type {?} */ promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n const /** @type {?} */ id = ++this.navigationId;\n this.navigations.next({ id, source, rawUrl, extras, resolve, reject, promise });\n // Make sure that the error is propagated even though `processNavigations` catch\n // handler does not rethrow\n return promise.catch((e) => Promise.reject(e));\n }\n /**\n * @param {?} __0\n * @return {?}\n */\n executeScheduledNavigation({ id, rawUrl, extras, resolve, reject }) {\n const /** @type {?} */ url = this.urlHandlingStrategy.extract(rawUrl);\n const /** @type {?} */ urlTransition = !this.navigated || url.toString() !== this.currentUrlTree.toString();\n if ((this.onSameUrlNavigation === 'reload' ? true : urlTransition) &&\n this.urlHandlingStrategy.shouldProcessUrl(rawUrl)) {\n (/** @type {?} */ (this.events)).next(new NavigationStart(id, this.serializeUrl(url)));\n Promise.resolve()\n .then((_) => this.runNavigate(url, rawUrl, !!extras.skipLocationChange, !!extras.replaceUrl, id, null))\n .then(resolve, reject);\n // we cannot process the current URL, but we could process the previous one =>\n // we need to do some cleanup\n }\n else if (urlTransition && this.rawUrlTree &&\n this.urlHandlingStrategy.shouldProcessUrl(this.rawUrlTree)) {\n (/** @type {?} */ (this.events)).next(new NavigationStart(id, this.serializeUrl(url)));\n Promise.resolve()\n .then((_) => this.runNavigate(url, rawUrl, false, false, id, createEmptyState(url, this.rootComponentType).snapshot))\n .then(resolve, reject);\n }\n else {\n this.rawUrlTree = rawUrl;\n resolve(null);\n }\n }\n /**\n * @param {?} url\n * @param {?} rawUrl\n * @param {?} skipLocationChange\n * @param {?} replaceUrl\n * @param {?} id\n * @param {?} precreatedState\n * @return {?}\n */\n runNavigate(url, rawUrl, skipLocationChange, replaceUrl, id, precreatedState) {\n if (id !== this.navigationId) {\n (/** @type {?} */ (this.events))\n .next(new NavigationCancel(id, this.serializeUrl(url), `Navigation ID ${id} is not equal to the current navigation id ${this.navigationId}`));\n return Promise.resolve(false);\n }\n return new Promise((resolvePromise, rejectPromise) => {\n // create an observable of the url and route state snapshot\n // this operation do not result in any side effects\n let /** @type {?} */ urlAndSnapshot$;\n if (!precreatedState) {\n const /** @type {?} */ moduleInjector = this.ngModule.injector;\n const /** @type {?} */ redirectsApplied$ = applyRedirects(moduleInjector, this.configLoader, this.urlSerializer, url, this.config);\n urlAndSnapshot$ = mergeMap.call(redirectsApplied$, (appliedUrl) => {\n return map.call(recognize(this.rootComponentType, this.config, appliedUrl, this.serializeUrl(appliedUrl), this.paramsInheritanceStrategy), (snapshot) => {\n (/** @type {?} */ (this.events))\n .next(new RoutesRecognized(id, this.serializeUrl(url), this.serializeUrl(appliedUrl), snapshot));\n return { appliedUrl, snapshot };\n });\n });\n }\n else {\n urlAndSnapshot$ = of({ appliedUrl: url, snapshot: precreatedState });\n }\n const /** @type {?} */ beforePreactivationDone$ = mergeMap.call(urlAndSnapshot$, (p) => {\n return map.call(this.hooks.beforePreactivation(p.snapshot), () => p);\n });\n // run preactivation: guards and data resolvers\n let /** @type {?} */ preActivation;\n const /** @type {?} */ preactivationSetup$ = map.call(beforePreactivationDone$, ({ appliedUrl, snapshot }) => {\n const /** @type {?} */ moduleInjector = this.ngModule.injector;\n preActivation = new PreActivation(snapshot, this.routerState.snapshot, moduleInjector, (evt) => this.triggerEvent(evt));\n preActivation.initialize(this.rootContexts);\n return { appliedUrl, snapshot };\n });\n const /** @type {?} */ preactivationCheckGuards$ = mergeMap.call(preactivationSetup$, ({ appliedUrl, snapshot }) => {\n if (this.navigationId !== id)\n return of(false);\n this.triggerEvent(new GuardsCheckStart(id, this.serializeUrl(url), appliedUrl, snapshot));\n return map.call(preActivation.checkGuards(), (shouldActivate) => {\n this.triggerEvent(new GuardsCheckEnd(id, this.serializeUrl(url), appliedUrl, snapshot, shouldActivate));\n return { appliedUrl: appliedUrl, snapshot: snapshot, shouldActivate: shouldActivate };\n });\n });\n const /** @type {?} */ preactivationResolveData$ = mergeMap.call(preactivationCheckGuards$, (p) => {\n if (this.navigationId !== id)\n return of(false);\n if (p.shouldActivate && preActivation.isActivating()) {\n this.triggerEvent(new ResolveStart(id, this.serializeUrl(url), p.appliedUrl, p.snapshot));\n return map.call(preActivation.resolveData(this.paramsInheritanceStrategy), () => {\n this.triggerEvent(new ResolveEnd(id, this.serializeUrl(url), p.appliedUrl, p.snapshot));\n return p;\n });\n }\n else {\n return of(p);\n }\n });\n const /** @type {?} */ preactivationDone$ = mergeMap.call(preactivationResolveData$, (p) => {\n return map.call(this.hooks.afterPreactivation(p.snapshot), () => p);\n });\n // create router state\n // this operation has side effects => route state is being affected\n const /** @type {?} */ routerState$ = map.call(preactivationDone$, ({ appliedUrl, snapshot, shouldActivate }) => {\n if (shouldActivate) {\n const /** @type {?} */ state = createRouterState(this.routeReuseStrategy, snapshot, this.routerState);\n return { appliedUrl, state, shouldActivate };\n }\n else {\n return { appliedUrl, state: null, shouldActivate };\n }\n });\n this.activateRoutes(routerState$, this.routerState, this.currentUrlTree, id, url, rawUrl, skipLocationChange, replaceUrl, resolvePromise, rejectPromise);\n });\n }\n /**\n * Performs the logic of activating routes. This is a synchronous process by default. While this\n * is a private method, it could be overridden to make activation asynchronous.\n * @param {?} state\n * @param {?} storedState\n * @param {?} storedUrl\n * @param {?} id\n * @param {?} url\n * @param {?} rawUrl\n * @param {?} skipLocationChange\n * @param {?} replaceUrl\n * @param {?} resolvePromise\n * @param {?} rejectPromise\n * @return {?}\n */\n activateRoutes(state, storedState, storedUrl, id, url, rawUrl, skipLocationChange, replaceUrl, resolvePromise, rejectPromise) {\n // applied the new router state\n // this operation has side effects\n let /** @type {?} */ navigationIsSuccessful;\n state\n .forEach(({ appliedUrl, state, shouldActivate }) => {\n if (!shouldActivate || id !== this.navigationId) {\n navigationIsSuccessful = false;\n return;\n }\n this.currentUrlTree = appliedUrl;\n this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, rawUrl);\n (/** @type {?} */ (this)).routerState = state;\n if (!skipLocationChange) {\n const /** @type {?} */ path = this.urlSerializer.serialize(this.rawUrlTree);\n if (this.location.isCurrentPathEqualTo(path) || replaceUrl) {\n this.location.replaceState(path);\n }\n else {\n this.location.go(path);\n }\n }\n new ActivateRoutes(this.routeReuseStrategy, state, storedState, (evt) => this.triggerEvent(evt))\n .activate(this.rootContexts);\n navigationIsSuccessful = true;\n })\n .then(() => {\n if (navigationIsSuccessful) {\n this.navigated = true;\n (/** @type {?} */ (this.events))\n .next(new NavigationEnd(id, this.serializeUrl(url), this.serializeUrl(this.currentUrlTree)));\n resolvePromise(true);\n }\n else {\n this.resetUrlToCurrentUrlTree();\n (/** @type {?} */ (this.events))\n .next(new NavigationCancel(id, this.serializeUrl(url), ''));\n resolvePromise(false);\n }\n }, (e) => {\n if (isNavigationCancelingError(e)) {\n this.navigated = true;\n this.resetStateAndUrl(storedState, storedUrl, rawUrl);\n (/** @type {?} */ (this.events))\n .next(new NavigationCancel(id, this.serializeUrl(url), e.message));\n resolvePromise(false);\n }\n else {\n this.resetStateAndUrl(storedState, storedUrl, rawUrl);\n (/** @type {?} */ (this.events))\n .next(new NavigationError(id, this.serializeUrl(url), e));\n try {\n resolvePromise(this.errorHandler(e));\n }\n catch (/** @type {?} */ ee) {\n rejectPromise(ee);\n }\n }\n });\n }\n /**\n * @param {?} storedState\n * @param {?} storedUrl\n * @param {?} rawUrl\n * @return {?}\n */\n resetStateAndUrl(storedState, storedUrl, rawUrl) {\n (/** @type {?} */ (this)).routerState = storedState;\n this.currentUrlTree = storedUrl;\n this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, rawUrl);\n this.resetUrlToCurrentUrlTree();\n }\n /**\n * @return {?}\n */\n resetUrlToCurrentUrlTree() {\n this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree));\n }\n}\nfunction Router_tsickle_Closure_declarations() {\n /** @type {?} */\n Router.prototype.currentUrlTree;\n /** @type {?} */\n Router.prototype.rawUrlTree;\n /** @type {?} */\n Router.prototype.navigations;\n /** @type {?} */\n Router.prototype.locationSubscription;\n /** @type {?} */\n Router.prototype.navigationId;\n /** @type {?} */\n Router.prototype.configLoader;\n /** @type {?} */\n Router.prototype.ngModule;\n /** @type {?} */\n Router.prototype.events;\n /** @type {?} */\n Router.prototype.routerState;\n /**\n * Error handler that is invoked when a navigation errors.\n *\n * See {\\@link ErrorHandler} for more information.\n * @type {?}\n */\n Router.prototype.errorHandler;\n /**\n * Indicates if at least one navigation happened.\n * @type {?}\n */\n Router.prototype.navigated;\n /**\n * Used by RouterModule. This allows us to\n * pause the navigation either before preactivation or after it.\n * \\@internal\n * @type {?}\n */\n Router.prototype.hooks;\n /**\n * Extracts and merges URLs. Used for AngularJS to Angular migrations.\n * @type {?}\n */\n Router.prototype.urlHandlingStrategy;\n /** @type {?} */\n Router.prototype.routeReuseStrategy;\n /**\n * Define what the router should do if it receives a navigation request to the current URL.\n * By default, the router will ignore this navigation. However, this prevents features such\n * as a \"refresh\" button. Use this option to configure the behavior when navigating to the\n * current URL. Default is 'ignore'.\n * @type {?}\n */\n Router.prototype.onSameUrlNavigation;\n /**\n * Defines how the router merges params, data and resolved data from parent to child\n * routes. Available options are:\n *\n * - `'emptyOnly'`, the default, only inherits parent params for path-less or component-less\n * routes.\n * - `'always'`, enables unconditional inheritance of parent params.\n * @type {?}\n */\n Router.prototype.paramsInheritanceStrategy;\n /** @type {?} */\n Router.prototype.rootComponentType;\n /** @type {?} */\n Router.prototype.urlSerializer;\n /** @type {?} */\n Router.prototype.rootContexts;\n /** @type {?} */\n Router.prototype.location;\n /** @type {?} */\n Router.prototype.config;\n}\nclass ActivateRoutes {\n /**\n * @param {?} routeReuseStrategy\n * @param {?} futureState\n * @param {?} currState\n * @param {?} forwardEvent\n */\n constructor(routeReuseStrategy, futureState, currState, forwardEvent) {\n this.routeReuseStrategy = routeReuseStrategy;\n this.futureState = futureState;\n this.currState = currState;\n this.forwardEvent = forwardEvent;\n }\n /**\n * @param {?} parentContexts\n * @return {?}\n */\n activate(parentContexts) {\n const /** @type {?} */ futureRoot = this.futureState._root;\n const /** @type {?} */ currRoot = this.currState ? this.currState._root : null;\n this.deactivateChildRoutes(futureRoot, currRoot, parentContexts);\n advanceActivatedRoute(this.futureState.root);\n this.activateChildRoutes(futureRoot, currRoot, parentContexts);\n }\n /**\n * @param {?} futureNode\n * @param {?} currNode\n * @param {?} contexts\n * @return {?}\n */\n deactivateChildRoutes(futureNode, currNode, contexts) {\n const /** @type {?} */ children = nodeChildrenAsMap(currNode);\n // Recurse on the routes active in the future state to de-activate deeper children\n futureNode.children.forEach(futureChild => {\n const /** @type {?} */ childOutletName = futureChild.value.outlet;\n this.deactivateRoutes(futureChild, children[childOutletName], contexts);\n delete children[childOutletName];\n });\n // De-activate the routes that will not be re-used\n forEach(children, (v, childName) => {\n this.deactivateRouteAndItsChildren(v, contexts);\n });\n }\n /**\n * @param {?} futureNode\n * @param {?} currNode\n * @param {?} parentContext\n * @return {?}\n */\n deactivateRoutes(futureNode, currNode, parentContext) {\n const /** @type {?} */ future = futureNode.value;\n const /** @type {?} */ curr = currNode ? currNode.value : null;\n if (future === curr) {\n // Reusing the node, check to see if the children need to be de-activated\n if (future.component) {\n // If we have a normal route, we need to go through an outlet.\n const /** @type {?} */ context = parentContext.getContext(future.outlet);\n if (context) {\n this.deactivateChildRoutes(futureNode, currNode, context.children);\n }\n }\n else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.deactivateChildRoutes(futureNode, currNode, parentContext);\n }\n }\n else {\n if (curr) {\n // Deactivate the current route which will not be re-used\n this.deactivateRouteAndItsChildren(currNode, parentContext);\n }\n }\n }\n /**\n * @param {?} route\n * @param {?} parentContexts\n * @return {?}\n */\n deactivateRouteAndItsChildren(route, parentContexts) {\n if (this.routeReuseStrategy.shouldDetach(route.value.snapshot)) {\n this.detachAndStoreRouteSubtree(route, parentContexts);\n }\n else {\n this.deactivateRouteAndOutlet(route, parentContexts);\n }\n }\n /**\n * @param {?} route\n * @param {?} parentContexts\n * @return {?}\n */\n detachAndStoreRouteSubtree(route, parentContexts) {\n const /** @type {?} */ context = parentContexts.getContext(route.value.outlet);\n if (context && context.outlet) {\n const /** @type {?} */ componentRef = context.outlet.detach();\n const /** @type {?} */ contexts = context.children.onOutletDeactivated();\n this.routeReuseStrategy.store(route.value.snapshot, { componentRef, route, contexts });\n }\n }\n /**\n * @param {?} route\n * @param {?} parentContexts\n * @return {?}\n */\n deactivateRouteAndOutlet(route, parentContexts) {\n const /** @type {?} */ context = parentContexts.getContext(route.value.outlet);\n if (context) {\n const /** @type {?} */ children = nodeChildrenAsMap(route);\n const /** @type {?} */ contexts = route.value.component ? context.children : parentContexts;\n forEach(children, (v, k) => this.deactivateRouteAndItsChildren(v, contexts));\n if (context.outlet) {\n // Destroy the component\n context.outlet.deactivate();\n // Destroy the contexts for all the outlets that were in the component\n context.children.onOutletDeactivated();\n }\n }\n }\n /**\n * @param {?} futureNode\n * @param {?} currNode\n * @param {?} contexts\n * @return {?}\n */\n activateChildRoutes(futureNode, currNode, contexts) {\n const /** @type {?} */ children = nodeChildrenAsMap(currNode);\n futureNode.children.forEach(c => {\n this.activateRoutes(c, children[c.value.outlet], contexts);\n this.forwardEvent(new ActivationEnd(c.value.snapshot));\n });\n if (futureNode.children.length) {\n this.forwardEvent(new ChildActivationEnd(futureNode.value.snapshot));\n }\n }\n /**\n * @param {?} futureNode\n * @param {?} currNode\n * @param {?} parentContexts\n * @return {?}\n */\n activateRoutes(futureNode, currNode, parentContexts) {\n const /** @type {?} */ future = futureNode.value;\n const /** @type {?} */ curr = currNode ? currNode.value : null;\n advanceActivatedRoute(future);\n // reusing the node\n if (future === curr) {\n if (future.component) {\n // If we have a normal route, we need to go through an outlet.\n const /** @type {?} */ context = parentContexts.getOrCreateContext(future.outlet);\n this.activateChildRoutes(futureNode, currNode, context.children);\n }\n else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.activateChildRoutes(futureNode, currNode, parentContexts);\n }\n }\n else {\n if (future.component) {\n // if we have a normal route, we need to place the component into the outlet and recurse.\n const /** @type {?} */ context = parentContexts.getOrCreateContext(future.outlet);\n if (this.routeReuseStrategy.shouldAttach(future.snapshot)) {\n const /** @type {?} */ stored = (/** @type {?} */ (this.routeReuseStrategy.retrieve(future.snapshot)));\n this.routeReuseStrategy.store(future.snapshot, null);\n context.children.onOutletReAttached(stored.contexts);\n context.attachRef = stored.componentRef;\n context.route = stored.route.value;\n if (context.outlet) {\n // Attach right away when the outlet has already been instantiated\n // Otherwise attach from `RouterOutlet.ngOnInit` when it is instantiated\n context.outlet.attach(stored.componentRef, stored.route.value);\n }\n advanceActivatedRouteNodeAndItsChildren(stored.route);\n }\n else {\n const /** @type {?} */ config = parentLoadedConfig(future.snapshot);\n const /** @type {?} */ cmpFactoryResolver = config ? config.module.componentFactoryResolver : null;\n context.route = future;\n context.resolver = cmpFactoryResolver;\n if (context.outlet) {\n // Activate the outlet when it has already been instantiated\n // Otherwise it will get activated from its `ngOnInit` when instantiated\n context.outlet.activateWith(future, cmpFactoryResolver);\n }\n this.activateChildRoutes(futureNode, null, context.children);\n }\n }\n else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.activateChildRoutes(futureNode, null, parentContexts);\n }\n }\n }\n}\nfunction ActivateRoutes_tsickle_Closure_declarations() {\n /** @type {?} */\n ActivateRoutes.prototype.routeReuseStrategy;\n /** @type {?} */\n ActivateRoutes.prototype.futureState;\n /** @type {?} */\n ActivateRoutes.prototype.currState;\n /** @type {?} */\n ActivateRoutes.prototype.forwardEvent;\n}\n/**\n * @param {?} node\n * @return {?}\n */\nfunction advanceActivatedRouteNodeAndItsChildren(node) {\n advanceActivatedRoute(node.value);\n node.children.forEach(advanceActivatedRouteNodeAndItsChildren);\n}\n/**\n * @param {?} snapshot\n * @return {?}\n */\nfunction parentLoadedConfig(snapshot) {\n for (let /** @type {?} */ s = snapshot.parent; s; s = s.parent) {\n const /** @type {?} */ route = s.routeConfig;\n if (route && route._loadedConfig)\n return route._loadedConfig;\n if (route && route.component)\n return null;\n }\n return null;\n}\n/**\n * @param {?} commands\n * @return {?}\n */\nfunction validateCommands(commands) {\n for (let /** @type {?} */ i = 0; i < commands.length; i++) {\n const /** @type {?} */ cmd = commands[i];\n if (cmd == null) {\n throw new Error(`The requested path contains ${cmd} segment at index ${i}`);\n }\n }\n}\n//# sourceMappingURL=router.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { LocationStrategy } from '@angular/common';\nimport { Attribute, Directive, ElementRef, HostBinding, HostListener, Input, Renderer2, isDevMode } from '@angular/core';\nimport { NavigationEnd } from '../events';\nimport { Router } from '../router';\nimport { ActivatedRoute } from '../router_state';\n/**\n * \\@whatItDoes Lets you link to specific parts of your app.\n *\n * \\@howToUse\n *\n * Consider the following route configuration:\n * `[{ path: 'user/:name', component: UserCmp }]`\n *\n * When linking to this `user/:name` route, you can write:\n * `<a routerLink='/user/bob'>link to user component</a>`\n *\n * \\@description\n *\n * The RouterLink directives let you link to specific parts of your app.\n *\n * When the link is static, you can use the directive as follows:\n * `<a routerLink=\"/user/bob\">link to user component</a>`\n *\n * If you use dynamic values to generate the link, you can pass an array of path\n * segments, followed by the params for each segment.\n *\n * For instance `['/team', teamId, 'user', userName, {details: true}]`\n * means that we want to generate a link to `/team/11/user/bob;details=true`.\n *\n * Multiple static segments can be merged into one\n * (e.g., `['/team/11/user', userName, {details: true}]`).\n *\n * The first segment name can be prepended with `/`, `./`, or `../`:\n * * If the first segment begins with `/`, the router will look up the route from the root of the\n * app.\n * * If the first segment begins with `./`, or doesn't begin with a slash, the router will\n * instead look in the children of the current activated route.\n * * And if the first segment begins with `../`, the router will go up one level.\n *\n * You can set query params and fragment as follows:\n *\n * ```\n * <a [routerLink]=\"['/user/bob']\" [queryParams]=\"{debug: true}\" fragment=\"education\">\n * link to user component\n * </a>\n * ```\n * RouterLink will use these to generate this link: `/user/bob#education?debug=true`.\n *\n * (Deprecated in v4.0.0 use `queryParamsHandling` instead) You can also tell the\n * directive to preserve the current query params and fragment:\n *\n * ```\n * <a [routerLink]=\"['/user/bob']\" preserveQueryParams preserveFragment>\n * link to user component\n * </a>\n * ```\n *\n * You can tell the directive to how to handle queryParams, available options are:\n * - `'merge'`: merge the queryParams into the current queryParams\n * - `'preserve'`: preserve the current queryParams\n * - default/`''`: use the queryParams only\n *\n * Same options for {\\@link NavigationExtras#queryParamsHandling\n * NavigationExtras#queryParamsHandling}.\n *\n * ```\n * <a [routerLink]=\"['/user/bob']\" [queryParams]=\"{debug: true}\" queryParamsHandling=\"merge\">\n * link to user component\n * </a>\n * ```\n *\n * The router link directive always treats the provided input as a delta to the current url.\n *\n * For instance, if the current url is `/user/(box//aux:team)`.\n *\n * Then the following link `<a [routerLink]=\"['/user/jim']\">Jim</a>` will generate the link\n * `/user/(jim//aux:team)`.\n *\n * See {\\@link Router#createUrlTree createUrlTree} for more information.\n *\n * \\@ngModule RouterModule\n *\n * \\@stable\n */\nexport class RouterLink {\n /**\n * @param {?} router\n * @param {?} route\n * @param {?} tabIndex\n * @param {?} renderer\n * @param {?} el\n */\n constructor(router, route, tabIndex, renderer, el) {\n this.router = router;\n this.route = route;\n this.commands = [];\n if (tabIndex == null) {\n renderer.setAttribute(el.nativeElement, 'tabindex', '0');\n }\n }\n /**\n * @param {?} commands\n * @return {?}\n */\n set routerLink(commands) {\n if (commands != null) {\n this.commands = Array.isArray(commands) ? commands : [commands];\n }\n else {\n this.commands = [];\n }\n }\n /**\n * @deprecated 4.0.0 use `queryParamsHandling` instead.\n * @param {?} value\n * @return {?}\n */\n set preserveQueryParams(value) {\n if (isDevMode() && /** @type {?} */ (console) && /** @type {?} */ (console.warn)) {\n console.warn('preserveQueryParams is deprecated!, use queryParamsHandling instead.');\n }\n this.preserve = value;\n }\n /**\n * @return {?}\n */\n onClick() {\n const /** @type {?} */ extras = {\n skipLocationChange: attrBoolValue(this.skipLocationChange),\n replaceUrl: attrBoolValue(this.replaceUrl),\n };\n this.router.navigateByUrl(this.urlTree, extras);\n return true;\n }\n /**\n * @return {?}\n */\n get urlTree() {\n return this.router.createUrlTree(this.commands, {\n relativeTo: this.route,\n queryParams: this.queryParams,\n fragment: this.fragment,\n preserveQueryParams: attrBoolValue(this.preserve),\n queryParamsHandling: this.queryParamsHandling,\n preserveFragment: attrBoolValue(this.preserveFragment),\n });\n }\n}\nRouterLink.decorators = [\n { type: Directive, args: [{ selector: ':not(a)[routerLink]' },] },\n];\n/** @nocollapse */\nRouterLink.ctorParameters = () => [\n { type: Router, },\n { type: ActivatedRoute, },\n { type: undefined, decorators: [{ type: Attribute, args: ['tabindex',] },] },\n { type: Renderer2, },\n { type: ElementRef, },\n];\nRouterLink.propDecorators = {\n \"queryParams\": [{ type: Input },],\n \"fragment\": [{ type: Input },],\n \"queryParamsHandling\": [{ type: Input },],\n \"preserveFragment\": [{ type: Input },],\n \"skipLocationChange\": [{ type: Input },],\n \"replaceUrl\": [{ type: Input },],\n \"routerLink\": [{ type: Input },],\n \"preserveQueryParams\": [{ type: Input },],\n \"onClick\": [{ type: HostListener, args: ['click',] },],\n};\nfunction RouterLink_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterLink.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterLink.ctorParameters;\n /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */\n RouterLink.propDecorators;\n /** @type {?} */\n RouterLink.prototype.queryParams;\n /** @type {?} */\n RouterLink.prototype.fragment;\n /** @type {?} */\n RouterLink.prototype.queryParamsHandling;\n /** @type {?} */\n RouterLink.prototype.preserveFragment;\n /** @type {?} */\n RouterLink.prototype.skipLocationChange;\n /** @type {?} */\n RouterLink.prototype.replaceUrl;\n /** @type {?} */\n RouterLink.prototype.commands;\n /** @type {?} */\n RouterLink.prototype.preserve;\n /** @type {?} */\n RouterLink.prototype.router;\n /** @type {?} */\n RouterLink.prototype.route;\n}\n/**\n * \\@whatItDoes Lets you link to specific parts of your app.\n *\n * See {\\@link RouterLink} for more information.\n *\n * \\@ngModule RouterModule\n *\n * \\@stable\n */\nexport class RouterLinkWithHref {\n /**\n * @param {?} router\n * @param {?} route\n * @param {?} locationStrategy\n */\n constructor(router, route, locationStrategy) {\n this.router = router;\n this.route = route;\n this.locationStrategy = locationStrategy;\n this.commands = [];\n this.subscription = router.events.subscribe(s => {\n if (s instanceof NavigationEnd) {\n this.updateTargetUrlAndHref();\n }\n });\n }\n /**\n * @param {?} commands\n * @return {?}\n */\n set routerLink(commands) {\n if (commands != null) {\n this.commands = Array.isArray(commands) ? commands : [commands];\n }\n else {\n this.commands = [];\n }\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set preserveQueryParams(value) {\n if (isDevMode() && /** @type {?} */ (console) && /** @type {?} */ (console.warn)) {\n console.warn('preserveQueryParams is deprecated, use queryParamsHandling instead.');\n }\n this.preserve = value;\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) { this.updateTargetUrlAndHref(); }\n /**\n * @return {?}\n */\n ngOnDestroy() { this.subscription.unsubscribe(); }\n /**\n * @param {?} button\n * @param {?} ctrlKey\n * @param {?} metaKey\n * @param {?} shiftKey\n * @return {?}\n */\n onClick(button, ctrlKey, metaKey, shiftKey) {\n if (button !== 0 || ctrlKey || metaKey || shiftKey) {\n return true;\n }\n if (typeof this.target === 'string' && this.target != '_self') {\n return true;\n }\n const /** @type {?} */ extras = {\n skipLocationChange: attrBoolValue(this.skipLocationChange),\n replaceUrl: attrBoolValue(this.replaceUrl),\n };\n this.router.navigateByUrl(this.urlTree, extras);\n return false;\n }\n /**\n * @return {?}\n */\n updateTargetUrlAndHref() {\n this.href = this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.urlTree));\n }\n /**\n * @return {?}\n */\n get urlTree() {\n return this.router.createUrlTree(this.commands, {\n relativeTo: this.route,\n queryParams: this.queryParams,\n fragment: this.fragment,\n preserveQueryParams: attrBoolValue(this.preserve),\n queryParamsHandling: this.queryParamsHandling,\n preserveFragment: attrBoolValue(this.preserveFragment),\n });\n }\n}\nRouterLinkWithHref.decorators = [\n { type: Directive, args: [{ selector: 'a[routerLink]' },] },\n];\n/** @nocollapse */\nRouterLinkWithHref.ctorParameters = () => [\n { type: Router, },\n { type: ActivatedRoute, },\n { type: LocationStrategy, },\n];\nRouterLinkWithHref.propDecorators = {\n \"target\": [{ type: HostBinding, args: ['attr.target',] }, { type: Input },],\n \"queryParams\": [{ type: Input },],\n \"fragment\": [{ type: Input },],\n \"queryParamsHandling\": [{ type: Input },],\n \"preserveFragment\": [{ type: Input },],\n \"skipLocationChange\": [{ type: Input },],\n \"replaceUrl\": [{ type: Input },],\n \"href\": [{ type: HostBinding },],\n \"routerLink\": [{ type: Input },],\n \"preserveQueryParams\": [{ type: Input },],\n \"onClick\": [{ type: HostListener, args: ['click', ['$event.button', '$event.ctrlKey', '$event.metaKey', '$event.shiftKey'],] },],\n};\nfunction RouterLinkWithHref_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterLinkWithHref.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterLinkWithHref.ctorParameters;\n /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */\n RouterLinkWithHref.propDecorators;\n /** @type {?} */\n RouterLinkWithHref.prototype.target;\n /** @type {?} */\n RouterLinkWithHref.prototype.queryParams;\n /** @type {?} */\n RouterLinkWithHref.prototype.fragment;\n /** @type {?} */\n RouterLinkWithHref.prototype.queryParamsHandling;\n /** @type {?} */\n RouterLinkWithHref.prototype.preserveFragment;\n /** @type {?} */\n RouterLinkWithHref.prototype.skipLocationChange;\n /** @type {?} */\n RouterLinkWithHref.prototype.replaceUrl;\n /** @type {?} */\n RouterLinkWithHref.prototype.commands;\n /** @type {?} */\n RouterLinkWithHref.prototype.subscription;\n /** @type {?} */\n RouterLinkWithHref.prototype.preserve;\n /** @type {?} */\n RouterLinkWithHref.prototype.href;\n /** @type {?} */\n RouterLinkWithHref.prototype.router;\n /** @type {?} */\n RouterLinkWithHref.prototype.route;\n /** @type {?} */\n RouterLinkWithHref.prototype.locationStrategy;\n}\n/**\n * @param {?} s\n * @return {?}\n */\nfunction attrBoolValue(s) {\n return s === '' || !!s;\n}\n//# sourceMappingURL=router_link.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectorRef, ContentChildren, Directive, ElementRef, Input, QueryList, Renderer2 } from '@angular/core';\nimport { NavigationEnd } from '../events';\nimport { Router } from '../router';\nimport { RouterLink, RouterLinkWithHref } from './router_link';\n/**\n * \\@whatItDoes Lets you add a CSS class to an element when the link's route becomes active.\n *\n * \\@howToUse\n *\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive=\"active-link\">Bob</a>\n * ```\n *\n * \\@description\n *\n * The RouterLinkActive directive lets you add a CSS class to an element when the link's route\n * becomes active.\n *\n * Consider the following example:\n *\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive=\"active-link\">Bob</a>\n * ```\n *\n * When the url is either '/user' or '/user/bob', the active-link class will\n * be added to the `a` tag. If the url changes, the class will be removed.\n *\n * You can set more than one class, as follows:\n *\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive=\"class1 class2\">Bob</a>\n * <a routerLink=\"/user/bob\" [routerLinkActive]=\"['class1', 'class2']\">Bob</a>\n * ```\n *\n * You can configure RouterLinkActive by passing `exact: true`. This will add the classes\n * only when the url matches the link exactly.\n *\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive=\"active-link\" [routerLinkActiveOptions]=\"{exact:\n * true}\">Bob</a>\n * ```\n *\n * You can assign the RouterLinkActive instance to a template variable and directly check\n * the `isActive` status.\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive #rla=\"routerLinkActive\">\n * Bob {{ rla.isActive ? '(already open)' : ''}}\n * </a>\n * ```\n *\n * Finally, you can apply the RouterLinkActive directive to an ancestor of a RouterLink.\n *\n * ```\n * <div routerLinkActive=\"active-link\" [routerLinkActiveOptions]=\"{exact: true}\">\n * <a routerLink=\"/user/jim\">Jim</a>\n * <a routerLink=\"/user/bob\">Bob</a>\n * </div>\n * ```\n *\n * This will set the active-link class on the div tag if the url is either '/user/jim' or\n * '/user/bob'.\n *\n * \\@ngModule RouterModule\n *\n * \\@stable\n */\nexport class RouterLinkActive {\n /**\n * @param {?} router\n * @param {?} element\n * @param {?} renderer\n * @param {?} cdr\n */\n constructor(router, element, renderer, cdr) {\n this.router = router;\n this.element = element;\n this.renderer = renderer;\n this.cdr = cdr;\n this.classes = [];\n this.isActive = false;\n this.routerLinkActiveOptions = { exact: false };\n this.subscription = router.events.subscribe(s => {\n if (s instanceof NavigationEnd) {\n this.update();\n }\n });\n }\n /**\n * @return {?}\n */\n ngAfterContentInit() {\n this.links.changes.subscribe(_ => this.update());\n this.linksWithHrefs.changes.subscribe(_ => this.update());\n this.update();\n }\n /**\n * @param {?} data\n * @return {?}\n */\n set routerLinkActive(data) {\n const /** @type {?} */ classes = Array.isArray(data) ? data : data.split(' ');\n this.classes = classes.filter(c => !!c);\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) { this.update(); }\n /**\n * @return {?}\n */\n ngOnDestroy() { this.subscription.unsubscribe(); }\n /**\n * @return {?}\n */\n update() {\n if (!this.links || !this.linksWithHrefs || !this.router.navigated)\n return;\n Promise.resolve().then(() => {\n const /** @type {?} */ hasActiveLinks = this.hasActiveLinks();\n if (this.isActive !== hasActiveLinks) {\n (/** @type {?} */ (this)).isActive = hasActiveLinks;\n this.classes.forEach((c) => {\n if (hasActiveLinks) {\n this.renderer.addClass(this.element.nativeElement, c);\n }\n else {\n this.renderer.removeClass(this.element.nativeElement, c);\n }\n });\n }\n });\n }\n /**\n * @param {?} router\n * @return {?}\n */\n isLinkActive(router) {\n return (link) => router.isActive(link.urlTree, this.routerLinkActiveOptions.exact);\n }\n /**\n * @return {?}\n */\n hasActiveLinks() {\n return this.links.some(this.isLinkActive(this.router)) ||\n this.linksWithHrefs.some(this.isLinkActive(this.router));\n }\n}\nRouterLinkActive.decorators = [\n { type: Directive, args: [{\n selector: '[routerLinkActive]',\n exportAs: 'routerLinkActive',\n },] },\n];\n/** @nocollapse */\nRouterLinkActive.ctorParameters = () => [\n { type: Router, },\n { type: ElementRef, },\n { type: Renderer2, },\n { type: ChangeDetectorRef, },\n];\nRouterLinkActive.propDecorators = {\n \"links\": [{ type: ContentChildren, args: [RouterLink, { descendants: true },] },],\n \"linksWithHrefs\": [{ type: ContentChildren, args: [RouterLinkWithHref, { descendants: true },] },],\n \"routerLinkActiveOptions\": [{ type: Input },],\n \"routerLinkActive\": [{ type: Input },],\n};\nfunction RouterLinkActive_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterLinkActive.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterLinkActive.ctorParameters;\n /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */\n RouterLinkActive.propDecorators;\n /** @type {?} */\n RouterLinkActive.prototype.links;\n /** @type {?} */\n RouterLinkActive.prototype.linksWithHrefs;\n /** @type {?} */\n RouterLinkActive.prototype.classes;\n /** @type {?} */\n RouterLinkActive.prototype.subscription;\n /** @type {?} */\n RouterLinkActive.prototype.isActive;\n /** @type {?} */\n RouterLinkActive.prototype.routerLinkActiveOptions;\n /** @type {?} */\n RouterLinkActive.prototype.router;\n /** @type {?} */\n RouterLinkActive.prototype.element;\n /** @type {?} */\n RouterLinkActive.prototype.renderer;\n /** @type {?} */\n RouterLinkActive.prototype.cdr;\n}\n//# sourceMappingURL=router_link_active.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Store contextual information about a {\\@link RouterOutlet}\n *\n * \\@stable\n */\nexport class OutletContext {\n constructor() {\n this.outlet = null;\n this.route = null;\n this.resolver = null;\n this.children = new ChildrenOutletContexts();\n this.attachRef = null;\n }\n}\nfunction OutletContext_tsickle_Closure_declarations() {\n /** @type {?} */\n OutletContext.prototype.outlet;\n /** @type {?} */\n OutletContext.prototype.route;\n /** @type {?} */\n OutletContext.prototype.resolver;\n /** @type {?} */\n OutletContext.prototype.children;\n /** @type {?} */\n OutletContext.prototype.attachRef;\n}\n/**\n * Store contextual information about the children (= nested) {\\@link RouterOutlet}\n *\n * \\@stable\n */\nexport class ChildrenOutletContexts {\n constructor() {\n this.contexts = new Map();\n }\n /**\n * Called when a `RouterOutlet` directive is instantiated\n * @param {?} childName\n * @param {?} outlet\n * @return {?}\n */\n onChildOutletCreated(childName, outlet) {\n const /** @type {?} */ context = this.getOrCreateContext(childName);\n context.outlet = outlet;\n this.contexts.set(childName, context);\n }\n /**\n * Called when a `RouterOutlet` directive is destroyed.\n * We need to keep the context as the outlet could be destroyed inside a NgIf and might be\n * re-created later.\n * @param {?} childName\n * @return {?}\n */\n onChildOutletDestroyed(childName) {\n const /** @type {?} */ context = this.getContext(childName);\n if (context) {\n context.outlet = null;\n }\n }\n /**\n * Called when the corresponding route is deactivated during navigation.\n * Because the component get destroyed, all children outlet are destroyed.\n * @return {?}\n */\n onOutletDeactivated() {\n const /** @type {?} */ contexts = this.contexts;\n this.contexts = new Map();\n return contexts;\n }\n /**\n * @param {?} contexts\n * @return {?}\n */\n onOutletReAttached(contexts) { this.contexts = contexts; }\n /**\n * @param {?} childName\n * @return {?}\n */\n getOrCreateContext(childName) {\n let /** @type {?} */ context = this.getContext(childName);\n if (!context) {\n context = new OutletContext();\n this.contexts.set(childName, context);\n }\n return context;\n }\n /**\n * @param {?} childName\n * @return {?}\n */\n getContext(childName) { return this.contexts.get(childName) || null; }\n}\nfunction ChildrenOutletContexts_tsickle_Closure_declarations() {\n /** @type {?} */\n ChildrenOutletContexts.prototype.contexts;\n}\n//# sourceMappingURL=router_outlet_context.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Attribute, ChangeDetectorRef, ComponentFactoryResolver, Directive, EventEmitter, Output, ViewContainerRef } from '@angular/core';\nimport { ChildrenOutletContexts } from '../router_outlet_context';\nimport { ActivatedRoute } from '../router_state';\nimport { PRIMARY_OUTLET } from '../shared';\n/**\n * \\@whatItDoes Acts as a placeholder that Angular dynamically fills based on the current router\n * state.\n *\n * \\@howToUse\n *\n * ```\n * <router-outlet></router-outlet>\n * <router-outlet name='left'></router-outlet>\n * <router-outlet name='right'></router-outlet>\n * ```\n *\n * A router outlet will emit an activate event any time a new component is being instantiated,\n * and a deactivate event when it is being destroyed.\n *\n * ```\n * <router-outlet\n * (activate)='onActivate($event)'\n * (deactivate)='onDeactivate($event)'></router-outlet>\n * ```\n * \\@ngModule RouterModule\n *\n * \\@stable\n */\nexport class RouterOutlet {\n /**\n * @param {?} parentContexts\n * @param {?} location\n * @param {?} resolver\n * @param {?} name\n * @param {?} changeDetector\n */\n constructor(parentContexts, location, resolver, name, changeDetector) {\n this.parentContexts = parentContexts;\n this.location = location;\n this.resolver = resolver;\n this.changeDetector = changeDetector;\n this.activated = null;\n this._activatedRoute = null;\n this.activateEvents = new EventEmitter();\n this.deactivateEvents = new EventEmitter();\n this.name = name || PRIMARY_OUTLET;\n parentContexts.onChildOutletCreated(this.name, this);\n }\n /**\n * @return {?}\n */\n ngOnDestroy() { this.parentContexts.onChildOutletDestroyed(this.name); }\n /**\n * @return {?}\n */\n ngOnInit() {\n if (!this.activated) {\n // If the outlet was not instantiated at the time the route got activated we need to populate\n // the outlet when it is initialized (ie inside a NgIf)\n const /** @type {?} */ context = this.parentContexts.getContext(this.name);\n if (context && context.route) {\n if (context.attachRef) {\n // `attachRef` is populated when there is an existing component to mount\n this.attach(context.attachRef, context.route);\n }\n else {\n // otherwise the component defined in the configuration is created\n this.activateWith(context.route, context.resolver || null);\n }\n }\n }\n }\n /**\n * @return {?}\n */\n get isActivated() { return !!this.activated; }\n /**\n * @return {?}\n */\n get component() {\n if (!this.activated)\n throw new Error('Outlet is not activated');\n return this.activated.instance;\n }\n /**\n * @return {?}\n */\n get activatedRoute() {\n if (!this.activated)\n throw new Error('Outlet is not activated');\n return /** @type {?} */ (this._activatedRoute);\n }\n /**\n * @return {?}\n */\n get activatedRouteData() {\n if (this._activatedRoute) {\n return this._activatedRoute.snapshot.data;\n }\n return {};\n }\n /**\n * Called when the `RouteReuseStrategy` instructs to detach the subtree\n * @return {?}\n */\n detach() {\n if (!this.activated)\n throw new Error('Outlet is not activated');\n this.location.detach();\n const /** @type {?} */ cmp = this.activated;\n this.activated = null;\n this._activatedRoute = null;\n return cmp;\n }\n /**\n * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree\n * @param {?} ref\n * @param {?} activatedRoute\n * @return {?}\n */\n attach(ref, activatedRoute) {\n this.activated = ref;\n this._activatedRoute = activatedRoute;\n this.location.insert(ref.hostView);\n }\n /**\n * @return {?}\n */\n deactivate() {\n if (this.activated) {\n const /** @type {?} */ c = this.component;\n this.activated.destroy();\n this.activated = null;\n this._activatedRoute = null;\n this.deactivateEvents.emit(c);\n }\n }\n /**\n * @param {?} activatedRoute\n * @param {?} resolver\n * @return {?}\n */\n activateWith(activatedRoute, resolver) {\n if (this.isActivated) {\n throw new Error('Cannot activate an already activated outlet');\n }\n this._activatedRoute = activatedRoute;\n const /** @type {?} */ snapshot = activatedRoute._futureSnapshot;\n const /** @type {?} */ component = /** @type {?} */ (/** @type {?} */ ((snapshot.routeConfig)).component);\n resolver = resolver || this.resolver;\n const /** @type {?} */ factory = resolver.resolveComponentFactory(component);\n const /** @type {?} */ childContexts = this.parentContexts.getOrCreateContext(this.name).children;\n const /** @type {?} */ injector = new OutletInjector(activatedRoute, childContexts, this.location.injector);\n this.activated = this.location.createComponent(factory, this.location.length, injector);\n // Calling `markForCheck` to make sure we will run the change detection when the\n // `RouterOutlet` is inside a `ChangeDetectionStrategy.OnPush` component.\n this.changeDetector.markForCheck();\n this.activateEvents.emit(this.activated.instance);\n }\n}\nRouterOutlet.decorators = [\n { type: Directive, args: [{ selector: 'router-outlet', exportAs: 'outlet' },] },\n];\n/** @nocollapse */\nRouterOutlet.ctorParameters = () => [\n { type: ChildrenOutletContexts, },\n { type: ViewContainerRef, },\n { type: ComponentFactoryResolver, },\n { type: undefined, decorators: [{ type: Attribute, args: ['name',] },] },\n { type: ChangeDetectorRef, },\n];\nRouterOutlet.propDecorators = {\n \"activateEvents\": [{ type: Output, args: ['activate',] },],\n \"deactivateEvents\": [{ type: Output, args: ['deactivate',] },],\n};\nfunction RouterOutlet_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterOutlet.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterOutlet.ctorParameters;\n /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */\n RouterOutlet.propDecorators;\n /** @type {?} */\n RouterOutlet.prototype.activated;\n /** @type {?} */\n RouterOutlet.prototype._activatedRoute;\n /** @type {?} */\n RouterOutlet.prototype.name;\n /** @type {?} */\n RouterOutlet.prototype.activateEvents;\n /** @type {?} */\n RouterOutlet.prototype.deactivateEvents;\n /** @type {?} */\n RouterOutlet.prototype.parentContexts;\n /** @type {?} */\n RouterOutlet.prototype.location;\n /** @type {?} */\n RouterOutlet.prototype.resolver;\n /** @type {?} */\n RouterOutlet.prototype.changeDetector;\n}\nclass OutletInjector {\n /**\n * @param {?} route\n * @param {?} childContexts\n * @param {?} parent\n */\n constructor(route, childContexts, parent) {\n this.route = route;\n this.childContexts = childContexts;\n this.parent = parent;\n }\n /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n get(token, notFoundValue) {\n if (token === ActivatedRoute) {\n return this.route;\n }\n if (token === ChildrenOutletContexts) {\n return this.childContexts;\n }\n return this.parent.get(token, notFoundValue);\n }\n}\nfunction OutletInjector_tsickle_Closure_declarations() {\n /** @type {?} */\n OutletInjector.prototype.route;\n /** @type {?} */\n OutletInjector.prototype.childContexts;\n /** @type {?} */\n OutletInjector.prototype.parent;\n}\n//# sourceMappingURL=router_outlet.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n*@license\n*Copyright Google Inc. All Rights Reserved.\n*\n*Use of this source code is governed by an MIT-style license that can be\n*found in the LICENSE file at https://angular.io/license\n*/\nimport { Compiler, Injectable, Injector, NgModuleFactoryLoader, NgModuleRef } from '@angular/core';\nimport { from } from 'rxjs/observable/from';\nimport { of } from 'rxjs/observable/of';\nimport { _catch } from 'rxjs/operator/catch';\nimport { concatMap } from 'rxjs/operator/concatMap';\nimport { filter } from 'rxjs/operator/filter';\nimport { mergeAll } from 'rxjs/operator/mergeAll';\nimport { mergeMap } from 'rxjs/operator/mergeMap';\nimport { NavigationEnd, RouteConfigLoadEnd, RouteConfigLoadStart } from './events';\nimport { Router } from './router';\nimport { RouterConfigLoader } from './router_config_loader';\n/**\n * \\@whatItDoes Provides a preloading strategy.\n *\n * \\@experimental\n * @abstract\n */\nexport class PreloadingStrategy {\n}\nfunction PreloadingStrategy_tsickle_Closure_declarations() {\n /**\n * @abstract\n * @param {?} route\n * @param {?} fn\n * @return {?}\n */\n PreloadingStrategy.prototype.preload = function (route, fn) { };\n}\n/**\n * \\@whatItDoes Provides a preloading strategy that preloads all modules as quickly as possible.\n *\n * \\@howToUse\n *\n * ```\n * RouteModule.forRoot(ROUTES, {preloadingStrategy: PreloadAllModules})\n * ```\n *\n * \\@experimental\n */\nexport class PreloadAllModules {\n /**\n * @param {?} route\n * @param {?} fn\n * @return {?}\n */\n preload(route, fn) {\n return _catch.call(fn(), () => of(null));\n }\n}\n/**\n * \\@whatItDoes Provides a preloading strategy that does not preload any modules.\n *\n * \\@description\n *\n * This strategy is enabled by default.\n *\n * \\@experimental\n */\nexport class NoPreloading {\n /**\n * @param {?} route\n * @param {?} fn\n * @return {?}\n */\n preload(route, fn) { return of(null); }\n}\n/**\n * The preloader optimistically loads all router configurations to\n * make navigations into lazily-loaded sections of the application faster.\n *\n * The preloader runs in the background. When the router bootstraps, the preloader\n * starts listening to all navigation events. After every such event, the preloader\n * will check if any configurations can be loaded lazily.\n *\n * If a route is protected by `canLoad` guards, the preloaded will not load it.\n *\n * \\@stable\n */\nexport class RouterPreloader {\n /**\n * @param {?} router\n * @param {?} moduleLoader\n * @param {?} compiler\n * @param {?} injector\n * @param {?} preloadingStrategy\n */\n constructor(router, moduleLoader, compiler, injector, preloadingStrategy) {\n this.router = router;\n this.injector = injector;\n this.preloadingStrategy = preloadingStrategy;\n const /** @type {?} */ onStartLoad = (r) => router.triggerEvent(new RouteConfigLoadStart(r));\n const /** @type {?} */ onEndLoad = (r) => router.triggerEvent(new RouteConfigLoadEnd(r));\n this.loader = new RouterConfigLoader(moduleLoader, compiler, onStartLoad, onEndLoad);\n }\n /**\n * @return {?}\n */\n setUpPreloading() {\n const /** @type {?} */ navigations$ = filter.call(this.router.events, (e) => e instanceof NavigationEnd);\n this.subscription = concatMap.call(navigations$, () => this.preload()).subscribe(() => { });\n }\n /**\n * @return {?}\n */\n preload() {\n const /** @type {?} */ ngModule = this.injector.get(NgModuleRef);\n return this.processRoutes(ngModule, this.router.config);\n }\n /**\n * @return {?}\n */\n ngOnDestroy() { this.subscription.unsubscribe(); }\n /**\n * @param {?} ngModule\n * @param {?} routes\n * @return {?}\n */\n processRoutes(ngModule, routes) {\n const /** @type {?} */ res = [];\n for (const /** @type {?} */ route of routes) {\n // we already have the config loaded, just recurse\n if (route.loadChildren && !route.canLoad && route._loadedConfig) {\n const /** @type {?} */ childConfig = route._loadedConfig;\n res.push(this.processRoutes(childConfig.module, childConfig.routes));\n // no config loaded, fetch the config\n }\n else if (route.loadChildren && !route.canLoad) {\n res.push(this.preloadConfig(ngModule, route));\n // recurse into children\n }\n else if (route.children) {\n res.push(this.processRoutes(ngModule, route.children));\n }\n }\n return mergeAll.call(from(res));\n }\n /**\n * @param {?} ngModule\n * @param {?} route\n * @return {?}\n */\n preloadConfig(ngModule, route) {\n return this.preloadingStrategy.preload(route, () => {\n const /** @type {?} */ loaded$ = this.loader.load(ngModule.injector, route);\n return mergeMap.call(loaded$, (config) => {\n route._loadedConfig = config;\n return this.processRoutes(config.module, config.routes);\n });\n });\n }\n}\nRouterPreloader.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nRouterPreloader.ctorParameters = () => [\n { type: Router, },\n { type: NgModuleFactoryLoader, },\n { type: Compiler, },\n { type: Injector, },\n { type: PreloadingStrategy, },\n];\nfunction RouterPreloader_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterPreloader.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterPreloader.ctorParameters;\n /** @type {?} */\n RouterPreloader.prototype.loader;\n /** @type {?} */\n RouterPreloader.prototype.subscription;\n /** @type {?} */\n RouterPreloader.prototype.router;\n /** @type {?} */\n RouterPreloader.prototype.injector;\n /** @type {?} */\n RouterPreloader.prototype.preloadingStrategy;\n}\n//# sourceMappingURL=router_preloader.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { APP_BASE_HREF, HashLocationStrategy, LOCATION_INITIALIZED, Location, LocationStrategy, PathLocationStrategy, PlatformLocation } from '@angular/common';\nimport { ANALYZE_FOR_ENTRY_COMPONENTS, APP_BOOTSTRAP_LISTENER, APP_INITIALIZER, ApplicationRef, Compiler, Inject, Injectable, InjectionToken, Injector, NgModule, NgModuleFactoryLoader, NgProbeToken, Optional, SkipSelf, SystemJsNgModuleLoader } from '@angular/core';\nimport { ɵgetDOM as getDOM } from '@angular/platform-browser';\nimport { Subject } from 'rxjs/Subject';\nimport { of } from 'rxjs/observable/of';\nimport { RouterLink, RouterLinkWithHref } from './directives/router_link';\nimport { RouterLinkActive } from './directives/router_link_active';\nimport { RouterOutlet } from './directives/router_outlet';\nimport { RouteReuseStrategy } from './route_reuse_strategy';\nimport { Router } from './router';\nimport { ROUTES } from './router_config_loader';\nimport { ChildrenOutletContexts } from './router_outlet_context';\nimport { NoPreloading, PreloadAllModules, PreloadingStrategy, RouterPreloader } from './router_preloader';\nimport { ActivatedRoute } from './router_state';\nimport { UrlHandlingStrategy } from './url_handling_strategy';\nimport { DefaultUrlSerializer, UrlSerializer } from './url_tree';\nimport { flatten } from './utils/collection';\n/**\n * \\@whatItDoes Contains a list of directives\n * \\@stable\n */\nconst /** @type {?} */ ROUTER_DIRECTIVES = [RouterOutlet, RouterLink, RouterLinkWithHref, RouterLinkActive];\n/**\n * \\@whatItDoes Is used in DI to configure the router.\n * \\@stable\n */\nexport const /** @type {?} */ ROUTER_CONFIGURATION = new InjectionToken('ROUTER_CONFIGURATION');\n/**\n * \\@docsNotRequired\n */\nexport const /** @type {?} */ ROUTER_FORROOT_GUARD = new InjectionToken('ROUTER_FORROOT_GUARD');\nexport const /** @type {?} */ ROUTER_PROVIDERS = [\n Location,\n { provide: UrlSerializer, useClass: DefaultUrlSerializer },\n {\n provide: Router,\n useFactory: setupRouter,\n deps: [\n ApplicationRef, UrlSerializer, ChildrenOutletContexts, Location, Injector,\n NgModuleFactoryLoader, Compiler, ROUTES, ROUTER_CONFIGURATION,\n [UrlHandlingStrategy, new Optional()], [RouteReuseStrategy, new Optional()]\n ]\n },\n ChildrenOutletContexts,\n { provide: ActivatedRoute, useFactory: rootRoute, deps: [Router] },\n { provide: NgModuleFactoryLoader, useClass: SystemJsNgModuleLoader },\n RouterPreloader,\n NoPreloading,\n PreloadAllModules,\n { provide: ROUTER_CONFIGURATION, useValue: { enableTracing: false } },\n];\n/**\n * @return {?}\n */\nexport function routerNgProbeToken() {\n return new NgProbeToken('Router', Router);\n}\n/**\n * \\@whatItDoes Adds router directives and providers.\n *\n * \\@howToUse\n *\n * RouterModule can be imported multiple times: once per lazily-loaded bundle.\n * Since the router deals with a global shared resource--location, we cannot have\n * more than one router service active.\n *\n * That is why there are two ways to create the module: `RouterModule.forRoot` and\n * `RouterModule.forChild`.\n *\n * * `forRoot` creates a module that contains all the directives, the given routes, and the router\n * service itself.\n * * `forChild` creates a module that contains all the directives and the given routes, but does not\n * include the router service.\n *\n * When registered at the root, the module should be used as follows\n *\n * ```\n * \\@NgModule({\n * imports: [RouterModule.forRoot(ROUTES)]\n * })\n * class MyNgModule {}\n * ```\n *\n * For submodules and lazy loaded submodules the module should be used as follows:\n *\n * ```\n * \\@NgModule({\n * imports: [RouterModule.forChild(ROUTES)]\n * })\n * class MyNgModule {}\n * ```\n *\n * \\@description\n *\n * Managing state transitions is one of the hardest parts of building applications. This is\n * especially true on the web, where you also need to ensure that the state is reflected in the URL.\n * In addition, we often want to split applications into multiple bundles and load them on demand.\n * Doing this transparently is not trivial.\n *\n * The Angular router solves these problems. Using the router, you can declaratively specify\n * application states, manage state transitions while taking care of the URL, and load bundles on\n * demand.\n *\n * [Read this developer guide](https://angular.io/docs/ts/latest/guide/router.html) to get an\n * overview of how the router should be used.\n *\n * \\@stable\n */\nexport class RouterModule {\n /**\n * @param {?} guard\n * @param {?} router\n */\n constructor(guard, router) { }\n /**\n * Creates a module with all the router providers and directives. It also optionally sets up an\n * application listener to perform an initial navigation.\n *\n * Options (see {\\@link ExtraOptions}):\n * * `enableTracing` makes the router log all its internal events to the console.\n * * `useHash` enables the location strategy that uses the URL fragment instead of the history\n * API.\n * * `initialNavigation` disables the initial navigation.\n * * `errorHandler` provides a custom error handler.\n * * `preloadingStrategy` configures a preloading strategy (see {\\@link PreloadAllModules}).\n * * `onSameUrlNavigation` configures how the router handles navigation to the current URL. See\n * {\\@link ExtraOptions} for more details.\n * @param {?} routes\n * @param {?=} config\n * @return {?}\n */\n static forRoot(routes, config) {\n return {\n ngModule: RouterModule,\n providers: [\n ROUTER_PROVIDERS,\n provideRoutes(routes),\n {\n provide: ROUTER_FORROOT_GUARD,\n useFactory: provideForRootGuard,\n deps: [[Router, new Optional(), new SkipSelf()]]\n },\n { provide: ROUTER_CONFIGURATION, useValue: config ? config : {} },\n {\n provide: LocationStrategy,\n useFactory: provideLocationStrategy,\n deps: [\n PlatformLocation, [new Inject(APP_BASE_HREF), new Optional()], ROUTER_CONFIGURATION\n ]\n },\n {\n provide: PreloadingStrategy,\n useExisting: config && config.preloadingStrategy ? config.preloadingStrategy :\n NoPreloading\n },\n { provide: NgProbeToken, multi: true, useFactory: routerNgProbeToken },\n provideRouterInitializer(),\n ],\n };\n }\n /**\n * Creates a module with all the router directives and a provider registering routes.\n * @param {?} routes\n * @return {?}\n */\n static forChild(routes) {\n return { ngModule: RouterModule, providers: [provideRoutes(routes)] };\n }\n}\nRouterModule.decorators = [\n { type: NgModule, args: [{ declarations: ROUTER_DIRECTIVES, exports: ROUTER_DIRECTIVES },] },\n];\n/** @nocollapse */\nRouterModule.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [ROUTER_FORROOT_GUARD,] },] },\n { type: Router, decorators: [{ type: Optional },] },\n];\nfunction RouterModule_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterModule.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterModule.ctorParameters;\n}\n/**\n * @param {?} platformLocationStrategy\n * @param {?} baseHref\n * @param {?=} options\n * @return {?}\n */\nexport function provideLocationStrategy(platformLocationStrategy, baseHref, options = {}) {\n return options.useHash ? new HashLocationStrategy(platformLocationStrategy, baseHref) :\n new PathLocationStrategy(platformLocationStrategy, baseHref);\n}\n/**\n * @param {?} router\n * @return {?}\n */\nexport function provideForRootGuard(router) {\n if (router) {\n throw new Error(`RouterModule.forRoot() called twice. Lazy loaded modules should use RouterModule.forChild() instead.`);\n }\n return 'guarded';\n}\n/**\n * \\@whatItDoes Registers routes.\n *\n * \\@howToUse\n *\n * ```\n * \\@NgModule({\n * imports: [RouterModule.forChild(ROUTES)],\n * providers: [provideRoutes(EXTRA_ROUTES)]\n * })\n * class MyNgModule {}\n * ```\n *\n * \\@stable\n * @param {?} routes\n * @return {?}\n */\nexport function provideRoutes(routes) {\n return [\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, multi: true, useValue: routes },\n { provide: ROUTES, multi: true, useValue: routes },\n ];\n}\n/**\n * \\@whatItDoes Represents options to configure the router.\n *\n * \\@stable\n * @record\n */\nexport function ExtraOptions() { }\nfunction ExtraOptions_tsickle_Closure_declarations() {\n /**\n * Makes the router log all its internal events to the console.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.enableTracing;\n /**\n * Enables the location strategy that uses the URL fragment instead of the history API.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.useHash;\n /**\n * Disables the initial navigation.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.initialNavigation;\n /**\n * A custom error handler.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.errorHandler;\n /**\n * Configures a preloading strategy. See {\\@link PreloadAllModules}.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.preloadingStrategy;\n /**\n * Define what the router should do if it receives a navigation request to the current URL.\n * By default, the router will ignore this navigation. However, this prevents features such\n * as a \"refresh\" button. Use this option to configure the behavior when navigating to the\n * current URL. Default is 'ignore'.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.onSameUrlNavigation;\n /**\n * Defines how the router merges params, data and resolved data from parent to child\n * routes. Available options are:\n *\n * - `'emptyOnly'`, the default, only inherits parent params for path-less or component-less\n * routes.\n * - `'always'`, enables unconditional inheritance of parent params.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.paramsInheritanceStrategy;\n}\n/**\n * @param {?} ref\n * @param {?} urlSerializer\n * @param {?} contexts\n * @param {?} location\n * @param {?} injector\n * @param {?} loader\n * @param {?} compiler\n * @param {?} config\n * @param {?=} opts\n * @param {?=} urlHandlingStrategy\n * @param {?=} routeReuseStrategy\n * @return {?}\n */\nexport function setupRouter(ref, urlSerializer, contexts, location, injector, loader, compiler, config, opts = {}, urlHandlingStrategy, routeReuseStrategy) {\n const /** @type {?} */ router = new Router(null, urlSerializer, contexts, location, injector, loader, compiler, flatten(config));\n if (urlHandlingStrategy) {\n router.urlHandlingStrategy = urlHandlingStrategy;\n }\n if (routeReuseStrategy) {\n router.routeReuseStrategy = routeReuseStrategy;\n }\n if (opts.errorHandler) {\n router.errorHandler = opts.errorHandler;\n }\n if (opts.enableTracing) {\n const /** @type {?} */ dom = getDOM();\n router.events.subscribe(e => {\n dom.logGroup(`Router Event: ${((/** @type {?} */ (e.constructor))).name}`);\n dom.log(e.toString());\n dom.log(e);\n dom.logGroupEnd();\n });\n }\n if (opts.onSameUrlNavigation) {\n router.onSameUrlNavigation = opts.onSameUrlNavigation;\n }\n if (opts.paramsInheritanceStrategy) {\n router.paramsInheritanceStrategy = opts.paramsInheritanceStrategy;\n }\n return router;\n}\n/**\n * @param {?} router\n * @return {?}\n */\nexport function rootRoute(router) {\n return router.routerState.root;\n}\n/**\n * To initialize the router properly we need to do in two steps:\n *\n * We need to start the navigation in a APP_INITIALIZER to block the bootstrap if\n * a resolver or a guards executes asynchronously. Second, we need to actually run\n * activation in a BOOTSTRAP_LISTENER. We utilize the afterPreactivation\n * hook provided by the router to do that.\n *\n * The router navigation starts, reaches the point when preactivation is done, and then\n * pauses. It waits for the hook to be resolved. We then resolve it only in a bootstrap listener.\n */\nexport class RouterInitializer {\n /**\n * @param {?} injector\n */\n constructor(injector) {\n this.injector = injector;\n this.initNavigation = false;\n this.resultOfPreactivationDone = new Subject();\n }\n /**\n * @return {?}\n */\n appInitializer() {\n const /** @type {?} */ p = this.injector.get(LOCATION_INITIALIZED, Promise.resolve(null));\n return p.then(() => {\n let /** @type {?} */ resolve = /** @type {?} */ ((null));\n const /** @type {?} */ res = new Promise(r => resolve = r);\n const /** @type {?} */ router = this.injector.get(Router);\n const /** @type {?} */ opts = this.injector.get(ROUTER_CONFIGURATION);\n if (this.isLegacyDisabled(opts) || this.isLegacyEnabled(opts)) {\n resolve(true);\n }\n else if (opts.initialNavigation === 'disabled') {\n router.setUpLocationChangeListener();\n resolve(true);\n }\n else if (opts.initialNavigation === 'enabled') {\n router.hooks.afterPreactivation = () => {\n // only the initial navigation should be delayed\n if (!this.initNavigation) {\n this.initNavigation = true;\n resolve(true);\n return this.resultOfPreactivationDone;\n // subsequent navigations should not be delayed\n }\n else {\n return /** @type {?} */ (of(null));\n }\n };\n router.initialNavigation();\n }\n else {\n throw new Error(`Invalid initialNavigation options: '${opts.initialNavigation}'`);\n }\n return res;\n });\n }\n /**\n * @param {?} bootstrappedComponentRef\n * @return {?}\n */\n bootstrapListener(bootstrappedComponentRef) {\n const /** @type {?} */ opts = this.injector.get(ROUTER_CONFIGURATION);\n const /** @type {?} */ preloader = this.injector.get(RouterPreloader);\n const /** @type {?} */ router = this.injector.get(Router);\n const /** @type {?} */ ref = this.injector.get(ApplicationRef);\n if (bootstrappedComponentRef !== ref.components[0]) {\n return;\n }\n if (this.isLegacyEnabled(opts)) {\n router.initialNavigation();\n }\n else if (this.isLegacyDisabled(opts)) {\n router.setUpLocationChangeListener();\n }\n preloader.setUpPreloading();\n router.resetRootComponentType(ref.componentTypes[0]);\n this.resultOfPreactivationDone.next(/** @type {?} */ ((null)));\n this.resultOfPreactivationDone.complete();\n }\n /**\n * @param {?} opts\n * @return {?}\n */\n isLegacyEnabled(opts) {\n return opts.initialNavigation === 'legacy_enabled' || opts.initialNavigation === true ||\n opts.initialNavigation === undefined;\n }\n /**\n * @param {?} opts\n * @return {?}\n */\n isLegacyDisabled(opts) {\n return opts.initialNavigation === 'legacy_disabled' || opts.initialNavigation === false;\n }\n}\nRouterInitializer.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nRouterInitializer.ctorParameters = () => [\n { type: Injector, },\n];\nfunction RouterInitializer_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterInitializer.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterInitializer.ctorParameters;\n /** @type {?} */\n RouterInitializer.prototype.initNavigation;\n /** @type {?} */\n RouterInitializer.prototype.resultOfPreactivationDone;\n /** @type {?} */\n RouterInitializer.prototype.injector;\n}\n/**\n * @param {?} r\n * @return {?}\n */\nexport function getAppInitializer(r) {\n return r.appInitializer.bind(r);\n}\n/**\n * @param {?} r\n * @return {?}\n */\nexport function getBootstrapListener(r) {\n return r.bootstrapListener.bind(r);\n}\n/**\n * A token for the router initializer that will be called after the app is bootstrapped.\n *\n * \\@experimental\n */\nexport const /** @type {?} */ ROUTER_INITIALIZER = new InjectionToken('Router Initializer');\n/**\n * @return {?}\n */\nexport function provideRouterInitializer() {\n return [\n RouterInitializer,\n {\n provide: APP_INITIALIZER,\n multi: true,\n useFactory: getAppInitializer,\n deps: [RouterInitializer]\n },\n { provide: ROUTER_INITIALIZER, useFactory: getBootstrapListener, deps: [RouterInitializer] },\n { provide: APP_BOOTSTRAP_LISTENER, multi: true, useExisting: ROUTER_INITIALIZER },\n ];\n}\n//# sourceMappingURL=router_module.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Version } from '@angular/core';\n/**\n * \\@stable\n */\nexport const /** @type {?} */ VERSION = new Version('5.2.10');\n//# sourceMappingURL=version.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport { ROUTER_PROVIDERS as ɵROUTER_PROVIDERS } from './router_module';\nexport { flatten as ɵflatten } from './utils/collection';\n//# sourceMappingURL=private_export.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport { RouterLink, RouterLinkWithHref } from './directives/router_link';\nexport { RouterLinkActive } from './directives/router_link_active';\nexport { RouterOutlet } from './directives/router_outlet';\nexport { ActivationEnd, ActivationStart, ChildActivationEnd, ChildActivationStart, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RouterEvent, RoutesRecognized } from './events';\nexport { RouteReuseStrategy } from './route_reuse_strategy';\nexport { Router } from './router';\nexport { ROUTES } from './router_config_loader';\nexport { ROUTER_CONFIGURATION, ROUTER_INITIALIZER, RouterModule, provideRoutes } from './router_module';\nexport { ChildrenOutletContexts, OutletContext } from './router_outlet_context';\nexport { NoPreloading, PreloadAllModules, PreloadingStrategy, RouterPreloader } from './router_preloader';\nexport { ActivatedRoute, ActivatedRouteSnapshot, RouterState, RouterStateSnapshot } from './router_state';\nexport { PRIMARY_OUTLET, convertToParamMap } from './shared';\nexport { UrlHandlingStrategy } from './url_handling_strategy';\nexport { DefaultUrlSerializer, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree } from './url_tree';\nexport { VERSION } from './version';\nexport { ɵROUTER_PROVIDERS, ɵflatten } from './private_export';\n//# sourceMappingURL=index.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\nexport { RouterLink, RouterLinkWithHref, RouterLinkActive, RouterOutlet, ActivationEnd, ActivationStart, ChildActivationEnd, ChildActivationStart, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RouterEvent, RoutesRecognized, RouteReuseStrategy, Router, ROUTES, ROUTER_CONFIGURATION, ROUTER_INITIALIZER, RouterModule, provideRoutes, ChildrenOutletContexts, OutletContext, NoPreloading, PreloadAllModules, PreloadingStrategy, RouterPreloader, ActivatedRoute, ActivatedRouteSnapshot, RouterState, RouterStateSnapshot, PRIMARY_OUTLET, convertToParamMap, UrlHandlingStrategy, DefaultUrlSerializer, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree, VERSION, ɵROUTER_PROVIDERS, ɵflatten } from './src/index';\n// This file only reexports content of the `src` folder. Keep it that way.\n//# sourceMappingURL=public_api.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Generated bundle index. Do not edit.\n */\nexport { RouterLink, RouterLinkWithHref, RouterLinkActive, RouterOutlet, ActivationEnd, ActivationStart, ChildActivationEnd, ChildActivationStart, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RouterEvent, RoutesRecognized, RouteReuseStrategy, Router, ROUTES, ROUTER_CONFIGURATION, ROUTER_INITIALIZER, RouterModule, provideRoutes, ChildrenOutletContexts, OutletContext, NoPreloading, PreloadAllModules, PreloadingStrategy, RouterPreloader, ActivatedRoute, ActivatedRouteSnapshot, RouterState, RouterStateSnapshot, PRIMARY_OUTLET, convertToParamMap, UrlHandlingStrategy, DefaultUrlSerializer, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree, VERSION, ɵROUTER_PROVIDERS, ɵflatten } from './public_api';\nexport { ROUTER_FORROOT_GUARD as ɵa, RouterInitializer as ɵg, getAppInitializer as ɵh, getBootstrapListener as ɵi, provideForRootGuard as ɵd, provideLocationStrategy as ɵc, provideRouterInitializer as ɵj, rootRoute as ɵf, routerNgProbeToken as ɵb, setupRouter as ɵe } from './src/router_module';\nexport { Tree as ɵk, TreeNode as ɵl } from './src/utils/tree';\n//# sourceMappingURL=router.js.map"],"names":["last","map","l.last","isObservable","isPromise","NoMatch","split","match","getOutlet","getDOM"],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sources":["../../../packages/router/src/events.js","../../../packages/router/src/shared.js","../../../packages/router/src/config.js","../../../packages/router/src/utils/collection.js","../../../packages/router/src/url_tree.js","../../../packages/router/src/apply_redirects.js","../../../packages/router/src/utils/tree.js","../../../packages/router/src/router_state.js","../../../packages/router/src/create_router_state.js","../../../packages/router/src/create_url_tree.js","../../../packages/router/src/pre_activation.js","../../../packages/router/src/recognize.js","../../../packages/router/src/route_reuse_strategy.js","../../../packages/router/src/router_config_loader.js","../../../packages/router/src/url_handling_strategy.js","../../../packages/router/src/router.js","../../../packages/router/src/directives/router_link.js","../../../packages/router/src/directives/router_link_active.js","../../../packages/router/src/router_outlet_context.js","../../../packages/router/src/directives/router_outlet.js","../../../packages/router/src/router_preloader.js","../../../packages/router/src/router_module.js","../../../packages/router/src/version.js","../../../packages/router/src/private_export.js","../../../packages/router/src/index.js","../../../packages/router/public_api.js","../../../packages/router/router.js"],"sourcesContent":["/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * \\@whatItDoes Base for events the Router goes through, as opposed to events tied to a specific\n * Route. `RouterEvent`s will only be fired one time for any given navigation.\n *\n * Example:\n *\n * ```\n * class MyService {\n * constructor(public router: Router, logger: Logger) {\n * router.events.filter(e => e instanceof RouterEvent).subscribe(e => {\n * logger.log(e.id, e.url);\n * });\n * }\n * }\n * ```\n *\n * \\@experimental\n */\nexport class RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n */\n constructor(id, url) {\n this.id = id;\n this.url = url;\n }\n}\nfunction RouterEvent_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n RouterEvent.prototype.id;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n RouterEvent.prototype.url;\n}\n/**\n * \\@whatItDoes Represents an event triggered when a navigation starts.\n *\n * \\@stable\n */\nexport class NavigationStart extends RouterEvent {\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() { return `NavigationStart(id: ${this.id}, url: '${this.url}')`; }\n}\n/**\n * \\@whatItDoes Represents an event triggered when a navigation ends successfully.\n *\n * \\@stable\n */\nexport class NavigationEnd extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} urlAfterRedirects\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, urlAfterRedirects) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() {\n return `NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`;\n }\n}\nfunction NavigationEnd_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n NavigationEnd.prototype.urlAfterRedirects;\n}\n/**\n * \\@whatItDoes Represents an event triggered when a navigation is canceled.\n *\n * \\@stable\n */\nexport class NavigationCancel extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} reason\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, reason) {\n super(id, url);\n this.reason = reason;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() { return `NavigationCancel(id: ${this.id}, url: '${this.url}')`; }\n}\nfunction NavigationCancel_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n NavigationCancel.prototype.reason;\n}\n/**\n * \\@whatItDoes Represents an event triggered when a navigation fails due to an unexpected error.\n *\n * \\@stable\n */\nexport class NavigationError extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} error\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, error) {\n super(id, url);\n this.error = error;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() {\n return `NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`;\n }\n}\nfunction NavigationError_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n NavigationError.prototype.error;\n}\n/**\n * \\@whatItDoes Represents an event triggered when routes are recognized.\n *\n * \\@stable\n */\nexport class RoutesRecognized extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} urlAfterRedirects\n * @param {?} state\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, urlAfterRedirects, state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() {\n return `RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\nfunction RoutesRecognized_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n RoutesRecognized.prototype.urlAfterRedirects;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n RoutesRecognized.prototype.state;\n}\n/**\n * \\@whatItDoes Represents the start of the Guard phase of routing.\n *\n * \\@experimental\n */\nexport class GuardsCheckStart extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} urlAfterRedirects\n * @param {?} state\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, urlAfterRedirects, state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n }\n /**\n * @return {?}\n */\n toString() {\n return `GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\nfunction GuardsCheckStart_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n GuardsCheckStart.prototype.urlAfterRedirects;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n GuardsCheckStart.prototype.state;\n}\n/**\n * \\@whatItDoes Represents the end of the Guard phase of routing.\n *\n * \\@experimental\n */\nexport class GuardsCheckEnd extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} urlAfterRedirects\n * @param {?} state\n * @param {?} shouldActivate\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, urlAfterRedirects, state, shouldActivate) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.shouldActivate = shouldActivate;\n }\n /**\n * @return {?}\n */\n toString() {\n return `GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`;\n }\n}\nfunction GuardsCheckEnd_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n GuardsCheckEnd.prototype.urlAfterRedirects;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n GuardsCheckEnd.prototype.state;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n GuardsCheckEnd.prototype.shouldActivate;\n}\n/**\n * \\@whatItDoes Represents the start of the Resolve phase of routing. The timing of this\n * event may change, thus it's experimental. In the current iteration it will run\n * in the \"resolve\" phase whether there's things to resolve or not. In the future this\n * behavior may change to only run when there are things to be resolved.\n *\n * \\@experimental\n */\nexport class ResolveStart extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} urlAfterRedirects\n * @param {?} state\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, urlAfterRedirects, state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n }\n /**\n * @return {?}\n */\n toString() {\n return `ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\nfunction ResolveStart_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ResolveStart.prototype.urlAfterRedirects;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ResolveStart.prototype.state;\n}\n/**\n * \\@whatItDoes Represents the end of the Resolve phase of routing. See note on\n * {\\@link ResolveStart} for use of this experimental API.\n *\n * \\@experimental\n */\nexport class ResolveEnd extends RouterEvent {\n /**\n * @param {?} id\n * @param {?} url\n * @param {?} urlAfterRedirects\n * @param {?} state\n */\n constructor(/** @docsNotRequired */\n /** @docsNotRequired */\n id, /** @docsNotRequired */\n /** @docsNotRequired */\n url, urlAfterRedirects, state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n }\n /**\n * @return {?}\n */\n toString() {\n return `ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\nfunction ResolveEnd_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ResolveEnd.prototype.urlAfterRedirects;\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ResolveEnd.prototype.state;\n}\n/**\n * \\@whatItDoes Represents an event triggered before lazy loading a route config.\n *\n * \\@experimental\n */\nexport class RouteConfigLoadStart {\n /**\n * @param {?} route\n */\n constructor(route) {\n this.route = route;\n }\n /**\n * @return {?}\n */\n toString() { return `RouteConfigLoadStart(path: ${this.route.path})`; }\n}\nfunction RouteConfigLoadStart_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n RouteConfigLoadStart.prototype.route;\n}\n/**\n * \\@whatItDoes Represents an event triggered when a route has been lazy loaded.\n *\n * \\@experimental\n */\nexport class RouteConfigLoadEnd {\n /**\n * @param {?} route\n */\n constructor(route) {\n this.route = route;\n }\n /**\n * @return {?}\n */\n toString() { return `RouteConfigLoadEnd(path: ${this.route.path})`; }\n}\nfunction RouteConfigLoadEnd_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n RouteConfigLoadEnd.prototype.route;\n}\n/**\n * \\@whatItDoes Represents the start of end of the Resolve phase of routing. See note on\n * {\\@link ChildActivationEnd} for use of this experimental API.\n *\n * \\@experimental\n */\nexport class ChildActivationStart {\n /**\n * @param {?} snapshot\n */\n constructor(snapshot) {\n this.snapshot = snapshot;\n }\n /**\n * @return {?}\n */\n toString() {\n const /** @type {?} */ path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ChildActivationStart(path: '${path}')`;\n }\n}\nfunction ChildActivationStart_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ChildActivationStart.prototype.snapshot;\n}\n/**\n * \\@whatItDoes Represents the start of end of the Resolve phase of routing. See note on\n * {\\@link ChildActivationStart} for use of this experimental API.\n *\n * \\@experimental\n */\nexport class ChildActivationEnd {\n /**\n * @param {?} snapshot\n */\n constructor(snapshot) {\n this.snapshot = snapshot;\n }\n /**\n * @return {?}\n */\n toString() {\n const /** @type {?} */ path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ChildActivationEnd(path: '${path}')`;\n }\n}\nfunction ChildActivationEnd_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ChildActivationEnd.prototype.snapshot;\n}\n/**\n * \\@whatItDoes Represents the start of end of the Resolve phase of routing. See note on\n * {\\@link ActivationEnd} for use of this experimental API.\n *\n * \\@experimental\n */\nexport class ActivationStart {\n /**\n * @param {?} snapshot\n */\n constructor(snapshot) {\n this.snapshot = snapshot;\n }\n /**\n * @return {?}\n */\n toString() {\n const /** @type {?} */ path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ActivationStart(path: '${path}')`;\n }\n}\nfunction ActivationStart_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ActivationStart.prototype.snapshot;\n}\n/**\n * \\@whatItDoes Represents the start of end of the Resolve phase of routing. See note on\n * {\\@link ActivationStart} for use of this experimental API.\n *\n * \\@experimental\n */\nexport class ActivationEnd {\n /**\n * @param {?} snapshot\n */\n constructor(snapshot) {\n this.snapshot = snapshot;\n }\n /**\n * @return {?}\n */\n toString() {\n const /** @type {?} */ path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ActivationEnd(path: '${path}')`;\n }\n}\nfunction ActivationEnd_tsickle_Closure_declarations() {\n /**\n * \\@docsNotRequired\n * @type {?}\n */\n ActivationEnd.prototype.snapshot;\n}\n//# sourceMappingURL=events.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * \\@whatItDoes Name of the primary outlet.\n *\n * \\@stable\n */\nexport const /** @type {?} */ PRIMARY_OUTLET = 'primary';\n/**\n * Matrix and Query parameters.\n *\n * `ParamMap` makes it easier to work with parameters as they could have either a single value or\n * multiple value. Because this should be known by the user, calling `get` or `getAll` returns the\n * correct type (either `string` or `string[]`).\n *\n * The API is inspired by the URLSearchParams interface.\n * see https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams\n *\n * \\@stable\n * @record\n */\nexport function ParamMap() { }\nfunction ParamMap_tsickle_Closure_declarations() {\n /** @type {?} */\n ParamMap.prototype.has;\n /**\n * Return a single value for the given parameter name:\n * - the value when the parameter has a single value,\n * - the first value if the parameter has multiple values,\n * - `null` when there is no such parameter.\n * @type {?}\n */\n ParamMap.prototype.get;\n /**\n * Return an array of values for the given parameter name.\n *\n * If there is no such parameter, an empty array is returned.\n * @type {?}\n */\n ParamMap.prototype.getAll;\n /**\n * Name of the parameters\n * @type {?}\n */\n ParamMap.prototype.keys;\n}\nclass ParamsAsMap {\n /**\n * @param {?} params\n */\n constructor(params) { this.params = params || {}; }\n /**\n * @param {?} name\n * @return {?}\n */\n has(name) { return this.params.hasOwnProperty(name); }\n /**\n * @param {?} name\n * @return {?}\n */\n get(name) {\n if (this.has(name)) {\n const /** @type {?} */ v = this.params[name];\n return Array.isArray(v) ? v[0] : v;\n }\n return null;\n }\n /**\n * @param {?} name\n * @return {?}\n */\n getAll(name) {\n if (this.has(name)) {\n const /** @type {?} */ v = this.params[name];\n return Array.isArray(v) ? v : [v];\n }\n return [];\n }\n /**\n * @return {?}\n */\n get keys() { return Object.keys(this.params); }\n}\nfunction ParamsAsMap_tsickle_Closure_declarations() {\n /** @type {?} */\n ParamsAsMap.prototype.params;\n}\n/**\n * Convert a {\\@link Params} instance to a {\\@link ParamMap}.\n *\n * \\@stable\n * @param {?} params\n * @return {?}\n */\nexport function convertToParamMap(params) {\n return new ParamsAsMap(params);\n}\nconst /** @type {?} */ NAVIGATION_CANCELING_ERROR = 'ngNavigationCancelingError';\n/**\n * @param {?} message\n * @return {?}\n */\nexport function navigationCancelingError(message) {\n const /** @type {?} */ error = Error('NavigationCancelingError: ' + message);\n (/** @type {?} */ (error))[NAVIGATION_CANCELING_ERROR] = true;\n return error;\n}\n/**\n * @param {?} error\n * @return {?}\n */\nexport function isNavigationCancelingError(error) {\n return error && (/** @type {?} */ (error))[NAVIGATION_CANCELING_ERROR];\n}\n/**\n * @param {?} segments\n * @param {?} segmentGroup\n * @param {?} route\n * @return {?}\n */\nexport function defaultUrlMatcher(segments, segmentGroup, route) {\n const /** @type {?} */ parts = /** @type {?} */ ((route.path)).split('/');\n if (parts.length > segments.length) {\n // The actual URL is shorter than the config, no match\n return null;\n }\n if (route.pathMatch === 'full' &&\n (segmentGroup.hasChildren() || parts.length < segments.length)) {\n // The config is longer than the actual URL but we are looking for a full match, return null\n return null;\n }\n const /** @type {?} */ posParams = {};\n // Check each config part against the actual URL\n for (let /** @type {?} */ index = 0; index < parts.length; index++) {\n const /** @type {?} */ part = parts[index];\n const /** @type {?} */ segment = segments[index];\n const /** @type {?} */ isParameter = part.startsWith(':');\n if (isParameter) {\n posParams[part.substring(1)] = segment;\n }\n else if (part !== segment.path) {\n // The actual URL part does not match the config, no match\n return null;\n }\n }\n return { consumed: segments.slice(0, parts.length), posParams };\n}\n//# sourceMappingURL=shared.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { PRIMARY_OUTLET } from './shared';\n/**\n * See {\\@link Routes} for more details.\n * \\@stable\n * @record\n */\nexport function Route() { }\nfunction Route_tsickle_Closure_declarations() {\n /** @type {?|undefined} */\n Route.prototype.path;\n /** @type {?|undefined} */\n Route.prototype.pathMatch;\n /** @type {?|undefined} */\n Route.prototype.matcher;\n /** @type {?|undefined} */\n Route.prototype.component;\n /** @type {?|undefined} */\n Route.prototype.redirectTo;\n /** @type {?|undefined} */\n Route.prototype.outlet;\n /** @type {?|undefined} */\n Route.prototype.canActivate;\n /** @type {?|undefined} */\n Route.prototype.canActivateChild;\n /** @type {?|undefined} */\n Route.prototype.canDeactivate;\n /** @type {?|undefined} */\n Route.prototype.canLoad;\n /** @type {?|undefined} */\n Route.prototype.data;\n /** @type {?|undefined} */\n Route.prototype.resolve;\n /** @type {?|undefined} */\n Route.prototype.children;\n /** @type {?|undefined} */\n Route.prototype.loadChildren;\n /** @type {?|undefined} */\n Route.prototype.runGuardsAndResolvers;\n /**\n * Filled for routes with `loadChildren` once the module has been loaded\n * \\@internal\n * @type {?|undefined}\n */\n Route.prototype._loadedConfig;\n}\nexport class LoadedRouterConfig {\n /**\n * @param {?} routes\n * @param {?} module\n */\n constructor(routes, module) {\n this.routes = routes;\n this.module = module;\n }\n}\nfunction LoadedRouterConfig_tsickle_Closure_declarations() {\n /** @type {?} */\n LoadedRouterConfig.prototype.routes;\n /** @type {?} */\n LoadedRouterConfig.prototype.module;\n}\n/**\n * @param {?} config\n * @param {?=} parentPath\n * @return {?}\n */\nexport function validateConfig(config, parentPath = '') {\n // forEach doesn't iterate undefined values\n for (let /** @type {?} */ i = 0; i < config.length; i++) {\n const /** @type {?} */ route = config[i];\n const /** @type {?} */ fullPath = getFullPath(parentPath, route);\n validateNode(route, fullPath);\n }\n}\n/**\n * @param {?} route\n * @param {?} fullPath\n * @return {?}\n */\nfunction validateNode(route, fullPath) {\n if (!route) {\n throw new Error(`\n Invalid configuration of route '${fullPath}': Encountered undefined route.\n The reason might be an extra comma.\n\n Example:\n const routes: Routes = [\n { path: '', redirectTo: '/dashboard', pathMatch: 'full' },\n { path: 'dashboard', component: DashboardComponent },, << two commas\n { path: 'detail/:id', component: HeroDetailComponent }\n ];\n `);\n }\n if (Array.isArray(route)) {\n throw new Error(`Invalid configuration of route '${fullPath}': Array cannot be specified`);\n }\n if (!route.component && (route.outlet && route.outlet !== PRIMARY_OUTLET)) {\n throw new Error(`Invalid configuration of route '${fullPath}': a componentless route cannot have a named outlet set`);\n }\n if (route.redirectTo && route.children) {\n throw new Error(`Invalid configuration of route '${fullPath}': redirectTo and children cannot be used together`);\n }\n if (route.redirectTo && route.loadChildren) {\n throw new Error(`Invalid configuration of route '${fullPath}': redirectTo and loadChildren cannot be used together`);\n }\n if (route.children && route.loadChildren) {\n throw new Error(`Invalid configuration of route '${fullPath}': children and loadChildren cannot be used together`);\n }\n if (route.redirectTo && route.component) {\n throw new Error(`Invalid configuration of route '${fullPath}': redirectTo and component cannot be used together`);\n }\n if (route.path && route.matcher) {\n throw new Error(`Invalid configuration of route '${fullPath}': path and matcher cannot be used together`);\n }\n if (route.redirectTo === void 0 && !route.component && !route.children && !route.loadChildren) {\n throw new Error(`Invalid configuration of route '${fullPath}'. One of the following must be provided: component, redirectTo, children or loadChildren`);\n }\n if (route.path === void 0 && route.matcher === void 0) {\n throw new Error(`Invalid configuration of route '${fullPath}': routes must have either a path or a matcher specified`);\n }\n if (typeof route.path === 'string' && route.path.charAt(0) === '/') {\n throw new Error(`Invalid configuration of route '${fullPath}': path cannot start with a slash`);\n }\n if (route.path === '' && route.redirectTo !== void 0 && route.pathMatch === void 0) {\n const /** @type {?} */ exp = `The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.`;\n throw new Error(`Invalid configuration of route '{path: \"${fullPath}\", redirectTo: \"${route.redirectTo}\"}': please provide 'pathMatch'. ${exp}`);\n }\n if (route.pathMatch !== void 0 && route.pathMatch !== 'full' && route.pathMatch !== 'prefix') {\n throw new Error(`Invalid configuration of route '${fullPath}': pathMatch can only be set to 'prefix' or 'full'`);\n }\n if (route.children) {\n validateConfig(route.children, fullPath);\n }\n}\n/**\n * @param {?} parentPath\n * @param {?} currentRoute\n * @return {?}\n */\nfunction getFullPath(parentPath, currentRoute) {\n if (!currentRoute) {\n return parentPath;\n }\n if (!parentPath && !currentRoute.path) {\n return '';\n }\n else if (parentPath && !currentRoute.path) {\n return `${parentPath}/`;\n }\n else if (!parentPath && currentRoute.path) {\n return currentRoute.path;\n }\n else {\n return `${parentPath}/${currentRoute.path}`;\n }\n}\n/**\n * @param {?} r\n * @return {?}\n */\nexport function copyConfig(r) {\n const /** @type {?} */ children = r.children && r.children.map(copyConfig);\n return children ? Object.assign({}, r, { children }) : Object.assign({}, r);\n}\n//# sourceMappingURL=config.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ɵisObservable as isObservable, ɵisPromise as isPromise } from '@angular/core';\nimport { fromPromise } from 'rxjs/observable/fromPromise';\nimport { of } from 'rxjs/observable/of';\nimport { concatAll } from 'rxjs/operator/concatAll';\nimport { every } from 'rxjs/operator/every';\nimport * as l from 'rxjs/operator/last';\nimport { map } from 'rxjs/operator/map';\nimport { mergeAll } from 'rxjs/operator/mergeAll';\nimport { PRIMARY_OUTLET } from '../shared';\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nexport function shallowEqualArrays(a, b) {\n if (a.length !== b.length)\n return false;\n for (let /** @type {?} */ i = 0; i < a.length; ++i) {\n if (!shallowEqual(a[i], b[i]))\n return false;\n }\n return true;\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nexport function shallowEqual(a, b) {\n const /** @type {?} */ k1 = Object.keys(a);\n const /** @type {?} */ k2 = Object.keys(b);\n if (k1.length != k2.length) {\n return false;\n }\n let /** @type {?} */ key;\n for (let /** @type {?} */ i = 0; i < k1.length; i++) {\n key = k1[i];\n if (a[key] !== b[key]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Flattens single-level nested arrays.\n * @template T\n * @param {?} arr\n * @return {?}\n */\nexport function flatten(arr) {\n return Array.prototype.concat.apply([], arr);\n}\n/**\n * Return the last element of an array.\n * @template T\n * @param {?} a\n * @return {?}\n */\nexport function last(a) {\n return a.length > 0 ? a[a.length - 1] : null;\n}\n/**\n * Verifys all booleans in an array are `true`.\n * @param {?} bools\n * @return {?}\n */\nexport function and(bools) {\n return !bools.some(v => !v);\n}\n/**\n * @template K, V\n * @param {?} map\n * @param {?} callback\n * @return {?}\n */\nexport function forEach(map, callback) {\n for (const /** @type {?} */ prop in map) {\n if (map.hasOwnProperty(prop)) {\n callback(map[prop], prop);\n }\n }\n}\n/**\n * @template A, B\n * @param {?} obj\n * @param {?} fn\n * @return {?}\n */\nexport function waitForMap(obj, fn) {\n if (Object.keys(obj).length === 0) {\n return of({});\n }\n const /** @type {?} */ waitHead = [];\n const /** @type {?} */ waitTail = [];\n const /** @type {?} */ res = {};\n forEach(obj, (a, k) => {\n const /** @type {?} */ mapped = map.call(fn(k, a), (r) => res[k] = r);\n if (k === PRIMARY_OUTLET) {\n waitHead.push(mapped);\n }\n else {\n waitTail.push(mapped);\n }\n });\n const /** @type {?} */ concat$ = concatAll.call(of(...waitHead, ...waitTail));\n const /** @type {?} */ last$ = l.last.call(concat$);\n return map.call(last$, () => res);\n}\n/**\n * ANDs Observables by merging all input observables, reducing to an Observable verifying all\n * input Observables return `true`.\n * @param {?} observables\n * @return {?}\n */\nexport function andObservables(observables) {\n const /** @type {?} */ merged$ = mergeAll.call(observables);\n return every.call(merged$, (result) => result === true);\n}\n/**\n * @template T\n * @param {?} value\n * @return {?}\n */\nexport function wrapIntoObservable(value) {\n if (isObservable(value)) {\n return value;\n }\n if (isPromise(value)) {\n // Use `Promise.resolve()` to wrap promise-like instances.\n // Required ie when a Resolver returns a AngularJS `$q` promise to correctly trigger the\n // change detection.\n return fromPromise(Promise.resolve(value));\n }\n return of(/** @type {?} */ (value));\n}\n//# sourceMappingURL=collection.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { PRIMARY_OUTLET, convertToParamMap } from './shared';\nimport { forEach, shallowEqual } from './utils/collection';\n/**\n * @return {?}\n */\nexport function createEmptyUrlTree() {\n return new UrlTree(new UrlSegmentGroup([], {}), {}, null);\n}\n/**\n * @param {?} container\n * @param {?} containee\n * @param {?} exact\n * @return {?}\n */\nexport function containsTree(container, containee, exact) {\n if (exact) {\n return equalQueryParams(container.queryParams, containee.queryParams) &&\n equalSegmentGroups(container.root, containee.root);\n }\n return containsQueryParams(container.queryParams, containee.queryParams) &&\n containsSegmentGroup(container.root, containee.root);\n}\n/**\n * @param {?} container\n * @param {?} containee\n * @return {?}\n */\nfunction equalQueryParams(container, containee) {\n return shallowEqual(container, containee);\n}\n/**\n * @param {?} container\n * @param {?} containee\n * @return {?}\n */\nfunction equalSegmentGroups(container, containee) {\n if (!equalPath(container.segments, containee.segments))\n return false;\n if (container.numberOfChildren !== containee.numberOfChildren)\n return false;\n for (const /** @type {?} */ c in containee.children) {\n if (!container.children[c])\n return false;\n if (!equalSegmentGroups(container.children[c], containee.children[c]))\n return false;\n }\n return true;\n}\n/**\n * @param {?} container\n * @param {?} containee\n * @return {?}\n */\nfunction containsQueryParams(container, containee) {\n return Object.keys(containee).length <= Object.keys(container).length &&\n Object.keys(containee).every(key => containee[key] === container[key]);\n}\n/**\n * @param {?} container\n * @param {?} containee\n * @return {?}\n */\nfunction containsSegmentGroup(container, containee) {\n return containsSegmentGroupHelper(container, containee, containee.segments);\n}\n/**\n * @param {?} container\n * @param {?} containee\n * @param {?} containeePaths\n * @return {?}\n */\nfunction containsSegmentGroupHelper(container, containee, containeePaths) {\n if (container.segments.length > containeePaths.length) {\n const /** @type {?} */ current = container.segments.slice(0, containeePaths.length);\n if (!equalPath(current, containeePaths))\n return false;\n if (containee.hasChildren())\n return false;\n return true;\n }\n else if (container.segments.length === containeePaths.length) {\n if (!equalPath(container.segments, containeePaths))\n return false;\n for (const /** @type {?} */ c in containee.children) {\n if (!container.children[c])\n return false;\n if (!containsSegmentGroup(container.children[c], containee.children[c]))\n return false;\n }\n return true;\n }\n else {\n const /** @type {?} */ current = containeePaths.slice(0, container.segments.length);\n const /** @type {?} */ next = containeePaths.slice(container.segments.length);\n if (!equalPath(container.segments, current))\n return false;\n if (!container.children[PRIMARY_OUTLET])\n return false;\n return containsSegmentGroupHelper(container.children[PRIMARY_OUTLET], containee, next);\n }\n}\n/**\n * \\@whatItDoes Represents the parsed URL.\n *\n * \\@howToUse\n *\n * ```\n * \\@Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const tree: UrlTree =\n * router.parseUrl('/team/33/(user/victor//support:help)?debug=true#fragment');\n * const f = tree.fragment; // return 'fragment'\n * const q = tree.queryParams; // returns {debug: 'true'}\n * const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];\n * const s: UrlSegment[] = g.segments; // returns 2 segments 'team' and '33'\n * g.children[PRIMARY_OUTLET].segments; // returns 2 segments 'user' and 'victor'\n * g.children['support'].segments; // return 1 segment 'help'\n * }\n * }\n * ```\n *\n * \\@description\n *\n * Since a router state is a tree, and the URL is nothing but a serialized state, the URL is a\n * serialized tree.\n * UrlTree is a data structure that provides a lot of affordances in dealing with URLs\n *\n * \\@stable\n */\nexport class UrlTree {\n /**\n * \\@internal\n * @param {?} root\n * @param {?} queryParams\n * @param {?} fragment\n */\n constructor(root, queryParams, fragment) {\n this.root = root;\n this.queryParams = queryParams;\n this.fragment = fragment;\n }\n /**\n * @return {?}\n */\n get queryParamMap() {\n if (!this._queryParamMap) {\n this._queryParamMap = convertToParamMap(this.queryParams);\n }\n return this._queryParamMap;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() { return DEFAULT_SERIALIZER.serialize(this); }\n}\nfunction UrlTree_tsickle_Closure_declarations() {\n /**\n * \\@internal\n * @type {?}\n */\n UrlTree.prototype._queryParamMap;\n /**\n * The root segment group of the URL tree\n * @type {?}\n */\n UrlTree.prototype.root;\n /**\n * The query params of the URL\n * @type {?}\n */\n UrlTree.prototype.queryParams;\n /**\n * The fragment of the URL\n * @type {?}\n */\n UrlTree.prototype.fragment;\n}\n/**\n * \\@whatItDoes Represents the parsed URL segment group.\n *\n * See {\\@link UrlTree} for more information.\n *\n * \\@stable\n */\nexport class UrlSegmentGroup {\n /**\n * @param {?} segments\n * @param {?} children\n */\n constructor(segments, children) {\n this.segments = segments;\n this.children = children;\n /**\n * The parent node in the url tree\n */\n this.parent = null;\n forEach(children, (v, k) => v.parent = this);\n }\n /**\n * Whether the segment has child segments\n * @return {?}\n */\n hasChildren() { return this.numberOfChildren > 0; }\n /**\n * Number of child segments\n * @return {?}\n */\n get numberOfChildren() { return Object.keys(this.children).length; }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() { return serializePaths(this); }\n}\nfunction UrlSegmentGroup_tsickle_Closure_declarations() {\n /**\n * \\@internal\n * @type {?}\n */\n UrlSegmentGroup.prototype._sourceSegment;\n /**\n * \\@internal\n * @type {?}\n */\n UrlSegmentGroup.prototype._segmentIndexShift;\n /**\n * The parent node in the url tree\n * @type {?}\n */\n UrlSegmentGroup.prototype.parent;\n /**\n * The URL segments of this group. See {\\@link UrlSegment} for more information\n * @type {?}\n */\n UrlSegmentGroup.prototype.segments;\n /**\n * The list of children of this group\n * @type {?}\n */\n UrlSegmentGroup.prototype.children;\n}\n/**\n * \\@whatItDoes Represents a single URL segment.\n *\n * \\@howToUse\n *\n * ```\n * \\@Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const tree: UrlTree = router.parseUrl('/team;id=33');\n * const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];\n * const s: UrlSegment[] = g.segments;\n * s[0].path; // returns 'team'\n * s[0].parameters; // returns {id: 33}\n * }\n * }\n * ```\n *\n * \\@description\n *\n * A UrlSegment is a part of a URL between the two slashes. It contains a path and the matrix\n * parameters associated with the segment.\n *\n * \\@stable\n */\nexport class UrlSegment {\n /**\n * @param {?} path\n * @param {?} parameters\n */\n constructor(path, parameters) {\n this.path = path;\n this.parameters = parameters;\n }\n /**\n * @return {?}\n */\n get parameterMap() {\n if (!this._parameterMap) {\n this._parameterMap = convertToParamMap(this.parameters);\n }\n return this._parameterMap;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n toString() { return serializePath(this); }\n}\nfunction UrlSegment_tsickle_Closure_declarations() {\n /**\n * \\@internal\n * @type {?}\n */\n UrlSegment.prototype._parameterMap;\n /**\n * The path part of a URL segment\n * @type {?}\n */\n UrlSegment.prototype.path;\n /**\n * The matrix parameters associated with a segment\n * @type {?}\n */\n UrlSegment.prototype.parameters;\n}\n/**\n * @param {?} as\n * @param {?} bs\n * @return {?}\n */\nexport function equalSegments(as, bs) {\n return equalPath(as, bs) && as.every((a, i) => shallowEqual(a.parameters, bs[i].parameters));\n}\n/**\n * @param {?} as\n * @param {?} bs\n * @return {?}\n */\nexport function equalPath(as, bs) {\n if (as.length !== bs.length)\n return false;\n return as.every((a, i) => a.path === bs[i].path);\n}\n/**\n * @template T\n * @param {?} segment\n * @param {?} fn\n * @return {?}\n */\nexport function mapChildrenIntoArray(segment, fn) {\n let /** @type {?} */ res = [];\n forEach(segment.children, (child, childOutlet) => {\n if (childOutlet === PRIMARY_OUTLET) {\n res = res.concat(fn(child, childOutlet));\n }\n });\n forEach(segment.children, (child, childOutlet) => {\n if (childOutlet !== PRIMARY_OUTLET) {\n res = res.concat(fn(child, childOutlet));\n }\n });\n return res;\n}\n/**\n * \\@whatItDoes Serializes and deserializes a URL string into a URL tree.\n *\n * \\@description The url serialization strategy is customizable. You can\n * make all URLs case insensitive by providing a custom UrlSerializer.\n *\n * See {\\@link DefaultUrlSerializer} for an example of a URL serializer.\n *\n * \\@stable\n * @abstract\n */\nexport class UrlSerializer {\n}\nfunction UrlSerializer_tsickle_Closure_declarations() {\n /**\n * Parse a url into a {\\@link UrlTree}\n * @abstract\n * @param {?} url\n * @return {?}\n */\n UrlSerializer.prototype.parse = function (url) { };\n /**\n * Converts a {\\@link UrlTree} into a url\n * @abstract\n * @param {?} tree\n * @return {?}\n */\n UrlSerializer.prototype.serialize = function (tree) { };\n}\n/**\n * \\@whatItDoes A default implementation of the {\\@link UrlSerializer}.\n *\n * \\@description\n *\n * Example URLs:\n *\n * ```\n * /inbox/33(popup:compose)\n * /inbox/33;open=true/messages/44\n * ```\n *\n * DefaultUrlSerializer uses parentheses to serialize secondary segments (e.g., popup:compose), the\n * colon syntax to specify the outlet, and the ';parameter=value' syntax (e.g., open=true) to\n * specify route specific parameters.\n *\n * \\@stable\n */\nexport class DefaultUrlSerializer {\n /**\n * Parses a url into a {\\@link UrlTree}\n * @param {?} url\n * @return {?}\n */\n parse(url) {\n const /** @type {?} */ p = new UrlParser(url);\n return new UrlTree(p.parseRootSegment(), p.parseQueryParams(), p.parseFragment());\n }\n /**\n * Converts a {\\@link UrlTree} into a url\n * @param {?} tree\n * @return {?}\n */\n serialize(tree) {\n const /** @type {?} */ segment = `/${serializeSegment(tree.root, true)}`;\n const /** @type {?} */ query = serializeQueryParams(tree.queryParams);\n const /** @type {?} */ fragment = typeof tree.fragment === `string` ? `#${encodeUriFragment((/** @type {?} */ ((tree.fragment))))}` : '';\n return `${segment}${query}${fragment}`;\n }\n}\nconst /** @type {?} */ DEFAULT_SERIALIZER = new DefaultUrlSerializer();\n/**\n * @param {?} segment\n * @return {?}\n */\nexport function serializePaths(segment) {\n return segment.segments.map(p => serializePath(p)).join('/');\n}\n/**\n * @param {?} segment\n * @param {?} root\n * @return {?}\n */\nfunction serializeSegment(segment, root) {\n if (!segment.hasChildren()) {\n return serializePaths(segment);\n }\n if (root) {\n const /** @type {?} */ primary = segment.children[PRIMARY_OUTLET] ?\n serializeSegment(segment.children[PRIMARY_OUTLET], false) :\n '';\n const /** @type {?} */ children = [];\n forEach(segment.children, (v, k) => {\n if (k !== PRIMARY_OUTLET) {\n children.push(`${k}:${serializeSegment(v, false)}`);\n }\n });\n return children.length > 0 ? `${primary}(${children.join('//')})` : primary;\n }\n else {\n const /** @type {?} */ children = mapChildrenIntoArray(segment, (v, k) => {\n if (k === PRIMARY_OUTLET) {\n return [serializeSegment(segment.children[PRIMARY_OUTLET], false)];\n }\n return [`${k}:${serializeSegment(v, false)}`];\n });\n return `${serializePaths(segment)}/(${children.join('//')})`;\n }\n}\n/**\n * Encodes a URI string with the default encoding. This function will only ever be called from\n * `encodeUriQuery` or `encodeUriSegment` as it's the base set of encodings to be used. We need\n * a custom encoding because encodeURIComponent is too aggressive and encodes stuff that doesn't\n * have to be encoded per https://url.spec.whatwg.org.\n * @param {?} s\n * @return {?}\n */\nfunction encodeUriString(s) {\n return encodeURIComponent(s)\n .replace(/%40/g, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',');\n}\n/**\n * This function should be used to encode both keys and values in a query string key/value. In\n * the following URL, you need to call encodeUriQuery on \"k\" and \"v\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n * @param {?} s\n * @return {?}\n */\nexport function encodeUriQuery(s) {\n return encodeUriString(s).replace(/%3B/gi, ';');\n}\n/**\n * This function should be used to encode a URL fragment. In the following URL, you need to call\n * encodeUriFragment on \"f\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n * @param {?} s\n * @return {?}\n */\nexport function encodeUriFragment(s) {\n return encodeURI(s);\n}\n/**\n * This function should be run on any URI segment as well as the key and value in a key/value\n * pair for matrix params. In the following URL, you need to call encodeUriSegment on \"html\",\n * \"mk\", and \"mv\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n * @param {?} s\n * @return {?}\n */\nexport function encodeUriSegment(s) {\n return encodeUriString(s).replace(/\\(/g, '%28').replace(/\\)/g, '%29').replace(/%26/gi, '&');\n}\n/**\n * @param {?} s\n * @return {?}\n */\nexport function decode(s) {\n return decodeURIComponent(s);\n}\n/**\n * @param {?} s\n * @return {?}\n */\nexport function decodeQuery(s) {\n return decode(s.replace(/\\+/g, '%20'));\n}\n/**\n * @param {?} path\n * @return {?}\n */\nexport function serializePath(path) {\n return `${encodeUriSegment(path.path)}${serializeMatrixParams(path.parameters)}`;\n}\n/**\n * @param {?} params\n * @return {?}\n */\nfunction serializeMatrixParams(params) {\n return Object.keys(params)\n .map(key => `;${encodeUriSegment(key)}=${encodeUriSegment(params[key])}`)\n .join('');\n}\n/**\n * @param {?} params\n * @return {?}\n */\nfunction serializeQueryParams(params) {\n const /** @type {?} */ strParams = Object.keys(params).map((name) => {\n const /** @type {?} */ value = params[name];\n return Array.isArray(value) ?\n value.map(v => `${encodeUriQuery(name)}=${encodeUriQuery(v)}`).join('&') :\n `${encodeUriQuery(name)}=${encodeUriQuery(value)}`;\n });\n return strParams.length ? `?${strParams.join(\"&\")}` : '';\n}\nconst /** @type {?} */ SEGMENT_RE = /^[^\\/()?;=&#]+/;\n/**\n * @param {?} str\n * @return {?}\n */\nfunction matchSegments(str) {\n const /** @type {?} */ match = str.match(SEGMENT_RE);\n return match ? match[0] : '';\n}\nconst /** @type {?} */ QUERY_PARAM_RE = /^[^=?&#]+/;\n/**\n * @param {?} str\n * @return {?}\n */\nfunction matchQueryParams(str) {\n const /** @type {?} */ match = str.match(QUERY_PARAM_RE);\n return match ? match[0] : '';\n}\nconst /** @type {?} */ QUERY_PARAM_VALUE_RE = /^[^?&#]+/;\n/**\n * @param {?} str\n * @return {?}\n */\nfunction matchUrlQueryParamValue(str) {\n const /** @type {?} */ match = str.match(QUERY_PARAM_VALUE_RE);\n return match ? match[0] : '';\n}\nclass UrlParser {\n /**\n * @param {?} url\n */\n constructor(url) {\n this.url = url;\n this.remaining = url;\n }\n /**\n * @return {?}\n */\n parseRootSegment() {\n this.consumeOptional('/');\n if (this.remaining === '' || this.peekStartsWith('?') || this.peekStartsWith('#')) {\n return new UrlSegmentGroup([], {});\n }\n // The root segment group never has segments\n return new UrlSegmentGroup([], this.parseChildren());\n }\n /**\n * @return {?}\n */\n parseQueryParams() {\n const /** @type {?} */ params = {};\n if (this.consumeOptional('?')) {\n do {\n this.parseQueryParam(params);\n } while (this.consumeOptional('&'));\n }\n return params;\n }\n /**\n * @return {?}\n */\n parseFragment() {\n return this.consumeOptional('#') ? decodeURIComponent(this.remaining) : null;\n }\n /**\n * @return {?}\n */\n parseChildren() {\n if (this.remaining === '') {\n return {};\n }\n this.consumeOptional('/');\n const /** @type {?} */ segments = [];\n if (!this.peekStartsWith('(')) {\n segments.push(this.parseSegment());\n }\n while (this.peekStartsWith('/') && !this.peekStartsWith('//') && !this.peekStartsWith('/(')) {\n this.capture('/');\n segments.push(this.parseSegment());\n }\n let /** @type {?} */ children = {};\n if (this.peekStartsWith('/(')) {\n this.capture('/');\n children = this.parseParens(true);\n }\n let /** @type {?} */ res = {};\n if (this.peekStartsWith('(')) {\n res = this.parseParens(false);\n }\n if (segments.length > 0 || Object.keys(children).length > 0) {\n res[PRIMARY_OUTLET] = new UrlSegmentGroup(segments, children);\n }\n return res;\n }\n /**\n * @return {?}\n */\n parseSegment() {\n const /** @type {?} */ path = matchSegments(this.remaining);\n if (path === '' && this.peekStartsWith(';')) {\n throw new Error(`Empty path url segment cannot have parameters: '${this.remaining}'.`);\n }\n this.capture(path);\n return new UrlSegment(decode(path), this.parseMatrixParams());\n }\n /**\n * @return {?}\n */\n parseMatrixParams() {\n const /** @type {?} */ params = {};\n while (this.consumeOptional(';')) {\n this.parseParam(params);\n }\n return params;\n }\n /**\n * @param {?} params\n * @return {?}\n */\n parseParam(params) {\n const /** @type {?} */ key = matchSegments(this.remaining);\n if (!key) {\n return;\n }\n this.capture(key);\n let /** @type {?} */ value = '';\n if (this.consumeOptional('=')) {\n const /** @type {?} */ valueMatch = matchSegments(this.remaining);\n if (valueMatch) {\n value = valueMatch;\n this.capture(value);\n }\n }\n params[decode(key)] = decode(value);\n }\n /**\n * @param {?} params\n * @return {?}\n */\n parseQueryParam(params) {\n const /** @type {?} */ key = matchQueryParams(this.remaining);\n if (!key) {\n return;\n }\n this.capture(key);\n let /** @type {?} */ value = '';\n if (this.consumeOptional('=')) {\n const /** @type {?} */ valueMatch = matchUrlQueryParamValue(this.remaining);\n if (valueMatch) {\n value = valueMatch;\n this.capture(value);\n }\n }\n const /** @type {?} */ decodedKey = decodeQuery(key);\n const /** @type {?} */ decodedVal = decodeQuery(value);\n if (params.hasOwnProperty(decodedKey)) {\n // Append to existing values\n let /** @type {?} */ currentVal = params[decodedKey];\n if (!Array.isArray(currentVal)) {\n currentVal = [currentVal];\n params[decodedKey] = currentVal;\n }\n currentVal.push(decodedVal);\n }\n else {\n // Create a new value\n params[decodedKey] = decodedVal;\n }\n }\n /**\n * @param {?} allowPrimary\n * @return {?}\n */\n parseParens(allowPrimary) {\n const /** @type {?} */ segments = {};\n this.capture('(');\n while (!this.consumeOptional(')') && this.remaining.length > 0) {\n const /** @type {?} */ path = matchSegments(this.remaining);\n const /** @type {?} */ next = this.remaining[path.length];\n // if is is not one of these characters, then the segment was unescaped\n // or the group was not closed\n if (next !== '/' && next !== ')' && next !== ';') {\n throw new Error(`Cannot parse url '${this.url}'`);\n }\n let /** @type {?} */ outletName = /** @type {?} */ ((undefined));\n if (path.indexOf(':') > -1) {\n outletName = path.substr(0, path.indexOf(':'));\n this.capture(outletName);\n this.capture(':');\n }\n else if (allowPrimary) {\n outletName = PRIMARY_OUTLET;\n }\n const /** @type {?} */ children = this.parseChildren();\n segments[outletName] = Object.keys(children).length === 1 ? children[PRIMARY_OUTLET] :\n new UrlSegmentGroup([], children);\n this.consumeOptional('//');\n }\n return segments;\n }\n /**\n * @param {?} str\n * @return {?}\n */\n peekStartsWith(str) { return this.remaining.startsWith(str); }\n /**\n * @param {?} str\n * @return {?}\n */\n consumeOptional(str) {\n if (this.peekStartsWith(str)) {\n this.remaining = this.remaining.substring(str.length);\n return true;\n }\n return false;\n }\n /**\n * @param {?} str\n * @return {?}\n */\n capture(str) {\n if (!this.consumeOptional(str)) {\n throw new Error(`Expected \"${str}\".`);\n }\n }\n}\nfunction UrlParser_tsickle_Closure_declarations() {\n /** @type {?} */\n UrlParser.prototype.remaining;\n /** @type {?} */\n UrlParser.prototype.url;\n}\n//# sourceMappingURL=url_tree.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { NgModuleRef } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\nimport { from } from 'rxjs/observable/from';\nimport { of } from 'rxjs/observable/of';\nimport { _catch } from 'rxjs/operator/catch';\nimport { concatAll } from 'rxjs/operator/concatAll';\nimport { first } from 'rxjs/operator/first';\nimport { map } from 'rxjs/operator/map';\nimport { mergeMap } from 'rxjs/operator/mergeMap';\nimport { EmptyError } from 'rxjs/util/EmptyError';\nimport { LoadedRouterConfig } from './config';\nimport { PRIMARY_OUTLET, defaultUrlMatcher, navigationCancelingError } from './shared';\nimport { UrlSegmentGroup, UrlTree } from './url_tree';\nimport { andObservables, forEach, waitForMap, wrapIntoObservable } from './utils/collection';\nclass NoMatch {\n /**\n * @param {?=} segmentGroup\n */\n constructor(segmentGroup) { this.segmentGroup = segmentGroup || null; }\n}\nfunction NoMatch_tsickle_Closure_declarations() {\n /** @type {?} */\n NoMatch.prototype.segmentGroup;\n}\nclass AbsoluteRedirect {\n /**\n * @param {?} urlTree\n */\n constructor(urlTree) {\n this.urlTree = urlTree;\n }\n}\nfunction AbsoluteRedirect_tsickle_Closure_declarations() {\n /** @type {?} */\n AbsoluteRedirect.prototype.urlTree;\n}\n/**\n * @param {?} segmentGroup\n * @return {?}\n */\nfunction noMatch(segmentGroup) {\n return new Observable((obs) => obs.error(new NoMatch(segmentGroup)));\n}\n/**\n * @param {?} newTree\n * @return {?}\n */\nfunction absoluteRedirect(newTree) {\n return new Observable((obs) => obs.error(new AbsoluteRedirect(newTree)));\n}\n/**\n * @param {?} redirectTo\n * @return {?}\n */\nfunction namedOutletsRedirect(redirectTo) {\n return new Observable((obs) => obs.error(new Error(`Only absolute redirects can have named outlets. redirectTo: '${redirectTo}'`)));\n}\n/**\n * @param {?} route\n * @return {?}\n */\nfunction canLoadFails(route) {\n return new Observable((obs) => obs.error(navigationCancelingError(`Cannot load children because the guard of the route \"path: '${route.path}'\" returned false`)));\n}\n/**\n * Returns the `UrlTree` with the redirection applied.\n *\n * Lazy modules are loaded along the way.\n * @param {?} moduleInjector\n * @param {?} configLoader\n * @param {?} urlSerializer\n * @param {?} urlTree\n * @param {?} config\n * @return {?}\n */\nexport function applyRedirects(moduleInjector, configLoader, urlSerializer, urlTree, config) {\n return new ApplyRedirects(moduleInjector, configLoader, urlSerializer, urlTree, config).apply();\n}\nclass ApplyRedirects {\n /**\n * @param {?} moduleInjector\n * @param {?} configLoader\n * @param {?} urlSerializer\n * @param {?} urlTree\n * @param {?} config\n */\n constructor(moduleInjector, configLoader, urlSerializer, urlTree, config) {\n this.configLoader = configLoader;\n this.urlSerializer = urlSerializer;\n this.urlTree = urlTree;\n this.config = config;\n this.allowRedirects = true;\n this.ngModule = moduleInjector.get(NgModuleRef);\n }\n /**\n * @return {?}\n */\n apply() {\n const /** @type {?} */ expanded$ = this.expandSegmentGroup(this.ngModule, this.config, this.urlTree.root, PRIMARY_OUTLET);\n const /** @type {?} */ urlTrees$ = map.call(expanded$, (rootSegmentGroup) => this.createUrlTree(rootSegmentGroup, this.urlTree.queryParams, /** @type {?} */ ((this.urlTree.fragment))));\n return _catch.call(urlTrees$, (e) => {\n if (e instanceof AbsoluteRedirect) {\n // after an absolute redirect we do not apply any more redirects!\n this.allowRedirects = false;\n // we need to run matching, so we can fetch all lazy-loaded modules\n return this.match(e.urlTree);\n }\n if (e instanceof NoMatch) {\n throw this.noMatchError(e);\n }\n throw e;\n });\n }\n /**\n * @param {?} tree\n * @return {?}\n */\n match(tree) {\n const /** @type {?} */ expanded$ = this.expandSegmentGroup(this.ngModule, this.config, tree.root, PRIMARY_OUTLET);\n const /** @type {?} */ mapped$ = map.call(expanded$, (rootSegmentGroup) => this.createUrlTree(rootSegmentGroup, tree.queryParams, /** @type {?} */ ((tree.fragment))));\n return _catch.call(mapped$, (e) => {\n if (e instanceof NoMatch) {\n throw this.noMatchError(e);\n }\n throw e;\n });\n }\n /**\n * @param {?} e\n * @return {?}\n */\n noMatchError(e) {\n return new Error(`Cannot match any routes. URL Segment: '${e.segmentGroup}'`);\n }\n /**\n * @param {?} rootCandidate\n * @param {?} queryParams\n * @param {?} fragment\n * @return {?}\n */\n createUrlTree(rootCandidate, queryParams, fragment) {\n const /** @type {?} */ root = rootCandidate.segments.length > 0 ?\n new UrlSegmentGroup([], { [PRIMARY_OUTLET]: rootCandidate }) :\n rootCandidate;\n return new UrlTree(root, queryParams, fragment);\n }\n /**\n * @param {?} ngModule\n * @param {?} routes\n * @param {?} segmentGroup\n * @param {?} outlet\n * @return {?}\n */\n expandSegmentGroup(ngModule, routes, segmentGroup, outlet) {\n if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {\n return map.call(this.expandChildren(ngModule, routes, segmentGroup), (children) => new UrlSegmentGroup([], children));\n }\n return this.expandSegment(ngModule, segmentGroup, routes, segmentGroup.segments, outlet, true);\n }\n /**\n * @param {?} ngModule\n * @param {?} routes\n * @param {?} segmentGroup\n * @return {?}\n */\n expandChildren(ngModule, routes, segmentGroup) {\n return waitForMap(segmentGroup.children, (childOutlet, child) => this.expandSegmentGroup(ngModule, routes, child, childOutlet));\n }\n /**\n * @param {?} ngModule\n * @param {?} segmentGroup\n * @param {?} routes\n * @param {?} segments\n * @param {?} outlet\n * @param {?} allowRedirects\n * @return {?}\n */\n expandSegment(ngModule, segmentGroup, routes, segments, outlet, allowRedirects) {\n const /** @type {?} */ routes$ = of(...routes);\n const /** @type {?} */ processedRoutes$ = map.call(routes$, (r) => {\n const /** @type {?} */ expanded$ = this.expandSegmentAgainstRoute(ngModule, segmentGroup, routes, r, segments, outlet, allowRedirects);\n return _catch.call(expanded$, (e) => {\n if (e instanceof NoMatch) {\n return of(null);\n }\n throw e;\n });\n });\n const /** @type {?} */ concattedProcessedRoutes$ = concatAll.call(processedRoutes$);\n const /** @type {?} */ first$ = first.call(concattedProcessedRoutes$, (s) => !!s);\n return _catch.call(first$, (e, _) => {\n if (e instanceof EmptyError || e.name === 'EmptyError') {\n if (this.noLeftoversInUrl(segmentGroup, segments, outlet)) {\n return of(new UrlSegmentGroup([], {}));\n }\n throw new NoMatch(segmentGroup);\n }\n throw e;\n });\n }\n /**\n * @param {?} segmentGroup\n * @param {?} segments\n * @param {?} outlet\n * @return {?}\n */\n noLeftoversInUrl(segmentGroup, segments, outlet) {\n return segments.length === 0 && !segmentGroup.children[outlet];\n }\n /**\n * @param {?} ngModule\n * @param {?} segmentGroup\n * @param {?} routes\n * @param {?} route\n * @param {?} paths\n * @param {?} outlet\n * @param {?} allowRedirects\n * @return {?}\n */\n expandSegmentAgainstRoute(ngModule, segmentGroup, routes, route, paths, outlet, allowRedirects) {\n if (getOutlet(route) !== outlet) {\n return noMatch(segmentGroup);\n }\n if (route.redirectTo === undefined) {\n return this.matchSegmentAgainstRoute(ngModule, segmentGroup, route, paths);\n }\n if (allowRedirects && this.allowRedirects) {\n return this.expandSegmentAgainstRouteUsingRedirect(ngModule, segmentGroup, routes, route, paths, outlet);\n }\n return noMatch(segmentGroup);\n }\n /**\n * @param {?} ngModule\n * @param {?} segmentGroup\n * @param {?} routes\n * @param {?} route\n * @param {?} segments\n * @param {?} outlet\n * @return {?}\n */\n expandSegmentAgainstRouteUsingRedirect(ngModule, segmentGroup, routes, route, segments, outlet) {\n if (route.path === '**') {\n return this.expandWildCardWithParamsAgainstRouteUsingRedirect(ngModule, routes, route, outlet);\n }\n return this.expandRegularSegmentAgainstRouteUsingRedirect(ngModule, segmentGroup, routes, route, segments, outlet);\n }\n /**\n * @param {?} ngModule\n * @param {?} routes\n * @param {?} route\n * @param {?} outlet\n * @return {?}\n */\n expandWildCardWithParamsAgainstRouteUsingRedirect(ngModule, routes, route, outlet) {\n const /** @type {?} */ newTree = this.applyRedirectCommands([], /** @type {?} */ ((route.redirectTo)), {});\n if (/** @type {?} */ ((route.redirectTo)).startsWith('/')) {\n return absoluteRedirect(newTree);\n }\n return mergeMap.call(this.lineralizeSegments(route, newTree), (newSegments) => {\n const /** @type {?} */ group = new UrlSegmentGroup(newSegments, {});\n return this.expandSegment(ngModule, group, routes, newSegments, outlet, false);\n });\n }\n /**\n * @param {?} ngModule\n * @param {?} segmentGroup\n * @param {?} routes\n * @param {?} route\n * @param {?} segments\n * @param {?} outlet\n * @return {?}\n */\n expandRegularSegmentAgainstRouteUsingRedirect(ngModule, segmentGroup, routes, route, segments, outlet) {\n const { matched, consumedSegments, lastChild, positionalParamSegments } = match(segmentGroup, route, segments);\n if (!matched)\n return noMatch(segmentGroup);\n const /** @type {?} */ newTree = this.applyRedirectCommands(consumedSegments, /** @type {?} */ ((route.redirectTo)), /** @type {?} */ (positionalParamSegments));\n if (/** @type {?} */ ((route.redirectTo)).startsWith('/')) {\n return absoluteRedirect(newTree);\n }\n return mergeMap.call(this.lineralizeSegments(route, newTree), (newSegments) => {\n return this.expandSegment(ngModule, segmentGroup, routes, newSegments.concat(segments.slice(lastChild)), outlet, false);\n });\n }\n /**\n * @param {?} ngModule\n * @param {?} rawSegmentGroup\n * @param {?} route\n * @param {?} segments\n * @return {?}\n */\n matchSegmentAgainstRoute(ngModule, rawSegmentGroup, route, segments) {\n if (route.path === '**') {\n if (route.loadChildren) {\n return map.call(this.configLoader.load(ngModule.injector, route), (cfg) => {\n route._loadedConfig = cfg;\n return new UrlSegmentGroup(segments, {});\n });\n }\n return of(new UrlSegmentGroup(segments, {}));\n }\n const { matched, consumedSegments, lastChild } = match(rawSegmentGroup, route, segments);\n if (!matched)\n return noMatch(rawSegmentGroup);\n const /** @type {?} */ rawSlicedSegments = segments.slice(lastChild);\n const /** @type {?} */ childConfig$ = this.getChildConfig(ngModule, route);\n return mergeMap.call(childConfig$, (routerConfig) => {\n const /** @type {?} */ childModule = routerConfig.module;\n const /** @type {?} */ childConfig = routerConfig.routes;\n const { segmentGroup, slicedSegments } = split(rawSegmentGroup, consumedSegments, rawSlicedSegments, childConfig);\n if (slicedSegments.length === 0 && segmentGroup.hasChildren()) {\n const /** @type {?} */ expanded$ = this.expandChildren(childModule, childConfig, segmentGroup);\n return map.call(expanded$, (children) => new UrlSegmentGroup(consumedSegments, children));\n }\n if (childConfig.length === 0 && slicedSegments.length === 0) {\n return of(new UrlSegmentGroup(consumedSegments, {}));\n }\n const /** @type {?} */ expanded$ = this.expandSegment(childModule, segmentGroup, childConfig, slicedSegments, PRIMARY_OUTLET, true);\n return map.call(expanded$, (cs) => new UrlSegmentGroup(consumedSegments.concat(cs.segments), cs.children));\n });\n }\n /**\n * @param {?} ngModule\n * @param {?} route\n * @return {?}\n */\n getChildConfig(ngModule, route) {\n if (route.children) {\n // The children belong to the same module\n return of(new LoadedRouterConfig(route.children, ngModule));\n }\n if (route.loadChildren) {\n // lazy children belong to the loaded module\n if (route._loadedConfig !== undefined) {\n return of(route._loadedConfig);\n }\n return mergeMap.call(runCanLoadGuard(ngModule.injector, route), (shouldLoad) => {\n if (shouldLoad) {\n return map.call(this.configLoader.load(ngModule.injector, route), (cfg) => {\n route._loadedConfig = cfg;\n return cfg;\n });\n }\n return canLoadFails(route);\n });\n }\n return of(new LoadedRouterConfig([], ngModule));\n }\n /**\n * @param {?} route\n * @param {?} urlTree\n * @return {?}\n */\n lineralizeSegments(route, urlTree) {\n let /** @type {?} */ res = [];\n let /** @type {?} */ c = urlTree.root;\n while (true) {\n res = res.concat(c.segments);\n if (c.numberOfChildren === 0) {\n return of(res);\n }\n if (c.numberOfChildren > 1 || !c.children[PRIMARY_OUTLET]) {\n return namedOutletsRedirect(/** @type {?} */ ((route.redirectTo)));\n }\n c = c.children[PRIMARY_OUTLET];\n }\n }\n /**\n * @param {?} segments\n * @param {?} redirectTo\n * @param {?} posParams\n * @return {?}\n */\n applyRedirectCommands(segments, redirectTo, posParams) {\n return this.applyRedirectCreatreUrlTree(redirectTo, this.urlSerializer.parse(redirectTo), segments, posParams);\n }\n /**\n * @param {?} redirectTo\n * @param {?} urlTree\n * @param {?} segments\n * @param {?} posParams\n * @return {?}\n */\n applyRedirectCreatreUrlTree(redirectTo, urlTree, segments, posParams) {\n const /** @type {?} */ newRoot = this.createSegmentGroup(redirectTo, urlTree.root, segments, posParams);\n return new UrlTree(newRoot, this.createQueryParams(urlTree.queryParams, this.urlTree.queryParams), urlTree.fragment);\n }\n /**\n * @param {?} redirectToParams\n * @param {?} actualParams\n * @return {?}\n */\n createQueryParams(redirectToParams, actualParams) {\n const /** @type {?} */ res = {};\n forEach(redirectToParams, (v, k) => {\n const /** @type {?} */ copySourceValue = typeof v === 'string' && v.startsWith(':');\n if (copySourceValue) {\n const /** @type {?} */ sourceName = v.substring(1);\n res[k] = actualParams[sourceName];\n }\n else {\n res[k] = v;\n }\n });\n return res;\n }\n /**\n * @param {?} redirectTo\n * @param {?} group\n * @param {?} segments\n * @param {?} posParams\n * @return {?}\n */\n createSegmentGroup(redirectTo, group, segments, posParams) {\n const /** @type {?} */ updatedSegments = this.createSegments(redirectTo, group.segments, segments, posParams);\n let /** @type {?} */ children = {};\n forEach(group.children, (child, name) => {\n children[name] = this.createSegmentGroup(redirectTo, child, segments, posParams);\n });\n return new UrlSegmentGroup(updatedSegments, children);\n }\n /**\n * @param {?} redirectTo\n * @param {?} redirectToSegments\n * @param {?} actualSegments\n * @param {?} posParams\n * @return {?}\n */\n createSegments(redirectTo, redirectToSegments, actualSegments, posParams) {\n return redirectToSegments.map(s => s.path.startsWith(':') ? this.findPosParam(redirectTo, s, posParams) :\n this.findOrReturn(s, actualSegments));\n }\n /**\n * @param {?} redirectTo\n * @param {?} redirectToUrlSegment\n * @param {?} posParams\n * @return {?}\n */\n findPosParam(redirectTo, redirectToUrlSegment, posParams) {\n const /** @type {?} */ pos = posParams[redirectToUrlSegment.path.substring(1)];\n if (!pos)\n throw new Error(`Cannot redirect to '${redirectTo}'. Cannot find '${redirectToUrlSegment.path}'.`);\n return pos;\n }\n /**\n * @param {?} redirectToUrlSegment\n * @param {?} actualSegments\n * @return {?}\n */\n findOrReturn(redirectToUrlSegment, actualSegments) {\n let /** @type {?} */ idx = 0;\n for (const /** @type {?} */ s of actualSegments) {\n if (s.path === redirectToUrlSegment.path) {\n actualSegments.splice(idx);\n return s;\n }\n idx++;\n }\n return redirectToUrlSegment;\n }\n}\nfunction ApplyRedirects_tsickle_Closure_declarations() {\n /** @type {?} */\n ApplyRedirects.prototype.allowRedirects;\n /** @type {?} */\n ApplyRedirects.prototype.ngModule;\n /** @type {?} */\n ApplyRedirects.prototype.configLoader;\n /** @type {?} */\n ApplyRedirects.prototype.urlSerializer;\n /** @type {?} */\n ApplyRedirects.prototype.urlTree;\n /** @type {?} */\n ApplyRedirects.prototype.config;\n}\n/**\n * @param {?} moduleInjector\n * @param {?} route\n * @return {?}\n */\nfunction runCanLoadGuard(moduleInjector, route) {\n const /** @type {?} */ canLoad = route.canLoad;\n if (!canLoad || canLoad.length === 0)\n return of(true);\n const /** @type {?} */ obs = map.call(from(canLoad), (injectionToken) => {\n const /** @type {?} */ guard = moduleInjector.get(injectionToken);\n return wrapIntoObservable(guard.canLoad ? guard.canLoad(route) : guard(route));\n });\n return andObservables(obs);\n}\n/**\n * @param {?} segmentGroup\n * @param {?} route\n * @param {?} segments\n * @return {?}\n */\nfunction match(segmentGroup, route, segments) {\n if (route.path === '') {\n if ((route.pathMatch === 'full') && (segmentGroup.hasChildren() || segments.length > 0)) {\n return { matched: false, consumedSegments: [], lastChild: 0, positionalParamSegments: {} };\n }\n return { matched: true, consumedSegments: [], lastChild: 0, positionalParamSegments: {} };\n }\n const /** @type {?} */ matcher = route.matcher || defaultUrlMatcher;\n const /** @type {?} */ res = matcher(segments, segmentGroup, route);\n if (!res) {\n return {\n matched: false,\n consumedSegments: /** @type {?} */ ([]),\n lastChild: 0,\n positionalParamSegments: {},\n };\n }\n return {\n matched: true,\n consumedSegments: /** @type {?} */ ((res.consumed)),\n lastChild: /** @type {?} */ ((res.consumed.length)),\n positionalParamSegments: /** @type {?} */ ((res.posParams)),\n };\n}\n/**\n * @param {?} segmentGroup\n * @param {?} consumedSegments\n * @param {?} slicedSegments\n * @param {?} config\n * @return {?}\n */\nfunction split(segmentGroup, consumedSegments, slicedSegments, config) {\n if (slicedSegments.length > 0 &&\n containsEmptyPathRedirectsWithNamedOutlets(segmentGroup, slicedSegments, config)) {\n const /** @type {?} */ s = new UrlSegmentGroup(consumedSegments, createChildrenForEmptySegments(config, new UrlSegmentGroup(slicedSegments, segmentGroup.children)));\n return { segmentGroup: mergeTrivialChildren(s), slicedSegments: [] };\n }\n if (slicedSegments.length === 0 &&\n containsEmptyPathRedirects(segmentGroup, slicedSegments, config)) {\n const /** @type {?} */ s = new UrlSegmentGroup(segmentGroup.segments, addEmptySegmentsToChildrenIfNeeded(segmentGroup, slicedSegments, config, segmentGroup.children));\n return { segmentGroup: mergeTrivialChildren(s), slicedSegments };\n }\n return { segmentGroup, slicedSegments };\n}\n/**\n * @param {?} s\n * @return {?}\n */\nfunction mergeTrivialChildren(s) {\n if (s.numberOfChildren === 1 && s.children[PRIMARY_OUTLET]) {\n const /** @type {?} */ c = s.children[PRIMARY_OUTLET];\n return new UrlSegmentGroup(s.segments.concat(c.segments), c.children);\n }\n return s;\n}\n/**\n * @param {?} segmentGroup\n * @param {?} slicedSegments\n * @param {?} routes\n * @param {?} children\n * @return {?}\n */\nfunction addEmptySegmentsToChildrenIfNeeded(segmentGroup, slicedSegments, routes, children) {\n const /** @type {?} */ res = {};\n for (const /** @type {?} */ r of routes) {\n if (isEmptyPathRedirect(segmentGroup, slicedSegments, r) && !children[getOutlet(r)]) {\n res[getOutlet(r)] = new UrlSegmentGroup([], {});\n }\n }\n return Object.assign({}, children, res);\n}\n/**\n * @param {?} routes\n * @param {?} primarySegmentGroup\n * @return {?}\n */\nfunction createChildrenForEmptySegments(routes, primarySegmentGroup) {\n const /** @type {?} */ res = {};\n res[PRIMARY_OUTLET] = primarySegmentGroup;\n for (const /** @type {?} */ r of routes) {\n if (r.path === '' && getOutlet(r) !== PRIMARY_OUTLET) {\n res[getOutlet(r)] = new UrlSegmentGroup([], {});\n }\n }\n return res;\n}\n/**\n * @param {?} segmentGroup\n * @param {?} segments\n * @param {?} routes\n * @return {?}\n */\nfunction containsEmptyPathRedirectsWithNamedOutlets(segmentGroup, segments, routes) {\n return routes.some(r => isEmptyPathRedirect(segmentGroup, segments, r) && getOutlet(r) !== PRIMARY_OUTLET);\n}\n/**\n * @param {?} segmentGroup\n * @param {?} segments\n * @param {?} routes\n * @return {?}\n */\nfunction containsEmptyPathRedirects(segmentGroup, segments, routes) {\n return routes.some(r => isEmptyPathRedirect(segmentGroup, segments, r));\n}\n/**\n * @param {?} segmentGroup\n * @param {?} segments\n * @param {?} r\n * @return {?}\n */\nfunction isEmptyPathRedirect(segmentGroup, segments, r) {\n if ((segmentGroup.hasChildren() || segments.length > 0) && r.pathMatch === 'full') {\n return false;\n }\n return r.path === '' && r.redirectTo !== undefined;\n}\n/**\n * @param {?} route\n * @return {?}\n */\nfunction getOutlet(route) {\n return route.outlet || PRIMARY_OUTLET;\n}\n//# sourceMappingURL=apply_redirects.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @template T\n */\nexport class Tree {\n /**\n * @param {?} root\n */\n constructor(root) { this._root = root; }\n /**\n * @return {?}\n */\n get root() { return this._root.value; }\n /**\n * \\@internal\n * @param {?} t\n * @return {?}\n */\n parent(t) {\n const /** @type {?} */ p = this.pathFromRoot(t);\n return p.length > 1 ? p[p.length - 2] : null;\n }\n /**\n * \\@internal\n * @param {?} t\n * @return {?}\n */\n children(t) {\n const /** @type {?} */ n = findNode(t, this._root);\n return n ? n.children.map(t => t.value) : [];\n }\n /**\n * \\@internal\n * @param {?} t\n * @return {?}\n */\n firstChild(t) {\n const /** @type {?} */ n = findNode(t, this._root);\n return n && n.children.length > 0 ? n.children[0].value : null;\n }\n /**\n * \\@internal\n * @param {?} t\n * @return {?}\n */\n siblings(t) {\n const /** @type {?} */ p = findPath(t, this._root);\n if (p.length < 2)\n return [];\n const /** @type {?} */ c = p[p.length - 2].children.map(c => c.value);\n return c.filter(cc => cc !== t);\n }\n /**\n * \\@internal\n * @param {?} t\n * @return {?}\n */\n pathFromRoot(t) { return findPath(t, this._root).map(s => s.value); }\n}\nfunction Tree_tsickle_Closure_declarations() {\n /**\n * \\@internal\n * @type {?}\n */\n Tree.prototype._root;\n}\n/**\n * @template T\n * @param {?} value\n * @param {?} node\n * @return {?}\n */\nfunction findNode(value, node) {\n if (value === node.value)\n return node;\n for (const /** @type {?} */ child of node.children) {\n const /** @type {?} */ node = findNode(value, child);\n if (node)\n return node;\n }\n return null;\n}\n/**\n * @template T\n * @param {?} value\n * @param {?} node\n * @return {?}\n */\nfunction findPath(value, node) {\n if (value === node.value)\n return [node];\n for (const /** @type {?} */ child of node.children) {\n const /** @type {?} */ path = findPath(value, child);\n if (path.length) {\n path.unshift(node);\n return path;\n }\n }\n return [];\n}\n/**\n * @template T\n */\nexport class TreeNode {\n /**\n * @param {?} value\n * @param {?} children\n */\n constructor(value, children) {\n this.value = value;\n this.children = children;\n }\n /**\n * @return {?}\n */\n toString() { return `TreeNode(${this.value})`; }\n}\nfunction TreeNode_tsickle_Closure_declarations() {\n /** @type {?} */\n TreeNode.prototype.value;\n /** @type {?} */\n TreeNode.prototype.children;\n}\n/**\n * @template T\n * @param {?} node\n * @return {?}\n */\nexport function nodeChildrenAsMap(node) {\n const /** @type {?} */ map = {};\n if (node) {\n node.children.forEach(child => map[child.value.outlet] = child);\n }\n return map;\n}\n//# sourceMappingURL=tree.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\nimport { map } from 'rxjs/operator/map';\nimport { PRIMARY_OUTLET, convertToParamMap } from './shared';\nimport { UrlSegment, equalSegments } from './url_tree';\nimport { shallowEqual, shallowEqualArrays } from './utils/collection';\nimport { Tree, TreeNode } from './utils/tree';\n/**\n * \\@whatItDoes Represents the state of the router.\n *\n * \\@howToUse\n *\n * ```\n * \\@Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const state: RouterState = router.routerState;\n * const root: ActivatedRoute = state.root;\n * const child = root.firstChild;\n * const id: Observable<string> = child.params.map(p => p.id);\n * //...\n * }\n * }\n * ```\n *\n * \\@description\n * RouterState is a tree of activated routes. Every node in this tree knows about the \"consumed\" URL\n * segments, the extracted parameters, and the resolved data.\n *\n * See {\\@link ActivatedRoute} for more information.\n *\n * \\@stable\n */\nexport class RouterState extends Tree {\n /**\n * \\@internal\n * @param {?} root\n * @param {?} snapshot\n */\n constructor(root, snapshot) {\n super(root);\n this.snapshot = snapshot;\n setRouterState(/** @type {?} */ (this), root);\n }\n /**\n * @return {?}\n */\n toString() { return this.snapshot.toString(); }\n}\nfunction RouterState_tsickle_Closure_declarations() {\n /**\n * The current snapshot of the router state\n * @type {?}\n */\n RouterState.prototype.snapshot;\n}\n/**\n * @param {?} urlTree\n * @param {?} rootComponent\n * @return {?}\n */\nexport function createEmptyState(urlTree, rootComponent) {\n const /** @type {?} */ snapshot = createEmptyStateSnapshot(urlTree, rootComponent);\n const /** @type {?} */ emptyUrl = new BehaviorSubject([new UrlSegment('', {})]);\n const /** @type {?} */ emptyParams = new BehaviorSubject({});\n const /** @type {?} */ emptyData = new BehaviorSubject({});\n const /** @type {?} */ emptyQueryParams = new BehaviorSubject({});\n const /** @type {?} */ fragment = new BehaviorSubject('');\n const /** @type {?} */ activated = new ActivatedRoute(emptyUrl, emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, snapshot.root);\n activated.snapshot = snapshot.root;\n return new RouterState(new TreeNode(activated, []), snapshot);\n}\n/**\n * @param {?} urlTree\n * @param {?} rootComponent\n * @return {?}\n */\nexport function createEmptyStateSnapshot(urlTree, rootComponent) {\n const /** @type {?} */ emptyParams = {};\n const /** @type {?} */ emptyData = {};\n const /** @type {?} */ emptyQueryParams = {};\n const /** @type {?} */ fragment = '';\n const /** @type {?} */ activated = new ActivatedRouteSnapshot([], emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, null, urlTree.root, -1, {});\n return new RouterStateSnapshot('', new TreeNode(activated, []));\n}\n/**\n * \\@whatItDoes Contains the information about a route associated with a component loaded in an\n * outlet.\n * An `ActivatedRoute` can also be used to traverse the router state tree.\n *\n * \\@howToUse\n *\n * ```\n * \\@Component({...})\n * class MyComponent {\n * constructor(route: ActivatedRoute) {\n * const id: Observable<string> = route.params.map(p => p.id);\n * const url: Observable<string> = route.url.map(segments => segments.join(''));\n * // route.data includes both `data` and `resolve`\n * const user = route.data.map(d => d.user);\n * }\n * }\n * ```\n *\n * \\@stable\n */\nexport class ActivatedRoute {\n /**\n * \\@internal\n * @param {?} url\n * @param {?} params\n * @param {?} queryParams\n * @param {?} fragment\n * @param {?} data\n * @param {?} outlet\n * @param {?} component\n * @param {?} futureSnapshot\n */\n constructor(url, params, queryParams, fragment, data, outlet, component, futureSnapshot) {\n this.url = url;\n this.params = params;\n this.queryParams = queryParams;\n this.fragment = fragment;\n this.data = data;\n this.outlet = outlet;\n this.component = component;\n this._futureSnapshot = futureSnapshot;\n }\n /**\n * The configuration used to match this route\n * @return {?}\n */\n get routeConfig() { return this._futureSnapshot.routeConfig; }\n /**\n * The root of the router state\n * @return {?}\n */\n get root() { return this._routerState.root; }\n /**\n * The parent of this route in the router state tree\n * @return {?}\n */\n get parent() { return this._routerState.parent(this); }\n /**\n * The first child of this route in the router state tree\n * @return {?}\n */\n get firstChild() { return this._routerState.firstChild(this); }\n /**\n * The children of this route in the router state tree\n * @return {?}\n */\n get children() { return this._routerState.children(this); }\n /**\n * The path from the root of the router state tree to this route\n * @return {?}\n */\n get pathFromRoot() { return this._routerState.pathFromRoot(this); }\n /**\n * @return {?}\n */\n get paramMap() {\n if (!this._paramMap) {\n this._paramMap = map.call(this.params, (p) => convertToParamMap(p));\n }\n return this._paramMap;\n }\n /**\n * @return {?}\n */\n get queryParamMap() {\n if (!this._queryParamMap) {\n this._queryParamMap =\n map.call(this.queryParams, (p) => convertToParamMap(p));\n }\n return this._queryParamMap;\n }\n /**\n * @return {?}\n */\n toString() {\n return this.snapshot ? this.snapshot.toString() : `Future(${this._futureSnapshot})`;\n }\n}\nfunction ActivatedRoute_tsickle_Closure_declarations() {\n /**\n * The current snapshot of this route\n * @type {?}\n */\n ActivatedRoute.prototype.snapshot;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRoute.prototype._futureSnapshot;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRoute.prototype._routerState;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRoute.prototype._paramMap;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRoute.prototype._queryParamMap;\n /**\n * An observable of the URL segments matched by this route\n * @type {?}\n */\n ActivatedRoute.prototype.url;\n /**\n * An observable of the matrix parameters scoped to this route\n * @type {?}\n */\n ActivatedRoute.prototype.params;\n /**\n * An observable of the query parameters shared by all the routes\n * @type {?}\n */\n ActivatedRoute.prototype.queryParams;\n /**\n * An observable of the URL fragment shared by all the routes\n * @type {?}\n */\n ActivatedRoute.prototype.fragment;\n /**\n * An observable of the static and resolved data of this route.\n * @type {?}\n */\n ActivatedRoute.prototype.data;\n /**\n * The outlet name of the route. It's a constant\n * @type {?}\n */\n ActivatedRoute.prototype.outlet;\n /**\n * The component of the route. It's a constant\n * @type {?}\n */\n ActivatedRoute.prototype.component;\n}\n/**\n * Returns the inherited params, data, and resolve for a given route.\n * By default, this only inherits values up to the nearest path-less or component-less route.\n * \\@internal\n * @param {?} route\n * @param {?=} paramsInheritanceStrategy\n * @return {?}\n */\nexport function inheritedParamsDataResolve(route, paramsInheritanceStrategy = 'emptyOnly') {\n const /** @type {?} */ pathFromRoot = route.pathFromRoot;\n let /** @type {?} */ inheritingStartingFrom = 0;\n if (paramsInheritanceStrategy !== 'always') {\n inheritingStartingFrom = pathFromRoot.length - 1;\n while (inheritingStartingFrom >= 1) {\n const /** @type {?} */ current = pathFromRoot[inheritingStartingFrom];\n const /** @type {?} */ parent = pathFromRoot[inheritingStartingFrom - 1];\n // current route is an empty path => inherits its parent's params and data\n if (current.routeConfig && current.routeConfig.path === '') {\n inheritingStartingFrom--;\n // parent is componentless => current route should inherit its params and data\n }\n else if (!parent.component) {\n inheritingStartingFrom--;\n }\n else {\n break;\n }\n }\n }\n return flattenInherited(pathFromRoot.slice(inheritingStartingFrom));\n}\n/**\n * \\@internal\n * @param {?} pathFromRoot\n * @return {?}\n */\nfunction flattenInherited(pathFromRoot) {\n return pathFromRoot.reduce((res, curr) => {\n const /** @type {?} */ params = Object.assign({}, res.params, curr.params);\n const /** @type {?} */ data = Object.assign({}, res.data, curr.data);\n const /** @type {?} */ resolve = Object.assign({}, res.resolve, curr._resolvedData);\n return { params, data, resolve };\n }, /** @type {?} */ ({ params: {}, data: {}, resolve: {} }));\n}\n/**\n * \\@whatItDoes Contains the information about a route associated with a component loaded in an\n * outlet\n * at a particular moment in time. ActivatedRouteSnapshot can also be used to traverse the router\n * state tree.\n *\n * \\@howToUse\n *\n * ```\n * \\@Component({templateUrl:'./my-component.html'})\n * class MyComponent {\n * constructor(route: ActivatedRoute) {\n * const id: string = route.snapshot.params.id;\n * const url: string = route.snapshot.url.join('');\n * const user = route.snapshot.data.user;\n * }\n * }\n * ```\n *\n * \\@stable\n */\nexport class ActivatedRouteSnapshot {\n /**\n * \\@internal\n * @param {?} url\n * @param {?} params\n * @param {?} queryParams\n * @param {?} fragment\n * @param {?} data\n * @param {?} outlet\n * @param {?} component\n * @param {?} routeConfig\n * @param {?} urlSegment\n * @param {?} lastPathIndex\n * @param {?} resolve\n */\n constructor(url, params, queryParams, fragment, data, outlet, component, routeConfig, urlSegment, lastPathIndex, resolve) {\n this.url = url;\n this.params = params;\n this.queryParams = queryParams;\n this.fragment = fragment;\n this.data = data;\n this.outlet = outlet;\n this.component = component;\n this.routeConfig = routeConfig;\n this._urlSegment = urlSegment;\n this._lastPathIndex = lastPathIndex;\n this._resolve = resolve;\n }\n /**\n * The root of the router state\n * @return {?}\n */\n get root() { return this._routerState.root; }\n /**\n * The parent of this route in the router state tree\n * @return {?}\n */\n get parent() { return this._routerState.parent(this); }\n /**\n * The first child of this route in the router state tree\n * @return {?}\n */\n get firstChild() { return this._routerState.firstChild(this); }\n /**\n * The children of this route in the router state tree\n * @return {?}\n */\n get children() { return this._routerState.children(this); }\n /**\n * The path from the root of the router state tree to this route\n * @return {?}\n */\n get pathFromRoot() { return this._routerState.pathFromRoot(this); }\n /**\n * @return {?}\n */\n get paramMap() {\n if (!this._paramMap) {\n this._paramMap = convertToParamMap(this.params);\n }\n return this._paramMap;\n }\n /**\n * @return {?}\n */\n get queryParamMap() {\n if (!this._queryParamMap) {\n this._queryParamMap = convertToParamMap(this.queryParams);\n }\n return this._queryParamMap;\n }\n /**\n * @return {?}\n */\n toString() {\n const /** @type {?} */ url = this.url.map(segment => segment.toString()).join('/');\n const /** @type {?} */ matched = this.routeConfig ? this.routeConfig.path : '';\n return `Route(url:'${url}', path:'${matched}')`;\n }\n}\nfunction ActivatedRouteSnapshot_tsickle_Closure_declarations() {\n /**\n * The configuration used to match this route *\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.routeConfig;\n /**\n * \\@internal *\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._urlSegment;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._lastPathIndex;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._resolve;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._resolvedData;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._routerState;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._paramMap;\n /**\n * \\@internal\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype._queryParamMap;\n /**\n * The URL segments matched by this route\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.url;\n /**\n * The matrix parameters scoped to this route\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.params;\n /**\n * The query parameters shared by all the routes\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.queryParams;\n /**\n * The URL fragment shared by all the routes\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.fragment;\n /**\n * The static and resolved data of this route\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.data;\n /**\n * The outlet name of the route\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.outlet;\n /**\n * The component of the route\n * @type {?}\n */\n ActivatedRouteSnapshot.prototype.component;\n}\n/**\n * \\@whatItDoes Represents the state of the router at a moment in time.\n *\n * \\@howToUse\n *\n * ```\n * \\@Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const state: RouterState = router.routerState;\n * const snapshot: RouterStateSnapshot = state.snapshot;\n * const root: ActivatedRouteSnapshot = snapshot.root;\n * const child = root.firstChild;\n * const id: Observable<string> = child.params.map(p => p.id);\n * //...\n * }\n * }\n * ```\n *\n * \\@description\n * RouterStateSnapshot is a tree of activated route snapshots. Every node in this tree knows about\n * the \"consumed\" URL segments, the extracted parameters, and the resolved data.\n *\n * \\@stable\n */\nexport class RouterStateSnapshot extends Tree {\n /**\n * \\@internal\n * @param {?} url\n * @param {?} root\n */\n constructor(url, root) {\n super(root);\n this.url = url;\n setRouterState(/** @type {?} */ (this), root);\n }\n /**\n * @return {?}\n */\n toString() { return serializeNode(this._root); }\n}\nfunction RouterStateSnapshot_tsickle_Closure_declarations() {\n /**\n * The url from which this snapshot was created\n * @type {?}\n */\n RouterStateSnapshot.prototype.url;\n}\n/**\n * @template U, T\n * @param {?} state\n * @param {?} node\n * @return {?}\n */\nfunction setRouterState(state, node) {\n node.value._routerState = state;\n node.children.forEach(c => setRouterState(state, c));\n}\n/**\n * @param {?} node\n * @return {?}\n */\nfunction serializeNode(node) {\n const /** @type {?} */ c = node.children.length > 0 ? ` { ${node.children.map(serializeNode).join(', ')} } ` : '';\n return `${node.value}${c}`;\n}\n/**\n * The expectation is that the activate route is created with the right set of parameters.\n * So we push new values into the observables only when they are not the initial values.\n * And we detect that by checking if the snapshot field is set.\n * @param {?} route\n * @return {?}\n */\nexport function advanceActivatedRoute(route) {\n if (route.snapshot) {\n const /** @type {?} */ currentSnapshot = route.snapshot;\n const /** @type {?} */ nextSnapshot = route._futureSnapshot;\n route.snapshot = nextSnapshot;\n if (!shallowEqual(currentSnapshot.queryParams, nextSnapshot.queryParams)) {\n (/** @type {?} */ (route.queryParams)).next(nextSnapshot.queryParams);\n }\n if (currentSnapshot.fragment !== nextSnapshot.fragment) {\n (/** @type {?} */ (route.fragment)).next(nextSnapshot.fragment);\n }\n if (!shallowEqual(currentSnapshot.params, nextSnapshot.params)) {\n (/** @type {?} */ (route.params)).next(nextSnapshot.params);\n }\n if (!shallowEqualArrays(currentSnapshot.url, nextSnapshot.url)) {\n (/** @type {?} */ (route.url)).next(nextSnapshot.url);\n }\n if (!shallowEqual(currentSnapshot.data, nextSnapshot.data)) {\n (/** @type {?} */ (route.data)).next(nextSnapshot.data);\n }\n }\n else {\n route.snapshot = route._futureSnapshot;\n // this is for resolved data\n (/** @type {?} */ (route.data)).next(route._futureSnapshot.data);\n }\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nexport function equalParamsAndUrlSegments(a, b) {\n const /** @type {?} */ equalUrlParams = shallowEqual(a.params, b.params) && equalSegments(a.url, b.url);\n const /** @type {?} */ parentsMismatch = !a.parent !== !b.parent;\n return equalUrlParams && !parentsMismatch &&\n (!a.parent || equalParamsAndUrlSegments(a.parent, /** @type {?} */ ((b.parent))));\n}\n//# sourceMappingURL=router_state.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\nimport { ActivatedRoute, RouterState } from './router_state';\nimport { TreeNode } from './utils/tree';\n/**\n * @param {?} routeReuseStrategy\n * @param {?} curr\n * @param {?} prevState\n * @return {?}\n */\nexport function createRouterState(routeReuseStrategy, curr, prevState) {\n const /** @type {?} */ root = createNode(routeReuseStrategy, curr._root, prevState ? prevState._root : undefined);\n return new RouterState(root, curr);\n}\n/**\n * @param {?} routeReuseStrategy\n * @param {?} curr\n * @param {?=} prevState\n * @return {?}\n */\nfunction createNode(routeReuseStrategy, curr, prevState) {\n // reuse an activated route that is currently displayed on the screen\n if (prevState && routeReuseStrategy.shouldReuseRoute(curr.value, prevState.value.snapshot)) {\n const /** @type {?} */ value = prevState.value;\n value._futureSnapshot = curr.value;\n const /** @type {?} */ children = createOrReuseChildren(routeReuseStrategy, curr, prevState);\n return new TreeNode(value, children);\n // retrieve an activated route that is used to be displayed, but is not currently displayed\n }\n else if (routeReuseStrategy.retrieve(curr.value)) {\n const /** @type {?} */ tree = (/** @type {?} */ (routeReuseStrategy.retrieve(curr.value))).route;\n setFutureSnapshotsOfActivatedRoutes(curr, tree);\n return tree;\n }\n else {\n const /** @type {?} */ value = createActivatedRoute(curr.value);\n const /** @type {?} */ children = curr.children.map(c => createNode(routeReuseStrategy, c));\n return new TreeNode(value, children);\n }\n}\n/**\n * @param {?} curr\n * @param {?} result\n * @return {?}\n */\nfunction setFutureSnapshotsOfActivatedRoutes(curr, result) {\n if (curr.value.routeConfig !== result.value.routeConfig) {\n throw new Error('Cannot reattach ActivatedRouteSnapshot created from a different route');\n }\n if (curr.children.length !== result.children.length) {\n throw new Error('Cannot reattach ActivatedRouteSnapshot with a different number of children');\n }\n result.value._futureSnapshot = curr.value;\n for (let /** @type {?} */ i = 0; i < curr.children.length; ++i) {\n setFutureSnapshotsOfActivatedRoutes(curr.children[i], result.children[i]);\n }\n}\n/**\n * @param {?} routeReuseStrategy\n * @param {?} curr\n * @param {?} prevState\n * @return {?}\n */\nfunction createOrReuseChildren(routeReuseStrategy, curr, prevState) {\n return curr.children.map(child => {\n for (const /** @type {?} */ p of prevState.children) {\n if (routeReuseStrategy.shouldReuseRoute(p.value.snapshot, child.value)) {\n return createNode(routeReuseStrategy, child, p);\n }\n }\n return createNode(routeReuseStrategy, child);\n });\n}\n/**\n * @param {?} c\n * @return {?}\n */\nfunction createActivatedRoute(c) {\n return new ActivatedRoute(new BehaviorSubject(c.url), new BehaviorSubject(c.params), new BehaviorSubject(c.queryParams), new BehaviorSubject(c.fragment), new BehaviorSubject(c.data), c.outlet, c.component, c);\n}\n//# sourceMappingURL=create_router_state.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { PRIMARY_OUTLET } from './shared';\nimport { UrlSegment, UrlSegmentGroup, UrlTree } from './url_tree';\nimport { forEach, last, shallowEqual } from './utils/collection';\n/**\n * @param {?} route\n * @param {?} urlTree\n * @param {?} commands\n * @param {?} queryParams\n * @param {?} fragment\n * @return {?}\n */\nexport function createUrlTree(route, urlTree, commands, queryParams, fragment) {\n if (commands.length === 0) {\n return tree(urlTree.root, urlTree.root, urlTree, queryParams, fragment);\n }\n const /** @type {?} */ nav = computeNavigation(commands);\n if (nav.toRoot()) {\n return tree(urlTree.root, new UrlSegmentGroup([], {}), urlTree, queryParams, fragment);\n }\n const /** @type {?} */ startingPosition = findStartingPosition(nav, urlTree, route);\n const /** @type {?} */ segmentGroup = startingPosition.processChildren ?\n updateSegmentGroupChildren(startingPosition.segmentGroup, startingPosition.index, nav.commands) :\n updateSegmentGroup(startingPosition.segmentGroup, startingPosition.index, nav.commands);\n return tree(startingPosition.segmentGroup, segmentGroup, urlTree, queryParams, fragment);\n}\n/**\n * @param {?} command\n * @return {?}\n */\nfunction isMatrixParams(command) {\n return typeof command === 'object' && command != null && !command.outlets && !command.segmentPath;\n}\n/**\n * @param {?} oldSegmentGroup\n * @param {?} newSegmentGroup\n * @param {?} urlTree\n * @param {?} queryParams\n * @param {?} fragment\n * @return {?}\n */\nfunction tree(oldSegmentGroup, newSegmentGroup, urlTree, queryParams, fragment) {\n let /** @type {?} */ qp = {};\n if (queryParams) {\n forEach(queryParams, (value, name) => {\n qp[name] = Array.isArray(value) ? value.map((v) => `${v}`) : `${value}`;\n });\n }\n if (urlTree.root === oldSegmentGroup) {\n return new UrlTree(newSegmentGroup, qp, fragment);\n }\n return new UrlTree(replaceSegment(urlTree.root, oldSegmentGroup, newSegmentGroup), qp, fragment);\n}\n/**\n * @param {?} current\n * @param {?} oldSegment\n * @param {?} newSegment\n * @return {?}\n */\nfunction replaceSegment(current, oldSegment, newSegment) {\n const /** @type {?} */ children = {};\n forEach(current.children, (c, outletName) => {\n if (c === oldSegment) {\n children[outletName] = newSegment;\n }\n else {\n children[outletName] = replaceSegment(c, oldSegment, newSegment);\n }\n });\n return new UrlSegmentGroup(current.segments, children);\n}\nclass Navigation {\n /**\n * @param {?} isAbsolute\n * @param {?} numberOfDoubleDots\n * @param {?} commands\n */\n constructor(isAbsolute, numberOfDoubleDots, commands) {\n this.isAbsolute = isAbsolute;\n this.numberOfDoubleDots = numberOfDoubleDots;\n this.commands = commands;\n if (isAbsolute && commands.length > 0 && isMatrixParams(commands[0])) {\n throw new Error('Root segment cannot have matrix parameters');\n }\n const /** @type {?} */ cmdWithOutlet = commands.find(c => typeof c === 'object' && c != null && c.outlets);\n if (cmdWithOutlet && cmdWithOutlet !== last(commands)) {\n throw new Error('{outlets:{}} has to be the last command');\n }\n }\n /**\n * @return {?}\n */\n toRoot() {\n return this.isAbsolute && this.commands.length === 1 && this.commands[0] == '/';\n }\n}\nfunction Navigation_tsickle_Closure_declarations() {\n /** @type {?} */\n Navigation.prototype.isAbsolute;\n /** @type {?} */\n Navigation.prototype.numberOfDoubleDots;\n /** @type {?} */\n Navigation.prototype.commands;\n}\n/**\n * Transforms commands to a normalized `Navigation`\n * @param {?} commands\n * @return {?}\n */\nfunction computeNavigation(commands) {\n if ((typeof commands[0] === 'string') && commands.length === 1 && commands[0] === '/') {\n return new Navigation(true, 0, commands);\n }\n let /** @type {?} */ numberOfDoubleDots = 0;\n let /** @type {?} */ isAbsolute = false;\n const /** @type {?} */ res = commands.reduce((res, cmd, cmdIdx) => {\n if (typeof cmd === 'object' && cmd != null) {\n if (cmd.outlets) {\n const /** @type {?} */ outlets = {};\n forEach(cmd.outlets, (commands, name) => {\n outlets[name] = typeof commands === 'string' ? commands.split('/') : commands;\n });\n return [...res, { outlets }];\n }\n if (cmd.segmentPath) {\n return [...res, cmd.segmentPath];\n }\n }\n if (!(typeof cmd === 'string')) {\n return [...res, cmd];\n }\n if (cmdIdx === 0) {\n cmd.split('/').forEach((urlPart, partIndex) => {\n if (partIndex == 0 && urlPart === '.') {\n // skip './a'\n }\n else if (partIndex == 0 && urlPart === '') {\n // '/a'\n isAbsolute = true;\n }\n else if (urlPart === '..') {\n // '../a'\n numberOfDoubleDots++;\n }\n else if (urlPart != '') {\n res.push(urlPart);\n }\n });\n return res;\n }\n return [...res, cmd];\n }, []);\n return new Navigation(isAbsolute, numberOfDoubleDots, res);\n}\nclass Position {\n /**\n * @param {?} segmentGroup\n * @param {?} processChildren\n * @param {?} index\n */\n constructor(segmentGroup, processChildren, index) {\n this.segmentGroup = segmentGroup;\n this.processChildren = processChildren;\n this.index = index;\n }\n}\nfunction Position_tsickle_Closure_declarations() {\n /** @type {?} */\n Position.prototype.segmentGroup;\n /** @type {?} */\n Position.prototype.processChildren;\n /** @type {?} */\n Position.prototype.index;\n}\n/**\n * @param {?} nav\n * @param {?} tree\n * @param {?} route\n * @return {?}\n */\nfunction findStartingPosition(nav, tree, route) {\n if (nav.isAbsolute) {\n return new Position(tree.root, true, 0);\n }\n if (route.snapshot._lastPathIndex === -1) {\n return new Position(route.snapshot._urlSegment, true, 0);\n }\n const /** @type {?} */ modifier = isMatrixParams(nav.commands[0]) ? 0 : 1;\n const /** @type {?} */ index = route.snapshot._lastPathIndex + modifier;\n return createPositionApplyingDoubleDots(route.snapshot._urlSegment, index, nav.numberOfDoubleDots);\n}\n/**\n * @param {?} group\n * @param {?} index\n * @param {?} numberOfDoubleDots\n * @return {?}\n */\nfunction createPositionApplyingDoubleDots(group, index, numberOfDoubleDots) {\n let /** @type {?} */ g = group;\n let /** @type {?} */ ci = index;\n let /** @type {?} */ dd = numberOfDoubleDots;\n while (dd > ci) {\n dd -= ci;\n g = /** @type {?} */ ((g.parent));\n if (!g) {\n throw new Error('Invalid number of \\'../\\'');\n }\n ci = g.segments.length;\n }\n return new Position(g, false, ci - dd);\n}\n/**\n * @param {?} command\n * @return {?}\n */\nfunction getPath(command) {\n if (typeof command === 'object' && command != null && command.outlets) {\n return command.outlets[PRIMARY_OUTLET];\n }\n return `${command}`;\n}\n/**\n * @param {?} commands\n * @return {?}\n */\nfunction getOutlets(commands) {\n if (!(typeof commands[0] === 'object'))\n return { [PRIMARY_OUTLET]: commands };\n if (commands[0].outlets === undefined)\n return { [PRIMARY_OUTLET]: commands };\n return commands[0].outlets;\n}\n/**\n * @param {?} segmentGroup\n * @param {?} startIndex\n * @param {?} commands\n * @return {?}\n */\nfunction updateSegmentGroup(segmentGroup, startIndex, commands) {\n if (!segmentGroup) {\n segmentGroup = new UrlSegmentGroup([], {});\n }\n if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {\n return updateSegmentGroupChildren(segmentGroup, startIndex, commands);\n }\n const /** @type {?} */ m = prefixedWith(segmentGroup, startIndex, commands);\n const /** @type {?} */ slicedCommands = commands.slice(m.commandIndex);\n if (m.match && m.pathIndex < segmentGroup.segments.length) {\n const /** @type {?} */ g = new UrlSegmentGroup(segmentGroup.segments.slice(0, m.pathIndex), {});\n g.children[PRIMARY_OUTLET] =\n new UrlSegmentGroup(segmentGroup.segments.slice(m.pathIndex), segmentGroup.children);\n return updateSegmentGroupChildren(g, 0, slicedCommands);\n }\n else if (m.match && slicedCommands.length === 0) {\n return new UrlSegmentGroup(segmentGroup.segments, {});\n }\n else if (m.match && !segmentGroup.hasChildren()) {\n return createNewSegmentGroup(segmentGroup, startIndex, commands);\n }\n else if (m.match) {\n return updateSegmentGroupChildren(segmentGroup, 0, slicedCommands);\n }\n else {\n return createNewSegmentGroup(segmentGroup, startIndex, commands);\n }\n}\n/**\n * @param {?} segmentGroup\n * @param {?} startIndex\n * @param {?} commands\n * @return {?}\n */\nfunction updateSegmentGroupChildren(segmentGroup, startIndex, commands) {\n if (commands.length === 0) {\n return new UrlSegmentGroup(segmentGroup.segments, {});\n }\n else {\n const /** @type {?} */ outlets = getOutlets(commands);\n const /** @type {?} */ children = {};\n forEach(outlets, (commands, outlet) => {\n if (commands !== null) {\n children[outlet] = updateSegmentGroup(segmentGroup.children[outlet], startIndex, commands);\n }\n });\n forEach(segmentGroup.children, (child, childOutlet) => {\n if (outlets[childOutlet] === undefined) {\n children[childOutlet] = child;\n }\n });\n return new UrlSegmentGroup(segmentGroup.segments, children);\n }\n}\n/**\n * @param {?} segmentGroup\n * @param {?} startIndex\n * @param {?} commands\n * @return {?}\n */\nfunction prefixedWith(segmentGroup, startIndex, commands) {\n let /** @type {?} */ currentCommandIndex = 0;\n let /** @type {?} */ currentPathIndex = startIndex;\n const /** @type {?} */ noMatch = { match: false, pathIndex: 0, commandIndex: 0 };\n while (currentPathIndex < segmentGroup.segments.length) {\n if (currentCommandIndex >= commands.length)\n return noMatch;\n const /** @type {?} */ path = segmentGroup.segments[currentPathIndex];\n const /** @type {?} */ curr = getPath(commands[currentCommandIndex]);\n const /** @type {?} */ next = currentCommandIndex < commands.length - 1 ? commands[currentCommandIndex + 1] : null;\n if (currentPathIndex > 0 && curr === undefined)\n break;\n if (curr && next && (typeof next === 'object') && next.outlets === undefined) {\n if (!compare(curr, next, path))\n return noMatch;\n currentCommandIndex += 2;\n }\n else {\n if (!compare(curr, {}, path))\n return noMatch;\n currentCommandIndex++;\n }\n currentPathIndex++;\n }\n return { match: true, pathIndex: currentPathIndex, commandIndex: currentCommandIndex };\n}\n/**\n * @param {?} segmentGroup\n * @param {?} startIndex\n * @param {?} commands\n * @return {?}\n */\nfunction createNewSegmentGroup(segmentGroup, startIndex, commands) {\n const /** @type {?} */ paths = segmentGroup.segments.slice(0, startIndex);\n let /** @type {?} */ i = 0;\n while (i < commands.length) {\n if (typeof commands[i] === 'object' && commands[i].outlets !== undefined) {\n const /** @type {?} */ children = createNewSegmentChildren(commands[i].outlets);\n return new UrlSegmentGroup(paths, children);\n }\n // if we start with an object literal, we need to reuse the path part from the segment\n if (i === 0 && isMatrixParams(commands[0])) {\n const /** @type {?} */ p = segmentGroup.segments[startIndex];\n paths.push(new UrlSegment(p.path, commands[0]));\n i++;\n continue;\n }\n const /** @type {?} */ curr = getPath(commands[i]);\n const /** @type {?} */ next = (i < commands.length - 1) ? commands[i + 1] : null;\n if (curr && next && isMatrixParams(next)) {\n paths.push(new UrlSegment(curr, stringify(next)));\n i += 2;\n }\n else {\n paths.push(new UrlSegment(curr, {}));\n i++;\n }\n }\n return new UrlSegmentGroup(paths, {});\n}\n/**\n * @param {?} outlets\n * @return {?}\n */\nfunction createNewSegmentChildren(outlets) {\n const /** @type {?} */ children = {};\n forEach(outlets, (commands, outlet) => {\n if (commands !== null) {\n children[outlet] = createNewSegmentGroup(new UrlSegmentGroup([], {}), 0, commands);\n }\n });\n return children;\n}\n/**\n * @param {?} params\n * @return {?}\n */\nfunction stringify(params) {\n const /** @type {?} */ res = {};\n forEach(params, (v, k) => res[k] = `${v}`);\n return res;\n}\n/**\n * @param {?} path\n * @param {?} params\n * @param {?} segment\n * @return {?}\n */\nfunction compare(path, params, segment) {\n return path == segment.path && shallowEqual(params, segment.parameters);\n}\n//# sourceMappingURL=create_url_tree.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { from } from 'rxjs/observable/from';\nimport { of } from 'rxjs/observable/of';\nimport { concatMap } from 'rxjs/operator/concatMap';\nimport { every } from 'rxjs/operator/every';\nimport { first } from 'rxjs/operator/first';\nimport { last } from 'rxjs/operator/last';\nimport { map } from 'rxjs/operator/map';\nimport { mergeMap } from 'rxjs/operator/mergeMap';\nimport { reduce } from 'rxjs/operator/reduce';\nimport { ActivationStart, ChildActivationStart } from './events';\nimport { equalParamsAndUrlSegments, inheritedParamsDataResolve } from './router_state';\nimport { andObservables, forEach, shallowEqual, wrapIntoObservable } from './utils/collection';\nimport { nodeChildrenAsMap } from './utils/tree';\nclass CanActivate {\n /**\n * @param {?} path\n */\n constructor(path) {\n this.path = path;\n this.route = this.path[this.path.length - 1];\n }\n}\nfunction CanActivate_tsickle_Closure_declarations() {\n /** @type {?} */\n CanActivate.prototype.route;\n /** @type {?} */\n CanActivate.prototype.path;\n}\nclass CanDeactivate {\n /**\n * @param {?} component\n * @param {?} route\n */\n constructor(component, route) {\n this.component = component;\n this.route = route;\n }\n}\nfunction CanDeactivate_tsickle_Closure_declarations() {\n /** @type {?} */\n CanDeactivate.prototype.component;\n /** @type {?} */\n CanDeactivate.prototype.route;\n}\n/**\n * This class bundles the actions involved in preactivation of a route.\n */\nexport class PreActivation {\n /**\n * @param {?} future\n * @param {?} curr\n * @param {?} moduleInjector\n * @param {?=} forwardEvent\n */\n constructor(future, curr, moduleInjector, forwardEvent) {\n this.future = future;\n this.curr = curr;\n this.moduleInjector = moduleInjector;\n this.forwardEvent = forwardEvent;\n this.canActivateChecks = [];\n this.canDeactivateChecks = [];\n }\n /**\n * @param {?} parentContexts\n * @return {?}\n */\n initialize(parentContexts) {\n const /** @type {?} */ futureRoot = this.future._root;\n const /** @type {?} */ currRoot = this.curr ? this.curr._root : null;\n this.setupChildRouteGuards(futureRoot, currRoot, parentContexts, [futureRoot.value]);\n }\n /**\n * @return {?}\n */\n checkGuards() {\n if (!this.isDeactivating() && !this.isActivating()) {\n return of(true);\n }\n const /** @type {?} */ canDeactivate$ = this.runCanDeactivateChecks();\n return mergeMap.call(canDeactivate$, (canDeactivate) => canDeactivate ? this.runCanActivateChecks() : of(false));\n }\n /**\n * @param {?} paramsInheritanceStrategy\n * @return {?}\n */\n resolveData(paramsInheritanceStrategy) {\n if (!this.isActivating())\n return of(null);\n const /** @type {?} */ checks$ = from(this.canActivateChecks);\n const /** @type {?} */ runningChecks$ = concatMap.call(checks$, (check) => this.runResolve(check.route, paramsInheritanceStrategy));\n return reduce.call(runningChecks$, (_, __) => _);\n }\n /**\n * @return {?}\n */\n isDeactivating() { return this.canDeactivateChecks.length !== 0; }\n /**\n * @return {?}\n */\n isActivating() { return this.canActivateChecks.length !== 0; }\n /**\n * Iterates over child routes and calls recursive `setupRouteGuards` to get `this` instance in\n * proper state to run `checkGuards()` method.\n * @param {?} futureNode\n * @param {?} currNode\n * @param {?} contexts\n * @param {?} futurePath\n * @return {?}\n */\n setupChildRouteGuards(futureNode, currNode, contexts, futurePath) {\n const /** @type {?} */ prevChildren = nodeChildrenAsMap(currNode);\n // Process the children of the future route\n futureNode.children.forEach(c => {\n this.setupRouteGuards(c, prevChildren[c.value.outlet], contexts, futurePath.concat([c.value]));\n delete prevChildren[c.value.outlet];\n });\n // Process any children left from the current route (not active for the future route)\n forEach(prevChildren, (v, k) => this.deactivateRouteAndItsChildren(v, /** @type {?} */ ((contexts)).getContext(k)));\n }\n /**\n * Iterates over child routes and calls recursive `setupRouteGuards` to get `this` instance in\n * proper state to run `checkGuards()` method.\n * @param {?} futureNode\n * @param {?} currNode\n * @param {?} parentContexts\n * @param {?} futurePath\n * @return {?}\n */\n setupRouteGuards(futureNode, currNode, parentContexts, futurePath) {\n const /** @type {?} */ future = futureNode.value;\n const /** @type {?} */ curr = currNode ? currNode.value : null;\n const /** @type {?} */ context = parentContexts ? parentContexts.getContext(futureNode.value.outlet) : null;\n // reusing the node\n if (curr && future.routeConfig === curr.routeConfig) {\n const /** @type {?} */ shouldRunGuardsAndResolvers = this.shouldRunGuardsAndResolvers(curr, future, /** @type {?} */ ((future.routeConfig)).runGuardsAndResolvers);\n if (shouldRunGuardsAndResolvers) {\n this.canActivateChecks.push(new CanActivate(futurePath));\n }\n else {\n // we need to set the data\n future.data = curr.data;\n future._resolvedData = curr._resolvedData;\n }\n // If we have a component, we need to go through an outlet.\n if (future.component) {\n this.setupChildRouteGuards(futureNode, currNode, context ? context.children : null, futurePath);\n // if we have a componentless route, we recurse but keep the same outlet map.\n }\n else {\n this.setupChildRouteGuards(futureNode, currNode, parentContexts, futurePath);\n }\n if (shouldRunGuardsAndResolvers) {\n const /** @type {?} */ outlet = /** @type {?} */ ((/** @type {?} */ ((context)).outlet));\n this.canDeactivateChecks.push(new CanDeactivate(outlet.component, curr));\n }\n }\n else {\n if (curr) {\n this.deactivateRouteAndItsChildren(currNode, context);\n }\n this.canActivateChecks.push(new CanActivate(futurePath));\n // If we have a component, we need to go through an outlet.\n if (future.component) {\n this.setupChildRouteGuards(futureNode, null, context ? context.children : null, futurePath);\n // if we have a componentless route, we recurse but keep the same outlet map.\n }\n else {\n this.setupChildRouteGuards(futureNode, null, parentContexts, futurePath);\n }\n }\n }\n /**\n * @param {?} curr\n * @param {?} future\n * @param {?} mode\n * @return {?}\n */\n shouldRunGuardsAndResolvers(curr, future, mode) {\n switch (mode) {\n case 'always':\n return true;\n case 'paramsOrQueryParamsChange':\n return !equalParamsAndUrlSegments(curr, future) ||\n !shallowEqual(curr.queryParams, future.queryParams);\n case 'paramsChange':\n default:\n return !equalParamsAndUrlSegments(curr, future);\n }\n }\n /**\n * @param {?} route\n * @param {?} context\n * @return {?}\n */\n deactivateRouteAndItsChildren(route, context) {\n const /** @type {?} */ children = nodeChildrenAsMap(route);\n const /** @type {?} */ r = route.value;\n forEach(children, (node, childName) => {\n if (!r.component) {\n this.deactivateRouteAndItsChildren(node, context);\n }\n else if (context) {\n this.deactivateRouteAndItsChildren(node, context.children.getContext(childName));\n }\n else {\n this.deactivateRouteAndItsChildren(node, null);\n }\n });\n if (!r.component) {\n this.canDeactivateChecks.push(new CanDeactivate(null, r));\n }\n else if (context && context.outlet && context.outlet.isActivated) {\n this.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, r));\n }\n else {\n this.canDeactivateChecks.push(new CanDeactivate(null, r));\n }\n }\n /**\n * @return {?}\n */\n runCanDeactivateChecks() {\n const /** @type {?} */ checks$ = from(this.canDeactivateChecks);\n const /** @type {?} */ runningChecks$ = mergeMap.call(checks$, (check) => this.runCanDeactivate(check.component, check.route));\n return every.call(runningChecks$, (result) => result === true);\n }\n /**\n * @return {?}\n */\n runCanActivateChecks() {\n const /** @type {?} */ checks$ = from(this.canActivateChecks);\n const /** @type {?} */ runningChecks$ = concatMap.call(checks$, (check) => andObservables(from([\n this.fireChildActivationStart(check.route.parent), this.fireActivationStart(check.route),\n this.runCanActivateChild(check.path), this.runCanActivate(check.route)\n ])));\n return every.call(runningChecks$, (result) => result === true);\n // this.fireChildActivationStart(check.path),\n }\n /**\n * This should fire off `ActivationStart` events for each route being activated at this\n * level.\n * In other words, if you're activating `a` and `b` below, `path` will contain the\n * `ActivatedRouteSnapshot`s for both and we will fire `ActivationStart` for both. Always\n * return\n * `true` so checks continue to run.\n * @param {?} snapshot\n * @return {?}\n */\n fireActivationStart(snapshot) {\n if (snapshot !== null && this.forwardEvent) {\n this.forwardEvent(new ActivationStart(snapshot));\n }\n return of(true);\n }\n /**\n * This should fire off `ChildActivationStart` events for each route being activated at this\n * level.\n * In other words, if you're activating `a` and `b` below, `path` will contain the\n * `ActivatedRouteSnapshot`s for both and we will fire `ChildActivationStart` for both. Always\n * return\n * `true` so checks continue to run.\n * @param {?} snapshot\n * @return {?}\n */\n fireChildActivationStart(snapshot) {\n if (snapshot !== null && this.forwardEvent) {\n this.forwardEvent(new ChildActivationStart(snapshot));\n }\n return of(true);\n }\n /**\n * @param {?} future\n * @return {?}\n */\n runCanActivate(future) {\n const /** @type {?} */ canActivate = future.routeConfig ? future.routeConfig.canActivate : null;\n if (!canActivate || canActivate.length === 0)\n return of(true);\n const /** @type {?} */ obs = map.call(from(canActivate), (c) => {\n const /** @type {?} */ guard = this.getToken(c, future);\n let /** @type {?} */ observable;\n if (guard.canActivate) {\n observable = wrapIntoObservable(guard.canActivate(future, this.future));\n }\n else {\n observable = wrapIntoObservable(guard(future, this.future));\n }\n return first.call(observable);\n });\n return andObservables(obs);\n }\n /**\n * @param {?} path\n * @return {?}\n */\n runCanActivateChild(path) {\n const /** @type {?} */ future = path[path.length - 1];\n const /** @type {?} */ canActivateChildGuards = path.slice(0, path.length - 1)\n .reverse()\n .map(p => this.extractCanActivateChild(p))\n .filter(_ => _ !== null);\n return andObservables(map.call(from(canActivateChildGuards), (d) => {\n const /** @type {?} */ obs = map.call(from(d.guards), (c) => {\n const /** @type {?} */ guard = this.getToken(c, d.node);\n let /** @type {?} */ observable;\n if (guard.canActivateChild) {\n observable = wrapIntoObservable(guard.canActivateChild(future, this.future));\n }\n else {\n observable = wrapIntoObservable(guard(future, this.future));\n }\n return first.call(observable);\n });\n return andObservables(obs);\n }));\n }\n /**\n * @param {?} p\n * @return {?}\n */\n extractCanActivateChild(p) {\n const /** @type {?} */ canActivateChild = p.routeConfig ? p.routeConfig.canActivateChild : null;\n if (!canActivateChild || canActivateChild.length === 0)\n return null;\n return { node: p, guards: canActivateChild };\n }\n /**\n * @param {?} component\n * @param {?} curr\n * @return {?}\n */\n runCanDeactivate(component, curr) {\n const /** @type {?} */ canDeactivate = curr && curr.routeConfig ? curr.routeConfig.canDeactivate : null;\n if (!canDeactivate || canDeactivate.length === 0)\n return of(true);\n const /** @type {?} */ canDeactivate$ = mergeMap.call(from(canDeactivate), (c) => {\n const /** @type {?} */ guard = this.getToken(c, curr);\n let /** @type {?} */ observable;\n if (guard.canDeactivate) {\n observable =\n wrapIntoObservable(guard.canDeactivate(component, curr, this.curr, this.future));\n }\n else {\n observable = wrapIntoObservable(guard(component, curr, this.curr, this.future));\n }\n return first.call(observable);\n });\n return every.call(canDeactivate$, (result) => result === true);\n }\n /**\n * @param {?} future\n * @param {?} paramsInheritanceStrategy\n * @return {?}\n */\n runResolve(future, paramsInheritanceStrategy) {\n const /** @type {?} */ resolve = future._resolve;\n return map.call(this.resolveNode(resolve, future), (resolvedData) => {\n future._resolvedData = resolvedData;\n future.data = Object.assign({}, future.data, inheritedParamsDataResolve(future, paramsInheritanceStrategy).resolve);\n return null;\n });\n }\n /**\n * @param {?} resolve\n * @param {?} future\n * @return {?}\n */\n resolveNode(resolve, future) {\n const /** @type {?} */ keys = Object.keys(resolve);\n if (keys.length === 0) {\n return of({});\n }\n if (keys.length === 1) {\n const /** @type {?} */ key = keys[0];\n return map.call(this.getResolver(resolve[key], future), (value) => { return { [key]: value }; });\n }\n const /** @type {?} */ data = {};\n const /** @type {?} */ runningResolvers$ = mergeMap.call(from(keys), (key) => {\n return map.call(this.getResolver(resolve[key], future), (value) => {\n data[key] = value;\n return value;\n });\n });\n return map.call(last.call(runningResolvers$), () => data);\n }\n /**\n * @param {?} injectionToken\n * @param {?} future\n * @return {?}\n */\n getResolver(injectionToken, future) {\n const /** @type {?} */ resolver = this.getToken(injectionToken, future);\n return resolver.resolve ? wrapIntoObservable(resolver.resolve(future, this.future)) :\n wrapIntoObservable(resolver(future, this.future));\n }\n /**\n * @param {?} token\n * @param {?} snapshot\n * @return {?}\n */\n getToken(token, snapshot) {\n const /** @type {?} */ config = closestLoadedConfig(snapshot);\n const /** @type {?} */ injector = config ? config.module.injector : this.moduleInjector;\n return injector.get(token);\n }\n}\nfunction PreActivation_tsickle_Closure_declarations() {\n /** @type {?} */\n PreActivation.prototype.canActivateChecks;\n /** @type {?} */\n PreActivation.prototype.canDeactivateChecks;\n /** @type {?} */\n PreActivation.prototype.future;\n /** @type {?} */\n PreActivation.prototype.curr;\n /** @type {?} */\n PreActivation.prototype.moduleInjector;\n /** @type {?} */\n PreActivation.prototype.forwardEvent;\n}\n/**\n * @param {?} snapshot\n * @return {?}\n */\nfunction closestLoadedConfig(snapshot) {\n if (!snapshot)\n return null;\n for (let /** @type {?} */ s = snapshot.parent; s; s = s.parent) {\n const /** @type {?} */ route = s.routeConfig;\n if (route && route._loadedConfig)\n return route._loadedConfig;\n }\n return null;\n}\n//# sourceMappingURL=pre_activation.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Observable } from 'rxjs/Observable';\nimport { of } from 'rxjs/observable/of';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, inheritedParamsDataResolve } from './router_state';\nimport { PRIMARY_OUTLET, defaultUrlMatcher } from './shared';\nimport { UrlSegmentGroup, mapChildrenIntoArray } from './url_tree';\nimport { forEach, last } from './utils/collection';\nimport { TreeNode } from './utils/tree';\nclass NoMatch {\n}\n/**\n * @param {?} rootComponentType\n * @param {?} config\n * @param {?} urlTree\n * @param {?} url\n * @param {?=} paramsInheritanceStrategy\n * @return {?}\n */\nexport function recognize(rootComponentType, config, urlTree, url, paramsInheritanceStrategy = 'emptyOnly') {\n return new Recognizer(rootComponentType, config, urlTree, url, paramsInheritanceStrategy)\n .recognize();\n}\nclass Recognizer {\n /**\n * @param {?} rootComponentType\n * @param {?} config\n * @param {?} urlTree\n * @param {?} url\n * @param {?} paramsInheritanceStrategy\n */\n constructor(rootComponentType, config, urlTree, url, paramsInheritanceStrategy) {\n this.rootComponentType = rootComponentType;\n this.config = config;\n this.urlTree = urlTree;\n this.url = url;\n this.paramsInheritanceStrategy = paramsInheritanceStrategy;\n }\n /**\n * @return {?}\n */\n recognize() {\n try {\n const /** @type {?} */ rootSegmentGroup = split(this.urlTree.root, [], [], this.config).segmentGroup;\n const /** @type {?} */ children = this.processSegmentGroup(this.config, rootSegmentGroup, PRIMARY_OUTLET);\n const /** @type {?} */ root = new ActivatedRouteSnapshot([], Object.freeze({}), Object.freeze(this.urlTree.queryParams), /** @type {?} */ ((this.urlTree.fragment)), {}, PRIMARY_OUTLET, this.rootComponentType, null, this.urlTree.root, -1, {});\n const /** @type {?} */ rootNode = new TreeNode(root, children);\n const /** @type {?} */ routeState = new RouterStateSnapshot(this.url, rootNode);\n this.inheritParamsAndData(routeState._root);\n return of(routeState);\n }\n catch (/** @type {?} */ e) {\n return new Observable((obs) => obs.error(e));\n }\n }\n /**\n * @param {?} routeNode\n * @return {?}\n */\n inheritParamsAndData(routeNode) {\n const /** @type {?} */ route = routeNode.value;\n const /** @type {?} */ i = inheritedParamsDataResolve(route, this.paramsInheritanceStrategy);\n route.params = Object.freeze(i.params);\n route.data = Object.freeze(i.data);\n routeNode.children.forEach(n => this.inheritParamsAndData(n));\n }\n /**\n * @param {?} config\n * @param {?} segmentGroup\n * @param {?} outlet\n * @return {?}\n */\n processSegmentGroup(config, segmentGroup, outlet) {\n if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {\n return this.processChildren(config, segmentGroup);\n }\n return this.processSegment(config, segmentGroup, segmentGroup.segments, outlet);\n }\n /**\n * @param {?} config\n * @param {?} segmentGroup\n * @return {?}\n */\n processChildren(config, segmentGroup) {\n const /** @type {?} */ children = mapChildrenIntoArray(segmentGroup, (child, childOutlet) => this.processSegmentGroup(config, child, childOutlet));\n checkOutletNameUniqueness(children);\n sortActivatedRouteSnapshots(children);\n return children;\n }\n /**\n * @param {?} config\n * @param {?} segmentGroup\n * @param {?} segments\n * @param {?} outlet\n * @return {?}\n */\n processSegment(config, segmentGroup, segments, outlet) {\n for (const /** @type {?} */ r of config) {\n try {\n return this.processSegmentAgainstRoute(r, segmentGroup, segments, outlet);\n }\n catch (/** @type {?} */ e) {\n if (!(e instanceof NoMatch))\n throw e;\n }\n }\n if (this.noLeftoversInUrl(segmentGroup, segments, outlet)) {\n return [];\n }\n throw new NoMatch();\n }\n /**\n * @param {?} segmentGroup\n * @param {?} segments\n * @param {?} outlet\n * @return {?}\n */\n noLeftoversInUrl(segmentGroup, segments, outlet) {\n return segments.length === 0 && !segmentGroup.children[outlet];\n }\n /**\n * @param {?} route\n * @param {?} rawSegment\n * @param {?} segments\n * @param {?} outlet\n * @return {?}\n */\n processSegmentAgainstRoute(route, rawSegment, segments, outlet) {\n if (route.redirectTo)\n throw new NoMatch();\n if ((route.outlet || PRIMARY_OUTLET) !== outlet)\n throw new NoMatch();\n let /** @type {?} */ snapshot;\n let /** @type {?} */ consumedSegments = [];\n let /** @type {?} */ rawSlicedSegments = [];\n if (route.path === '**') {\n const /** @type {?} */ params = segments.length > 0 ? /** @type {?} */ ((last(segments))).parameters : {};\n snapshot = new ActivatedRouteSnapshot(segments, params, Object.freeze(this.urlTree.queryParams), /** @type {?} */ ((this.urlTree.fragment)), getData(route), outlet, /** @type {?} */ ((route.component)), route, getSourceSegmentGroup(rawSegment), getPathIndexShift(rawSegment) + segments.length, getResolve(route));\n }\n else {\n const /** @type {?} */ result = match(rawSegment, route, segments);\n consumedSegments = result.consumedSegments;\n rawSlicedSegments = segments.slice(result.lastChild);\n snapshot = new ActivatedRouteSnapshot(consumedSegments, result.parameters, Object.freeze(this.urlTree.queryParams), /** @type {?} */ ((this.urlTree.fragment)), getData(route), outlet, /** @type {?} */ ((route.component)), route, getSourceSegmentGroup(rawSegment), getPathIndexShift(rawSegment) + consumedSegments.length, getResolve(route));\n }\n const /** @type {?} */ childConfig = getChildConfig(route);\n const { segmentGroup, slicedSegments } = split(rawSegment, consumedSegments, rawSlicedSegments, childConfig);\n if (slicedSegments.length === 0 && segmentGroup.hasChildren()) {\n const /** @type {?} */ children = this.processChildren(childConfig, segmentGroup);\n return [new TreeNode(snapshot, children)];\n }\n if (childConfig.length === 0 && slicedSegments.length === 0) {\n return [new TreeNode(snapshot, [])];\n }\n const /** @type {?} */ children = this.processSegment(childConfig, segmentGroup, slicedSegments, PRIMARY_OUTLET);\n return [new TreeNode(snapshot, children)];\n }\n}\nfunction Recognizer_tsickle_Closure_declarations() {\n /** @type {?} */\n Recognizer.prototype.rootComponentType;\n /** @type {?} */\n Recognizer.prototype.config;\n /** @type {?} */\n Recognizer.prototype.urlTree;\n /** @type {?} */\n Recognizer.prototype.url;\n /** @type {?} */\n Recognizer.prototype.paramsInheritanceStrategy;\n}\n/**\n * @param {?} nodes\n * @return {?}\n */\nfunction sortActivatedRouteSnapshots(nodes) {\n nodes.sort((a, b) => {\n if (a.value.outlet === PRIMARY_OUTLET)\n return -1;\n if (b.value.outlet === PRIMARY_OUTLET)\n return 1;\n return a.value.outlet.localeCompare(b.value.outlet);\n });\n}\n/**\n * @param {?} route\n * @return {?}\n */\nfunction getChildConfig(route) {\n if (route.children) {\n return route.children;\n }\n if (route.loadChildren) {\n return /** @type {?} */ ((route._loadedConfig)).routes;\n }\n return [];\n}\n/**\n * @record\n */\nfunction MatchResult() { }\nfunction MatchResult_tsickle_Closure_declarations() {\n /** @type {?} */\n MatchResult.prototype.consumedSegments;\n /** @type {?} */\n MatchResult.prototype.lastChild;\n /** @type {?} */\n MatchResult.prototype.parameters;\n}\n/**\n * @param {?} segmentGroup\n * @param {?} route\n * @param {?} segments\n * @return {?}\n */\nfunction match(segmentGroup, route, segments) {\n if (route.path === '') {\n if (route.pathMatch === 'full' && (segmentGroup.hasChildren() || segments.length > 0)) {\n throw new NoMatch();\n }\n return { consumedSegments: [], lastChild: 0, parameters: {} };\n }\n const /** @type {?} */ matcher = route.matcher || defaultUrlMatcher;\n const /** @type {?} */ res = matcher(segments, segmentGroup, route);\n if (!res)\n throw new NoMatch();\n const /** @type {?} */ posParams = {};\n forEach(/** @type {?} */ ((res.posParams)), (v, k) => { posParams[k] = v.path; });\n const /** @type {?} */ parameters = res.consumed.length > 0 ? Object.assign({}, posParams, res.consumed[res.consumed.length - 1].parameters) :\n posParams;\n return { consumedSegments: res.consumed, lastChild: res.consumed.length, parameters };\n}\n/**\n * @param {?} nodes\n * @return {?}\n */\nfunction checkOutletNameUniqueness(nodes) {\n const /** @type {?} */ names = {};\n nodes.forEach(n => {\n const /** @type {?} */ routeWithSameOutletName = names[n.value.outlet];\n if (routeWithSameOutletName) {\n const /** @type {?} */ p = routeWithSameOutletName.url.map(s => s.toString()).join('/');\n const /** @type {?} */ c = n.value.url.map(s => s.toString()).join('/');\n throw new Error(`Two segments cannot have the same outlet name: '${p}' and '${c}'.`);\n }\n names[n.value.outlet] = n.value;\n });\n}\n/**\n * @param {?} segmentGroup\n * @return {?}\n */\nfunction getSourceSegmentGroup(segmentGroup) {\n let /** @type {?} */ s = segmentGroup;\n while (s._sourceSegment) {\n s = s._sourceSegment;\n }\n return s;\n}\n/**\n * @param {?} segmentGroup\n * @return {?}\n */\nfunction getPathIndexShift(segmentGroup) {\n let /** @type {?} */ s = segmentGroup;\n let /** @type {?} */ res = (s._segmentIndexShift ? s._segmentIndexShift : 0);\n while (s._sourceSegment) {\n s = s._sourceSegment;\n res += (s._segmentIndexShift ? s._segmentIndexShift : 0);\n }\n return res - 1;\n}\n/**\n * @param {?} segmentGroup\n * @param {?} consumedSegments\n * @param {?} slicedSegments\n * @param {?} config\n * @return {?}\n */\nfunction split(segmentGroup, consumedSegments, slicedSegments, config) {\n if (slicedSegments.length > 0 &&\n containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, config)) {\n const /** @type {?} */ s = new UrlSegmentGroup(consumedSegments, createChildrenForEmptyPaths(segmentGroup, consumedSegments, config, new UrlSegmentGroup(slicedSegments, segmentGroup.children)));\n s._sourceSegment = segmentGroup;\n s._segmentIndexShift = consumedSegments.length;\n return { segmentGroup: s, slicedSegments: [] };\n }\n if (slicedSegments.length === 0 &&\n containsEmptyPathMatches(segmentGroup, slicedSegments, config)) {\n const /** @type {?} */ s = new UrlSegmentGroup(segmentGroup.segments, addEmptyPathsToChildrenIfNeeded(segmentGroup, slicedSegments, config, segmentGroup.children));\n s._sourceSegment = segmentGroup;\n s._segmentIndexShift = consumedSegments.length;\n return { segmentGroup: s, slicedSegments };\n }\n const /** @type {?} */ s = new UrlSegmentGroup(segmentGroup.segments, segmentGroup.children);\n s._sourceSegment = segmentGroup;\n s._segmentIndexShift = consumedSegments.length;\n return { segmentGroup: s, slicedSegments };\n}\n/**\n * @param {?} segmentGroup\n * @param {?} slicedSegments\n * @param {?} routes\n * @param {?} children\n * @return {?}\n */\nfunction addEmptyPathsToChildrenIfNeeded(segmentGroup, slicedSegments, routes, children) {\n const /** @type {?} */ res = {};\n for (const /** @type {?} */ r of routes) {\n if (emptyPathMatch(segmentGroup, slicedSegments, r) && !children[getOutlet(r)]) {\n const /** @type {?} */ s = new UrlSegmentGroup([], {});\n s._sourceSegment = segmentGroup;\n s._segmentIndexShift = segmentGroup.segments.length;\n res[getOutlet(r)] = s;\n }\n }\n return Object.assign({}, children, res);\n}\n/**\n * @param {?} segmentGroup\n * @param {?} consumedSegments\n * @param {?} routes\n * @param {?} primarySegment\n * @return {?}\n */\nfunction createChildrenForEmptyPaths(segmentGroup, consumedSegments, routes, primarySegment) {\n const /** @type {?} */ res = {};\n res[PRIMARY_OUTLET] = primarySegment;\n primarySegment._sourceSegment = segmentGroup;\n primarySegment._segmentIndexShift = consumedSegments.length;\n for (const /** @type {?} */ r of routes) {\n if (r.path === '' && getOutlet(r) !== PRIMARY_OUTLET) {\n const /** @type {?} */ s = new UrlSegmentGroup([], {});\n s._sourceSegment = segmentGroup;\n s._segmentIndexShift = consumedSegments.length;\n res[getOutlet(r)] = s;\n }\n }\n return res;\n}\n/**\n * @param {?} segmentGroup\n * @param {?} slicedSegments\n * @param {?} routes\n * @return {?}\n */\nfunction containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, routes) {\n return routes.some(r => emptyPathMatch(segmentGroup, slicedSegments, r) && getOutlet(r) !== PRIMARY_OUTLET);\n}\n/**\n * @param {?} segmentGroup\n * @param {?} slicedSegments\n * @param {?} routes\n * @return {?}\n */\nfunction containsEmptyPathMatches(segmentGroup, slicedSegments, routes) {\n return routes.some(r => emptyPathMatch(segmentGroup, slicedSegments, r));\n}\n/**\n * @param {?} segmentGroup\n * @param {?} slicedSegments\n * @param {?} r\n * @return {?}\n */\nfunction emptyPathMatch(segmentGroup, slicedSegments, r) {\n if ((segmentGroup.hasChildren() || slicedSegments.length > 0) && r.pathMatch === 'full') {\n return false;\n }\n return r.path === '' && r.redirectTo === undefined;\n}\n/**\n * @param {?} route\n * @return {?}\n */\nfunction getOutlet(route) {\n return route.outlet || PRIMARY_OUTLET;\n}\n/**\n * @param {?} route\n * @return {?}\n */\nfunction getData(route) {\n return route.data || {};\n}\n/**\n * @param {?} route\n * @return {?}\n */\nfunction getResolve(route) {\n return route.resolve || {};\n}\n//# sourceMappingURL=recognize.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * \\@whatItDoes Provides a way to customize when activated routes get reused.\n *\n * \\@experimental\n * @abstract\n */\nexport class RouteReuseStrategy {\n}\nfunction RouteReuseStrategy_tsickle_Closure_declarations() {\n /**\n * Determines if this route (and its subtree) should be detached to be reused later\n * @abstract\n * @param {?} route\n * @return {?}\n */\n RouteReuseStrategy.prototype.shouldDetach = function (route) { };\n /**\n * Stores the detached route.\n *\n * Storing a `null` value should erase the previously stored value.\n * @abstract\n * @param {?} route\n * @param {?} handle\n * @return {?}\n */\n RouteReuseStrategy.prototype.store = function (route, handle) { };\n /**\n * Determines if this route (and its subtree) should be reattached\n * @abstract\n * @param {?} route\n * @return {?}\n */\n RouteReuseStrategy.prototype.shouldAttach = function (route) { };\n /**\n * Retrieves the previously stored route\n * @abstract\n * @param {?} route\n * @return {?}\n */\n RouteReuseStrategy.prototype.retrieve = function (route) { };\n /**\n * Determines if a route should be reused\n * @abstract\n * @param {?} future\n * @param {?} curr\n * @return {?}\n */\n RouteReuseStrategy.prototype.shouldReuseRoute = function (future, curr) { };\n}\n/**\n * Does not detach any subtrees. Reuses routes as long as their route config is the same.\n */\nexport class DefaultRouteReuseStrategy {\n /**\n * @param {?} route\n * @return {?}\n */\n shouldDetach(route) { return false; }\n /**\n * @param {?} route\n * @param {?} detachedTree\n * @return {?}\n */\n store(route, detachedTree) { }\n /**\n * @param {?} route\n * @return {?}\n */\n shouldAttach(route) { return false; }\n /**\n * @param {?} route\n * @return {?}\n */\n retrieve(route) { return null; }\n /**\n * @param {?} future\n * @param {?} curr\n * @return {?}\n */\n shouldReuseRoute(future, curr) {\n return future.routeConfig === curr.routeConfig;\n }\n}\n//# sourceMappingURL=route_reuse_strategy.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { InjectionToken, NgModuleFactory } from '@angular/core';\nimport { fromPromise } from 'rxjs/observable/fromPromise';\nimport { of } from 'rxjs/observable/of';\nimport { map } from 'rxjs/operator/map';\nimport { mergeMap } from 'rxjs/operator/mergeMap';\nimport { LoadedRouterConfig, copyConfig } from './config';\nimport { flatten, wrapIntoObservable } from './utils/collection';\n/**\n * \\@docsNotRequired\n * \\@experimental\n */\nexport const /** @type {?} */ ROUTES = new InjectionToken('ROUTES');\nexport class RouterConfigLoader {\n /**\n * @param {?} loader\n * @param {?} compiler\n * @param {?=} onLoadStartListener\n * @param {?=} onLoadEndListener\n */\n constructor(loader, compiler, onLoadStartListener, onLoadEndListener) {\n this.loader = loader;\n this.compiler = compiler;\n this.onLoadStartListener = onLoadStartListener;\n this.onLoadEndListener = onLoadEndListener;\n }\n /**\n * @param {?} parentInjector\n * @param {?} route\n * @return {?}\n */\n load(parentInjector, route) {\n if (this.onLoadStartListener) {\n this.onLoadStartListener(route);\n }\n const /** @type {?} */ moduleFactory$ = this.loadModuleFactory(/** @type {?} */ ((route.loadChildren)));\n return map.call(moduleFactory$, (factory) => {\n if (this.onLoadEndListener) {\n this.onLoadEndListener(route);\n }\n const /** @type {?} */ module = factory.create(parentInjector);\n return new LoadedRouterConfig(flatten(module.injector.get(ROUTES)).map(copyConfig), module);\n });\n }\n /**\n * @param {?} loadChildren\n * @return {?}\n */\n loadModuleFactory(loadChildren) {\n if (typeof loadChildren === 'string') {\n return fromPromise(this.loader.load(loadChildren));\n }\n else {\n return mergeMap.call(wrapIntoObservable(loadChildren()), (t) => {\n if (t instanceof NgModuleFactory) {\n return of(t);\n }\n else {\n return fromPromise(this.compiler.compileModuleAsync(t));\n }\n });\n }\n }\n}\nfunction RouterConfigLoader_tsickle_Closure_declarations() {\n /** @type {?} */\n RouterConfigLoader.prototype.loader;\n /** @type {?} */\n RouterConfigLoader.prototype.compiler;\n /** @type {?} */\n RouterConfigLoader.prototype.onLoadStartListener;\n /** @type {?} */\n RouterConfigLoader.prototype.onLoadEndListener;\n}\n//# sourceMappingURL=router_config_loader.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * \\@whatItDoes Provides a way to migrate AngularJS applications to Angular.\n *\n * \\@experimental\n * @abstract\n */\nexport class UrlHandlingStrategy {\n}\nfunction UrlHandlingStrategy_tsickle_Closure_declarations() {\n /**\n * Tells the router if this URL should be processed.\n *\n * When it returns true, the router will execute the regular navigation.\n * When it returns false, the router will set the router state to an empty state.\n * As a result, all the active components will be destroyed.\n *\n * @abstract\n * @param {?} url\n * @return {?}\n */\n UrlHandlingStrategy.prototype.shouldProcessUrl = function (url) { };\n /**\n * Extracts the part of the URL that should be handled by the router.\n * The rest of the URL will remain untouched.\n * @abstract\n * @param {?} url\n * @return {?}\n */\n UrlHandlingStrategy.prototype.extract = function (url) { };\n /**\n * Merges the URL fragment with the rest of the URL.\n * @abstract\n * @param {?} newUrlPart\n * @param {?} rawUrl\n * @return {?}\n */\n UrlHandlingStrategy.prototype.merge = function (newUrlPart, rawUrl) { };\n}\n/**\n * \\@experimental\n */\nexport class DefaultUrlHandlingStrategy {\n /**\n * @param {?} url\n * @return {?}\n */\n shouldProcessUrl(url) { return true; }\n /**\n * @param {?} url\n * @return {?}\n */\n extract(url) { return url; }\n /**\n * @param {?} newUrlPart\n * @param {?} wholeUrl\n * @return {?}\n */\n merge(newUrlPart, wholeUrl) { return newUrlPart; }\n}\n//# sourceMappingURL=url_handling_strategy.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { NgModuleRef, isDevMode } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\nimport { Subject } from 'rxjs/Subject';\nimport { of } from 'rxjs/observable/of';\nimport { concatMap } from 'rxjs/operator/concatMap';\nimport { map } from 'rxjs/operator/map';\nimport { mergeMap } from 'rxjs/operator/mergeMap';\nimport { applyRedirects } from './apply_redirects';\nimport { copyConfig, validateConfig } from './config';\nimport { createRouterState } from './create_router_state';\nimport { createUrlTree } from './create_url_tree';\nimport { ActivationEnd, ChildActivationEnd, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RoutesRecognized } from './events';\nimport { PreActivation } from './pre_activation';\nimport { recognize } from './recognize';\nimport { DefaultRouteReuseStrategy } from './route_reuse_strategy';\nimport { RouterConfigLoader } from './router_config_loader';\nimport { advanceActivatedRoute, createEmptyState } from './router_state';\nimport { isNavigationCancelingError } from './shared';\nimport { DefaultUrlHandlingStrategy } from './url_handling_strategy';\nimport { UrlTree, containsTree, createEmptyUrlTree } from './url_tree';\nimport { forEach } from './utils/collection';\nimport { nodeChildrenAsMap } from './utils/tree';\n/**\n * \\@whatItDoes Represents the extra options used during navigation.\n *\n * \\@stable\n * @record\n */\nexport function NavigationExtras() { }\nfunction NavigationExtras_tsickle_Closure_declarations() {\n /**\n * Enables relative navigation from the current ActivatedRoute.\n *\n * Configuration:\n *\n * ```\n * [{\n * path: 'parent',\n * component: ParentComponent,\n * children: [{\n * path: 'list',\n * component: ListComponent\n * },{\n * path: 'child',\n * component: ChildComponent\n * }]\n * }]\n * ```\n *\n * Navigate to list route from child route:\n *\n * ```\n * \\@Component({...})\n * class ChildComponent {\n * constructor(private router: Router, private route: ActivatedRoute) {}\n *\n * go() {\n * this.router.navigate(['../list'], { relativeTo: this.route });\n * }\n * }\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.relativeTo;\n /**\n * Sets query parameters to the URL.\n *\n * ```\n * // Navigate to /results?page=1\n * this.router.navigate(['/results'], { queryParams: { page: 1 } });\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.queryParams;\n /**\n * Sets the hash fragment for the URL.\n *\n * ```\n * // Navigate to /results#top\n * this.router.navigate(['/results'], { fragment: 'top' });\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.fragment;\n /**\n * Preserves the query parameters for the next navigation.\n *\n * deprecated, use `queryParamsHandling` instead\n *\n * ```\n * // Preserve query params from /results?page=1 to /view?page=1\n * this.router.navigate(['/view'], { preserveQueryParams: true });\n * ```\n *\n * @deprecated since v4\n * @type {?|undefined}\n */\n NavigationExtras.prototype.preserveQueryParams;\n /**\n * config strategy to handle the query parameters for the next navigation.\n *\n * ```\n * // from /results?page=1 to /view?page=1&page=2\n * this.router.navigate(['/view'], { queryParams: { page: 2 }, queryParamsHandling: \"merge\" });\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.queryParamsHandling;\n /**\n * Preserves the fragment for the next navigation\n *\n * ```\n * // Preserve fragment from /results#top to /view#top\n * this.router.navigate(['/view'], { preserveFragment: true });\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.preserveFragment;\n /**\n * Navigates without pushing a new state into history.\n *\n * ```\n * // Navigate silently to /view\n * this.router.navigate(['/view'], { skipLocationChange: true });\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.skipLocationChange;\n /**\n * Navigates while replacing the current state in history.\n *\n * ```\n * // Navigate to /view\n * this.router.navigate(['/view'], { replaceUrl: true });\n * ```\n * @type {?|undefined}\n */\n NavigationExtras.prototype.replaceUrl;\n}\n/**\n * @param {?} error\n * @return {?}\n */\nfunction defaultErrorHandler(error) {\n throw error;\n}\n/**\n * \\@internal\n * @param {?} snapshot\n * @return {?}\n */\nfunction defaultRouterHook(snapshot) {\n return /** @type {?} */ (of(null));\n}\n/**\n * \\@whatItDoes Provides the navigation and url manipulation capabilities.\n *\n * See {\\@link Routes} for more details and examples.\n *\n * \\@ngModule RouterModule\n *\n * \\@stable\n */\nexport class Router {\n /**\n * Creates the router service.\n * @param {?} rootComponentType\n * @param {?} urlSerializer\n * @param {?} rootContexts\n * @param {?} location\n * @param {?} injector\n * @param {?} loader\n * @param {?} compiler\n * @param {?} config\n */\n constructor(rootComponentType, urlSerializer, rootContexts, location, injector, loader, compiler, config) {\n this.rootComponentType = rootComponentType;\n this.urlSerializer = urlSerializer;\n this.rootContexts = rootContexts;\n this.location = location;\n this.config = config;\n this.navigations = new BehaviorSubject(/** @type {?} */ ((null)));\n this.navigationId = 0;\n this.events = new Subject();\n /**\n * Error handler that is invoked when a navigation errors.\n *\n * See {\\@link ErrorHandler} for more information.\n */\n this.errorHandler = defaultErrorHandler;\n /**\n * Indicates if at least one navigation happened.\n */\n this.navigated = false;\n /**\n * Used by RouterModule. This allows us to\n * pause the navigation either before preactivation or after it.\n * \\@internal\n */\n this.hooks = {\n beforePreactivation: defaultRouterHook,\n afterPreactivation: defaultRouterHook\n };\n /**\n * Extracts and merges URLs. Used for AngularJS to Angular migrations.\n */\n this.urlHandlingStrategy = new DefaultUrlHandlingStrategy();\n this.routeReuseStrategy = new DefaultRouteReuseStrategy();\n /**\n * Define what the router should do if it receives a navigation request to the current URL.\n * By default, the router will ignore this navigation. However, this prevents features such\n * as a \"refresh\" button. Use this option to configure the behavior when navigating to the\n * current URL. Default is 'ignore'.\n */\n this.onSameUrlNavigation = 'ignore';\n /**\n * Defines how the router merges params, data and resolved data from parent to child\n * routes. Available options are:\n *\n * - `'emptyOnly'`, the default, only inherits parent params for path-less or component-less\n * routes.\n * - `'always'`, enables unconditional inheritance of parent params.\n */\n this.paramsInheritanceStrategy = 'emptyOnly';\n const /** @type {?} */ onLoadStart = (r) => this.triggerEvent(new RouteConfigLoadStart(r));\n const /** @type {?} */ onLoadEnd = (r) => this.triggerEvent(new RouteConfigLoadEnd(r));\n this.ngModule = injector.get(NgModuleRef);\n this.resetConfig(config);\n this.currentUrlTree = createEmptyUrlTree();\n this.rawUrlTree = this.currentUrlTree;\n this.configLoader = new RouterConfigLoader(loader, compiler, onLoadStart, onLoadEnd);\n this.routerState = createEmptyState(this.currentUrlTree, this.rootComponentType);\n this.processNavigations();\n }\n /**\n * \\@internal\n * TODO: this should be removed once the constructor of the router made internal\n * @param {?} rootComponentType\n * @return {?}\n */\n resetRootComponentType(rootComponentType) {\n this.rootComponentType = rootComponentType;\n // TODO: vsavkin router 4.0 should make the root component set to null\n // this will simplify the lifecycle of the router.\n this.routerState.root.component = this.rootComponentType;\n }\n /**\n * Sets up the location change listener and performs the initial navigation.\n * @return {?}\n */\n initialNavigation() {\n this.setUpLocationChangeListener();\n if (this.navigationId === 0) {\n this.navigateByUrl(this.location.path(true), { replaceUrl: true });\n }\n }\n /**\n * Sets up the location change listener.\n * @return {?}\n */\n setUpLocationChangeListener() {\n // Don't need to use Zone.wrap any more, because zone.js\n // already patch onPopState, so location change callback will\n // run into ngZone\n if (!this.locationSubscription) {\n this.locationSubscription = /** @type {?} */ (this.location.subscribe((change) => {\n const /** @type {?} */ rawUrlTree = this.urlSerializer.parse(change['url']);\n const /** @type {?} */ source = change['type'] === 'popstate' ? 'popstate' : 'hashchange';\n setTimeout(() => { this.scheduleNavigation(rawUrlTree, source, { replaceUrl: true }); }, 0);\n }));\n }\n }\n /**\n * The current url\n * @return {?}\n */\n get url() { return this.serializeUrl(this.currentUrlTree); }\n /**\n * \\@internal\n * @param {?} e\n * @return {?}\n */\n triggerEvent(e) { (/** @type {?} */ (this.events)).next(e); }\n /**\n * Resets the configuration used for navigation and generating links.\n *\n * ### Usage\n *\n * ```\n * router.resetConfig([\n * { path: 'team/:id', component: TeamCmp, children: [\n * { path: 'simple', component: SimpleCmp },\n * { path: 'user/:name', component: UserCmp }\n * ]}\n * ]);\n * ```\n * @param {?} config\n * @return {?}\n */\n resetConfig(config) {\n validateConfig(config);\n this.config = config.map(copyConfig);\n this.navigated = false;\n }\n /**\n * \\@docsNotRequired\n * @return {?}\n */\n ngOnDestroy() { this.dispose(); }\n /**\n * Disposes of the router\n * @return {?}\n */\n dispose() {\n if (this.locationSubscription) {\n this.locationSubscription.unsubscribe();\n this.locationSubscription = /** @type {?} */ ((null));\n }\n }\n /**\n * Applies an array of commands to the current url tree and creates a new url tree.\n *\n * When given an activate route, applies the given commands starting from the route.\n * When not given a route, applies the given command starting from the root.\n *\n * ### Usage\n *\n * ```\n * // create /team/33/user/11\n * router.createUrlTree(['/team', 33, 'user', 11]);\n *\n * // create /team/33;expand=true/user/11\n * router.createUrlTree(['/team', 33, {expand: true}, 'user', 11]);\n *\n * // you can collapse static segments like this (this works only with the first passed-in value):\n * router.createUrlTree(['/team/33/user', userId]);\n *\n * // If the first segment can contain slashes, and you do not want the router to split it, you\n * // can do the following:\n *\n * router.createUrlTree([{segmentPath: '/one/two'}]);\n *\n * // create /team/33/(user/11//right:chat)\n * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: 'chat'}}]);\n *\n * // remove the right secondary node\n * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: null}}]);\n *\n * // assuming the current url is `/team/33/user/11` and the route points to `user/11`\n *\n * // navigate to /team/33/user/11/details\n * router.createUrlTree(['details'], {relativeTo: route});\n *\n * // navigate to /team/33/user/22\n * router.createUrlTree(['../22'], {relativeTo: route});\n *\n * // navigate to /team/44/user/22\n * router.createUrlTree(['../../team/44/user/22'], {relativeTo: route});\n * ```\n * @param {?} commands\n * @param {?=} navigationExtras\n * @return {?}\n */\n createUrlTree(commands, navigationExtras = {}) {\n const { relativeTo, queryParams, fragment, preserveQueryParams, queryParamsHandling, preserveFragment } = navigationExtras;\n if (isDevMode() && preserveQueryParams && /** @type {?} */ (console) && /** @type {?} */ (console.warn)) {\n console.warn('preserveQueryParams is deprecated, use queryParamsHandling instead.');\n }\n const /** @type {?} */ a = relativeTo || this.routerState.root;\n const /** @type {?} */ f = preserveFragment ? this.currentUrlTree.fragment : fragment;\n let /** @type {?} */ q = null;\n if (queryParamsHandling) {\n switch (queryParamsHandling) {\n case 'merge':\n q = Object.assign({}, this.currentUrlTree.queryParams, queryParams);\n break;\n case 'preserve':\n q = this.currentUrlTree.queryParams;\n break;\n default:\n q = queryParams || null;\n }\n }\n else {\n q = preserveQueryParams ? this.currentUrlTree.queryParams : queryParams || null;\n }\n if (q !== null) {\n q = this.removeEmptyProps(q);\n }\n return createUrlTree(a, this.currentUrlTree, commands, /** @type {?} */ ((q)), /** @type {?} */ ((f)));\n }\n /**\n * Navigate based on the provided url. This navigation is always absolute.\n *\n * Returns a promise that:\n * - resolves to 'true' when navigation succeeds,\n * - resolves to 'false' when navigation fails,\n * - is rejected when an error happens.\n *\n * ### Usage\n *\n * ```\n * router.navigateByUrl(\"/team/33/user/11\");\n *\n * // Navigate without updating the URL\n * router.navigateByUrl(\"/team/33/user/11\", { skipLocationChange: true });\n * ```\n *\n * In opposite to `navigate`, `navigateByUrl` takes a whole URL\n * and does not apply any delta to the current one.\n * @param {?} url\n * @param {?=} extras\n * @return {?}\n */\n navigateByUrl(url, extras = { skipLocationChange: false }) {\n const /** @type {?} */ urlTree = url instanceof UrlTree ? url : this.parseUrl(url);\n const /** @type {?} */ mergedTree = this.urlHandlingStrategy.merge(urlTree, this.rawUrlTree);\n return this.scheduleNavigation(mergedTree, 'imperative', extras);\n }\n /**\n * Navigate based on the provided array of commands and a starting point.\n * If no starting route is provided, the navigation is absolute.\n *\n * Returns a promise that:\n * - resolves to 'true' when navigation succeeds,\n * - resolves to 'false' when navigation fails,\n * - is rejected when an error happens.\n *\n * ### Usage\n *\n * ```\n * router.navigate(['team', 33, 'user', 11], {relativeTo: route});\n *\n * // Navigate without updating the URL\n * router.navigate(['team', 33, 'user', 11], {relativeTo: route, skipLocationChange: true});\n * ```\n *\n * In opposite to `navigateByUrl`, `navigate` always takes a delta that is applied to the current\n * URL.\n * @param {?} commands\n * @param {?=} extras\n * @return {?}\n */\n navigate(commands, extras = { skipLocationChange: false }) {\n validateCommands(commands);\n return this.navigateByUrl(this.createUrlTree(commands, extras), extras);\n }\n /**\n * Serializes a {\\@link UrlTree} into a string\n * @param {?} url\n * @return {?}\n */\n serializeUrl(url) { return this.urlSerializer.serialize(url); }\n /**\n * Parses a string into a {\\@link UrlTree}\n * @param {?} url\n * @return {?}\n */\n parseUrl(url) { return this.urlSerializer.parse(url); }\n /**\n * Returns whether the url is activated\n * @param {?} url\n * @param {?} exact\n * @return {?}\n */\n isActive(url, exact) {\n if (url instanceof UrlTree) {\n return containsTree(this.currentUrlTree, url, exact);\n }\n const /** @type {?} */ urlTree = this.urlSerializer.parse(url);\n return containsTree(this.currentUrlTree, urlTree, exact);\n }\n /**\n * @param {?} params\n * @return {?}\n */\n removeEmptyProps(params) {\n return Object.keys(params).reduce((result, key) => {\n const /** @type {?} */ value = params[key];\n if (value !== null && value !== undefined) {\n result[key] = value;\n }\n return result;\n }, {});\n }\n /**\n * @return {?}\n */\n processNavigations() {\n concatMap\n .call(this.navigations, (nav) => {\n if (nav) {\n this.executeScheduledNavigation(nav);\n // a failed navigation should not stop the router from processing\n // further navigations => the catch\n return nav.promise.catch(() => { });\n }\n else {\n return /** @type {?} */ (of(null));\n }\n })\n .subscribe(() => { });\n }\n /**\n * @param {?} rawUrl\n * @param {?} source\n * @param {?} extras\n * @return {?}\n */\n scheduleNavigation(rawUrl, source, extras) {\n const /** @type {?} */ lastNavigation = this.navigations.value;\n // If the user triggers a navigation imperatively (e.g., by using navigateByUrl),\n // and that navigation results in 'replaceState' that leads to the same URL,\n // we should skip those.\n if (lastNavigation && source !== 'imperative' && lastNavigation.source === 'imperative' &&\n lastNavigation.rawUrl.toString() === rawUrl.toString()) {\n return Promise.resolve(true); // return value is not used\n }\n // Because of a bug in IE and Edge, the location class fires two events (popstate and\n // hashchange) every single time. The second one should be ignored. Otherwise, the URL will\n // flicker. Handles the case when a popstate was emitted first.\n if (lastNavigation && source == 'hashchange' && lastNavigation.source === 'popstate' &&\n lastNavigation.rawUrl.toString() === rawUrl.toString()) {\n return Promise.resolve(true); // return value is not used\n }\n // Because of a bug in IE and Edge, the location class fires two events (popstate and\n // hashchange) every single time. The second one should be ignored. Otherwise, the URL will\n // flicker. Handles the case when a hashchange was emitted first.\n if (lastNavigation && source == 'popstate' && lastNavigation.source === 'hashchange' &&\n lastNavigation.rawUrl.toString() === rawUrl.toString()) {\n return Promise.resolve(true); // return value is not used\n }\n let /** @type {?} */ resolve = null;\n let /** @type {?} */ reject = null;\n const /** @type {?} */ promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n const /** @type {?} */ id = ++this.navigationId;\n this.navigations.next({ id, source, rawUrl, extras, resolve, reject, promise });\n // Make sure that the error is propagated even though `processNavigations` catch\n // handler does not rethrow\n return promise.catch((e) => Promise.reject(e));\n }\n /**\n * @param {?} __0\n * @return {?}\n */\n executeScheduledNavigation({ id, rawUrl, extras, resolve, reject }) {\n const /** @type {?} */ url = this.urlHandlingStrategy.extract(rawUrl);\n const /** @type {?} */ urlTransition = !this.navigated || url.toString() !== this.currentUrlTree.toString();\n if ((this.onSameUrlNavigation === 'reload' ? true : urlTransition) &&\n this.urlHandlingStrategy.shouldProcessUrl(rawUrl)) {\n (/** @type {?} */ (this.events)).next(new NavigationStart(id, this.serializeUrl(url)));\n Promise.resolve()\n .then((_) => this.runNavigate(url, rawUrl, !!extras.skipLocationChange, !!extras.replaceUrl, id, null))\n .then(resolve, reject);\n // we cannot process the current URL, but we could process the previous one =>\n // we need to do some cleanup\n }\n else if (urlTransition && this.rawUrlTree &&\n this.urlHandlingStrategy.shouldProcessUrl(this.rawUrlTree)) {\n (/** @type {?} */ (this.events)).next(new NavigationStart(id, this.serializeUrl(url)));\n Promise.resolve()\n .then((_) => this.runNavigate(url, rawUrl, false, false, id, createEmptyState(url, this.rootComponentType).snapshot))\n .then(resolve, reject);\n }\n else {\n this.rawUrlTree = rawUrl;\n resolve(null);\n }\n }\n /**\n * @param {?} url\n * @param {?} rawUrl\n * @param {?} skipLocationChange\n * @param {?} replaceUrl\n * @param {?} id\n * @param {?} precreatedState\n * @return {?}\n */\n runNavigate(url, rawUrl, skipLocationChange, replaceUrl, id, precreatedState) {\n if (id !== this.navigationId) {\n (/** @type {?} */ (this.events))\n .next(new NavigationCancel(id, this.serializeUrl(url), `Navigation ID ${id} is not equal to the current navigation id ${this.navigationId}`));\n return Promise.resolve(false);\n }\n return new Promise((resolvePromise, rejectPromise) => {\n // create an observable of the url and route state snapshot\n // this operation do not result in any side effects\n let /** @type {?} */ urlAndSnapshot$;\n if (!precreatedState) {\n const /** @type {?} */ moduleInjector = this.ngModule.injector;\n const /** @type {?} */ redirectsApplied$ = applyRedirects(moduleInjector, this.configLoader, this.urlSerializer, url, this.config);\n urlAndSnapshot$ = mergeMap.call(redirectsApplied$, (appliedUrl) => {\n return map.call(recognize(this.rootComponentType, this.config, appliedUrl, this.serializeUrl(appliedUrl), this.paramsInheritanceStrategy), (snapshot) => {\n (/** @type {?} */ (this.events))\n .next(new RoutesRecognized(id, this.serializeUrl(url), this.serializeUrl(appliedUrl), snapshot));\n return { appliedUrl, snapshot };\n });\n });\n }\n else {\n urlAndSnapshot$ = of({ appliedUrl: url, snapshot: precreatedState });\n }\n const /** @type {?} */ beforePreactivationDone$ = mergeMap.call(urlAndSnapshot$, (p) => {\n return map.call(this.hooks.beforePreactivation(p.snapshot), () => p);\n });\n // run preactivation: guards and data resolvers\n let /** @type {?} */ preActivation;\n const /** @type {?} */ preactivationSetup$ = map.call(beforePreactivationDone$, ({ appliedUrl, snapshot }) => {\n const /** @type {?} */ moduleInjector = this.ngModule.injector;\n preActivation = new PreActivation(snapshot, this.routerState.snapshot, moduleInjector, (evt) => this.triggerEvent(evt));\n preActivation.initialize(this.rootContexts);\n return { appliedUrl, snapshot };\n });\n const /** @type {?} */ preactivationCheckGuards$ = mergeMap.call(preactivationSetup$, ({ appliedUrl, snapshot }) => {\n if (this.navigationId !== id)\n return of(false);\n this.triggerEvent(new GuardsCheckStart(id, this.serializeUrl(url), appliedUrl, snapshot));\n return map.call(preActivation.checkGuards(), (shouldActivate) => {\n this.triggerEvent(new GuardsCheckEnd(id, this.serializeUrl(url), appliedUrl, snapshot, shouldActivate));\n return { appliedUrl: appliedUrl, snapshot: snapshot, shouldActivate: shouldActivate };\n });\n });\n const /** @type {?} */ preactivationResolveData$ = mergeMap.call(preactivationCheckGuards$, (p) => {\n if (this.navigationId !== id)\n return of(false);\n if (p.shouldActivate && preActivation.isActivating()) {\n this.triggerEvent(new ResolveStart(id, this.serializeUrl(url), p.appliedUrl, p.snapshot));\n return map.call(preActivation.resolveData(this.paramsInheritanceStrategy), () => {\n this.triggerEvent(new ResolveEnd(id, this.serializeUrl(url), p.appliedUrl, p.snapshot));\n return p;\n });\n }\n else {\n return of(p);\n }\n });\n const /** @type {?} */ preactivationDone$ = mergeMap.call(preactivationResolveData$, (p) => {\n return map.call(this.hooks.afterPreactivation(p.snapshot), () => p);\n });\n // create router state\n // this operation has side effects => route state is being affected\n const /** @type {?} */ routerState$ = map.call(preactivationDone$, ({ appliedUrl, snapshot, shouldActivate }) => {\n if (shouldActivate) {\n const /** @type {?} */ state = createRouterState(this.routeReuseStrategy, snapshot, this.routerState);\n return { appliedUrl, state, shouldActivate };\n }\n else {\n return { appliedUrl, state: null, shouldActivate };\n }\n });\n this.activateRoutes(routerState$, this.routerState, this.currentUrlTree, id, url, rawUrl, skipLocationChange, replaceUrl, resolvePromise, rejectPromise);\n });\n }\n /**\n * Performs the logic of activating routes. This is a synchronous process by default. While this\n * is a private method, it could be overridden to make activation asynchronous.\n * @param {?} state\n * @param {?} storedState\n * @param {?} storedUrl\n * @param {?} id\n * @param {?} url\n * @param {?} rawUrl\n * @param {?} skipLocationChange\n * @param {?} replaceUrl\n * @param {?} resolvePromise\n * @param {?} rejectPromise\n * @return {?}\n */\n activateRoutes(state, storedState, storedUrl, id, url, rawUrl, skipLocationChange, replaceUrl, resolvePromise, rejectPromise) {\n // applied the new router state\n // this operation has side effects\n let /** @type {?} */ navigationIsSuccessful;\n state\n .forEach(({ appliedUrl, state, shouldActivate }) => {\n if (!shouldActivate || id !== this.navigationId) {\n navigationIsSuccessful = false;\n return;\n }\n this.currentUrlTree = appliedUrl;\n this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, rawUrl);\n (/** @type {?} */ (this)).routerState = state;\n if (!skipLocationChange) {\n const /** @type {?} */ path = this.urlSerializer.serialize(this.rawUrlTree);\n if (this.location.isCurrentPathEqualTo(path) || replaceUrl) {\n this.location.replaceState(path);\n }\n else {\n this.location.go(path);\n }\n }\n new ActivateRoutes(this.routeReuseStrategy, state, storedState, (evt) => this.triggerEvent(evt))\n .activate(this.rootContexts);\n navigationIsSuccessful = true;\n })\n .then(() => {\n if (navigationIsSuccessful) {\n this.navigated = true;\n (/** @type {?} */ (this.events))\n .next(new NavigationEnd(id, this.serializeUrl(url), this.serializeUrl(this.currentUrlTree)));\n resolvePromise(true);\n }\n else {\n this.resetUrlToCurrentUrlTree();\n (/** @type {?} */ (this.events))\n .next(new NavigationCancel(id, this.serializeUrl(url), ''));\n resolvePromise(false);\n }\n }, (e) => {\n if (isNavigationCancelingError(e)) {\n this.navigated = true;\n this.resetStateAndUrl(storedState, storedUrl, rawUrl);\n (/** @type {?} */ (this.events))\n .next(new NavigationCancel(id, this.serializeUrl(url), e.message));\n resolvePromise(false);\n }\n else {\n this.resetStateAndUrl(storedState, storedUrl, rawUrl);\n (/** @type {?} */ (this.events))\n .next(new NavigationError(id, this.serializeUrl(url), e));\n try {\n resolvePromise(this.errorHandler(e));\n }\n catch (/** @type {?} */ ee) {\n rejectPromise(ee);\n }\n }\n });\n }\n /**\n * @param {?} storedState\n * @param {?} storedUrl\n * @param {?} rawUrl\n * @return {?}\n */\n resetStateAndUrl(storedState, storedUrl, rawUrl) {\n (/** @type {?} */ (this)).routerState = storedState;\n this.currentUrlTree = storedUrl;\n this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, rawUrl);\n this.resetUrlToCurrentUrlTree();\n }\n /**\n * @return {?}\n */\n resetUrlToCurrentUrlTree() {\n this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree));\n }\n}\nfunction Router_tsickle_Closure_declarations() {\n /** @type {?} */\n Router.prototype.currentUrlTree;\n /** @type {?} */\n Router.prototype.rawUrlTree;\n /** @type {?} */\n Router.prototype.navigations;\n /** @type {?} */\n Router.prototype.locationSubscription;\n /** @type {?} */\n Router.prototype.navigationId;\n /** @type {?} */\n Router.prototype.configLoader;\n /** @type {?} */\n Router.prototype.ngModule;\n /** @type {?} */\n Router.prototype.events;\n /** @type {?} */\n Router.prototype.routerState;\n /**\n * Error handler that is invoked when a navigation errors.\n *\n * See {\\@link ErrorHandler} for more information.\n * @type {?}\n */\n Router.prototype.errorHandler;\n /**\n * Indicates if at least one navigation happened.\n * @type {?}\n */\n Router.prototype.navigated;\n /**\n * Used by RouterModule. This allows us to\n * pause the navigation either before preactivation or after it.\n * \\@internal\n * @type {?}\n */\n Router.prototype.hooks;\n /**\n * Extracts and merges URLs. Used for AngularJS to Angular migrations.\n * @type {?}\n */\n Router.prototype.urlHandlingStrategy;\n /** @type {?} */\n Router.prototype.routeReuseStrategy;\n /**\n * Define what the router should do if it receives a navigation request to the current URL.\n * By default, the router will ignore this navigation. However, this prevents features such\n * as a \"refresh\" button. Use this option to configure the behavior when navigating to the\n * current URL. Default is 'ignore'.\n * @type {?}\n */\n Router.prototype.onSameUrlNavigation;\n /**\n * Defines how the router merges params, data and resolved data from parent to child\n * routes. Available options are:\n *\n * - `'emptyOnly'`, the default, only inherits parent params for path-less or component-less\n * routes.\n * - `'always'`, enables unconditional inheritance of parent params.\n * @type {?}\n */\n Router.prototype.paramsInheritanceStrategy;\n /** @type {?} */\n Router.prototype.rootComponentType;\n /** @type {?} */\n Router.prototype.urlSerializer;\n /** @type {?} */\n Router.prototype.rootContexts;\n /** @type {?} */\n Router.prototype.location;\n /** @type {?} */\n Router.prototype.config;\n}\nclass ActivateRoutes {\n /**\n * @param {?} routeReuseStrategy\n * @param {?} futureState\n * @param {?} currState\n * @param {?} forwardEvent\n */\n constructor(routeReuseStrategy, futureState, currState, forwardEvent) {\n this.routeReuseStrategy = routeReuseStrategy;\n this.futureState = futureState;\n this.currState = currState;\n this.forwardEvent = forwardEvent;\n }\n /**\n * @param {?} parentContexts\n * @return {?}\n */\n activate(parentContexts) {\n const /** @type {?} */ futureRoot = this.futureState._root;\n const /** @type {?} */ currRoot = this.currState ? this.currState._root : null;\n this.deactivateChildRoutes(futureRoot, currRoot, parentContexts);\n advanceActivatedRoute(this.futureState.root);\n this.activateChildRoutes(futureRoot, currRoot, parentContexts);\n }\n /**\n * @param {?} futureNode\n * @param {?} currNode\n * @param {?} contexts\n * @return {?}\n */\n deactivateChildRoutes(futureNode, currNode, contexts) {\n const /** @type {?} */ children = nodeChildrenAsMap(currNode);\n // Recurse on the routes active in the future state to de-activate deeper children\n futureNode.children.forEach(futureChild => {\n const /** @type {?} */ childOutletName = futureChild.value.outlet;\n this.deactivateRoutes(futureChild, children[childOutletName], contexts);\n delete children[childOutletName];\n });\n // De-activate the routes that will not be re-used\n forEach(children, (v, childName) => {\n this.deactivateRouteAndItsChildren(v, contexts);\n });\n }\n /**\n * @param {?} futureNode\n * @param {?} currNode\n * @param {?} parentContext\n * @return {?}\n */\n deactivateRoutes(futureNode, currNode, parentContext) {\n const /** @type {?} */ future = futureNode.value;\n const /** @type {?} */ curr = currNode ? currNode.value : null;\n if (future === curr) {\n // Reusing the node, check to see if the children need to be de-activated\n if (future.component) {\n // If we have a normal route, we need to go through an outlet.\n const /** @type {?} */ context = parentContext.getContext(future.outlet);\n if (context) {\n this.deactivateChildRoutes(futureNode, currNode, context.children);\n }\n }\n else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.deactivateChildRoutes(futureNode, currNode, parentContext);\n }\n }\n else {\n if (curr) {\n // Deactivate the current route which will not be re-used\n this.deactivateRouteAndItsChildren(currNode, parentContext);\n }\n }\n }\n /**\n * @param {?} route\n * @param {?} parentContexts\n * @return {?}\n */\n deactivateRouteAndItsChildren(route, parentContexts) {\n if (this.routeReuseStrategy.shouldDetach(route.value.snapshot)) {\n this.detachAndStoreRouteSubtree(route, parentContexts);\n }\n else {\n this.deactivateRouteAndOutlet(route, parentContexts);\n }\n }\n /**\n * @param {?} route\n * @param {?} parentContexts\n * @return {?}\n */\n detachAndStoreRouteSubtree(route, parentContexts) {\n const /** @type {?} */ context = parentContexts.getContext(route.value.outlet);\n if (context && context.outlet) {\n const /** @type {?} */ componentRef = context.outlet.detach();\n const /** @type {?} */ contexts = context.children.onOutletDeactivated();\n this.routeReuseStrategy.store(route.value.snapshot, { componentRef, route, contexts });\n }\n }\n /**\n * @param {?} route\n * @param {?} parentContexts\n * @return {?}\n */\n deactivateRouteAndOutlet(route, parentContexts) {\n const /** @type {?} */ context = parentContexts.getContext(route.value.outlet);\n if (context) {\n const /** @type {?} */ children = nodeChildrenAsMap(route);\n const /** @type {?} */ contexts = route.value.component ? context.children : parentContexts;\n forEach(children, (v, k) => this.deactivateRouteAndItsChildren(v, contexts));\n if (context.outlet) {\n // Destroy the component\n context.outlet.deactivate();\n // Destroy the contexts for all the outlets that were in the component\n context.children.onOutletDeactivated();\n }\n }\n }\n /**\n * @param {?} futureNode\n * @param {?} currNode\n * @param {?} contexts\n * @return {?}\n */\n activateChildRoutes(futureNode, currNode, contexts) {\n const /** @type {?} */ children = nodeChildrenAsMap(currNode);\n futureNode.children.forEach(c => {\n this.activateRoutes(c, children[c.value.outlet], contexts);\n this.forwardEvent(new ActivationEnd(c.value.snapshot));\n });\n if (futureNode.children.length) {\n this.forwardEvent(new ChildActivationEnd(futureNode.value.snapshot));\n }\n }\n /**\n * @param {?} futureNode\n * @param {?} currNode\n * @param {?} parentContexts\n * @return {?}\n */\n activateRoutes(futureNode, currNode, parentContexts) {\n const /** @type {?} */ future = futureNode.value;\n const /** @type {?} */ curr = currNode ? currNode.value : null;\n advanceActivatedRoute(future);\n // reusing the node\n if (future === curr) {\n if (future.component) {\n // If we have a normal route, we need to go through an outlet.\n const /** @type {?} */ context = parentContexts.getOrCreateContext(future.outlet);\n this.activateChildRoutes(futureNode, currNode, context.children);\n }\n else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.activateChildRoutes(futureNode, currNode, parentContexts);\n }\n }\n else {\n if (future.component) {\n // if we have a normal route, we need to place the component into the outlet and recurse.\n const /** @type {?} */ context = parentContexts.getOrCreateContext(future.outlet);\n if (this.routeReuseStrategy.shouldAttach(future.snapshot)) {\n const /** @type {?} */ stored = (/** @type {?} */ (this.routeReuseStrategy.retrieve(future.snapshot)));\n this.routeReuseStrategy.store(future.snapshot, null);\n context.children.onOutletReAttached(stored.contexts);\n context.attachRef = stored.componentRef;\n context.route = stored.route.value;\n if (context.outlet) {\n // Attach right away when the outlet has already been instantiated\n // Otherwise attach from `RouterOutlet.ngOnInit` when it is instantiated\n context.outlet.attach(stored.componentRef, stored.route.value);\n }\n advanceActivatedRouteNodeAndItsChildren(stored.route);\n }\n else {\n const /** @type {?} */ config = parentLoadedConfig(future.snapshot);\n const /** @type {?} */ cmpFactoryResolver = config ? config.module.componentFactoryResolver : null;\n context.route = future;\n context.resolver = cmpFactoryResolver;\n if (context.outlet) {\n // Activate the outlet when it has already been instantiated\n // Otherwise it will get activated from its `ngOnInit` when instantiated\n context.outlet.activateWith(future, cmpFactoryResolver);\n }\n this.activateChildRoutes(futureNode, null, context.children);\n }\n }\n else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.activateChildRoutes(futureNode, null, parentContexts);\n }\n }\n }\n}\nfunction ActivateRoutes_tsickle_Closure_declarations() {\n /** @type {?} */\n ActivateRoutes.prototype.routeReuseStrategy;\n /** @type {?} */\n ActivateRoutes.prototype.futureState;\n /** @type {?} */\n ActivateRoutes.prototype.currState;\n /** @type {?} */\n ActivateRoutes.prototype.forwardEvent;\n}\n/**\n * @param {?} node\n * @return {?}\n */\nfunction advanceActivatedRouteNodeAndItsChildren(node) {\n advanceActivatedRoute(node.value);\n node.children.forEach(advanceActivatedRouteNodeAndItsChildren);\n}\n/**\n * @param {?} snapshot\n * @return {?}\n */\nfunction parentLoadedConfig(snapshot) {\n for (let /** @type {?} */ s = snapshot.parent; s; s = s.parent) {\n const /** @type {?} */ route = s.routeConfig;\n if (route && route._loadedConfig)\n return route._loadedConfig;\n if (route && route.component)\n return null;\n }\n return null;\n}\n/**\n * @param {?} commands\n * @return {?}\n */\nfunction validateCommands(commands) {\n for (let /** @type {?} */ i = 0; i < commands.length; i++) {\n const /** @type {?} */ cmd = commands[i];\n if (cmd == null) {\n throw new Error(`The requested path contains ${cmd} segment at index ${i}`);\n }\n }\n}\n//# sourceMappingURL=router.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { LocationStrategy } from '@angular/common';\nimport { Attribute, Directive, ElementRef, HostBinding, HostListener, Input, Renderer2, isDevMode } from '@angular/core';\nimport { NavigationEnd } from '../events';\nimport { Router } from '../router';\nimport { ActivatedRoute } from '../router_state';\n/**\n * \\@whatItDoes Lets you link to specific parts of your app.\n *\n * \\@howToUse\n *\n * Consider the following route configuration:\n * `[{ path: 'user/:name', component: UserCmp }]`\n *\n * When linking to this `user/:name` route, you can write:\n * `<a routerLink='/user/bob'>link to user component</a>`\n *\n * \\@description\n *\n * The RouterLink directives let you link to specific parts of your app.\n *\n * When the link is static, you can use the directive as follows:\n * `<a routerLink=\"/user/bob\">link to user component</a>`\n *\n * If you use dynamic values to generate the link, you can pass an array of path\n * segments, followed by the params for each segment.\n *\n * For instance `['/team', teamId, 'user', userName, {details: true}]`\n * means that we want to generate a link to `/team/11/user/bob;details=true`.\n *\n * Multiple static segments can be merged into one\n * (e.g., `['/team/11/user', userName, {details: true}]`).\n *\n * The first segment name can be prepended with `/`, `./`, or `../`:\n * * If the first segment begins with `/`, the router will look up the route from the root of the\n * app.\n * * If the first segment begins with `./`, or doesn't begin with a slash, the router will\n * instead look in the children of the current activated route.\n * * And if the first segment begins with `../`, the router will go up one level.\n *\n * You can set query params and fragment as follows:\n *\n * ```\n * <a [routerLink]=\"['/user/bob']\" [queryParams]=\"{debug: true}\" fragment=\"education\">\n * link to user component\n * </a>\n * ```\n * RouterLink will use these to generate this link: `/user/bob#education?debug=true`.\n *\n * (Deprecated in v4.0.0 use `queryParamsHandling` instead) You can also tell the\n * directive to preserve the current query params and fragment:\n *\n * ```\n * <a [routerLink]=\"['/user/bob']\" preserveQueryParams preserveFragment>\n * link to user component\n * </a>\n * ```\n *\n * You can tell the directive to how to handle queryParams, available options are:\n * - `'merge'`: merge the queryParams into the current queryParams\n * - `'preserve'`: preserve the current queryParams\n * - default/`''`: use the queryParams only\n *\n * Same options for {\\@link NavigationExtras#queryParamsHandling\n * NavigationExtras#queryParamsHandling}.\n *\n * ```\n * <a [routerLink]=\"['/user/bob']\" [queryParams]=\"{debug: true}\" queryParamsHandling=\"merge\">\n * link to user component\n * </a>\n * ```\n *\n * The router link directive always treats the provided input as a delta to the current url.\n *\n * For instance, if the current url is `/user/(box//aux:team)`.\n *\n * Then the following link `<a [routerLink]=\"['/user/jim']\">Jim</a>` will generate the link\n * `/user/(jim//aux:team)`.\n *\n * See {\\@link Router#createUrlTree createUrlTree} for more information.\n *\n * \\@ngModule RouterModule\n *\n * \\@stable\n */\nexport class RouterLink {\n /**\n * @param {?} router\n * @param {?} route\n * @param {?} tabIndex\n * @param {?} renderer\n * @param {?} el\n */\n constructor(router, route, tabIndex, renderer, el) {\n this.router = router;\n this.route = route;\n this.commands = [];\n if (tabIndex == null) {\n renderer.setAttribute(el.nativeElement, 'tabindex', '0');\n }\n }\n /**\n * @param {?} commands\n * @return {?}\n */\n set routerLink(commands) {\n if (commands != null) {\n this.commands = Array.isArray(commands) ? commands : [commands];\n }\n else {\n this.commands = [];\n }\n }\n /**\n * @deprecated 4.0.0 use `queryParamsHandling` instead.\n * @param {?} value\n * @return {?}\n */\n set preserveQueryParams(value) {\n if (isDevMode() && /** @type {?} */ (console) && /** @type {?} */ (console.warn)) {\n console.warn('preserveQueryParams is deprecated!, use queryParamsHandling instead.');\n }\n this.preserve = value;\n }\n /**\n * @return {?}\n */\n onClick() {\n const /** @type {?} */ extras = {\n skipLocationChange: attrBoolValue(this.skipLocationChange),\n replaceUrl: attrBoolValue(this.replaceUrl),\n };\n this.router.navigateByUrl(this.urlTree, extras);\n return true;\n }\n /**\n * @return {?}\n */\n get urlTree() {\n return this.router.createUrlTree(this.commands, {\n relativeTo: this.route,\n queryParams: this.queryParams,\n fragment: this.fragment,\n preserveQueryParams: attrBoolValue(this.preserve),\n queryParamsHandling: this.queryParamsHandling,\n preserveFragment: attrBoolValue(this.preserveFragment),\n });\n }\n}\nRouterLink.decorators = [\n { type: Directive, args: [{ selector: ':not(a)[routerLink]' },] },\n];\n/** @nocollapse */\nRouterLink.ctorParameters = () => [\n { type: Router, },\n { type: ActivatedRoute, },\n { type: undefined, decorators: [{ type: Attribute, args: ['tabindex',] },] },\n { type: Renderer2, },\n { type: ElementRef, },\n];\nRouterLink.propDecorators = {\n \"queryParams\": [{ type: Input },],\n \"fragment\": [{ type: Input },],\n \"queryParamsHandling\": [{ type: Input },],\n \"preserveFragment\": [{ type: Input },],\n \"skipLocationChange\": [{ type: Input },],\n \"replaceUrl\": [{ type: Input },],\n \"routerLink\": [{ type: Input },],\n \"preserveQueryParams\": [{ type: Input },],\n \"onClick\": [{ type: HostListener, args: ['click',] },],\n};\nfunction RouterLink_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterLink.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterLink.ctorParameters;\n /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */\n RouterLink.propDecorators;\n /** @type {?} */\n RouterLink.prototype.queryParams;\n /** @type {?} */\n RouterLink.prototype.fragment;\n /** @type {?} */\n RouterLink.prototype.queryParamsHandling;\n /** @type {?} */\n RouterLink.prototype.preserveFragment;\n /** @type {?} */\n RouterLink.prototype.skipLocationChange;\n /** @type {?} */\n RouterLink.prototype.replaceUrl;\n /** @type {?} */\n RouterLink.prototype.commands;\n /** @type {?} */\n RouterLink.prototype.preserve;\n /** @type {?} */\n RouterLink.prototype.router;\n /** @type {?} */\n RouterLink.prototype.route;\n}\n/**\n * \\@whatItDoes Lets you link to specific parts of your app.\n *\n * See {\\@link RouterLink} for more information.\n *\n * \\@ngModule RouterModule\n *\n * \\@stable\n */\nexport class RouterLinkWithHref {\n /**\n * @param {?} router\n * @param {?} route\n * @param {?} locationStrategy\n */\n constructor(router, route, locationStrategy) {\n this.router = router;\n this.route = route;\n this.locationStrategy = locationStrategy;\n this.commands = [];\n this.subscription = router.events.subscribe(s => {\n if (s instanceof NavigationEnd) {\n this.updateTargetUrlAndHref();\n }\n });\n }\n /**\n * @param {?} commands\n * @return {?}\n */\n set routerLink(commands) {\n if (commands != null) {\n this.commands = Array.isArray(commands) ? commands : [commands];\n }\n else {\n this.commands = [];\n }\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set preserveQueryParams(value) {\n if (isDevMode() && /** @type {?} */ (console) && /** @type {?} */ (console.warn)) {\n console.warn('preserveQueryParams is deprecated, use queryParamsHandling instead.');\n }\n this.preserve = value;\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) { this.updateTargetUrlAndHref(); }\n /**\n * @return {?}\n */\n ngOnDestroy() { this.subscription.unsubscribe(); }\n /**\n * @param {?} button\n * @param {?} ctrlKey\n * @param {?} metaKey\n * @param {?} shiftKey\n * @return {?}\n */\n onClick(button, ctrlKey, metaKey, shiftKey) {\n if (button !== 0 || ctrlKey || metaKey || shiftKey) {\n return true;\n }\n if (typeof this.target === 'string' && this.target != '_self') {\n return true;\n }\n const /** @type {?} */ extras = {\n skipLocationChange: attrBoolValue(this.skipLocationChange),\n replaceUrl: attrBoolValue(this.replaceUrl),\n };\n this.router.navigateByUrl(this.urlTree, extras);\n return false;\n }\n /**\n * @return {?}\n */\n updateTargetUrlAndHref() {\n this.href = this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.urlTree));\n }\n /**\n * @return {?}\n */\n get urlTree() {\n return this.router.createUrlTree(this.commands, {\n relativeTo: this.route,\n queryParams: this.queryParams,\n fragment: this.fragment,\n preserveQueryParams: attrBoolValue(this.preserve),\n queryParamsHandling: this.queryParamsHandling,\n preserveFragment: attrBoolValue(this.preserveFragment),\n });\n }\n}\nRouterLinkWithHref.decorators = [\n { type: Directive, args: [{ selector: 'a[routerLink]' },] },\n];\n/** @nocollapse */\nRouterLinkWithHref.ctorParameters = () => [\n { type: Router, },\n { type: ActivatedRoute, },\n { type: LocationStrategy, },\n];\nRouterLinkWithHref.propDecorators = {\n \"target\": [{ type: HostBinding, args: ['attr.target',] }, { type: Input },],\n \"queryParams\": [{ type: Input },],\n \"fragment\": [{ type: Input },],\n \"queryParamsHandling\": [{ type: Input },],\n \"preserveFragment\": [{ type: Input },],\n \"skipLocationChange\": [{ type: Input },],\n \"replaceUrl\": [{ type: Input },],\n \"href\": [{ type: HostBinding },],\n \"routerLink\": [{ type: Input },],\n \"preserveQueryParams\": [{ type: Input },],\n \"onClick\": [{ type: HostListener, args: ['click', ['$event.button', '$event.ctrlKey', '$event.metaKey', '$event.shiftKey'],] },],\n};\nfunction RouterLinkWithHref_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterLinkWithHref.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterLinkWithHref.ctorParameters;\n /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */\n RouterLinkWithHref.propDecorators;\n /** @type {?} */\n RouterLinkWithHref.prototype.target;\n /** @type {?} */\n RouterLinkWithHref.prototype.queryParams;\n /** @type {?} */\n RouterLinkWithHref.prototype.fragment;\n /** @type {?} */\n RouterLinkWithHref.prototype.queryParamsHandling;\n /** @type {?} */\n RouterLinkWithHref.prototype.preserveFragment;\n /** @type {?} */\n RouterLinkWithHref.prototype.skipLocationChange;\n /** @type {?} */\n RouterLinkWithHref.prototype.replaceUrl;\n /** @type {?} */\n RouterLinkWithHref.prototype.commands;\n /** @type {?} */\n RouterLinkWithHref.prototype.subscription;\n /** @type {?} */\n RouterLinkWithHref.prototype.preserve;\n /** @type {?} */\n RouterLinkWithHref.prototype.href;\n /** @type {?} */\n RouterLinkWithHref.prototype.router;\n /** @type {?} */\n RouterLinkWithHref.prototype.route;\n /** @type {?} */\n RouterLinkWithHref.prototype.locationStrategy;\n}\n/**\n * @param {?} s\n * @return {?}\n */\nfunction attrBoolValue(s) {\n return s === '' || !!s;\n}\n//# sourceMappingURL=router_link.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectorRef, ContentChildren, Directive, ElementRef, Input, QueryList, Renderer2 } from '@angular/core';\nimport { NavigationEnd } from '../events';\nimport { Router } from '../router';\nimport { RouterLink, RouterLinkWithHref } from './router_link';\n/**\n * \\@whatItDoes Lets you add a CSS class to an element when the link's route becomes active.\n *\n * \\@howToUse\n *\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive=\"active-link\">Bob</a>\n * ```\n *\n * \\@description\n *\n * The RouterLinkActive directive lets you add a CSS class to an element when the link's route\n * becomes active.\n *\n * Consider the following example:\n *\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive=\"active-link\">Bob</a>\n * ```\n *\n * When the url is either '/user' or '/user/bob', the active-link class will\n * be added to the `a` tag. If the url changes, the class will be removed.\n *\n * You can set more than one class, as follows:\n *\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive=\"class1 class2\">Bob</a>\n * <a routerLink=\"/user/bob\" [routerLinkActive]=\"['class1', 'class2']\">Bob</a>\n * ```\n *\n * You can configure RouterLinkActive by passing `exact: true`. This will add the classes\n * only when the url matches the link exactly.\n *\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive=\"active-link\" [routerLinkActiveOptions]=\"{exact:\n * true}\">Bob</a>\n * ```\n *\n * You can assign the RouterLinkActive instance to a template variable and directly check\n * the `isActive` status.\n * ```\n * <a routerLink=\"/user/bob\" routerLinkActive #rla=\"routerLinkActive\">\n * Bob {{ rla.isActive ? '(already open)' : ''}}\n * </a>\n * ```\n *\n * Finally, you can apply the RouterLinkActive directive to an ancestor of a RouterLink.\n *\n * ```\n * <div routerLinkActive=\"active-link\" [routerLinkActiveOptions]=\"{exact: true}\">\n * <a routerLink=\"/user/jim\">Jim</a>\n * <a routerLink=\"/user/bob\">Bob</a>\n * </div>\n * ```\n *\n * This will set the active-link class on the div tag if the url is either '/user/jim' or\n * '/user/bob'.\n *\n * \\@ngModule RouterModule\n *\n * \\@stable\n */\nexport class RouterLinkActive {\n /**\n * @param {?} router\n * @param {?} element\n * @param {?} renderer\n * @param {?} cdr\n */\n constructor(router, element, renderer, cdr) {\n this.router = router;\n this.element = element;\n this.renderer = renderer;\n this.cdr = cdr;\n this.classes = [];\n this.isActive = false;\n this.routerLinkActiveOptions = { exact: false };\n this.subscription = router.events.subscribe(s => {\n if (s instanceof NavigationEnd) {\n this.update();\n }\n });\n }\n /**\n * @return {?}\n */\n ngAfterContentInit() {\n this.links.changes.subscribe(_ => this.update());\n this.linksWithHrefs.changes.subscribe(_ => this.update());\n this.update();\n }\n /**\n * @param {?} data\n * @return {?}\n */\n set routerLinkActive(data) {\n const /** @type {?} */ classes = Array.isArray(data) ? data : data.split(' ');\n this.classes = classes.filter(c => !!c);\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) { this.update(); }\n /**\n * @return {?}\n */\n ngOnDestroy() { this.subscription.unsubscribe(); }\n /**\n * @return {?}\n */\n update() {\n if (!this.links || !this.linksWithHrefs || !this.router.navigated)\n return;\n Promise.resolve().then(() => {\n const /** @type {?} */ hasActiveLinks = this.hasActiveLinks();\n if (this.isActive !== hasActiveLinks) {\n (/** @type {?} */ (this)).isActive = hasActiveLinks;\n this.classes.forEach((c) => {\n if (hasActiveLinks) {\n this.renderer.addClass(this.element.nativeElement, c);\n }\n else {\n this.renderer.removeClass(this.element.nativeElement, c);\n }\n });\n }\n });\n }\n /**\n * @param {?} router\n * @return {?}\n */\n isLinkActive(router) {\n return (link) => router.isActive(link.urlTree, this.routerLinkActiveOptions.exact);\n }\n /**\n * @return {?}\n */\n hasActiveLinks() {\n return this.links.some(this.isLinkActive(this.router)) ||\n this.linksWithHrefs.some(this.isLinkActive(this.router));\n }\n}\nRouterLinkActive.decorators = [\n { type: Directive, args: [{\n selector: '[routerLinkActive]',\n exportAs: 'routerLinkActive',\n },] },\n];\n/** @nocollapse */\nRouterLinkActive.ctorParameters = () => [\n { type: Router, },\n { type: ElementRef, },\n { type: Renderer2, },\n { type: ChangeDetectorRef, },\n];\nRouterLinkActive.propDecorators = {\n \"links\": [{ type: ContentChildren, args: [RouterLink, { descendants: true },] },],\n \"linksWithHrefs\": [{ type: ContentChildren, args: [RouterLinkWithHref, { descendants: true },] },],\n \"routerLinkActiveOptions\": [{ type: Input },],\n \"routerLinkActive\": [{ type: Input },],\n};\nfunction RouterLinkActive_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterLinkActive.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterLinkActive.ctorParameters;\n /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */\n RouterLinkActive.propDecorators;\n /** @type {?} */\n RouterLinkActive.prototype.links;\n /** @type {?} */\n RouterLinkActive.prototype.linksWithHrefs;\n /** @type {?} */\n RouterLinkActive.prototype.classes;\n /** @type {?} */\n RouterLinkActive.prototype.subscription;\n /** @type {?} */\n RouterLinkActive.prototype.isActive;\n /** @type {?} */\n RouterLinkActive.prototype.routerLinkActiveOptions;\n /** @type {?} */\n RouterLinkActive.prototype.router;\n /** @type {?} */\n RouterLinkActive.prototype.element;\n /** @type {?} */\n RouterLinkActive.prototype.renderer;\n /** @type {?} */\n RouterLinkActive.prototype.cdr;\n}\n//# sourceMappingURL=router_link_active.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Store contextual information about a {\\@link RouterOutlet}\n *\n * \\@stable\n */\nexport class OutletContext {\n constructor() {\n this.outlet = null;\n this.route = null;\n this.resolver = null;\n this.children = new ChildrenOutletContexts();\n this.attachRef = null;\n }\n}\nfunction OutletContext_tsickle_Closure_declarations() {\n /** @type {?} */\n OutletContext.prototype.outlet;\n /** @type {?} */\n OutletContext.prototype.route;\n /** @type {?} */\n OutletContext.prototype.resolver;\n /** @type {?} */\n OutletContext.prototype.children;\n /** @type {?} */\n OutletContext.prototype.attachRef;\n}\n/**\n * Store contextual information about the children (= nested) {\\@link RouterOutlet}\n *\n * \\@stable\n */\nexport class ChildrenOutletContexts {\n constructor() {\n this.contexts = new Map();\n }\n /**\n * Called when a `RouterOutlet` directive is instantiated\n * @param {?} childName\n * @param {?} outlet\n * @return {?}\n */\n onChildOutletCreated(childName, outlet) {\n const /** @type {?} */ context = this.getOrCreateContext(childName);\n context.outlet = outlet;\n this.contexts.set(childName, context);\n }\n /**\n * Called when a `RouterOutlet` directive is destroyed.\n * We need to keep the context as the outlet could be destroyed inside a NgIf and might be\n * re-created later.\n * @param {?} childName\n * @return {?}\n */\n onChildOutletDestroyed(childName) {\n const /** @type {?} */ context = this.getContext(childName);\n if (context) {\n context.outlet = null;\n }\n }\n /**\n * Called when the corresponding route is deactivated during navigation.\n * Because the component get destroyed, all children outlet are destroyed.\n * @return {?}\n */\n onOutletDeactivated() {\n const /** @type {?} */ contexts = this.contexts;\n this.contexts = new Map();\n return contexts;\n }\n /**\n * @param {?} contexts\n * @return {?}\n */\n onOutletReAttached(contexts) { this.contexts = contexts; }\n /**\n * @param {?} childName\n * @return {?}\n */\n getOrCreateContext(childName) {\n let /** @type {?} */ context = this.getContext(childName);\n if (!context) {\n context = new OutletContext();\n this.contexts.set(childName, context);\n }\n return context;\n }\n /**\n * @param {?} childName\n * @return {?}\n */\n getContext(childName) { return this.contexts.get(childName) || null; }\n}\nfunction ChildrenOutletContexts_tsickle_Closure_declarations() {\n /** @type {?} */\n ChildrenOutletContexts.prototype.contexts;\n}\n//# sourceMappingURL=router_outlet_context.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Attribute, ChangeDetectorRef, ComponentFactoryResolver, Directive, EventEmitter, Output, ViewContainerRef } from '@angular/core';\nimport { ChildrenOutletContexts } from '../router_outlet_context';\nimport { ActivatedRoute } from '../router_state';\nimport { PRIMARY_OUTLET } from '../shared';\n/**\n * \\@whatItDoes Acts as a placeholder that Angular dynamically fills based on the current router\n * state.\n *\n * \\@howToUse\n *\n * ```\n * <router-outlet></router-outlet>\n * <router-outlet name='left'></router-outlet>\n * <router-outlet name='right'></router-outlet>\n * ```\n *\n * A router outlet will emit an activate event any time a new component is being instantiated,\n * and a deactivate event when it is being destroyed.\n *\n * ```\n * <router-outlet\n * (activate)='onActivate($event)'\n * (deactivate)='onDeactivate($event)'></router-outlet>\n * ```\n * \\@ngModule RouterModule\n *\n * \\@stable\n */\nexport class RouterOutlet {\n /**\n * @param {?} parentContexts\n * @param {?} location\n * @param {?} resolver\n * @param {?} name\n * @param {?} changeDetector\n */\n constructor(parentContexts, location, resolver, name, changeDetector) {\n this.parentContexts = parentContexts;\n this.location = location;\n this.resolver = resolver;\n this.changeDetector = changeDetector;\n this.activated = null;\n this._activatedRoute = null;\n this.activateEvents = new EventEmitter();\n this.deactivateEvents = new EventEmitter();\n this.name = name || PRIMARY_OUTLET;\n parentContexts.onChildOutletCreated(this.name, this);\n }\n /**\n * @return {?}\n */\n ngOnDestroy() { this.parentContexts.onChildOutletDestroyed(this.name); }\n /**\n * @return {?}\n */\n ngOnInit() {\n if (!this.activated) {\n // If the outlet was not instantiated at the time the route got activated we need to populate\n // the outlet when it is initialized (ie inside a NgIf)\n const /** @type {?} */ context = this.parentContexts.getContext(this.name);\n if (context && context.route) {\n if (context.attachRef) {\n // `attachRef` is populated when there is an existing component to mount\n this.attach(context.attachRef, context.route);\n }\n else {\n // otherwise the component defined in the configuration is created\n this.activateWith(context.route, context.resolver || null);\n }\n }\n }\n }\n /**\n * @return {?}\n */\n get isActivated() { return !!this.activated; }\n /**\n * @return {?}\n */\n get component() {\n if (!this.activated)\n throw new Error('Outlet is not activated');\n return this.activated.instance;\n }\n /**\n * @return {?}\n */\n get activatedRoute() {\n if (!this.activated)\n throw new Error('Outlet is not activated');\n return /** @type {?} */ (this._activatedRoute);\n }\n /**\n * @return {?}\n */\n get activatedRouteData() {\n if (this._activatedRoute) {\n return this._activatedRoute.snapshot.data;\n }\n return {};\n }\n /**\n * Called when the `RouteReuseStrategy` instructs to detach the subtree\n * @return {?}\n */\n detach() {\n if (!this.activated)\n throw new Error('Outlet is not activated');\n this.location.detach();\n const /** @type {?} */ cmp = this.activated;\n this.activated = null;\n this._activatedRoute = null;\n return cmp;\n }\n /**\n * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree\n * @param {?} ref\n * @param {?} activatedRoute\n * @return {?}\n */\n attach(ref, activatedRoute) {\n this.activated = ref;\n this._activatedRoute = activatedRoute;\n this.location.insert(ref.hostView);\n }\n /**\n * @return {?}\n */\n deactivate() {\n if (this.activated) {\n const /** @type {?} */ c = this.component;\n this.activated.destroy();\n this.activated = null;\n this._activatedRoute = null;\n this.deactivateEvents.emit(c);\n }\n }\n /**\n * @param {?} activatedRoute\n * @param {?} resolver\n * @return {?}\n */\n activateWith(activatedRoute, resolver) {\n if (this.isActivated) {\n throw new Error('Cannot activate an already activated outlet');\n }\n this._activatedRoute = activatedRoute;\n const /** @type {?} */ snapshot = activatedRoute._futureSnapshot;\n const /** @type {?} */ component = /** @type {?} */ (/** @type {?} */ ((snapshot.routeConfig)).component);\n resolver = resolver || this.resolver;\n const /** @type {?} */ factory = resolver.resolveComponentFactory(component);\n const /** @type {?} */ childContexts = this.parentContexts.getOrCreateContext(this.name).children;\n const /** @type {?} */ injector = new OutletInjector(activatedRoute, childContexts, this.location.injector);\n this.activated = this.location.createComponent(factory, this.location.length, injector);\n // Calling `markForCheck` to make sure we will run the change detection when the\n // `RouterOutlet` is inside a `ChangeDetectionStrategy.OnPush` component.\n this.changeDetector.markForCheck();\n this.activateEvents.emit(this.activated.instance);\n }\n}\nRouterOutlet.decorators = [\n { type: Directive, args: [{ selector: 'router-outlet', exportAs: 'outlet' },] },\n];\n/** @nocollapse */\nRouterOutlet.ctorParameters = () => [\n { type: ChildrenOutletContexts, },\n { type: ViewContainerRef, },\n { type: ComponentFactoryResolver, },\n { type: undefined, decorators: [{ type: Attribute, args: ['name',] },] },\n { type: ChangeDetectorRef, },\n];\nRouterOutlet.propDecorators = {\n \"activateEvents\": [{ type: Output, args: ['activate',] },],\n \"deactivateEvents\": [{ type: Output, args: ['deactivate',] },],\n};\nfunction RouterOutlet_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterOutlet.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterOutlet.ctorParameters;\n /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */\n RouterOutlet.propDecorators;\n /** @type {?} */\n RouterOutlet.prototype.activated;\n /** @type {?} */\n RouterOutlet.prototype._activatedRoute;\n /** @type {?} */\n RouterOutlet.prototype.name;\n /** @type {?} */\n RouterOutlet.prototype.activateEvents;\n /** @type {?} */\n RouterOutlet.prototype.deactivateEvents;\n /** @type {?} */\n RouterOutlet.prototype.parentContexts;\n /** @type {?} */\n RouterOutlet.prototype.location;\n /** @type {?} */\n RouterOutlet.prototype.resolver;\n /** @type {?} */\n RouterOutlet.prototype.changeDetector;\n}\nclass OutletInjector {\n /**\n * @param {?} route\n * @param {?} childContexts\n * @param {?} parent\n */\n constructor(route, childContexts, parent) {\n this.route = route;\n this.childContexts = childContexts;\n this.parent = parent;\n }\n /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n get(token, notFoundValue) {\n if (token === ActivatedRoute) {\n return this.route;\n }\n if (token === ChildrenOutletContexts) {\n return this.childContexts;\n }\n return this.parent.get(token, notFoundValue);\n }\n}\nfunction OutletInjector_tsickle_Closure_declarations() {\n /** @type {?} */\n OutletInjector.prototype.route;\n /** @type {?} */\n OutletInjector.prototype.childContexts;\n /** @type {?} */\n OutletInjector.prototype.parent;\n}\n//# sourceMappingURL=router_outlet.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n*@license\n*Copyright Google Inc. All Rights Reserved.\n*\n*Use of this source code is governed by an MIT-style license that can be\n*found in the LICENSE file at https://angular.io/license\n*/\nimport { Compiler, Injectable, Injector, NgModuleFactoryLoader, NgModuleRef } from '@angular/core';\nimport { from } from 'rxjs/observable/from';\nimport { of } from 'rxjs/observable/of';\nimport { _catch } from 'rxjs/operator/catch';\nimport { concatMap } from 'rxjs/operator/concatMap';\nimport { filter } from 'rxjs/operator/filter';\nimport { mergeAll } from 'rxjs/operator/mergeAll';\nimport { mergeMap } from 'rxjs/operator/mergeMap';\nimport { NavigationEnd, RouteConfigLoadEnd, RouteConfigLoadStart } from './events';\nimport { Router } from './router';\nimport { RouterConfigLoader } from './router_config_loader';\n/**\n * \\@whatItDoes Provides a preloading strategy.\n *\n * \\@experimental\n * @abstract\n */\nexport class PreloadingStrategy {\n}\nfunction PreloadingStrategy_tsickle_Closure_declarations() {\n /**\n * @abstract\n * @param {?} route\n * @param {?} fn\n * @return {?}\n */\n PreloadingStrategy.prototype.preload = function (route, fn) { };\n}\n/**\n * \\@whatItDoes Provides a preloading strategy that preloads all modules as quickly as possible.\n *\n * \\@howToUse\n *\n * ```\n * RouteModule.forRoot(ROUTES, {preloadingStrategy: PreloadAllModules})\n * ```\n *\n * \\@experimental\n */\nexport class PreloadAllModules {\n /**\n * @param {?} route\n * @param {?} fn\n * @return {?}\n */\n preload(route, fn) {\n return _catch.call(fn(), () => of(null));\n }\n}\n/**\n * \\@whatItDoes Provides a preloading strategy that does not preload any modules.\n *\n * \\@description\n *\n * This strategy is enabled by default.\n *\n * \\@experimental\n */\nexport class NoPreloading {\n /**\n * @param {?} route\n * @param {?} fn\n * @return {?}\n */\n preload(route, fn) { return of(null); }\n}\n/**\n * The preloader optimistically loads all router configurations to\n * make navigations into lazily-loaded sections of the application faster.\n *\n * The preloader runs in the background. When the router bootstraps, the preloader\n * starts listening to all navigation events. After every such event, the preloader\n * will check if any configurations can be loaded lazily.\n *\n * If a route is protected by `canLoad` guards, the preloaded will not load it.\n *\n * \\@stable\n */\nexport class RouterPreloader {\n /**\n * @param {?} router\n * @param {?} moduleLoader\n * @param {?} compiler\n * @param {?} injector\n * @param {?} preloadingStrategy\n */\n constructor(router, moduleLoader, compiler, injector, preloadingStrategy) {\n this.router = router;\n this.injector = injector;\n this.preloadingStrategy = preloadingStrategy;\n const /** @type {?} */ onStartLoad = (r) => router.triggerEvent(new RouteConfigLoadStart(r));\n const /** @type {?} */ onEndLoad = (r) => router.triggerEvent(new RouteConfigLoadEnd(r));\n this.loader = new RouterConfigLoader(moduleLoader, compiler, onStartLoad, onEndLoad);\n }\n /**\n * @return {?}\n */\n setUpPreloading() {\n const /** @type {?} */ navigations$ = filter.call(this.router.events, (e) => e instanceof NavigationEnd);\n this.subscription = concatMap.call(navigations$, () => this.preload()).subscribe(() => { });\n }\n /**\n * @return {?}\n */\n preload() {\n const /** @type {?} */ ngModule = this.injector.get(NgModuleRef);\n return this.processRoutes(ngModule, this.router.config);\n }\n /**\n * @return {?}\n */\n ngOnDestroy() { this.subscription.unsubscribe(); }\n /**\n * @param {?} ngModule\n * @param {?} routes\n * @return {?}\n */\n processRoutes(ngModule, routes) {\n const /** @type {?} */ res = [];\n for (const /** @type {?} */ route of routes) {\n // we already have the config loaded, just recurse\n if (route.loadChildren && !route.canLoad && route._loadedConfig) {\n const /** @type {?} */ childConfig = route._loadedConfig;\n res.push(this.processRoutes(childConfig.module, childConfig.routes));\n // no config loaded, fetch the config\n }\n else if (route.loadChildren && !route.canLoad) {\n res.push(this.preloadConfig(ngModule, route));\n // recurse into children\n }\n else if (route.children) {\n res.push(this.processRoutes(ngModule, route.children));\n }\n }\n return mergeAll.call(from(res));\n }\n /**\n * @param {?} ngModule\n * @param {?} route\n * @return {?}\n */\n preloadConfig(ngModule, route) {\n return this.preloadingStrategy.preload(route, () => {\n const /** @type {?} */ loaded$ = this.loader.load(ngModule.injector, route);\n return mergeMap.call(loaded$, (config) => {\n route._loadedConfig = config;\n return this.processRoutes(config.module, config.routes);\n });\n });\n }\n}\nRouterPreloader.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nRouterPreloader.ctorParameters = () => [\n { type: Router, },\n { type: NgModuleFactoryLoader, },\n { type: Compiler, },\n { type: Injector, },\n { type: PreloadingStrategy, },\n];\nfunction RouterPreloader_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterPreloader.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterPreloader.ctorParameters;\n /** @type {?} */\n RouterPreloader.prototype.loader;\n /** @type {?} */\n RouterPreloader.prototype.subscription;\n /** @type {?} */\n RouterPreloader.prototype.router;\n /** @type {?} */\n RouterPreloader.prototype.injector;\n /** @type {?} */\n RouterPreloader.prototype.preloadingStrategy;\n}\n//# sourceMappingURL=router_preloader.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { APP_BASE_HREF, HashLocationStrategy, LOCATION_INITIALIZED, Location, LocationStrategy, PathLocationStrategy, PlatformLocation } from '@angular/common';\nimport { ANALYZE_FOR_ENTRY_COMPONENTS, APP_BOOTSTRAP_LISTENER, APP_INITIALIZER, ApplicationRef, Compiler, Inject, Injectable, InjectionToken, Injector, NgModule, NgModuleFactoryLoader, NgProbeToken, Optional, SkipSelf, SystemJsNgModuleLoader } from '@angular/core';\nimport { ɵgetDOM as getDOM } from '@angular/platform-browser';\nimport { Subject } from 'rxjs/Subject';\nimport { of } from 'rxjs/observable/of';\nimport { RouterLink, RouterLinkWithHref } from './directives/router_link';\nimport { RouterLinkActive } from './directives/router_link_active';\nimport { RouterOutlet } from './directives/router_outlet';\nimport { RouteReuseStrategy } from './route_reuse_strategy';\nimport { Router } from './router';\nimport { ROUTES } from './router_config_loader';\nimport { ChildrenOutletContexts } from './router_outlet_context';\nimport { NoPreloading, PreloadAllModules, PreloadingStrategy, RouterPreloader } from './router_preloader';\nimport { ActivatedRoute } from './router_state';\nimport { UrlHandlingStrategy } from './url_handling_strategy';\nimport { DefaultUrlSerializer, UrlSerializer } from './url_tree';\nimport { flatten } from './utils/collection';\n/**\n * \\@whatItDoes Contains a list of directives\n * \\@stable\n */\nconst /** @type {?} */ ROUTER_DIRECTIVES = [RouterOutlet, RouterLink, RouterLinkWithHref, RouterLinkActive];\n/**\n * \\@whatItDoes Is used in DI to configure the router.\n * \\@stable\n */\nexport const /** @type {?} */ ROUTER_CONFIGURATION = new InjectionToken('ROUTER_CONFIGURATION');\n/**\n * \\@docsNotRequired\n */\nexport const /** @type {?} */ ROUTER_FORROOT_GUARD = new InjectionToken('ROUTER_FORROOT_GUARD');\nexport const /** @type {?} */ ROUTER_PROVIDERS = [\n Location,\n { provide: UrlSerializer, useClass: DefaultUrlSerializer },\n {\n provide: Router,\n useFactory: setupRouter,\n deps: [\n ApplicationRef, UrlSerializer, ChildrenOutletContexts, Location, Injector,\n NgModuleFactoryLoader, Compiler, ROUTES, ROUTER_CONFIGURATION,\n [UrlHandlingStrategy, new Optional()], [RouteReuseStrategy, new Optional()]\n ]\n },\n ChildrenOutletContexts,\n { provide: ActivatedRoute, useFactory: rootRoute, deps: [Router] },\n { provide: NgModuleFactoryLoader, useClass: SystemJsNgModuleLoader },\n RouterPreloader,\n NoPreloading,\n PreloadAllModules,\n { provide: ROUTER_CONFIGURATION, useValue: { enableTracing: false } },\n];\n/**\n * @return {?}\n */\nexport function routerNgProbeToken() {\n return new NgProbeToken('Router', Router);\n}\n/**\n * \\@whatItDoes Adds router directives and providers.\n *\n * \\@howToUse\n *\n * RouterModule can be imported multiple times: once per lazily-loaded bundle.\n * Since the router deals with a global shared resource--location, we cannot have\n * more than one router service active.\n *\n * That is why there are two ways to create the module: `RouterModule.forRoot` and\n * `RouterModule.forChild`.\n *\n * * `forRoot` creates a module that contains all the directives, the given routes, and the router\n * service itself.\n * * `forChild` creates a module that contains all the directives and the given routes, but does not\n * include the router service.\n *\n * When registered at the root, the module should be used as follows\n *\n * ```\n * \\@NgModule({\n * imports: [RouterModule.forRoot(ROUTES)]\n * })\n * class MyNgModule {}\n * ```\n *\n * For submodules and lazy loaded submodules the module should be used as follows:\n *\n * ```\n * \\@NgModule({\n * imports: [RouterModule.forChild(ROUTES)]\n * })\n * class MyNgModule {}\n * ```\n *\n * \\@description\n *\n * Managing state transitions is one of the hardest parts of building applications. This is\n * especially true on the web, where you also need to ensure that the state is reflected in the URL.\n * In addition, we often want to split applications into multiple bundles and load them on demand.\n * Doing this transparently is not trivial.\n *\n * The Angular router solves these problems. Using the router, you can declaratively specify\n * application states, manage state transitions while taking care of the URL, and load bundles on\n * demand.\n *\n * [Read this developer guide](https://angular.io/docs/ts/latest/guide/router.html) to get an\n * overview of how the router should be used.\n *\n * \\@stable\n */\nexport class RouterModule {\n /**\n * @param {?} guard\n * @param {?} router\n */\n constructor(guard, router) { }\n /**\n * Creates a module with all the router providers and directives. It also optionally sets up an\n * application listener to perform an initial navigation.\n *\n * Options (see {\\@link ExtraOptions}):\n * * `enableTracing` makes the router log all its internal events to the console.\n * * `useHash` enables the location strategy that uses the URL fragment instead of the history\n * API.\n * * `initialNavigation` disables the initial navigation.\n * * `errorHandler` provides a custom error handler.\n * * `preloadingStrategy` configures a preloading strategy (see {\\@link PreloadAllModules}).\n * * `onSameUrlNavigation` configures how the router handles navigation to the current URL. See\n * {\\@link ExtraOptions} for more details.\n * @param {?} routes\n * @param {?=} config\n * @return {?}\n */\n static forRoot(routes, config) {\n return {\n ngModule: RouterModule,\n providers: [\n ROUTER_PROVIDERS,\n provideRoutes(routes),\n {\n provide: ROUTER_FORROOT_GUARD,\n useFactory: provideForRootGuard,\n deps: [[Router, new Optional(), new SkipSelf()]]\n },\n { provide: ROUTER_CONFIGURATION, useValue: config ? config : {} },\n {\n provide: LocationStrategy,\n useFactory: provideLocationStrategy,\n deps: [\n PlatformLocation, [new Inject(APP_BASE_HREF), new Optional()], ROUTER_CONFIGURATION\n ]\n },\n {\n provide: PreloadingStrategy,\n useExisting: config && config.preloadingStrategy ? config.preloadingStrategy :\n NoPreloading\n },\n { provide: NgProbeToken, multi: true, useFactory: routerNgProbeToken },\n provideRouterInitializer(),\n ],\n };\n }\n /**\n * Creates a module with all the router directives and a provider registering routes.\n * @param {?} routes\n * @return {?}\n */\n static forChild(routes) {\n return { ngModule: RouterModule, providers: [provideRoutes(routes)] };\n }\n}\nRouterModule.decorators = [\n { type: NgModule, args: [{ declarations: ROUTER_DIRECTIVES, exports: ROUTER_DIRECTIVES },] },\n];\n/** @nocollapse */\nRouterModule.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [ROUTER_FORROOT_GUARD,] },] },\n { type: Router, decorators: [{ type: Optional },] },\n];\nfunction RouterModule_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterModule.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterModule.ctorParameters;\n}\n/**\n * @param {?} platformLocationStrategy\n * @param {?} baseHref\n * @param {?=} options\n * @return {?}\n */\nexport function provideLocationStrategy(platformLocationStrategy, baseHref, options = {}) {\n return options.useHash ? new HashLocationStrategy(platformLocationStrategy, baseHref) :\n new PathLocationStrategy(platformLocationStrategy, baseHref);\n}\n/**\n * @param {?} router\n * @return {?}\n */\nexport function provideForRootGuard(router) {\n if (router) {\n throw new Error(`RouterModule.forRoot() called twice. Lazy loaded modules should use RouterModule.forChild() instead.`);\n }\n return 'guarded';\n}\n/**\n * \\@whatItDoes Registers routes.\n *\n * \\@howToUse\n *\n * ```\n * \\@NgModule({\n * imports: [RouterModule.forChild(ROUTES)],\n * providers: [provideRoutes(EXTRA_ROUTES)]\n * })\n * class MyNgModule {}\n * ```\n *\n * \\@stable\n * @param {?} routes\n * @return {?}\n */\nexport function provideRoutes(routes) {\n return [\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, multi: true, useValue: routes },\n { provide: ROUTES, multi: true, useValue: routes },\n ];\n}\n/**\n * \\@whatItDoes Represents options to configure the router.\n *\n * \\@stable\n * @record\n */\nexport function ExtraOptions() { }\nfunction ExtraOptions_tsickle_Closure_declarations() {\n /**\n * Makes the router log all its internal events to the console.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.enableTracing;\n /**\n * Enables the location strategy that uses the URL fragment instead of the history API.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.useHash;\n /**\n * Disables the initial navigation.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.initialNavigation;\n /**\n * A custom error handler.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.errorHandler;\n /**\n * Configures a preloading strategy. See {\\@link PreloadAllModules}.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.preloadingStrategy;\n /**\n * Define what the router should do if it receives a navigation request to the current URL.\n * By default, the router will ignore this navigation. However, this prevents features such\n * as a \"refresh\" button. Use this option to configure the behavior when navigating to the\n * current URL. Default is 'ignore'.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.onSameUrlNavigation;\n /**\n * Defines how the router merges params, data and resolved data from parent to child\n * routes. Available options are:\n *\n * - `'emptyOnly'`, the default, only inherits parent params for path-less or component-less\n * routes.\n * - `'always'`, enables unconditional inheritance of parent params.\n * @type {?|undefined}\n */\n ExtraOptions.prototype.paramsInheritanceStrategy;\n}\n/**\n * @param {?} ref\n * @param {?} urlSerializer\n * @param {?} contexts\n * @param {?} location\n * @param {?} injector\n * @param {?} loader\n * @param {?} compiler\n * @param {?} config\n * @param {?=} opts\n * @param {?=} urlHandlingStrategy\n * @param {?=} routeReuseStrategy\n * @return {?}\n */\nexport function setupRouter(ref, urlSerializer, contexts, location, injector, loader, compiler, config, opts = {}, urlHandlingStrategy, routeReuseStrategy) {\n const /** @type {?} */ router = new Router(null, urlSerializer, contexts, location, injector, loader, compiler, flatten(config));\n if (urlHandlingStrategy) {\n router.urlHandlingStrategy = urlHandlingStrategy;\n }\n if (routeReuseStrategy) {\n router.routeReuseStrategy = routeReuseStrategy;\n }\n if (opts.errorHandler) {\n router.errorHandler = opts.errorHandler;\n }\n if (opts.enableTracing) {\n const /** @type {?} */ dom = getDOM();\n router.events.subscribe(e => {\n dom.logGroup(`Router Event: ${((/** @type {?} */ (e.constructor))).name}`);\n dom.log(e.toString());\n dom.log(e);\n dom.logGroupEnd();\n });\n }\n if (opts.onSameUrlNavigation) {\n router.onSameUrlNavigation = opts.onSameUrlNavigation;\n }\n if (opts.paramsInheritanceStrategy) {\n router.paramsInheritanceStrategy = opts.paramsInheritanceStrategy;\n }\n return router;\n}\n/**\n * @param {?} router\n * @return {?}\n */\nexport function rootRoute(router) {\n return router.routerState.root;\n}\n/**\n * To initialize the router properly we need to do in two steps:\n *\n * We need to start the navigation in a APP_INITIALIZER to block the bootstrap if\n * a resolver or a guards executes asynchronously. Second, we need to actually run\n * activation in a BOOTSTRAP_LISTENER. We utilize the afterPreactivation\n * hook provided by the router to do that.\n *\n * The router navigation starts, reaches the point when preactivation is done, and then\n * pauses. It waits for the hook to be resolved. We then resolve it only in a bootstrap listener.\n */\nexport class RouterInitializer {\n /**\n * @param {?} injector\n */\n constructor(injector) {\n this.injector = injector;\n this.initNavigation = false;\n this.resultOfPreactivationDone = new Subject();\n }\n /**\n * @return {?}\n */\n appInitializer() {\n const /** @type {?} */ p = this.injector.get(LOCATION_INITIALIZED, Promise.resolve(null));\n return p.then(() => {\n let /** @type {?} */ resolve = /** @type {?} */ ((null));\n const /** @type {?} */ res = new Promise(r => resolve = r);\n const /** @type {?} */ router = this.injector.get(Router);\n const /** @type {?} */ opts = this.injector.get(ROUTER_CONFIGURATION);\n if (this.isLegacyDisabled(opts) || this.isLegacyEnabled(opts)) {\n resolve(true);\n }\n else if (opts.initialNavigation === 'disabled') {\n router.setUpLocationChangeListener();\n resolve(true);\n }\n else if (opts.initialNavigation === 'enabled') {\n router.hooks.afterPreactivation = () => {\n // only the initial navigation should be delayed\n if (!this.initNavigation) {\n this.initNavigation = true;\n resolve(true);\n return this.resultOfPreactivationDone;\n // subsequent navigations should not be delayed\n }\n else {\n return /** @type {?} */ (of(null));\n }\n };\n router.initialNavigation();\n }\n else {\n throw new Error(`Invalid initialNavigation options: '${opts.initialNavigation}'`);\n }\n return res;\n });\n }\n /**\n * @param {?} bootstrappedComponentRef\n * @return {?}\n */\n bootstrapListener(bootstrappedComponentRef) {\n const /** @type {?} */ opts = this.injector.get(ROUTER_CONFIGURATION);\n const /** @type {?} */ preloader = this.injector.get(RouterPreloader);\n const /** @type {?} */ router = this.injector.get(Router);\n const /** @type {?} */ ref = this.injector.get(ApplicationRef);\n if (bootstrappedComponentRef !== ref.components[0]) {\n return;\n }\n if (this.isLegacyEnabled(opts)) {\n router.initialNavigation();\n }\n else if (this.isLegacyDisabled(opts)) {\n router.setUpLocationChangeListener();\n }\n preloader.setUpPreloading();\n router.resetRootComponentType(ref.componentTypes[0]);\n this.resultOfPreactivationDone.next(/** @type {?} */ ((null)));\n this.resultOfPreactivationDone.complete();\n }\n /**\n * @param {?} opts\n * @return {?}\n */\n isLegacyEnabled(opts) {\n return opts.initialNavigation === 'legacy_enabled' || opts.initialNavigation === true ||\n opts.initialNavigation === undefined;\n }\n /**\n * @param {?} opts\n * @return {?}\n */\n isLegacyDisabled(opts) {\n return opts.initialNavigation === 'legacy_disabled' || opts.initialNavigation === false;\n }\n}\nRouterInitializer.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nRouterInitializer.ctorParameters = () => [\n { type: Injector, },\n];\nfunction RouterInitializer_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n RouterInitializer.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n RouterInitializer.ctorParameters;\n /** @type {?} */\n RouterInitializer.prototype.initNavigation;\n /** @type {?} */\n RouterInitializer.prototype.resultOfPreactivationDone;\n /** @type {?} */\n RouterInitializer.prototype.injector;\n}\n/**\n * @param {?} r\n * @return {?}\n */\nexport function getAppInitializer(r) {\n return r.appInitializer.bind(r);\n}\n/**\n * @param {?} r\n * @return {?}\n */\nexport function getBootstrapListener(r) {\n return r.bootstrapListener.bind(r);\n}\n/**\n * A token for the router initializer that will be called after the app is bootstrapped.\n *\n * \\@experimental\n */\nexport const /** @type {?} */ ROUTER_INITIALIZER = new InjectionToken('Router Initializer');\n/**\n * @return {?}\n */\nexport function provideRouterInitializer() {\n return [\n RouterInitializer,\n {\n provide: APP_INITIALIZER,\n multi: true,\n useFactory: getAppInitializer,\n deps: [RouterInitializer]\n },\n { provide: ROUTER_INITIALIZER, useFactory: getBootstrapListener, deps: [RouterInitializer] },\n { provide: APP_BOOTSTRAP_LISTENER, multi: true, useExisting: ROUTER_INITIALIZER },\n ];\n}\n//# sourceMappingURL=router_module.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Version } from '@angular/core';\n/**\n * \\@stable\n */\nexport const /** @type {?} */ VERSION = new Version('5.2.11');\n//# sourceMappingURL=version.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport { ROUTER_PROVIDERS as ɵROUTER_PROVIDERS } from './router_module';\nexport { flatten as ɵflatten } from './utils/collection';\n//# sourceMappingURL=private_export.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport { RouterLink, RouterLinkWithHref } from './directives/router_link';\nexport { RouterLinkActive } from './directives/router_link_active';\nexport { RouterOutlet } from './directives/router_outlet';\nexport { ActivationEnd, ActivationStart, ChildActivationEnd, ChildActivationStart, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RouterEvent, RoutesRecognized } from './events';\nexport { RouteReuseStrategy } from './route_reuse_strategy';\nexport { Router } from './router';\nexport { ROUTES } from './router_config_loader';\nexport { ROUTER_CONFIGURATION, ROUTER_INITIALIZER, RouterModule, provideRoutes } from './router_module';\nexport { ChildrenOutletContexts, OutletContext } from './router_outlet_context';\nexport { NoPreloading, PreloadAllModules, PreloadingStrategy, RouterPreloader } from './router_preloader';\nexport { ActivatedRoute, ActivatedRouteSnapshot, RouterState, RouterStateSnapshot } from './router_state';\nexport { PRIMARY_OUTLET, convertToParamMap } from './shared';\nexport { UrlHandlingStrategy } from './url_handling_strategy';\nexport { DefaultUrlSerializer, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree } from './url_tree';\nexport { VERSION } from './version';\nexport { ɵROUTER_PROVIDERS, ɵflatten } from './private_export';\n//# sourceMappingURL=index.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\nexport { RouterLink, RouterLinkWithHref, RouterLinkActive, RouterOutlet, ActivationEnd, ActivationStart, ChildActivationEnd, ChildActivationStart, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RouterEvent, RoutesRecognized, RouteReuseStrategy, Router, ROUTES, ROUTER_CONFIGURATION, ROUTER_INITIALIZER, RouterModule, provideRoutes, ChildrenOutletContexts, OutletContext, NoPreloading, PreloadAllModules, PreloadingStrategy, RouterPreloader, ActivatedRoute, ActivatedRouteSnapshot, RouterState, RouterStateSnapshot, PRIMARY_OUTLET, convertToParamMap, UrlHandlingStrategy, DefaultUrlSerializer, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree, VERSION, ɵROUTER_PROVIDERS, ɵflatten } from './src/index';\n// This file only reexports content of the `src` folder. Keep it that way.\n//# sourceMappingURL=public_api.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Generated bundle index. Do not edit.\n */\nexport { RouterLink, RouterLinkWithHref, RouterLinkActive, RouterOutlet, ActivationEnd, ActivationStart, ChildActivationEnd, ChildActivationStart, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RouterEvent, RoutesRecognized, RouteReuseStrategy, Router, ROUTES, ROUTER_CONFIGURATION, ROUTER_INITIALIZER, RouterModule, provideRoutes, ChildrenOutletContexts, OutletContext, NoPreloading, PreloadAllModules, PreloadingStrategy, RouterPreloader, ActivatedRoute, ActivatedRouteSnapshot, RouterState, RouterStateSnapshot, PRIMARY_OUTLET, convertToParamMap, UrlHandlingStrategy, DefaultUrlSerializer, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree, VERSION, ɵROUTER_PROVIDERS, ɵflatten } from './public_api';\nexport { ROUTER_FORROOT_GUARD as ɵa, RouterInitializer as ɵg, getAppInitializer as ɵh, getBootstrapListener as ɵi, provideForRootGuard as ɵd, provideLocationStrategy as ɵc, provideRouterInitializer as ɵj, rootRoute as ɵf, routerNgProbeToken as ɵb, setupRouter as ɵe } from './src/router_module';\nexport { Tree as ɵk, TreeNode as ɵl } from './src/utils/tree';\n//# sourceMappingURL=router.js.map"],"names":["last","map","l.last","isObservable","isPromise","NoMatch","split","match","getOutlet","getDOM"],"mappings":"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"}