@angular/core 5.2.4 → 5.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/core-testing.umd.js +6 -3
- package/bundles/core-testing.umd.js.map +1 -1
- package/bundles/core-testing.umd.min.js +2 -2
- package/bundles/core-testing.umd.min.js.map +1 -1
- package/bundles/core.umd.js +5 -4
- package/bundles/core.umd.js.map +1 -1
- package/bundles/core.umd.min.js +3 -3
- package/bundles/core.umd.min.js.map +1 -1
- package/core.metadata.json +1 -1
- package/esm2015/core.js +4 -3
- package/esm2015/core.js.map +1 -1
- package/esm2015/testing.js +5 -2
- package/esm2015/testing.js.map +1 -1
- package/esm5/core.js +4 -3
- package/esm5/core.js.map +1 -1
- package/esm5/testing.js +5 -2
- package/esm5/testing.js.map +1 -1
- package/package.json +1 -1
- package/src/animation/dsl.d.ts +1 -1
- package/testing/testing.metadata.json +1 -1
- package/testing.d.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["core.umd.js"],"names":["global","factory","exports","module","require","define","amd","ng","core","Rx","Observable","prototype","this","rxjs_Observable","rxjs_observable_merge","rxjs_operator_share","rxjs_Subject","rxjs_Subscription","__extends","d","b","__","constructor","extendStatics","Object","create","makeDecorator","name","props","parentClass","chainFn","DecoratorFactory","objOrType","metaCtor","call","annotationInstance","TypeDecorator","cls","hasOwnProperty","ANNOTATIONS","defineProperty","value","push","makeMetadataCtor","ngMetadataName","annotationCls","args","_i","arguments","length","values","apply","propName","makeParamDecorator","ParamDecoratorFactory","ParamDecorator","unusedKey","index","parameters","PARAMETERS","_a","bind","concat","annotation","makePropDecorator","PropDecoratorFactory","decoratorInstance","target","meta","PROP_METADATA","unshift","isDefaultChangeDetectionStrategy","changeDetectionStrategy","ChangeDetectionStrategy","Default","getSymbolIterator","_symbolIterator","Symbol_1","_global","iterator","keys","getOwnPropertyNames","Map","i","key","scheduleMicroTask","fn","Zone","promise","then","current","looseIdentical","a","isNaN","stringify","token","Array","map","join","overriddenName","res","toString","newLineIndex","indexOf","substring","forwardRef","forwardRefFn","__forward_ref__","resolveForwardRef","type","resolveProvider","provider","deps","computeDeps","IDENT","EMPTY","useNew","provide","USE_VALUE","useValue","useFactory","useExisting","useClass","staticError","multiProviderMixError","recursivelyProcessProviders","records","resolvedProvider","multi","multiProvider","get","MULTI_PROVIDER_FN","set","options","record","tryResolveToken","parent","notFoundValue","resolveToken","e","Error","path","NG_TEMP_TOKEN_PATH","CIRCULAR","NO_NEW_LINE","depRecords","depRecord","childRecord","undefined","NULL_INJECTOR","Injector","THROW_IF_NOT_FOUND","providerDeps","j","annotations","Optional","SkipSelf","Self","Inject","formatError","text","obj","source","charAt","substr","context","parts","JSON","replace","NEW_LINE","getDebugContext","error","ERROR_DEBUG_CONTEXT","getOriginalError","ERROR_ORIGINAL_ERROR","getErrorLogger","ERROR_LOGGER","defaultErrorLogger","console","wrappedError","message","originalError","msg","findFirstClosedCycle","constructResolvingPath","slice","reverse","k","injectionError","injector","constructResolvingMessage","errMsg","addKey","injectors","noProviderError","cyclicDependencyError","instantiationError","originalException","originalStack","first","invalidProviderError","noAnnotationError","typeOrFunc","params","signature","ii","parameter","outOfBoundsError","mixingMultiProvidersWithRegularProvidersError","provider1","provider2","isType","v","convertTsickleDecoratorIntoMetadata","decoratorInvocations","decoratorInvocation","decoratorType","annotationArgs","getParentCtor","ctor","parentProto","getPrototypeOf","resolveReflectiveFactory","factoryFn","resolvedDeps","reflector","_dependenciesFor","aliasInstance","ReflectiveDependency","fromKey","ReflectiveKey","constructDependencies","_EMPTY_LIST","ResolvedReflectiveFactory","resolveReflectiveProvider","ResolvedReflectiveProvider_","resolveReflectiveProviders","providers","normalized","_normalizeProviders","resolved","resolvedProviderMap","mergeResolvedReflectiveProviders","from","normalizedProvidersMap","existing","id","resolvedFactories","forEach","Type","dependencies","params_1","t","_extractToken","some","p","metadata","optional","isArray","_createDependency","visibility","paramMetadata","InjectionToken","_mapProviders","_providers","getProviderAtIndex","isPromise","isObservable","subscribe","_appIdRandomProviderFactory","_randomChar","String","fromCharCode","Math","floor","random","_throwError","noComponentFactoryError","component","ERROR_COMPONENT","detectWTF","wtf","trace","events","createScope","flags","leave","scope","returnValue","leaveScope","startTimeRange","rangeType","action","beginTimeRange","endTimeRange","range","noopScope","arg0","arg1","noop","checkStable","zone","_nesting","hasPendingMicrotasks","isStable","onMicrotaskEmpty","emit","runOutsideAngular","onStable","forkInnerZoneWithAngularBehavior","_inner","fork","properties","isAngularZone","onInvokeTask","delegate","task","applyThis","applyArgs","onEnter","invokeTask","onLeave","onInvoke","callback","invoke","onHasTask","hasTaskState","hasTask","change","microTask","hasPendingMacrotasks","macroTask","onHandleError","handleError","onError","onUnstable","setTestabilityGetter","getter","_testabilityGetter","enableProdMode","_runModeLocked","_devMode","isDevMode","createPlatform","_platform","destroyed","ALLOW_MULTIPLE_PLATFORMS","PlatformRef","inits","PLATFORM_INITIALIZER","init","createPlatformFactory","parentPlatformFactory","desc","marker","extraProviders","platform","getPlatform","injectedProviders","assertPlatform","requiredToken","destroyPlatform","destroy","getNgZone","ngZoneOption","NoopNgZone","NgZone","enableLongStackTrace","_callAndReportToErrorHandler","errorHandler","ngZone","result","catch","optionsReducer","dst","objs","reduce","__assign","remove","list","el","splice","registerModuleFactory","moduleFactories","moduleType","getModuleFactory","flatten","flat","item","flatItem","checkNotEmpty","modulePath","exportName","asNativeElements","debugEls","nativeElement","_queryElementChildren","element","predicate","matches","childNodes","node","DebugElement","_queryNodeChildren","parentNode","getDebugNode","nativeNode","_nativeNodeToDebugNode","indexDebugNode","removeDebugNodeFromIndex","delete","devModeEqual","isListLikeIterableA","isListLikeIterable","isListLikeIterableB","areIterablesEqual","isAObject","isBObject","isJsObject","comparator","iterator1","iterator2","item1","next","item2","done","iterateListLike","o","getPreviousIndex","addRemoveOffset","moveOffsets","previousIndex","moveOffset","getTypeNameForDebugging","_iterableDiffersFactory","defaultIterableDiffers","_keyValueDiffersFactory","defaultKeyValueDiffers","_localeFactory","locale","shiftInitState","view","priorInitState","newInitState","state","initState","initIndex","shouldCallLifecycleInitHook","asTextData","nodes","asElementData","asProviderData","asPureExpressionData","asQueryList","expressionChangedAfterItHasBeenCheckedError","oldValue","currValue","isFirstCheck","viewDebugError","viewWrappedDebugError","err","_addDebugContext","logError","isViewDebugError","viewDestroyedError","tokenKey","_tokenKeyCache","size","unwrapValue","nodeIdx","bindingIdx","WrappedValue","isWrapped","unwrap","globalBindingIdx","def","bindingIndex","oldValues","createRendererType2","UNDEFINED_RENDERER_TYPE_ID","styles","encapsulation","data","resolveRendererType2","isFilled","ViewEncapsulation","None","_renderCompCount","EMPTY_RENDERER_TYPE_ID","checkBinding","checkAndUpdateBinding","checkBindingNoChanges","bindingName","bindings","Services","createDebugContext","nodeIndex","markParentViewsForCheck","currView","viewContainerParent","markParentViewsForCheckProjectedViews","endView","dispatchEvent","eventName","event","componentView","handleEvent","root","declaredViewContainer","viewParentEl","renderNode","renderElement","renderText","elementEventFullName","isComponentView","isEmbeddedView","filterQueryId","queryId","splitMatchedQueriesDsl","matchedQueriesDsl","matchedQueries","matchedQueryIds","references","valueType","splitDepsDsl","sourceName","SOURCE","configurable","getParentRenderElement","renderHost","renderParent","componentRendererType","Native","resolveDefinition","DEFINITION_CACHE","NOOP","rootRenderNodes","renderNodes","visitRootRenderNodes","nextSibling","renderer","visitSiblingRenderNodes","startIndex","endIndex","nodeDef","visitRenderNode","childCount","visitProjectedRenderNodes","ngContentIndex","compView","hostView","hostElDef","projectedNodes","projectableNodes","execRenderNodeAction","rn","bindingFlags","embeddedViews","_embeddedViews","appendChild","insertBefore","removeChild","splitNamespace","match","NS_PREFIX_RE","calcBindingFlags","interpolate","valueCount","constAndInterp","_toStringWithNull","inlineInterpolate","c0","a1","c1","a2","c2","a3","c3","a4","c4","a5","c5","a6","c6","a7","c7","a8","c8","a9","c9","anchorDef","templateFactory","outputIndex","checkIndex","childFlags","directChildFlags","childMatchedQueries","outputs","ns","attrs","template","componentProvider","publicProviders","allProviders","query","ngContent","elementDef","namespaceAndName","fixedAttrs","_b","bindingDefs","_c","namespaceAndName_1","suffixOrSecurityContext","_d","ns_1","name_1","securityContext","suffix","nonMinifiedName","outputDefs","_e","createElement","elDef","rootSelectorOrNode","selectorOrNode","createComment","parentEl","selectRootElement","name_2","setAttribute","listenToElementOutputs","output","handleEventClosure","renderEventHandlerClosure","listenTarget","listenerView","disposable","listen","checkAndUpdateElementInline","v0","v1","v2","v3","v4","v5","v6","v7","v8","v9","bindLen","changed","checkAndUpdateElementValue","checkAndUpdateElementDynamic","binding","elData","renderNode$$1","setElementAttribute","setElementClass","setElementStyle","setElementProperty","renderValue","sanitizer","sanitize","removeAttribute","addClass","removeClass","SecurityContext","STYLE","unit","setStyle","removeStyle","setProperty","moduleProvideDef","moduleDef","providersByKey","initNgModule","_def","provDef","_createProviderInstance$1","resolveNgModuleDep","depDef","_parent","tokenKey$$1","InjectorRefTokenKey$1","NgModuleRefTokenKey","providerDef","providerInstance","UNDEFINED_VALUE","ngModule","injectable","_createClass","_callFactory","len","depValues","callNgModuleLifecycle","lifecycles","instance","ngOnDestroy","attachEmbeddedView","parentView","elementData","viewIndex","addToArray","attachProjectedView","dirtyParentQueries","renderAttachEmbeddedView","vcElementData","dvcElementData","projectedViews","_projectedViews","markNodeAsProjectedTemplate","viewDef","nodeFlags","parentNodeDef","detachEmbeddedView","removeFromArray","renderDetachView","detachProjectedView","moveEmbeddedView","oldViewIndex","newViewIndex","prevView","prevRenderNode","arr","pop","createComponentFactory","selector","componentType","viewDefFactory","inputs","ngContentSelectors","ComponentFactory_","getComponentViewDefinitionFactory","componentFactory","createViewContainerData","ViewContainerRef_","createChangeDetectorRef","ViewRef_","createTemplateData","TemplateRef_","createInjector","Injector_","nodeValue","createRendererV1","RendererAdapter","createNgModuleRef","bootstrapComponents","NgModuleRef_","directiveDef","prop","pipeDef","depDefs","createProviderInstance","_createProviderInstance","createPipeInstance","createClass","createDirectiveInstance","allowPrivateServices","subscription","eventHandlerClosure","unsubscribe","checkAndUpdateDirectiveInline","providerData","directive","changes","updateProp","ngOnChanges","ngOnInit","ngDoCheck","checkAndUpdateDirectiveDynamic","callFactory","resolveDep","startView","ChangeDetectorRefTokenKey","RendererV1TokenKey","findCompView","Renderer2TokenKey","ElementRefTokenKey","ElementRef","ViewContainerRefTokenKey","viewContainer","TemplateRefTokenKey","InjectorRefTokenKey","providerDef_1","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","SimpleChange","callLifecycleHooksChildrenFirst","parent_1","callProviderLifecycles","callElementProvidersLifecycles","setCurrentNode","ngAfterContentInit","ngAfterContentChecked","ngAfterViewInit","ngAfterViewChecked","queryDef","bindingType","filterId","createQuery","QueryList","queryIds","nodeMatchedQueries","tplDef","end","setDirty","checkAndUpdateQuery","queryList","dirty","directiveInstance","newValues","calcQueryValues","reset","notify","boundValue","notifyOnChanges","getQueryValue","embeddedView","dvc","projectedView","queryValueType","ngContentDef","appendNgContent","purePipeDef","argCount","_pureExpressionDef","pureArrayDef","pureObjectDef","propToIndex","nbKeys","propertyNames","createPureExpression","checkAndUpdatePureExpressionInline","pipe","transform","checkAndUpdatePureExpressionDynamic","textDef","staticText","prefix","createText","checkAndUpdateTextInline","_addInterpolationPart","setValue","checkAndUpdateTextDynamic","updateDirectives","updateRenderer","viewBindingCount","viewDisposableCount","viewNodeFlags","viewRootNodeFlags","viewMatchedQueries","currentParent","currentRenderParent","currentElementHasPublicProviders","currentElementHasPrivateProviders","lastRenderRootNode","validateNode","isPrivateService","isComponent","isNgContainer","newParent","rootNodeFlags","bindingCount","outputCount","nodeCount","parentEnd","createEmbeddedView","anchorDef$$1","createView","initView","createViewNodes","createRootView","createComponentView","hostElement","compRenderer","rendererType","rendererFactory","createRenderer","disposables","hostDef","nodeData","compViewDef","execComponentViewsAction","ViewAction","CreateViewNodes","execQueriesAction","checkNoChangesView","markProjectedViewsForCheck","execEmbeddedViewsAction","CheckNoChanges","checkAndUpdateView","CheckAndUpdate","callInit","checkAndUpdateNode","argStyle","checkAndUpdateNodeInline","checkAndUpdateNodeDynamic","i_1","checkNoChangesNode","checkNoChangesNodeInline","checkNoChangesNodeDynamic","checkNoChangesQuery","destroyView","Destroy","destroyNode","destroyViewNodes","callViewAction","viewState","execProjectedViewsAction","CheckNoChangesProjectedViews","CheckAndUpdateProjectedViews","queryFlags","staticDynamicQueryFlag","checkType","initServicesIfNeeded","initialized","services","createDebugServices","createProdServices","overrideProvider","overrideComponentView","clearOverrides","createProdRootView","DebugContext_","prodCheckAndUpdateNode","prodCheckNoChangesNode","debugSetCurrentNode","debugCreateRootView","debugCreateEmbeddedView","debugCreateComponentView","debugCreateNgModuleRef","debugOverrideProvider","debugOverrideComponentView","debugClearOverrides","debugCheckAndUpdateView","debugCheckNoChangesView","debugDestroyView","debugHandleEvent","debugUpdateDirectives","debugUpdateRenderer","elInjector","createRootData","RendererFactory2","DebugRendererFactory2","defWithOverride","applyProviderOverridesToView","callWithDebugContext","DebugAction","Sanitizer","ErrorHandler","viewDef$$1","viewDefOverrides","parentInjector","applyProviderOverridesToNgModule","override","providerOverrides","comp","compFactory","hostViewDef","clear","elementIndicesWithOverwrittenProviders","elIndicesWithOverwrittenProviders","lastElementDef","has","elIndex","hasOverrides","hasDeprecatedOverrides","deprecatedBehavior","detectChanges","checkNoChanges","_currentView","_currentNodeIndex","debugCheckDirectivesFn","debugCheckAndUpdateNode","debugCheckNoChangesNode","nextDirectiveWithBinding","_currentAction","debugCheckRenderNodeFn","nextRenderNodeWithBinding","givenValues","bindingValues","normalizeDebugBindingName","normalizeDebugBindingValue","attr","camelCaseToDashCase","input","CAMEL_CASE_REGEXP","m","toLowerCase","getRenderNodeIndex","renderNodeIndex","findHostElement","collectReferences","refName","self","oldAction","oldView","oldNodeIndex","getCurrentDebugContext","createNgModuleFactory","ngModuleType","defFactory","NgModuleFactory_","stringifyValueForError","assertEqual","actual","expected","serializer","assertThrow","assertLessThan","assertNotNull","assertNotEqual","operator","assertNodeType","typeSerializer","findNativeParent","containerNode","container","ngDevMode","native","viewOrElement","findBeforeNode","views","addRemoveViewFromContainer","rootNode","insertMode","beforeNode","child","nextNode","isFnRenderer","childContainerData","destroyViewTree","rootView","viewOrContainerState","cleanUpView","getParentState","insertView","newView","setViewNext","nextIndex","removeView","removeIndex","viewNode","cleanup","removeEventListener","currentView","insertChild","sibling","nativeSibling","isDifferent","stringify$1","enterView","newViewState","host","oldViewState","bindingStartIndex","ngStaticData","creationMode","viewHookStartIndex","previousOrParentNode","isParent","leaveView","executeViewHooks","createViewState","viewId","tail","createLNode","currentQuery","isState","nodeInjector","staticData","resetApplicationState","renderComponentOrTemplate","componentOrContext","begin","ngComponentDef","r","elementStart","nameOrComponentDef","localName","node_1","isHostElement","tag","ngStaticData_1","getTemplateStatic","addToViewTree","assertDataInRange","createNodeStatic","setUpAttributes","isProceduralRenderer","createError","locateHostElement","elementOrSelector","defaultRenderer","rNode","elementEnd","assertHasParent","addNode","elementProperty","NO_CHANGE","generatePropertyAliases","dataValue","inputData","setInputsForProperty","tagName","containerStatic","localNames","initialInputs","isInputData","start","propertyAliasMap","publicName","internalName","staticDirData","hasProperty","elementStyle","styleName","lElement","RendererStyleFlags3","DashCase","style","removeProperty","textNode","textBinding","existingNode","textContent","assertPreviousIsParent","NG_HOST_SYMBOL","enumerable","nodeStaticData","diPublic_1","diPublic","setInputsFromAttrs","directiveIndex","initialInputData","generateInitialInputs","attrName","minifiedInputName","writeIndex","containerStart","comment","containerEnd","containerRefreshStart","containerRefreshEnd","viewStart","viewBlockId","containerState","existingView","viewUpdateMode","initViewStaticData","viewEnd","previousView","different","bind1","renderComponent","opts","domRendererFactory3","componentDef","hostNode","n","features","feature","isDirty","defineComponent","componentDefinition","refresh","componentRefresh","h","hostBindings","noop$1","invertObject","methods","EMPTY$1","newObj","minifiedKey","trigger$1","definitions","animate$1","timings","group$1","steps","sequence$1","style$1","tokens","offset","state$1","keyframes$1","transition$1","stateChangeExpr","expr","animation","trigger$$1","animate$$1","group$$1","sequence$$1","style$$1","state$$1","keyframes$$1","transition$$1","setPrototypeOf","__proto__","assign","s","_desc","ANALYZE_FOR_ENTRY_COMPONENTS","Attribute","attributeName","Query","ContentChildren","isViewQuery","descendants","ContentChild","ViewChildren","ViewChild","OnPush","ChangeDetectorStatus","CheckOnce","Checked","CheckAlways","Detached","Errored","Destroyed","Directive","dir","Component","c","changeDetection","Pipe","pure","Input","bindingPropertyName","Output","HostBinding","hostPropertyName","HostListener","CUSTOM_ELEMENTS_SCHEMA","NO_ERRORS_SCHEMA","NgModule","Emulated","Version","full","major","split","minor","patch","VERSION","Injectable","Host","__window","window","__self","WorkerGlobalScope","__global","Promise","resolve","_THROW_IF_NOT_FOUND","_NullInjector","StaticInjector","NULL","GET_PROPERTY_NAME","ɵ2","objWithPropertyToExtract","_records","tokenPath","_console","_findOriginalError","_findContext","errorLogger","displayName","_globalKeyRegistry","numberOfKeys","KeyRegistry","_allKeys","newKey","Function","DELEGATE_CTOR","ReflectionCapabilities","reflect","_reflect","isReflectionEnabled","_zipTypesAndAnnotations","paramTypes","paramAnnotations","_ownParameters","parentCtor","exec","tsickleCtorParams","ctorParameters","paramTypes_1","ctorParam","paramAnnotations_1","decorators","getOwnMetadata","fill","_ownAnnotations","ownAnnotations","_ownPropMetadata","propMetadata","propDecorators","propDecorators_1","propMetadata_1","parentPropMetadata_1","ownPropMetadata","hasLifecycleHook","lcProperty","guards","setter","method","functionBody","importUri","resourceUri","resolveIdentifier","moduleUrl","members","runtime","resolveEnum","enumIdentifier","Reflector","reflectionCapabilities","updateCapabilities","caps","identifier","resolvedFactory","UNDEFINED","ReflectiveInjector","resolveAndCreate","ResolvedReflectiveProviders","fromResolvedProviders","ReflectiveInjector_","_constructionCounter","keyIds","_getByKey","resolveAndCreateChild","createChildFromResolved","inj","resolveAndInstantiate","instantiateResolved","_instantiateProvider","_new","_getMaxNumberOfObjects","_instantiate","ResolvedReflectiveFactory$$1","_this","dep","_getByReflectiveDependency","stack","INJECTOR_KEY","_getByKeySelf","_getByKeyDefault","_getObjByKeyId","keyId","_throwOrNull","inj_","APP_INITIALIZER","ApplicationInitStatus","appInits","donePromise","rej","reject","runInitializers","asyncInitPromises","complete","initResult","all","APP_ID","APP_ID_RANDOM_PROVIDER","PLATFORM_ID","APP_BOOTSTRAP_LISTENER","PACKAGE_ROOT_URL","Console","log","warn","ModuleWithComponentFactories","ngModuleFactory","componentFactories","Compiler","compileModuleSync","compileModuleAsync","compileModuleAndAllComponentsSync","compileModuleAndAllComponentsAsync","clearCache","clearCacheFor","COMPILER_OPTIONS","CompilerFactory","ComponentRef","ComponentFactory","_NullComponentFactoryResolver","resolveComponentFactory","ComponentFactoryResolver","CodegenComponentFactoryResolver","factories","_ngModule","_factories","ComponentFactoryBoundToModule","_super","NgModuleRef","NgModuleFactory","wtfEnabled","wtfCreateScope","wtfLeave","wtfStartTimeRange","wtfEndTimeRange","EventEmitter","isAsync","__isAsync","generatorOrNext","schedulerFn","errorFn","completeFn","setTimeout","sink","Subscription","add","Subject","assertZonePatched","_outer","isInAngularZone","assertInAngularZone","assertNotInAngularZone","run","runTask","scheduleEventTask","EMPTY_PAYLOAD","cancelTask","runGuarded","Testability","_ngZone","_pendingCount","_isZoneStable","_didWork","_callbacks","_watchAngularEvents","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","whenStable","getPendingRequestCount","findProviders","using","exactMatch","TestabilityRegistry","_applications","addToWindow","registerApplication","testability","unregisterApplication","unregisterAllApplications","getTestability","elem","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","_NoopGetTestability","registry","NgProbeToken","_injector","_modules","_destroyListeners","_destroyed","bootstrapModuleFactory","moduleFactory","ngZoneInjector","moduleRef","exceptionHandler","onDestroy","initStatus","_moduleDoBootstrap","bootstrapModule","compilerOptions","compilerFactory","createCompiler","appRef","ApplicationRef","_bootstrapComponents","f","bootstrap","ngDoBootstrap","listener","_zone","_exceptionHandler","_componentFactoryResolver","_initStatus","_bootstrapListeners","_views","_runningTick","_enforceNoNewChanges","_stable","componentTypes","components","tick","isCurrentlyStable","observer","stableSub","unstableSub","merge","share","componentOrFactory","compRef","_unloadComponent","location","_loadComponent","_tickScope","attachView","viewRef","attachToAppRef","detachView","detachFromAppRef","componentRef","RenderComponentType","templateUrl","slotCount","animations","RenderDebugInfo","Renderer","RootRenderer","RendererStyleFlags2","Important","Renderer2","NgModuleFactoryLoader","_results","filter","find","toArray","last","SystemJsNgModuleLoaderConfig","DEFAULT_CONFIG","factoryPathPrefix","factoryPathSuffix","SystemJsNgModuleLoader","_compiler","config","_config","load","loadFactory","loadAndCompile","System","import","factoryClassSuffix","TemplateRef","ViewContainerRef","ChangeDetectorRef","ViewRef","EmbeddedViewRef","EventListener","DebugNode","_debugContext","addChild","listeners","providerTokens","attributes","classes","childIndex","insertChildrenAfter","newChildren","siblingIndex","refChild","newChild","refIndex","queryAll","queryAllNodes","triggerEventHandler","eventObj","wrapped","wrap","previousValue","currentValue","firstChange","isFirstChange","DefaultIterableDifferFactory","supports","trackByFn","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","_trackByFn","forEachItem","_next","forEachOperation","nextIt","nextRemove","adjPreviousIndex","currentIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","forEachAddedItem","_nextAdded","forEachMovedItem","_nextMoved","forEachRemovedItem","forEachIdentityChange","_nextIdentityChange","diff","collection","check","_reset","itemTrackBy","mayBeDirty","index_1","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","_truncate","nextRecord","previousRecord","_prev","_remove","_moveAfter","_reinsertAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","_addToRemovals","_unlink","prevRecord","prev","_prevRemoved","_insertAfter","_DuplicateMap","put","toIndex","_prevDup","_nextDup","_DuplicateItemRecordList","_head","_tail","atOrAfterIndex","duplicates","recordList","DefaultKeyValueDifferFactory","DefaultKeyValueDiffer","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","forEachChangedItem","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","before","record_1","KeyValueChangeRecord_","_addToAdditions","newValue","_addToChanges","IterableDiffers","copied","extend","iterable","KeyValueDiffers","kv","keyValDiff","iterableDiff","_CORE_PLATFORM_PROVIDERS","platformCore","LOCALE_ID","TRANSLATIONS","TRANSLATIONS_FORMAT","MissingTranslationStrategy","Warning","Ignore","ApplicationModule","NONE","HTML","SCRIPT","URL","RESOURCE_URL","DebugContext","WeakMap","EMPTY_ARRAY","EMPTY_MAP","EMPTY_CONTEXT","_inputs","_outputs","inputsArr","templateName","outputsArr","componentNodeIndex","ComponentRef_","_view","_viewRef","_component","_elDef","changeDetectorRef","_data","ref","attachToViewContainerRef","templateRef","insert","createComponent","ngModuleRef","contextInjector","viewRef_","viewData","move","detach","_viewContainerRef","_appRef","markForCheck","fs","reattach","vcRef","_parentView","createViewRoot","createTemplateAnchor","parentElement","projectNodes","attachViewAfter","viewRootNodes","viewAllNodes","listenGlobal","propertyName","propertyValue","attributeValue","setBindingDebugInfo","className","isAdd","styleValue","invokeElementMethod","methodName","setText","animate","_moduleType","elView","elOrCompView","childDef","logViewDef","logNodeIndex","currRenderNodeIndex","nodeLogger","renderData","DebugRenderer2","whenRenderingDone","namespace","debugCtx","debugEl","debugChildEl","debugRefEl","oldChild","fullName","_ngModuleDefFactory","QueryList_","_valuesTree","_values","_refresh","document","elementIndex","ɵALLOW_MULTIPLE_PLATFORMS","ɵAPP_ID_RANDOM_PROVIDER","ɵdevModeEqual","ɵisListLikeIterable","ɵChangeDetectorStatus","ɵisDefaultChangeDetectionStrategy","ɵConsole","ɵComponentFactory","ɵCodegenComponentFactoryResolver","ɵReflectionCapabilities","ɵRenderDebugInfo","ɵglobal","ɵlooseIdentical","ɵstringify","ɵmakeDecorator","ɵisObservable","ɵisPromise","ɵclearOverrides","ɵoverrideComponentView","ɵoverrideProvider","ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","ɵdefineComponent","ɵdetectChanges","ɵrenderComponent","ɵC","ɵD","ɵE","ɵT","ɵV","ɵb","ɵb1","ɵc","ɵcR","ɵcr","ɵe","ɵp","ɵs","ɵt","ɵv","ɵregisterModuleFactory","ɵEMPTY_ARRAY","ɵEMPTY_MAP","ɵand","ɵccf","ɵcmf","ɵcrt","ɵdid","ɵeld","ɵelementEventFullName","ɵgetComponentViewDefinitionFactory","ɵinlineInterpolate","ɵinterpolate","ɵmod","ɵmpd","ɵncd","ɵnov","ɵpid","ɵprd","ɵpad","ɵpod","ɵppd","ɵqud","ɵted","ɵunv","ɵvid","AUTO_STYLE","trigger","group","sequence","keyframes","transition","ɵbf","ɵbg","ɵbk","ɵbh","ɵbj","ɵbi","ɵbl","ɵbe","ɵn","ɵo","ɵq","ɵi","ɵj","ɵk","ɵl","ɵm","ɵf","ɵg","ɵh","ɵr","ɵw","ɵu","ɵz","ɵx","ɵy","ɵbc","ɵa","ɵd","ɵba","ɵbb"],"mappings":"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","file":"core.umd.min.js","sourcesContent":["/**\n * @license Angular v5.2.4\n * (c) 2010-2018 Google, Inc. https://angular.io/\n * License: MIT\n */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('rxjs/Observable'), require('rxjs/observable/merge'), require('rxjs/operator/share'), require('rxjs/Subject'), require('rxjs/Subscription')) :\n\ttypeof define === 'function' && define.amd ? define('@angular/core', ['exports', 'rxjs/Observable', 'rxjs/observable/merge', 'rxjs/operator/share', 'rxjs/Subject', 'rxjs/Subscription'], factory) :\n\t(factory((global.ng = global.ng || {}, global.ng.core = {}),global.Rx,global.Rx.Observable,global.Rx.Observable.prototype,global.Rx,global.Rx));\n}(this, (function (exports,rxjs_Observable,rxjs_observable_merge,rxjs_operator_share,rxjs_Subject,rxjs_Subscription) { 'use strict';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n};\n\n/**\n * @license Angular v5.2.4\n * (c) 2010-2018 Google, Inc. https://angular.io/\n * License: MIT\n */\n/**\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 * Creates a token that can be used in a DI Provider.\n *\n * Use an `InjectionToken` whenever the type you are injecting is not reified (does not have a\n * runtime representation) such as when injecting an interface, callable type, array or\n * parametrized type.\n *\n * `InjectionToken` is parameterized on `T` which is the type of object which will be returned by\n * the `Injector`. This provides additional level of type safety.\n *\n * ```\n * interface MyInterface {...}\n * var myInterface = injector.get(new InjectionToken<MyInterface>('SomeToken'));\n * // myInterface is inferred to be MyInterface.\n * ```\n *\n * ### Example\n *\n * {\\@example core/di/ts/injector_spec.ts region='InjectionToken'}\n *\n * \\@stable\n */\nvar InjectionToken = /** @class */ (function () {\n function InjectionToken(_desc) {\n this._desc = _desc;\n /**\n * \\@internal\n */\n this.ngMetadataName = 'InjectionToken';\n }\n /**\n * @return {?}\n */\n InjectionToken.prototype.toString = /**\n * @return {?}\n */\n function () { return \"InjectionToken \" + this._desc; };\n return InjectionToken;\n}());\n\n/**\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 * An interface implemented by all Angular type decorators, which allows them to be used as ES7\n * decorators as well as\n * Angular DSL syntax.\n *\n * ES7 syntax:\n *\n * ```\n * \\@ng.Component({...})\n * class MyClass {...}\n * ```\n * \\@stable\n * @record\n */\n\nvar ANNOTATIONS = '__annotations__';\nvar PARAMETERS = '__paramaters__';\nvar PROP_METADATA = '__prop__metadata__';\n/**\n * @suppress {globalThis}\n * @param {?} name\n * @param {?=} props\n * @param {?=} parentClass\n * @param {?=} chainFn\n * @return {?}\n */\nfunction makeDecorator(name, props, parentClass, chainFn) {\n var /** @type {?} */ metaCtor = makeMetadataCtor(props);\n /**\n * @param {?} objOrType\n * @return {?}\n */\n function DecoratorFactory(objOrType) {\n if (this instanceof DecoratorFactory) {\n metaCtor.call(this, objOrType);\n return this;\n }\n var /** @type {?} */ annotationInstance = new (/** @type {?} */ (DecoratorFactory))(objOrType);\n var /** @type {?} */ TypeDecorator = /** @type {?} */ (function TypeDecorator(cls) {\n // Use of Object.defineProperty is important since it creates non-enumerable property which\n // prevents the property is copied during subclassing.\n var /** @type {?} */ annotations = cls.hasOwnProperty(ANNOTATIONS) ?\n (/** @type {?} */ (cls))[ANNOTATIONS] :\n Object.defineProperty(cls, ANNOTATIONS, { value: [] })[ANNOTATIONS];\n annotations.push(annotationInstance);\n return cls;\n });\n if (chainFn)\n chainFn(TypeDecorator);\n return TypeDecorator;\n }\n if (parentClass) {\n DecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n DecoratorFactory.prototype.ngMetadataName = name;\n (/** @type {?} */ (DecoratorFactory)).annotationCls = DecoratorFactory;\n return /** @type {?} */ (DecoratorFactory);\n}\n/**\n * @param {?=} props\n * @return {?}\n */\nfunction makeMetadataCtor(props) {\n return function ctor() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (props) {\n var /** @type {?} */ values = props.apply(void 0, args);\n for (var /** @type {?} */ propName in values) {\n this[propName] = values[propName];\n }\n }\n };\n}\n/**\n * @param {?} name\n * @param {?=} props\n * @param {?=} parentClass\n * @return {?}\n */\nfunction makeParamDecorator(name, props, parentClass) {\n var /** @type {?} */ metaCtor = makeMetadataCtor(props);\n /**\n * @param {...?} args\n * @return {?}\n */\n function ParamDecoratorFactory() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this instanceof ParamDecoratorFactory) {\n metaCtor.apply(this, args);\n return this;\n }\n var /** @type {?} */ annotationInstance = new ((_a = (/** @type {?} */ (ParamDecoratorFactory))).bind.apply(_a, [void 0].concat(args)))();\n (/** @type {?} */ (ParamDecorator)).annotation = annotationInstance;\n return ParamDecorator;\n /**\n * @param {?} cls\n * @param {?} unusedKey\n * @param {?} index\n * @return {?}\n */\n function ParamDecorator(cls, unusedKey, index) {\n // Use of Object.defineProperty is important since it creates non-enumerable property which\n // prevents the property is copied during subclassing.\n var /** @type {?} */ parameters = cls.hasOwnProperty(PARAMETERS) ?\n (/** @type {?} */ (cls))[PARAMETERS] :\n Object.defineProperty(cls, PARAMETERS, { value: [] })[PARAMETERS];\n // there might be gaps if some in between parameters do not have annotations.\n // we pad with nulls.\n while (parameters.length <= index) {\n parameters.push(null);\n }\n (parameters[index] = parameters[index] || []).push(annotationInstance);\n return cls;\n }\n var _a;\n }\n if (parentClass) {\n ParamDecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n ParamDecoratorFactory.prototype.ngMetadataName = name;\n (/** @type {?} */ (ParamDecoratorFactory)).annotationCls = ParamDecoratorFactory;\n return ParamDecoratorFactory;\n}\n/**\n * @param {?} name\n * @param {?=} props\n * @param {?=} parentClass\n * @return {?}\n */\nfunction makePropDecorator(name, props, parentClass) {\n var /** @type {?} */ metaCtor = makeMetadataCtor(props);\n /**\n * @param {...?} args\n * @return {?}\n */\n function PropDecoratorFactory() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this instanceof PropDecoratorFactory) {\n metaCtor.apply(this, args);\n return this;\n }\n var /** @type {?} */ decoratorInstance = new ((_a = (/** @type {?} */ (PropDecoratorFactory))).bind.apply(_a, [void 0].concat(args)))();\n return function PropDecorator(target, name) {\n var /** @type {?} */ constructor = target.constructor;\n // Use of Object.defineProperty is important since it creates non-enumerable property which\n // prevents the property is copied during subclassing.\n var /** @type {?} */ meta = constructor.hasOwnProperty(PROP_METADATA) ?\n (/** @type {?} */ (constructor))[PROP_METADATA] :\n Object.defineProperty(constructor, PROP_METADATA, { value: {} })[PROP_METADATA];\n meta[name] = meta.hasOwnProperty(name) && meta[name] || [];\n meta[name].unshift(decoratorInstance);\n };\n var _a;\n }\n if (parentClass) {\n PropDecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n PropDecoratorFactory.prototype.ngMetadataName = name;\n (/** @type {?} */ (PropDecoratorFactory)).annotationCls = PropDecoratorFactory;\n return PropDecoratorFactory;\n}\n\n/**\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 * This token can be used to create a virtual provider that will populate the\n * `entryComponents` fields of components and ng modules based on its `useValue`.\n * All components that are referenced in the `useValue` value (either directly\n * or in a nested array or map) will be added to the `entryComponents` property.\n *\n * ### Example\n * The following example shows how the router can populate the `entryComponents`\n * field of an NgModule based on the router configuration which refers\n * to components.\n *\n * ```typescript\n * // helper function inside the router\n * function provideRoutes(routes) {\n * return [\n * {provide: ROUTES, useValue: routes},\n * {provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: routes, multi: true}\n * ];\n * }\n *\n * // user code\n * let routes = [\n * {path: '/root', component: RootComp},\n * {path: '/teams', component: TeamsComp}\n * ];\n *\n * \\@NgModule({\n * providers: [provideRoutes(routes)]\n * })\n * class ModuleWithRoutes {}\n * ```\n *\n * \\@experimental\n */\nvar ANALYZE_FOR_ENTRY_COMPONENTS = new InjectionToken('AnalyzeForEntryComponents');\n/**\n * Type of the Attribute decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Attribute decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Attribute = makeParamDecorator('Attribute', function (attributeName) { return ({ attributeName: attributeName }); });\n/**\n * Base class for query metadata.\n *\n * See {\\@link ContentChildren}, {\\@link ContentChild}, {\\@link ViewChildren}, {\\@link ViewChild} for\n * more information.\n *\n * \\@stable\n * @abstract\n */\nvar Query = /** @class */ (function () {\n function Query() {\n }\n return Query;\n}());\n/**\n * Type of the ContentChildren decorator / constructor function.\n *\n * See {\\@link ContentChildren}.\n *\n * \\@stable\n * @record\n */\n\n/**\n * ContentChildren decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar ContentChildren = makePropDecorator('ContentChildren', function (selector, data) {\n if (data === void 0) { data = {}; }\n return (__assign({ selector: selector, first: false, isViewQuery: false, descendants: false }, data));\n}, Query);\n/**\n * Type of the ContentChild decorator / constructor function.\n *\n *\n * \\@stable\n * @record\n */\n\n/**\n * ContentChild decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar ContentChild = makePropDecorator('ContentChild', function (selector, data) {\n if (data === void 0) { data = {}; }\n return (__assign({ selector: selector, first: true, isViewQuery: false, descendants: true }, data));\n}, Query);\n/**\n * Type of the ViewChildren decorator / constructor function.\n *\n * See {\\@link ViewChildren}.\n *\n * \\@stable\n * @record\n */\n\n/**\n * ViewChildren decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar ViewChildren = makePropDecorator('ViewChildren', function (selector, data) {\n if (data === void 0) { data = {}; }\n return (__assign({ selector: selector, first: false, isViewQuery: true, descendants: true }, data));\n}, Query);\n/**\n * Type of the ViewChild decorator / constructor function.\n *\n * See {\\@link ViewChild}\n *\n * \\@stable\n * @record\n */\n\n/**\n * ViewChild decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar ViewChild = makePropDecorator('ViewChild', function (selector, data) {\n return (__assign({ selector: selector, first: true, isViewQuery: true, descendants: true }, data));\n}, Query);\n\n/**\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/** @enum {number} */\nvar ChangeDetectionStrategy = {\n /**\n * `OnPush` means that the change detector's mode will be initially set to `CheckOnce`.\n */\n OnPush: 0,\n /**\n * `Default` means that the change detector's mode will be initially set to `CheckAlways`.\n */\n Default: 1,\n};\nChangeDetectionStrategy[ChangeDetectionStrategy.OnPush] = \"OnPush\";\nChangeDetectionStrategy[ChangeDetectionStrategy.Default] = \"Default\";\n/** @enum {number} */\nvar ChangeDetectorStatus = {\n /**\n * `CheckOnce` means that after calling detectChanges the mode of the change detector\n * will become `Checked`.\n */\n CheckOnce: 0,\n /**\n * `Checked` means that the change detector should be skipped until its mode changes to\n * `CheckOnce`.\n */\n Checked: 1,\n /**\n * `CheckAlways` means that after calling detectChanges the mode of the change detector\n * will remain `CheckAlways`.\n */\n CheckAlways: 2,\n /**\n * `Detached` means that the change detector sub tree is not a part of the main tree and\n * should be skipped.\n */\n Detached: 3,\n /**\n * `Errored` means that the change detector encountered an error checking a binding\n * or calling a directive lifecycle method and is now in an inconsistent state. Change\n * detectors in this state will no longer detect changes.\n */\n Errored: 4,\n /**\n * `Destroyed` means that the change detector is destroyed.\n */\n Destroyed: 5,\n};\nChangeDetectorStatus[ChangeDetectorStatus.CheckOnce] = \"CheckOnce\";\nChangeDetectorStatus[ChangeDetectorStatus.Checked] = \"Checked\";\nChangeDetectorStatus[ChangeDetectorStatus.CheckAlways] = \"CheckAlways\";\nChangeDetectorStatus[ChangeDetectorStatus.Detached] = \"Detached\";\nChangeDetectorStatus[ChangeDetectorStatus.Errored] = \"Errored\";\nChangeDetectorStatus[ChangeDetectorStatus.Destroyed] = \"Destroyed\";\n/**\n * @param {?} changeDetectionStrategy\n * @return {?}\n */\nfunction isDefaultChangeDetectionStrategy(changeDetectionStrategy) {\n return changeDetectionStrategy == null ||\n changeDetectionStrategy === ChangeDetectionStrategy.Default;\n}\n\n/**\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 * Type of the Directive decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Directive decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Directive = makeDecorator('Directive', function (dir) {\n if (dir === void 0) { dir = {}; }\n return dir;\n});\n/**\n * Type of the Component decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Component decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Component = makeDecorator('Component', function (c) {\n if (c === void 0) { c = {}; }\n return (__assign({ changeDetection: ChangeDetectionStrategy.Default }, c));\n}, Directive);\n/**\n * Type of the Pipe decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Pipe decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Pipe = makeDecorator('Pipe', function (p) { return (__assign({ pure: true }, p)); });\n/**\n * Type of the Input decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Input decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Input = makePropDecorator('Input', function (bindingPropertyName) { return ({ bindingPropertyName: bindingPropertyName }); });\n/**\n * Type of the Output decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Output decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Output = makePropDecorator('Output', function (bindingPropertyName) { return ({ bindingPropertyName: bindingPropertyName }); });\n/**\n * Type of the HostBinding decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * HostBinding decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar HostBinding = makePropDecorator('HostBinding', function (hostPropertyName) { return ({ hostPropertyName: hostPropertyName }); });\n/**\n * Type of the HostListener decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * HostListener decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar HostListener = makePropDecorator('HostListener', function (eventName, args) { return ({ eventName: eventName, args: args }); });\n\n/**\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 * A wrapper around a module that also includes the providers.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Interface for schema definitions in \\@NgModules.\n *\n * \\@experimental\n * @record\n */\n\n/**\n * Defines a schema that will allow:\n * - any non-Angular elements with a `-` in their name,\n * - any properties on elements with a `-` in their name which is the common rule for custom\n * elements.\n *\n * \\@stable\n */\nvar CUSTOM_ELEMENTS_SCHEMA = {\n name: 'custom-elements'\n};\n/**\n * Defines a schema that will allow any property on any element.\n *\n * \\@experimental\n */\nvar NO_ERRORS_SCHEMA = {\n name: 'no-errors-schema'\n};\n/**\n * Type of the NgModule decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * NgModule decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar NgModule = makeDecorator('NgModule', function (ngModule) { return ngModule; });\n\n/**\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/** @enum {number} */\nvar ViewEncapsulation = {\n /**\n * Emulate `Native` scoping of styles by adding an attribute containing surrogate id to the Host\n * Element and pre-processing the style rules provided via {@link Component#styles styles} or\n * {@link Component#styleUrls styleUrls}, and adding the new Host Element attribute to all\n * selectors.\n *\n * This is the default option.\n */\n Emulated: 0,\n /**\n * Use the native encapsulation mechanism of the renderer.\n *\n * For the DOM this means using [Shadow DOM](https://w3c.github.io/webcomponents/spec/shadow/) and\n * creating a ShadowRoot for Component's Host Element.\n */\n Native: 1,\n /**\n * Don't provide any template or style encapsulation.\n */\n None: 2,\n};\nViewEncapsulation[ViewEncapsulation.Emulated] = \"Emulated\";\nViewEncapsulation[ViewEncapsulation.Native] = \"Native\";\nViewEncapsulation[ViewEncapsulation.None] = \"None\";\n\n/**\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/**\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 Represents the version of Angular\n *\n * \\@stable\n */\nvar Version = /** @class */ (function () {\n function Version(full) {\n this.full = full;\n this.major = full.split('.')[0];\n this.minor = full.split('.')[1];\n this.patch = full.split('.').slice(2).join('.');\n }\n return Version;\n}());\n/**\n * \\@stable\n */\nvar VERSION = new Version('5.2.4');\n\n/**\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 * Type of the Inject decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Inject decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Inject = makeParamDecorator('Inject', function (token) { return ({ token: token }); });\n/**\n * Type of the Optional decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Optional decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Optional = makeParamDecorator('Optional');\n/**\n * Type of the Injectable decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Injectable decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Injectable = makeDecorator('Injectable');\n/**\n * Type of the Self decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Self decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Self = makeParamDecorator('Self');\n/**\n * Type of the SkipSelf decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * SkipSelf decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar SkipSelf = makeParamDecorator('SkipSelf');\n/**\n * Type of the Host decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Host decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Host = makeParamDecorator('Host');\n\n/**\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 */\nvar __window = typeof window !== 'undefined' && window;\nvar __self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' &&\n self instanceof WorkerGlobalScope && self;\nvar __global = typeof global !== 'undefined' && global;\nvar _global = __window || __global || __self;\nvar promise = Promise.resolve(0);\nvar _symbolIterator = null;\n/**\n * @return {?}\n */\nfunction getSymbolIterator() {\n if (!_symbolIterator) {\n var /** @type {?} */ Symbol_1 = _global['Symbol'];\n if (Symbol_1 && Symbol_1.iterator) {\n _symbolIterator = Symbol_1.iterator;\n }\n else {\n // es6-shim specific logic\n var /** @type {?} */ keys = Object.getOwnPropertyNames(Map.prototype);\n for (var /** @type {?} */ i = 0; i < keys.length; ++i) {\n var /** @type {?} */ key = keys[i];\n if (key !== 'entries' && key !== 'size' &&\n (/** @type {?} */ (Map)).prototype[key] === Map.prototype['entries']) {\n _symbolIterator = key;\n }\n }\n }\n }\n return _symbolIterator;\n}\n/**\n * @param {?} fn\n * @return {?}\n */\nfunction scheduleMicroTask(fn) {\n if (typeof Zone === 'undefined') {\n // use promise to schedule microTask instead of use Zone\n promise.then(function () { fn && fn.apply(null, null); });\n }\n else {\n Zone.current.scheduleMicroTask('scheduleMicrotask', fn);\n }\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction looseIdentical(a, b) {\n return a === b || typeof a === 'number' && typeof b === 'number' && isNaN(a) && isNaN(b);\n}\n/**\n * @param {?} token\n * @return {?}\n */\nfunction stringify(token) {\n if (typeof token === 'string') {\n return token;\n }\n if (token instanceof Array) {\n return '[' + token.map(stringify).join(', ') + ']';\n }\n if (token == null) {\n return '' + token;\n }\n if (token.overriddenName) {\n return \"\" + token.overriddenName;\n }\n if (token.name) {\n return \"\" + token.name;\n }\n var /** @type {?} */ res = token.toString();\n if (res == null) {\n return '' + res;\n }\n var /** @type {?} */ newLineIndex = res.indexOf('\\n');\n return newLineIndex === -1 ? res : res.substring(0, newLineIndex);\n}\n\n/**\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 * An interface that a function passed into {\\@link forwardRef} has to implement.\n *\n * ### Example\n *\n * {\\@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref_fn'}\n * \\@experimental\n * @record\n */\n\n/**\n * Allows to refer to references which are not yet defined.\n *\n * For instance, `forwardRef` is used when the `token` which we need to refer to for the purposes of\n * DI is declared,\n * but not yet defined. It is also used when the `token` which we use when creating a query is not\n * yet defined.\n *\n * ### Example\n * {\\@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref'}\n * \\@experimental\n * @param {?} forwardRefFn\n * @return {?}\n */\nfunction forwardRef(forwardRefFn) {\n (/** @type {?} */ (forwardRefFn)).__forward_ref__ = forwardRef;\n (/** @type {?} */ (forwardRefFn)).toString = function () { return stringify(this()); };\n return (/** @type {?} */ (/** @type {?} */ (forwardRefFn)));\n}\n/**\n * Lazily retrieves the reference value from a forwardRef.\n *\n * Acts as the identity function when given a non-forward-ref value.\n *\n * ### Example ([live demo](http://plnkr.co/edit/GU72mJrk1fiodChcmiDR?p=preview))\n *\n * {\\@example core/di/ts/forward_ref/forward_ref_spec.ts region='resolve_forward_ref'}\n *\n * See: {\\@link forwardRef}\n * \\@experimental\n * @param {?} type\n * @return {?}\n */\nfunction resolveForwardRef(type) {\n if (typeof type === 'function' && type.hasOwnProperty('__forward_ref__') &&\n type.__forward_ref__ === forwardRef) {\n return (/** @type {?} */ (type))();\n }\n else {\n return type;\n }\n}\n\n/**\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 */\nvar SOURCE = '__source';\nvar _THROW_IF_NOT_FOUND = new Object();\nvar THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;\nvar _NullInjector = /** @class */ (function () {\n function _NullInjector() {\n }\n /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n _NullInjector.prototype.get = /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n function (token, notFoundValue) {\n if (notFoundValue === void 0) { notFoundValue = _THROW_IF_NOT_FOUND; }\n if (notFoundValue === _THROW_IF_NOT_FOUND) {\n throw new Error(\"NullInjectorError: No provider for \" + stringify(token) + \"!\");\n }\n return notFoundValue;\n };\n return _NullInjector;\n}());\n/**\n * \\@whatItDoes Injector interface\n * \\@howToUse\n * ```\n * const injector: Injector = ...;\n * injector.get(...);\n * ```\n *\n * \\@description\n * For more details, see the {\\@linkDocs guide/dependency-injection \"Dependency Injection Guide\"}.\n *\n * ### Example\n *\n * {\\@example core/di/ts/injector_spec.ts region='Injector'}\n *\n * `Injector` returns itself when given `Injector` as a token:\n * {\\@example core/di/ts/injector_spec.ts region='injectInjector'}\n *\n * \\@stable\n * @abstract\n */\nvar Injector = /** @class */ (function () {\n function Injector() {\n }\n /**\n * Create a new Injector which is configure using `StaticProvider`s.\n *\n * ### Example\n *\n * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'}\n */\n /**\n * Create a new Injector which is configure using `StaticProvider`s.\n *\n * ### Example\n *\n * {\\@example core/di/ts/provider_spec.ts region='ConstructorProvider'}\n * @param {?} options\n * @param {?=} parent\n * @return {?}\n */\n Injector.create = /**\n * Create a new Injector which is configure using `StaticProvider`s.\n *\n * ### Example\n *\n * {\\@example core/di/ts/provider_spec.ts region='ConstructorProvider'}\n * @param {?} options\n * @param {?=} parent\n * @return {?}\n */\n function (options, parent) {\n if (Array.isArray(options)) {\n return new StaticInjector(options, parent);\n }\n else {\n return new StaticInjector(options.providers, options.parent, options.name || null);\n }\n };\n Injector.THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;\n Injector.NULL = new _NullInjector();\n return Injector;\n}());\nvar IDENT = function (value) {\n return value;\n};\nvar EMPTY = /** @type {?} */ ([]);\nvar CIRCULAR = IDENT;\nvar MULTI_PROVIDER_FN = function () {\n return Array.prototype.slice.call(arguments);\n};\nvar GET_PROPERTY_NAME = /** @type {?} */ ({});\nvar ɵ2 = GET_PROPERTY_NAME;\nvar USE_VALUE = getClosureSafeProperty({ provide: String, useValue: ɵ2 });\nvar NG_TOKEN_PATH = 'ngTokenPath';\nvar NG_TEMP_TOKEN_PATH = 'ngTempTokenPath';\nvar NULL_INJECTOR = Injector.NULL;\nvar NEW_LINE = /\\n/gm;\nvar NO_NEW_LINE = 'ɵ';\nvar StaticInjector = /** @class */ (function () {\n function StaticInjector(providers, parent, source) {\n if (parent === void 0) { parent = NULL_INJECTOR; }\n if (source === void 0) { source = null; }\n this.parent = parent;\n this.source = source;\n var /** @type {?} */ records = this._records = new Map();\n records.set(Injector, /** @type {?} */ ({ token: Injector, fn: IDENT, deps: EMPTY, value: this, useNew: false }));\n recursivelyProcessProviders(records, providers);\n }\n /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n StaticInjector.prototype.get = /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n function (token, notFoundValue) {\n var /** @type {?} */ record = this._records.get(token);\n try {\n return tryResolveToken(token, record, this._records, this.parent, notFoundValue);\n }\n catch (/** @type {?} */ e) {\n var /** @type {?} */ tokenPath = e[NG_TEMP_TOKEN_PATH];\n if (token[SOURCE]) {\n tokenPath.unshift(token[SOURCE]);\n }\n e.message = formatError('\\n' + e.message, tokenPath, this.source);\n e[NG_TOKEN_PATH] = tokenPath;\n e[NG_TEMP_TOKEN_PATH] = null;\n throw e;\n }\n };\n /**\n * @return {?}\n */\n StaticInjector.prototype.toString = /**\n * @return {?}\n */\n function () {\n var /** @type {?} */ tokens = /** @type {?} */ ([]), /** @type {?} */ records = this._records;\n records.forEach(function (v, token) { return tokens.push(stringify(token)); });\n return \"StaticInjector[\" + tokens.join(', ') + \"]\";\n };\n return StaticInjector;\n}());\n/**\n * @param {?} provider\n * @return {?}\n */\nfunction resolveProvider(provider) {\n var /** @type {?} */ deps = computeDeps(provider);\n var /** @type {?} */ fn = IDENT;\n var /** @type {?} */ value = EMPTY;\n var /** @type {?} */ useNew = false;\n var /** @type {?} */ provide = resolveForwardRef(provider.provide);\n if (USE_VALUE in provider) {\n // We need to use USE_VALUE in provider since provider.useValue could be defined as undefined.\n value = (/** @type {?} */ (provider)).useValue;\n }\n else if ((/** @type {?} */ (provider)).useFactory) {\n fn = (/** @type {?} */ (provider)).useFactory;\n }\n else if ((/** @type {?} */ (provider)).useExisting) {\n // Just use IDENT\n }\n else if ((/** @type {?} */ (provider)).useClass) {\n useNew = true;\n fn = resolveForwardRef((/** @type {?} */ (provider)).useClass);\n }\n else if (typeof provide == 'function') {\n useNew = true;\n fn = provide;\n }\n else {\n throw staticError('StaticProvider does not have [useValue|useFactory|useExisting|useClass] or [provide] is not newable', provider);\n }\n return { deps: deps, fn: fn, useNew: useNew, value: value };\n}\n/**\n * @param {?} token\n * @return {?}\n */\nfunction multiProviderMixError(token) {\n return staticError('Cannot mix multi providers and regular providers', token);\n}\n/**\n * @param {?} records\n * @param {?} provider\n * @return {?}\n */\nfunction recursivelyProcessProviders(records, provider) {\n if (provider) {\n provider = resolveForwardRef(provider);\n if (provider instanceof Array) {\n // if we have an array recurse into the array\n for (var /** @type {?} */ i = 0; i < provider.length; i++) {\n recursivelyProcessProviders(records, provider[i]);\n }\n }\n else if (typeof provider === 'function') {\n // Functions were supported in ReflectiveInjector, but are not here. For safety give useful\n // error messages\n throw staticError('Function/Class not supported', provider);\n }\n else if (provider && typeof provider === 'object' && provider.provide) {\n // At this point we have what looks like a provider: {provide: ?, ....}\n var /** @type {?} */ token = resolveForwardRef(provider.provide);\n var /** @type {?} */ resolvedProvider = resolveProvider(provider);\n if (provider.multi === true) {\n // This is a multi provider.\n var /** @type {?} */ multiProvider = records.get(token);\n if (multiProvider) {\n if (multiProvider.fn !== MULTI_PROVIDER_FN) {\n throw multiProviderMixError(token);\n }\n }\n else {\n // Create a placeholder factory which will look up the constituents of the multi provider.\n records.set(token, multiProvider = /** @type {?} */ ({\n token: provider.provide,\n deps: [],\n useNew: false,\n fn: MULTI_PROVIDER_FN,\n value: EMPTY\n }));\n }\n // Treat the provider as the token.\n token = provider;\n multiProvider.deps.push({ token: token, options: 6 /* Default */ });\n }\n var /** @type {?} */ record = records.get(token);\n if (record && record.fn == MULTI_PROVIDER_FN) {\n throw multiProviderMixError(token);\n }\n records.set(token, resolvedProvider);\n }\n else {\n throw staticError('Unexpected provider', provider);\n }\n }\n}\n/**\n * @param {?} token\n * @param {?} record\n * @param {?} records\n * @param {?} parent\n * @param {?} notFoundValue\n * @return {?}\n */\nfunction tryResolveToken(token, record, records, parent, notFoundValue) {\n try {\n return resolveToken(token, record, records, parent, notFoundValue);\n }\n catch (/** @type {?} */ e) {\n // ensure that 'e' is of type Error.\n if (!(e instanceof Error)) {\n e = new Error(e);\n }\n var /** @type {?} */ path = e[NG_TEMP_TOKEN_PATH] = e[NG_TEMP_TOKEN_PATH] || [];\n path.unshift(token);\n if (record && record.value == CIRCULAR) {\n // Reset the Circular flag.\n record.value = EMPTY;\n }\n throw e;\n }\n}\n/**\n * @param {?} token\n * @param {?} record\n * @param {?} records\n * @param {?} parent\n * @param {?} notFoundValue\n * @return {?}\n */\nfunction resolveToken(token, record, records, parent, notFoundValue) {\n var /** @type {?} */ value;\n if (record) {\n // If we don't have a record, this implies that we don't own the provider hence don't know how\n // to resolve it.\n value = record.value;\n if (value == CIRCULAR) {\n throw Error(NO_NEW_LINE + 'Circular dependency');\n }\n else if (value === EMPTY) {\n record.value = CIRCULAR;\n var /** @type {?} */ obj = undefined;\n var /** @type {?} */ useNew = record.useNew;\n var /** @type {?} */ fn = record.fn;\n var /** @type {?} */ depRecords = record.deps;\n var /** @type {?} */ deps = EMPTY;\n if (depRecords.length) {\n deps = [];\n for (var /** @type {?} */ i = 0; i < depRecords.length; i++) {\n var /** @type {?} */ depRecord = depRecords[i];\n var /** @type {?} */ options = depRecord.options;\n var /** @type {?} */ childRecord = options & 2 /* CheckSelf */ ? records.get(depRecord.token) : undefined;\n deps.push(tryResolveToken(\n // Current Token to resolve\n depRecord.token, childRecord, records, \n // If we don't know how to resolve dependency and we should not check parent for it,\n // than pass in Null injector.\n !childRecord && !(options & 4 /* CheckParent */) ? NULL_INJECTOR : parent, options & 1 /* Optional */ ? null : Injector.THROW_IF_NOT_FOUND));\n }\n }\n record.value = value = useNew ? new ((_a = (/** @type {?} */ (fn))).bind.apply(_a, [void 0].concat(deps)))() : fn.apply(obj, deps);\n }\n }\n else {\n value = parent.get(token, notFoundValue);\n }\n return value;\n var _a;\n}\n/**\n * @param {?} provider\n * @return {?}\n */\nfunction computeDeps(provider) {\n var /** @type {?} */ deps = EMPTY;\n var /** @type {?} */ providerDeps = (/** @type {?} */ (provider)).deps;\n if (providerDeps && providerDeps.length) {\n deps = [];\n for (var /** @type {?} */ i = 0; i < providerDeps.length; i++) {\n var /** @type {?} */ options = 6;\n var /** @type {?} */ token = resolveForwardRef(providerDeps[i]);\n if (token instanceof Array) {\n for (var /** @type {?} */ j = 0, /** @type {?} */ annotations = token; j < annotations.length; j++) {\n var /** @type {?} */ annotation = annotations[j];\n if (annotation instanceof Optional || annotation == Optional) {\n options = options | 1 /* Optional */;\n }\n else if (annotation instanceof SkipSelf || annotation == SkipSelf) {\n options = options & ~2 /* CheckSelf */;\n }\n else if (annotation instanceof Self || annotation == Self) {\n options = options & ~4 /* CheckParent */;\n }\n else if (annotation instanceof Inject) {\n token = (/** @type {?} */ (annotation)).token;\n }\n else {\n token = resolveForwardRef(annotation);\n }\n }\n }\n deps.push({ token: token, options: options });\n }\n }\n else if ((/** @type {?} */ (provider)).useExisting) {\n var /** @type {?} */ token = resolveForwardRef((/** @type {?} */ (provider)).useExisting);\n deps = [{ token: token, options: 6 /* Default */ }];\n }\n else if (!providerDeps && !(USE_VALUE in provider)) {\n // useValue & useExisting are the only ones which are exempt from deps all others need it.\n throw staticError('\\'deps\\' required', provider);\n }\n return deps;\n}\n/**\n * @param {?} text\n * @param {?} obj\n * @param {?=} source\n * @return {?}\n */\nfunction formatError(text, obj, source) {\n if (source === void 0) { source = null; }\n text = text && text.charAt(0) === '\\n' && text.charAt(1) == NO_NEW_LINE ? text.substr(2) : text;\n var /** @type {?} */ context = stringify(obj);\n if (obj instanceof Array) {\n context = obj.map(stringify).join(' -> ');\n }\n else if (typeof obj === 'object') {\n var /** @type {?} */ parts = /** @type {?} */ ([]);\n for (var /** @type {?} */ key in obj) {\n if (obj.hasOwnProperty(key)) {\n var /** @type {?} */ value = obj[key];\n parts.push(key + ':' + (typeof value === 'string' ? JSON.stringify(value) : stringify(value)));\n }\n }\n context = \"{\" + parts.join(', ') + \"}\";\n }\n return \"StaticInjectorError\" + (source ? '(' + source + ')' : '') + \"[\" + context + \"]: \" + text.replace(NEW_LINE, '\\n ');\n}\n/**\n * @param {?} text\n * @param {?} obj\n * @return {?}\n */\nfunction staticError(text, obj) {\n return new Error(formatError(text, obj));\n}\n/**\n * @template T\n * @param {?} objWithPropertyToExtract\n * @return {?}\n */\nfunction getClosureSafeProperty(objWithPropertyToExtract) {\n for (var /** @type {?} */ key in objWithPropertyToExtract) {\n if (objWithPropertyToExtract[key] === GET_PROPERTY_NAME) {\n return key;\n }\n }\n throw Error('!prop');\n}\n\n/**\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\nvar ERROR_DEBUG_CONTEXT = 'ngDebugContext';\nvar ERROR_ORIGINAL_ERROR = 'ngOriginalError';\nvar ERROR_LOGGER = 'ngErrorLogger';\n/**\n * @param {?} error\n * @return {?}\n */\n\n/**\n * @param {?} error\n * @return {?}\n */\nfunction getDebugContext(error) {\n return (/** @type {?} */ (error))[ERROR_DEBUG_CONTEXT];\n}\n/**\n * @param {?} error\n * @return {?}\n */\nfunction getOriginalError(error) {\n return (/** @type {?} */ (error))[ERROR_ORIGINAL_ERROR];\n}\n/**\n * @param {?} error\n * @return {?}\n */\nfunction getErrorLogger(error) {\n return (/** @type {?} */ (error))[ERROR_LOGGER] || defaultErrorLogger;\n}\n/**\n * @param {?} console\n * @param {...?} values\n * @return {?}\n */\nfunction defaultErrorLogger(console) {\n var values = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n console.error.apply(console, values);\n}\n\n/**\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 hook for centralized exception handling.\n *\n * \\@description\n *\n * The default implementation of `ErrorHandler` prints error messages to the `console`. To\n * intercept error handling, write a custom exception handler that replaces this default as\n * appropriate for your app.\n *\n * ### Example\n *\n * ```\n * class MyErrorHandler implements ErrorHandler {\n * handleError(error) {\n * // do something with the exception\n * }\n * }\n *\n * \\@NgModule({\n * providers: [{provide: ErrorHandler, useClass: MyErrorHandler}]\n * })\n * class MyModule {}\n * ```\n *\n * \\@stable\n */\nvar ErrorHandler = /** @class */ (function () {\n function ErrorHandler() {\n /**\n * \\@internal\n */\n this._console = console;\n }\n /**\n * @param {?} error\n * @return {?}\n */\n ErrorHandler.prototype.handleError = /**\n * @param {?} error\n * @return {?}\n */\n function (error) {\n var /** @type {?} */ originalError = this._findOriginalError(error);\n var /** @type {?} */ context = this._findContext(error);\n // Note: Browser consoles show the place from where console.error was called.\n // We can use this to give users additional information about the error.\n var /** @type {?} */ errorLogger = getErrorLogger(error);\n errorLogger(this._console, \"ERROR\", error);\n if (originalError) {\n errorLogger(this._console, \"ORIGINAL ERROR\", originalError);\n }\n if (context) {\n errorLogger(this._console, 'ERROR CONTEXT', context);\n }\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} error\n * @return {?}\n */\n ErrorHandler.prototype._findContext = /**\n * \\@internal\n * @param {?} error\n * @return {?}\n */\n function (error) {\n if (error) {\n return getDebugContext(error) ? getDebugContext(error) :\n this._findContext(getOriginalError(error));\n }\n return null;\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} error\n * @return {?}\n */\n ErrorHandler.prototype._findOriginalError = /**\n * \\@internal\n * @param {?} error\n * @return {?}\n */\n function (error) {\n var /** @type {?} */ e = getOriginalError(error);\n while (e && getOriginalError(e)) {\n e = getOriginalError(e);\n }\n return e;\n };\n return ErrorHandler;\n}());\n/**\n * @param {?} message\n * @param {?} originalError\n * @return {?}\n */\nfunction wrappedError(message, originalError) {\n var /** @type {?} */ msg = message + \" caused by: \" + (originalError instanceof Error ? originalError.message : originalError);\n var /** @type {?} */ error = Error(msg);\n (/** @type {?} */ (error))[ERROR_ORIGINAL_ERROR] = originalError;\n return error;\n}\n\n/**\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 * @param {?} keys\n * @return {?}\n */\nfunction findFirstClosedCycle(keys) {\n var /** @type {?} */ res = [];\n for (var /** @type {?} */ i = 0; i < keys.length; ++i) {\n if (res.indexOf(keys[i]) > -1) {\n res.push(keys[i]);\n return res;\n }\n res.push(keys[i]);\n }\n return res;\n}\n/**\n * @param {?} keys\n * @return {?}\n */\nfunction constructResolvingPath(keys) {\n if (keys.length > 1) {\n var /** @type {?} */ reversed = findFirstClosedCycle(keys.slice().reverse());\n var /** @type {?} */ tokenStrs = reversed.map(function (k) { return stringify(k.token); });\n return ' (' + tokenStrs.join(' -> ') + ')';\n }\n return '';\n}\n/**\n * @record\n */\n\n/**\n * @param {?} injector\n * @param {?} key\n * @param {?} constructResolvingMessage\n * @param {?=} originalError\n * @return {?}\n */\nfunction injectionError(injector, key, constructResolvingMessage, originalError) {\n var /** @type {?} */ keys = [key];\n var /** @type {?} */ errMsg = constructResolvingMessage(keys);\n var /** @type {?} */ error = /** @type {?} */ ((originalError ? wrappedError(errMsg, originalError) : Error(errMsg)));\n error.addKey = addKey;\n error.keys = keys;\n error.injectors = [injector];\n error.constructResolvingMessage = constructResolvingMessage;\n (/** @type {?} */ (error))[ERROR_ORIGINAL_ERROR] = originalError;\n return error;\n}\n/**\n * @this {?}\n * @param {?} injector\n * @param {?} key\n * @return {?}\n */\nfunction addKey(injector, key) {\n this.injectors.push(injector);\n this.keys.push(key);\n // Note: This updated message won't be reflected in the `.stack` property\n this.message = this.constructResolvingMessage(this.keys);\n}\n/**\n * Thrown when trying to retrieve a dependency by key from {\\@link Injector}, but the\n * {\\@link Injector} does not have a {\\@link Provider} for the given key.\n *\n * ### Example ([live demo](http://plnkr.co/edit/vq8D3FRB9aGbnWJqtEPE?p=preview))\n *\n * ```typescript\n * class A {\n * constructor(b:B) {}\n * }\n *\n * expect(() => Injector.resolveAndCreate([A])).toThrowError();\n * ```\n * @param {?} injector\n * @param {?} key\n * @return {?}\n */\nfunction noProviderError(injector, key) {\n return injectionError(injector, key, function (keys) {\n var /** @type {?} */ first = stringify(keys[0].token);\n return \"No provider for \" + first + \"!\" + constructResolvingPath(keys);\n });\n}\n/**\n * Thrown when dependencies form a cycle.\n *\n * ### Example ([live demo](http://plnkr.co/edit/wYQdNos0Tzql3ei1EV9j?p=info))\n *\n * ```typescript\n * var injector = Injector.resolveAndCreate([\n * {provide: \"one\", useFactory: (two) => \"two\", deps: [[new Inject(\"two\")]]},\n * {provide: \"two\", useFactory: (one) => \"one\", deps: [[new Inject(\"one\")]]}\n * ]);\n *\n * expect(() => injector.get(\"one\")).toThrowError();\n * ```\n *\n * Retrieving `A` or `B` throws a `CyclicDependencyError` as the graph above cannot be constructed.\n * @param {?} injector\n * @param {?} key\n * @return {?}\n */\nfunction cyclicDependencyError(injector, key) {\n return injectionError(injector, key, function (keys) {\n return \"Cannot instantiate cyclic dependency!\" + constructResolvingPath(keys);\n });\n}\n/**\n * Thrown when a constructing type returns with an Error.\n *\n * The `InstantiationError` class contains the original error plus the dependency graph which caused\n * this object to be instantiated.\n *\n * ### Example ([live demo](http://plnkr.co/edit/7aWYdcqTQsP0eNqEdUAf?p=preview))\n *\n * ```typescript\n * class A {\n * constructor() {\n * throw new Error('message');\n * }\n * }\n *\n * var injector = Injector.resolveAndCreate([A]);\n * try {\n * injector.get(A);\n * } catch (e) {\n * expect(e instanceof InstantiationError).toBe(true);\n * expect(e.originalException.message).toEqual(\"message\");\n * expect(e.originalStack).toBeDefined();\n * }\n * ```\n * @param {?} injector\n * @param {?} originalException\n * @param {?} originalStack\n * @param {?} key\n * @return {?}\n */\nfunction instantiationError(injector, originalException, originalStack, key) {\n return injectionError(injector, key, function (keys) {\n var /** @type {?} */ first = stringify(keys[0].token);\n return originalException.message + \": Error during instantiation of \" + first + \"!\" + constructResolvingPath(keys) + \".\";\n }, originalException);\n}\n/**\n * Thrown when an object other then {\\@link Provider} (or `Type`) is passed to {\\@link Injector}\n * creation.\n *\n * ### Example ([live demo](http://plnkr.co/edit/YatCFbPAMCL0JSSQ4mvH?p=preview))\n *\n * ```typescript\n * expect(() => Injector.resolveAndCreate([\"not a type\"])).toThrowError();\n * ```\n * @param {?} provider\n * @return {?}\n */\nfunction invalidProviderError(provider) {\n return Error(\"Invalid provider - only instances of Provider and Type are allowed, got: \" + provider);\n}\n/**\n * Thrown when the class has no annotation information.\n *\n * Lack of annotation information prevents the {\\@link Injector} from determining which dependencies\n * need to be injected into the constructor.\n *\n * ### Example ([live demo](http://plnkr.co/edit/rHnZtlNS7vJOPQ6pcVkm?p=preview))\n *\n * ```typescript\n * class A {\n * constructor(b) {}\n * }\n *\n * expect(() => Injector.resolveAndCreate([A])).toThrowError();\n * ```\n *\n * This error is also thrown when the class not marked with {\\@link Injectable} has parameter types.\n *\n * ```typescript\n * class B {}\n *\n * class A {\n * constructor(b:B) {} // no information about the parameter types of A is available at runtime.\n * }\n *\n * expect(() => Injector.resolveAndCreate([A,B])).toThrowError();\n * ```\n * \\@stable\n * @param {?} typeOrFunc\n * @param {?} params\n * @return {?}\n */\nfunction noAnnotationError(typeOrFunc, params) {\n var /** @type {?} */ signature = [];\n for (var /** @type {?} */ i = 0, /** @type {?} */ ii = params.length; i < ii; i++) {\n var /** @type {?} */ parameter = params[i];\n if (!parameter || parameter.length == 0) {\n signature.push('?');\n }\n else {\n signature.push(parameter.map(stringify).join(' '));\n }\n }\n return Error('Cannot resolve all parameters for \\'' + stringify(typeOrFunc) + '\\'(' +\n signature.join(', ') + '). ' +\n 'Make sure that all the parameters are decorated with Inject or have valid type annotations and that \\'' +\n stringify(typeOrFunc) + '\\' is decorated with Injectable.');\n}\n/**\n * Thrown when getting an object by index.\n *\n * ### Example ([live demo](http://plnkr.co/edit/bRs0SX2OTQiJzqvjgl8P?p=preview))\n *\n * ```typescript\n * class A {}\n *\n * var injector = Injector.resolveAndCreate([A]);\n *\n * expect(() => injector.getAt(100)).toThrowError();\n * ```\n * \\@stable\n * @param {?} index\n * @return {?}\n */\nfunction outOfBoundsError(index) {\n return Error(\"Index \" + index + \" is out-of-bounds.\");\n}\n/**\n * Thrown when a multi provider and a regular provider are bound to the same token.\n *\n * ### Example\n *\n * ```typescript\n * expect(() => Injector.resolveAndCreate([\n * { provide: \"Strings\", useValue: \"string1\", multi: true},\n * { provide: \"Strings\", useValue: \"string2\", multi: false}\n * ])).toThrowError();\n * ```\n * @param {?} provider1\n * @param {?} provider2\n * @return {?}\n */\nfunction mixingMultiProvidersWithRegularProvidersError(provider1, provider2) {\n return Error(\"Cannot mix multi providers and regular providers, got: \" + provider1 + \" \" + provider2);\n}\n\n/**\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 * A unique object used for retrieving items from the {\\@link ReflectiveInjector}.\n *\n * Keys have:\n * - a system-wide unique `id`.\n * - a `token`.\n *\n * `Key` is used internally by {\\@link ReflectiveInjector} because its system-wide unique `id` allows\n * the\n * injector to store created objects in a more efficient way.\n *\n * `Key` should not be created directly. {\\@link ReflectiveInjector} creates keys automatically when\n * resolving\n * providers.\n * @deprecated No replacement\n */\nvar ReflectiveKey = /** @class */ (function () {\n /**\n * Private\n */\n function ReflectiveKey(token, id) {\n this.token = token;\n this.id = id;\n if (!token) {\n throw new Error('Token must be defined!');\n }\n this.displayName = stringify(this.token);\n }\n /**\n * Retrieves a `Key` for a token.\n */\n /**\n * Retrieves a `Key` for a token.\n * @param {?} token\n * @return {?}\n */\n ReflectiveKey.get = /**\n * Retrieves a `Key` for a token.\n * @param {?} token\n * @return {?}\n */\n function (token) {\n return _globalKeyRegistry.get(resolveForwardRef(token));\n };\n Object.defineProperty(ReflectiveKey, \"numberOfKeys\", {\n /**\n * @returns the number of keys registered in the system.\n */\n get: /**\n * @return {?} the number of keys registered in the system.\n */\n function () { return _globalKeyRegistry.numberOfKeys; },\n enumerable: true,\n configurable: true\n });\n return ReflectiveKey;\n}());\nvar KeyRegistry = /** @class */ (function () {\n function KeyRegistry() {\n this._allKeys = new Map();\n }\n /**\n * @param {?} token\n * @return {?}\n */\n KeyRegistry.prototype.get = /**\n * @param {?} token\n * @return {?}\n */\n function (token) {\n if (token instanceof ReflectiveKey)\n return token;\n if (this._allKeys.has(token)) {\n return /** @type {?} */ ((this._allKeys.get(token)));\n }\n var /** @type {?} */ newKey = new ReflectiveKey(token, ReflectiveKey.numberOfKeys);\n this._allKeys.set(token, newKey);\n return newKey;\n };\n Object.defineProperty(KeyRegistry.prototype, \"numberOfKeys\", {\n get: /**\n * @return {?}\n */\n function () { return this._allKeys.size; },\n enumerable: true,\n configurable: true\n });\n return KeyRegistry;\n}());\nvar _globalKeyRegistry = new KeyRegistry();\n\n/**\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 Represents a type that a Component or other object is instances of.\n *\n * \\@description\n *\n * An example of a `Type` is `MyCustomComponent` class, which in JavaScript is be represented by\n * the `MyCustomComponent` constructor function.\n *\n * \\@stable\n */\nvar Type = Function;\n/**\n * @param {?} v\n * @return {?}\n */\nfunction isType(v) {\n return typeof v === 'function';\n}\n\n/**\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 * Attention: This regex has to hold even if the code is minified!\n */\nvar DELEGATE_CTOR = /^function\\s+\\S+\\(\\)\\s*{[\\s\\S]+\\.apply\\(this,\\s*arguments\\)/;\nvar ReflectionCapabilities = /** @class */ (function () {\n function ReflectionCapabilities(reflect) {\n this._reflect = reflect || _global['Reflect'];\n }\n /**\n * @return {?}\n */\n ReflectionCapabilities.prototype.isReflectionEnabled = /**\n * @return {?}\n */\n function () { return true; };\n /**\n * @template T\n * @param {?} t\n * @return {?}\n */\n ReflectionCapabilities.prototype.factory = /**\n * @template T\n * @param {?} t\n * @return {?}\n */\n function (t) { return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new (t.bind.apply(t, [void 0].concat(args)))();\n }; };\n /** @internal */\n /**\n * \\@internal\n * @param {?} paramTypes\n * @param {?} paramAnnotations\n * @return {?}\n */\n ReflectionCapabilities.prototype._zipTypesAndAnnotations = /**\n * \\@internal\n * @param {?} paramTypes\n * @param {?} paramAnnotations\n * @return {?}\n */\n function (paramTypes, paramAnnotations) {\n var /** @type {?} */ result;\n if (typeof paramTypes === 'undefined') {\n result = new Array(paramAnnotations.length);\n }\n else {\n result = new Array(paramTypes.length);\n }\n for (var /** @type {?} */ i = 0; i < result.length; i++) {\n // TS outputs Object for parameters without types, while Traceur omits\n // the annotations. For now we preserve the Traceur behavior to aid\n // migration, but this can be revisited.\n if (typeof paramTypes === 'undefined') {\n result[i] = [];\n }\n else if (paramTypes[i] != Object) {\n result[i] = [paramTypes[i]];\n }\n else {\n result[i] = [];\n }\n if (paramAnnotations && paramAnnotations[i] != null) {\n result[i] = result[i].concat(paramAnnotations[i]);\n }\n }\n return result;\n };\n /**\n * @param {?} type\n * @param {?} parentCtor\n * @return {?}\n */\n ReflectionCapabilities.prototype._ownParameters = /**\n * @param {?} type\n * @param {?} parentCtor\n * @return {?}\n */\n function (type, parentCtor) {\n // If we have no decorators, we only have function.length as metadata.\n // In that case, to detect whether a child class declared an own constructor or not,\n // we need to look inside of that constructor to check whether it is\n // just calling the parent.\n // This also helps to work around for https://github.com/Microsoft/TypeScript/issues/12439\n // that sets 'design:paramtypes' to []\n // if a class inherits from another class but has no ctor declared itself.\n if (DELEGATE_CTOR.exec(type.toString())) {\n return null;\n }\n // Prefer the direct API.\n if ((/** @type {?} */ (type)).parameters && (/** @type {?} */ (type)).parameters !== parentCtor.parameters) {\n return (/** @type {?} */ (type)).parameters;\n }\n // API of tsickle for lowering decorators to properties on the class.\n var /** @type {?} */ tsickleCtorParams = (/** @type {?} */ (type)).ctorParameters;\n if (tsickleCtorParams && tsickleCtorParams !== parentCtor.ctorParameters) {\n // Newer tsickle uses a function closure\n // Retain the non-function case for compatibility with older tsickle\n var /** @type {?} */ ctorParameters = typeof tsickleCtorParams === 'function' ? tsickleCtorParams() : tsickleCtorParams;\n var /** @type {?} */ paramTypes_1 = ctorParameters.map(function (ctorParam) { return ctorParam && ctorParam.type; });\n var /** @type {?} */ paramAnnotations_1 = ctorParameters.map(function (ctorParam) {\n return ctorParam && convertTsickleDecoratorIntoMetadata(ctorParam.decorators);\n });\n return this._zipTypesAndAnnotations(paramTypes_1, paramAnnotations_1);\n }\n // API for metadata created by invoking the decorators.\n var /** @type {?} */ paramAnnotations = type.hasOwnProperty(PARAMETERS) && (/** @type {?} */ (type))[PARAMETERS];\n var /** @type {?} */ paramTypes = this._reflect && this._reflect.getOwnMetadata &&\n this._reflect.getOwnMetadata('design:paramtypes', type);\n if (paramTypes || paramAnnotations) {\n return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);\n }\n // If a class has no decorators, at least create metadata\n // based on function.length.\n // Note: We know that this is a real constructor as we checked\n // the content of the constructor above.\n return new Array((/** @type {?} */ (type.length))).fill(undefined);\n };\n /**\n * @param {?} type\n * @return {?}\n */\n ReflectionCapabilities.prototype.parameters = /**\n * @param {?} type\n * @return {?}\n */\n function (type) {\n // Note: only report metadata if we have at least one class decorator\n // to stay in sync with the static reflector.\n if (!isType(type)) {\n return [];\n }\n var /** @type {?} */ parentCtor = getParentCtor(type);\n var /** @type {?} */ parameters = this._ownParameters(type, parentCtor);\n if (!parameters && parentCtor !== Object) {\n parameters = this.parameters(parentCtor);\n }\n return parameters || [];\n };\n /**\n * @param {?} typeOrFunc\n * @param {?} parentCtor\n * @return {?}\n */\n ReflectionCapabilities.prototype._ownAnnotations = /**\n * @param {?} typeOrFunc\n * @param {?} parentCtor\n * @return {?}\n */\n function (typeOrFunc, parentCtor) {\n // Prefer the direct API.\n if ((/** @type {?} */ (typeOrFunc)).annotations && (/** @type {?} */ (typeOrFunc)).annotations !== parentCtor.annotations) {\n var /** @type {?} */ annotations = (/** @type {?} */ (typeOrFunc)).annotations;\n if (typeof annotations === 'function' && annotations.annotations) {\n annotations = annotations.annotations;\n }\n return annotations;\n }\n // API of tsickle for lowering decorators to properties on the class.\n if ((/** @type {?} */ (typeOrFunc)).decorators && (/** @type {?} */ (typeOrFunc)).decorators !== parentCtor.decorators) {\n return convertTsickleDecoratorIntoMetadata((/** @type {?} */ (typeOrFunc)).decorators);\n }\n // API for metadata created by invoking the decorators.\n if (typeOrFunc.hasOwnProperty(ANNOTATIONS)) {\n return (/** @type {?} */ (typeOrFunc))[ANNOTATIONS];\n }\n return null;\n };\n /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n ReflectionCapabilities.prototype.annotations = /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n function (typeOrFunc) {\n if (!isType(typeOrFunc)) {\n return [];\n }\n var /** @type {?} */ parentCtor = getParentCtor(typeOrFunc);\n var /** @type {?} */ ownAnnotations = this._ownAnnotations(typeOrFunc, parentCtor) || [];\n var /** @type {?} */ parentAnnotations = parentCtor !== Object ? this.annotations(parentCtor) : [];\n return parentAnnotations.concat(ownAnnotations);\n };\n /**\n * @param {?} typeOrFunc\n * @param {?} parentCtor\n * @return {?}\n */\n ReflectionCapabilities.prototype._ownPropMetadata = /**\n * @param {?} typeOrFunc\n * @param {?} parentCtor\n * @return {?}\n */\n function (typeOrFunc, parentCtor) {\n // Prefer the direct API.\n if ((/** @type {?} */ (typeOrFunc)).propMetadata &&\n (/** @type {?} */ (typeOrFunc)).propMetadata !== parentCtor.propMetadata) {\n var /** @type {?} */ propMetadata = (/** @type {?} */ (typeOrFunc)).propMetadata;\n if (typeof propMetadata === 'function' && propMetadata.propMetadata) {\n propMetadata = propMetadata.propMetadata;\n }\n return propMetadata;\n }\n // API of tsickle for lowering decorators to properties on the class.\n if ((/** @type {?} */ (typeOrFunc)).propDecorators &&\n (/** @type {?} */ (typeOrFunc)).propDecorators !== parentCtor.propDecorators) {\n var /** @type {?} */ propDecorators_1 = (/** @type {?} */ (typeOrFunc)).propDecorators;\n var /** @type {?} */ propMetadata_1 = /** @type {?} */ ({});\n Object.keys(propDecorators_1).forEach(function (prop) {\n propMetadata_1[prop] = convertTsickleDecoratorIntoMetadata(propDecorators_1[prop]);\n });\n return propMetadata_1;\n }\n // API for metadata created by invoking the decorators.\n if (typeOrFunc.hasOwnProperty(PROP_METADATA)) {\n return (/** @type {?} */ (typeOrFunc))[PROP_METADATA];\n }\n return null;\n };\n /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n ReflectionCapabilities.prototype.propMetadata = /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n function (typeOrFunc) {\n if (!isType(typeOrFunc)) {\n return {};\n }\n var /** @type {?} */ parentCtor = getParentCtor(typeOrFunc);\n var /** @type {?} */ propMetadata = {};\n if (parentCtor !== Object) {\n var /** @type {?} */ parentPropMetadata_1 = this.propMetadata(parentCtor);\n Object.keys(parentPropMetadata_1).forEach(function (propName) {\n propMetadata[propName] = parentPropMetadata_1[propName];\n });\n }\n var /** @type {?} */ ownPropMetadata = this._ownPropMetadata(typeOrFunc, parentCtor);\n if (ownPropMetadata) {\n Object.keys(ownPropMetadata).forEach(function (propName) {\n var /** @type {?} */ decorators = [];\n if (propMetadata.hasOwnProperty(propName)) {\n decorators.push.apply(decorators, propMetadata[propName]);\n }\n decorators.push.apply(decorators, ownPropMetadata[propName]);\n propMetadata[propName] = decorators;\n });\n }\n return propMetadata;\n };\n /**\n * @param {?} type\n * @param {?} lcProperty\n * @return {?}\n */\n ReflectionCapabilities.prototype.hasLifecycleHook = /**\n * @param {?} type\n * @param {?} lcProperty\n * @return {?}\n */\n function (type, lcProperty) {\n return type instanceof Type && lcProperty in type.prototype;\n };\n /**\n * @param {?} type\n * @return {?}\n */\n ReflectionCapabilities.prototype.guards = /**\n * @param {?} type\n * @return {?}\n */\n function (type) { return {}; };\n /**\n * @param {?} name\n * @return {?}\n */\n ReflectionCapabilities.prototype.getter = /**\n * @param {?} name\n * @return {?}\n */\n function (name) { return /** @type {?} */ (new Function('o', 'return o.' + name + ';')); };\n /**\n * @param {?} name\n * @return {?}\n */\n ReflectionCapabilities.prototype.setter = /**\n * @param {?} name\n * @return {?}\n */\n function (name) {\n return /** @type {?} */ (new Function('o', 'v', 'return o.' + name + ' = v;'));\n };\n /**\n * @param {?} name\n * @return {?}\n */\n ReflectionCapabilities.prototype.method = /**\n * @param {?} name\n * @return {?}\n */\n function (name) {\n var /** @type {?} */ functionBody = \"if (!o.\" + name + \") throw new Error('\\\"\" + name + \"\\\" is undefined');\\n return o.\" + name + \".apply(o, args);\";\n return /** @type {?} */ (new Function('o', 'args', functionBody));\n };\n // There is not a concept of import uri in Js, but this is useful in developing Dart applications.\n /**\n * @param {?} type\n * @return {?}\n */\n ReflectionCapabilities.prototype.importUri = /**\n * @param {?} type\n * @return {?}\n */\n function (type) {\n // StaticSymbol\n if (typeof type === 'object' && type['filePath']) {\n return type['filePath'];\n }\n // Runtime type\n return \"./\" + stringify(type);\n };\n /**\n * @param {?} type\n * @return {?}\n */\n ReflectionCapabilities.prototype.resourceUri = /**\n * @param {?} type\n * @return {?}\n */\n function (type) { return \"./\" + stringify(type); };\n /**\n * @param {?} name\n * @param {?} moduleUrl\n * @param {?} members\n * @param {?} runtime\n * @return {?}\n */\n ReflectionCapabilities.prototype.resolveIdentifier = /**\n * @param {?} name\n * @param {?} moduleUrl\n * @param {?} members\n * @param {?} runtime\n * @return {?}\n */\n function (name, moduleUrl, members, runtime) {\n return runtime;\n };\n /**\n * @param {?} enumIdentifier\n * @param {?} name\n * @return {?}\n */\n ReflectionCapabilities.prototype.resolveEnum = /**\n * @param {?} enumIdentifier\n * @param {?} name\n * @return {?}\n */\n function (enumIdentifier, name) { return enumIdentifier[name]; };\n return ReflectionCapabilities;\n}());\n/**\n * @param {?} decoratorInvocations\n * @return {?}\n */\nfunction convertTsickleDecoratorIntoMetadata(decoratorInvocations) {\n if (!decoratorInvocations) {\n return [];\n }\n return decoratorInvocations.map(function (decoratorInvocation) {\n var /** @type {?} */ decoratorType = decoratorInvocation.type;\n var /** @type {?} */ annotationCls = decoratorType.annotationCls;\n var /** @type {?} */ annotationArgs = decoratorInvocation.args ? decoratorInvocation.args : [];\n return new (annotationCls.bind.apply(annotationCls, [void 0].concat(annotationArgs)))();\n });\n}\n/**\n * @param {?} ctor\n * @return {?}\n */\nfunction getParentCtor(ctor) {\n var /** @type {?} */ parentProto = Object.getPrototypeOf(ctor.prototype);\n var /** @type {?} */ parentCtor = parentProto ? parentProto.constructor : null;\n // Note: We always use `Object` as the null value\n // to simplify checking later on.\n return parentCtor || Object;\n}\n\n/**\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 * Provides access to reflection data about symbols. Used internally by Angular\n * to power dependency injection and compilation.\n */\nvar Reflector = /** @class */ (function () {\n function Reflector(reflectionCapabilities) {\n this.reflectionCapabilities = reflectionCapabilities;\n }\n /**\n * @param {?} caps\n * @return {?}\n */\n Reflector.prototype.updateCapabilities = /**\n * @param {?} caps\n * @return {?}\n */\n function (caps) { this.reflectionCapabilities = caps; };\n /**\n * @param {?} type\n * @return {?}\n */\n Reflector.prototype.factory = /**\n * @param {?} type\n * @return {?}\n */\n function (type) { return this.reflectionCapabilities.factory(type); };\n /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n Reflector.prototype.parameters = /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n function (typeOrFunc) {\n return this.reflectionCapabilities.parameters(typeOrFunc);\n };\n /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n Reflector.prototype.annotations = /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n function (typeOrFunc) {\n return this.reflectionCapabilities.annotations(typeOrFunc);\n };\n /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n Reflector.prototype.propMetadata = /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n function (typeOrFunc) {\n return this.reflectionCapabilities.propMetadata(typeOrFunc);\n };\n /**\n * @param {?} type\n * @param {?} lcProperty\n * @return {?}\n */\n Reflector.prototype.hasLifecycleHook = /**\n * @param {?} type\n * @param {?} lcProperty\n * @return {?}\n */\n function (type, lcProperty) {\n return this.reflectionCapabilities.hasLifecycleHook(type, lcProperty);\n };\n /**\n * @param {?} name\n * @return {?}\n */\n Reflector.prototype.getter = /**\n * @param {?} name\n * @return {?}\n */\n function (name) { return this.reflectionCapabilities.getter(name); };\n /**\n * @param {?} name\n * @return {?}\n */\n Reflector.prototype.setter = /**\n * @param {?} name\n * @return {?}\n */\n function (name) { return this.reflectionCapabilities.setter(name); };\n /**\n * @param {?} name\n * @return {?}\n */\n Reflector.prototype.method = /**\n * @param {?} name\n * @return {?}\n */\n function (name) { return this.reflectionCapabilities.method(name); };\n /**\n * @param {?} type\n * @return {?}\n */\n Reflector.prototype.importUri = /**\n * @param {?} type\n * @return {?}\n */\n function (type) { return this.reflectionCapabilities.importUri(type); };\n /**\n * @param {?} type\n * @return {?}\n */\n Reflector.prototype.resourceUri = /**\n * @param {?} type\n * @return {?}\n */\n function (type) { return this.reflectionCapabilities.resourceUri(type); };\n /**\n * @param {?} name\n * @param {?} moduleUrl\n * @param {?} members\n * @param {?} runtime\n * @return {?}\n */\n Reflector.prototype.resolveIdentifier = /**\n * @param {?} name\n * @param {?} moduleUrl\n * @param {?} members\n * @param {?} runtime\n * @return {?}\n */\n function (name, moduleUrl, members, runtime) {\n return this.reflectionCapabilities.resolveIdentifier(name, moduleUrl, members, runtime);\n };\n /**\n * @param {?} identifier\n * @param {?} name\n * @return {?}\n */\n Reflector.prototype.resolveEnum = /**\n * @param {?} identifier\n * @param {?} name\n * @return {?}\n */\n function (identifier, name) {\n return this.reflectionCapabilities.resolveEnum(identifier, name);\n };\n return Reflector;\n}());\n\n/**\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 * The {\\@link Reflector} used internally in Angular to access metadata\n * about symbols.\n */\nvar reflector = new Reflector(new ReflectionCapabilities());\n\n/**\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 * `Dependency` is used by the framework to extend DI.\n * This is internal to Angular and should not be used directly.\n */\nvar ReflectiveDependency = /** @class */ (function () {\n function ReflectiveDependency(key, optional, visibility) {\n this.key = key;\n this.optional = optional;\n this.visibility = visibility;\n }\n /**\n * @param {?} key\n * @return {?}\n */\n ReflectiveDependency.fromKey = /**\n * @param {?} key\n * @return {?}\n */\n function (key) {\n return new ReflectiveDependency(key, false, null);\n };\n return ReflectiveDependency;\n}());\nvar _EMPTY_LIST = [];\n/**\n * An internal resolved representation of a {\\@link Provider} used by the {\\@link Injector}.\n *\n * It is usually created automatically by `Injector.resolveAndCreate`.\n *\n * It can be created manually, as follows:\n *\n * ### Example ([live demo](http://plnkr.co/edit/RfEnhh8kUEI0G3qsnIeT?p%3Dpreview&p=preview))\n *\n * ```typescript\n * var resolvedProviders = Injector.resolve([{ provide: 'message', useValue: 'Hello' }]);\n * var injector = Injector.fromResolvedProviders(resolvedProviders);\n *\n * expect(injector.get('message')).toEqual('Hello');\n * ```\n *\n * \\@experimental\n * @record\n */\n\nvar ResolvedReflectiveProvider_ = /** @class */ (function () {\n function ResolvedReflectiveProvider_(key, resolvedFactories, multiProvider) {\n this.key = key;\n this.resolvedFactories = resolvedFactories;\n this.multiProvider = multiProvider;\n this.resolvedFactory = this.resolvedFactories[0];\n }\n return ResolvedReflectiveProvider_;\n}());\n/**\n * An internal resolved representation of a factory function created by resolving {\\@link\n * Provider}.\n * \\@experimental\n */\nvar ResolvedReflectiveFactory = /** @class */ (function () {\n function ResolvedReflectiveFactory(factory, dependencies) {\n this.factory = factory;\n this.dependencies = dependencies;\n }\n return ResolvedReflectiveFactory;\n}());\n/**\n * Resolve a single provider.\n * @param {?} provider\n * @return {?}\n */\nfunction resolveReflectiveFactory(provider) {\n var /** @type {?} */ factoryFn;\n var /** @type {?} */ resolvedDeps;\n if (provider.useClass) {\n var /** @type {?} */ useClass = resolveForwardRef(provider.useClass);\n factoryFn = reflector.factory(useClass);\n resolvedDeps = _dependenciesFor(useClass);\n }\n else if (provider.useExisting) {\n factoryFn = function (aliasInstance) { return aliasInstance; };\n resolvedDeps = [ReflectiveDependency.fromKey(ReflectiveKey.get(provider.useExisting))];\n }\n else if (provider.useFactory) {\n factoryFn = provider.useFactory;\n resolvedDeps = constructDependencies(provider.useFactory, provider.deps);\n }\n else {\n factoryFn = function () { return provider.useValue; };\n resolvedDeps = _EMPTY_LIST;\n }\n return new ResolvedReflectiveFactory(factoryFn, resolvedDeps);\n}\n/**\n * Converts the {\\@link Provider} into {\\@link ResolvedProvider}.\n *\n * {\\@link Injector} internally only uses {\\@link ResolvedProvider}, {\\@link Provider} contains\n * convenience provider syntax.\n * @param {?} provider\n * @return {?}\n */\nfunction resolveReflectiveProvider(provider) {\n return new ResolvedReflectiveProvider_(ReflectiveKey.get(provider.provide), [resolveReflectiveFactory(provider)], provider.multi || false);\n}\n/**\n * Resolve a list of Providers.\n * @param {?} providers\n * @return {?}\n */\nfunction resolveReflectiveProviders(providers) {\n var /** @type {?} */ normalized = _normalizeProviders(providers, []);\n var /** @type {?} */ resolved = normalized.map(resolveReflectiveProvider);\n var /** @type {?} */ resolvedProviderMap = mergeResolvedReflectiveProviders(resolved, new Map());\n return Array.from(resolvedProviderMap.values());\n}\n/**\n * Merges a list of ResolvedProviders into a list where\n * each key is contained exactly once and multi providers\n * have been merged.\n * @param {?} providers\n * @param {?} normalizedProvidersMap\n * @return {?}\n */\nfunction mergeResolvedReflectiveProviders(providers, normalizedProvidersMap) {\n for (var /** @type {?} */ i = 0; i < providers.length; i++) {\n var /** @type {?} */ provider = providers[i];\n var /** @type {?} */ existing = normalizedProvidersMap.get(provider.key.id);\n if (existing) {\n if (provider.multiProvider !== existing.multiProvider) {\n throw mixingMultiProvidersWithRegularProvidersError(existing, provider);\n }\n if (provider.multiProvider) {\n for (var /** @type {?} */ j = 0; j < provider.resolvedFactories.length; j++) {\n existing.resolvedFactories.push(provider.resolvedFactories[j]);\n }\n }\n else {\n normalizedProvidersMap.set(provider.key.id, provider);\n }\n }\n else {\n var /** @type {?} */ resolvedProvider = void 0;\n if (provider.multiProvider) {\n resolvedProvider = new ResolvedReflectiveProvider_(provider.key, provider.resolvedFactories.slice(), provider.multiProvider);\n }\n else {\n resolvedProvider = provider;\n }\n normalizedProvidersMap.set(provider.key.id, resolvedProvider);\n }\n }\n return normalizedProvidersMap;\n}\n/**\n * @param {?} providers\n * @param {?} res\n * @return {?}\n */\nfunction _normalizeProviders(providers, res) {\n providers.forEach(function (b) {\n if (b instanceof Type) {\n res.push({ provide: b, useClass: b });\n }\n else if (b && typeof b == 'object' && (/** @type {?} */ (b)).provide !== undefined) {\n res.push(/** @type {?} */ (b));\n }\n else if (b instanceof Array) {\n _normalizeProviders(b, res);\n }\n else {\n throw invalidProviderError(b);\n }\n });\n return res;\n}\n/**\n * @param {?} typeOrFunc\n * @param {?=} dependencies\n * @return {?}\n */\nfunction constructDependencies(typeOrFunc, dependencies) {\n if (!dependencies) {\n return _dependenciesFor(typeOrFunc);\n }\n else {\n var /** @type {?} */ params_1 = dependencies.map(function (t) { return [t]; });\n return dependencies.map(function (t) { return _extractToken(typeOrFunc, t, params_1); });\n }\n}\n/**\n * @param {?} typeOrFunc\n * @return {?}\n */\nfunction _dependenciesFor(typeOrFunc) {\n var /** @type {?} */ params = reflector.parameters(typeOrFunc);\n if (!params)\n return [];\n if (params.some(function (p) { return p == null; })) {\n throw noAnnotationError(typeOrFunc, params);\n }\n return params.map(function (p) { return _extractToken(typeOrFunc, p, params); });\n}\n/**\n * @param {?} typeOrFunc\n * @param {?} metadata\n * @param {?} params\n * @return {?}\n */\nfunction _extractToken(typeOrFunc, metadata, params) {\n var /** @type {?} */ token = null;\n var /** @type {?} */ optional = false;\n if (!Array.isArray(metadata)) {\n if (metadata instanceof Inject) {\n return _createDependency(metadata.token, optional, null);\n }\n else {\n return _createDependency(metadata, optional, null);\n }\n }\n var /** @type {?} */ visibility = null;\n for (var /** @type {?} */ i = 0; i < metadata.length; ++i) {\n var /** @type {?} */ paramMetadata = metadata[i];\n if (paramMetadata instanceof Type) {\n token = paramMetadata;\n }\n else if (paramMetadata instanceof Inject) {\n token = paramMetadata.token;\n }\n else if (paramMetadata instanceof Optional) {\n optional = true;\n }\n else if (paramMetadata instanceof Self || paramMetadata instanceof SkipSelf) {\n visibility = paramMetadata;\n }\n else if (paramMetadata instanceof InjectionToken) {\n token = paramMetadata;\n }\n }\n token = resolveForwardRef(token);\n if (token != null) {\n return _createDependency(token, optional, visibility);\n }\n else {\n throw noAnnotationError(typeOrFunc, params);\n }\n}\n/**\n * @param {?} token\n * @param {?} optional\n * @param {?} visibility\n * @return {?}\n */\nfunction _createDependency(token, optional, visibility) {\n return new ReflectiveDependency(ReflectiveKey.get(token), optional, visibility);\n}\n\n/**\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// Threshold for the dynamic version\nvar UNDEFINED = new Object();\n/**\n * A ReflectiveDependency injection container used for instantiating objects and resolving\n * dependencies.\n *\n * An `Injector` is a replacement for a `new` operator, which can automatically resolve the\n * constructor dependencies.\n *\n * In typical use, application code asks for the dependencies in the constructor and they are\n * resolved by the `Injector`.\n *\n * ### Example ([live demo](http://plnkr.co/edit/jzjec0?p=preview))\n *\n * The following example creates an `Injector` configured to create `Engine` and `Car`.\n *\n * ```typescript\n * \\@Injectable()\n * class Engine {\n * }\n *\n * \\@Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]);\n * var car = injector.get(Car);\n * expect(car instanceof Car).toBe(true);\n * expect(car.engine instanceof Engine).toBe(true);\n * ```\n *\n * Notice, we don't use the `new` operator because we explicitly want to have the `Injector`\n * resolve all of the object's dependencies automatically.\n *\n * @deprecated from v5 - slow and brings in a lot of code, Use `Injector.create` instead.\n * @abstract\n */\nvar ReflectiveInjector = /** @class */ (function () {\n function ReflectiveInjector() {\n }\n /**\n * Turns an array of provider definitions into an array of resolved providers.\n *\n * A resolution is a process of flattening multiple nested arrays and converting individual\n * providers into an array of {@link ResolvedReflectiveProvider}s.\n *\n * ### Example ([live demo](http://plnkr.co/edit/AiXTHi?p=preview))\n *\n * ```typescript\n * @Injectable()\n * class Engine {\n * }\n *\n * @Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var providers = ReflectiveInjector.resolve([Car, [[Engine]]]);\n *\n * expect(providers.length).toEqual(2);\n *\n * expect(providers[0] instanceof ResolvedReflectiveProvider).toBe(true);\n * expect(providers[0].key.displayName).toBe(\"Car\");\n * expect(providers[0].dependencies.length).toEqual(1);\n * expect(providers[0].factory).toBeDefined();\n *\n * expect(providers[1].key.displayName).toBe(\"Engine\");\n * });\n * ```\n *\n * See {@link ReflectiveInjector#fromResolvedProviders fromResolvedProviders} for more info.\n */\n /**\n * Turns an array of provider definitions into an array of resolved providers.\n *\n * A resolution is a process of flattening multiple nested arrays and converting individual\n * providers into an array of {\\@link ResolvedReflectiveProvider}s.\n *\n * ### Example ([live demo](http://plnkr.co/edit/AiXTHi?p=preview))\n *\n * ```typescript\n * \\@Injectable()\n * class Engine {\n * }\n *\n * \\@Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var providers = ReflectiveInjector.resolve([Car, [[Engine]]]);\n *\n * expect(providers.length).toEqual(2);\n *\n * expect(providers[0] instanceof ResolvedReflectiveProvider).toBe(true);\n * expect(providers[0].key.displayName).toBe(\"Car\");\n * expect(providers[0].dependencies.length).toEqual(1);\n * expect(providers[0].factory).toBeDefined();\n *\n * expect(providers[1].key.displayName).toBe(\"Engine\");\n * });\n * ```\n *\n * See {\\@link ReflectiveInjector#fromResolvedProviders fromResolvedProviders} for more info.\n * @param {?} providers\n * @return {?}\n */\n ReflectiveInjector.resolve = /**\n * Turns an array of provider definitions into an array of resolved providers.\n *\n * A resolution is a process of flattening multiple nested arrays and converting individual\n * providers into an array of {\\@link ResolvedReflectiveProvider}s.\n *\n * ### Example ([live demo](http://plnkr.co/edit/AiXTHi?p=preview))\n *\n * ```typescript\n * \\@Injectable()\n * class Engine {\n * }\n *\n * \\@Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var providers = ReflectiveInjector.resolve([Car, [[Engine]]]);\n *\n * expect(providers.length).toEqual(2);\n *\n * expect(providers[0] instanceof ResolvedReflectiveProvider).toBe(true);\n * expect(providers[0].key.displayName).toBe(\"Car\");\n * expect(providers[0].dependencies.length).toEqual(1);\n * expect(providers[0].factory).toBeDefined();\n *\n * expect(providers[1].key.displayName).toBe(\"Engine\");\n * });\n * ```\n *\n * See {\\@link ReflectiveInjector#fromResolvedProviders fromResolvedProviders} for more info.\n * @param {?} providers\n * @return {?}\n */\n function (providers) {\n return resolveReflectiveProviders(providers);\n };\n /**\n * Resolves an array of providers and creates an injector from those providers.\n *\n * The passed-in providers can be an array of `Type`, {@link Provider},\n * or a recursive array of more providers.\n *\n * ### Example ([live demo](http://plnkr.co/edit/ePOccA?p=preview))\n *\n * ```typescript\n * @Injectable()\n * class Engine {\n * }\n *\n * @Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]);\n * expect(injector.get(Car) instanceof Car).toBe(true);\n * ```\n *\n * This function is slower than the corresponding `fromResolvedProviders`\n * because it needs to resolve the passed-in providers first.\n * See {@link ReflectiveInjector#resolve resolve} and\n * {@link ReflectiveInjector#fromResolvedProviders fromResolvedProviders}.\n */\n /**\n * Resolves an array of providers and creates an injector from those providers.\n *\n * The passed-in providers can be an array of `Type`, {\\@link Provider},\n * or a recursive array of more providers.\n *\n * ### Example ([live demo](http://plnkr.co/edit/ePOccA?p=preview))\n *\n * ```typescript\n * \\@Injectable()\n * class Engine {\n * }\n *\n * \\@Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]);\n * expect(injector.get(Car) instanceof Car).toBe(true);\n * ```\n *\n * This function is slower than the corresponding `fromResolvedProviders`\n * because it needs to resolve the passed-in providers first.\n * See {\\@link ReflectiveInjector#resolve resolve} and\n * {\\@link ReflectiveInjector#fromResolvedProviders fromResolvedProviders}.\n * @param {?} providers\n * @param {?=} parent\n * @return {?}\n */\n ReflectiveInjector.resolveAndCreate = /**\n * Resolves an array of providers and creates an injector from those providers.\n *\n * The passed-in providers can be an array of `Type`, {\\@link Provider},\n * or a recursive array of more providers.\n *\n * ### Example ([live demo](http://plnkr.co/edit/ePOccA?p=preview))\n *\n * ```typescript\n * \\@Injectable()\n * class Engine {\n * }\n *\n * \\@Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]);\n * expect(injector.get(Car) instanceof Car).toBe(true);\n * ```\n *\n * This function is slower than the corresponding `fromResolvedProviders`\n * because it needs to resolve the passed-in providers first.\n * See {\\@link ReflectiveInjector#resolve resolve} and\n * {\\@link ReflectiveInjector#fromResolvedProviders fromResolvedProviders}.\n * @param {?} providers\n * @param {?=} parent\n * @return {?}\n */\n function (providers, parent) {\n var /** @type {?} */ ResolvedReflectiveProviders = ReflectiveInjector.resolve(providers);\n return ReflectiveInjector.fromResolvedProviders(ResolvedReflectiveProviders, parent);\n };\n /**\n * Creates an injector from previously resolved providers.\n *\n * This API is the recommended way to construct injectors in performance-sensitive parts.\n *\n * ### Example ([live demo](http://plnkr.co/edit/KrSMci?p=preview))\n *\n * ```typescript\n * @Injectable()\n * class Engine {\n * }\n *\n * @Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var providers = ReflectiveInjector.resolve([Car, Engine]);\n * var injector = ReflectiveInjector.fromResolvedProviders(providers);\n * expect(injector.get(Car) instanceof Car).toBe(true);\n * ```\n * @experimental\n */\n /**\n * Creates an injector from previously resolved providers.\n *\n * This API is the recommended way to construct injectors in performance-sensitive parts.\n *\n * ### Example ([live demo](http://plnkr.co/edit/KrSMci?p=preview))\n *\n * ```typescript\n * \\@Injectable()\n * class Engine {\n * }\n *\n * \\@Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var providers = ReflectiveInjector.resolve([Car, Engine]);\n * var injector = ReflectiveInjector.fromResolvedProviders(providers);\n * expect(injector.get(Car) instanceof Car).toBe(true);\n * ```\n * \\@experimental\n * @param {?} providers\n * @param {?=} parent\n * @return {?}\n */\n ReflectiveInjector.fromResolvedProviders = /**\n * Creates an injector from previously resolved providers.\n *\n * This API is the recommended way to construct injectors in performance-sensitive parts.\n *\n * ### Example ([live demo](http://plnkr.co/edit/KrSMci?p=preview))\n *\n * ```typescript\n * \\@Injectable()\n * class Engine {\n * }\n *\n * \\@Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var providers = ReflectiveInjector.resolve([Car, Engine]);\n * var injector = ReflectiveInjector.fromResolvedProviders(providers);\n * expect(injector.get(Car) instanceof Car).toBe(true);\n * ```\n * \\@experimental\n * @param {?} providers\n * @param {?=} parent\n * @return {?}\n */\n function (providers, parent) {\n return new ReflectiveInjector_(providers, parent);\n };\n return ReflectiveInjector;\n}());\nvar ReflectiveInjector_ = /** @class */ (function () {\n /**\n * Private\n */\n function ReflectiveInjector_(_providers, _parent) {\n /**\n * \\@internal\n */\n this._constructionCounter = 0;\n this._providers = _providers;\n this.parent = _parent || null;\n var /** @type {?} */ len = _providers.length;\n this.keyIds = new Array(len);\n this.objs = new Array(len);\n for (var /** @type {?} */ i = 0; i < len; i++) {\n this.keyIds[i] = _providers[i].key.id;\n this.objs[i] = UNDEFINED;\n }\n }\n /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n ReflectiveInjector_.prototype.get = /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n function (token, notFoundValue) {\n if (notFoundValue === void 0) { notFoundValue = THROW_IF_NOT_FOUND; }\n return this._getByKey(ReflectiveKey.get(token), null, notFoundValue);\n };\n /**\n * @param {?} providers\n * @return {?}\n */\n ReflectiveInjector_.prototype.resolveAndCreateChild = /**\n * @param {?} providers\n * @return {?}\n */\n function (providers) {\n var /** @type {?} */ ResolvedReflectiveProviders = ReflectiveInjector.resolve(providers);\n return this.createChildFromResolved(ResolvedReflectiveProviders);\n };\n /**\n * @param {?} providers\n * @return {?}\n */\n ReflectiveInjector_.prototype.createChildFromResolved = /**\n * @param {?} providers\n * @return {?}\n */\n function (providers) {\n var /** @type {?} */ inj = new ReflectiveInjector_(providers);\n (/** @type {?} */ (inj)).parent = this;\n return inj;\n };\n /**\n * @param {?} provider\n * @return {?}\n */\n ReflectiveInjector_.prototype.resolveAndInstantiate = /**\n * @param {?} provider\n * @return {?}\n */\n function (provider) {\n return this.instantiateResolved(ReflectiveInjector.resolve([provider])[0]);\n };\n /**\n * @param {?} provider\n * @return {?}\n */\n ReflectiveInjector_.prototype.instantiateResolved = /**\n * @param {?} provider\n * @return {?}\n */\n function (provider) {\n return this._instantiateProvider(provider);\n };\n /**\n * @param {?} index\n * @return {?}\n */\n ReflectiveInjector_.prototype.getProviderAtIndex = /**\n * @param {?} index\n * @return {?}\n */\n function (index) {\n if (index < 0 || index >= this._providers.length) {\n throw outOfBoundsError(index);\n }\n return this._providers[index];\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} provider\n * @return {?}\n */\n ReflectiveInjector_.prototype._new = /**\n * \\@internal\n * @param {?} provider\n * @return {?}\n */\n function (provider) {\n if (this._constructionCounter++ > this._getMaxNumberOfObjects()) {\n throw cyclicDependencyError(this, provider.key);\n }\n return this._instantiateProvider(provider);\n };\n /**\n * @return {?}\n */\n ReflectiveInjector_.prototype._getMaxNumberOfObjects = /**\n * @return {?}\n */\n function () { return this.objs.length; };\n /**\n * @param {?} provider\n * @return {?}\n */\n ReflectiveInjector_.prototype._instantiateProvider = /**\n * @param {?} provider\n * @return {?}\n */\n function (provider) {\n if (provider.multiProvider) {\n var /** @type {?} */ res = new Array(provider.resolvedFactories.length);\n for (var /** @type {?} */ i = 0; i < provider.resolvedFactories.length; ++i) {\n res[i] = this._instantiate(provider, provider.resolvedFactories[i]);\n }\n return res;\n }\n else {\n return this._instantiate(provider, provider.resolvedFactories[0]);\n }\n };\n /**\n * @param {?} provider\n * @param {?} ResolvedReflectiveFactory\n * @return {?}\n */\n ReflectiveInjector_.prototype._instantiate = /**\n * @param {?} provider\n * @param {?} ResolvedReflectiveFactory\n * @return {?}\n */\n function (provider, ResolvedReflectiveFactory$$1) {\n var _this = this;\n var /** @type {?} */ factory = ResolvedReflectiveFactory$$1.factory;\n var /** @type {?} */ deps;\n try {\n deps =\n ResolvedReflectiveFactory$$1.dependencies.map(function (dep) { return _this._getByReflectiveDependency(dep); });\n }\n catch (/** @type {?} */ e) {\n if (e.addKey) {\n e.addKey(this, provider.key);\n }\n throw e;\n }\n var /** @type {?} */ obj;\n try {\n obj = factory.apply(void 0, deps);\n }\n catch (/** @type {?} */ e) {\n throw instantiationError(this, e, e.stack, provider.key);\n }\n return obj;\n };\n /**\n * @param {?} dep\n * @return {?}\n */\n ReflectiveInjector_.prototype._getByReflectiveDependency = /**\n * @param {?} dep\n * @return {?}\n */\n function (dep) {\n return this._getByKey(dep.key, dep.visibility, dep.optional ? null : THROW_IF_NOT_FOUND);\n };\n /**\n * @param {?} key\n * @param {?} visibility\n * @param {?} notFoundValue\n * @return {?}\n */\n ReflectiveInjector_.prototype._getByKey = /**\n * @param {?} key\n * @param {?} visibility\n * @param {?} notFoundValue\n * @return {?}\n */\n function (key, visibility, notFoundValue) {\n if (key === ReflectiveInjector_.INJECTOR_KEY) {\n return this;\n }\n if (visibility instanceof Self) {\n return this._getByKeySelf(key, notFoundValue);\n }\n else {\n return this._getByKeyDefault(key, notFoundValue, visibility);\n }\n };\n /**\n * @param {?} keyId\n * @return {?}\n */\n ReflectiveInjector_.prototype._getObjByKeyId = /**\n * @param {?} keyId\n * @return {?}\n */\n function (keyId) {\n for (var /** @type {?} */ i = 0; i < this.keyIds.length; i++) {\n if (this.keyIds[i] === keyId) {\n if (this.objs[i] === UNDEFINED) {\n this.objs[i] = this._new(this._providers[i]);\n }\n return this.objs[i];\n }\n }\n return UNDEFINED;\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} key\n * @param {?} notFoundValue\n * @return {?}\n */\n ReflectiveInjector_.prototype._throwOrNull = /**\n * \\@internal\n * @param {?} key\n * @param {?} notFoundValue\n * @return {?}\n */\n function (key, notFoundValue) {\n if (notFoundValue !== THROW_IF_NOT_FOUND) {\n return notFoundValue;\n }\n else {\n throw noProviderError(this, key);\n }\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} key\n * @param {?} notFoundValue\n * @return {?}\n */\n ReflectiveInjector_.prototype._getByKeySelf = /**\n * \\@internal\n * @param {?} key\n * @param {?} notFoundValue\n * @return {?}\n */\n function (key, notFoundValue) {\n var /** @type {?} */ obj = this._getObjByKeyId(key.id);\n return (obj !== UNDEFINED) ? obj : this._throwOrNull(key, notFoundValue);\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} key\n * @param {?} notFoundValue\n * @param {?} visibility\n * @return {?}\n */\n ReflectiveInjector_.prototype._getByKeyDefault = /**\n * \\@internal\n * @param {?} key\n * @param {?} notFoundValue\n * @param {?} visibility\n * @return {?}\n */\n function (key, notFoundValue, visibility) {\n var /** @type {?} */ inj;\n if (visibility instanceof SkipSelf) {\n inj = this.parent;\n }\n else {\n inj = this;\n }\n while (inj instanceof ReflectiveInjector_) {\n var /** @type {?} */ inj_ = /** @type {?} */ (inj);\n var /** @type {?} */ obj = inj_._getObjByKeyId(key.id);\n if (obj !== UNDEFINED)\n return obj;\n inj = inj_.parent;\n }\n if (inj !== null) {\n return inj.get(key.token, notFoundValue);\n }\n else {\n return this._throwOrNull(key, notFoundValue);\n }\n };\n Object.defineProperty(ReflectiveInjector_.prototype, \"displayName\", {\n get: /**\n * @return {?}\n */\n function () {\n var /** @type {?} */ providers = _mapProviders(this, function (b) { return ' \"' + b.key.displayName + '\" '; })\n .join(', ');\n return \"ReflectiveInjector(providers: [\" + providers + \"])\";\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n ReflectiveInjector_.prototype.toString = /**\n * @return {?}\n */\n function () { return this.displayName; };\n ReflectiveInjector_.INJECTOR_KEY = ReflectiveKey.get(Injector);\n return ReflectiveInjector_;\n}());\n/**\n * @param {?} injector\n * @param {?} fn\n * @return {?}\n */\nfunction _mapProviders(injector, fn) {\n var /** @type {?} */ res = new Array(injector._providers.length);\n for (var /** @type {?} */ i = 0; i < injector._providers.length; ++i) {\n res[i] = fn(injector.getProviderAtIndex(i));\n }\n return res;\n}\n\n/**\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 * The `di` module provides dependency injection container services.\n */\n\n/**\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 * Determine if the argument is shaped like a Promise\n * @param {?} obj\n * @return {?}\n */\nfunction isPromise(obj) {\n // allow any Promise/A+ compliant thenable.\n // It's up to the caller to ensure that obj.then conforms to the spec\n return !!obj && typeof obj.then === 'function';\n}\n/**\n * Determine if the argument is an Observable\n * @param {?} obj\n * @return {?}\n */\nfunction isObservable(obj) {\n // TODO use Symbol.observable when https://github.com/ReactiveX/rxjs/issues/2415 will be resolved\n return !!obj && typeof obj.subscribe === 'function';\n}\n\n/**\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 * A function that will be executed when an application is initialized.\n * \\@experimental\n */\nvar APP_INITIALIZER = new InjectionToken('Application Initializer');\n/**\n * A class that reflects the state of running {\\@link APP_INITIALIZER}s.\n *\n * \\@experimental\n */\nvar ApplicationInitStatus = /** @class */ (function () {\n function ApplicationInitStatus(appInits) {\n var _this = this;\n this.appInits = appInits;\n this.initialized = false;\n this.done = false;\n this.donePromise = new Promise(function (res, rej) {\n _this.resolve = res;\n _this.reject = rej;\n });\n }\n /** @internal */\n /**\n * \\@internal\n * @return {?}\n */\n ApplicationInitStatus.prototype.runInitializers = /**\n * \\@internal\n * @return {?}\n */\n function () {\n var _this = this;\n if (this.initialized) {\n return;\n }\n var /** @type {?} */ asyncInitPromises = [];\n var /** @type {?} */ complete = function () {\n (/** @type {?} */ (_this)).done = true;\n _this.resolve();\n };\n if (this.appInits) {\n for (var /** @type {?} */ i = 0; i < this.appInits.length; i++) {\n var /** @type {?} */ initResult = this.appInits[i]();\n if (isPromise(initResult)) {\n asyncInitPromises.push(initResult);\n }\n }\n }\n Promise.all(asyncInitPromises).then(function () { complete(); }).catch(function (e) { _this.reject(e); });\n if (asyncInitPromises.length === 0) {\n complete();\n }\n this.initialized = true;\n };\n ApplicationInitStatus.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n ApplicationInitStatus.ctorParameters = function () { return [\n { type: Array, decorators: [{ type: Inject, args: [APP_INITIALIZER,] }, { type: Optional },] },\n ]; };\n return ApplicationInitStatus;\n}());\n\n/**\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 * A DI Token representing a unique string id assigned to the application by Angular and used\n * primarily for prefixing application attributes and CSS styles when\n * {\\@link ViewEncapsulation#Emulated ViewEncapsulation.Emulated} is being used.\n *\n * If you need to avoid randomly generated value to be used as an application id, you can provide\n * a custom value via a DI provider <!-- TODO: provider --> configuring the root {\\@link Injector}\n * using this token.\n * \\@experimental\n */\nvar APP_ID = new InjectionToken('AppId');\n/**\n * @return {?}\n */\nfunction _appIdRandomProviderFactory() {\n return \"\" + _randomChar() + _randomChar() + _randomChar();\n}\n/**\n * Providers that will generate a random APP_ID_TOKEN.\n * \\@experimental\n */\nvar APP_ID_RANDOM_PROVIDER = {\n provide: APP_ID,\n useFactory: _appIdRandomProviderFactory,\n deps: /** @type {?} */ ([]),\n};\n/**\n * @return {?}\n */\nfunction _randomChar() {\n return String.fromCharCode(97 + Math.floor(Math.random() * 25));\n}\n/**\n * A function that will be executed when a platform is initialized.\n * \\@experimental\n */\nvar PLATFORM_INITIALIZER = new InjectionToken('Platform Initializer');\n/**\n * A token that indicates an opaque platform id.\n * \\@experimental\n */\nvar PLATFORM_ID = new InjectionToken('Platform ID');\n/**\n * All callbacks provided via this token will be called for every component that is bootstrapped.\n * Signature of the callback:\n *\n * `(componentRef: ComponentRef) => void`.\n *\n * \\@experimental\n */\nvar APP_BOOTSTRAP_LISTENER = new InjectionToken('appBootstrapListener');\n/**\n * A token which indicates the root directory of the application\n * \\@experimental\n */\nvar PACKAGE_ROOT_URL = new InjectionToken('Application Packages Root URL');\n\n/**\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 */\nvar Console = /** @class */ (function () {\n function Console() {\n }\n /**\n * @param {?} message\n * @return {?}\n */\n Console.prototype.log = /**\n * @param {?} message\n * @return {?}\n */\n function (message) {\n // tslint:disable-next-line:no-console\n console.log(message);\n };\n // Note: for reporting errors use `DOM.logError()` as it is platform specific\n /**\n * @param {?} message\n * @return {?}\n */\n Console.prototype.warn = /**\n * @param {?} message\n * @return {?}\n */\n function (message) {\n // tslint:disable-next-line:no-console\n console.warn(message);\n };\n Console.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n Console.ctorParameters = function () { return []; };\n return Console;\n}());\n\n/**\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 * Combination of NgModuleFactory and ComponentFactorys.\n *\n * \\@experimental\n */\nvar ModuleWithComponentFactories = /** @class */ (function () {\n function ModuleWithComponentFactories(ngModuleFactory, componentFactories) {\n this.ngModuleFactory = ngModuleFactory;\n this.componentFactories = componentFactories;\n }\n return ModuleWithComponentFactories;\n}());\n/**\n * @return {?}\n */\nfunction _throwError() {\n throw new Error(\"Runtime compiler is not loaded\");\n}\n/**\n * Low-level service for running the angular compiler during runtime\n * to create {\\@link ComponentFactory}s, which\n * can later be used to create and render a Component instance.\n *\n * Each `\\@NgModule` provides an own `Compiler` to its injector,\n * that will use the directives/pipes of the ng module for compilation\n * of components.\n * \\@stable\n */\nvar Compiler = /** @class */ (function () {\n function Compiler() {\n }\n /**\n * Compiles the given NgModule and all of its components. All templates of the components listed\n * in `entryComponents` have to be inlined.\n */\n /**\n * Compiles the given NgModule and all of its components. All templates of the components listed\n * in `entryComponents` have to be inlined.\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n Compiler.prototype.compileModuleSync = /**\n * Compiles the given NgModule and all of its components. All templates of the components listed\n * in `entryComponents` have to be inlined.\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n function (moduleType) { throw _throwError(); };\n /**\n * Compiles the given NgModule and all of its components\n */\n /**\n * Compiles the given NgModule and all of its components\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n Compiler.prototype.compileModuleAsync = /**\n * Compiles the given NgModule and all of its components\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n function (moduleType) { throw _throwError(); };\n /**\n * Same as {@link #compileModuleSync} but also creates ComponentFactories for all components.\n */\n /**\n * Same as {\\@link #compileModuleSync} but also creates ComponentFactories for all components.\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n Compiler.prototype.compileModuleAndAllComponentsSync = /**\n * Same as {\\@link #compileModuleSync} but also creates ComponentFactories for all components.\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n function (moduleType) {\n throw _throwError();\n };\n /**\n * Same as {@link #compileModuleAsync} but also creates ComponentFactories for all components.\n */\n /**\n * Same as {\\@link #compileModuleAsync} but also creates ComponentFactories for all components.\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n Compiler.prototype.compileModuleAndAllComponentsAsync = /**\n * Same as {\\@link #compileModuleAsync} but also creates ComponentFactories for all components.\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n function (moduleType) {\n throw _throwError();\n };\n /**\n * Clears all caches.\n */\n /**\n * Clears all caches.\n * @return {?}\n */\n Compiler.prototype.clearCache = /**\n * Clears all caches.\n * @return {?}\n */\n function () { };\n /**\n * Clears the cache for the given component/ngModule.\n */\n /**\n * Clears the cache for the given component/ngModule.\n * @param {?} type\n * @return {?}\n */\n Compiler.prototype.clearCacheFor = /**\n * Clears the cache for the given component/ngModule.\n * @param {?} type\n * @return {?}\n */\n function (type) { };\n Compiler.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n Compiler.ctorParameters = function () { return []; };\n return Compiler;\n}());\n/**\n * Token to provide CompilerOptions in the platform injector.\n *\n * \\@experimental\n */\nvar COMPILER_OPTIONS = new InjectionToken('compilerOptions');\n/**\n * A factory for creating a Compiler\n *\n * \\@experimental\n * @abstract\n */\nvar CompilerFactory = /** @class */ (function () {\n function CompilerFactory() {\n }\n return CompilerFactory;\n}());\n\n/**\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 * Represents an instance of a Component created via a {\\@link ComponentFactory}.\n *\n * `ComponentRef` provides access to the Component Instance as well other objects related to this\n * Component Instance and allows you to destroy the Component Instance via the {\\@link #destroy}\n * method.\n * \\@stable\n * @abstract\n */\nvar ComponentRef = /** @class */ (function () {\n function ComponentRef() {\n }\n return ComponentRef;\n}());\n/**\n * \\@stable\n * @abstract\n */\nvar ComponentFactory = /** @class */ (function () {\n function ComponentFactory() {\n }\n return ComponentFactory;\n}());\n\n/**\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 * @param {?} component\n * @return {?}\n */\nfunction noComponentFactoryError(component) {\n var /** @type {?} */ error = Error(\"No component factory found for \" + stringify(component) + \". Did you add it to @NgModule.entryComponents?\");\n (/** @type {?} */ (error))[ERROR_COMPONENT] = component;\n return error;\n}\nvar ERROR_COMPONENT = 'ngComponent';\n/**\n * @param {?} error\n * @return {?}\n */\n\nvar _NullComponentFactoryResolver = /** @class */ (function () {\n function _NullComponentFactoryResolver() {\n }\n /**\n * @template T\n * @param {?} component\n * @return {?}\n */\n _NullComponentFactoryResolver.prototype.resolveComponentFactory = /**\n * @template T\n * @param {?} component\n * @return {?}\n */\n function (component) {\n throw noComponentFactoryError(component);\n };\n return _NullComponentFactoryResolver;\n}());\n/**\n * \\@stable\n * @abstract\n */\nvar ComponentFactoryResolver = /** @class */ (function () {\n function ComponentFactoryResolver() {\n }\n ComponentFactoryResolver.NULL = new _NullComponentFactoryResolver();\n return ComponentFactoryResolver;\n}());\nvar CodegenComponentFactoryResolver = /** @class */ (function () {\n function CodegenComponentFactoryResolver(factories, _parent, _ngModule) {\n this._parent = _parent;\n this._ngModule = _ngModule;\n this._factories = new Map();\n for (var /** @type {?} */ i = 0; i < factories.length; i++) {\n var /** @type {?} */ factory = factories[i];\n this._factories.set(factory.componentType, factory);\n }\n }\n /**\n * @template T\n * @param {?} component\n * @return {?}\n */\n CodegenComponentFactoryResolver.prototype.resolveComponentFactory = /**\n * @template T\n * @param {?} component\n * @return {?}\n */\n function (component) {\n var /** @type {?} */ factory = this._factories.get(component);\n if (!factory && this._parent) {\n factory = this._parent.resolveComponentFactory(component);\n }\n if (!factory) {\n throw noComponentFactoryError(component);\n }\n return new ComponentFactoryBoundToModule(factory, this._ngModule);\n };\n return CodegenComponentFactoryResolver;\n}());\nvar ComponentFactoryBoundToModule = /** @class */ (function (_super) {\n __extends(ComponentFactoryBoundToModule, _super);\n function ComponentFactoryBoundToModule(factory, ngModule) {\n var _this = _super.call(this) || this;\n _this.factory = factory;\n _this.ngModule = ngModule;\n _this.selector = factory.selector;\n _this.componentType = factory.componentType;\n _this.ngContentSelectors = factory.ngContentSelectors;\n _this.inputs = factory.inputs;\n _this.outputs = factory.outputs;\n return _this;\n }\n /**\n * @param {?} injector\n * @param {?=} projectableNodes\n * @param {?=} rootSelectorOrNode\n * @param {?=} ngModule\n * @return {?}\n */\n ComponentFactoryBoundToModule.prototype.create = /**\n * @param {?} injector\n * @param {?=} projectableNodes\n * @param {?=} rootSelectorOrNode\n * @param {?=} ngModule\n * @return {?}\n */\n function (injector, projectableNodes, rootSelectorOrNode, ngModule) {\n return this.factory.create(injector, projectableNodes, rootSelectorOrNode, ngModule || this.ngModule);\n };\n return ComponentFactoryBoundToModule;\n}(ComponentFactory));\n\n/**\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 * Represents an instance of an NgModule created via a {\\@link NgModuleFactory}.\n *\n * `NgModuleRef` provides access to the NgModule Instance as well other objects related to this\n * NgModule Instance.\n *\n * \\@stable\n * @abstract\n */\nvar NgModuleRef = /** @class */ (function () {\n function NgModuleRef() {\n }\n return NgModuleRef;\n}());\n/**\n * @record\n */\n\n/**\n * \\@experimental\n * @abstract\n */\nvar NgModuleFactory = /** @class */ (function () {\n function NgModuleFactory() {\n }\n return NgModuleFactory;\n}());\n\n/**\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 * A scope function for the Web Tracing Framework (WTF).\n *\n * \\@experimental\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\nvar trace;\nvar events;\n/**\n * @return {?}\n */\nfunction detectWTF() {\n var /** @type {?} */ wtf = (/** @type {?} */ (_global /** TODO #9100 */) /** TODO #9100 */)['wtf'];\n if (wtf) {\n trace = wtf['trace'];\n if (trace) {\n events = trace['events'];\n return true;\n }\n }\n return false;\n}\n/**\n * @param {?} signature\n * @param {?=} flags\n * @return {?}\n */\nfunction createScope(signature, flags) {\n if (flags === void 0) { flags = null; }\n return events.createScope(signature, flags);\n}\n/**\n * @template T\n * @param {?} scope\n * @param {?=} returnValue\n * @return {?}\n */\nfunction leave(scope, returnValue) {\n trace.leaveScope(scope, returnValue);\n return returnValue;\n}\n/**\n * @param {?} rangeType\n * @param {?} action\n * @return {?}\n */\nfunction startTimeRange(rangeType, action) {\n return trace.beginTimeRange(rangeType, action);\n}\n/**\n * @param {?} range\n * @return {?}\n */\nfunction endTimeRange(range) {\n trace.endTimeRange(range);\n}\n\n/**\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 * True if WTF is enabled.\n */\nvar wtfEnabled = detectWTF();\n/**\n * @param {?=} arg0\n * @param {?=} arg1\n * @return {?}\n */\nfunction noopScope(arg0, arg1) {\n return null;\n}\n/**\n * Create trace scope.\n *\n * Scopes must be strictly nested and are analogous to stack frames, but\n * do not have to follow the stack frames. Instead it is recommended that they follow logical\n * nesting. You may want to use\n * [Event\n * Signatures](http://google.github.io/tracing-framework/instrumenting-code.html#custom-events)\n * as they are defined in WTF.\n *\n * Used to mark scope entry. The return value is used to leave the scope.\n *\n * var myScope = wtfCreateScope('MyClass#myMethod(ascii someVal)');\n *\n * someMethod() {\n * var s = myScope('Foo'); // 'Foo' gets stored in tracing UI\n * // DO SOME WORK HERE\n * return wtfLeave(s, 123); // Return value 123\n * }\n *\n * Note, adding try-finally block around the work to ensure that `wtfLeave` gets called can\n * negatively impact the performance of your application. For this reason we recommend that\n * you don't add them to ensure that `wtfLeave` gets called. In production `wtfLeave` is a noop and\n * so try-finally block has no value. When debugging perf issues, skipping `wtfLeave`, do to\n * exception, will produce incorrect trace, but presence of exception signifies logic error which\n * needs to be fixed before the app should be profiled. Add try-finally only when you expect that\n * an exception is expected during normal execution while profiling.\n *\n * \\@experimental\n */\nvar wtfCreateScope = wtfEnabled ? createScope : function (signature, flags) { return noopScope; };\n/**\n * Used to mark end of Scope.\n *\n * - `scope` to end.\n * - `returnValue` (optional) to be passed to the WTF.\n *\n * Returns the `returnValue for easy chaining.\n * \\@experimental\n */\nvar wtfLeave = wtfEnabled ? leave : function (s, r) { return r; };\n/**\n * Used to mark Async start. Async are similar to scope but they don't have to be strictly nested.\n * The return value is used in the call to [endAsync]. Async ranges only work if WTF has been\n * enabled.\n *\n * someMethod() {\n * var s = wtfStartTimeRange('HTTP:GET', 'some.url');\n * var future = new Future.delay(5).then((_) {\n * wtfEndTimeRange(s);\n * });\n * }\n * \\@experimental\n */\nvar wtfStartTimeRange = wtfEnabled ? startTimeRange : function (rangeType, action) { return null; };\n/**\n * Ends a async time range operation.\n * [range] is the return value from [wtfStartTimeRange] Async ranges only work if WTF has been\n * enabled.\n * \\@experimental\n */\nvar wtfEndTimeRange = wtfEnabled ? endTimeRange : function (r) { return null; };\n\n/**\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 * Use by directives and components to emit custom Events.\n *\n * ### Examples\n *\n * In the following example, `Zippy` alternatively emits `open` and `close` events when its\n * title gets clicked:\n *\n * ```\n * \\@Component({\n * selector: 'zippy',\n * template: `\n * <div class=\"zippy\">\n * <div (click)=\"toggle()\">Toggle</div>\n * <div [hidden]=\"!visible\">\n * <ng-content></ng-content>\n * </div>\n * </div>`})\n * export class Zippy {\n * visible: boolean = true;\n * \\@Output() open: EventEmitter<any> = new EventEmitter();\n * \\@Output() close: EventEmitter<any> = new EventEmitter();\n *\n * toggle() {\n * this.visible = !this.visible;\n * if (this.visible) {\n * this.open.emit(null);\n * } else {\n * this.close.emit(null);\n * }\n * }\n * }\n * ```\n *\n * The events payload can be accessed by the parameter `$event` on the components output event\n * handler:\n *\n * ```\n * <zippy (open)=\"onOpen($event)\" (close)=\"onClose($event)\"></zippy>\n * ```\n *\n * Uses Rx.Observable but provides an adapter to make it work as specified here:\n * https://github.com/jhusain/observable-spec\n *\n * Once a reference implementation of the spec is available, switch to it.\n * \\@stable\n */\nvar EventEmitter = /** @class */ (function (_super) {\n __extends(EventEmitter, _super);\n /**\n * Creates an instance of {@link EventEmitter}, which depending on `isAsync`,\n * delivers events synchronously or asynchronously.\n *\n * @param isAsync By default, events are delivered synchronously (default value: `false`).\n * Set to `true` for asynchronous event delivery.\n */\n function EventEmitter(isAsync) {\n if (isAsync === void 0) { isAsync = false; }\n var _this = _super.call(this) || this;\n _this.__isAsync = isAsync;\n return _this;\n }\n /**\n * @param {?=} value\n * @return {?}\n */\n EventEmitter.prototype.emit = /**\n * @param {?=} value\n * @return {?}\n */\n function (value) { _super.prototype.next.call(this, value); };\n /**\n * @param {?=} generatorOrNext\n * @param {?=} error\n * @param {?=} complete\n * @return {?}\n */\n EventEmitter.prototype.subscribe = /**\n * @param {?=} generatorOrNext\n * @param {?=} error\n * @param {?=} complete\n * @return {?}\n */\n function (generatorOrNext, error, complete) {\n var /** @type {?} */ schedulerFn;\n var /** @type {?} */ errorFn = function (err) { return null; };\n var /** @type {?} */ completeFn = function () { return null; };\n if (generatorOrNext && typeof generatorOrNext === 'object') {\n schedulerFn = this.__isAsync ? function (value) {\n setTimeout(function () { return generatorOrNext.next(value); });\n } : function (value) { generatorOrNext.next(value); };\n if (generatorOrNext.error) {\n errorFn = this.__isAsync ? function (err) { setTimeout(function () { return generatorOrNext.error(err); }); } :\n function (err) { generatorOrNext.error(err); };\n }\n if (generatorOrNext.complete) {\n completeFn = this.__isAsync ? function () { setTimeout(function () { return generatorOrNext.complete(); }); } :\n function () { generatorOrNext.complete(); };\n }\n }\n else {\n schedulerFn = this.__isAsync ? function (value) { setTimeout(function () { return generatorOrNext(value); }); } :\n function (value) { generatorOrNext(value); };\n if (error) {\n errorFn =\n this.__isAsync ? function (err) { setTimeout(function () { return error(err); }); } : function (err) { error(err); };\n }\n if (complete) {\n completeFn =\n this.__isAsync ? function () { setTimeout(function () { return complete(); }); } : function () { complete(); };\n }\n }\n var /** @type {?} */ sink = _super.prototype.subscribe.call(this, schedulerFn, errorFn, completeFn);\n if (generatorOrNext instanceof rxjs_Subscription.Subscription) {\n generatorOrNext.add(sink);\n }\n return sink;\n };\n return EventEmitter;\n}(rxjs_Subject.Subject));\n\n/**\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 * An injectable service for executing work inside or outside of the Angular zone.\n *\n * The most common use of this service is to optimize performance when starting a work consisting of\n * one or more asynchronous tasks that don't require UI updates or error handling to be handled by\n * Angular. Such tasks can be kicked off via {\\@link #runOutsideAngular} and if needed, these tasks\n * can reenter the Angular zone via {\\@link #run}.\n *\n * <!-- TODO: add/fix links to:\n * - docs explaining zones and the use of zones in Angular and change-detection\n * - link to runOutsideAngular/run (throughout this file!)\n * -->\n *\n * ### Example\n *\n * ```\n * import {Component, NgZone} from '\\@angular/core';\n * import {NgIf} from '\\@angular/common';\n *\n * \\@Component({\n * selector: 'ng-zone-demo',\n * template: `\n * <h2>Demo: NgZone</h2>\n *\n * <p>Progress: {{progress}}%</p>\n * <p *ngIf=\"progress >= 100\">Done processing {{label}} of Angular zone!</p>\n *\n * <button (click)=\"processWithinAngularZone()\">Process within Angular zone</button>\n * <button (click)=\"processOutsideOfAngularZone()\">Process outside of Angular zone</button>\n * `,\n * })\n * export class NgZoneDemo {\n * progress: number = 0;\n * label: string;\n *\n * constructor(private _ngZone: NgZone) {}\n *\n * // Loop inside the Angular zone\n * // so the UI DOES refresh after each setTimeout cycle\n * processWithinAngularZone() {\n * this.label = 'inside';\n * this.progress = 0;\n * this._increaseProgress(() => console.log('Inside Done!'));\n * }\n *\n * // Loop outside of the Angular zone\n * // so the UI DOES NOT refresh after each setTimeout cycle\n * processOutsideOfAngularZone() {\n * this.label = 'outside';\n * this.progress = 0;\n * this._ngZone.runOutsideAngular(() => {\n * this._increaseProgress(() => {\n * // reenter the Angular zone and display done\n * this._ngZone.run(() => { console.log('Outside Done!'); });\n * });\n * });\n * }\n *\n * _increaseProgress(doneCallback: () => void) {\n * this.progress += 1;\n * console.log(`Current progress: ${this.progress}%`);\n *\n * if (this.progress < 100) {\n * window.setTimeout(() => this._increaseProgress(doneCallback), 10);\n * } else {\n * doneCallback();\n * }\n * }\n * }\n * ```\n *\n * \\@experimental\n */\nvar NgZone = /** @class */ (function () {\n function NgZone(_a) {\n var _b = _a.enableLongStackTrace, enableLongStackTrace = _b === void 0 ? false : _b;\n this.hasPendingMicrotasks = false;\n this.hasPendingMacrotasks = false;\n /**\n * Whether there are no outstanding microtasks or macrotasks.\n */\n this.isStable = true;\n /**\n * Notifies when code enters Angular Zone. This gets fired first on VM Turn.\n */\n this.onUnstable = new EventEmitter(false);\n /**\n * Notifies when there is no more microtasks enqueued in the current VM Turn.\n * This is a hint for Angular to do change detection, which may enqueue more microtasks.\n * For this reason this event can fire multiple times per VM Turn.\n */\n this.onMicrotaskEmpty = new EventEmitter(false);\n /**\n * Notifies when the last `onMicrotaskEmpty` has run and there are no more microtasks, which\n * implies we are about to relinquish VM turn.\n * This event gets called just once.\n */\n this.onStable = new EventEmitter(false);\n /**\n * Notifies that an error has been delivered.\n */\n this.onError = new EventEmitter(false);\n if (typeof Zone == 'undefined') {\n throw new Error(\"In this configuration Angular requires Zone.js\");\n }\n Zone.assertZonePatched();\n var /** @type {?} */ self = /** @type {?} */ ((this));\n self._nesting = 0;\n self._outer = self._inner = Zone.current;\n if ((/** @type {?} */ (Zone))['wtfZoneSpec']) {\n self._inner = self._inner.fork((/** @type {?} */ (Zone))['wtfZoneSpec']);\n }\n if (enableLongStackTrace && (/** @type {?} */ (Zone))['longStackTraceZoneSpec']) {\n self._inner = self._inner.fork((/** @type {?} */ (Zone))['longStackTraceZoneSpec']);\n }\n forkInnerZoneWithAngularBehavior(self);\n }\n /**\n * @return {?}\n */\n NgZone.isInAngularZone = /**\n * @return {?}\n */\n function () { return Zone.current.get('isAngularZone') === true; };\n /**\n * @return {?}\n */\n NgZone.assertInAngularZone = /**\n * @return {?}\n */\n function () {\n if (!NgZone.isInAngularZone()) {\n throw new Error('Expected to be in Angular Zone, but it is not!');\n }\n };\n /**\n * @return {?}\n */\n NgZone.assertNotInAngularZone = /**\n * @return {?}\n */\n function () {\n if (NgZone.isInAngularZone()) {\n throw new Error('Expected to not be in Angular Zone, but it is!');\n }\n };\n /**\n * Executes the `fn` function synchronously within the Angular zone and returns value returned by\n * the function.\n *\n * Running functions via `run` allows you to reenter Angular zone from a task that was executed\n * outside of the Angular zone (typically started via {@link #runOutsideAngular}).\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * within the Angular zone.\n *\n * If a synchronous error happens it will be rethrown and not reported via `onError`.\n */\n /**\n * Executes the `fn` function synchronously within the Angular zone and returns value returned by\n * the function.\n *\n * Running functions via `run` allows you to reenter Angular zone from a task that was executed\n * outside of the Angular zone (typically started via {\\@link #runOutsideAngular}).\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * within the Angular zone.\n *\n * If a synchronous error happens it will be rethrown and not reported via `onError`.\n * @template T\n * @param {?} fn\n * @param {?=} applyThis\n * @param {?=} applyArgs\n * @return {?}\n */\n NgZone.prototype.run = /**\n * Executes the `fn` function synchronously within the Angular zone and returns value returned by\n * the function.\n *\n * Running functions via `run` allows you to reenter Angular zone from a task that was executed\n * outside of the Angular zone (typically started via {\\@link #runOutsideAngular}).\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * within the Angular zone.\n *\n * If a synchronous error happens it will be rethrown and not reported via `onError`.\n * @template T\n * @param {?} fn\n * @param {?=} applyThis\n * @param {?=} applyArgs\n * @return {?}\n */\n function (fn, applyThis, applyArgs) {\n return /** @type {?} */ ((/** @type {?} */ ((this)))._inner.run(fn, applyThis, applyArgs));\n };\n /**\n * Executes the `fn` function synchronously within the Angular zone as a task and returns value\n * returned by the function.\n *\n * Running functions via `run` allows you to reenter Angular zone from a task that was executed\n * outside of the Angular zone (typically started via {@link #runOutsideAngular}).\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * within the Angular zone.\n *\n * If a synchronous error happens it will be rethrown and not reported via `onError`.\n */\n /**\n * Executes the `fn` function synchronously within the Angular zone as a task and returns value\n * returned by the function.\n *\n * Running functions via `run` allows you to reenter Angular zone from a task that was executed\n * outside of the Angular zone (typically started via {\\@link #runOutsideAngular}).\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * within the Angular zone.\n *\n * If a synchronous error happens it will be rethrown and not reported via `onError`.\n * @template T\n * @param {?} fn\n * @param {?=} applyThis\n * @param {?=} applyArgs\n * @param {?=} name\n * @return {?}\n */\n NgZone.prototype.runTask = /**\n * Executes the `fn` function synchronously within the Angular zone as a task and returns value\n * returned by the function.\n *\n * Running functions via `run` allows you to reenter Angular zone from a task that was executed\n * outside of the Angular zone (typically started via {\\@link #runOutsideAngular}).\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * within the Angular zone.\n *\n * If a synchronous error happens it will be rethrown and not reported via `onError`.\n * @template T\n * @param {?} fn\n * @param {?=} applyThis\n * @param {?=} applyArgs\n * @param {?=} name\n * @return {?}\n */\n function (fn, applyThis, applyArgs, name) {\n var /** @type {?} */ zone = (/** @type {?} */ ((this)))._inner;\n var /** @type {?} */ task = zone.scheduleEventTask('NgZoneEvent: ' + name, fn, EMPTY_PAYLOAD, noop, noop);\n try {\n return /** @type {?} */ (zone.runTask(task, applyThis, applyArgs));\n }\n finally {\n zone.cancelTask(task);\n }\n };\n /**\n * Same as `run`, except that synchronous errors are caught and forwarded via `onError` and not\n * rethrown.\n */\n /**\n * Same as `run`, except that synchronous errors are caught and forwarded via `onError` and not\n * rethrown.\n * @template T\n * @param {?} fn\n * @param {?=} applyThis\n * @param {?=} applyArgs\n * @return {?}\n */\n NgZone.prototype.runGuarded = /**\n * Same as `run`, except that synchronous errors are caught and forwarded via `onError` and not\n * rethrown.\n * @template T\n * @param {?} fn\n * @param {?=} applyThis\n * @param {?=} applyArgs\n * @return {?}\n */\n function (fn, applyThis, applyArgs) {\n return /** @type {?} */ ((/** @type {?} */ ((this)))._inner.runGuarded(fn, applyThis, applyArgs));\n };\n /**\n * Executes the `fn` function synchronously in Angular's parent zone and returns value returned by\n * the function.\n *\n * Running functions via {@link #runOutsideAngular} allows you to escape Angular's zone and do\n * work that\n * doesn't trigger Angular change-detection or is subject to Angular's error handling.\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * outside of the Angular zone.\n *\n * Use {@link #run} to reenter the Angular zone and do work that updates the application model.\n */\n /**\n * Executes the `fn` function synchronously in Angular's parent zone and returns value returned by\n * the function.\n *\n * Running functions via {\\@link #runOutsideAngular} allows you to escape Angular's zone and do\n * work that\n * doesn't trigger Angular change-detection or is subject to Angular's error handling.\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * outside of the Angular zone.\n *\n * Use {\\@link #run} to reenter the Angular zone and do work that updates the application model.\n * @template T\n * @param {?} fn\n * @return {?}\n */\n NgZone.prototype.runOutsideAngular = /**\n * Executes the `fn` function synchronously in Angular's parent zone and returns value returned by\n * the function.\n *\n * Running functions via {\\@link #runOutsideAngular} allows you to escape Angular's zone and do\n * work that\n * doesn't trigger Angular change-detection or is subject to Angular's error handling.\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * outside of the Angular zone.\n *\n * Use {\\@link #run} to reenter the Angular zone and do work that updates the application model.\n * @template T\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n return /** @type {?} */ ((/** @type {?} */ ((this)))._outer.run(fn));\n };\n return NgZone;\n}());\n/**\n * @return {?}\n */\nfunction noop() { }\nvar EMPTY_PAYLOAD = {};\n/**\n * @param {?} zone\n * @return {?}\n */\nfunction checkStable(zone) {\n if (zone._nesting == 0 && !zone.hasPendingMicrotasks && !zone.isStable) {\n try {\n zone._nesting++;\n zone.onMicrotaskEmpty.emit(null);\n }\n finally {\n zone._nesting--;\n if (!zone.hasPendingMicrotasks) {\n try {\n zone.runOutsideAngular(function () { return zone.onStable.emit(null); });\n }\n finally {\n zone.isStable = true;\n }\n }\n }\n }\n}\n/**\n * @param {?} zone\n * @return {?}\n */\nfunction forkInnerZoneWithAngularBehavior(zone) {\n zone._inner = zone._inner.fork({\n name: 'angular',\n properties: /** @type {?} */ ({ 'isAngularZone': true }),\n onInvokeTask: function (delegate, current, target, task, applyThis, applyArgs) {\n try {\n onEnter(zone);\n return delegate.invokeTask(target, task, applyThis, applyArgs);\n }\n finally {\n onLeave(zone);\n }\n },\n onInvoke: function (delegate, current, target, callback, applyThis, applyArgs, source) {\n try {\n onEnter(zone);\n return delegate.invoke(target, callback, applyThis, applyArgs, source);\n }\n finally {\n onLeave(zone);\n }\n },\n onHasTask: function (delegate, current, target, hasTaskState) {\n delegate.hasTask(target, hasTaskState);\n if (current === target) {\n // We are only interested in hasTask events which originate from our zone\n // (A child hasTask event is not interesting to us)\n if (hasTaskState.change == 'microTask') {\n zone.hasPendingMicrotasks = hasTaskState.microTask;\n checkStable(zone);\n }\n else if (hasTaskState.change == 'macroTask') {\n zone.hasPendingMacrotasks = hasTaskState.macroTask;\n }\n }\n },\n onHandleError: function (delegate, current, target, error) {\n delegate.handleError(target, error);\n zone.runOutsideAngular(function () { return zone.onError.emit(error); });\n return false;\n }\n });\n}\n/**\n * @param {?} zone\n * @return {?}\n */\nfunction onEnter(zone) {\n zone._nesting++;\n if (zone.isStable) {\n zone.isStable = false;\n zone.onUnstable.emit(null);\n }\n}\n/**\n * @param {?} zone\n * @return {?}\n */\nfunction onLeave(zone) {\n zone._nesting--;\n checkStable(zone);\n}\n/**\n * Provides a noop implementation of `NgZone` which does nothing. This zone requires explicit calls\n * to framework to perform rendering.\n */\nvar NoopNgZone = /** @class */ (function () {\n function NoopNgZone() {\n this.hasPendingMicrotasks = false;\n this.hasPendingMacrotasks = false;\n this.isStable = true;\n this.onUnstable = new EventEmitter();\n this.onMicrotaskEmpty = new EventEmitter();\n this.onStable = new EventEmitter();\n this.onError = new EventEmitter();\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n NoopNgZone.prototype.run = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { return fn(); };\n /**\n * @param {?} fn\n * @return {?}\n */\n NoopNgZone.prototype.runGuarded = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { return fn(); };\n /**\n * @param {?} fn\n * @return {?}\n */\n NoopNgZone.prototype.runOutsideAngular = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { return fn(); };\n /**\n * @template T\n * @param {?} fn\n * @return {?}\n */\n NoopNgZone.prototype.runTask = /**\n * @template T\n * @param {?} fn\n * @return {?}\n */\n function (fn) { return fn(); };\n return NoopNgZone;\n}());\n\n/**\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 * The Testability service provides testing hooks that can be accessed from\n * the browser and by services such as Protractor. Each bootstrapped Angular\n * application on the page will have an instance of Testability.\n * \\@experimental\n */\nvar Testability = /** @class */ (function () {\n function Testability(_ngZone) {\n this._ngZone = _ngZone;\n /**\n * \\@internal\n */\n this._pendingCount = 0;\n /**\n * \\@internal\n */\n this._isZoneStable = true;\n /**\n * Whether any work was done since the last 'whenStable' callback. This is\n * useful to detect if this could have potentially destabilized another\n * component while it is stabilizing.\n * \\@internal\n */\n this._didWork = false;\n /**\n * \\@internal\n */\n this._callbacks = [];\n this._watchAngularEvents();\n }\n /** @internal */\n /**\n * \\@internal\n * @return {?}\n */\n Testability.prototype._watchAngularEvents = /**\n * \\@internal\n * @return {?}\n */\n function () {\n var _this = this;\n this._ngZone.onUnstable.subscribe({\n next: function () {\n _this._didWork = true;\n _this._isZoneStable = false;\n }\n });\n this._ngZone.runOutsideAngular(function () {\n _this._ngZone.onStable.subscribe({\n next: function () {\n NgZone.assertNotInAngularZone();\n scheduleMicroTask(function () {\n _this._isZoneStable = true;\n _this._runCallbacksIfReady();\n });\n }\n });\n });\n };\n /**\n * Increases the number of pending request\n */\n /**\n * Increases the number of pending request\n * @return {?}\n */\n Testability.prototype.increasePendingRequestCount = /**\n * Increases the number of pending request\n * @return {?}\n */\n function () {\n this._pendingCount += 1;\n this._didWork = true;\n return this._pendingCount;\n };\n /**\n * Decreases the number of pending request\n */\n /**\n * Decreases the number of pending request\n * @return {?}\n */\n Testability.prototype.decreasePendingRequestCount = /**\n * Decreases the number of pending request\n * @return {?}\n */\n function () {\n this._pendingCount -= 1;\n if (this._pendingCount < 0) {\n throw new Error('pending async requests below zero');\n }\n this._runCallbacksIfReady();\n return this._pendingCount;\n };\n /**\n * Whether an associated application is stable\n */\n /**\n * Whether an associated application is stable\n * @return {?}\n */\n Testability.prototype.isStable = /**\n * Whether an associated application is stable\n * @return {?}\n */\n function () {\n return this._isZoneStable && this._pendingCount == 0 && !this._ngZone.hasPendingMacrotasks;\n };\n /** @internal */\n /**\n * \\@internal\n * @return {?}\n */\n Testability.prototype._runCallbacksIfReady = /**\n * \\@internal\n * @return {?}\n */\n function () {\n var _this = this;\n if (this.isStable()) {\n // Schedules the call backs in a new frame so that it is always async.\n scheduleMicroTask(function () {\n while (_this._callbacks.length !== 0) {\n (/** @type {?} */ ((_this._callbacks.pop())))(_this._didWork);\n }\n _this._didWork = false;\n });\n }\n else {\n // Not Ready\n this._didWork = true;\n }\n };\n /**\n * Run callback when the application is stable\n * @param callback function to be called after the application is stable\n */\n /**\n * Run callback when the application is stable\n * @param {?} callback function to be called after the application is stable\n * @return {?}\n */\n Testability.prototype.whenStable = /**\n * Run callback when the application is stable\n * @param {?} callback function to be called after the application is stable\n * @return {?}\n */\n function (callback) {\n this._callbacks.push(callback);\n this._runCallbacksIfReady();\n };\n /**\n * Get the number of pending requests\n */\n /**\n * Get the number of pending requests\n * @return {?}\n */\n Testability.prototype.getPendingRequestCount = /**\n * Get the number of pending requests\n * @return {?}\n */\n function () { return this._pendingCount; };\n /**\n * Find providers by name\n * @param using The root element to search from\n * @param provider The name of binding variable\n * @param exactMatch Whether using exactMatch\n */\n /**\n * Find providers by name\n * @param {?} using The root element to search from\n * @param {?} provider The name of binding variable\n * @param {?} exactMatch Whether using exactMatch\n * @return {?}\n */\n Testability.prototype.findProviders = /**\n * Find providers by name\n * @param {?} using The root element to search from\n * @param {?} provider The name of binding variable\n * @param {?} exactMatch Whether using exactMatch\n * @return {?}\n */\n function (using, provider, exactMatch) {\n // TODO(juliemr): implement.\n return [];\n };\n Testability.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n Testability.ctorParameters = function () { return [\n { type: NgZone, },\n ]; };\n return Testability;\n}());\n/**\n * A global registry of {\\@link Testability} instances for specific elements.\n * \\@experimental\n */\nvar TestabilityRegistry = /** @class */ (function () {\n function TestabilityRegistry() {\n /**\n * \\@internal\n */\n this._applications = new Map();\n _testabilityGetter.addToWindow(this);\n }\n /**\n * Registers an application with a testability hook so that it can be tracked\n * @param token token of application, root element\n * @param testability Testability hook\n */\n /**\n * Registers an application with a testability hook so that it can be tracked\n * @param {?} token token of application, root element\n * @param {?} testability Testability hook\n * @return {?}\n */\n TestabilityRegistry.prototype.registerApplication = /**\n * Registers an application with a testability hook so that it can be tracked\n * @param {?} token token of application, root element\n * @param {?} testability Testability hook\n * @return {?}\n */\n function (token, testability) {\n this._applications.set(token, testability);\n };\n /**\n * Unregisters an application.\n * @param token token of application, root element\n */\n /**\n * Unregisters an application.\n * @param {?} token token of application, root element\n * @return {?}\n */\n TestabilityRegistry.prototype.unregisterApplication = /**\n * Unregisters an application.\n * @param {?} token token of application, root element\n * @return {?}\n */\n function (token) { this._applications.delete(token); };\n /**\n * Unregisters all applications\n */\n /**\n * Unregisters all applications\n * @return {?}\n */\n TestabilityRegistry.prototype.unregisterAllApplications = /**\n * Unregisters all applications\n * @return {?}\n */\n function () { this._applications.clear(); };\n /**\n * Get a testability hook associated with the application\n * @param elem root element\n */\n /**\n * Get a testability hook associated with the application\n * @param {?} elem root element\n * @return {?}\n */\n TestabilityRegistry.prototype.getTestability = /**\n * Get a testability hook associated with the application\n * @param {?} elem root element\n * @return {?}\n */\n function (elem) { return this._applications.get(elem) || null; };\n /**\n * Get all registered testabilities\n */\n /**\n * Get all registered testabilities\n * @return {?}\n */\n TestabilityRegistry.prototype.getAllTestabilities = /**\n * Get all registered testabilities\n * @return {?}\n */\n function () { return Array.from(this._applications.values()); };\n /**\n * Get all registered applications(root elements)\n */\n /**\n * Get all registered applications(root elements)\n * @return {?}\n */\n TestabilityRegistry.prototype.getAllRootElements = /**\n * Get all registered applications(root elements)\n * @return {?}\n */\n function () { return Array.from(this._applications.keys()); };\n /**\n * Find testability of a node in the Tree\n * @param elem node\n * @param findInAncestors whether finding testability in ancestors if testability was not found in\n * current node\n */\n /**\n * Find testability of a node in the Tree\n * @param {?} elem node\n * @param {?=} findInAncestors whether finding testability in ancestors if testability was not found in\n * current node\n * @return {?}\n */\n TestabilityRegistry.prototype.findTestabilityInTree = /**\n * Find testability of a node in the Tree\n * @param {?} elem node\n * @param {?=} findInAncestors whether finding testability in ancestors if testability was not found in\n * current node\n * @return {?}\n */\n function (elem, findInAncestors) {\n if (findInAncestors === void 0) { findInAncestors = true; }\n return _testabilityGetter.findTestabilityInTree(this, elem, findInAncestors);\n };\n TestabilityRegistry.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n TestabilityRegistry.ctorParameters = function () { return []; };\n return TestabilityRegistry;\n}());\n/**\n * Adapter interface for retrieving the `Testability` service associated for a\n * particular context.\n *\n * \\@experimental Testability apis are primarily intended to be used by e2e test tool vendors like\n * the Protractor team.\n * @record\n */\n\nvar _NoopGetTestability = /** @class */ (function () {\n function _NoopGetTestability() {\n }\n /**\n * @param {?} registry\n * @return {?}\n */\n _NoopGetTestability.prototype.addToWindow = /**\n * @param {?} registry\n * @return {?}\n */\n function (registry) { };\n /**\n * @param {?} registry\n * @param {?} elem\n * @param {?} findInAncestors\n * @return {?}\n */\n _NoopGetTestability.prototype.findTestabilityInTree = /**\n * @param {?} registry\n * @param {?} elem\n * @param {?} findInAncestors\n * @return {?}\n */\n function (registry, elem, findInAncestors) {\n return null;\n };\n return _NoopGetTestability;\n}());\n/**\n * Set the {\\@link GetTestability} implementation used by the Angular testing framework.\n * \\@experimental\n * @param {?} getter\n * @return {?}\n */\nfunction setTestabilityGetter(getter) {\n _testabilityGetter = getter;\n}\nvar _testabilityGetter = new _NoopGetTestability();\n\n/**\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 */\nvar _devMode = true;\nvar _runModeLocked = false;\nvar _platform;\nvar ALLOW_MULTIPLE_PLATFORMS = new InjectionToken('AllowMultipleToken');\n/**\n * Disable Angular's development mode, which turns off assertions and other\n * checks within the framework.\n *\n * One important assertion this disables verifies that a change detection pass\n * does not result in additional changes to any bindings (also known as\n * unidirectional data flow).\n *\n * \\@stable\n * @return {?}\n */\nfunction enableProdMode() {\n if (_runModeLocked) {\n throw new Error('Cannot enable prod mode after platform setup.');\n }\n _devMode = false;\n}\n/**\n * Returns whether Angular is in development mode. After called once,\n * the value is locked and won't change any more.\n *\n * By default, this is true, unless a user calls `enableProdMode` before calling this.\n *\n * \\@experimental APIs related to application bootstrap are currently under review.\n * @return {?}\n */\nfunction isDevMode() {\n _runModeLocked = true;\n return _devMode;\n}\n/**\n * A token for third-party components that can register themselves with NgProbe.\n *\n * \\@experimental\n */\nvar NgProbeToken = /** @class */ (function () {\n function NgProbeToken(name, token) {\n this.name = name;\n this.token = token;\n }\n return NgProbeToken;\n}());\n/**\n * Creates a platform.\n * Platforms have to be eagerly created via this function.\n *\n * \\@experimental APIs related to application bootstrap are currently under review.\n * @param {?} injector\n * @return {?}\n */\nfunction createPlatform(injector) {\n if (_platform && !_platform.destroyed &&\n !_platform.injector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {\n throw new Error('There can be only one platform. Destroy the previous one to create a new one.');\n }\n _platform = injector.get(PlatformRef);\n var /** @type {?} */ inits = injector.get(PLATFORM_INITIALIZER, null);\n if (inits)\n inits.forEach(function (init) { return init(); });\n return _platform;\n}\n/**\n * Creates a factory for a platform\n *\n * \\@experimental APIs related to application bootstrap are currently under review.\n * @param {?} parentPlatformFactory\n * @param {?} name\n * @param {?=} providers\n * @return {?}\n */\nfunction createPlatformFactory(parentPlatformFactory, name, providers) {\n if (providers === void 0) { providers = []; }\n var /** @type {?} */ desc = \"Platform: \" + name;\n var /** @type {?} */ marker = new InjectionToken(desc);\n return function (extraProviders) {\n if (extraProviders === void 0) { extraProviders = []; }\n var /** @type {?} */ platform = getPlatform();\n if (!platform || platform.injector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {\n if (parentPlatformFactory) {\n parentPlatformFactory(providers.concat(extraProviders).concat({ provide: marker, useValue: true }));\n }\n else {\n var /** @type {?} */ injectedProviders = providers.concat(extraProviders).concat({ provide: marker, useValue: true });\n createPlatform(Injector.create({ providers: injectedProviders, name: desc }));\n }\n }\n return assertPlatform(marker);\n };\n}\n/**\n * Checks that there currently is a platform which contains the given token as a provider.\n *\n * \\@experimental APIs related to application bootstrap are currently under review.\n * @param {?} requiredToken\n * @return {?}\n */\nfunction assertPlatform(requiredToken) {\n var /** @type {?} */ platform = getPlatform();\n if (!platform) {\n throw new Error('No platform exists!');\n }\n if (!platform.injector.get(requiredToken, null)) {\n throw new Error('A platform with a different configuration has been created. Please destroy it first.');\n }\n return platform;\n}\n/**\n * Destroy the existing platform.\n *\n * \\@experimental APIs related to application bootstrap are currently under review.\n * @return {?}\n */\nfunction destroyPlatform() {\n if (_platform && !_platform.destroyed) {\n _platform.destroy();\n }\n}\n/**\n * Returns the current platform.\n *\n * \\@experimental APIs related to application bootstrap are currently under review.\n * @return {?}\n */\nfunction getPlatform() {\n return _platform && !_platform.destroyed ? _platform : null;\n}\n/**\n * Provides additional options to the bootstraping process.\n *\n * \\@stable\n * @record\n */\n\n/**\n * The Angular platform is the entry point for Angular on a web page. Each page\n * has exactly one platform, and services (such as reflection) which are common\n * to every Angular application running on the page are bound in its scope.\n *\n * A page's platform is initialized implicitly when a platform is created via a platform factory\n * (e.g. {\\@link platformBrowser}), or explicitly by calling the {\\@link createPlatform} function.\n *\n * \\@stable\n */\nvar PlatformRef = /** @class */ (function () {\n /** @internal */\n function PlatformRef(_injector) {\n this._injector = _injector;\n this._modules = [];\n this._destroyListeners = [];\n this._destroyed = false;\n }\n /**\n * Creates an instance of an `@NgModule` for the given platform\n * for offline compilation.\n *\n * ## Simple Example\n *\n * ```typescript\n * my_module.ts:\n *\n * @NgModule({\n * imports: [BrowserModule]\n * })\n * class MyModule {}\n *\n * main.ts:\n * import {MyModuleNgFactory} from './my_module.ngfactory';\n * import {platformBrowser} from '@angular/platform-browser';\n *\n * let moduleRef = platformBrowser().bootstrapModuleFactory(MyModuleNgFactory);\n * ```\n *\n * @experimental APIs related to application bootstrap are currently under review.\n */\n /**\n * Creates an instance of an `\\@NgModule` for the given platform\n * for offline compilation.\n *\n * ## Simple Example\n *\n * ```typescript\n * my_module.ts:\n *\n * \\@NgModule({\n * imports: [BrowserModule]\n * })\n * class MyModule {}\n *\n * main.ts:\n * import {MyModuleNgFactory} from './my_module.ngfactory';\n * import {platformBrowser} from '\\@angular/platform-browser';\n *\n * let moduleRef = platformBrowser().bootstrapModuleFactory(MyModuleNgFactory);\n * ```\n *\n * \\@experimental APIs related to application bootstrap are currently under review.\n * @template M\n * @param {?} moduleFactory\n * @param {?=} options\n * @return {?}\n */\n PlatformRef.prototype.bootstrapModuleFactory = /**\n * Creates an instance of an `\\@NgModule` for the given platform\n * for offline compilation.\n *\n * ## Simple Example\n *\n * ```typescript\n * my_module.ts:\n *\n * \\@NgModule({\n * imports: [BrowserModule]\n * })\n * class MyModule {}\n *\n * main.ts:\n * import {MyModuleNgFactory} from './my_module.ngfactory';\n * import {platformBrowser} from '\\@angular/platform-browser';\n *\n * let moduleRef = platformBrowser().bootstrapModuleFactory(MyModuleNgFactory);\n * ```\n *\n * \\@experimental APIs related to application bootstrap are currently under review.\n * @template M\n * @param {?} moduleFactory\n * @param {?=} options\n * @return {?}\n */\n function (moduleFactory, options) {\n var _this = this;\n // Note: We need to create the NgZone _before_ we instantiate the module,\n // as instantiating the module creates some providers eagerly.\n // So we create a mini parent injector that just contains the new NgZone and\n // pass that as parent to the NgModuleFactory.\n var /** @type {?} */ ngZoneOption = options ? options.ngZone : undefined;\n var /** @type {?} */ ngZone = getNgZone(ngZoneOption);\n var /** @type {?} */ providers = [{ provide: NgZone, useValue: ngZone }];\n // Attention: Don't use ApplicationRef.run here,\n // as we want to be sure that all possible constructor calls are inside `ngZone.run`!\n return ngZone.run(function () {\n var /** @type {?} */ ngZoneInjector = Injector.create({ providers: providers, parent: _this.injector, name: moduleFactory.moduleType.name });\n var /** @type {?} */ moduleRef = /** @type {?} */ (moduleFactory.create(ngZoneInjector));\n var /** @type {?} */ exceptionHandler = moduleRef.injector.get(ErrorHandler, null);\n if (!exceptionHandler) {\n throw new Error('No ErrorHandler. Is platform module (BrowserModule) included?');\n }\n moduleRef.onDestroy(function () { return remove(_this._modules, moduleRef); }); /** @type {?} */\n ((ngZone)).runOutsideAngular(function () { return ((ngZone)).onError.subscribe({ next: function (error) { exceptionHandler.handleError(error); } }); });\n return _callAndReportToErrorHandler(exceptionHandler, /** @type {?} */ ((ngZone)), function () {\n var /** @type {?} */ initStatus = moduleRef.injector.get(ApplicationInitStatus);\n initStatus.runInitializers();\n return initStatus.donePromise.then(function () {\n _this._moduleDoBootstrap(moduleRef);\n return moduleRef;\n });\n });\n });\n };\n /**\n * Creates an instance of an `@NgModule` for a given platform using the given runtime compiler.\n *\n * ## Simple Example\n *\n * ```typescript\n * @NgModule({\n * imports: [BrowserModule]\n * })\n * class MyModule {}\n *\n * let moduleRef = platformBrowser().bootstrapModule(MyModule);\n * ```\n * @stable\n */\n /**\n * Creates an instance of an `\\@NgModule` for a given platform using the given runtime compiler.\n *\n * ## Simple Example\n *\n * ```typescript\n * \\@NgModule({\n * imports: [BrowserModule]\n * })\n * class MyModule {}\n *\n * let moduleRef = platformBrowser().bootstrapModule(MyModule);\n * ```\n * \\@stable\n * @template M\n * @param {?} moduleType\n * @param {?=} compilerOptions\n * @return {?}\n */\n PlatformRef.prototype.bootstrapModule = /**\n * Creates an instance of an `\\@NgModule` for a given platform using the given runtime compiler.\n *\n * ## Simple Example\n *\n * ```typescript\n * \\@NgModule({\n * imports: [BrowserModule]\n * })\n * class MyModule {}\n *\n * let moduleRef = platformBrowser().bootstrapModule(MyModule);\n * ```\n * \\@stable\n * @template M\n * @param {?} moduleType\n * @param {?=} compilerOptions\n * @return {?}\n */\n function (moduleType, compilerOptions) {\n var _this = this;\n if (compilerOptions === void 0) { compilerOptions = []; }\n var /** @type {?} */ compilerFactory = this.injector.get(CompilerFactory);\n var /** @type {?} */ options = optionsReducer({}, compilerOptions);\n var /** @type {?} */ compiler = compilerFactory.createCompiler([options]);\n return compiler.compileModuleAsync(moduleType)\n .then(function (moduleFactory) { return _this.bootstrapModuleFactory(moduleFactory, options); });\n };\n /**\n * @param {?} moduleRef\n * @return {?}\n */\n PlatformRef.prototype._moduleDoBootstrap = /**\n * @param {?} moduleRef\n * @return {?}\n */\n function (moduleRef) {\n var /** @type {?} */ appRef = /** @type {?} */ (moduleRef.injector.get(ApplicationRef));\n if (moduleRef._bootstrapComponents.length > 0) {\n moduleRef._bootstrapComponents.forEach(function (f) { return appRef.bootstrap(f); });\n }\n else if (moduleRef.instance.ngDoBootstrap) {\n moduleRef.instance.ngDoBootstrap(appRef);\n }\n else {\n throw new Error(\"The module \" + stringify(moduleRef.instance.constructor) + \" was bootstrapped, but it does not declare \\\"@NgModule.bootstrap\\\" components nor a \\\"ngDoBootstrap\\\" method. \" +\n \"Please define one of these.\");\n }\n this._modules.push(moduleRef);\n };\n /**\n * Register a listener to be called when the platform is disposed.\n */\n /**\n * Register a listener to be called when the platform is disposed.\n * @param {?} callback\n * @return {?}\n */\n PlatformRef.prototype.onDestroy = /**\n * Register a listener to be called when the platform is disposed.\n * @param {?} callback\n * @return {?}\n */\n function (callback) { this._destroyListeners.push(callback); };\n Object.defineProperty(PlatformRef.prototype, \"injector\", {\n /**\n * Retrieve the platform {@link Injector}, which is the parent injector for\n * every Angular application on the page and provides singleton providers.\n */\n get: /**\n * Retrieve the platform {\\@link Injector}, which is the parent injector for\n * every Angular application on the page and provides singleton providers.\n * @return {?}\n */\n function () { return this._injector; },\n enumerable: true,\n configurable: true\n });\n /**\n * Destroy the Angular platform and all Angular applications on the page.\n */\n /**\n * Destroy the Angular platform and all Angular applications on the page.\n * @return {?}\n */\n PlatformRef.prototype.destroy = /**\n * Destroy the Angular platform and all Angular applications on the page.\n * @return {?}\n */\n function () {\n if (this._destroyed) {\n throw new Error('The platform has already been destroyed!');\n }\n this._modules.slice().forEach(function (module) { return module.destroy(); });\n this._destroyListeners.forEach(function (listener) { return listener(); });\n this._destroyed = true;\n };\n Object.defineProperty(PlatformRef.prototype, \"destroyed\", {\n get: /**\n * @return {?}\n */\n function () { return this._destroyed; },\n enumerable: true,\n configurable: true\n });\n PlatformRef.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n PlatformRef.ctorParameters = function () { return [\n { type: Injector, },\n ]; };\n return PlatformRef;\n}());\n/**\n * @param {?=} ngZoneOption\n * @return {?}\n */\nfunction getNgZone(ngZoneOption) {\n var /** @type {?} */ ngZone;\n if (ngZoneOption === 'noop') {\n ngZone = new NoopNgZone();\n }\n else {\n ngZone = (ngZoneOption === 'zone.js' ? undefined : ngZoneOption) ||\n new NgZone({ enableLongStackTrace: isDevMode() });\n }\n return ngZone;\n}\n/**\n * @param {?} errorHandler\n * @param {?} ngZone\n * @param {?} callback\n * @return {?}\n */\nfunction _callAndReportToErrorHandler(errorHandler, ngZone, callback) {\n try {\n var /** @type {?} */ result = callback();\n if (isPromise(result)) {\n return result.catch(function (e) {\n ngZone.runOutsideAngular(function () { return errorHandler.handleError(e); });\n // rethrow as the exception handler might not do it\n throw e;\n });\n }\n return result;\n }\n catch (/** @type {?} */ e) {\n ngZone.runOutsideAngular(function () { return errorHandler.handleError(e); });\n // rethrow as the exception handler might not do it\n throw e;\n }\n}\n/**\n * @template T\n * @param {?} dst\n * @param {?} objs\n * @return {?}\n */\nfunction optionsReducer(dst, objs) {\n if (Array.isArray(objs)) {\n dst = objs.reduce(optionsReducer, dst);\n }\n else {\n dst = __assign({}, dst, (/** @type {?} */ (objs)));\n }\n return dst;\n}\n/**\n * A reference to an Angular application running on a page.\n *\n * \\@stable\n */\nvar ApplicationRef = /** @class */ (function () {\n /** @internal */\n function ApplicationRef(_zone, _console, _injector, _exceptionHandler, _componentFactoryResolver, _initStatus) {\n var _this = this;\n this._zone = _zone;\n this._console = _console;\n this._injector = _injector;\n this._exceptionHandler = _exceptionHandler;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._initStatus = _initStatus;\n this._bootstrapListeners = [];\n this._views = [];\n this._runningTick = false;\n this._enforceNoNewChanges = false;\n this._stable = true;\n /**\n * Get a list of component types registered to this application.\n * This list is populated even before the component is created.\n */\n this.componentTypes = [];\n /**\n * Get a list of components registered to this application.\n */\n this.components = [];\n this._enforceNoNewChanges = isDevMode();\n this._zone.onMicrotaskEmpty.subscribe({ next: function () { _this._zone.run(function () { _this.tick(); }); } });\n var /** @type {?} */ isCurrentlyStable = new rxjs_Observable.Observable(function (observer) {\n _this._stable = _this._zone.isStable && !_this._zone.hasPendingMacrotasks &&\n !_this._zone.hasPendingMicrotasks;\n _this._zone.runOutsideAngular(function () {\n observer.next(_this._stable);\n observer.complete();\n });\n });\n var /** @type {?} */ isStable = new rxjs_Observable.Observable(function (observer) {\n // Create the subscription to onStable outside the Angular Zone so that\n // the callback is run outside the Angular Zone.\n var /** @type {?} */ stableSub;\n _this._zone.runOutsideAngular(function () {\n stableSub = _this._zone.onStable.subscribe(function () {\n NgZone.assertNotInAngularZone();\n // Check whether there are no pending macro/micro tasks in the next tick\n // to allow for NgZone to update the state.\n scheduleMicroTask(function () {\n if (!_this._stable && !_this._zone.hasPendingMacrotasks &&\n !_this._zone.hasPendingMicrotasks) {\n _this._stable = true;\n observer.next(true);\n }\n });\n });\n });\n var /** @type {?} */ unstableSub = _this._zone.onUnstable.subscribe(function () {\n NgZone.assertInAngularZone();\n if (_this._stable) {\n _this._stable = false;\n _this._zone.runOutsideAngular(function () { observer.next(false); });\n }\n });\n return function () {\n stableSub.unsubscribe();\n unstableSub.unsubscribe();\n };\n });\n (/** @type {?} */ (this)).isStable =\n rxjs_observable_merge.merge(isCurrentlyStable, rxjs_operator_share.share.call(isStable));\n }\n /**\n * Bootstrap a new component at the root level of the application.\n *\n * ### Bootstrap process\n *\n * When bootstrapping a new root component into an application, Angular mounts the\n * specified application component onto DOM elements identified by the [componentType]'s\n * selector and kicks off automatic change detection to finish initializing the component.\n *\n * Optionally, a component can be mounted onto a DOM element that does not match the\n * [componentType]'s selector.\n *\n * ### Example\n * {@example core/ts/platform/platform.ts region='longform'}\n */\n /**\n * Bootstrap a new component at the root level of the application.\n *\n * ### Bootstrap process\n *\n * When bootstrapping a new root component into an application, Angular mounts the\n * specified application component onto DOM elements identified by the [componentType]'s\n * selector and kicks off automatic change detection to finish initializing the component.\n *\n * Optionally, a component can be mounted onto a DOM element that does not match the\n * [componentType]'s selector.\n *\n * ### Example\n * {\\@example core/ts/platform/platform.ts region='longform'}\n * @template C\n * @param {?} componentOrFactory\n * @param {?=} rootSelectorOrNode\n * @return {?}\n */\n ApplicationRef.prototype.bootstrap = /**\n * Bootstrap a new component at the root level of the application.\n *\n * ### Bootstrap process\n *\n * When bootstrapping a new root component into an application, Angular mounts the\n * specified application component onto DOM elements identified by the [componentType]'s\n * selector and kicks off automatic change detection to finish initializing the component.\n *\n * Optionally, a component can be mounted onto a DOM element that does not match the\n * [componentType]'s selector.\n *\n * ### Example\n * {\\@example core/ts/platform/platform.ts region='longform'}\n * @template C\n * @param {?} componentOrFactory\n * @param {?=} rootSelectorOrNode\n * @return {?}\n */\n function (componentOrFactory, rootSelectorOrNode) {\n var _this = this;\n if (!this._initStatus.done) {\n throw new Error('Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.');\n }\n var /** @type {?} */ componentFactory;\n if (componentOrFactory instanceof ComponentFactory) {\n componentFactory = componentOrFactory;\n }\n else {\n componentFactory =\n /** @type {?} */ ((this._componentFactoryResolver.resolveComponentFactory(componentOrFactory)));\n }\n this.componentTypes.push(componentFactory.componentType);\n // Create a factory associated with the current module if it's not bound to some other\n var /** @type {?} */ ngModule = componentFactory instanceof ComponentFactoryBoundToModule ?\n null :\n this._injector.get(NgModuleRef);\n var /** @type {?} */ selectorOrNode = rootSelectorOrNode || componentFactory.selector;\n var /** @type {?} */ compRef = componentFactory.create(Injector.NULL, [], selectorOrNode, ngModule);\n compRef.onDestroy(function () { _this._unloadComponent(compRef); });\n var /** @type {?} */ testability = compRef.injector.get(Testability, null);\n if (testability) {\n compRef.injector.get(TestabilityRegistry)\n .registerApplication(compRef.location.nativeElement, testability);\n }\n this._loadComponent(compRef);\n if (isDevMode()) {\n this._console.log(\"Angular is running in the development mode. Call enableProdMode() to enable the production mode.\");\n }\n return compRef;\n };\n /**\n * Invoke this method to explicitly process change detection and its side-effects.\n *\n * In development mode, `tick()` also performs a second change detection cycle to ensure that no\n * further changes are detected. If additional changes are picked up during this second cycle,\n * bindings in the app have side-effects that cannot be resolved in a single change detection\n * pass.\n * In this case, Angular throws an error, since an Angular application can only have one change\n * detection pass during which all change detection must complete.\n */\n /**\n * Invoke this method to explicitly process change detection and its side-effects.\n *\n * In development mode, `tick()` also performs a second change detection cycle to ensure that no\n * further changes are detected. If additional changes are picked up during this second cycle,\n * bindings in the app have side-effects that cannot be resolved in a single change detection\n * pass.\n * In this case, Angular throws an error, since an Angular application can only have one change\n * detection pass during which all change detection must complete.\n * @return {?}\n */\n ApplicationRef.prototype.tick = /**\n * Invoke this method to explicitly process change detection and its side-effects.\n *\n * In development mode, `tick()` also performs a second change detection cycle to ensure that no\n * further changes are detected. If additional changes are picked up during this second cycle,\n * bindings in the app have side-effects that cannot be resolved in a single change detection\n * pass.\n * In this case, Angular throws an error, since an Angular application can only have one change\n * detection pass during which all change detection must complete.\n * @return {?}\n */\n function () {\n var _this = this;\n if (this._runningTick) {\n throw new Error('ApplicationRef.tick is called recursively');\n }\n var /** @type {?} */ scope = ApplicationRef._tickScope();\n try {\n this._runningTick = true;\n this._views.forEach(function (view) { return view.detectChanges(); });\n if (this._enforceNoNewChanges) {\n this._views.forEach(function (view) { return view.checkNoChanges(); });\n }\n }\n catch (/** @type {?} */ e) {\n // Attention: Don't rethrow as it could cancel subscriptions to Observables!\n this._zone.runOutsideAngular(function () { return _this._exceptionHandler.handleError(e); });\n }\n finally {\n this._runningTick = false;\n wtfLeave(scope);\n }\n };\n /**\n * Attaches a view so that it will be dirty checked.\n * The view will be automatically detached when it is destroyed.\n * This will throw if the view is already attached to a ViewContainer.\n */\n /**\n * Attaches a view so that it will be dirty checked.\n * The view will be automatically detached when it is destroyed.\n * This will throw if the view is already attached to a ViewContainer.\n * @param {?} viewRef\n * @return {?}\n */\n ApplicationRef.prototype.attachView = /**\n * Attaches a view so that it will be dirty checked.\n * The view will be automatically detached when it is destroyed.\n * This will throw if the view is already attached to a ViewContainer.\n * @param {?} viewRef\n * @return {?}\n */\n function (viewRef) {\n var /** @type {?} */ view = (/** @type {?} */ (viewRef));\n this._views.push(view);\n view.attachToAppRef(this);\n };\n /**\n * Detaches a view from dirty checking again.\n */\n /**\n * Detaches a view from dirty checking again.\n * @param {?} viewRef\n * @return {?}\n */\n ApplicationRef.prototype.detachView = /**\n * Detaches a view from dirty checking again.\n * @param {?} viewRef\n * @return {?}\n */\n function (viewRef) {\n var /** @type {?} */ view = (/** @type {?} */ (viewRef));\n remove(this._views, view);\n view.detachFromAppRef();\n };\n /**\n * @param {?} componentRef\n * @return {?}\n */\n ApplicationRef.prototype._loadComponent = /**\n * @param {?} componentRef\n * @return {?}\n */\n function (componentRef) {\n this.attachView(componentRef.hostView);\n this.tick();\n this.components.push(componentRef);\n // Get the listeners lazily to prevent DI cycles.\n var /** @type {?} */ listeners = this._injector.get(APP_BOOTSTRAP_LISTENER, []).concat(this._bootstrapListeners);\n listeners.forEach(function (listener) { return listener(componentRef); });\n };\n /**\n * @param {?} componentRef\n * @return {?}\n */\n ApplicationRef.prototype._unloadComponent = /**\n * @param {?} componentRef\n * @return {?}\n */\n function (componentRef) {\n this.detachView(componentRef.hostView);\n remove(this.components, componentRef);\n };\n /** @internal */\n /**\n * \\@internal\n * @return {?}\n */\n ApplicationRef.prototype.ngOnDestroy = /**\n * \\@internal\n * @return {?}\n */\n function () {\n // TODO(alxhub): Dispose of the NgZone.\n this._views.slice().forEach(function (view) { return view.destroy(); });\n };\n Object.defineProperty(ApplicationRef.prototype, \"viewCount\", {\n /**\n * Returns the number of attached views.\n */\n get: /**\n * Returns the number of attached views.\n * @return {?}\n */\n function () { return this._views.length; },\n enumerable: true,\n configurable: true\n });\n /**\n * \\@internal\n */\n ApplicationRef._tickScope = wtfCreateScope('ApplicationRef#tick()');\n ApplicationRef.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n ApplicationRef.ctorParameters = function () { return [\n { type: NgZone, },\n { type: Console, },\n { type: Injector, },\n { type: ErrorHandler, },\n { type: ComponentFactoryResolver, },\n { type: ApplicationInitStatus, },\n ]; };\n return ApplicationRef;\n}());\n/**\n * @template T\n * @param {?} list\n * @param {?} el\n * @return {?}\n */\nfunction remove(list, el) {\n var /** @type {?} */ index = list.indexOf(el);\n if (index > -1) {\n list.splice(index, 1);\n }\n}\n\n/**\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/**\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 * @deprecated Use `RendererType2` (and `Renderer2`) instead.\n */\nvar RenderComponentType = /** @class */ (function () {\n function RenderComponentType(id, templateUrl, slotCount, encapsulation, styles, animations) {\n this.id = id;\n this.templateUrl = templateUrl;\n this.slotCount = slotCount;\n this.encapsulation = encapsulation;\n this.styles = styles;\n this.animations = animations;\n }\n return RenderComponentType;\n}());\n/**\n * @deprecated Debug info is handeled internally in the view engine now.\n * @abstract\n */\nvar RenderDebugInfo = /** @class */ (function () {\n function RenderDebugInfo() {\n }\n return RenderDebugInfo;\n}());\n/**\n * @deprecated Use the `Renderer2` instead.\n * @record\n */\n\n/**\n * @deprecated Use the `Renderer2` instead.\n * @abstract\n */\nvar Renderer = /** @class */ (function () {\n function Renderer() {\n }\n return Renderer;\n}());\nvar Renderer2Interceptor = new InjectionToken('Renderer2Interceptor');\n/**\n * Injectable service that provides a low-level interface for modifying the UI.\n *\n * Use this service to bypass Angular's templating and make custom UI changes that can't be\n * expressed declaratively. For example if you need to set a property or an attribute whose name is\n * not statically known, use {\\@link Renderer#setElementProperty setElementProperty} or\n * {\\@link Renderer#setElementAttribute setElementAttribute} respectively.\n *\n * If you are implementing a custom renderer, you must implement this interface.\n *\n * The default Renderer implementation is `DomRenderer`. Also available is `WebWorkerRenderer`.\n *\n * @deprecated Use `RendererFactory2` instead.\n * @abstract\n */\nvar RootRenderer = /** @class */ (function () {\n function RootRenderer() {\n }\n return RootRenderer;\n}());\n/**\n * \\@experimental\n * @record\n */\n\n/**\n * \\@experimental\n * @abstract\n */\nvar RendererFactory2 = /** @class */ (function () {\n function RendererFactory2() {\n }\n return RendererFactory2;\n}());\n/** @enum {number} */\nvar RendererStyleFlags2 = {\n Important: 1,\n DashCase: 2,\n};\nRendererStyleFlags2[RendererStyleFlags2.Important] = \"Important\";\nRendererStyleFlags2[RendererStyleFlags2.DashCase] = \"DashCase\";\n/**\n * \\@experimental\n * @abstract\n */\nvar Renderer2 = /** @class */ (function () {\n function Renderer2() {\n }\n return Renderer2;\n}());\n\n/**\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/**\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 * A wrapper around a native element inside of a View.\n *\n * An `ElementRef` is backed by a render-specific element. In the browser, this is usually a DOM\n * element.\n *\n * \\@security Permitting direct access to the DOM can make your application more vulnerable to\n * XSS attacks. Carefully review any use of `ElementRef` in your code. For more detail, see the\n * [Security Guide](http://g.co/ng/security).\n *\n * \\@stable\n */\nvar ElementRef = /** @class */ (function () {\n function ElementRef(nativeElement) {\n this.nativeElement = nativeElement;\n }\n return ElementRef;\n}());\n\n/**\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 * Used to load ng module factories.\n * \\@stable\n * @abstract\n */\nvar NgModuleFactoryLoader = /** @class */ (function () {\n function NgModuleFactoryLoader() {\n }\n return NgModuleFactoryLoader;\n}());\nvar moduleFactories = new Map();\n/**\n * Registers a loaded module. Should only be called from generated NgModuleFactory code.\n * \\@experimental\n * @param {?} id\n * @param {?} factory\n * @return {?}\n */\nfunction registerModuleFactory(id, factory) {\n var /** @type {?} */ existing = moduleFactories.get(id);\n if (existing) {\n throw new Error(\"Duplicate module registered for \" + id + \" - \" + existing.moduleType.name + \" vs \" + factory.moduleType.name);\n }\n moduleFactories.set(id, factory);\n}\n/**\n * @return {?}\n */\n\n/**\n * Returns the NgModuleFactory with the given id, if it exists and has been loaded.\n * Factories for modules that do not specify an `id` cannot be retrieved. Throws if the module\n * cannot be found.\n * \\@experimental\n * @param {?} id\n * @return {?}\n */\nfunction getModuleFactory(id) {\n var /** @type {?} */ factory = moduleFactories.get(id);\n if (!factory)\n throw new Error(\"No module with ID \" + id + \" loaded\");\n return factory;\n}\n\n/**\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 * An unmodifiable list of items that Angular keeps up to date when the state\n * of the application changes.\n *\n * The type of object that {\\@link ViewChildren}, {\\@link ContentChildren}, and {\\@link QueryList}\n * provide.\n *\n * Implements an iterable interface, therefore it can be used in both ES6\n * javascript `for (var i of items)` loops as well as in Angular templates with\n * `*ngFor=\"let i of myList\"`.\n *\n * Changes can be observed by subscribing to the changes `Observable`.\n *\n * NOTE: In the future this class will implement an `Observable` interface.\n *\n * ### Example ([live demo](http://plnkr.co/edit/RX8sJnQYl9FWuSCWme5z?p=preview))\n * ```typescript\n * \\@Component({...})\n * class Container {\n * \\@ViewChildren(Item) items:QueryList<Item>;\n * }\n * ```\n * \\@stable\n */\nvar QueryList = /** @class */ (function () {\n function QueryList() {\n this.dirty = true;\n this._results = [];\n this.changes = new EventEmitter();\n }\n /**\n * See\n * [Array.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)\n */\n /**\n * See\n * [Array.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)\n * @template U\n * @param {?} fn\n * @return {?}\n */\n QueryList.prototype.map = /**\n * See\n * [Array.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)\n * @template U\n * @param {?} fn\n * @return {?}\n */\n function (fn) { return this._results.map(fn); };\n /**\n * See\n * [Array.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)\n */\n /**\n * See\n * [Array.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)\n * @param {?} fn\n * @return {?}\n */\n QueryList.prototype.filter = /**\n * See\n * [Array.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n return this._results.filter(fn);\n };\n /**\n * See\n * [Array.find](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)\n */\n /**\n * See\n * [Array.find](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)\n * @param {?} fn\n * @return {?}\n */\n QueryList.prototype.find = /**\n * See\n * [Array.find](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n return this._results.find(fn);\n };\n /**\n * See\n * [Array.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)\n */\n /**\n * See\n * [Array.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)\n * @template U\n * @param {?} fn\n * @param {?} init\n * @return {?}\n */\n QueryList.prototype.reduce = /**\n * See\n * [Array.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)\n * @template U\n * @param {?} fn\n * @param {?} init\n * @return {?}\n */\n function (fn, init) {\n return this._results.reduce(fn, init);\n };\n /**\n * See\n * [Array.forEach](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)\n */\n /**\n * See\n * [Array.forEach](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)\n * @param {?} fn\n * @return {?}\n */\n QueryList.prototype.forEach = /**\n * See\n * [Array.forEach](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this._results.forEach(fn); };\n /**\n * See\n * [Array.some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)\n */\n /**\n * See\n * [Array.some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)\n * @param {?} fn\n * @return {?}\n */\n QueryList.prototype.some = /**\n * See\n * [Array.some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n return this._results.some(fn);\n };\n /**\n * @return {?}\n */\n QueryList.prototype.toArray = /**\n * @return {?}\n */\n function () { return this._results.slice(); };\n /**\n * @return {?}\n */\n QueryList.prototype[getSymbolIterator()] = /**\n * @return {?}\n */\n function () { return (/** @type {?} */ (this._results))[getSymbolIterator()](); };\n /**\n * @return {?}\n */\n QueryList.prototype.toString = /**\n * @return {?}\n */\n function () { return this._results.toString(); };\n /**\n * @param {?} res\n * @return {?}\n */\n QueryList.prototype.reset = /**\n * @param {?} res\n * @return {?}\n */\n function (res) {\n this._results = flatten(res);\n (/** @type {?} */ (this)).dirty = false;\n (/** @type {?} */ (this)).length = this._results.length;\n (/** @type {?} */ (this)).last = this._results[this.length - 1];\n (/** @type {?} */ (this)).first = this._results[0];\n };\n /**\n * @return {?}\n */\n QueryList.prototype.notifyOnChanges = /**\n * @return {?}\n */\n function () { (/** @type {?} */ (this.changes)).emit(this); };\n /** internal */\n /**\n * internal\n * @return {?}\n */\n QueryList.prototype.setDirty = /**\n * internal\n * @return {?}\n */\n function () { (/** @type {?} */ (this)).dirty = true; };\n /** internal */\n /**\n * internal\n * @return {?}\n */\n QueryList.prototype.destroy = /**\n * internal\n * @return {?}\n */\n function () {\n (/** @type {?} */ (this.changes)).complete();\n (/** @type {?} */ (this.changes)).unsubscribe();\n };\n return QueryList;\n}());\n/**\n * @template T\n * @param {?} list\n * @return {?}\n */\nfunction flatten(list) {\n return list.reduce(function (flat, item) {\n var /** @type {?} */ flatItem = Array.isArray(item) ? flatten(item) : item;\n return (/** @type {?} */ (flat)).concat(flatItem);\n }, []);\n}\n\n/**\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 */\nvar _SEPARATOR = '#';\nvar FACTORY_CLASS_SUFFIX = 'NgFactory';\n/**\n * Configuration for SystemJsNgModuleLoader.\n * token.\n *\n * \\@experimental\n * @abstract\n */\nvar SystemJsNgModuleLoaderConfig = /** @class */ (function () {\n function SystemJsNgModuleLoaderConfig() {\n }\n return SystemJsNgModuleLoaderConfig;\n}());\nvar DEFAULT_CONFIG = {\n factoryPathPrefix: '',\n factoryPathSuffix: '.ngfactory',\n};\n/**\n * NgModuleFactoryLoader that uses SystemJS to load NgModuleFactory\n * \\@experimental\n */\nvar SystemJsNgModuleLoader = /** @class */ (function () {\n function SystemJsNgModuleLoader(_compiler, config) {\n this._compiler = _compiler;\n this._config = config || DEFAULT_CONFIG;\n }\n /**\n * @param {?} path\n * @return {?}\n */\n SystemJsNgModuleLoader.prototype.load = /**\n * @param {?} path\n * @return {?}\n */\n function (path) {\n var /** @type {?} */ offlineMode = this._compiler instanceof Compiler;\n return offlineMode ? this.loadFactory(path) : this.loadAndCompile(path);\n };\n /**\n * @param {?} path\n * @return {?}\n */\n SystemJsNgModuleLoader.prototype.loadAndCompile = /**\n * @param {?} path\n * @return {?}\n */\n function (path) {\n var _this = this;\n var _a = path.split(_SEPARATOR), module = _a[0], exportName = _a[1];\n if (exportName === undefined) {\n exportName = 'default';\n }\n return System.import(module)\n .then(function (module) { return module[exportName]; })\n .then(function (type) { return checkNotEmpty(type, module, exportName); })\n .then(function (type) { return _this._compiler.compileModuleAsync(type); });\n };\n /**\n * @param {?} path\n * @return {?}\n */\n SystemJsNgModuleLoader.prototype.loadFactory = /**\n * @param {?} path\n * @return {?}\n */\n function (path) {\n var _a = path.split(_SEPARATOR), module = _a[0], exportName = _a[1];\n var /** @type {?} */ factoryClassSuffix = FACTORY_CLASS_SUFFIX;\n if (exportName === undefined) {\n exportName = 'default';\n factoryClassSuffix = '';\n }\n return System.import(this._config.factoryPathPrefix + module + this._config.factoryPathSuffix)\n .then(function (module) { return module[exportName + factoryClassSuffix]; })\n .then(function (factory) { return checkNotEmpty(factory, module, exportName); });\n };\n SystemJsNgModuleLoader.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n SystemJsNgModuleLoader.ctorParameters = function () { return [\n { type: Compiler, },\n { type: SystemJsNgModuleLoaderConfig, decorators: [{ type: Optional },] },\n ]; };\n return SystemJsNgModuleLoader;\n}());\n/**\n * @param {?} value\n * @param {?} modulePath\n * @param {?} exportName\n * @return {?}\n */\nfunction checkNotEmpty(value, modulePath, exportName) {\n if (!value) {\n throw new Error(\"Cannot find '\" + exportName + \"' in '\" + modulePath + \"'\");\n }\n return value;\n}\n\n/**\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 * Represents an Embedded Template that can be used to instantiate Embedded Views.\n *\n * You can access a `TemplateRef`, in two ways. Via a directive placed on a `<ng-template>` element\n * (or directive prefixed with `*`) and have the `TemplateRef` for this Embedded View injected into\n * the constructor of the directive using the `TemplateRef` Token. Alternatively you can query for\n * the `TemplateRef` from a Component or a Directive via {\\@link Query}.\n *\n * To instantiate Embedded Views based on a Template, use {\\@link ViewContainerRef#\n * createEmbeddedView}, which will create the View and attach it to the View Container.\n * \\@stable\n * @abstract\n */\nvar TemplateRef = /** @class */ (function () {\n function TemplateRef() {\n }\n return TemplateRef;\n}());\n\n/**\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 * Represents a container where one or more Views can be attached.\n *\n * The container can contain two kinds of Views. Host Views, created by instantiating a\n * {\\@link Component} via {\\@link #createComponent}, and Embedded Views, created by instantiating an\n * {\\@link TemplateRef Embedded Template} via {\\@link #createEmbeddedView}.\n *\n * The location of the View Container within the containing View is specified by the Anchor\n * `element`. Each View Container can have only one Anchor Element and each Anchor Element can only\n * have a single View Container.\n *\n * Root elements of Views attached to this container become siblings of the Anchor Element in\n * the Rendered View.\n *\n * To access a `ViewContainerRef` of an Element, you can either place a {\\@link Directive} injected\n * with `ViewContainerRef` on the Element, or you obtain it via a {\\@link ViewChild} query.\n * \\@stable\n * @abstract\n */\nvar ViewContainerRef = /** @class */ (function () {\n function ViewContainerRef() {\n }\n return ViewContainerRef;\n}());\n\n/**\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 * \\@stable\n * @abstract\n */\nvar ChangeDetectorRef = /** @class */ (function () {\n function ChangeDetectorRef() {\n }\n return ChangeDetectorRef;\n}());\n\n/**\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 * \\@stable\n * @abstract\n */\nvar ViewRef = /** @class */ (function (_super) {\n __extends(ViewRef, _super);\n function ViewRef() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return ViewRef;\n}(ChangeDetectorRef));\n/**\n * Represents an Angular View.\n *\n * <!-- TODO: move the next two paragraphs to the dev guide -->\n * A View is a fundamental building block of the application UI. It is the smallest grouping of\n * Elements which are created and destroyed together.\n *\n * Properties of elements in a View can change, but the structure (number and order) of elements in\n * a View cannot. Changing the structure of Elements can only be done by inserting, moving or\n * removing nested Views via a {\\@link ViewContainerRef}. Each View can contain many View Containers.\n * <!-- /TODO -->\n *\n * ### Example\n *\n * Given this template...\n *\n * ```\n * Count: {{items.length}}\n * <ul>\n * <li *ngFor=\"let item of items\">{{item}}</li>\n * </ul>\n * ```\n *\n * We have two {\\@link TemplateRef}s:\n *\n * Outer {\\@link TemplateRef}:\n * ```\n * Count: {{items.length}}\n * <ul>\n * <ng-template ngFor let-item [ngForOf]=\"items\"></ng-template>\n * </ul>\n * ```\n *\n * Inner {\\@link TemplateRef}:\n * ```\n * <li>{{item}}</li>\n * ```\n *\n * Notice that the original template is broken down into two separate {\\@link TemplateRef}s.\n *\n * The outer/inner {\\@link TemplateRef}s are then assembled into views like so:\n *\n * ```\n * <!-- ViewRef: outer-0 -->\n * Count: 2\n * <ul>\n * <ng-template view-container-ref></ng-template>\n * <!-- ViewRef: inner-1 --><li>first</li><!-- /ViewRef: inner-1 -->\n * <!-- ViewRef: inner-2 --><li>second</li><!-- /ViewRef: inner-2 -->\n * </ul>\n * <!-- /ViewRef: outer-0 -->\n * ```\n * \\@experimental\n * @abstract\n */\nvar EmbeddedViewRef = /** @class */ (function (_super) {\n __extends(EmbeddedViewRef, _super);\n function EmbeddedViewRef() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return EmbeddedViewRef;\n}(ViewRef));\n/**\n * @record\n */\n\n/**\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/**\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 */\nvar EventListener = /** @class */ (function () {\n function EventListener(name, callback) {\n this.name = name;\n this.callback = callback;\n }\n return EventListener;\n}());\n/**\n * \\@experimental All debugging apis are currently experimental.\n */\nvar DebugNode = /** @class */ (function () {\n function DebugNode(nativeNode, parent, _debugContext) {\n this._debugContext = _debugContext;\n this.nativeNode = nativeNode;\n if (parent && parent instanceof DebugElement) {\n parent.addChild(this);\n }\n else {\n this.parent = null;\n }\n this.listeners = [];\n }\n Object.defineProperty(DebugNode.prototype, \"injector\", {\n get: /**\n * @return {?}\n */\n function () { return this._debugContext.injector; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugNode.prototype, \"componentInstance\", {\n get: /**\n * @return {?}\n */\n function () { return this._debugContext.component; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugNode.prototype, \"context\", {\n get: /**\n * @return {?}\n */\n function () { return this._debugContext.context; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugNode.prototype, \"references\", {\n get: /**\n * @return {?}\n */\n function () { return this._debugContext.references; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugNode.prototype, \"providerTokens\", {\n get: /**\n * @return {?}\n */\n function () { return this._debugContext.providerTokens; },\n enumerable: true,\n configurable: true\n });\n return DebugNode;\n}());\n/**\n * \\@experimental All debugging apis are currently experimental.\n */\nvar DebugElement = /** @class */ (function (_super) {\n __extends(DebugElement, _super);\n function DebugElement(nativeNode, parent, _debugContext) {\n var _this = _super.call(this, nativeNode, parent, _debugContext) || this;\n _this.properties = {};\n _this.attributes = {};\n _this.classes = {};\n _this.styles = {};\n _this.childNodes = [];\n _this.nativeElement = nativeNode;\n return _this;\n }\n /**\n * @param {?} child\n * @return {?}\n */\n DebugElement.prototype.addChild = /**\n * @param {?} child\n * @return {?}\n */\n function (child) {\n if (child) {\n this.childNodes.push(child);\n child.parent = this;\n }\n };\n /**\n * @param {?} child\n * @return {?}\n */\n DebugElement.prototype.removeChild = /**\n * @param {?} child\n * @return {?}\n */\n function (child) {\n var /** @type {?} */ childIndex = this.childNodes.indexOf(child);\n if (childIndex !== -1) {\n child.parent = null;\n this.childNodes.splice(childIndex, 1);\n }\n };\n /**\n * @param {?} child\n * @param {?} newChildren\n * @return {?}\n */\n DebugElement.prototype.insertChildrenAfter = /**\n * @param {?} child\n * @param {?} newChildren\n * @return {?}\n */\n function (child, newChildren) {\n var _this = this;\n var /** @type {?} */ siblingIndex = this.childNodes.indexOf(child);\n if (siblingIndex !== -1) {\n (_a = this.childNodes).splice.apply(_a, [siblingIndex + 1, 0].concat(newChildren));\n newChildren.forEach(function (c) {\n if (c.parent) {\n c.parent.removeChild(c);\n }\n c.parent = _this;\n });\n }\n var _a;\n };\n /**\n * @param {?} refChild\n * @param {?} newChild\n * @return {?}\n */\n DebugElement.prototype.insertBefore = /**\n * @param {?} refChild\n * @param {?} newChild\n * @return {?}\n */\n function (refChild, newChild) {\n var /** @type {?} */ refIndex = this.childNodes.indexOf(refChild);\n if (refIndex === -1) {\n this.addChild(newChild);\n }\n else {\n if (newChild.parent) {\n newChild.parent.removeChild(newChild);\n }\n newChild.parent = this;\n this.childNodes.splice(refIndex, 0, newChild);\n }\n };\n /**\n * @param {?} predicate\n * @return {?}\n */\n DebugElement.prototype.query = /**\n * @param {?} predicate\n * @return {?}\n */\n function (predicate) {\n var /** @type {?} */ results = this.queryAll(predicate);\n return results[0] || null;\n };\n /**\n * @param {?} predicate\n * @return {?}\n */\n DebugElement.prototype.queryAll = /**\n * @param {?} predicate\n * @return {?}\n */\n function (predicate) {\n var /** @type {?} */ matches = [];\n _queryElementChildren(this, predicate, matches);\n return matches;\n };\n /**\n * @param {?} predicate\n * @return {?}\n */\n DebugElement.prototype.queryAllNodes = /**\n * @param {?} predicate\n * @return {?}\n */\n function (predicate) {\n var /** @type {?} */ matches = [];\n _queryNodeChildren(this, predicate, matches);\n return matches;\n };\n Object.defineProperty(DebugElement.prototype, \"children\", {\n get: /**\n * @return {?}\n */\n function () {\n return /** @type {?} */ (this.childNodes.filter(function (node) { return node instanceof DebugElement; }));\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} eventName\n * @param {?} eventObj\n * @return {?}\n */\n DebugElement.prototype.triggerEventHandler = /**\n * @param {?} eventName\n * @param {?} eventObj\n * @return {?}\n */\n function (eventName, eventObj) {\n this.listeners.forEach(function (listener) {\n if (listener.name == eventName) {\n listener.callback(eventObj);\n }\n });\n };\n return DebugElement;\n}(DebugNode));\n/**\n * \\@experimental\n * @param {?} debugEls\n * @return {?}\n */\nfunction asNativeElements(debugEls) {\n return debugEls.map(function (el) { return el.nativeElement; });\n}\n/**\n * @param {?} element\n * @param {?} predicate\n * @param {?} matches\n * @return {?}\n */\nfunction _queryElementChildren(element, predicate, matches) {\n element.childNodes.forEach(function (node) {\n if (node instanceof DebugElement) {\n if (predicate(node)) {\n matches.push(node);\n }\n _queryElementChildren(node, predicate, matches);\n }\n });\n}\n/**\n * @param {?} parentNode\n * @param {?} predicate\n * @param {?} matches\n * @return {?}\n */\nfunction _queryNodeChildren(parentNode, predicate, matches) {\n if (parentNode instanceof DebugElement) {\n parentNode.childNodes.forEach(function (node) {\n if (predicate(node)) {\n matches.push(node);\n }\n if (node instanceof DebugElement) {\n _queryNodeChildren(node, predicate, matches);\n }\n });\n }\n}\n// Need to keep the nodes in a global Map so that multiple angular apps are supported.\nvar _nativeNodeToDebugNode = new Map();\n/**\n * \\@experimental\n * @param {?} nativeNode\n * @return {?}\n */\nfunction getDebugNode(nativeNode) {\n return _nativeNodeToDebugNode.get(nativeNode) || null;\n}\n/**\n * @return {?}\n */\n\n/**\n * @param {?} node\n * @return {?}\n */\nfunction indexDebugNode(node) {\n _nativeNodeToDebugNode.set(node.nativeNode, node);\n}\n/**\n * @param {?} node\n * @return {?}\n */\nfunction removeDebugNodeFromIndex(node) {\n _nativeNodeToDebugNode.delete(node.nativeNode);\n}\n/**\n * A boolean-valued function over a value, possibly including context information\n * regarding that value's position in an array.\n *\n * \\@experimental All debugging apis are currently experimental.\n * @record\n */\n\n/**\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 * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction devModeEqual(a, b) {\n var /** @type {?} */ isListLikeIterableA = isListLikeIterable(a);\n var /** @type {?} */ isListLikeIterableB = isListLikeIterable(b);\n if (isListLikeIterableA && isListLikeIterableB) {\n return areIterablesEqual(a, b, devModeEqual);\n }\n else {\n var /** @type {?} */ isAObject = a && (typeof a === 'object' || typeof a === 'function');\n var /** @type {?} */ isBObject = b && (typeof b === 'object' || typeof b === 'function');\n if (!isListLikeIterableA && isAObject && !isListLikeIterableB && isBObject) {\n return true;\n }\n else {\n return looseIdentical(a, b);\n }\n }\n}\n/**\n * Indicates that the result of a {\\@link Pipe} transformation has changed even though the\n * reference has not changed.\n *\n * Wrapped values are unwrapped automatically during the change detection, and the unwrapped value\n * is stored.\n *\n * Example:\n *\n * ```\n * if (this._latestValue === this._latestReturnedValue) {\n * return this._latestReturnedValue;\n * } else {\n * this._latestReturnedValue = this._latestValue;\n * return WrappedValue.wrap(this._latestValue); // this will force update\n * }\n * ```\n * \\@stable\n */\nvar WrappedValue = /** @class */ (function () {\n function WrappedValue(value) {\n this.wrapped = value;\n }\n /** Creates a wrapped value. */\n /**\n * Creates a wrapped value.\n * @param {?} value\n * @return {?}\n */\n WrappedValue.wrap = /**\n * Creates a wrapped value.\n * @param {?} value\n * @return {?}\n */\n function (value) { return new WrappedValue(value); };\n /**\n * Returns the underlying value of a wrapped value.\n * Returns the given `value` when it is not wrapped.\n **/\n /**\n * Returns the underlying value of a wrapped value.\n * Returns the given `value` when it is not wrapped.\n *\n * @param {?} value\n * @return {?}\n */\n WrappedValue.unwrap = /**\n * Returns the underlying value of a wrapped value.\n * Returns the given `value` when it is not wrapped.\n *\n * @param {?} value\n * @return {?}\n */\n function (value) { return WrappedValue.isWrapped(value) ? value.wrapped : value; };\n /** Returns true if `value` is a wrapped value. */\n /**\n * Returns true if `value` is a wrapped value.\n * @param {?} value\n * @return {?}\n */\n WrappedValue.isWrapped = /**\n * Returns true if `value` is a wrapped value.\n * @param {?} value\n * @return {?}\n */\n function (value) { return value instanceof WrappedValue; };\n return WrappedValue;\n}());\n/**\n * Represents a basic change from a previous to a new value.\n * \\@stable\n */\nvar SimpleChange = /** @class */ (function () {\n function SimpleChange(previousValue, currentValue, firstChange) {\n this.previousValue = previousValue;\n this.currentValue = currentValue;\n this.firstChange = firstChange;\n }\n /**\n * Check whether the new value is the first value assigned.\n */\n /**\n * Check whether the new value is the first value assigned.\n * @return {?}\n */\n SimpleChange.prototype.isFirstChange = /**\n * Check whether the new value is the first value assigned.\n * @return {?}\n */\n function () { return this.firstChange; };\n return SimpleChange;\n}());\n/**\n * @param {?} obj\n * @return {?}\n */\nfunction isListLikeIterable(obj) {\n if (!isJsObject(obj))\n return false;\n return Array.isArray(obj) ||\n (!(obj instanceof Map) && // JS Map are iterables but return entries as [k, v]\n // JS Map are iterables but return entries as [k, v]\n getSymbolIterator() in obj); // JS Iterable have a Symbol.iterator prop\n}\n/**\n * @param {?} a\n * @param {?} b\n * @param {?} comparator\n * @return {?}\n */\nfunction areIterablesEqual(a, b, comparator) {\n var /** @type {?} */ iterator1 = a[getSymbolIterator()]();\n var /** @type {?} */ iterator2 = b[getSymbolIterator()]();\n while (true) {\n var /** @type {?} */ item1 = iterator1.next();\n var /** @type {?} */ item2 = iterator2.next();\n if (item1.done && item2.done)\n return true;\n if (item1.done || item2.done)\n return false;\n if (!comparator(item1.value, item2.value))\n return false;\n }\n}\n/**\n * @param {?} obj\n * @param {?} fn\n * @return {?}\n */\nfunction iterateListLike(obj, fn) {\n if (Array.isArray(obj)) {\n for (var /** @type {?} */ i = 0; i < obj.length; i++) {\n fn(obj[i]);\n }\n }\n else {\n var /** @type {?} */ iterator = obj[getSymbolIterator()]();\n var /** @type {?} */ item = void 0;\n while (!((item = iterator.next()).done)) {\n fn(item.value);\n }\n }\n}\n/**\n * @param {?} o\n * @return {?}\n */\nfunction isJsObject(o) {\n return o !== null && (typeof o === 'function' || typeof o === 'object');\n}\n\n/**\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 */\nvar DefaultIterableDifferFactory = /** @class */ (function () {\n function DefaultIterableDifferFactory() {\n }\n /**\n * @param {?} obj\n * @return {?}\n */\n DefaultIterableDifferFactory.prototype.supports = /**\n * @param {?} obj\n * @return {?}\n */\n function (obj) { return isListLikeIterable(obj); };\n /**\n * @template V\n * @param {?=} trackByFn\n * @return {?}\n */\n DefaultIterableDifferFactory.prototype.create = /**\n * @template V\n * @param {?=} trackByFn\n * @return {?}\n */\n function (trackByFn) {\n return new DefaultIterableDiffer(trackByFn);\n };\n return DefaultIterableDifferFactory;\n}());\nvar trackByIdentity = function (index, item) { return item; };\n/**\n * @deprecated v4.0.0 - Should not be part of public API.\n */\nvar DefaultIterableDiffer = /** @class */ (function () {\n function DefaultIterableDiffer(trackByFn) {\n this.length = 0;\n this._linkedRecords = null;\n this._unlinkedRecords = null;\n this._previousItHead = null;\n this._itHead = null;\n this._itTail = null;\n this._additionsHead = null;\n this._additionsTail = null;\n this._movesHead = null;\n this._movesTail = null;\n this._removalsHead = null;\n this._removalsTail = null;\n this._identityChangesHead = null;\n this._identityChangesTail = null;\n this._trackByFn = trackByFn || trackByIdentity;\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultIterableDiffer.prototype.forEachItem = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._itHead; record !== null; record = record._next) {\n fn(record);\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultIterableDiffer.prototype.forEachOperation = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ nextIt = this._itHead;\n var /** @type {?} */ nextRemove = this._removalsHead;\n var /** @type {?} */ addRemoveOffset = 0;\n var /** @type {?} */ moveOffsets = null;\n while (nextIt || nextRemove) {\n // Figure out which is the next record to process\n // Order: remove, add, move\n var /** @type {?} */ record = !nextRemove ||\n nextIt && /** @type {?} */ ((nextIt.currentIndex)) < getPreviousIndex(nextRemove, addRemoveOffset, moveOffsets) ? /** @type {?} */\n ((nextIt)) :\n nextRemove;\n var /** @type {?} */ adjPreviousIndex = getPreviousIndex(record, addRemoveOffset, moveOffsets);\n var /** @type {?} */ currentIndex = record.currentIndex;\n // consume the item, and adjust the addRemoveOffset and update moveDistance if necessary\n if (record === nextRemove) {\n addRemoveOffset--;\n nextRemove = nextRemove._nextRemoved;\n }\n else {\n nextIt = /** @type {?} */ ((nextIt))._next;\n if (record.previousIndex == null) {\n addRemoveOffset++;\n }\n else {\n // INVARIANT: currentIndex < previousIndex\n if (!moveOffsets)\n moveOffsets = [];\n var /** @type {?} */ localMovePreviousIndex = adjPreviousIndex - addRemoveOffset;\n var /** @type {?} */ localCurrentIndex = /** @type {?} */ ((currentIndex)) - addRemoveOffset;\n if (localMovePreviousIndex != localCurrentIndex) {\n for (var /** @type {?} */ i = 0; i < localMovePreviousIndex; i++) {\n var /** @type {?} */ offset = i < moveOffsets.length ? moveOffsets[i] : (moveOffsets[i] = 0);\n var /** @type {?} */ index = offset + i;\n if (localCurrentIndex <= index && index < localMovePreviousIndex) {\n moveOffsets[i] = offset + 1;\n }\n }\n var /** @type {?} */ previousIndex = record.previousIndex;\n moveOffsets[previousIndex] = localCurrentIndex - localMovePreviousIndex;\n }\n }\n }\n if (adjPreviousIndex !== currentIndex) {\n fn(record, adjPreviousIndex, currentIndex);\n }\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultIterableDiffer.prototype.forEachPreviousItem = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._previousItHead; record !== null; record = record._nextPrevious) {\n fn(record);\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultIterableDiffer.prototype.forEachAddedItem = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n fn(record);\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultIterableDiffer.prototype.forEachMovedItem = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._movesHead; record !== null; record = record._nextMoved) {\n fn(record);\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultIterableDiffer.prototype.forEachRemovedItem = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\n fn(record);\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultIterableDiffer.prototype.forEachIdentityChange = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._identityChangesHead; record !== null; record = record._nextIdentityChange) {\n fn(record);\n }\n };\n /**\n * @param {?} collection\n * @return {?}\n */\n DefaultIterableDiffer.prototype.diff = /**\n * @param {?} collection\n * @return {?}\n */\n function (collection) {\n if (collection == null)\n collection = [];\n if (!isListLikeIterable(collection)) {\n throw new Error(\"Error trying to diff '\" + stringify(collection) + \"'. Only arrays and iterables are allowed\");\n }\n if (this.check(collection)) {\n return this;\n }\n else {\n return null;\n }\n };\n /**\n * @return {?}\n */\n DefaultIterableDiffer.prototype.onDestroy = /**\n * @return {?}\n */\n function () { };\n /**\n * @param {?} collection\n * @return {?}\n */\n DefaultIterableDiffer.prototype.check = /**\n * @param {?} collection\n * @return {?}\n */\n function (collection) {\n var _this = this;\n this._reset();\n var /** @type {?} */ record = this._itHead;\n var /** @type {?} */ mayBeDirty = false;\n var /** @type {?} */ index;\n var /** @type {?} */ item;\n var /** @type {?} */ itemTrackBy;\n if (Array.isArray(collection)) {\n (/** @type {?} */ (this)).length = collection.length;\n for (var /** @type {?} */ index_1 = 0; index_1 < this.length; index_1++) {\n item = collection[index_1];\n itemTrackBy = this._trackByFn(index_1, item);\n if (record === null || !looseIdentical(record.trackById, itemTrackBy)) {\n record = this._mismatch(record, item, itemTrackBy, index_1);\n mayBeDirty = true;\n }\n else {\n if (mayBeDirty) {\n // TODO(misko): can we limit this to duplicates only?\n record = this._verifyReinsertion(record, item, itemTrackBy, index_1);\n }\n if (!looseIdentical(record.item, item))\n this._addIdentityChange(record, item);\n }\n record = record._next;\n }\n }\n else {\n index = 0;\n iterateListLike(collection, function (item) {\n itemTrackBy = _this._trackByFn(index, item);\n if (record === null || !looseIdentical(record.trackById, itemTrackBy)) {\n record = _this._mismatch(record, item, itemTrackBy, index);\n mayBeDirty = true;\n }\n else {\n if (mayBeDirty) {\n // TODO(misko): can we limit this to duplicates only?\n record = _this._verifyReinsertion(record, item, itemTrackBy, index);\n }\n if (!looseIdentical(record.item, item))\n _this._addIdentityChange(record, item);\n }\n record = record._next;\n index++;\n });\n (/** @type {?} */ (this)).length = index;\n }\n this._truncate(record);\n (/** @type {?} */ (this)).collection = collection;\n return this.isDirty;\n };\n Object.defineProperty(DefaultIterableDiffer.prototype, \"isDirty\", {\n /* CollectionChanges is considered dirty if it has any additions, moves, removals, or identity\n * changes.\n */\n get: /**\n * @return {?}\n */\n function () {\n return this._additionsHead !== null || this._movesHead !== null ||\n this._removalsHead !== null || this._identityChangesHead !== null;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Reset the state of the change objects to show no changes. This means set previousKey to\n * currentKey, and clear all of the queues (additions, moves, removals).\n * Set the previousIndexes of moved and added items to their currentIndexes\n * Reset the list of additions, moves and removals\n *\n * @internal\n */\n /**\n * Reset the state of the change objects to show no changes. This means set previousKey to\n * currentKey, and clear all of the queues (additions, moves, removals).\n * Set the previousIndexes of moved and added items to their currentIndexes\n * Reset the list of additions, moves and removals\n *\n * \\@internal\n * @return {?}\n */\n DefaultIterableDiffer.prototype._reset = /**\n * Reset the state of the change objects to show no changes. This means set previousKey to\n * currentKey, and clear all of the queues (additions, moves, removals).\n * Set the previousIndexes of moved and added items to their currentIndexes\n * Reset the list of additions, moves and removals\n *\n * \\@internal\n * @return {?}\n */\n function () {\n if (this.isDirty) {\n var /** @type {?} */ record = void 0;\n var /** @type {?} */ nextRecord = void 0;\n for (record = this._previousItHead = this._itHead; record !== null; record = record._next) {\n record._nextPrevious = record._next;\n }\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n record.previousIndex = record.currentIndex;\n }\n this._additionsHead = this._additionsTail = null;\n for (record = this._movesHead; record !== null; record = nextRecord) {\n record.previousIndex = record.currentIndex;\n nextRecord = record._nextMoved;\n }\n this._movesHead = this._movesTail = null;\n this._removalsHead = this._removalsTail = null;\n this._identityChangesHead = this._identityChangesTail = null;\n // todo(vicb) when assert gets supported\n // assert(!this.isDirty);\n }\n };\n /**\n * This is the core function which handles differences between collections.\n *\n * - `record` is the record which we saw at this position last time. If null then it is a new\n * item.\n * - `item` is the current item in the collection\n * - `index` is the position of the item in the collection\n *\n * @internal\n */\n /**\n * This is the core function which handles differences between collections.\n *\n * - `record` is the record which we saw at this position last time. If null then it is a new\n * item.\n * - `item` is the current item in the collection\n * - `index` is the position of the item in the collection\n *\n * \\@internal\n * @param {?} record\n * @param {?} item\n * @param {?} itemTrackBy\n * @param {?} index\n * @return {?}\n */\n DefaultIterableDiffer.prototype._mismatch = /**\n * This is the core function which handles differences between collections.\n *\n * - `record` is the record which we saw at this position last time. If null then it is a new\n * item.\n * - `item` is the current item in the collection\n * - `index` is the position of the item in the collection\n *\n * \\@internal\n * @param {?} record\n * @param {?} item\n * @param {?} itemTrackBy\n * @param {?} index\n * @return {?}\n */\n function (record, item, itemTrackBy, index) {\n // The previous record after which we will append the current one.\n var /** @type {?} */ previousRecord;\n if (record === null) {\n previousRecord = this._itTail;\n }\n else {\n previousRecord = record._prev;\n // Remove the record from the collection since we know it does not match the item.\n this._remove(record);\n }\n // Attempt to see if we have seen the item before.\n record = this._linkedRecords === null ? null : this._linkedRecords.get(itemTrackBy, index);\n if (record !== null) {\n // We have seen this before, we need to move it forward in the collection.\n // But first we need to check if identity changed, so we can update in view if necessary\n if (!looseIdentical(record.item, item))\n this._addIdentityChange(record, item);\n this._moveAfter(record, previousRecord, index);\n }\n else {\n // Never seen it, check evicted list.\n record = this._unlinkedRecords === null ? null : this._unlinkedRecords.get(itemTrackBy, null);\n if (record !== null) {\n // It is an item which we have evicted earlier: reinsert it back into the list.\n // But first we need to check if identity changed, so we can update in view if necessary\n if (!looseIdentical(record.item, item))\n this._addIdentityChange(record, item);\n this._reinsertAfter(record, previousRecord, index);\n }\n else {\n // It is a new item: add it.\n record =\n this._addAfter(new IterableChangeRecord_(item, itemTrackBy), previousRecord, index);\n }\n }\n return record;\n };\n /**\n * This check is only needed if an array contains duplicates. (Short circuit of nothing dirty)\n *\n * Use case: `[a, a]` => `[b, a, a]`\n *\n * If we did not have this check then the insertion of `b` would:\n * 1) evict first `a`\n * 2) insert `b` at `0` index.\n * 3) leave `a` at index `1` as is. <-- this is wrong!\n * 3) reinsert `a` at index 2. <-- this is wrong!\n *\n * The correct behavior is:\n * 1) evict first `a`\n * 2) insert `b` at `0` index.\n * 3) reinsert `a` at index 1.\n * 3) move `a` at from `1` to `2`.\n *\n *\n * Double check that we have not evicted a duplicate item. We need to check if the item type may\n * have already been removed:\n * The insertion of b will evict the first 'a'. If we don't reinsert it now it will be reinserted\n * at the end. Which will show up as the two 'a's switching position. This is incorrect, since a\n * better way to think of it is as insert of 'b' rather then switch 'a' with 'b' and then add 'a'\n * at the end.\n *\n * @internal\n */\n /**\n * This check is only needed if an array contains duplicates. (Short circuit of nothing dirty)\n *\n * Use case: `[a, a]` => `[b, a, a]`\n *\n * If we did not have this check then the insertion of `b` would:\n * 1) evict first `a`\n * 2) insert `b` at `0` index.\n * 3) leave `a` at index `1` as is. <-- this is wrong!\n * 3) reinsert `a` at index 2. <-- this is wrong!\n *\n * The correct behavior is:\n * 1) evict first `a`\n * 2) insert `b` at `0` index.\n * 3) reinsert `a` at index 1.\n * 3) move `a` at from `1` to `2`.\n *\n *\n * Double check that we have not evicted a duplicate item. We need to check if the item type may\n * have already been removed:\n * The insertion of b will evict the first 'a'. If we don't reinsert it now it will be reinserted\n * at the end. Which will show up as the two 'a's switching position. This is incorrect, since a\n * better way to think of it is as insert of 'b' rather then switch 'a' with 'b' and then add 'a'\n * at the end.\n *\n * \\@internal\n * @param {?} record\n * @param {?} item\n * @param {?} itemTrackBy\n * @param {?} index\n * @return {?}\n */\n DefaultIterableDiffer.prototype._verifyReinsertion = /**\n * This check is only needed if an array contains duplicates. (Short circuit of nothing dirty)\n *\n * Use case: `[a, a]` => `[b, a, a]`\n *\n * If we did not have this check then the insertion of `b` would:\n * 1) evict first `a`\n * 2) insert `b` at `0` index.\n * 3) leave `a` at index `1` as is. <-- this is wrong!\n * 3) reinsert `a` at index 2. <-- this is wrong!\n *\n * The correct behavior is:\n * 1) evict first `a`\n * 2) insert `b` at `0` index.\n * 3) reinsert `a` at index 1.\n * 3) move `a` at from `1` to `2`.\n *\n *\n * Double check that we have not evicted a duplicate item. We need to check if the item type may\n * have already been removed:\n * The insertion of b will evict the first 'a'. If we don't reinsert it now it will be reinserted\n * at the end. Which will show up as the two 'a's switching position. This is incorrect, since a\n * better way to think of it is as insert of 'b' rather then switch 'a' with 'b' and then add 'a'\n * at the end.\n *\n * \\@internal\n * @param {?} record\n * @param {?} item\n * @param {?} itemTrackBy\n * @param {?} index\n * @return {?}\n */\n function (record, item, itemTrackBy, index) {\n var /** @type {?} */ reinsertRecord = this._unlinkedRecords === null ? null : this._unlinkedRecords.get(itemTrackBy, null);\n if (reinsertRecord !== null) {\n record = this._reinsertAfter(reinsertRecord, /** @type {?} */ ((record._prev)), index);\n }\n else if (record.currentIndex != index) {\n record.currentIndex = index;\n this._addToMoves(record, index);\n }\n return record;\n };\n /**\n * Get rid of any excess {@link IterableChangeRecord_}s from the previous collection\n *\n * - `record` The first excess {@link IterableChangeRecord_}.\n *\n * @internal\n */\n /**\n * Get rid of any excess {\\@link IterableChangeRecord_}s from the previous collection\n *\n * - `record` The first excess {\\@link IterableChangeRecord_}.\n *\n * \\@internal\n * @param {?} record\n * @return {?}\n */\n DefaultIterableDiffer.prototype._truncate = /**\n * Get rid of any excess {\\@link IterableChangeRecord_}s from the previous collection\n *\n * - `record` The first excess {\\@link IterableChangeRecord_}.\n *\n * \\@internal\n * @param {?} record\n * @return {?}\n */\n function (record) {\n // Anything after that needs to be removed;\n while (record !== null) {\n var /** @type {?} */ nextRecord = record._next;\n this._addToRemovals(this._unlink(record));\n record = nextRecord;\n }\n if (this._unlinkedRecords !== null) {\n this._unlinkedRecords.clear();\n }\n if (this._additionsTail !== null) {\n this._additionsTail._nextAdded = null;\n }\n if (this._movesTail !== null) {\n this._movesTail._nextMoved = null;\n }\n if (this._itTail !== null) {\n this._itTail._next = null;\n }\n if (this._removalsTail !== null) {\n this._removalsTail._nextRemoved = null;\n }\n if (this._identityChangesTail !== null) {\n this._identityChangesTail._nextIdentityChange = null;\n }\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n DefaultIterableDiffer.prototype._reinsertAfter = /**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n function (record, prevRecord, index) {\n if (this._unlinkedRecords !== null) {\n this._unlinkedRecords.remove(record);\n }\n var /** @type {?} */ prev = record._prevRemoved;\n var /** @type {?} */ next = record._nextRemoved;\n if (prev === null) {\n this._removalsHead = next;\n }\n else {\n prev._nextRemoved = next;\n }\n if (next === null) {\n this._removalsTail = prev;\n }\n else {\n next._prevRemoved = prev;\n }\n this._insertAfter(record, prevRecord, index);\n this._addToMoves(record, index);\n return record;\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n DefaultIterableDiffer.prototype._moveAfter = /**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n function (record, prevRecord, index) {\n this._unlink(record);\n this._insertAfter(record, prevRecord, index);\n this._addToMoves(record, index);\n return record;\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n DefaultIterableDiffer.prototype._addAfter = /**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n function (record, prevRecord, index) {\n this._insertAfter(record, prevRecord, index);\n if (this._additionsTail === null) {\n // todo(vicb)\n // assert(this._additionsHead === null);\n this._additionsTail = this._additionsHead = record;\n }\n else {\n // todo(vicb)\n // assert(_additionsTail._nextAdded === null);\n // assert(record._nextAdded === null);\n this._additionsTail = this._additionsTail._nextAdded = record;\n }\n return record;\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n DefaultIterableDiffer.prototype._insertAfter = /**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n function (record, prevRecord, index) {\n // todo(vicb)\n // assert(record != prevRecord);\n // assert(record._next === null);\n // assert(record._prev === null);\n var /** @type {?} */ next = prevRecord === null ? this._itHead : prevRecord._next;\n // todo(vicb)\n // assert(next != record);\n // assert(prevRecord != record);\n record._next = next;\n record._prev = prevRecord;\n if (next === null) {\n this._itTail = record;\n }\n else {\n next._prev = record;\n }\n if (prevRecord === null) {\n this._itHead = record;\n }\n else {\n prevRecord._next = record;\n }\n if (this._linkedRecords === null) {\n this._linkedRecords = new _DuplicateMap();\n }\n this._linkedRecords.put(record);\n record.currentIndex = index;\n return record;\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} record\n * @return {?}\n */\n DefaultIterableDiffer.prototype._remove = /**\n * \\@internal\n * @param {?} record\n * @return {?}\n */\n function (record) {\n return this._addToRemovals(this._unlink(record));\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} record\n * @return {?}\n */\n DefaultIterableDiffer.prototype._unlink = /**\n * \\@internal\n * @param {?} record\n * @return {?}\n */\n function (record) {\n if (this._linkedRecords !== null) {\n this._linkedRecords.remove(record);\n }\n var /** @type {?} */ prev = record._prev;\n var /** @type {?} */ next = record._next;\n // todo(vicb)\n // assert((record._prev = null) === null);\n // assert((record._next = null) === null);\n if (prev === null) {\n this._itHead = next;\n }\n else {\n prev._next = next;\n }\n if (next === null) {\n this._itTail = prev;\n }\n else {\n next._prev = prev;\n }\n return record;\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} record\n * @param {?} toIndex\n * @return {?}\n */\n DefaultIterableDiffer.prototype._addToMoves = /**\n * \\@internal\n * @param {?} record\n * @param {?} toIndex\n * @return {?}\n */\n function (record, toIndex) {\n // todo(vicb)\n // assert(record._nextMoved === null);\n if (record.previousIndex === toIndex) {\n return record;\n }\n if (this._movesTail === null) {\n // todo(vicb)\n // assert(_movesHead === null);\n this._movesTail = this._movesHead = record;\n }\n else {\n // todo(vicb)\n // assert(_movesTail._nextMoved === null);\n this._movesTail = this._movesTail._nextMoved = record;\n }\n return record;\n };\n /**\n * @param {?} record\n * @return {?}\n */\n DefaultIterableDiffer.prototype._addToRemovals = /**\n * @param {?} record\n * @return {?}\n */\n function (record) {\n if (this._unlinkedRecords === null) {\n this._unlinkedRecords = new _DuplicateMap();\n }\n this._unlinkedRecords.put(record);\n record.currentIndex = null;\n record._nextRemoved = null;\n if (this._removalsTail === null) {\n // todo(vicb)\n // assert(_removalsHead === null);\n this._removalsTail = this._removalsHead = record;\n record._prevRemoved = null;\n }\n else {\n // todo(vicb)\n // assert(_removalsTail._nextRemoved === null);\n // assert(record._nextRemoved === null);\n record._prevRemoved = this._removalsTail;\n this._removalsTail = this._removalsTail._nextRemoved = record;\n }\n return record;\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} record\n * @param {?} item\n * @return {?}\n */\n DefaultIterableDiffer.prototype._addIdentityChange = /**\n * \\@internal\n * @param {?} record\n * @param {?} item\n * @return {?}\n */\n function (record, item) {\n record.item = item;\n if (this._identityChangesTail === null) {\n this._identityChangesTail = this._identityChangesHead = record;\n }\n else {\n this._identityChangesTail = this._identityChangesTail._nextIdentityChange = record;\n }\n return record;\n };\n return DefaultIterableDiffer;\n}());\n/**\n * \\@stable\n */\nvar IterableChangeRecord_ = /** @class */ (function () {\n function IterableChangeRecord_(item, trackById) {\n this.item = item;\n this.trackById = trackById;\n this.currentIndex = null;\n this.previousIndex = null;\n /**\n * \\@internal\n */\n this._nextPrevious = null;\n /**\n * \\@internal\n */\n this._prev = null;\n /**\n * \\@internal\n */\n this._next = null;\n /**\n * \\@internal\n */\n this._prevDup = null;\n /**\n * \\@internal\n */\n this._nextDup = null;\n /**\n * \\@internal\n */\n this._prevRemoved = null;\n /**\n * \\@internal\n */\n this._nextRemoved = null;\n /**\n * \\@internal\n */\n this._nextAdded = null;\n /**\n * \\@internal\n */\n this._nextMoved = null;\n /**\n * \\@internal\n */\n this._nextIdentityChange = null;\n }\n return IterableChangeRecord_;\n}());\nvar _DuplicateItemRecordList = /** @class */ (function () {\n function _DuplicateItemRecordList() {\n /**\n * \\@internal\n */\n this._head = null;\n /**\n * \\@internal\n */\n this._tail = null;\n }\n /**\n * Append the record to the list of duplicates.\n *\n * Note: by design all records in the list of duplicates hold the same value in record.item.\n */\n /**\n * Append the record to the list of duplicates.\n *\n * Note: by design all records in the list of duplicates hold the same value in record.item.\n * @param {?} record\n * @return {?}\n */\n _DuplicateItemRecordList.prototype.add = /**\n * Append the record to the list of duplicates.\n *\n * Note: by design all records in the list of duplicates hold the same value in record.item.\n * @param {?} record\n * @return {?}\n */\n function (record) {\n if (this._head === null) {\n this._head = this._tail = record;\n record._nextDup = null;\n record._prevDup = null;\n }\n else {\n /** @type {?} */ ((\n // todo(vicb)\n // assert(record.item == _head.item ||\n // record.item is num && record.item.isNaN && _head.item is num && _head.item.isNaN);\n this._tail))._nextDup = record;\n record._prevDup = this._tail;\n record._nextDup = null;\n this._tail = record;\n }\n };\n // Returns a IterableChangeRecord_ having IterableChangeRecord_.trackById == trackById and\n // IterableChangeRecord_.currentIndex >= atOrAfterIndex\n /**\n * @param {?} trackById\n * @param {?} atOrAfterIndex\n * @return {?}\n */\n _DuplicateItemRecordList.prototype.get = /**\n * @param {?} trackById\n * @param {?} atOrAfterIndex\n * @return {?}\n */\n function (trackById, atOrAfterIndex) {\n var /** @type {?} */ record;\n for (record = this._head; record !== null; record = record._nextDup) {\n if ((atOrAfterIndex === null || atOrAfterIndex <= /** @type {?} */ ((record.currentIndex))) &&\n looseIdentical(record.trackById, trackById)) {\n return record;\n }\n }\n return null;\n };\n /**\n * Remove one {@link IterableChangeRecord_} from the list of duplicates.\n *\n * Returns whether the list of duplicates is empty.\n */\n /**\n * Remove one {\\@link IterableChangeRecord_} from the list of duplicates.\n *\n * Returns whether the list of duplicates is empty.\n * @param {?} record\n * @return {?}\n */\n _DuplicateItemRecordList.prototype.remove = /**\n * Remove one {\\@link IterableChangeRecord_} from the list of duplicates.\n *\n * Returns whether the list of duplicates is empty.\n * @param {?} record\n * @return {?}\n */\n function (record) {\n // todo(vicb)\n // assert(() {\n // // verify that the record being removed is in the list.\n // for (IterableChangeRecord_ cursor = _head; cursor != null; cursor = cursor._nextDup) {\n // if (identical(cursor, record)) return true;\n // }\n // return false;\n //});\n var /** @type {?} */ prev = record._prevDup;\n var /** @type {?} */ next = record._nextDup;\n if (prev === null) {\n this._head = next;\n }\n else {\n prev._nextDup = next;\n }\n if (next === null) {\n this._tail = prev;\n }\n else {\n next._prevDup = prev;\n }\n return this._head === null;\n };\n return _DuplicateItemRecordList;\n}());\nvar _DuplicateMap = /** @class */ (function () {\n function _DuplicateMap() {\n this.map = new Map();\n }\n /**\n * @param {?} record\n * @return {?}\n */\n _DuplicateMap.prototype.put = /**\n * @param {?} record\n * @return {?}\n */\n function (record) {\n var /** @type {?} */ key = record.trackById;\n var /** @type {?} */ duplicates = this.map.get(key);\n if (!duplicates) {\n duplicates = new _DuplicateItemRecordList();\n this.map.set(key, duplicates);\n }\n duplicates.add(record);\n };\n /**\n * Retrieve the `value` using key. Because the IterableChangeRecord_ value may be one which we\n * have already iterated over, we use the `atOrAfterIndex` to pretend it is not there.\n *\n * Use case: `[a, b, c, a, a]` if we are at index `3` which is the second `a` then asking if we\n * have any more `a`s needs to return the second `a`.\n */\n /**\n * Retrieve the `value` using key. Because the IterableChangeRecord_ value may be one which we\n * have already iterated over, we use the `atOrAfterIndex` to pretend it is not there.\n *\n * Use case: `[a, b, c, a, a]` if we are at index `3` which is the second `a` then asking if we\n * have any more `a`s needs to return the second `a`.\n * @param {?} trackById\n * @param {?} atOrAfterIndex\n * @return {?}\n */\n _DuplicateMap.prototype.get = /**\n * Retrieve the `value` using key. Because the IterableChangeRecord_ value may be one which we\n * have already iterated over, we use the `atOrAfterIndex` to pretend it is not there.\n *\n * Use case: `[a, b, c, a, a]` if we are at index `3` which is the second `a` then asking if we\n * have any more `a`s needs to return the second `a`.\n * @param {?} trackById\n * @param {?} atOrAfterIndex\n * @return {?}\n */\n function (trackById, atOrAfterIndex) {\n var /** @type {?} */ key = trackById;\n var /** @type {?} */ recordList = this.map.get(key);\n return recordList ? recordList.get(trackById, atOrAfterIndex) : null;\n };\n /**\n * Removes a {@link IterableChangeRecord_} from the list of duplicates.\n *\n * The list of duplicates also is removed from the map if it gets empty.\n */\n /**\n * Removes a {\\@link IterableChangeRecord_} from the list of duplicates.\n *\n * The list of duplicates also is removed from the map if it gets empty.\n * @param {?} record\n * @return {?}\n */\n _DuplicateMap.prototype.remove = /**\n * Removes a {\\@link IterableChangeRecord_} from the list of duplicates.\n *\n * The list of duplicates also is removed from the map if it gets empty.\n * @param {?} record\n * @return {?}\n */\n function (record) {\n var /** @type {?} */ key = record.trackById;\n var /** @type {?} */ recordList = /** @type {?} */ ((this.map.get(key)));\n // Remove the list of duplicates when it gets empty\n if (recordList.remove(record)) {\n this.map.delete(key);\n }\n return record;\n };\n Object.defineProperty(_DuplicateMap.prototype, \"isEmpty\", {\n get: /**\n * @return {?}\n */\n function () { return this.map.size === 0; },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n _DuplicateMap.prototype.clear = /**\n * @return {?}\n */\n function () { this.map.clear(); };\n return _DuplicateMap;\n}());\n/**\n * @param {?} item\n * @param {?} addRemoveOffset\n * @param {?} moveOffsets\n * @return {?}\n */\nfunction getPreviousIndex(item, addRemoveOffset, moveOffsets) {\n var /** @type {?} */ previousIndex = item.previousIndex;\n if (previousIndex === null)\n return previousIndex;\n var /** @type {?} */ moveOffset = 0;\n if (moveOffsets && previousIndex < moveOffsets.length) {\n moveOffset = moveOffsets[previousIndex];\n }\n return previousIndex + addRemoveOffset + moveOffset;\n}\n\n/**\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 */\nvar DefaultKeyValueDifferFactory = /** @class */ (function () {\n function DefaultKeyValueDifferFactory() {\n }\n /**\n * @param {?} obj\n * @return {?}\n */\n DefaultKeyValueDifferFactory.prototype.supports = /**\n * @param {?} obj\n * @return {?}\n */\n function (obj) { return obj instanceof Map || isJsObject(obj); };\n /**\n * @template K, V\n * @return {?}\n */\n DefaultKeyValueDifferFactory.prototype.create = /**\n * @template K, V\n * @return {?}\n */\n function () { return new DefaultKeyValueDiffer(); };\n return DefaultKeyValueDifferFactory;\n}());\nvar DefaultKeyValueDiffer = /** @class */ (function () {\n function DefaultKeyValueDiffer() {\n this._records = new Map();\n this._mapHead = null;\n this._appendAfter = null;\n this._previousMapHead = null;\n this._changesHead = null;\n this._changesTail = null;\n this._additionsHead = null;\n this._additionsTail = null;\n this._removalsHead = null;\n this._removalsTail = null;\n }\n Object.defineProperty(DefaultKeyValueDiffer.prototype, \"isDirty\", {\n get: /**\n * @return {?}\n */\n function () {\n return this._additionsHead !== null || this._changesHead !== null ||\n this._removalsHead !== null;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype.forEachItem = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._mapHead; record !== null; record = record._next) {\n fn(record);\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype.forEachPreviousItem = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._previousMapHead; record !== null; record = record._nextPrevious) {\n fn(record);\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype.forEachChangedItem = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\n fn(record);\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype.forEachAddedItem = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n fn(record);\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype.forEachRemovedItem = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\n fn(record);\n }\n };\n /**\n * @param {?=} map\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype.diff = /**\n * @param {?=} map\n * @return {?}\n */\n function (map) {\n if (!map) {\n map = new Map();\n }\n else if (!(map instanceof Map || isJsObject(map))) {\n throw new Error(\"Error trying to diff '\" + stringify(map) + \"'. Only maps and objects are allowed\");\n }\n return this.check(map) ? this : null;\n };\n /**\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype.onDestroy = /**\n * @return {?}\n */\n function () { };\n /**\n * Check the current state of the map vs the previous.\n * The algorithm is optimised for when the keys do no change.\n */\n /**\n * Check the current state of the map vs the previous.\n * The algorithm is optimised for when the keys do no change.\n * @param {?} map\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype.check = /**\n * Check the current state of the map vs the previous.\n * The algorithm is optimised for when the keys do no change.\n * @param {?} map\n * @return {?}\n */\n function (map) {\n var _this = this;\n this._reset();\n var /** @type {?} */ insertBefore = this._mapHead;\n this._appendAfter = null;\n this._forEach(map, function (value, key) {\n if (insertBefore && insertBefore.key === key) {\n _this._maybeAddToChanges(insertBefore, value);\n _this._appendAfter = insertBefore;\n insertBefore = insertBefore._next;\n }\n else {\n var /** @type {?} */ record = _this._getOrCreateRecordForKey(key, value);\n insertBefore = _this._insertBeforeOrAppend(insertBefore, record);\n }\n });\n // Items remaining at the end of the list have been deleted\n if (insertBefore) {\n if (insertBefore._prev) {\n insertBefore._prev._next = null;\n }\n this._removalsHead = insertBefore;\n for (var /** @type {?} */ record = insertBefore; record !== null; record = record._nextRemoved) {\n if (record === this._mapHead) {\n this._mapHead = null;\n }\n this._records.delete(record.key);\n record._nextRemoved = record._next;\n record.previousValue = record.currentValue;\n record.currentValue = null;\n record._prev = null;\n record._next = null;\n }\n }\n // Make sure tails have no next records from previous runs\n if (this._changesTail)\n this._changesTail._nextChanged = null;\n if (this._additionsTail)\n this._additionsTail._nextAdded = null;\n return this.isDirty;\n };\n /**\n * Inserts a record before `before` or append at the end of the list when `before` is null.\n *\n * Notes:\n * - This method appends at `this._appendAfter`,\n * - This method updates `this._appendAfter`,\n * - The return value is the new value for the insertion pointer.\n * @param {?} before\n * @param {?} record\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype._insertBeforeOrAppend = /**\n * Inserts a record before `before` or append at the end of the list when `before` is null.\n *\n * Notes:\n * - This method appends at `this._appendAfter`,\n * - This method updates `this._appendAfter`,\n * - The return value is the new value for the insertion pointer.\n * @param {?} before\n * @param {?} record\n * @return {?}\n */\n function (before, record) {\n if (before) {\n var /** @type {?} */ prev = before._prev;\n record._next = before;\n record._prev = prev;\n before._prev = record;\n if (prev) {\n prev._next = record;\n }\n if (before === this._mapHead) {\n this._mapHead = record;\n }\n this._appendAfter = before;\n return before;\n }\n if (this._appendAfter) {\n this._appendAfter._next = record;\n record._prev = this._appendAfter;\n }\n else {\n this._mapHead = record;\n }\n this._appendAfter = record;\n return null;\n };\n /**\n * @param {?} key\n * @param {?} value\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype._getOrCreateRecordForKey = /**\n * @param {?} key\n * @param {?} value\n * @return {?}\n */\n function (key, value) {\n if (this._records.has(key)) {\n var /** @type {?} */ record_1 = /** @type {?} */ ((this._records.get(key)));\n this._maybeAddToChanges(record_1, value);\n var /** @type {?} */ prev = record_1._prev;\n var /** @type {?} */ next = record_1._next;\n if (prev) {\n prev._next = next;\n }\n if (next) {\n next._prev = prev;\n }\n record_1._next = null;\n record_1._prev = null;\n return record_1;\n }\n var /** @type {?} */ record = new KeyValueChangeRecord_(key);\n this._records.set(key, record);\n record.currentValue = value;\n this._addToAdditions(record);\n return record;\n };\n /** @internal */\n /**\n * \\@internal\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype._reset = /**\n * \\@internal\n * @return {?}\n */\n function () {\n if (this.isDirty) {\n var /** @type {?} */ record = void 0;\n // let `_previousMapHead` contain the state of the map before the changes\n this._previousMapHead = this._mapHead;\n for (record = this._previousMapHead; record !== null; record = record._next) {\n record._nextPrevious = record._next;\n }\n // Update `record.previousValue` with the value of the item before the changes\n // We need to update all changed items (that's those which have been added and changed)\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\n record.previousValue = record.currentValue;\n }\n for (record = this._additionsHead; record != null; record = record._nextAdded) {\n record.previousValue = record.currentValue;\n }\n this._changesHead = this._changesTail = null;\n this._additionsHead = this._additionsTail = null;\n this._removalsHead = null;\n }\n };\n /**\n * @param {?} record\n * @param {?} newValue\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype._maybeAddToChanges = /**\n * @param {?} record\n * @param {?} newValue\n * @return {?}\n */\n function (record, newValue) {\n if (!looseIdentical(newValue, record.currentValue)) {\n record.previousValue = record.currentValue;\n record.currentValue = newValue;\n this._addToChanges(record);\n }\n };\n /**\n * @param {?} record\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype._addToAdditions = /**\n * @param {?} record\n * @return {?}\n */\n function (record) {\n if (this._additionsHead === null) {\n this._additionsHead = this._additionsTail = record;\n }\n else {\n /** @type {?} */ ((this._additionsTail))._nextAdded = record;\n this._additionsTail = record;\n }\n };\n /**\n * @param {?} record\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype._addToChanges = /**\n * @param {?} record\n * @return {?}\n */\n function (record) {\n if (this._changesHead === null) {\n this._changesHead = this._changesTail = record;\n }\n else {\n /** @type {?} */ ((this._changesTail))._nextChanged = record;\n this._changesTail = record;\n }\n };\n /**\n * \\@internal\n * @template K, V\n * @param {?} obj\n * @param {?} fn\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype._forEach = /**\n * \\@internal\n * @template K, V\n * @param {?} obj\n * @param {?} fn\n * @return {?}\n */\n function (obj, fn) {\n if (obj instanceof Map) {\n obj.forEach(fn);\n }\n else {\n Object.keys(obj).forEach(function (k) { return fn(obj[k], k); });\n }\n };\n return DefaultKeyValueDiffer;\n}());\n/**\n * \\@stable\n */\nvar KeyValueChangeRecord_ = /** @class */ (function () {\n function KeyValueChangeRecord_(key) {\n this.key = key;\n this.previousValue = null;\n this.currentValue = null;\n /**\n * \\@internal\n */\n this._nextPrevious = null;\n /**\n * \\@internal\n */\n this._next = null;\n /**\n * \\@internal\n */\n this._prev = null;\n /**\n * \\@internal\n */\n this._nextAdded = null;\n /**\n * \\@internal\n */\n this._nextRemoved = null;\n /**\n * \\@internal\n */\n this._nextChanged = null;\n }\n return KeyValueChangeRecord_;\n}());\n\n/**\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 * A strategy for tracking changes over time to an iterable. Used by {\\@link NgForOf} to\n * respond to changes in an iterable by effecting equivalent changes in the DOM.\n *\n * \\@stable\n * @record\n */\n\n/**\n * An object describing the changes in the `Iterable` collection since last time\n * `IterableDiffer#diff()` was invoked.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Record representing the item change information.\n *\n * \\@stable\n * @record\n */\n\n/**\n * @deprecated v4.0.0 - Use IterableChangeRecord instead.\n * @record\n */\n\n/**\n * An optional function passed into {\\@link NgForOf} that defines how to track\n * items in an iterable (e.g. fby index or id)\n *\n * \\@stable\n * @record\n */\n\n/**\n * Provides a factory for {\\@link IterableDiffer}.\n *\n * \\@stable\n * @record\n */\n\n/**\n * A repository of different iterable diffing strategies used by NgFor, NgClass, and others.\n * \\@stable\n */\nvar IterableDiffers = /** @class */ (function () {\n function IterableDiffers(factories) {\n this.factories = factories;\n }\n /**\n * @param {?} factories\n * @param {?=} parent\n * @return {?}\n */\n IterableDiffers.create = /**\n * @param {?} factories\n * @param {?=} parent\n * @return {?}\n */\n function (factories, parent) {\n if (parent != null) {\n var /** @type {?} */ copied = parent.factories.slice();\n factories = factories.concat(copied);\n return new IterableDiffers(factories);\n }\n else {\n return new IterableDiffers(factories);\n }\n };\n /**\n * Takes an array of {@link IterableDifferFactory} and returns a provider used to extend the\n * inherited {@link IterableDiffers} instance with the provided factories and return a new\n * {@link IterableDiffers} instance.\n *\n * The following example shows how to extend an existing list of factories,\n * which will only be applied to the injector for this component and its children.\n * This step is all that's required to make a new {@link IterableDiffer} available.\n *\n * ### Example\n *\n * ```\n * @Component({\n * viewProviders: [\n * IterableDiffers.extend([new ImmutableListDiffer()])\n * ]\n * })\n * ```\n */\n /**\n * Takes an array of {\\@link IterableDifferFactory} and returns a provider used to extend the\n * inherited {\\@link IterableDiffers} instance with the provided factories and return a new\n * {\\@link IterableDiffers} instance.\n *\n * The following example shows how to extend an existing list of factories,\n * which will only be applied to the injector for this component and its children.\n * This step is all that's required to make a new {\\@link IterableDiffer} available.\n *\n * ### Example\n *\n * ```\n * \\@Component({\n * viewProviders: [\n * IterableDiffers.extend([new ImmutableListDiffer()])\n * ]\n * })\n * ```\n * @param {?} factories\n * @return {?}\n */\n IterableDiffers.extend = /**\n * Takes an array of {\\@link IterableDifferFactory} and returns a provider used to extend the\n * inherited {\\@link IterableDiffers} instance with the provided factories and return a new\n * {\\@link IterableDiffers} instance.\n *\n * The following example shows how to extend an existing list of factories,\n * which will only be applied to the injector for this component and its children.\n * This step is all that's required to make a new {\\@link IterableDiffer} available.\n *\n * ### Example\n *\n * ```\n * \\@Component({\n * viewProviders: [\n * IterableDiffers.extend([new ImmutableListDiffer()])\n * ]\n * })\n * ```\n * @param {?} factories\n * @return {?}\n */\n function (factories) {\n return {\n provide: IterableDiffers,\n useFactory: function (parent) {\n if (!parent) {\n // Typically would occur when calling IterableDiffers.extend inside of dependencies passed\n // to\n // bootstrap(), which would override default pipes instead of extending them.\n throw new Error('Cannot extend IterableDiffers without a parent injector');\n }\n return IterableDiffers.create(factories, parent);\n },\n // Dependency technically isn't optional, but we can provide a better error message this way.\n deps: [[IterableDiffers, new SkipSelf(), new Optional()]]\n };\n };\n /**\n * @param {?} iterable\n * @return {?}\n */\n IterableDiffers.prototype.find = /**\n * @param {?} iterable\n * @return {?}\n */\n function (iterable) {\n var /** @type {?} */ factory = this.factories.find(function (f) { return f.supports(iterable); });\n if (factory != null) {\n return factory;\n }\n else {\n throw new Error(\"Cannot find a differ supporting object '\" + iterable + \"' of type '\" + getTypeNameForDebugging(iterable) + \"'\");\n }\n };\n return IterableDiffers;\n}());\n/**\n * @param {?} type\n * @return {?}\n */\nfunction getTypeNameForDebugging(type) {\n return type['name'] || typeof type;\n}\n\n/**\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 * A differ that tracks changes made to an object over time.\n *\n * \\@stable\n * @record\n */\n\n/**\n * An object describing the changes in the `Map` or `{[k:string]: string}` since last time\n * `KeyValueDiffer#diff()` was invoked.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Record representing the item change information.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Provides a factory for {\\@link KeyValueDiffer}.\n *\n * \\@stable\n * @record\n */\n\n/**\n * A repository of different Map diffing strategies used by NgClass, NgStyle, and others.\n * \\@stable\n */\nvar KeyValueDiffers = /** @class */ (function () {\n function KeyValueDiffers(factories) {\n this.factories = factories;\n }\n /**\n * @template S\n * @param {?} factories\n * @param {?=} parent\n * @return {?}\n */\n KeyValueDiffers.create = /**\n * @template S\n * @param {?} factories\n * @param {?=} parent\n * @return {?}\n */\n function (factories, parent) {\n if (parent) {\n var /** @type {?} */ copied = parent.factories.slice();\n factories = factories.concat(copied);\n }\n return new KeyValueDiffers(factories);\n };\n /**\n * Takes an array of {@link KeyValueDifferFactory} and returns a provider used to extend the\n * inherited {@link KeyValueDiffers} instance with the provided factories and return a new\n * {@link KeyValueDiffers} instance.\n *\n * The following example shows how to extend an existing list of factories,\n * which will only be applied to the injector for this component and its children.\n * This step is all that's required to make a new {@link KeyValueDiffer} available.\n *\n * ### Example\n *\n * ```\n * @Component({\n * viewProviders: [\n * KeyValueDiffers.extend([new ImmutableMapDiffer()])\n * ]\n * })\n * ```\n */\n /**\n * Takes an array of {\\@link KeyValueDifferFactory} and returns a provider used to extend the\n * inherited {\\@link KeyValueDiffers} instance with the provided factories and return a new\n * {\\@link KeyValueDiffers} instance.\n *\n * The following example shows how to extend an existing list of factories,\n * which will only be applied to the injector for this component and its children.\n * This step is all that's required to make a new {\\@link KeyValueDiffer} available.\n *\n * ### Example\n *\n * ```\n * \\@Component({\n * viewProviders: [\n * KeyValueDiffers.extend([new ImmutableMapDiffer()])\n * ]\n * })\n * ```\n * @template S\n * @param {?} factories\n * @return {?}\n */\n KeyValueDiffers.extend = /**\n * Takes an array of {\\@link KeyValueDifferFactory} and returns a provider used to extend the\n * inherited {\\@link KeyValueDiffers} instance with the provided factories and return a new\n * {\\@link KeyValueDiffers} instance.\n *\n * The following example shows how to extend an existing list of factories,\n * which will only be applied to the injector for this component and its children.\n * This step is all that's required to make a new {\\@link KeyValueDiffer} available.\n *\n * ### Example\n *\n * ```\n * \\@Component({\n * viewProviders: [\n * KeyValueDiffers.extend([new ImmutableMapDiffer()])\n * ]\n * })\n * ```\n * @template S\n * @param {?} factories\n * @return {?}\n */\n function (factories) {\n return {\n provide: KeyValueDiffers,\n useFactory: function (parent) {\n if (!parent) {\n // Typically would occur when calling KeyValueDiffers.extend inside of dependencies passed\n // to bootstrap(), which would override default pipes instead of extending them.\n throw new Error('Cannot extend KeyValueDiffers without a parent injector');\n }\n return KeyValueDiffers.create(factories, parent);\n },\n // Dependency technically isn't optional, but we can provide a better error message this way.\n deps: [[KeyValueDiffers, new SkipSelf(), new Optional()]]\n };\n };\n /**\n * @param {?} kv\n * @return {?}\n */\n KeyValueDiffers.prototype.find = /**\n * @param {?} kv\n * @return {?}\n */\n function (kv) {\n var /** @type {?} */ factory = this.factories.find(function (f) { return f.supports(kv); });\n if (factory) {\n return factory;\n }\n throw new Error(\"Cannot find a differ supporting object '\" + kv + \"'\");\n };\n return KeyValueDiffers;\n}());\n\n/**\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 * Structural diffing for `Object`s and `Map`s.\n */\nvar keyValDiff = [new DefaultKeyValueDifferFactory()];\n/**\n * Structural diffing for `Iterable` types such as `Array`s.\n */\nvar iterableDiff = [new DefaultIterableDifferFactory()];\nvar defaultIterableDiffers = new IterableDiffers(iterableDiff);\nvar defaultKeyValueDiffers = new KeyValueDiffers(keyValDiff);\n\n/**\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/**\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 */\nvar _CORE_PLATFORM_PROVIDERS = [\n // Set a default platform name for platforms that don't set it explicitly.\n { provide: PLATFORM_ID, useValue: 'unknown' },\n { provide: PlatformRef, deps: [Injector] },\n { provide: TestabilityRegistry, deps: [] },\n { provide: Console, deps: [] },\n];\n/**\n * This platform has to be included in any other platform\n *\n * \\@experimental\n */\nvar platformCore = createPlatformFactory(null, 'core', _CORE_PLATFORM_PROVIDERS);\n\n/**\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 * Provide this token to set the locale of your application.\n * It is used for i18n extraction, by i18n pipes (DatePipe, I18nPluralPipe, CurrencyPipe,\n * DecimalPipe and PercentPipe) and by ICU expressions.\n *\n * See the {\\@linkDocs guide/i18n#setting-up-locale i18n guide} for more information.\n *\n * ### Example\n *\n * ```typescript\n * import { LOCALE_ID } from '\\@angular/core';\n * import { platformBrowserDynamic } from '\\@angular/platform-browser-dynamic';\n * import { AppModule } from './app/app.module';\n *\n * platformBrowserDynamic().bootstrapModule(AppModule, {\n * providers: [{provide: LOCALE_ID, useValue: 'en-US' }]\n * });\n * ```\n *\n * \\@experimental i18n support is experimental.\n */\nvar LOCALE_ID = new InjectionToken('LocaleId');\n/**\n * Use this token at bootstrap to provide the content of your translation file (`xtb`,\n * `xlf` or `xlf2`) when you want to translate your application in another language.\n *\n * See the {\\@linkDocs guide/i18n#merge i18n guide} for more information.\n *\n * ### Example\n *\n * ```typescript\n * import { TRANSLATIONS } from '\\@angular/core';\n * import { platformBrowserDynamic } from '\\@angular/platform-browser-dynamic';\n * import { AppModule } from './app/app.module';\n *\n * // content of your translation file\n * const translations = '....';\n *\n * platformBrowserDynamic().bootstrapModule(AppModule, {\n * providers: [{provide: TRANSLATIONS, useValue: translations }]\n * });\n * ```\n *\n * \\@experimental i18n support is experimental.\n */\nvar TRANSLATIONS = new InjectionToken('Translations');\n/**\n * Provide this token at bootstrap to set the format of your {\\@link TRANSLATIONS}: `xtb`,\n * `xlf` or `xlf2`.\n *\n * See the {\\@linkDocs guide/i18n#merge i18n guide} for more information.\n *\n * ### Example\n *\n * ```typescript\n * import { TRANSLATIONS_FORMAT } from '\\@angular/core';\n * import { platformBrowserDynamic } from '\\@angular/platform-browser-dynamic';\n * import { AppModule } from './app/app.module';\n *\n * platformBrowserDynamic().bootstrapModule(AppModule, {\n * providers: [{provide: TRANSLATIONS_FORMAT, useValue: 'xlf' }]\n * });\n * ```\n *\n * \\@experimental i18n support is experimental.\n */\nvar TRANSLATIONS_FORMAT = new InjectionToken('TranslationsFormat');\n/** @enum {number} */\nvar MissingTranslationStrategy = {\n Error: 0,\n Warning: 1,\n Ignore: 2,\n};\nMissingTranslationStrategy[MissingTranslationStrategy.Error] = \"Error\";\nMissingTranslationStrategy[MissingTranslationStrategy.Warning] = \"Warning\";\nMissingTranslationStrategy[MissingTranslationStrategy.Ignore] = \"Ignore\";\n\n/**\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 * @return {?}\n */\nfunction _iterableDiffersFactory() {\n return defaultIterableDiffers;\n}\n/**\n * @return {?}\n */\nfunction _keyValueDiffersFactory() {\n return defaultKeyValueDiffers;\n}\n/**\n * @param {?=} locale\n * @return {?}\n */\nfunction _localeFactory(locale) {\n return locale || 'en-US';\n}\n/**\n * This module includes the providers of \\@angular/core that are needed\n * to bootstrap components via `ApplicationRef`.\n *\n * \\@experimental\n */\nvar ApplicationModule = /** @class */ (function () {\n // Inject ApplicationRef to make it eager...\n function ApplicationModule(appRef) {\n }\n ApplicationModule.decorators = [\n { type: NgModule, args: [{\n providers: [\n ApplicationRef,\n ApplicationInitStatus,\n Compiler,\n APP_ID_RANDOM_PROVIDER,\n { provide: IterableDiffers, useFactory: _iterableDiffersFactory },\n { provide: KeyValueDiffers, useFactory: _keyValueDiffersFactory },\n {\n provide: LOCALE_ID,\n useFactory: _localeFactory,\n deps: [[new Inject(LOCALE_ID), new Optional(), new SkipSelf()]]\n },\n ]\n },] },\n ];\n /** @nocollapse */\n ApplicationModule.ctorParameters = function () { return [\n { type: ApplicationRef, },\n ]; };\n return ApplicationModule;\n}());\n\n/**\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/** @enum {number} */\nvar SecurityContext = {\n NONE: 0,\n HTML: 1,\n STYLE: 2,\n SCRIPT: 3,\n URL: 4,\n RESOURCE_URL: 5,\n};\nSecurityContext[SecurityContext.NONE] = \"NONE\";\nSecurityContext[SecurityContext.HTML] = \"HTML\";\nSecurityContext[SecurityContext.STYLE] = \"STYLE\";\nSecurityContext[SecurityContext.SCRIPT] = \"SCRIPT\";\nSecurityContext[SecurityContext.URL] = \"URL\";\nSecurityContext[SecurityContext.RESOURCE_URL] = \"RESOURCE_URL\";\n/**\n * Sanitizer is used by the views to sanitize potentially dangerous values.\n *\n * \\@stable\n * @abstract\n */\nvar Sanitizer = /** @class */ (function () {\n function Sanitizer() {\n }\n return Sanitizer;\n}());\n\n/**\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 * Factory for ViewDefinitions/NgModuleDefinitions.\n * We use a function so we can reexeute it in case an error happens and use the given logger\n * function to log the error from the definition of the node, which is shown in all browser\n * logs.\n * @record\n */\n\n/**\n * Function to call console.error at the right source location. This is an indirection\n * via another function as browser will log the location that actually called\n * `console.error`.\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * A node definition in the view.\n *\n * Note: We use one type for all nodes so that loops that loop over all nodes\n * of a ViewDefinition stay monomorphic!\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * View instance data.\n * Attention: Adding fields to this is performance sensitive!\n * @record\n */\n\n/**\n * @param {?} view\n * @param {?} priorInitState\n * @param {?} newInitState\n * @return {?}\n */\nfunction shiftInitState(view, priorInitState, newInitState) {\n // Only update the InitState if we are currently in the prior state.\n // For example, only move into CallingInit if we are in BeforeInit. Only\n // move into CallingContentInit if we are in CallingInit. Normally this will\n // always be true because of how checkCycle is called in checkAndUpdateView.\n // However, if checkAndUpdateView is called recursively or if an exception is\n // thrown while checkAndUpdateView is running, checkAndUpdateView starts over\n // from the beginning. This ensures the state is monotonically increasing,\n // terminating in the AfterInit state, which ensures the Init methods are called\n // at least once and only once.\n var /** @type {?} */ state = view.state;\n var /** @type {?} */ initState = state & 1792;\n if (initState === priorInitState) {\n view.state = (state & ~1792 /* InitState_Mask */) | newInitState;\n view.initIndex = -1;\n return true;\n }\n return initState === newInitState;\n}\n/**\n * @param {?} view\n * @param {?} initState\n * @param {?} index\n * @return {?}\n */\nfunction shouldCallLifecycleInitHook(view, initState, index) {\n if ((view.state & 1792 /* InitState_Mask */) === initState && view.initIndex <= index) {\n view.initIndex = index + 1;\n return true;\n }\n return false;\n}\n/**\n * @record\n */\n\n/**\n * Data for an instantiated NodeType.Text.\n *\n * Attention: Adding fields to this is performance sensitive!\n * @record\n */\n\n/**\n * Accessor for view.nodes, enforcing that every usage site stays monomorphic.\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nfunction asTextData(view, index) {\n return /** @type {?} */ (view.nodes[index]);\n}\n/**\n * Data for an instantiated NodeType.Element.\n *\n * Attention: Adding fields to this is performance sensitive!\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * Accessor for view.nodes, enforcing that every usage site stays monomorphic.\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nfunction asElementData(view, index) {\n return /** @type {?} */ (view.nodes[index]);\n}\n/**\n * Data for an instantiated NodeType.Provider.\n *\n * Attention: Adding fields to this is performance sensitive!\n * @record\n */\n\n/**\n * Accessor for view.nodes, enforcing that every usage site stays monomorphic.\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nfunction asProviderData(view, index) {\n return /** @type {?} */ (view.nodes[index]);\n}\n/**\n * Data for an instantiated NodeType.PureExpression.\n *\n * Attention: Adding fields to this is performance sensitive!\n * @record\n */\n\n/**\n * Accessor for view.nodes, enforcing that every usage site stays monomorphic.\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nfunction asPureExpressionData(view, index) {\n return /** @type {?} */ (view.nodes[index]);\n}\n/**\n * Accessor for view.nodes, enforcing that every usage site stays monomorphic.\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nfunction asQueryList(view, index) {\n return /** @type {?} */ (view.nodes[index]);\n}\n/**\n * @record\n */\n\n/**\n * @abstract\n */\nvar DebugContext = /** @class */ (function () {\n function DebugContext() {\n }\n return DebugContext;\n}());\n/**\n * @record\n */\n\n/**\n * This object is used to prevent cycles in the source files and to have a place where\n * debug mode can hook it. It is lazily filled when `isDevMode` is known.\n */\nvar Services = {\n setCurrentNode: /** @type {?} */ ((undefined)),\n createRootView: /** @type {?} */ ((undefined)),\n createEmbeddedView: /** @type {?} */ ((undefined)),\n createComponentView: /** @type {?} */ ((undefined)),\n createNgModuleRef: /** @type {?} */ ((undefined)),\n overrideProvider: /** @type {?} */ ((undefined)),\n overrideComponentView: /** @type {?} */ ((undefined)),\n clearOverrides: /** @type {?} */ ((undefined)),\n checkAndUpdateView: /** @type {?} */ ((undefined)),\n checkNoChangesView: /** @type {?} */ ((undefined)),\n destroyView: /** @type {?} */ ((undefined)),\n resolveDep: /** @type {?} */ ((undefined)),\n createDebugContext: /** @type {?} */ ((undefined)),\n handleEvent: /** @type {?} */ ((undefined)),\n updateDirectives: /** @type {?} */ ((undefined)),\n updateRenderer: /** @type {?} */ ((undefined)),\n dirtyParentQueries: /** @type {?} */ ((undefined)),\n};\n\n/**\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 * @param {?} context\n * @param {?} oldValue\n * @param {?} currValue\n * @param {?} isFirstCheck\n * @return {?}\n */\nfunction expressionChangedAfterItHasBeenCheckedError(context, oldValue, currValue, isFirstCheck) {\n var /** @type {?} */ msg = \"ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: '\" + oldValue + \"'. Current value: '\" + currValue + \"'.\";\n if (isFirstCheck) {\n msg +=\n \" It seems like the view has been created after its parent and its children have been dirty checked.\" +\n \" Has it been created in a change detection hook ?\";\n }\n return viewDebugError(msg, context);\n}\n/**\n * @param {?} err\n * @param {?} context\n * @return {?}\n */\nfunction viewWrappedDebugError(err, context) {\n if (!(err instanceof Error)) {\n // errors that are not Error instances don't have a stack,\n // so it is ok to wrap them into a new Error object...\n err = new Error(err.toString());\n }\n _addDebugContext(err, context);\n return err;\n}\n/**\n * @param {?} msg\n * @param {?} context\n * @return {?}\n */\nfunction viewDebugError(msg, context) {\n var /** @type {?} */ err = new Error(msg);\n _addDebugContext(err, context);\n return err;\n}\n/**\n * @param {?} err\n * @param {?} context\n * @return {?}\n */\nfunction _addDebugContext(err, context) {\n (/** @type {?} */ (err))[ERROR_DEBUG_CONTEXT] = context;\n (/** @type {?} */ (err))[ERROR_LOGGER] = context.logError.bind(context);\n}\n/**\n * @param {?} err\n * @return {?}\n */\nfunction isViewDebugError(err) {\n return !!getDebugContext(err);\n}\n/**\n * @param {?} action\n * @return {?}\n */\nfunction viewDestroyedError(action) {\n return new Error(\"ViewDestroyedError: Attempt to use a destroyed view: \" + action);\n}\n\n/**\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 */\nvar NOOP = function () { };\nvar _tokenKeyCache = new Map();\n/**\n * @param {?} token\n * @return {?}\n */\nfunction tokenKey(token) {\n var /** @type {?} */ key = _tokenKeyCache.get(token);\n if (!key) {\n key = stringify(token) + '_' + _tokenKeyCache.size;\n _tokenKeyCache.set(token, key);\n }\n return key;\n}\n/**\n * @param {?} view\n * @param {?} nodeIdx\n * @param {?} bindingIdx\n * @param {?} value\n * @return {?}\n */\nfunction unwrapValue(view, nodeIdx, bindingIdx, value) {\n if (WrappedValue.isWrapped(value)) {\n value = WrappedValue.unwrap(value);\n var /** @type {?} */ globalBindingIdx = view.def.nodes[nodeIdx].bindingIndex + bindingIdx;\n var /** @type {?} */ oldValue = WrappedValue.unwrap(view.oldValues[globalBindingIdx]);\n view.oldValues[globalBindingIdx] = new WrappedValue(oldValue);\n }\n return value;\n}\nvar UNDEFINED_RENDERER_TYPE_ID = '$$undefined';\nvar EMPTY_RENDERER_TYPE_ID = '$$empty';\n/**\n * @param {?} values\n * @return {?}\n */\nfunction createRendererType2(values) {\n return {\n id: UNDEFINED_RENDERER_TYPE_ID,\n styles: values.styles,\n encapsulation: values.encapsulation,\n data: values.data\n };\n}\nvar _renderCompCount = 0;\n/**\n * @param {?=} type\n * @return {?}\n */\nfunction resolveRendererType2(type) {\n if (type && type.id === UNDEFINED_RENDERER_TYPE_ID) {\n // first time we see this RendererType2. Initialize it...\n var /** @type {?} */ isFilled = ((type.encapsulation != null && type.encapsulation !== ViewEncapsulation.None) ||\n type.styles.length || Object.keys(type.data).length);\n if (isFilled) {\n type.id = \"c\" + _renderCompCount++;\n }\n else {\n type.id = EMPTY_RENDERER_TYPE_ID;\n }\n }\n if (type && type.id === EMPTY_RENDERER_TYPE_ID) {\n type = null;\n }\n return type || null;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} bindingIdx\n * @param {?} value\n * @return {?}\n */\nfunction checkBinding(view, def, bindingIdx, value) {\n var /** @type {?} */ oldValues = view.oldValues;\n if ((view.state & 2 /* FirstCheck */) ||\n !looseIdentical(oldValues[def.bindingIndex + bindingIdx], value)) {\n return true;\n }\n return false;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} bindingIdx\n * @param {?} value\n * @return {?}\n */\nfunction checkAndUpdateBinding(view, def, bindingIdx, value) {\n if (checkBinding(view, def, bindingIdx, value)) {\n view.oldValues[def.bindingIndex + bindingIdx] = value;\n return true;\n }\n return false;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} bindingIdx\n * @param {?} value\n * @return {?}\n */\nfunction checkBindingNoChanges(view, def, bindingIdx, value) {\n var /** @type {?} */ oldValue = view.oldValues[def.bindingIndex + bindingIdx];\n if ((view.state & 1 /* BeforeFirstCheck */) || !devModeEqual(oldValue, value)) {\n var /** @type {?} */ bindingName = def.bindings[bindingIdx].name;\n throw expressionChangedAfterItHasBeenCheckedError(Services.createDebugContext(view, def.nodeIndex), bindingName + \": \" + oldValue, bindingName + \": \" + value, (view.state & 1 /* BeforeFirstCheck */) !== 0);\n }\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction markParentViewsForCheck(view) {\n var /** @type {?} */ currView = view;\n while (currView) {\n if (currView.def.flags & 2 /* OnPush */) {\n currView.state |= 8 /* ChecksEnabled */;\n }\n currView = currView.viewContainerParent || currView.parent;\n }\n}\n/**\n * @param {?} view\n * @param {?} endView\n * @return {?}\n */\nfunction markParentViewsForCheckProjectedViews(view, endView) {\n var /** @type {?} */ currView = view;\n while (currView && currView !== endView) {\n currView.state |= 64 /* CheckProjectedViews */;\n currView = currView.viewContainerParent || currView.parent;\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @param {?} eventName\n * @param {?} event\n * @return {?}\n */\nfunction dispatchEvent(view, nodeIndex, eventName, event) {\n try {\n var /** @type {?} */ nodeDef = view.def.nodes[nodeIndex];\n var /** @type {?} */ startView = nodeDef.flags & 33554432 /* ComponentView */ ?\n asElementData(view, nodeIndex).componentView :\n view;\n markParentViewsForCheck(startView);\n return Services.handleEvent(view, nodeIndex, eventName, event);\n }\n catch (/** @type {?} */ e) {\n // Attention: Don't rethrow, as it would cancel Observable subscriptions!\n view.root.errorHandler.handleError(e);\n }\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction declaredViewContainer(view) {\n if (view.parent) {\n var /** @type {?} */ parentView = view.parent;\n return asElementData(parentView, /** @type {?} */ ((view.parentNodeDef)).nodeIndex);\n }\n return null;\n}\n/**\n * for component views, this is the host element.\n * for embedded views, this is the index of the parent node\n * that contains the view container.\n * @param {?} view\n * @return {?}\n */\nfunction viewParentEl(view) {\n var /** @type {?} */ parentView = view.parent;\n if (parentView) {\n return /** @type {?} */ ((view.parentNodeDef)).parent;\n }\n else {\n return null;\n }\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nfunction renderNode(view, def) {\n switch (def.flags & 201347067 /* Types */) {\n case 1 /* TypeElement */:\n return asElementData(view, def.nodeIndex).renderElement;\n case 2 /* TypeText */:\n return asTextData(view, def.nodeIndex).renderText;\n }\n}\n/**\n * @param {?} target\n * @param {?} name\n * @return {?}\n */\nfunction elementEventFullName(target, name) {\n return target ? target + \":\" + name : name;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction isComponentView(view) {\n return !!view.parent && !!(/** @type {?} */ ((view.parentNodeDef)).flags & 32768 /* Component */);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction isEmbeddedView(view) {\n return !!view.parent && !(/** @type {?} */ ((view.parentNodeDef)).flags & 32768 /* Component */);\n}\n/**\n * @param {?} queryId\n * @return {?}\n */\nfunction filterQueryId(queryId) {\n return 1 << (queryId % 32);\n}\n/**\n * @param {?} matchedQueriesDsl\n * @return {?}\n */\nfunction splitMatchedQueriesDsl(matchedQueriesDsl) {\n var /** @type {?} */ matchedQueries = {};\n var /** @type {?} */ matchedQueryIds = 0;\n var /** @type {?} */ references = {};\n if (matchedQueriesDsl) {\n matchedQueriesDsl.forEach(function (_a) {\n var queryId = _a[0], valueType = _a[1];\n if (typeof queryId === 'number') {\n matchedQueries[queryId] = valueType;\n matchedQueryIds |= filterQueryId(queryId);\n }\n else {\n references[queryId] = valueType;\n }\n });\n }\n return { matchedQueries: matchedQueries, references: references, matchedQueryIds: matchedQueryIds };\n}\n/**\n * @param {?} deps\n * @param {?=} sourceName\n * @return {?}\n */\nfunction splitDepsDsl(deps, sourceName) {\n return deps.map(function (value) {\n var /** @type {?} */ token;\n var /** @type {?} */ flags;\n if (Array.isArray(value)) {\n flags = value[0], token = value[1];\n }\n else {\n flags = 0 /* None */;\n token = value;\n }\n if (token && (typeof token === 'function' || typeof token === 'object') && sourceName) {\n Object.defineProperty(token, SOURCE, { value: sourceName, configurable: true });\n }\n return { flags: flags, token: token, tokenKey: tokenKey(token) };\n });\n}\n/**\n * @param {?} view\n * @param {?} renderHost\n * @param {?} def\n * @return {?}\n */\nfunction getParentRenderElement(view, renderHost, def) {\n var /** @type {?} */ renderParent = def.renderParent;\n if (renderParent) {\n if ((renderParent.flags & 1 /* TypeElement */) === 0 ||\n (renderParent.flags & 33554432 /* ComponentView */) === 0 ||\n (/** @type {?} */ ((renderParent.element)).componentRendererType && /** @type {?} */ ((/** @type {?} */ ((renderParent.element)).componentRendererType)).encapsulation === ViewEncapsulation.Native)) {\n // only children of non components, or children of components with native encapsulation should\n // be attached.\n return asElementData(view, /** @type {?} */ ((def.renderParent)).nodeIndex).renderElement;\n }\n }\n else {\n return renderHost;\n }\n}\nvar DEFINITION_CACHE = new WeakMap();\n/**\n * @template D\n * @param {?} factory\n * @return {?}\n */\nfunction resolveDefinition(factory) {\n var /** @type {?} */ value = /** @type {?} */ (((DEFINITION_CACHE.get(factory))));\n if (!value) {\n value = factory(function () { return NOOP; });\n value.factory = factory;\n DEFINITION_CACHE.set(factory, value);\n }\n return value;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction rootRenderNodes(view) {\n var /** @type {?} */ renderNodes = [];\n visitRootRenderNodes(view, 0 /* Collect */, undefined, undefined, renderNodes);\n return renderNodes;\n}\n/**\n * @param {?} view\n * @param {?} action\n * @param {?} parentNode\n * @param {?} nextSibling\n * @param {?=} target\n * @return {?}\n */\nfunction visitRootRenderNodes(view, action, parentNode, nextSibling, target) {\n // We need to re-compute the parent node in case the nodes have been moved around manually\n if (action === 3 /* RemoveChild */) {\n parentNode = view.renderer.parentNode(renderNode(view, /** @type {?} */ ((view.def.lastRenderRootNode))));\n }\n visitSiblingRenderNodes(view, action, 0, view.def.nodes.length - 1, parentNode, nextSibling, target);\n}\n/**\n * @param {?} view\n * @param {?} action\n * @param {?} startIndex\n * @param {?} endIndex\n * @param {?} parentNode\n * @param {?} nextSibling\n * @param {?=} target\n * @return {?}\n */\nfunction visitSiblingRenderNodes(view, action, startIndex, endIndex, parentNode, nextSibling, target) {\n for (var /** @type {?} */ i = startIndex; i <= endIndex; i++) {\n var /** @type {?} */ nodeDef = view.def.nodes[i];\n if (nodeDef.flags & (1 /* TypeElement */ | 2 /* TypeText */ | 8 /* TypeNgContent */)) {\n visitRenderNode(view, nodeDef, action, parentNode, nextSibling, target);\n }\n // jump to next sibling\n i += nodeDef.childCount;\n }\n}\n/**\n * @param {?} view\n * @param {?} ngContentIndex\n * @param {?} action\n * @param {?} parentNode\n * @param {?} nextSibling\n * @param {?=} target\n * @return {?}\n */\nfunction visitProjectedRenderNodes(view, ngContentIndex, action, parentNode, nextSibling, target) {\n var /** @type {?} */ compView = view;\n while (compView && !isComponentView(compView)) {\n compView = compView.parent;\n }\n var /** @type {?} */ hostView = /** @type {?} */ ((compView)).parent;\n var /** @type {?} */ hostElDef = viewParentEl(/** @type {?} */ ((compView)));\n var /** @type {?} */ startIndex = /** @type {?} */ ((hostElDef)).nodeIndex + 1;\n var /** @type {?} */ endIndex = /** @type {?} */ ((hostElDef)).nodeIndex + /** @type {?} */ ((hostElDef)).childCount;\n for (var /** @type {?} */ i = startIndex; i <= endIndex; i++) {\n var /** @type {?} */ nodeDef = /** @type {?} */ ((hostView)).def.nodes[i];\n if (nodeDef.ngContentIndex === ngContentIndex) {\n visitRenderNode(/** @type {?} */ ((hostView)), nodeDef, action, parentNode, nextSibling, target);\n }\n // jump to next sibling\n i += nodeDef.childCount;\n }\n if (!/** @type {?} */ ((hostView)).parent) {\n // a root view\n var /** @type {?} */ projectedNodes = view.root.projectableNodes[ngContentIndex];\n if (projectedNodes) {\n for (var /** @type {?} */ i = 0; i < projectedNodes.length; i++) {\n execRenderNodeAction(view, projectedNodes[i], action, parentNode, nextSibling, target);\n }\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} action\n * @param {?} parentNode\n * @param {?} nextSibling\n * @param {?=} target\n * @return {?}\n */\nfunction visitRenderNode(view, nodeDef, action, parentNode, nextSibling, target) {\n if (nodeDef.flags & 8 /* TypeNgContent */) {\n visitProjectedRenderNodes(view, /** @type {?} */ ((nodeDef.ngContent)).index, action, parentNode, nextSibling, target);\n }\n else {\n var /** @type {?} */ rn = renderNode(view, nodeDef);\n if (action === 3 /* RemoveChild */ && (nodeDef.flags & 33554432 /* ComponentView */) &&\n (nodeDef.bindingFlags & 48 /* CatSyntheticProperty */)) {\n // Note: we might need to do both actions.\n if (nodeDef.bindingFlags & (16 /* SyntheticProperty */)) {\n execRenderNodeAction(view, rn, action, parentNode, nextSibling, target);\n }\n if (nodeDef.bindingFlags & (32 /* SyntheticHostProperty */)) {\n var /** @type {?} */ compView = asElementData(view, nodeDef.nodeIndex).componentView;\n execRenderNodeAction(compView, rn, action, parentNode, nextSibling, target);\n }\n }\n else {\n execRenderNodeAction(view, rn, action, parentNode, nextSibling, target);\n }\n if (nodeDef.flags & 16777216 /* EmbeddedViews */) {\n var /** @type {?} */ embeddedViews = /** @type {?} */ ((asElementData(view, nodeDef.nodeIndex).viewContainer))._embeddedViews;\n for (var /** @type {?} */ k = 0; k < embeddedViews.length; k++) {\n visitRootRenderNodes(embeddedViews[k], action, parentNode, nextSibling, target);\n }\n }\n if (nodeDef.flags & 1 /* TypeElement */ && !/** @type {?} */ ((nodeDef.element)).name) {\n visitSiblingRenderNodes(view, action, nodeDef.nodeIndex + 1, nodeDef.nodeIndex + nodeDef.childCount, parentNode, nextSibling, target);\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} renderNode\n * @param {?} action\n * @param {?} parentNode\n * @param {?} nextSibling\n * @param {?=} target\n * @return {?}\n */\nfunction execRenderNodeAction(view, renderNode, action, parentNode, nextSibling, target) {\n var /** @type {?} */ renderer = view.renderer;\n switch (action) {\n case 1 /* AppendChild */:\n renderer.appendChild(parentNode, renderNode);\n break;\n case 2 /* InsertBefore */:\n renderer.insertBefore(parentNode, renderNode, nextSibling);\n break;\n case 3 /* RemoveChild */:\n renderer.removeChild(parentNode, renderNode);\n break;\n case 0 /* Collect */:\n /** @type {?} */ ((target)).push(renderNode);\n break;\n }\n}\nvar NS_PREFIX_RE = /^:([^:]+):(.+)$/;\n/**\n * @param {?} name\n * @return {?}\n */\nfunction splitNamespace(name) {\n if (name[0] === ':') {\n var /** @type {?} */ match = /** @type {?} */ ((name.match(NS_PREFIX_RE)));\n return [match[1], match[2]];\n }\n return ['', name];\n}\n/**\n * @param {?} bindings\n * @return {?}\n */\nfunction calcBindingFlags(bindings) {\n var /** @type {?} */ flags = 0;\n for (var /** @type {?} */ i = 0; i < bindings.length; i++) {\n flags |= bindings[i].flags;\n }\n return flags;\n}\n/**\n * @param {?} valueCount\n * @param {?} constAndInterp\n * @return {?}\n */\nfunction interpolate(valueCount, constAndInterp) {\n var /** @type {?} */ result = '';\n for (var /** @type {?} */ i = 0; i < valueCount * 2; i = i + 2) {\n result = result + constAndInterp[i] + _toStringWithNull(constAndInterp[i + 1]);\n }\n return result + constAndInterp[valueCount * 2];\n}\n/**\n * @param {?} valueCount\n * @param {?} c0\n * @param {?} a1\n * @param {?} c1\n * @param {?=} a2\n * @param {?=} c2\n * @param {?=} a3\n * @param {?=} c3\n * @param {?=} a4\n * @param {?=} c4\n * @param {?=} a5\n * @param {?=} c5\n * @param {?=} a6\n * @param {?=} c6\n * @param {?=} a7\n * @param {?=} c7\n * @param {?=} a8\n * @param {?=} c8\n * @param {?=} a9\n * @param {?=} c9\n * @return {?}\n */\nfunction inlineInterpolate(valueCount, c0, a1, c1, a2, c2, a3, c3, a4, c4, a5, c5, a6, c6, a7, c7, a8, c8, a9, c9) {\n switch (valueCount) {\n case 1:\n return c0 + _toStringWithNull(a1) + c1;\n case 2:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2;\n case 3:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3;\n case 4:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3 + _toStringWithNull(a4) + c4;\n case 5:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5;\n case 6:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5 + _toStringWithNull(a6) + c6;\n case 7:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5 + _toStringWithNull(a6) +\n c6 + _toStringWithNull(a7) + c7;\n case 8:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5 + _toStringWithNull(a6) +\n c6 + _toStringWithNull(a7) + c7 + _toStringWithNull(a8) + c8;\n case 9:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5 + _toStringWithNull(a6) +\n c6 + _toStringWithNull(a7) + c7 + _toStringWithNull(a8) + c8 + _toStringWithNull(a9) + c9;\n default:\n throw new Error(\"Does not support more than 9 expressions\");\n }\n}\n/**\n * @param {?} v\n * @return {?}\n */\nfunction _toStringWithNull(v) {\n return v != null ? v.toString() : '';\n}\nvar EMPTY_ARRAY = [];\nvar EMPTY_MAP = {};\n\n/**\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 * @param {?} flags\n * @param {?} matchedQueriesDsl\n * @param {?} ngContentIndex\n * @param {?} childCount\n * @param {?=} handleEvent\n * @param {?=} templateFactory\n * @return {?}\n */\nfunction anchorDef(flags, matchedQueriesDsl, ngContentIndex, childCount, handleEvent, templateFactory) {\n flags |= 1 /* TypeElement */;\n var _a = splitMatchedQueriesDsl(matchedQueriesDsl), matchedQueries = _a.matchedQueries, references = _a.references, matchedQueryIds = _a.matchedQueryIds;\n var /** @type {?} */ template = templateFactory ? resolveDefinition(templateFactory) : null;\n return {\n // will bet set by the view definition\n nodeIndex: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n flags: flags,\n checkIndex: -1,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0, matchedQueries: matchedQueries, matchedQueryIds: matchedQueryIds, references: references, ngContentIndex: ngContentIndex, childCount: childCount,\n bindings: [],\n bindingFlags: 0,\n outputs: [],\n element: {\n ns: null,\n name: null,\n attrs: null, template: template,\n componentProvider: null,\n componentView: null,\n componentRendererType: null,\n publicProviders: null,\n allProviders: null,\n handleEvent: handleEvent || NOOP\n },\n provider: null,\n text: null,\n query: null,\n ngContent: null\n };\n}\n/**\n * @param {?} checkIndex\n * @param {?} flags\n * @param {?} matchedQueriesDsl\n * @param {?} ngContentIndex\n * @param {?} childCount\n * @param {?} namespaceAndName\n * @param {?=} fixedAttrs\n * @param {?=} bindings\n * @param {?=} outputs\n * @param {?=} handleEvent\n * @param {?=} componentView\n * @param {?=} componentRendererType\n * @return {?}\n */\nfunction elementDef(checkIndex, flags, matchedQueriesDsl, ngContentIndex, childCount, namespaceAndName, fixedAttrs, bindings, outputs, handleEvent, componentView, componentRendererType) {\n if (fixedAttrs === void 0) { fixedAttrs = []; }\n if (!handleEvent) {\n handleEvent = NOOP;\n }\n var _a = splitMatchedQueriesDsl(matchedQueriesDsl), matchedQueries = _a.matchedQueries, references = _a.references, matchedQueryIds = _a.matchedQueryIds;\n var /** @type {?} */ ns = /** @type {?} */ ((null));\n var /** @type {?} */ name = /** @type {?} */ ((null));\n if (namespaceAndName) {\n _b = splitNamespace(namespaceAndName), ns = _b[0], name = _b[1];\n }\n bindings = bindings || [];\n var /** @type {?} */ bindingDefs = new Array(bindings.length);\n for (var /** @type {?} */ i = 0; i < bindings.length; i++) {\n var _c = bindings[i], bindingFlags = _c[0], namespaceAndName_1 = _c[1], suffixOrSecurityContext = _c[2];\n var _d = splitNamespace(namespaceAndName_1), ns_1 = _d[0], name_1 = _d[1];\n var /** @type {?} */ securityContext = /** @type {?} */ ((undefined));\n var /** @type {?} */ suffix = /** @type {?} */ ((undefined));\n switch (bindingFlags & 15 /* Types */) {\n case 4 /* TypeElementStyle */:\n suffix = /** @type {?} */ (suffixOrSecurityContext);\n break;\n case 1 /* TypeElementAttribute */:\n case 8 /* TypeProperty */:\n securityContext = /** @type {?} */ (suffixOrSecurityContext);\n break;\n }\n bindingDefs[i] =\n { flags: bindingFlags, ns: ns_1, name: name_1, nonMinifiedName: name_1, securityContext: securityContext, suffix: suffix };\n }\n outputs = outputs || [];\n var /** @type {?} */ outputDefs = new Array(outputs.length);\n for (var /** @type {?} */ i = 0; i < outputs.length; i++) {\n var _e = outputs[i], target = _e[0], eventName = _e[1];\n outputDefs[i] = {\n type: 0 /* ElementOutput */,\n target: /** @type {?} */ (target), eventName: eventName,\n propName: null\n };\n }\n fixedAttrs = fixedAttrs || [];\n var /** @type {?} */ attrs = /** @type {?} */ (fixedAttrs.map(function (_a) {\n var namespaceAndName = _a[0], value = _a[1];\n var _b = splitNamespace(namespaceAndName), ns = _b[0], name = _b[1];\n return [ns, name, value];\n }));\n componentRendererType = resolveRendererType2(componentRendererType);\n if (componentView) {\n flags |= 33554432 /* ComponentView */;\n }\n flags |= 1 /* TypeElement */;\n return {\n // will bet set by the view definition\n nodeIndex: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n checkIndex: checkIndex,\n flags: flags,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0, matchedQueries: matchedQueries, matchedQueryIds: matchedQueryIds, references: references, ngContentIndex: ngContentIndex, childCount: childCount,\n bindings: bindingDefs,\n bindingFlags: calcBindingFlags(bindingDefs),\n outputs: outputDefs,\n element: {\n ns: ns,\n name: name,\n attrs: attrs,\n template: null,\n // will bet set by the view definition\n componentProvider: null,\n componentView: componentView || null,\n componentRendererType: componentRendererType,\n publicProviders: null,\n allProviders: null,\n handleEvent: handleEvent || NOOP,\n },\n provider: null,\n text: null,\n query: null,\n ngContent: null\n };\n var _b;\n}\n/**\n * @param {?} view\n * @param {?} renderHost\n * @param {?} def\n * @return {?}\n */\nfunction createElement(view, renderHost, def) {\n var /** @type {?} */ elDef = /** @type {?} */ ((def.element));\n var /** @type {?} */ rootSelectorOrNode = view.root.selectorOrNode;\n var /** @type {?} */ renderer = view.renderer;\n var /** @type {?} */ el;\n if (view.parent || !rootSelectorOrNode) {\n if (elDef.name) {\n el = renderer.createElement(elDef.name, elDef.ns);\n }\n else {\n el = renderer.createComment('');\n }\n var /** @type {?} */ parentEl = getParentRenderElement(view, renderHost, def);\n if (parentEl) {\n renderer.appendChild(parentEl, el);\n }\n }\n else {\n el = renderer.selectRootElement(rootSelectorOrNode);\n }\n if (elDef.attrs) {\n for (var /** @type {?} */ i = 0; i < elDef.attrs.length; i++) {\n var _a = elDef.attrs[i], ns = _a[0], name_2 = _a[1], value = _a[2];\n renderer.setAttribute(el, name_2, value, ns);\n }\n }\n return el;\n}\n/**\n * @param {?} view\n * @param {?} compView\n * @param {?} def\n * @param {?} el\n * @return {?}\n */\nfunction listenToElementOutputs(view, compView, def, el) {\n for (var /** @type {?} */ i = 0; i < def.outputs.length; i++) {\n var /** @type {?} */ output = def.outputs[i];\n var /** @type {?} */ handleEventClosure = renderEventHandlerClosure(view, def.nodeIndex, elementEventFullName(output.target, output.eventName));\n var /** @type {?} */ listenTarget = output.target;\n var /** @type {?} */ listenerView = view;\n if (output.target === 'component') {\n listenTarget = null;\n listenerView = compView;\n }\n var /** @type {?} */ disposable = /** @type {?} */ (listenerView.renderer.listen(listenTarget || el, output.eventName, handleEventClosure)); /** @type {?} */\n ((view.disposables))[def.outputIndex + i] = disposable;\n }\n}\n/**\n * @param {?} view\n * @param {?} index\n * @param {?} eventName\n * @return {?}\n */\nfunction renderEventHandlerClosure(view, index, eventName) {\n return function (event) { return dispatchEvent(view, index, eventName, event); };\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} v0\n * @param {?} v1\n * @param {?} v2\n * @param {?} v3\n * @param {?} v4\n * @param {?} v5\n * @param {?} v6\n * @param {?} v7\n * @param {?} v8\n * @param {?} v9\n * @return {?}\n */\nfunction checkAndUpdateElementInline(view, def, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n var /** @type {?} */ bindLen = def.bindings.length;\n var /** @type {?} */ changed = false;\n if (bindLen > 0 && checkAndUpdateElementValue(view, def, 0, v0))\n changed = true;\n if (bindLen > 1 && checkAndUpdateElementValue(view, def, 1, v1))\n changed = true;\n if (bindLen > 2 && checkAndUpdateElementValue(view, def, 2, v2))\n changed = true;\n if (bindLen > 3 && checkAndUpdateElementValue(view, def, 3, v3))\n changed = true;\n if (bindLen > 4 && checkAndUpdateElementValue(view, def, 4, v4))\n changed = true;\n if (bindLen > 5 && checkAndUpdateElementValue(view, def, 5, v5))\n changed = true;\n if (bindLen > 6 && checkAndUpdateElementValue(view, def, 6, v6))\n changed = true;\n if (bindLen > 7 && checkAndUpdateElementValue(view, def, 7, v7))\n changed = true;\n if (bindLen > 8 && checkAndUpdateElementValue(view, def, 8, v8))\n changed = true;\n if (bindLen > 9 && checkAndUpdateElementValue(view, def, 9, v9))\n changed = true;\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} values\n * @return {?}\n */\nfunction checkAndUpdateElementDynamic(view, def, values) {\n var /** @type {?} */ changed = false;\n for (var /** @type {?} */ i = 0; i < values.length; i++) {\n if (checkAndUpdateElementValue(view, def, i, values[i]))\n changed = true;\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} bindingIdx\n * @param {?} value\n * @return {?}\n */\nfunction checkAndUpdateElementValue(view, def, bindingIdx, value) {\n if (!checkAndUpdateBinding(view, def, bindingIdx, value)) {\n return false;\n }\n var /** @type {?} */ binding = def.bindings[bindingIdx];\n var /** @type {?} */ elData = asElementData(view, def.nodeIndex);\n var /** @type {?} */ renderNode$$1 = elData.renderElement;\n var /** @type {?} */ name = /** @type {?} */ ((binding.name));\n switch (binding.flags & 15 /* Types */) {\n case 1 /* TypeElementAttribute */:\n setElementAttribute(view, binding, renderNode$$1, binding.ns, name, value);\n break;\n case 2 /* TypeElementClass */:\n setElementClass(view, renderNode$$1, name, value);\n break;\n case 4 /* TypeElementStyle */:\n setElementStyle(view, binding, renderNode$$1, name, value);\n break;\n case 8 /* TypeProperty */:\n var /** @type {?} */ bindView = (def.flags & 33554432 /* ComponentView */ &&\n binding.flags & 32 /* SyntheticHostProperty */) ?\n elData.componentView :\n view;\n setElementProperty(bindView, binding, renderNode$$1, name, value);\n break;\n }\n return true;\n}\n/**\n * @param {?} view\n * @param {?} binding\n * @param {?} renderNode\n * @param {?} ns\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nfunction setElementAttribute(view, binding, renderNode$$1, ns, name, value) {\n var /** @type {?} */ securityContext = binding.securityContext;\n var /** @type {?} */ renderValue = securityContext ? view.root.sanitizer.sanitize(securityContext, value) : value;\n renderValue = renderValue != null ? renderValue.toString() : null;\n var /** @type {?} */ renderer = view.renderer;\n if (value != null) {\n renderer.setAttribute(renderNode$$1, name, renderValue, ns);\n }\n else {\n renderer.removeAttribute(renderNode$$1, name, ns);\n }\n}\n/**\n * @param {?} view\n * @param {?} renderNode\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nfunction setElementClass(view, renderNode$$1, name, value) {\n var /** @type {?} */ renderer = view.renderer;\n if (value) {\n renderer.addClass(renderNode$$1, name);\n }\n else {\n renderer.removeClass(renderNode$$1, name);\n }\n}\n/**\n * @param {?} view\n * @param {?} binding\n * @param {?} renderNode\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nfunction setElementStyle(view, binding, renderNode$$1, name, value) {\n var /** @type {?} */ renderValue = view.root.sanitizer.sanitize(SecurityContext.STYLE, /** @type {?} */ (value));\n if (renderValue != null) {\n renderValue = renderValue.toString();\n var /** @type {?} */ unit = binding.suffix;\n if (unit != null) {\n renderValue = renderValue + unit;\n }\n }\n else {\n renderValue = null;\n }\n var /** @type {?} */ renderer = view.renderer;\n if (renderValue != null) {\n renderer.setStyle(renderNode$$1, name, renderValue);\n }\n else {\n renderer.removeStyle(renderNode$$1, name);\n }\n}\n/**\n * @param {?} view\n * @param {?} binding\n * @param {?} renderNode\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nfunction setElementProperty(view, binding, renderNode$$1, name, value) {\n var /** @type {?} */ securityContext = binding.securityContext;\n var /** @type {?} */ renderValue = securityContext ? view.root.sanitizer.sanitize(securityContext, value) : value;\n view.renderer.setProperty(renderNode$$1, name, renderValue);\n}\n\n/**\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 */\nvar UNDEFINED_VALUE = new Object();\nvar InjectorRefTokenKey$1 = tokenKey(Injector);\nvar NgModuleRefTokenKey = tokenKey(NgModuleRef);\n/**\n * @param {?} flags\n * @param {?} token\n * @param {?} value\n * @param {?} deps\n * @return {?}\n */\nfunction moduleProvideDef(flags, token, value, deps) {\n // Need to resolve forwardRefs as e.g. for `useValue` we\n // lowered the expression and then stopped evaluating it,\n // i.e. also didn't unwrap it.\n value = resolveForwardRef(value);\n var /** @type {?} */ depDefs = splitDepsDsl(deps, stringify(token));\n return {\n // will bet set by the module definition\n index: -1,\n deps: depDefs, flags: flags, token: token, value: value\n };\n}\n/**\n * @param {?} providers\n * @return {?}\n */\nfunction moduleDef(providers) {\n var /** @type {?} */ providersByKey = {};\n for (var /** @type {?} */ i = 0; i < providers.length; i++) {\n var /** @type {?} */ provider = providers[i];\n provider.index = i;\n providersByKey[tokenKey(provider.token)] = provider;\n }\n return {\n // Will be filled later...\n factory: null,\n providersByKey: providersByKey,\n providers: providers\n };\n}\n/**\n * @param {?} data\n * @return {?}\n */\nfunction initNgModule(data) {\n var /** @type {?} */ def = data._def;\n var /** @type {?} */ providers = data._providers = new Array(def.providers.length);\n for (var /** @type {?} */ i = 0; i < def.providers.length; i++) {\n var /** @type {?} */ provDef = def.providers[i];\n if (!(provDef.flags & 4096 /* LazyProvider */)) {\n providers[i] = _createProviderInstance$1(data, provDef);\n }\n }\n}\n/**\n * @param {?} data\n * @param {?} depDef\n * @param {?=} notFoundValue\n * @return {?}\n */\nfunction resolveNgModuleDep(data, depDef, notFoundValue) {\n if (notFoundValue === void 0) { notFoundValue = Injector.THROW_IF_NOT_FOUND; }\n if (depDef.flags & 8 /* Value */) {\n return depDef.token;\n }\n if (depDef.flags & 2 /* Optional */) {\n notFoundValue = null;\n }\n if (depDef.flags & 1 /* SkipSelf */) {\n return data._parent.get(depDef.token, notFoundValue);\n }\n var /** @type {?} */ tokenKey$$1 = depDef.tokenKey;\n switch (tokenKey$$1) {\n case InjectorRefTokenKey$1:\n case NgModuleRefTokenKey:\n return data;\n }\n var /** @type {?} */ providerDef = data._def.providersByKey[tokenKey$$1];\n if (providerDef) {\n var /** @type {?} */ providerInstance = data._providers[providerDef.index];\n if (providerInstance === undefined) {\n providerInstance = data._providers[providerDef.index] =\n _createProviderInstance$1(data, providerDef);\n }\n return providerInstance === UNDEFINED_VALUE ? undefined : providerInstance;\n }\n return data._parent.get(depDef.token, notFoundValue);\n}\n/**\n * @param {?} ngModule\n * @param {?} providerDef\n * @return {?}\n */\nfunction _createProviderInstance$1(ngModule, providerDef) {\n var /** @type {?} */ injectable;\n switch (providerDef.flags & 201347067 /* Types */) {\n case 512 /* TypeClassProvider */:\n injectable = _createClass(ngModule, providerDef.value, providerDef.deps);\n break;\n case 1024 /* TypeFactoryProvider */:\n injectable = _callFactory(ngModule, providerDef.value, providerDef.deps);\n break;\n case 2048 /* TypeUseExistingProvider */:\n injectable = resolveNgModuleDep(ngModule, providerDef.deps[0]);\n break;\n case 256 /* TypeValueProvider */:\n injectable = providerDef.value;\n break;\n }\n return injectable === undefined ? UNDEFINED_VALUE : injectable;\n}\n/**\n * @param {?} ngModule\n * @param {?} ctor\n * @param {?} deps\n * @return {?}\n */\nfunction _createClass(ngModule, ctor, deps) {\n var /** @type {?} */ len = deps.length;\n switch (len) {\n case 0:\n return new ctor();\n case 1:\n return new ctor(resolveNgModuleDep(ngModule, deps[0]));\n case 2:\n return new ctor(resolveNgModuleDep(ngModule, deps[0]), resolveNgModuleDep(ngModule, deps[1]));\n case 3:\n return new ctor(resolveNgModuleDep(ngModule, deps[0]), resolveNgModuleDep(ngModule, deps[1]), resolveNgModuleDep(ngModule, deps[2]));\n default:\n var /** @type {?} */ depValues = new Array(len);\n for (var /** @type {?} */ i = 0; i < len; i++) {\n depValues[i] = resolveNgModuleDep(ngModule, deps[i]);\n }\n return new (ctor.bind.apply(ctor, [void 0].concat(depValues)))();\n }\n}\n/**\n * @param {?} ngModule\n * @param {?} factory\n * @param {?} deps\n * @return {?}\n */\nfunction _callFactory(ngModule, factory, deps) {\n var /** @type {?} */ len = deps.length;\n switch (len) {\n case 0:\n return factory();\n case 1:\n return factory(resolveNgModuleDep(ngModule, deps[0]));\n case 2:\n return factory(resolveNgModuleDep(ngModule, deps[0]), resolveNgModuleDep(ngModule, deps[1]));\n case 3:\n return factory(resolveNgModuleDep(ngModule, deps[0]), resolveNgModuleDep(ngModule, deps[1]), resolveNgModuleDep(ngModule, deps[2]));\n default:\n var /** @type {?} */ depValues = Array(len);\n for (var /** @type {?} */ i = 0; i < len; i++) {\n depValues[i] = resolveNgModuleDep(ngModule, deps[i]);\n }\n return factory.apply(void 0, depValues);\n }\n}\n/**\n * @param {?} ngModule\n * @param {?} lifecycles\n * @return {?}\n */\nfunction callNgModuleLifecycle(ngModule, lifecycles) {\n var /** @type {?} */ def = ngModule._def;\n for (var /** @type {?} */ i = 0; i < def.providers.length; i++) {\n var /** @type {?} */ provDef = def.providers[i];\n if (provDef.flags & 131072 /* OnDestroy */) {\n var /** @type {?} */ instance = ngModule._providers[i];\n if (instance && instance !== UNDEFINED_VALUE) {\n instance.ngOnDestroy();\n }\n }\n }\n}\n\n/**\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 * @param {?} parentView\n * @param {?} elementData\n * @param {?} viewIndex\n * @param {?} view\n * @return {?}\n */\nfunction attachEmbeddedView(parentView, elementData, viewIndex, view) {\n var /** @type {?} */ embeddedViews = /** @type {?} */ ((elementData.viewContainer))._embeddedViews;\n if (viewIndex === null || viewIndex === undefined) {\n viewIndex = embeddedViews.length;\n }\n view.viewContainerParent = parentView;\n addToArray(embeddedViews, /** @type {?} */ ((viewIndex)), view);\n attachProjectedView(elementData, view);\n Services.dirtyParentQueries(view);\n var /** @type {?} */ prevView = /** @type {?} */ ((viewIndex)) > 0 ? embeddedViews[/** @type {?} */ ((viewIndex)) - 1] : null;\n renderAttachEmbeddedView(elementData, prevView, view);\n}\n/**\n * @param {?} vcElementData\n * @param {?} view\n * @return {?}\n */\nfunction attachProjectedView(vcElementData, view) {\n var /** @type {?} */ dvcElementData = declaredViewContainer(view);\n if (!dvcElementData || dvcElementData === vcElementData ||\n view.state & 16 /* IsProjectedView */) {\n return;\n }\n // Note: For performance reasons, we\n // - add a view to template._projectedViews only 1x throughout its lifetime,\n // and remove it not until the view is destroyed.\n // (hard, as when a parent view is attached/detached we would need to attach/detach all\n // nested projected views as well, even accross component boundaries).\n // - don't track the insertion order of views in the projected views array\n // (hard, as when the views of the same template are inserted different view containers)\n view.state |= 16 /* IsProjectedView */;\n var /** @type {?} */ projectedViews = dvcElementData.template._projectedViews;\n if (!projectedViews) {\n projectedViews = dvcElementData.template._projectedViews = [];\n }\n projectedViews.push(view);\n // Note: we are changing the NodeDef here as we cannot calculate\n // the fact whether a template is used for projection during compilation.\n markNodeAsProjectedTemplate(/** @type {?} */ ((view.parent)).def, /** @type {?} */ ((view.parentNodeDef)));\n}\n/**\n * @param {?} viewDef\n * @param {?} nodeDef\n * @return {?}\n */\nfunction markNodeAsProjectedTemplate(viewDef, nodeDef) {\n if (nodeDef.flags & 4 /* ProjectedTemplate */) {\n return;\n }\n viewDef.nodeFlags |= 4 /* ProjectedTemplate */;\n nodeDef.flags |= 4 /* ProjectedTemplate */;\n var /** @type {?} */ parentNodeDef = nodeDef.parent;\n while (parentNodeDef) {\n parentNodeDef.childFlags |= 4 /* ProjectedTemplate */;\n parentNodeDef = parentNodeDef.parent;\n }\n}\n/**\n * @param {?} elementData\n * @param {?=} viewIndex\n * @return {?}\n */\nfunction detachEmbeddedView(elementData, viewIndex) {\n var /** @type {?} */ embeddedViews = /** @type {?} */ ((elementData.viewContainer))._embeddedViews;\n if (viewIndex == null || viewIndex >= embeddedViews.length) {\n viewIndex = embeddedViews.length - 1;\n }\n if (viewIndex < 0) {\n return null;\n }\n var /** @type {?} */ view = embeddedViews[viewIndex];\n view.viewContainerParent = null;\n removeFromArray(embeddedViews, viewIndex);\n // See attachProjectedView for why we don't update projectedViews here.\n Services.dirtyParentQueries(view);\n renderDetachView(view);\n return view;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction detachProjectedView(view) {\n if (!(view.state & 16 /* IsProjectedView */)) {\n return;\n }\n var /** @type {?} */ dvcElementData = declaredViewContainer(view);\n if (dvcElementData) {\n var /** @type {?} */ projectedViews = dvcElementData.template._projectedViews;\n if (projectedViews) {\n removeFromArray(projectedViews, projectedViews.indexOf(view));\n Services.dirtyParentQueries(view);\n }\n }\n}\n/**\n * @param {?} elementData\n * @param {?} oldViewIndex\n * @param {?} newViewIndex\n * @return {?}\n */\nfunction moveEmbeddedView(elementData, oldViewIndex, newViewIndex) {\n var /** @type {?} */ embeddedViews = /** @type {?} */ ((elementData.viewContainer))._embeddedViews;\n var /** @type {?} */ view = embeddedViews[oldViewIndex];\n removeFromArray(embeddedViews, oldViewIndex);\n if (newViewIndex == null) {\n newViewIndex = embeddedViews.length;\n }\n addToArray(embeddedViews, newViewIndex, view);\n // Note: Don't need to change projectedViews as the order in there\n // as always invalid...\n Services.dirtyParentQueries(view);\n renderDetachView(view);\n var /** @type {?} */ prevView = newViewIndex > 0 ? embeddedViews[newViewIndex - 1] : null;\n renderAttachEmbeddedView(elementData, prevView, view);\n return view;\n}\n/**\n * @param {?} elementData\n * @param {?} prevView\n * @param {?} view\n * @return {?}\n */\nfunction renderAttachEmbeddedView(elementData, prevView, view) {\n var /** @type {?} */ prevRenderNode = prevView ? renderNode(prevView, /** @type {?} */ ((prevView.def.lastRenderRootNode))) :\n elementData.renderElement;\n var /** @type {?} */ parentNode = view.renderer.parentNode(prevRenderNode);\n var /** @type {?} */ nextSibling = view.renderer.nextSibling(prevRenderNode);\n // Note: We can't check if `nextSibling` is present, as on WebWorkers it will always be!\n // However, browsers automatically do `appendChild` when there is no `nextSibling`.\n visitRootRenderNodes(view, 2 /* InsertBefore */, parentNode, nextSibling, undefined);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction renderDetachView(view) {\n visitRootRenderNodes(view, 3 /* RemoveChild */, null, null, undefined);\n}\n/**\n * @param {?} arr\n * @param {?} index\n * @param {?} value\n * @return {?}\n */\nfunction addToArray(arr, index, value) {\n // perf: array.push is faster than array.splice!\n if (index >= arr.length) {\n arr.push(value);\n }\n else {\n arr.splice(index, 0, value);\n }\n}\n/**\n * @param {?} arr\n * @param {?} index\n * @return {?}\n */\nfunction removeFromArray(arr, index) {\n // perf: array.pop is faster than array.splice!\n if (index >= arr.length - 1) {\n arr.pop();\n }\n else {\n arr.splice(index, 1);\n }\n}\n\n/**\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 */\nvar EMPTY_CONTEXT = new Object();\n/**\n * @param {?} selector\n * @param {?} componentType\n * @param {?} viewDefFactory\n * @param {?} inputs\n * @param {?} outputs\n * @param {?} ngContentSelectors\n * @return {?}\n */\nfunction createComponentFactory(selector, componentType, viewDefFactory, inputs, outputs, ngContentSelectors) {\n return new ComponentFactory_(selector, componentType, viewDefFactory, inputs, outputs, ngContentSelectors);\n}\n/**\n * @param {?} componentFactory\n * @return {?}\n */\nfunction getComponentViewDefinitionFactory(componentFactory) {\n return (/** @type {?} */ (componentFactory)).viewDefFactory;\n}\nvar ComponentFactory_ = /** @class */ (function (_super) {\n __extends(ComponentFactory_, _super);\n function ComponentFactory_(selector, componentType, viewDefFactory, _inputs, _outputs, ngContentSelectors) {\n var _this = \n // Attention: this ctor is called as top level function.\n // Putting any logic in here will destroy closure tree shaking!\n _super.call(this) || this;\n _this.selector = selector;\n _this.componentType = componentType;\n _this._inputs = _inputs;\n _this._outputs = _outputs;\n _this.ngContentSelectors = ngContentSelectors;\n _this.viewDefFactory = viewDefFactory;\n return _this;\n }\n Object.defineProperty(ComponentFactory_.prototype, \"inputs\", {\n get: /**\n * @return {?}\n */\n function () {\n var /** @type {?} */ inputsArr = [];\n var /** @type {?} */ inputs = /** @type {?} */ ((this._inputs));\n for (var /** @type {?} */ propName in inputs) {\n var /** @type {?} */ templateName = inputs[propName];\n inputsArr.push({ propName: propName, templateName: templateName });\n }\n return inputsArr;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ComponentFactory_.prototype, \"outputs\", {\n get: /**\n * @return {?}\n */\n function () {\n var /** @type {?} */ outputsArr = [];\n for (var /** @type {?} */ propName in this._outputs) {\n var /** @type {?} */ templateName = this._outputs[propName];\n outputsArr.push({ propName: propName, templateName: templateName });\n }\n return outputsArr;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Creates a new component.\n */\n /**\n * Creates a new component.\n * @param {?} injector\n * @param {?=} projectableNodes\n * @param {?=} rootSelectorOrNode\n * @param {?=} ngModule\n * @return {?}\n */\n ComponentFactory_.prototype.create = /**\n * Creates a new component.\n * @param {?} injector\n * @param {?=} projectableNodes\n * @param {?=} rootSelectorOrNode\n * @param {?=} ngModule\n * @return {?}\n */\n function (injector, projectableNodes, rootSelectorOrNode, ngModule) {\n if (!ngModule) {\n throw new Error('ngModule should be provided');\n }\n var /** @type {?} */ viewDef = resolveDefinition(this.viewDefFactory);\n var /** @type {?} */ componentNodeIndex = /** @type {?} */ ((/** @type {?} */ ((viewDef.nodes[0].element)).componentProvider)).nodeIndex;\n var /** @type {?} */ view = Services.createRootView(injector, projectableNodes || [], rootSelectorOrNode, viewDef, ngModule, EMPTY_CONTEXT);\n var /** @type {?} */ component = asProviderData(view, componentNodeIndex).instance;\n if (rootSelectorOrNode) {\n view.renderer.setAttribute(asElementData(view, 0).renderElement, 'ng-version', VERSION.full);\n }\n return new ComponentRef_(view, new ViewRef_(view), component);\n };\n return ComponentFactory_;\n}(ComponentFactory));\nvar ComponentRef_ = /** @class */ (function (_super) {\n __extends(ComponentRef_, _super);\n function ComponentRef_(_view, _viewRef, _component) {\n var _this = _super.call(this) || this;\n _this._view = _view;\n _this._viewRef = _viewRef;\n _this._component = _component;\n _this._elDef = _this._view.def.nodes[0];\n _this.hostView = _viewRef;\n _this.changeDetectorRef = _viewRef;\n _this.instance = _component;\n return _this;\n }\n Object.defineProperty(ComponentRef_.prototype, \"location\", {\n get: /**\n * @return {?}\n */\n function () {\n return new ElementRef(asElementData(this._view, this._elDef.nodeIndex).renderElement);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ComponentRef_.prototype, \"injector\", {\n get: /**\n * @return {?}\n */\n function () { return new Injector_(this._view, this._elDef); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ComponentRef_.prototype, \"componentType\", {\n get: /**\n * @return {?}\n */\n function () { return /** @type {?} */ (this._component.constructor); },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n ComponentRef_.prototype.destroy = /**\n * @return {?}\n */\n function () { this._viewRef.destroy(); };\n /**\n * @param {?} callback\n * @return {?}\n */\n ComponentRef_.prototype.onDestroy = /**\n * @param {?} callback\n * @return {?}\n */\n function (callback) { this._viewRef.onDestroy(callback); };\n return ComponentRef_;\n}(ComponentRef));\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} elData\n * @return {?}\n */\nfunction createViewContainerData(view, elDef, elData) {\n return new ViewContainerRef_(view, elDef, elData);\n}\nvar ViewContainerRef_ = /** @class */ (function () {\n function ViewContainerRef_(_view, _elDef, _data) {\n this._view = _view;\n this._elDef = _elDef;\n this._data = _data;\n /**\n * \\@internal\n */\n this._embeddedViews = [];\n }\n Object.defineProperty(ViewContainerRef_.prototype, \"element\", {\n get: /**\n * @return {?}\n */\n function () { return new ElementRef(this._data.renderElement); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewContainerRef_.prototype, \"injector\", {\n get: /**\n * @return {?}\n */\n function () { return new Injector_(this._view, this._elDef); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewContainerRef_.prototype, \"parentInjector\", {\n get: /**\n * @return {?}\n */\n function () {\n var /** @type {?} */ view = this._view;\n var /** @type {?} */ elDef = this._elDef.parent;\n while (!elDef && view) {\n elDef = viewParentEl(view);\n view = /** @type {?} */ ((view.parent));\n }\n return view ? new Injector_(view, elDef) : new Injector_(this._view, null);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n ViewContainerRef_.prototype.clear = /**\n * @return {?}\n */\n function () {\n var /** @type {?} */ len = this._embeddedViews.length;\n for (var /** @type {?} */ i = len - 1; i >= 0; i--) {\n var /** @type {?} */ view = /** @type {?} */ ((detachEmbeddedView(this._data, i)));\n Services.destroyView(view);\n }\n };\n /**\n * @param {?} index\n * @return {?}\n */\n ViewContainerRef_.prototype.get = /**\n * @param {?} index\n * @return {?}\n */\n function (index) {\n var /** @type {?} */ view = this._embeddedViews[index];\n if (view) {\n var /** @type {?} */ ref = new ViewRef_(view);\n ref.attachToViewContainerRef(this);\n return ref;\n }\n return null;\n };\n Object.defineProperty(ViewContainerRef_.prototype, \"length\", {\n get: /**\n * @return {?}\n */\n function () { return this._embeddedViews.length; },\n enumerable: true,\n configurable: true\n });\n /**\n * @template C\n * @param {?} templateRef\n * @param {?=} context\n * @param {?=} index\n * @return {?}\n */\n ViewContainerRef_.prototype.createEmbeddedView = /**\n * @template C\n * @param {?} templateRef\n * @param {?=} context\n * @param {?=} index\n * @return {?}\n */\n function (templateRef, context, index) {\n var /** @type {?} */ viewRef = templateRef.createEmbeddedView(context || /** @type {?} */ ({}));\n this.insert(viewRef, index);\n return viewRef;\n };\n /**\n * @template C\n * @param {?} componentFactory\n * @param {?=} index\n * @param {?=} injector\n * @param {?=} projectableNodes\n * @param {?=} ngModuleRef\n * @return {?}\n */\n ViewContainerRef_.prototype.createComponent = /**\n * @template C\n * @param {?} componentFactory\n * @param {?=} index\n * @param {?=} injector\n * @param {?=} projectableNodes\n * @param {?=} ngModuleRef\n * @return {?}\n */\n function (componentFactory, index, injector, projectableNodes, ngModuleRef) {\n var /** @type {?} */ contextInjector = injector || this.parentInjector;\n if (!ngModuleRef && !(componentFactory instanceof ComponentFactoryBoundToModule)) {\n ngModuleRef = contextInjector.get(NgModuleRef);\n }\n var /** @type {?} */ componentRef = componentFactory.create(contextInjector, projectableNodes, undefined, ngModuleRef);\n this.insert(componentRef.hostView, index);\n return componentRef;\n };\n /**\n * @param {?} viewRef\n * @param {?=} index\n * @return {?}\n */\n ViewContainerRef_.prototype.insert = /**\n * @param {?} viewRef\n * @param {?=} index\n * @return {?}\n */\n function (viewRef, index) {\n if (viewRef.destroyed) {\n throw new Error('Cannot insert a destroyed View in a ViewContainer!');\n }\n var /** @type {?} */ viewRef_ = /** @type {?} */ (viewRef);\n var /** @type {?} */ viewData = viewRef_._view;\n attachEmbeddedView(this._view, this._data, index, viewData);\n viewRef_.attachToViewContainerRef(this);\n return viewRef;\n };\n /**\n * @param {?} viewRef\n * @param {?} currentIndex\n * @return {?}\n */\n ViewContainerRef_.prototype.move = /**\n * @param {?} viewRef\n * @param {?} currentIndex\n * @return {?}\n */\n function (viewRef, currentIndex) {\n if (viewRef.destroyed) {\n throw new Error('Cannot move a destroyed View in a ViewContainer!');\n }\n var /** @type {?} */ previousIndex = this._embeddedViews.indexOf(viewRef._view);\n moveEmbeddedView(this._data, previousIndex, currentIndex);\n return viewRef;\n };\n /**\n * @param {?} viewRef\n * @return {?}\n */\n ViewContainerRef_.prototype.indexOf = /**\n * @param {?} viewRef\n * @return {?}\n */\n function (viewRef) {\n return this._embeddedViews.indexOf((/** @type {?} */ (viewRef))._view);\n };\n /**\n * @param {?=} index\n * @return {?}\n */\n ViewContainerRef_.prototype.remove = /**\n * @param {?=} index\n * @return {?}\n */\n function (index) {\n var /** @type {?} */ viewData = detachEmbeddedView(this._data, index);\n if (viewData) {\n Services.destroyView(viewData);\n }\n };\n /**\n * @param {?=} index\n * @return {?}\n */\n ViewContainerRef_.prototype.detach = /**\n * @param {?=} index\n * @return {?}\n */\n function (index) {\n var /** @type {?} */ view = detachEmbeddedView(this._data, index);\n return view ? new ViewRef_(view) : null;\n };\n return ViewContainerRef_;\n}());\n/**\n * @param {?} view\n * @return {?}\n */\nfunction createChangeDetectorRef(view) {\n return new ViewRef_(view);\n}\nvar ViewRef_ = /** @class */ (function () {\n function ViewRef_(_view) {\n this._view = _view;\n this._viewContainerRef = null;\n this._appRef = null;\n }\n Object.defineProperty(ViewRef_.prototype, \"rootNodes\", {\n get: /**\n * @return {?}\n */\n function () { return rootRenderNodes(this._view); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewRef_.prototype, \"context\", {\n get: /**\n * @return {?}\n */\n function () { return this._view.context; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewRef_.prototype, \"destroyed\", {\n get: /**\n * @return {?}\n */\n function () { return (this._view.state & 128 /* Destroyed */) !== 0; },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n ViewRef_.prototype.markForCheck = /**\n * @return {?}\n */\n function () { markParentViewsForCheck(this._view); };\n /**\n * @return {?}\n */\n ViewRef_.prototype.detach = /**\n * @return {?}\n */\n function () { this._view.state &= ~4 /* Attached */; };\n /**\n * @return {?}\n */\n ViewRef_.prototype.detectChanges = /**\n * @return {?}\n */\n function () {\n var /** @type {?} */ fs = this._view.root.rendererFactory;\n if (fs.begin) {\n fs.begin();\n }\n try {\n Services.checkAndUpdateView(this._view);\n }\n finally {\n if (fs.end) {\n fs.end();\n }\n }\n };\n /**\n * @return {?}\n */\n ViewRef_.prototype.checkNoChanges = /**\n * @return {?}\n */\n function () { Services.checkNoChangesView(this._view); };\n /**\n * @return {?}\n */\n ViewRef_.prototype.reattach = /**\n * @return {?}\n */\n function () { this._view.state |= 4 /* Attached */; };\n /**\n * @param {?} callback\n * @return {?}\n */\n ViewRef_.prototype.onDestroy = /**\n * @param {?} callback\n * @return {?}\n */\n function (callback) {\n if (!this._view.disposables) {\n this._view.disposables = [];\n }\n this._view.disposables.push(/** @type {?} */ (callback));\n };\n /**\n * @return {?}\n */\n ViewRef_.prototype.destroy = /**\n * @return {?}\n */\n function () {\n if (this._appRef) {\n this._appRef.detachView(this);\n }\n else if (this._viewContainerRef) {\n this._viewContainerRef.detach(this._viewContainerRef.indexOf(this));\n }\n Services.destroyView(this._view);\n };\n /**\n * @return {?}\n */\n ViewRef_.prototype.detachFromAppRef = /**\n * @return {?}\n */\n function () {\n this._appRef = null;\n renderDetachView(this._view);\n Services.dirtyParentQueries(this._view);\n };\n /**\n * @param {?} appRef\n * @return {?}\n */\n ViewRef_.prototype.attachToAppRef = /**\n * @param {?} appRef\n * @return {?}\n */\n function (appRef) {\n if (this._viewContainerRef) {\n throw new Error('This view is already attached to a ViewContainer!');\n }\n this._appRef = appRef;\n };\n /**\n * @param {?} vcRef\n * @return {?}\n */\n ViewRef_.prototype.attachToViewContainerRef = /**\n * @param {?} vcRef\n * @return {?}\n */\n function (vcRef) {\n if (this._appRef) {\n throw new Error('This view is already attached directly to the ApplicationRef!');\n }\n this._viewContainerRef = vcRef;\n };\n return ViewRef_;\n}());\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nfunction createTemplateData(view, def) {\n return new TemplateRef_(view, def);\n}\nvar TemplateRef_ = /** @class */ (function (_super) {\n __extends(TemplateRef_, _super);\n function TemplateRef_(_parentView, _def) {\n var _this = _super.call(this) || this;\n _this._parentView = _parentView;\n _this._def = _def;\n return _this;\n }\n /**\n * @param {?} context\n * @return {?}\n */\n TemplateRef_.prototype.createEmbeddedView = /**\n * @param {?} context\n * @return {?}\n */\n function (context) {\n return new ViewRef_(Services.createEmbeddedView(this._parentView, this._def, /** @type {?} */ ((/** @type {?} */ ((this._def.element)).template)), context));\n };\n Object.defineProperty(TemplateRef_.prototype, \"elementRef\", {\n get: /**\n * @return {?}\n */\n function () {\n return new ElementRef(asElementData(this._parentView, this._def.nodeIndex).renderElement);\n },\n enumerable: true,\n configurable: true\n });\n return TemplateRef_;\n}(TemplateRef));\n/**\n * @param {?} view\n * @param {?} elDef\n * @return {?}\n */\nfunction createInjector(view, elDef) {\n return new Injector_(view, elDef);\n}\nvar Injector_ = /** @class */ (function () {\n function Injector_(view, elDef) {\n this.view = view;\n this.elDef = elDef;\n }\n /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n Injector_.prototype.get = /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n function (token, notFoundValue) {\n if (notFoundValue === void 0) { notFoundValue = Injector.THROW_IF_NOT_FOUND; }\n var /** @type {?} */ allowPrivateServices = this.elDef ? (this.elDef.flags & 33554432 /* ComponentView */) !== 0 : false;\n return Services.resolveDep(this.view, this.elDef, allowPrivateServices, { flags: 0 /* None */, token: token, tokenKey: tokenKey(token) }, notFoundValue);\n };\n return Injector_;\n}());\n/**\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nfunction nodeValue(view, index) {\n var /** @type {?} */ def = view.def.nodes[index];\n if (def.flags & 1 /* TypeElement */) {\n var /** @type {?} */ elData = asElementData(view, def.nodeIndex);\n return /** @type {?} */ ((def.element)).template ? elData.template : elData.renderElement;\n }\n else if (def.flags & 2 /* TypeText */) {\n return asTextData(view, def.nodeIndex).renderText;\n }\n else if (def.flags & (20224 /* CatProvider */ | 16 /* TypePipe */)) {\n return asProviderData(view, def.nodeIndex).instance;\n }\n throw new Error(\"Illegal state: read nodeValue for node index \" + index);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction createRendererV1(view) {\n return new RendererAdapter(view.renderer);\n}\nvar RendererAdapter = /** @class */ (function () {\n function RendererAdapter(delegate) {\n this.delegate = delegate;\n }\n /**\n * @param {?} selectorOrNode\n * @return {?}\n */\n RendererAdapter.prototype.selectRootElement = /**\n * @param {?} selectorOrNode\n * @return {?}\n */\n function (selectorOrNode) {\n return this.delegate.selectRootElement(selectorOrNode);\n };\n /**\n * @param {?} parent\n * @param {?} namespaceAndName\n * @return {?}\n */\n RendererAdapter.prototype.createElement = /**\n * @param {?} parent\n * @param {?} namespaceAndName\n * @return {?}\n */\n function (parent, namespaceAndName) {\n var _a = splitNamespace(namespaceAndName), ns = _a[0], name = _a[1];\n var /** @type {?} */ el = this.delegate.createElement(name, ns);\n if (parent) {\n this.delegate.appendChild(parent, el);\n }\n return el;\n };\n /**\n * @param {?} hostElement\n * @return {?}\n */\n RendererAdapter.prototype.createViewRoot = /**\n * @param {?} hostElement\n * @return {?}\n */\n function (hostElement) { return hostElement; };\n /**\n * @param {?} parentElement\n * @return {?}\n */\n RendererAdapter.prototype.createTemplateAnchor = /**\n * @param {?} parentElement\n * @return {?}\n */\n function (parentElement) {\n var /** @type {?} */ comment = this.delegate.createComment('');\n if (parentElement) {\n this.delegate.appendChild(parentElement, comment);\n }\n return comment;\n };\n /**\n * @param {?} parentElement\n * @param {?} value\n * @return {?}\n */\n RendererAdapter.prototype.createText = /**\n * @param {?} parentElement\n * @param {?} value\n * @return {?}\n */\n function (parentElement, value) {\n var /** @type {?} */ node = this.delegate.createText(value);\n if (parentElement) {\n this.delegate.appendChild(parentElement, node);\n }\n return node;\n };\n /**\n * @param {?} parentElement\n * @param {?} nodes\n * @return {?}\n */\n RendererAdapter.prototype.projectNodes = /**\n * @param {?} parentElement\n * @param {?} nodes\n * @return {?}\n */\n function (parentElement, nodes) {\n for (var /** @type {?} */ i = 0; i < nodes.length; i++) {\n this.delegate.appendChild(parentElement, nodes[i]);\n }\n };\n /**\n * @param {?} node\n * @param {?} viewRootNodes\n * @return {?}\n */\n RendererAdapter.prototype.attachViewAfter = /**\n * @param {?} node\n * @param {?} viewRootNodes\n * @return {?}\n */\n function (node, viewRootNodes) {\n var /** @type {?} */ parentElement = this.delegate.parentNode(node);\n var /** @type {?} */ nextSibling = this.delegate.nextSibling(node);\n for (var /** @type {?} */ i = 0; i < viewRootNodes.length; i++) {\n this.delegate.insertBefore(parentElement, viewRootNodes[i], nextSibling);\n }\n };\n /**\n * @param {?} viewRootNodes\n * @return {?}\n */\n RendererAdapter.prototype.detachView = /**\n * @param {?} viewRootNodes\n * @return {?}\n */\n function (viewRootNodes) {\n for (var /** @type {?} */ i = 0; i < viewRootNodes.length; i++) {\n var /** @type {?} */ node = viewRootNodes[i];\n var /** @type {?} */ parentElement = this.delegate.parentNode(node);\n this.delegate.removeChild(parentElement, node);\n }\n };\n /**\n * @param {?} hostElement\n * @param {?} viewAllNodes\n * @return {?}\n */\n RendererAdapter.prototype.destroyView = /**\n * @param {?} hostElement\n * @param {?} viewAllNodes\n * @return {?}\n */\n function (hostElement, viewAllNodes) {\n for (var /** @type {?} */ i = 0; i < viewAllNodes.length; i++) {\n /** @type {?} */ ((this.delegate.destroyNode))(viewAllNodes[i]);\n }\n };\n /**\n * @param {?} renderElement\n * @param {?} name\n * @param {?} callback\n * @return {?}\n */\n RendererAdapter.prototype.listen = /**\n * @param {?} renderElement\n * @param {?} name\n * @param {?} callback\n * @return {?}\n */\n function (renderElement, name, callback) {\n return this.delegate.listen(renderElement, name, /** @type {?} */ (callback));\n };\n /**\n * @param {?} target\n * @param {?} name\n * @param {?} callback\n * @return {?}\n */\n RendererAdapter.prototype.listenGlobal = /**\n * @param {?} target\n * @param {?} name\n * @param {?} callback\n * @return {?}\n */\n function (target, name, callback) {\n return this.delegate.listen(target, name, /** @type {?} */ (callback));\n };\n /**\n * @param {?} renderElement\n * @param {?} propertyName\n * @param {?} propertyValue\n * @return {?}\n */\n RendererAdapter.prototype.setElementProperty = /**\n * @param {?} renderElement\n * @param {?} propertyName\n * @param {?} propertyValue\n * @return {?}\n */\n function (renderElement, propertyName, propertyValue) {\n this.delegate.setProperty(renderElement, propertyName, propertyValue);\n };\n /**\n * @param {?} renderElement\n * @param {?} namespaceAndName\n * @param {?} attributeValue\n * @return {?}\n */\n RendererAdapter.prototype.setElementAttribute = /**\n * @param {?} renderElement\n * @param {?} namespaceAndName\n * @param {?} attributeValue\n * @return {?}\n */\n function (renderElement, namespaceAndName, attributeValue) {\n var _a = splitNamespace(namespaceAndName), ns = _a[0], name = _a[1];\n if (attributeValue != null) {\n this.delegate.setAttribute(renderElement, name, attributeValue, ns);\n }\n else {\n this.delegate.removeAttribute(renderElement, name, ns);\n }\n };\n /**\n * @param {?} renderElement\n * @param {?} propertyName\n * @param {?} propertyValue\n * @return {?}\n */\n RendererAdapter.prototype.setBindingDebugInfo = /**\n * @param {?} renderElement\n * @param {?} propertyName\n * @param {?} propertyValue\n * @return {?}\n */\n function (renderElement, propertyName, propertyValue) { };\n /**\n * @param {?} renderElement\n * @param {?} className\n * @param {?} isAdd\n * @return {?}\n */\n RendererAdapter.prototype.setElementClass = /**\n * @param {?} renderElement\n * @param {?} className\n * @param {?} isAdd\n * @return {?}\n */\n function (renderElement, className, isAdd) {\n if (isAdd) {\n this.delegate.addClass(renderElement, className);\n }\n else {\n this.delegate.removeClass(renderElement, className);\n }\n };\n /**\n * @param {?} renderElement\n * @param {?} styleName\n * @param {?} styleValue\n * @return {?}\n */\n RendererAdapter.prototype.setElementStyle = /**\n * @param {?} renderElement\n * @param {?} styleName\n * @param {?} styleValue\n * @return {?}\n */\n function (renderElement, styleName, styleValue) {\n if (styleValue != null) {\n this.delegate.setStyle(renderElement, styleName, styleValue);\n }\n else {\n this.delegate.removeStyle(renderElement, styleName);\n }\n };\n /**\n * @param {?} renderElement\n * @param {?} methodName\n * @param {?} args\n * @return {?}\n */\n RendererAdapter.prototype.invokeElementMethod = /**\n * @param {?} renderElement\n * @param {?} methodName\n * @param {?} args\n * @return {?}\n */\n function (renderElement, methodName, args) {\n (/** @type {?} */ (renderElement))[methodName].apply(renderElement, args);\n };\n /**\n * @param {?} renderNode\n * @param {?} text\n * @return {?}\n */\n RendererAdapter.prototype.setText = /**\n * @param {?} renderNode\n * @param {?} text\n * @return {?}\n */\n function (renderNode$$1, text) { this.delegate.setValue(renderNode$$1, text); };\n /**\n * @return {?}\n */\n RendererAdapter.prototype.animate = /**\n * @return {?}\n */\n function () { throw new Error('Renderer.animate is no longer supported!'); };\n return RendererAdapter;\n}());\n/**\n * @param {?} moduleType\n * @param {?} parent\n * @param {?} bootstrapComponents\n * @param {?} def\n * @return {?}\n */\nfunction createNgModuleRef(moduleType, parent, bootstrapComponents, def) {\n return new NgModuleRef_(moduleType, parent, bootstrapComponents, def);\n}\nvar NgModuleRef_ = /** @class */ (function () {\n function NgModuleRef_(_moduleType, _parent, _bootstrapComponents, _def) {\n this._moduleType = _moduleType;\n this._parent = _parent;\n this._bootstrapComponents = _bootstrapComponents;\n this._def = _def;\n this._destroyListeners = [];\n this._destroyed = false;\n this.injector = this;\n initNgModule(this);\n }\n /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n NgModuleRef_.prototype.get = /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n function (token, notFoundValue) {\n if (notFoundValue === void 0) { notFoundValue = Injector.THROW_IF_NOT_FOUND; }\n return resolveNgModuleDep(this, { token: token, tokenKey: tokenKey(token), flags: 0 /* None */ }, notFoundValue);\n };\n Object.defineProperty(NgModuleRef_.prototype, \"instance\", {\n get: /**\n * @return {?}\n */\n function () { return this.get(this._moduleType); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgModuleRef_.prototype, \"componentFactoryResolver\", {\n get: /**\n * @return {?}\n */\n function () { return this.get(ComponentFactoryResolver); },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n NgModuleRef_.prototype.destroy = /**\n * @return {?}\n */\n function () {\n if (this._destroyed) {\n throw new Error(\"The ng module \" + stringify(this.instance.constructor) + \" has already been destroyed.\");\n }\n this._destroyed = true;\n callNgModuleLifecycle(this, 131072 /* OnDestroy */);\n this._destroyListeners.forEach(function (listener) { return listener(); });\n };\n /**\n * @param {?} callback\n * @return {?}\n */\n NgModuleRef_.prototype.onDestroy = /**\n * @param {?} callback\n * @return {?}\n */\n function (callback) { this._destroyListeners.push(callback); };\n return NgModuleRef_;\n}());\n\n/**\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 */\nvar RendererV1TokenKey = tokenKey(Renderer);\nvar Renderer2TokenKey = tokenKey(Renderer2);\nvar ElementRefTokenKey = tokenKey(ElementRef);\nvar ViewContainerRefTokenKey = tokenKey(ViewContainerRef);\nvar TemplateRefTokenKey = tokenKey(TemplateRef);\nvar ChangeDetectorRefTokenKey = tokenKey(ChangeDetectorRef);\nvar InjectorRefTokenKey = tokenKey(Injector);\n/**\n * @param {?} checkIndex\n * @param {?} flags\n * @param {?} matchedQueries\n * @param {?} childCount\n * @param {?} ctor\n * @param {?} deps\n * @param {?=} props\n * @param {?=} outputs\n * @return {?}\n */\nfunction directiveDef(checkIndex, flags, matchedQueries, childCount, ctor, deps, props, outputs) {\n var /** @type {?} */ bindings = [];\n if (props) {\n for (var /** @type {?} */ prop in props) {\n var _a = props[prop], bindingIndex = _a[0], nonMinifiedName = _a[1];\n bindings[bindingIndex] = {\n flags: 8 /* TypeProperty */,\n name: prop, nonMinifiedName: nonMinifiedName,\n ns: null,\n securityContext: null,\n suffix: null\n };\n }\n }\n var /** @type {?} */ outputDefs = [];\n if (outputs) {\n for (var /** @type {?} */ propName in outputs) {\n outputDefs.push({ type: 1 /* DirectiveOutput */, propName: propName, target: null, eventName: outputs[propName] });\n }\n }\n flags |= 16384 /* TypeDirective */;\n return _def(checkIndex, flags, matchedQueries, childCount, ctor, ctor, deps, bindings, outputDefs);\n}\n/**\n * @param {?} flags\n * @param {?} ctor\n * @param {?} deps\n * @return {?}\n */\nfunction pipeDef(flags, ctor, deps) {\n flags |= 16 /* TypePipe */;\n return _def(-1, flags, null, 0, ctor, ctor, deps);\n}\n/**\n * @param {?} flags\n * @param {?} matchedQueries\n * @param {?} token\n * @param {?} value\n * @param {?} deps\n * @return {?}\n */\nfunction providerDef(flags, matchedQueries, token, value, deps) {\n return _def(-1, flags, matchedQueries, 0, token, value, deps);\n}\n/**\n * @param {?} checkIndex\n * @param {?} flags\n * @param {?} matchedQueriesDsl\n * @param {?} childCount\n * @param {?} token\n * @param {?} value\n * @param {?} deps\n * @param {?=} bindings\n * @param {?=} outputs\n * @return {?}\n */\nfunction _def(checkIndex, flags, matchedQueriesDsl, childCount, token, value, deps, bindings, outputs) {\n var _a = splitMatchedQueriesDsl(matchedQueriesDsl), matchedQueries = _a.matchedQueries, references = _a.references, matchedQueryIds = _a.matchedQueryIds;\n if (!outputs) {\n outputs = [];\n }\n if (!bindings) {\n bindings = [];\n }\n // Need to resolve forwardRefs as e.g. for `useValue` we\n // lowered the expression and then stopped evaluating it,\n // i.e. also didn't unwrap it.\n value = resolveForwardRef(value);\n var /** @type {?} */ depDefs = splitDepsDsl(deps, stringify(token));\n return {\n // will bet set by the view definition\n nodeIndex: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n checkIndex: checkIndex,\n flags: flags,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0, matchedQueries: matchedQueries, matchedQueryIds: matchedQueryIds, references: references,\n ngContentIndex: -1, childCount: childCount, bindings: bindings,\n bindingFlags: calcBindingFlags(bindings), outputs: outputs,\n element: null,\n provider: { token: token, value: value, deps: depDefs },\n text: null,\n query: null,\n ngContent: null\n };\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nfunction createProviderInstance(view, def) {\n return _createProviderInstance(view, def);\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nfunction createPipeInstance(view, def) {\n // deps are looked up from component.\n var /** @type {?} */ compView = view;\n while (compView.parent && !isComponentView(compView)) {\n compView = compView.parent;\n }\n // pipes can see the private services of the component\n var /** @type {?} */ allowPrivateServices = true;\n // pipes are always eager and classes!\n return createClass(/** @type {?} */ ((compView.parent)), /** @type {?} */ ((viewParentEl(compView))), allowPrivateServices, /** @type {?} */ ((def.provider)).value, /** @type {?} */ ((def.provider)).deps);\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nfunction createDirectiveInstance(view, def) {\n // components can see other private services, other directives can't.\n var /** @type {?} */ allowPrivateServices = (def.flags & 32768 /* Component */) > 0;\n // directives are always eager and classes!\n var /** @type {?} */ instance = createClass(view, /** @type {?} */ ((def.parent)), allowPrivateServices, /** @type {?} */ ((def.provider)).value, /** @type {?} */ ((def.provider)).deps);\n if (def.outputs.length) {\n for (var /** @type {?} */ i = 0; i < def.outputs.length; i++) {\n var /** @type {?} */ output = def.outputs[i];\n var /** @type {?} */ subscription = instance[/** @type {?} */ ((output.propName))].subscribe(eventHandlerClosure(view, /** @type {?} */ ((def.parent)).nodeIndex, output.eventName)); /** @type {?} */\n ((view.disposables))[def.outputIndex + i] = subscription.unsubscribe.bind(subscription);\n }\n }\n return instance;\n}\n/**\n * @param {?} view\n * @param {?} index\n * @param {?} eventName\n * @return {?}\n */\nfunction eventHandlerClosure(view, index, eventName) {\n return function (event) { return dispatchEvent(view, index, eventName, event); };\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} v0\n * @param {?} v1\n * @param {?} v2\n * @param {?} v3\n * @param {?} v4\n * @param {?} v5\n * @param {?} v6\n * @param {?} v7\n * @param {?} v8\n * @param {?} v9\n * @return {?}\n */\nfunction checkAndUpdateDirectiveInline(view, def, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n var /** @type {?} */ providerData = asProviderData(view, def.nodeIndex);\n var /** @type {?} */ directive = providerData.instance;\n var /** @type {?} */ changed = false;\n var /** @type {?} */ changes = /** @type {?} */ ((undefined));\n var /** @type {?} */ bindLen = def.bindings.length;\n if (bindLen > 0 && checkBinding(view, def, 0, v0)) {\n changed = true;\n changes = updateProp(view, providerData, def, 0, v0, changes);\n }\n if (bindLen > 1 && checkBinding(view, def, 1, v1)) {\n changed = true;\n changes = updateProp(view, providerData, def, 1, v1, changes);\n }\n if (bindLen > 2 && checkBinding(view, def, 2, v2)) {\n changed = true;\n changes = updateProp(view, providerData, def, 2, v2, changes);\n }\n if (bindLen > 3 && checkBinding(view, def, 3, v3)) {\n changed = true;\n changes = updateProp(view, providerData, def, 3, v3, changes);\n }\n if (bindLen > 4 && checkBinding(view, def, 4, v4)) {\n changed = true;\n changes = updateProp(view, providerData, def, 4, v4, changes);\n }\n if (bindLen > 5 && checkBinding(view, def, 5, v5)) {\n changed = true;\n changes = updateProp(view, providerData, def, 5, v5, changes);\n }\n if (bindLen > 6 && checkBinding(view, def, 6, v6)) {\n changed = true;\n changes = updateProp(view, providerData, def, 6, v6, changes);\n }\n if (bindLen > 7 && checkBinding(view, def, 7, v7)) {\n changed = true;\n changes = updateProp(view, providerData, def, 7, v7, changes);\n }\n if (bindLen > 8 && checkBinding(view, def, 8, v8)) {\n changed = true;\n changes = updateProp(view, providerData, def, 8, v8, changes);\n }\n if (bindLen > 9 && checkBinding(view, def, 9, v9)) {\n changed = true;\n changes = updateProp(view, providerData, def, 9, v9, changes);\n }\n if (changes) {\n directive.ngOnChanges(changes);\n }\n if ((def.flags & 65536 /* OnInit */) &&\n shouldCallLifecycleInitHook(view, 256 /* InitState_CallingOnInit */, def.nodeIndex)) {\n directive.ngOnInit();\n }\n if (def.flags & 262144 /* DoCheck */) {\n directive.ngDoCheck();\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} values\n * @return {?}\n */\nfunction checkAndUpdateDirectiveDynamic(view, def, values) {\n var /** @type {?} */ providerData = asProviderData(view, def.nodeIndex);\n var /** @type {?} */ directive = providerData.instance;\n var /** @type {?} */ changed = false;\n var /** @type {?} */ changes = /** @type {?} */ ((undefined));\n for (var /** @type {?} */ i = 0; i < values.length; i++) {\n if (checkBinding(view, def, i, values[i])) {\n changed = true;\n changes = updateProp(view, providerData, def, i, values[i], changes);\n }\n }\n if (changes) {\n directive.ngOnChanges(changes);\n }\n if ((def.flags & 65536 /* OnInit */) &&\n shouldCallLifecycleInitHook(view, 256 /* InitState_CallingOnInit */, def.nodeIndex)) {\n directive.ngOnInit();\n }\n if (def.flags & 262144 /* DoCheck */) {\n directive.ngDoCheck();\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nfunction _createProviderInstance(view, def) {\n // private services can see other private services\n var /** @type {?} */ allowPrivateServices = (def.flags & 8192 /* PrivateProvider */) > 0;\n var /** @type {?} */ providerDef = def.provider;\n switch (def.flags & 201347067 /* Types */) {\n case 512 /* TypeClassProvider */:\n return createClass(view, /** @type {?} */ ((def.parent)), allowPrivateServices, /** @type {?} */ ((providerDef)).value, /** @type {?} */ ((providerDef)).deps);\n case 1024 /* TypeFactoryProvider */:\n return callFactory(view, /** @type {?} */ ((def.parent)), allowPrivateServices, /** @type {?} */ ((providerDef)).value, /** @type {?} */ ((providerDef)).deps);\n case 2048 /* TypeUseExistingProvider */:\n return resolveDep(view, /** @type {?} */ ((def.parent)), allowPrivateServices, /** @type {?} */ ((providerDef)).deps[0]);\n case 256 /* TypeValueProvider */:\n return /** @type {?} */ ((providerDef)).value;\n }\n}\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} allowPrivateServices\n * @param {?} ctor\n * @param {?} deps\n * @return {?}\n */\nfunction createClass(view, elDef, allowPrivateServices, ctor, deps) {\n var /** @type {?} */ len = deps.length;\n switch (len) {\n case 0:\n return new ctor();\n case 1:\n return new ctor(resolveDep(view, elDef, allowPrivateServices, deps[0]));\n case 2:\n return new ctor(resolveDep(view, elDef, allowPrivateServices, deps[0]), resolveDep(view, elDef, allowPrivateServices, deps[1]));\n case 3:\n return new ctor(resolveDep(view, elDef, allowPrivateServices, deps[0]), resolveDep(view, elDef, allowPrivateServices, deps[1]), resolveDep(view, elDef, allowPrivateServices, deps[2]));\n default:\n var /** @type {?} */ depValues = new Array(len);\n for (var /** @type {?} */ i = 0; i < len; i++) {\n depValues[i] = resolveDep(view, elDef, allowPrivateServices, deps[i]);\n }\n return new (ctor.bind.apply(ctor, [void 0].concat(depValues)))();\n }\n}\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} allowPrivateServices\n * @param {?} factory\n * @param {?} deps\n * @return {?}\n */\nfunction callFactory(view, elDef, allowPrivateServices, factory, deps) {\n var /** @type {?} */ len = deps.length;\n switch (len) {\n case 0:\n return factory();\n case 1:\n return factory(resolveDep(view, elDef, allowPrivateServices, deps[0]));\n case 2:\n return factory(resolveDep(view, elDef, allowPrivateServices, deps[0]), resolveDep(view, elDef, allowPrivateServices, deps[1]));\n case 3:\n return factory(resolveDep(view, elDef, allowPrivateServices, deps[0]), resolveDep(view, elDef, allowPrivateServices, deps[1]), resolveDep(view, elDef, allowPrivateServices, deps[2]));\n default:\n var /** @type {?} */ depValues = Array(len);\n for (var /** @type {?} */ i = 0; i < len; i++) {\n depValues[i] = resolveDep(view, elDef, allowPrivateServices, deps[i]);\n }\n return factory.apply(void 0, depValues);\n }\n}\n// This default value is when checking the hierarchy for a token.\n//\n// It means both:\n// - the token is not provided by the current injector,\n// - only the element injectors should be checked (ie do not check module injectors\n//\n// mod1\n// /\n// el1 mod2\n// \\ /\n// el2\n//\n// When requesting el2.injector.get(token), we should check in the following order and return the\n// first found value:\n// - el2.injector.get(token, default)\n// - el1.injector.get(token, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR) -> do not check the module\n// - mod2.injector.get(token, default)\nvar NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR = {};\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} allowPrivateServices\n * @param {?} depDef\n * @param {?=} notFoundValue\n * @return {?}\n */\nfunction resolveDep(view, elDef, allowPrivateServices, depDef, notFoundValue) {\n if (notFoundValue === void 0) { notFoundValue = Injector.THROW_IF_NOT_FOUND; }\n if (depDef.flags & 8 /* Value */) {\n return depDef.token;\n }\n var /** @type {?} */ startView = view;\n if (depDef.flags & 2 /* Optional */) {\n notFoundValue = null;\n }\n var /** @type {?} */ tokenKey$$1 = depDef.tokenKey;\n if (tokenKey$$1 === ChangeDetectorRefTokenKey) {\n // directives on the same element as a component should be able to control the change detector\n // of that component as well.\n allowPrivateServices = !!(elDef && /** @type {?} */ ((elDef.element)).componentView);\n }\n if (elDef && (depDef.flags & 1 /* SkipSelf */)) {\n allowPrivateServices = false;\n elDef = /** @type {?} */ ((elDef.parent));\n }\n while (view) {\n if (elDef) {\n switch (tokenKey$$1) {\n case RendererV1TokenKey: {\n var /** @type {?} */ compView = findCompView(view, elDef, allowPrivateServices);\n return createRendererV1(compView);\n }\n case Renderer2TokenKey: {\n var /** @type {?} */ compView = findCompView(view, elDef, allowPrivateServices);\n return compView.renderer;\n }\n case ElementRefTokenKey:\n return new ElementRef(asElementData(view, elDef.nodeIndex).renderElement);\n case ViewContainerRefTokenKey:\n return asElementData(view, elDef.nodeIndex).viewContainer;\n case TemplateRefTokenKey: {\n if (/** @type {?} */ ((elDef.element)).template) {\n return asElementData(view, elDef.nodeIndex).template;\n }\n break;\n }\n case ChangeDetectorRefTokenKey: {\n var /** @type {?} */ cdView = findCompView(view, elDef, allowPrivateServices);\n return createChangeDetectorRef(cdView);\n }\n case InjectorRefTokenKey:\n return createInjector(view, elDef);\n default:\n var /** @type {?} */ providerDef_1 = /** @type {?} */ (((allowPrivateServices ? /** @type {?} */ ((elDef.element)).allProviders : /** @type {?} */ ((elDef.element)).publicProviders)))[tokenKey$$1];\n if (providerDef_1) {\n var /** @type {?} */ providerData = asProviderData(view, providerDef_1.nodeIndex);\n if (!providerData) {\n providerData = { instance: _createProviderInstance(view, providerDef_1) };\n view.nodes[providerDef_1.nodeIndex] = /** @type {?} */ (providerData);\n }\n return providerData.instance;\n }\n }\n }\n allowPrivateServices = isComponentView(view);\n elDef = /** @type {?} */ ((viewParentEl(view)));\n view = /** @type {?} */ ((view.parent));\n }\n var /** @type {?} */ value = startView.root.injector.get(depDef.token, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR);\n if (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR ||\n notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR) {\n // Return the value from the root element injector when\n // - it provides it\n // (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)\n // - the module injector should not be checked\n // (notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)\n return value;\n }\n return startView.root.ngModule.injector.get(depDef.token, notFoundValue);\n}\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} allowPrivateServices\n * @return {?}\n */\nfunction findCompView(view, elDef, allowPrivateServices) {\n var /** @type {?} */ compView;\n if (allowPrivateServices) {\n compView = asElementData(view, elDef.nodeIndex).componentView;\n }\n else {\n compView = view;\n while (compView.parent && !isComponentView(compView)) {\n compView = compView.parent;\n }\n }\n return compView;\n}\n/**\n * @param {?} view\n * @param {?} providerData\n * @param {?} def\n * @param {?} bindingIdx\n * @param {?} value\n * @param {?} changes\n * @return {?}\n */\nfunction updateProp(view, providerData, def, bindingIdx, value, changes) {\n if (def.flags & 32768 /* Component */) {\n var /** @type {?} */ compView = asElementData(view, /** @type {?} */ ((def.parent)).nodeIndex).componentView;\n if (compView.def.flags & 2 /* OnPush */) {\n compView.state |= 8 /* ChecksEnabled */;\n }\n }\n var /** @type {?} */ binding = def.bindings[bindingIdx];\n var /** @type {?} */ propName = /** @type {?} */ ((binding.name));\n // Note: This is still safe with Closure Compiler as\n // the user passed in the property name as an object has to `providerDef`,\n // so Closure Compiler will have renamed the property correctly already.\n providerData.instance[propName] = value;\n if (def.flags & 524288 /* OnChanges */) {\n changes = changes || {};\n var /** @type {?} */ oldValue = WrappedValue.unwrap(view.oldValues[def.bindingIndex + bindingIdx]);\n var /** @type {?} */ binding_1 = def.bindings[bindingIdx];\n changes[/** @type {?} */ ((binding_1.nonMinifiedName))] =\n new SimpleChange(oldValue, value, (view.state & 2 /* FirstCheck */) !== 0);\n }\n view.oldValues[def.bindingIndex + bindingIdx] = value;\n return changes;\n}\n/**\n * @param {?} view\n * @param {?} lifecycles\n * @return {?}\n */\nfunction callLifecycleHooksChildrenFirst(view, lifecycles) {\n if (!(view.def.nodeFlags & lifecycles)) {\n return;\n }\n var /** @type {?} */ nodes = view.def.nodes;\n var /** @type {?} */ initIndex = 0;\n for (var /** @type {?} */ i = 0; i < nodes.length; i++) {\n var /** @type {?} */ nodeDef = nodes[i];\n var /** @type {?} */ parent_1 = nodeDef.parent;\n if (!parent_1 && nodeDef.flags & lifecycles) {\n // matching root node (e.g. a pipe)\n callProviderLifecycles(view, i, nodeDef.flags & lifecycles, initIndex++);\n }\n if ((nodeDef.childFlags & lifecycles) === 0) {\n // no child matches one of the lifecycles\n i += nodeDef.childCount;\n }\n while (parent_1 && (parent_1.flags & 1 /* TypeElement */) &&\n i === parent_1.nodeIndex + parent_1.childCount) {\n // last child of an element\n if (parent_1.directChildFlags & lifecycles) {\n initIndex = callElementProvidersLifecycles(view, parent_1, lifecycles, initIndex);\n }\n parent_1 = parent_1.parent;\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} lifecycles\n * @param {?} initIndex\n * @return {?}\n */\nfunction callElementProvidersLifecycles(view, elDef, lifecycles, initIndex) {\n for (var /** @type {?} */ i = elDef.nodeIndex + 1; i <= elDef.nodeIndex + elDef.childCount; i++) {\n var /** @type {?} */ nodeDef = view.def.nodes[i];\n if (nodeDef.flags & lifecycles) {\n callProviderLifecycles(view, i, nodeDef.flags & lifecycles, initIndex++);\n }\n // only visit direct children\n i += nodeDef.childCount;\n }\n return initIndex;\n}\n/**\n * @param {?} view\n * @param {?} index\n * @param {?} lifecycles\n * @param {?} initIndex\n * @return {?}\n */\nfunction callProviderLifecycles(view, index, lifecycles, initIndex) {\n var /** @type {?} */ providerData = asProviderData(view, index);\n if (!providerData) {\n return;\n }\n var /** @type {?} */ provider = providerData.instance;\n if (!provider) {\n return;\n }\n Services.setCurrentNode(view, index);\n if (lifecycles & 1048576 /* AfterContentInit */ &&\n shouldCallLifecycleInitHook(view, 512 /* InitState_CallingAfterContentInit */, initIndex)) {\n provider.ngAfterContentInit();\n }\n if (lifecycles & 2097152 /* AfterContentChecked */) {\n provider.ngAfterContentChecked();\n }\n if (lifecycles & 4194304 /* AfterViewInit */ &&\n shouldCallLifecycleInitHook(view, 768 /* InitState_CallingAfterViewInit */, initIndex)) {\n provider.ngAfterViewInit();\n }\n if (lifecycles & 8388608 /* AfterViewChecked */) {\n provider.ngAfterViewChecked();\n }\n if (lifecycles & 131072 /* OnDestroy */) {\n provider.ngOnDestroy();\n }\n}\n\n/**\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 * @param {?} flags\n * @param {?} id\n * @param {?} bindings\n * @return {?}\n */\nfunction queryDef(flags, id, bindings) {\n var /** @type {?} */ bindingDefs = [];\n for (var /** @type {?} */ propName in bindings) {\n var /** @type {?} */ bindingType = bindings[propName];\n bindingDefs.push({ propName: propName, bindingType: bindingType });\n }\n return {\n // will bet set by the view definition\n nodeIndex: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n // TODO(vicb): check\n checkIndex: -1, flags: flags,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0,\n ngContentIndex: -1,\n matchedQueries: {},\n matchedQueryIds: 0,\n references: {},\n childCount: 0,\n bindings: [],\n bindingFlags: 0,\n outputs: [],\n element: null,\n provider: null,\n text: null,\n query: { id: id, filterId: filterQueryId(id), bindings: bindingDefs },\n ngContent: null\n };\n}\n/**\n * @return {?}\n */\nfunction createQuery() {\n return new QueryList();\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction dirtyParentQueries(view) {\n var /** @type {?} */ queryIds = view.def.nodeMatchedQueries;\n while (view.parent && isEmbeddedView(view)) {\n var /** @type {?} */ tplDef = /** @type {?} */ ((view.parentNodeDef));\n view = view.parent;\n // content queries\n var /** @type {?} */ end = tplDef.nodeIndex + tplDef.childCount;\n for (var /** @type {?} */ i = 0; i <= end; i++) {\n var /** @type {?} */ nodeDef = view.def.nodes[i];\n if ((nodeDef.flags & 67108864 /* TypeContentQuery */) &&\n (nodeDef.flags & 536870912 /* DynamicQuery */) &&\n (/** @type {?} */ ((nodeDef.query)).filterId & queryIds) === /** @type {?} */ ((nodeDef.query)).filterId) {\n asQueryList(view, i).setDirty();\n }\n if ((nodeDef.flags & 1 /* TypeElement */ && i + nodeDef.childCount < tplDef.nodeIndex) ||\n !(nodeDef.childFlags & 67108864 /* TypeContentQuery */) ||\n !(nodeDef.childFlags & 536870912 /* DynamicQuery */)) {\n // skip elements that don't contain the template element or no query.\n i += nodeDef.childCount;\n }\n }\n }\n // view queries\n if (view.def.nodeFlags & 134217728 /* TypeViewQuery */) {\n for (var /** @type {?} */ i = 0; i < view.def.nodes.length; i++) {\n var /** @type {?} */ nodeDef = view.def.nodes[i];\n if ((nodeDef.flags & 134217728 /* TypeViewQuery */) && (nodeDef.flags & 536870912 /* DynamicQuery */)) {\n asQueryList(view, i).setDirty();\n }\n // only visit the root nodes\n i += nodeDef.childCount;\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @return {?}\n */\nfunction checkAndUpdateQuery(view, nodeDef) {\n var /** @type {?} */ queryList = asQueryList(view, nodeDef.nodeIndex);\n if (!queryList.dirty) {\n return;\n }\n var /** @type {?} */ directiveInstance;\n var /** @type {?} */ newValues = /** @type {?} */ ((undefined));\n if (nodeDef.flags & 67108864 /* TypeContentQuery */) {\n var /** @type {?} */ elementDef = /** @type {?} */ ((/** @type {?} */ ((nodeDef.parent)).parent));\n newValues = calcQueryValues(view, elementDef.nodeIndex, elementDef.nodeIndex + elementDef.childCount, /** @type {?} */ ((nodeDef.query)), []);\n directiveInstance = asProviderData(view, /** @type {?} */ ((nodeDef.parent)).nodeIndex).instance;\n }\n else if (nodeDef.flags & 134217728 /* TypeViewQuery */) {\n newValues = calcQueryValues(view, 0, view.def.nodes.length - 1, /** @type {?} */ ((nodeDef.query)), []);\n directiveInstance = view.component;\n }\n queryList.reset(newValues);\n var /** @type {?} */ bindings = /** @type {?} */ ((nodeDef.query)).bindings;\n var /** @type {?} */ notify = false;\n for (var /** @type {?} */ i = 0; i < bindings.length; i++) {\n var /** @type {?} */ binding = bindings[i];\n var /** @type {?} */ boundValue = void 0;\n switch (binding.bindingType) {\n case 0 /* First */:\n boundValue = queryList.first;\n break;\n case 1 /* All */:\n boundValue = queryList;\n notify = true;\n break;\n }\n directiveInstance[binding.propName] = boundValue;\n }\n if (notify) {\n queryList.notifyOnChanges();\n }\n}\n/**\n * @param {?} view\n * @param {?} startIndex\n * @param {?} endIndex\n * @param {?} queryDef\n * @param {?} values\n * @return {?}\n */\nfunction calcQueryValues(view, startIndex, endIndex, queryDef, values) {\n for (var /** @type {?} */ i = startIndex; i <= endIndex; i++) {\n var /** @type {?} */ nodeDef = view.def.nodes[i];\n var /** @type {?} */ valueType = nodeDef.matchedQueries[queryDef.id];\n if (valueType != null) {\n values.push(getQueryValue(view, nodeDef, valueType));\n }\n if (nodeDef.flags & 1 /* TypeElement */ && /** @type {?} */ ((nodeDef.element)).template &&\n (/** @type {?} */ ((/** @type {?} */ ((nodeDef.element)).template)).nodeMatchedQueries & queryDef.filterId) ===\n queryDef.filterId) {\n var /** @type {?} */ elementData = asElementData(view, i);\n // check embedded views that were attached at the place of their template,\n // but process child nodes first if some match the query (see issue #16568)\n if ((nodeDef.childMatchedQueries & queryDef.filterId) === queryDef.filterId) {\n calcQueryValues(view, i + 1, i + nodeDef.childCount, queryDef, values);\n i += nodeDef.childCount;\n }\n if (nodeDef.flags & 16777216 /* EmbeddedViews */) {\n var /** @type {?} */ embeddedViews = /** @type {?} */ ((elementData.viewContainer))._embeddedViews;\n for (var /** @type {?} */ k = 0; k < embeddedViews.length; k++) {\n var /** @type {?} */ embeddedView = embeddedViews[k];\n var /** @type {?} */ dvc = declaredViewContainer(embeddedView);\n if (dvc && dvc === elementData) {\n calcQueryValues(embeddedView, 0, embeddedView.def.nodes.length - 1, queryDef, values);\n }\n }\n }\n var /** @type {?} */ projectedViews = elementData.template._projectedViews;\n if (projectedViews) {\n for (var /** @type {?} */ k = 0; k < projectedViews.length; k++) {\n var /** @type {?} */ projectedView = projectedViews[k];\n calcQueryValues(projectedView, 0, projectedView.def.nodes.length - 1, queryDef, values);\n }\n }\n }\n if ((nodeDef.childMatchedQueries & queryDef.filterId) !== queryDef.filterId) {\n // if no child matches the query, skip the children.\n i += nodeDef.childCount;\n }\n }\n return values;\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} queryValueType\n * @return {?}\n */\nfunction getQueryValue(view, nodeDef, queryValueType) {\n if (queryValueType != null) {\n // a match\n switch (queryValueType) {\n case 1 /* RenderElement */:\n return asElementData(view, nodeDef.nodeIndex).renderElement;\n case 0 /* ElementRef */:\n return new ElementRef(asElementData(view, nodeDef.nodeIndex).renderElement);\n case 2 /* TemplateRef */:\n return asElementData(view, nodeDef.nodeIndex).template;\n case 3 /* ViewContainerRef */:\n return asElementData(view, nodeDef.nodeIndex).viewContainer;\n case 4 /* Provider */:\n return asProviderData(view, nodeDef.nodeIndex).instance;\n }\n }\n}\n\n/**\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 * @param {?} ngContentIndex\n * @param {?} index\n * @return {?}\n */\nfunction ngContentDef(ngContentIndex, index) {\n return {\n // will bet set by the view definition\n nodeIndex: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n checkIndex: -1,\n flags: 8 /* TypeNgContent */,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0,\n matchedQueries: {},\n matchedQueryIds: 0,\n references: {}, ngContentIndex: ngContentIndex,\n childCount: 0,\n bindings: [],\n bindingFlags: 0,\n outputs: [],\n element: null,\n provider: null,\n text: null,\n query: null,\n ngContent: { index: index }\n };\n}\n/**\n * @param {?} view\n * @param {?} renderHost\n * @param {?} def\n * @return {?}\n */\nfunction appendNgContent(view, renderHost, def) {\n var /** @type {?} */ parentEl = getParentRenderElement(view, renderHost, def);\n if (!parentEl) {\n // Nothing to do if there is no parent element.\n return;\n }\n var /** @type {?} */ ngContentIndex = /** @type {?} */ ((def.ngContent)).index;\n visitProjectedRenderNodes(view, ngContentIndex, 1 /* AppendChild */, parentEl, null, undefined);\n}\n\n/**\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 * @param {?} checkIndex\n * @param {?} argCount\n * @return {?}\n */\nfunction purePipeDef(checkIndex, argCount) {\n // argCount + 1 to include the pipe as first arg\n return _pureExpressionDef(128 /* TypePurePipe */, checkIndex, new Array(argCount + 1));\n}\n/**\n * @param {?} checkIndex\n * @param {?} argCount\n * @return {?}\n */\nfunction pureArrayDef(checkIndex, argCount) {\n return _pureExpressionDef(32 /* TypePureArray */, checkIndex, new Array(argCount));\n}\n/**\n * @param {?} checkIndex\n * @param {?} propToIndex\n * @return {?}\n */\nfunction pureObjectDef(checkIndex, propToIndex) {\n var /** @type {?} */ keys = Object.keys(propToIndex);\n var /** @type {?} */ nbKeys = keys.length;\n var /** @type {?} */ propertyNames = new Array(nbKeys);\n for (var /** @type {?} */ i = 0; i < nbKeys; i++) {\n var /** @type {?} */ key = keys[i];\n var /** @type {?} */ index = propToIndex[key];\n propertyNames[index] = key;\n }\n return _pureExpressionDef(64 /* TypePureObject */, checkIndex, propertyNames);\n}\n/**\n * @param {?} flags\n * @param {?} checkIndex\n * @param {?} propertyNames\n * @return {?}\n */\nfunction _pureExpressionDef(flags, checkIndex, propertyNames) {\n var /** @type {?} */ bindings = new Array(propertyNames.length);\n for (var /** @type {?} */ i = 0; i < propertyNames.length; i++) {\n var /** @type {?} */ prop = propertyNames[i];\n bindings[i] = {\n flags: 8 /* TypeProperty */,\n name: prop,\n ns: null,\n nonMinifiedName: prop,\n securityContext: null,\n suffix: null\n };\n }\n return {\n // will bet set by the view definition\n nodeIndex: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n checkIndex: checkIndex,\n flags: flags,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0,\n matchedQueries: {},\n matchedQueryIds: 0,\n references: {},\n ngContentIndex: -1,\n childCount: 0, bindings: bindings,\n bindingFlags: calcBindingFlags(bindings),\n outputs: [],\n element: null,\n provider: null,\n text: null,\n query: null,\n ngContent: null\n };\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nfunction createPureExpression(view, def) {\n return { value: undefined };\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} v0\n * @param {?} v1\n * @param {?} v2\n * @param {?} v3\n * @param {?} v4\n * @param {?} v5\n * @param {?} v6\n * @param {?} v7\n * @param {?} v8\n * @param {?} v9\n * @return {?}\n */\nfunction checkAndUpdatePureExpressionInline(view, def, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n var /** @type {?} */ bindings = def.bindings;\n var /** @type {?} */ changed = false;\n var /** @type {?} */ bindLen = bindings.length;\n if (bindLen > 0 && checkAndUpdateBinding(view, def, 0, v0))\n changed = true;\n if (bindLen > 1 && checkAndUpdateBinding(view, def, 1, v1))\n changed = true;\n if (bindLen > 2 && checkAndUpdateBinding(view, def, 2, v2))\n changed = true;\n if (bindLen > 3 && checkAndUpdateBinding(view, def, 3, v3))\n changed = true;\n if (bindLen > 4 && checkAndUpdateBinding(view, def, 4, v4))\n changed = true;\n if (bindLen > 5 && checkAndUpdateBinding(view, def, 5, v5))\n changed = true;\n if (bindLen > 6 && checkAndUpdateBinding(view, def, 6, v6))\n changed = true;\n if (bindLen > 7 && checkAndUpdateBinding(view, def, 7, v7))\n changed = true;\n if (bindLen > 8 && checkAndUpdateBinding(view, def, 8, v8))\n changed = true;\n if (bindLen > 9 && checkAndUpdateBinding(view, def, 9, v9))\n changed = true;\n if (changed) {\n var /** @type {?} */ data = asPureExpressionData(view, def.nodeIndex);\n var /** @type {?} */ value = void 0;\n switch (def.flags & 201347067 /* Types */) {\n case 32 /* TypePureArray */:\n value = new Array(bindings.length);\n if (bindLen > 0)\n value[0] = v0;\n if (bindLen > 1)\n value[1] = v1;\n if (bindLen > 2)\n value[2] = v2;\n if (bindLen > 3)\n value[3] = v3;\n if (bindLen > 4)\n value[4] = v4;\n if (bindLen > 5)\n value[5] = v5;\n if (bindLen > 6)\n value[6] = v6;\n if (bindLen > 7)\n value[7] = v7;\n if (bindLen > 8)\n value[8] = v8;\n if (bindLen > 9)\n value[9] = v9;\n break;\n case 64 /* TypePureObject */:\n value = {};\n if (bindLen > 0)\n value[/** @type {?} */ ((bindings[0].name))] = v0;\n if (bindLen > 1)\n value[/** @type {?} */ ((bindings[1].name))] = v1;\n if (bindLen > 2)\n value[/** @type {?} */ ((bindings[2].name))] = v2;\n if (bindLen > 3)\n value[/** @type {?} */ ((bindings[3].name))] = v3;\n if (bindLen > 4)\n value[/** @type {?} */ ((bindings[4].name))] = v4;\n if (bindLen > 5)\n value[/** @type {?} */ ((bindings[5].name))] = v5;\n if (bindLen > 6)\n value[/** @type {?} */ ((bindings[6].name))] = v6;\n if (bindLen > 7)\n value[/** @type {?} */ ((bindings[7].name))] = v7;\n if (bindLen > 8)\n value[/** @type {?} */ ((bindings[8].name))] = v8;\n if (bindLen > 9)\n value[/** @type {?} */ ((bindings[9].name))] = v9;\n break;\n case 128 /* TypePurePipe */:\n var /** @type {?} */ pipe = v0;\n switch (bindLen) {\n case 1:\n value = pipe.transform(v0);\n break;\n case 2:\n value = pipe.transform(v1);\n break;\n case 3:\n value = pipe.transform(v1, v2);\n break;\n case 4:\n value = pipe.transform(v1, v2, v3);\n break;\n case 5:\n value = pipe.transform(v1, v2, v3, v4);\n break;\n case 6:\n value = pipe.transform(v1, v2, v3, v4, v5);\n break;\n case 7:\n value = pipe.transform(v1, v2, v3, v4, v5, v6);\n break;\n case 8:\n value = pipe.transform(v1, v2, v3, v4, v5, v6, v7);\n break;\n case 9:\n value = pipe.transform(v1, v2, v3, v4, v5, v6, v7, v8);\n break;\n case 10:\n value = pipe.transform(v1, v2, v3, v4, v5, v6, v7, v8, v9);\n break;\n }\n break;\n }\n data.value = value;\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} values\n * @return {?}\n */\nfunction checkAndUpdatePureExpressionDynamic(view, def, values) {\n var /** @type {?} */ bindings = def.bindings;\n var /** @type {?} */ changed = false;\n for (var /** @type {?} */ i = 0; i < values.length; i++) {\n // Note: We need to loop over all values, so that\n // the old values are updates as well!\n if (checkAndUpdateBinding(view, def, i, values[i])) {\n changed = true;\n }\n }\n if (changed) {\n var /** @type {?} */ data = asPureExpressionData(view, def.nodeIndex);\n var /** @type {?} */ value = void 0;\n switch (def.flags & 201347067 /* Types */) {\n case 32 /* TypePureArray */:\n value = values;\n break;\n case 64 /* TypePureObject */:\n value = {};\n for (var /** @type {?} */ i = 0; i < values.length; i++) {\n value[/** @type {?} */ ((bindings[i].name))] = values[i];\n }\n break;\n case 128 /* TypePurePipe */:\n var /** @type {?} */ pipe = values[0];\n var /** @type {?} */ params = values.slice(1);\n value = pipe.transform.apply(pipe, params);\n break;\n }\n data.value = value;\n }\n return changed;\n}\n\n/**\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 * @param {?} checkIndex\n * @param {?} ngContentIndex\n * @param {?} staticText\n * @return {?}\n */\nfunction textDef(checkIndex, ngContentIndex, staticText) {\n var /** @type {?} */ bindings = new Array(staticText.length - 1);\n for (var /** @type {?} */ i = 1; i < staticText.length; i++) {\n bindings[i - 1] = {\n flags: 8 /* TypeProperty */,\n name: null,\n ns: null,\n nonMinifiedName: null,\n securityContext: null,\n suffix: staticText[i],\n };\n }\n return {\n // will bet set by the view definition\n nodeIndex: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n checkIndex: checkIndex,\n flags: 2 /* TypeText */,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0,\n matchedQueries: {},\n matchedQueryIds: 0,\n references: {}, ngContentIndex: ngContentIndex,\n childCount: 0, bindings: bindings,\n bindingFlags: 8 /* TypeProperty */,\n outputs: [],\n element: null,\n provider: null,\n text: { prefix: staticText[0] },\n query: null,\n ngContent: null,\n };\n}\n/**\n * @param {?} view\n * @param {?} renderHost\n * @param {?} def\n * @return {?}\n */\nfunction createText(view, renderHost, def) {\n var /** @type {?} */ renderNode$$1;\n var /** @type {?} */ renderer = view.renderer;\n renderNode$$1 = renderer.createText(/** @type {?} */ ((def.text)).prefix);\n var /** @type {?} */ parentEl = getParentRenderElement(view, renderHost, def);\n if (parentEl) {\n renderer.appendChild(parentEl, renderNode$$1);\n }\n return { renderText: renderNode$$1 };\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} v0\n * @param {?} v1\n * @param {?} v2\n * @param {?} v3\n * @param {?} v4\n * @param {?} v5\n * @param {?} v6\n * @param {?} v7\n * @param {?} v8\n * @param {?} v9\n * @return {?}\n */\nfunction checkAndUpdateTextInline(view, def, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n var /** @type {?} */ changed = false;\n var /** @type {?} */ bindings = def.bindings;\n var /** @type {?} */ bindLen = bindings.length;\n if (bindLen > 0 && checkAndUpdateBinding(view, def, 0, v0))\n changed = true;\n if (bindLen > 1 && checkAndUpdateBinding(view, def, 1, v1))\n changed = true;\n if (bindLen > 2 && checkAndUpdateBinding(view, def, 2, v2))\n changed = true;\n if (bindLen > 3 && checkAndUpdateBinding(view, def, 3, v3))\n changed = true;\n if (bindLen > 4 && checkAndUpdateBinding(view, def, 4, v4))\n changed = true;\n if (bindLen > 5 && checkAndUpdateBinding(view, def, 5, v5))\n changed = true;\n if (bindLen > 6 && checkAndUpdateBinding(view, def, 6, v6))\n changed = true;\n if (bindLen > 7 && checkAndUpdateBinding(view, def, 7, v7))\n changed = true;\n if (bindLen > 8 && checkAndUpdateBinding(view, def, 8, v8))\n changed = true;\n if (bindLen > 9 && checkAndUpdateBinding(view, def, 9, v9))\n changed = true;\n if (changed) {\n var /** @type {?} */ value = /** @type {?} */ ((def.text)).prefix;\n if (bindLen > 0)\n value += _addInterpolationPart(v0, bindings[0]);\n if (bindLen > 1)\n value += _addInterpolationPart(v1, bindings[1]);\n if (bindLen > 2)\n value += _addInterpolationPart(v2, bindings[2]);\n if (bindLen > 3)\n value += _addInterpolationPart(v3, bindings[3]);\n if (bindLen > 4)\n value += _addInterpolationPart(v4, bindings[4]);\n if (bindLen > 5)\n value += _addInterpolationPart(v5, bindings[5]);\n if (bindLen > 6)\n value += _addInterpolationPart(v6, bindings[6]);\n if (bindLen > 7)\n value += _addInterpolationPart(v7, bindings[7]);\n if (bindLen > 8)\n value += _addInterpolationPart(v8, bindings[8]);\n if (bindLen > 9)\n value += _addInterpolationPart(v9, bindings[9]);\n var /** @type {?} */ renderNode$$1 = asTextData(view, def.nodeIndex).renderText;\n view.renderer.setValue(renderNode$$1, value);\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} values\n * @return {?}\n */\nfunction checkAndUpdateTextDynamic(view, def, values) {\n var /** @type {?} */ bindings = def.bindings;\n var /** @type {?} */ changed = false;\n for (var /** @type {?} */ i = 0; i < values.length; i++) {\n // Note: We need to loop over all values, so that\n // the old values are updates as well!\n if (checkAndUpdateBinding(view, def, i, values[i])) {\n changed = true;\n }\n }\n if (changed) {\n var /** @type {?} */ value = '';\n for (var /** @type {?} */ i = 0; i < values.length; i++) {\n value = value + _addInterpolationPart(values[i], bindings[i]);\n }\n value = /** @type {?} */ ((def.text)).prefix + value;\n var /** @type {?} */ renderNode$$1 = asTextData(view, def.nodeIndex).renderText;\n view.renderer.setValue(renderNode$$1, value);\n }\n return changed;\n}\n/**\n * @param {?} value\n * @param {?} binding\n * @return {?}\n */\nfunction _addInterpolationPart(value, binding) {\n var /** @type {?} */ valueStr = value != null ? value.toString() : '';\n return valueStr + binding.suffix;\n}\n\n/**\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 * @param {?} flags\n * @param {?} nodes\n * @param {?=} updateDirectives\n * @param {?=} updateRenderer\n * @return {?}\n */\nfunction viewDef(flags, nodes, updateDirectives, updateRenderer) {\n // clone nodes and set auto calculated values\n var /** @type {?} */ viewBindingCount = 0;\n var /** @type {?} */ viewDisposableCount = 0;\n var /** @type {?} */ viewNodeFlags = 0;\n var /** @type {?} */ viewRootNodeFlags = 0;\n var /** @type {?} */ viewMatchedQueries = 0;\n var /** @type {?} */ currentParent = null;\n var /** @type {?} */ currentRenderParent = null;\n var /** @type {?} */ currentElementHasPublicProviders = false;\n var /** @type {?} */ currentElementHasPrivateProviders = false;\n var /** @type {?} */ lastRenderRootNode = null;\n for (var /** @type {?} */ i = 0; i < nodes.length; i++) {\n var /** @type {?} */ node = nodes[i];\n node.nodeIndex = i;\n node.parent = currentParent;\n node.bindingIndex = viewBindingCount;\n node.outputIndex = viewDisposableCount;\n node.renderParent = currentRenderParent;\n viewNodeFlags |= node.flags;\n viewMatchedQueries |= node.matchedQueryIds;\n if (node.element) {\n var /** @type {?} */ elDef = node.element;\n elDef.publicProviders =\n currentParent ? /** @type {?} */ ((currentParent.element)).publicProviders : Object.create(null);\n elDef.allProviders = elDef.publicProviders;\n // Note: We assume that all providers of an element are before any child element!\n currentElementHasPublicProviders = false;\n currentElementHasPrivateProviders = false;\n if (node.element.template) {\n viewMatchedQueries |= node.element.template.nodeMatchedQueries;\n }\n }\n validateNode(currentParent, node, nodes.length);\n viewBindingCount += node.bindings.length;\n viewDisposableCount += node.outputs.length;\n if (!currentRenderParent && (node.flags & 3 /* CatRenderNode */)) {\n lastRenderRootNode = node;\n }\n if (node.flags & 20224 /* CatProvider */) {\n if (!currentElementHasPublicProviders) {\n currentElementHasPublicProviders = true; /** @type {?} */\n ((/** @type {?} */ ((currentParent)).element)).publicProviders = Object.create(/** @type {?} */ ((/** @type {?} */ ((currentParent)).element)).publicProviders); /** @type {?} */\n ((/** @type {?} */ ((currentParent)).element)).allProviders = /** @type {?} */ ((/** @type {?} */ ((currentParent)).element)).publicProviders;\n }\n var /** @type {?} */ isPrivateService = (node.flags & 8192 /* PrivateProvider */) !== 0;\n var /** @type {?} */ isComponent = (node.flags & 32768 /* Component */) !== 0;\n if (!isPrivateService || isComponent) {\n /** @type {?} */ ((/** @type {?} */ ((/** @type {?} */ ((currentParent)).element)).publicProviders))[tokenKey(/** @type {?} */ ((node.provider)).token)] = node;\n }\n else {\n if (!currentElementHasPrivateProviders) {\n currentElementHasPrivateProviders = true; /** @type {?} */\n ((/** @type {?} */ ((currentParent)).element)).allProviders = Object.create(/** @type {?} */ ((/** @type {?} */ ((currentParent)).element)).publicProviders);\n } /** @type {?} */\n ((/** @type {?} */ ((/** @type {?} */ ((currentParent)).element)).allProviders))[tokenKey(/** @type {?} */ ((node.provider)).token)] = node;\n }\n if (isComponent) {\n /** @type {?} */ ((/** @type {?} */ ((currentParent)).element)).componentProvider = node;\n }\n }\n if (currentParent) {\n currentParent.childFlags |= node.flags;\n currentParent.directChildFlags |= node.flags;\n currentParent.childMatchedQueries |= node.matchedQueryIds;\n if (node.element && node.element.template) {\n currentParent.childMatchedQueries |= node.element.template.nodeMatchedQueries;\n }\n }\n else {\n viewRootNodeFlags |= node.flags;\n }\n if (node.childCount > 0) {\n currentParent = node;\n if (!isNgContainer(node)) {\n currentRenderParent = node;\n }\n }\n else {\n // When the current node has no children, check if it is the last children of its parent.\n // When it is, propagate the flags up.\n // The loop is required because an element could be the last transitive children of several\n // elements. We loop to either the root or the highest opened element (= with remaining\n // children)\n while (currentParent && i === currentParent.nodeIndex + currentParent.childCount) {\n var /** @type {?} */ newParent = currentParent.parent;\n if (newParent) {\n newParent.childFlags |= currentParent.childFlags;\n newParent.childMatchedQueries |= currentParent.childMatchedQueries;\n }\n currentParent = newParent;\n // We also need to update the render parent & account for ng-container\n if (currentParent && isNgContainer(currentParent)) {\n currentRenderParent = currentParent.renderParent;\n }\n else {\n currentRenderParent = currentParent;\n }\n }\n }\n }\n var /** @type {?} */ handleEvent = function (view, nodeIndex, eventName, event) { return ((/** @type {?} */ ((nodes[nodeIndex].element)).handleEvent))(view, eventName, event); };\n return {\n // Will be filled later...\n factory: null,\n nodeFlags: viewNodeFlags,\n rootNodeFlags: viewRootNodeFlags,\n nodeMatchedQueries: viewMatchedQueries, flags: flags,\n nodes: nodes,\n updateDirectives: updateDirectives || NOOP,\n updateRenderer: updateRenderer || NOOP, handleEvent: handleEvent,\n bindingCount: viewBindingCount,\n outputCount: viewDisposableCount, lastRenderRootNode: lastRenderRootNode\n };\n}\n/**\n * @param {?} node\n * @return {?}\n */\nfunction isNgContainer(node) {\n return (node.flags & 1 /* TypeElement */) !== 0 && /** @type {?} */ ((node.element)).name === null;\n}\n/**\n * @param {?} parent\n * @param {?} node\n * @param {?} nodeCount\n * @return {?}\n */\nfunction validateNode(parent, node, nodeCount) {\n var /** @type {?} */ template = node.element && node.element.template;\n if (template) {\n if (!template.lastRenderRootNode) {\n throw new Error(\"Illegal State: Embedded templates without nodes are not allowed!\");\n }\n if (template.lastRenderRootNode &&\n template.lastRenderRootNode.flags & 16777216 /* EmbeddedViews */) {\n throw new Error(\"Illegal State: Last root node of a template can't have embedded views, at index \" + node.nodeIndex + \"!\");\n }\n }\n if (node.flags & 20224 /* CatProvider */) {\n var /** @type {?} */ parentFlags = parent ? parent.flags : 0;\n if ((parentFlags & 1 /* TypeElement */) === 0) {\n throw new Error(\"Illegal State: StaticProvider/Directive nodes need to be children of elements or anchors, at index \" + node.nodeIndex + \"!\");\n }\n }\n if (node.query) {\n if (node.flags & 67108864 /* TypeContentQuery */ &&\n (!parent || (parent.flags & 16384 /* TypeDirective */) === 0)) {\n throw new Error(\"Illegal State: Content Query nodes need to be children of directives, at index \" + node.nodeIndex + \"!\");\n }\n if (node.flags & 134217728 /* TypeViewQuery */ && parent) {\n throw new Error(\"Illegal State: View Query nodes have to be top level nodes, at index \" + node.nodeIndex + \"!\");\n }\n }\n if (node.childCount) {\n var /** @type {?} */ parentEnd = parent ? parent.nodeIndex + parent.childCount : nodeCount - 1;\n if (node.nodeIndex <= parentEnd && node.nodeIndex + node.childCount > parentEnd) {\n throw new Error(\"Illegal State: childCount of node leads outside of parent, at index \" + node.nodeIndex + \"!\");\n }\n }\n}\n/**\n * @param {?} parent\n * @param {?} anchorDef\n * @param {?} viewDef\n * @param {?=} context\n * @return {?}\n */\nfunction createEmbeddedView(parent, anchorDef$$1, viewDef, context) {\n // embedded views are seen as siblings to the anchor, so we need\n // to get the parent of the anchor and use it as parentIndex.\n var /** @type {?} */ view = createView(parent.root, parent.renderer, parent, anchorDef$$1, viewDef);\n initView(view, parent.component, context);\n createViewNodes(view);\n return view;\n}\n/**\n * @param {?} root\n * @param {?} def\n * @param {?=} context\n * @return {?}\n */\nfunction createRootView(root, def, context) {\n var /** @type {?} */ view = createView(root, root.renderer, null, null, def);\n initView(view, context, context);\n createViewNodes(view);\n return view;\n}\n/**\n * @param {?} parentView\n * @param {?} nodeDef\n * @param {?} viewDef\n * @param {?} hostElement\n * @return {?}\n */\nfunction createComponentView(parentView, nodeDef, viewDef, hostElement) {\n var /** @type {?} */ rendererType = /** @type {?} */ ((nodeDef.element)).componentRendererType;\n var /** @type {?} */ compRenderer;\n if (!rendererType) {\n compRenderer = parentView.root.renderer;\n }\n else {\n compRenderer = parentView.root.rendererFactory.createRenderer(hostElement, rendererType);\n }\n return createView(parentView.root, compRenderer, parentView, /** @type {?} */ ((nodeDef.element)).componentProvider, viewDef);\n}\n/**\n * @param {?} root\n * @param {?} renderer\n * @param {?} parent\n * @param {?} parentNodeDef\n * @param {?} def\n * @return {?}\n */\nfunction createView(root, renderer, parent, parentNodeDef, def) {\n var /** @type {?} */ nodes = new Array(def.nodes.length);\n var /** @type {?} */ disposables = def.outputCount ? new Array(def.outputCount) : null;\n var /** @type {?} */ view = {\n def: def,\n parent: parent,\n viewContainerParent: null, parentNodeDef: parentNodeDef,\n context: null,\n component: null, nodes: nodes,\n state: 13 /* CatInit */, root: root, renderer: renderer,\n oldValues: new Array(def.bindingCount), disposables: disposables,\n initIndex: -1\n };\n return view;\n}\n/**\n * @param {?} view\n * @param {?} component\n * @param {?} context\n * @return {?}\n */\nfunction initView(view, component, context) {\n view.component = component;\n view.context = context;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction createViewNodes(view) {\n var /** @type {?} */ renderHost;\n if (isComponentView(view)) {\n var /** @type {?} */ hostDef = view.parentNodeDef;\n renderHost = asElementData(/** @type {?} */ ((view.parent)), /** @type {?} */ ((/** @type {?} */ ((hostDef)).parent)).nodeIndex).renderElement;\n }\n var /** @type {?} */ def = view.def;\n var /** @type {?} */ nodes = view.nodes;\n for (var /** @type {?} */ i = 0; i < def.nodes.length; i++) {\n var /** @type {?} */ nodeDef = def.nodes[i];\n Services.setCurrentNode(view, i);\n var /** @type {?} */ nodeData = void 0;\n switch (nodeDef.flags & 201347067 /* Types */) {\n case 1 /* TypeElement */:\n var /** @type {?} */ el = /** @type {?} */ (createElement(view, renderHost, nodeDef));\n var /** @type {?} */ componentView = /** @type {?} */ ((undefined));\n if (nodeDef.flags & 33554432 /* ComponentView */) {\n var /** @type {?} */ compViewDef = resolveDefinition(/** @type {?} */ ((/** @type {?} */ ((nodeDef.element)).componentView)));\n componentView = Services.createComponentView(view, nodeDef, compViewDef, el);\n }\n listenToElementOutputs(view, componentView, nodeDef, el);\n nodeData = /** @type {?} */ ({\n renderElement: el,\n componentView: componentView,\n viewContainer: null,\n template: /** @type {?} */ ((nodeDef.element)).template ? createTemplateData(view, nodeDef) : undefined\n });\n if (nodeDef.flags & 16777216 /* EmbeddedViews */) {\n nodeData.viewContainer = createViewContainerData(view, nodeDef, nodeData);\n }\n break;\n case 2 /* TypeText */:\n nodeData = /** @type {?} */ (createText(view, renderHost, nodeDef));\n break;\n case 512 /* TypeClassProvider */:\n case 1024 /* TypeFactoryProvider */:\n case 2048 /* TypeUseExistingProvider */:\n case 256 /* TypeValueProvider */: {\n nodeData = nodes[i];\n if (!nodeData && !(nodeDef.flags & 4096 /* LazyProvider */)) {\n var /** @type {?} */ instance = createProviderInstance(view, nodeDef);\n nodeData = /** @type {?} */ ({ instance: instance });\n }\n break;\n }\n case 16 /* TypePipe */: {\n var /** @type {?} */ instance = createPipeInstance(view, nodeDef);\n nodeData = /** @type {?} */ ({ instance: instance });\n break;\n }\n case 16384 /* TypeDirective */: {\n nodeData = nodes[i];\n if (!nodeData) {\n var /** @type {?} */ instance = createDirectiveInstance(view, nodeDef);\n nodeData = /** @type {?} */ ({ instance: instance });\n }\n if (nodeDef.flags & 32768 /* Component */) {\n var /** @type {?} */ compView = asElementData(view, /** @type {?} */ ((nodeDef.parent)).nodeIndex).componentView;\n initView(compView, nodeData.instance, nodeData.instance);\n }\n break;\n }\n case 32 /* TypePureArray */:\n case 64 /* TypePureObject */:\n case 128 /* TypePurePipe */:\n nodeData = /** @type {?} */ (createPureExpression(view, nodeDef));\n break;\n case 67108864 /* TypeContentQuery */:\n case 134217728 /* TypeViewQuery */:\n nodeData = /** @type {?} */ (createQuery());\n break;\n case 8 /* TypeNgContent */:\n appendNgContent(view, renderHost, nodeDef);\n // no runtime data needed for NgContent...\n nodeData = undefined;\n break;\n }\n nodes[i] = nodeData;\n }\n // Create the ViewData.nodes of component views after we created everything else,\n // so that e.g. ng-content works\n execComponentViewsAction(view, ViewAction.CreateViewNodes);\n // fill static content and view queries\n execQueriesAction(view, 67108864 /* TypeContentQuery */ | 134217728 /* TypeViewQuery */, 268435456 /* StaticQuery */, 0 /* CheckAndUpdate */);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction checkNoChangesView(view) {\n markProjectedViewsForCheck(view);\n Services.updateDirectives(view, 1 /* CheckNoChanges */);\n execEmbeddedViewsAction(view, ViewAction.CheckNoChanges);\n Services.updateRenderer(view, 1 /* CheckNoChanges */);\n execComponentViewsAction(view, ViewAction.CheckNoChanges);\n // Note: We don't check queries for changes as we didn't do this in v2.x.\n // TODO(tbosch): investigate if we can enable the check again in v5.x with a nicer error message.\n view.state &= ~(64 /* CheckProjectedViews */ | 32 /* CheckProjectedView */);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction checkAndUpdateView(view) {\n if (view.state & 1 /* BeforeFirstCheck */) {\n view.state &= ~1 /* BeforeFirstCheck */;\n view.state |= 2 /* FirstCheck */;\n }\n else {\n view.state &= ~2 /* FirstCheck */;\n }\n shiftInitState(view, 0 /* InitState_BeforeInit */, 256 /* InitState_CallingOnInit */);\n markProjectedViewsForCheck(view);\n Services.updateDirectives(view, 0 /* CheckAndUpdate */);\n execEmbeddedViewsAction(view, ViewAction.CheckAndUpdate);\n execQueriesAction(view, 67108864 /* TypeContentQuery */, 536870912 /* DynamicQuery */, 0 /* CheckAndUpdate */);\n var /** @type {?} */ callInit = shiftInitState(view, 256 /* InitState_CallingOnInit */, 512 /* InitState_CallingAfterContentInit */);\n callLifecycleHooksChildrenFirst(view, 2097152 /* AfterContentChecked */ | (callInit ? 1048576 /* AfterContentInit */ : 0));\n Services.updateRenderer(view, 0 /* CheckAndUpdate */);\n execComponentViewsAction(view, ViewAction.CheckAndUpdate);\n execQueriesAction(view, 134217728 /* TypeViewQuery */, 536870912 /* DynamicQuery */, 0 /* CheckAndUpdate */);\n callInit = shiftInitState(view, 512 /* InitState_CallingAfterContentInit */, 768 /* InitState_CallingAfterViewInit */);\n callLifecycleHooksChildrenFirst(view, 8388608 /* AfterViewChecked */ | (callInit ? 4194304 /* AfterViewInit */ : 0));\n if (view.def.flags & 2 /* OnPush */) {\n view.state &= ~8 /* ChecksEnabled */;\n }\n view.state &= ~(64 /* CheckProjectedViews */ | 32 /* CheckProjectedView */);\n shiftInitState(view, 768 /* InitState_CallingAfterViewInit */, 1024 /* InitState_AfterInit */);\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} argStyle\n * @param {?=} v0\n * @param {?=} v1\n * @param {?=} v2\n * @param {?=} v3\n * @param {?=} v4\n * @param {?=} v5\n * @param {?=} v6\n * @param {?=} v7\n * @param {?=} v8\n * @param {?=} v9\n * @return {?}\n */\nfunction checkAndUpdateNode(view, nodeDef, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n if (argStyle === 0 /* Inline */) {\n return checkAndUpdateNodeInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n }\n else {\n return checkAndUpdateNodeDynamic(view, nodeDef, v0);\n }\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction markProjectedViewsForCheck(view) {\n var /** @type {?} */ def = view.def;\n if (!(def.nodeFlags & 4 /* ProjectedTemplate */)) {\n return;\n }\n for (var /** @type {?} */ i = 0; i < def.nodes.length; i++) {\n var /** @type {?} */ nodeDef = def.nodes[i];\n if (nodeDef.flags & 4 /* ProjectedTemplate */) {\n var /** @type {?} */ projectedViews = asElementData(view, i).template._projectedViews;\n if (projectedViews) {\n for (var /** @type {?} */ i_1 = 0; i_1 < projectedViews.length; i_1++) {\n var /** @type {?} */ projectedView = projectedViews[i_1];\n projectedView.state |= 32 /* CheckProjectedView */;\n markParentViewsForCheckProjectedViews(projectedView, view);\n }\n }\n }\n else if ((nodeDef.childFlags & 4 /* ProjectedTemplate */) === 0) {\n // a parent with leafs\n // no child is a component,\n // then skip the children\n i += nodeDef.childCount;\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?=} v0\n * @param {?=} v1\n * @param {?=} v2\n * @param {?=} v3\n * @param {?=} v4\n * @param {?=} v5\n * @param {?=} v6\n * @param {?=} v7\n * @param {?=} v8\n * @param {?=} v9\n * @return {?}\n */\nfunction checkAndUpdateNodeInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n switch (nodeDef.flags & 201347067 /* Types */) {\n case 1 /* TypeElement */:\n return checkAndUpdateElementInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n case 2 /* TypeText */:\n return checkAndUpdateTextInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n case 16384 /* TypeDirective */:\n return checkAndUpdateDirectiveInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n case 32 /* TypePureArray */:\n case 64 /* TypePureObject */:\n case 128 /* TypePurePipe */:\n return checkAndUpdatePureExpressionInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n default:\n throw 'unreachable';\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} values\n * @return {?}\n */\nfunction checkAndUpdateNodeDynamic(view, nodeDef, values) {\n switch (nodeDef.flags & 201347067 /* Types */) {\n case 1 /* TypeElement */:\n return checkAndUpdateElementDynamic(view, nodeDef, values);\n case 2 /* TypeText */:\n return checkAndUpdateTextDynamic(view, nodeDef, values);\n case 16384 /* TypeDirective */:\n return checkAndUpdateDirectiveDynamic(view, nodeDef, values);\n case 32 /* TypePureArray */:\n case 64 /* TypePureObject */:\n case 128 /* TypePurePipe */:\n return checkAndUpdatePureExpressionDynamic(view, nodeDef, values);\n default:\n throw 'unreachable';\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} argStyle\n * @param {?=} v0\n * @param {?=} v1\n * @param {?=} v2\n * @param {?=} v3\n * @param {?=} v4\n * @param {?=} v5\n * @param {?=} v6\n * @param {?=} v7\n * @param {?=} v8\n * @param {?=} v9\n * @return {?}\n */\nfunction checkNoChangesNode(view, nodeDef, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n if (argStyle === 0 /* Inline */) {\n checkNoChangesNodeInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n }\n else {\n checkNoChangesNodeDynamic(view, nodeDef, v0);\n }\n // Returning false is ok here as we would have thrown in case of a change.\n return false;\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} v0\n * @param {?} v1\n * @param {?} v2\n * @param {?} v3\n * @param {?} v4\n * @param {?} v5\n * @param {?} v6\n * @param {?} v7\n * @param {?} v8\n * @param {?} v9\n * @return {?}\n */\nfunction checkNoChangesNodeInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n var /** @type {?} */ bindLen = nodeDef.bindings.length;\n if (bindLen > 0)\n checkBindingNoChanges(view, nodeDef, 0, v0);\n if (bindLen > 1)\n checkBindingNoChanges(view, nodeDef, 1, v1);\n if (bindLen > 2)\n checkBindingNoChanges(view, nodeDef, 2, v2);\n if (bindLen > 3)\n checkBindingNoChanges(view, nodeDef, 3, v3);\n if (bindLen > 4)\n checkBindingNoChanges(view, nodeDef, 4, v4);\n if (bindLen > 5)\n checkBindingNoChanges(view, nodeDef, 5, v5);\n if (bindLen > 6)\n checkBindingNoChanges(view, nodeDef, 6, v6);\n if (bindLen > 7)\n checkBindingNoChanges(view, nodeDef, 7, v7);\n if (bindLen > 8)\n checkBindingNoChanges(view, nodeDef, 8, v8);\n if (bindLen > 9)\n checkBindingNoChanges(view, nodeDef, 9, v9);\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} values\n * @return {?}\n */\nfunction checkNoChangesNodeDynamic(view, nodeDef, values) {\n for (var /** @type {?} */ i = 0; i < values.length; i++) {\n checkBindingNoChanges(view, nodeDef, i, values[i]);\n }\n}\n/**\n * Workaround https://github.com/angular/tsickle/issues/497\n * @suppress {misplacedTypeAnnotation}\n * @param {?} view\n * @param {?} nodeDef\n * @return {?}\n */\nfunction checkNoChangesQuery(view, nodeDef) {\n var /** @type {?} */ queryList = asQueryList(view, nodeDef.nodeIndex);\n if (queryList.dirty) {\n throw expressionChangedAfterItHasBeenCheckedError(Services.createDebugContext(view, nodeDef.nodeIndex), \"Query \" + (/** @type {?} */ ((nodeDef.query))).id + \" not dirty\", \"Query \" + (/** @type {?} */ ((nodeDef.query))).id + \" dirty\", (view.state & 1 /* BeforeFirstCheck */) !== 0);\n }\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction destroyView(view) {\n if (view.state & 128 /* Destroyed */) {\n return;\n }\n execEmbeddedViewsAction(view, ViewAction.Destroy);\n execComponentViewsAction(view, ViewAction.Destroy);\n callLifecycleHooksChildrenFirst(view, 131072 /* OnDestroy */);\n if (view.disposables) {\n for (var /** @type {?} */ i = 0; i < view.disposables.length; i++) {\n view.disposables[i]();\n }\n }\n detachProjectedView(view);\n if (view.renderer.destroyNode) {\n destroyViewNodes(view);\n }\n if (isComponentView(view)) {\n view.renderer.destroy();\n }\n view.state |= 128 /* Destroyed */;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction destroyViewNodes(view) {\n var /** @type {?} */ len = view.def.nodes.length;\n for (var /** @type {?} */ i = 0; i < len; i++) {\n var /** @type {?} */ def = view.def.nodes[i];\n if (def.flags & 1 /* TypeElement */) {\n /** @type {?} */ ((view.renderer.destroyNode))(asElementData(view, i).renderElement);\n }\n else if (def.flags & 2 /* TypeText */) {\n /** @type {?} */ ((view.renderer.destroyNode))(asTextData(view, i).renderText);\n }\n else if (def.flags & 67108864 /* TypeContentQuery */ || def.flags & 134217728 /* TypeViewQuery */) {\n asQueryList(view, i).destroy();\n }\n }\n}\n/** @enum {number} */\nvar ViewAction = {\n CreateViewNodes: 0,\n CheckNoChanges: 1,\n CheckNoChangesProjectedViews: 2,\n CheckAndUpdate: 3,\n CheckAndUpdateProjectedViews: 4,\n Destroy: 5,\n};\nViewAction[ViewAction.CreateViewNodes] = \"CreateViewNodes\";\nViewAction[ViewAction.CheckNoChanges] = \"CheckNoChanges\";\nViewAction[ViewAction.CheckNoChangesProjectedViews] = \"CheckNoChangesProjectedViews\";\nViewAction[ViewAction.CheckAndUpdate] = \"CheckAndUpdate\";\nViewAction[ViewAction.CheckAndUpdateProjectedViews] = \"CheckAndUpdateProjectedViews\";\nViewAction[ViewAction.Destroy] = \"Destroy\";\n/**\n * @param {?} view\n * @param {?} action\n * @return {?}\n */\nfunction execComponentViewsAction(view, action) {\n var /** @type {?} */ def = view.def;\n if (!(def.nodeFlags & 33554432 /* ComponentView */)) {\n return;\n }\n for (var /** @type {?} */ i = 0; i < def.nodes.length; i++) {\n var /** @type {?} */ nodeDef = def.nodes[i];\n if (nodeDef.flags & 33554432 /* ComponentView */) {\n // a leaf\n callViewAction(asElementData(view, i).componentView, action);\n }\n else if ((nodeDef.childFlags & 33554432 /* ComponentView */) === 0) {\n // a parent with leafs\n // no child is a component,\n // then skip the children\n i += nodeDef.childCount;\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} action\n * @return {?}\n */\nfunction execEmbeddedViewsAction(view, action) {\n var /** @type {?} */ def = view.def;\n if (!(def.nodeFlags & 16777216 /* EmbeddedViews */)) {\n return;\n }\n for (var /** @type {?} */ i = 0; i < def.nodes.length; i++) {\n var /** @type {?} */ nodeDef = def.nodes[i];\n if (nodeDef.flags & 16777216 /* EmbeddedViews */) {\n // a leaf\n var /** @type {?} */ embeddedViews = /** @type {?} */ ((asElementData(view, i).viewContainer))._embeddedViews;\n for (var /** @type {?} */ k = 0; k < embeddedViews.length; k++) {\n callViewAction(embeddedViews[k], action);\n }\n }\n else if ((nodeDef.childFlags & 16777216 /* EmbeddedViews */) === 0) {\n // a parent with leafs\n // no child is a component,\n // then skip the children\n i += nodeDef.childCount;\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} action\n * @return {?}\n */\nfunction callViewAction(view, action) {\n var /** @type {?} */ viewState = view.state;\n switch (action) {\n case ViewAction.CheckNoChanges:\n if ((viewState & 128 /* Destroyed */) === 0) {\n if ((viewState & 12 /* CatDetectChanges */) === 12 /* CatDetectChanges */) {\n checkNoChangesView(view);\n }\n else if (viewState & 64 /* CheckProjectedViews */) {\n execProjectedViewsAction(view, ViewAction.CheckNoChangesProjectedViews);\n }\n }\n break;\n case ViewAction.CheckNoChangesProjectedViews:\n if ((viewState & 128 /* Destroyed */) === 0) {\n if (viewState & 32 /* CheckProjectedView */) {\n checkNoChangesView(view);\n }\n else if (viewState & 64 /* CheckProjectedViews */) {\n execProjectedViewsAction(view, action);\n }\n }\n break;\n case ViewAction.CheckAndUpdate:\n if ((viewState & 128 /* Destroyed */) === 0) {\n if ((viewState & 12 /* CatDetectChanges */) === 12 /* CatDetectChanges */) {\n checkAndUpdateView(view);\n }\n else if (viewState & 64 /* CheckProjectedViews */) {\n execProjectedViewsAction(view, ViewAction.CheckAndUpdateProjectedViews);\n }\n }\n break;\n case ViewAction.CheckAndUpdateProjectedViews:\n if ((viewState & 128 /* Destroyed */) === 0) {\n if (viewState & 32 /* CheckProjectedView */) {\n checkAndUpdateView(view);\n }\n else if (viewState & 64 /* CheckProjectedViews */) {\n execProjectedViewsAction(view, action);\n }\n }\n break;\n case ViewAction.Destroy:\n // Note: destroyView recurses over all views,\n // so we don't need to special case projected views here.\n destroyView(view);\n break;\n case ViewAction.CreateViewNodes:\n createViewNodes(view);\n break;\n }\n}\n/**\n * @param {?} view\n * @param {?} action\n * @return {?}\n */\nfunction execProjectedViewsAction(view, action) {\n execEmbeddedViewsAction(view, action);\n execComponentViewsAction(view, action);\n}\n/**\n * @param {?} view\n * @param {?} queryFlags\n * @param {?} staticDynamicQueryFlag\n * @param {?} checkType\n * @return {?}\n */\nfunction execQueriesAction(view, queryFlags, staticDynamicQueryFlag, checkType) {\n if (!(view.def.nodeFlags & queryFlags) || !(view.def.nodeFlags & staticDynamicQueryFlag)) {\n return;\n }\n var /** @type {?} */ nodeCount = view.def.nodes.length;\n for (var /** @type {?} */ i = 0; i < nodeCount; i++) {\n var /** @type {?} */ nodeDef = view.def.nodes[i];\n if ((nodeDef.flags & queryFlags) && (nodeDef.flags & staticDynamicQueryFlag)) {\n Services.setCurrentNode(view, nodeDef.nodeIndex);\n switch (checkType) {\n case 0 /* CheckAndUpdate */:\n checkAndUpdateQuery(view, nodeDef);\n break;\n case 1 /* CheckNoChanges */:\n checkNoChangesQuery(view, nodeDef);\n break;\n }\n }\n if (!(nodeDef.childFlags & queryFlags) || !(nodeDef.childFlags & staticDynamicQueryFlag)) {\n // no child has a matching query\n // then skip the children\n i += nodeDef.childCount;\n }\n }\n}\n\n/**\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 */\nvar initialized = false;\n/**\n * @return {?}\n */\nfunction initServicesIfNeeded() {\n if (initialized) {\n return;\n }\n initialized = true;\n var /** @type {?} */ services = isDevMode() ? createDebugServices() : createProdServices();\n Services.setCurrentNode = services.setCurrentNode;\n Services.createRootView = services.createRootView;\n Services.createEmbeddedView = services.createEmbeddedView;\n Services.createComponentView = services.createComponentView;\n Services.createNgModuleRef = services.createNgModuleRef;\n Services.overrideProvider = services.overrideProvider;\n Services.overrideComponentView = services.overrideComponentView;\n Services.clearOverrides = services.clearOverrides;\n Services.checkAndUpdateView = services.checkAndUpdateView;\n Services.checkNoChangesView = services.checkNoChangesView;\n Services.destroyView = services.destroyView;\n Services.resolveDep = resolveDep;\n Services.createDebugContext = services.createDebugContext;\n Services.handleEvent = services.handleEvent;\n Services.updateDirectives = services.updateDirectives;\n Services.updateRenderer = services.updateRenderer;\n Services.dirtyParentQueries = dirtyParentQueries;\n}\n/**\n * @return {?}\n */\nfunction createProdServices() {\n return {\n setCurrentNode: function () { },\n createRootView: createProdRootView,\n createEmbeddedView: createEmbeddedView,\n createComponentView: createComponentView,\n createNgModuleRef: createNgModuleRef,\n overrideProvider: NOOP,\n overrideComponentView: NOOP,\n clearOverrides: NOOP,\n checkAndUpdateView: checkAndUpdateView,\n checkNoChangesView: checkNoChangesView,\n destroyView: destroyView,\n createDebugContext: function (view, nodeIndex) { return new DebugContext_(view, nodeIndex); },\n handleEvent: function (view, nodeIndex, eventName, event) {\n return view.def.handleEvent(view, nodeIndex, eventName, event);\n },\n updateDirectives: function (view, checkType) {\n return view.def.updateDirectives(checkType === 0 /* CheckAndUpdate */ ? prodCheckAndUpdateNode :\n prodCheckNoChangesNode, view);\n },\n updateRenderer: function (view, checkType) {\n return view.def.updateRenderer(checkType === 0 /* CheckAndUpdate */ ? prodCheckAndUpdateNode :\n prodCheckNoChangesNode, view);\n },\n };\n}\n/**\n * @return {?}\n */\nfunction createDebugServices() {\n return {\n setCurrentNode: debugSetCurrentNode,\n createRootView: debugCreateRootView,\n createEmbeddedView: debugCreateEmbeddedView,\n createComponentView: debugCreateComponentView,\n createNgModuleRef: debugCreateNgModuleRef,\n overrideProvider: debugOverrideProvider,\n overrideComponentView: debugOverrideComponentView,\n clearOverrides: debugClearOverrides,\n checkAndUpdateView: debugCheckAndUpdateView,\n checkNoChangesView: debugCheckNoChangesView,\n destroyView: debugDestroyView,\n createDebugContext: function (view, nodeIndex) { return new DebugContext_(view, nodeIndex); },\n handleEvent: debugHandleEvent,\n updateDirectives: debugUpdateDirectives,\n updateRenderer: debugUpdateRenderer,\n };\n}\n/**\n * @param {?} elInjector\n * @param {?} projectableNodes\n * @param {?} rootSelectorOrNode\n * @param {?} def\n * @param {?} ngModule\n * @param {?=} context\n * @return {?}\n */\nfunction createProdRootView(elInjector, projectableNodes, rootSelectorOrNode, def, ngModule, context) {\n var /** @type {?} */ rendererFactory = ngModule.injector.get(RendererFactory2);\n return createRootView(createRootData(elInjector, ngModule, rendererFactory, projectableNodes, rootSelectorOrNode), def, context);\n}\n/**\n * @param {?} elInjector\n * @param {?} projectableNodes\n * @param {?} rootSelectorOrNode\n * @param {?} def\n * @param {?} ngModule\n * @param {?=} context\n * @return {?}\n */\nfunction debugCreateRootView(elInjector, projectableNodes, rootSelectorOrNode, def, ngModule, context) {\n var /** @type {?} */ rendererFactory = ngModule.injector.get(RendererFactory2);\n var /** @type {?} */ root = createRootData(elInjector, ngModule, new DebugRendererFactory2(rendererFactory), projectableNodes, rootSelectorOrNode);\n var /** @type {?} */ defWithOverride = applyProviderOverridesToView(def);\n return callWithDebugContext(DebugAction.create, createRootView, null, [root, defWithOverride, context]);\n}\n/**\n * @param {?} elInjector\n * @param {?} ngModule\n * @param {?} rendererFactory\n * @param {?} projectableNodes\n * @param {?} rootSelectorOrNode\n * @return {?}\n */\nfunction createRootData(elInjector, ngModule, rendererFactory, projectableNodes, rootSelectorOrNode) {\n var /** @type {?} */ sanitizer = ngModule.injector.get(Sanitizer);\n var /** @type {?} */ errorHandler = ngModule.injector.get(ErrorHandler);\n var /** @type {?} */ renderer = rendererFactory.createRenderer(null, null);\n return {\n ngModule: ngModule,\n injector: elInjector, projectableNodes: projectableNodes,\n selectorOrNode: rootSelectorOrNode, sanitizer: sanitizer, rendererFactory: rendererFactory, renderer: renderer, errorHandler: errorHandler\n };\n}\n/**\n * @param {?} parentView\n * @param {?} anchorDef\n * @param {?} viewDef\n * @param {?=} context\n * @return {?}\n */\nfunction debugCreateEmbeddedView(parentView, anchorDef, viewDef$$1, context) {\n var /** @type {?} */ defWithOverride = applyProviderOverridesToView(viewDef$$1);\n return callWithDebugContext(DebugAction.create, createEmbeddedView, null, [parentView, anchorDef, defWithOverride, context]);\n}\n/**\n * @param {?} parentView\n * @param {?} nodeDef\n * @param {?} viewDef\n * @param {?} hostElement\n * @return {?}\n */\nfunction debugCreateComponentView(parentView, nodeDef, viewDef$$1, hostElement) {\n var /** @type {?} */ overrideComponentView = viewDefOverrides.get(/** @type {?} */ ((/** @type {?} */ ((/** @type {?} */ ((nodeDef.element)).componentProvider)).provider)).token);\n if (overrideComponentView) {\n viewDef$$1 = overrideComponentView;\n }\n else {\n viewDef$$1 = applyProviderOverridesToView(viewDef$$1);\n }\n return callWithDebugContext(DebugAction.create, createComponentView, null, [parentView, nodeDef, viewDef$$1, hostElement]);\n}\n/**\n * @param {?} moduleType\n * @param {?} parentInjector\n * @param {?} bootstrapComponents\n * @param {?} def\n * @return {?}\n */\nfunction debugCreateNgModuleRef(moduleType, parentInjector, bootstrapComponents, def) {\n var /** @type {?} */ defWithOverride = applyProviderOverridesToNgModule(def);\n return createNgModuleRef(moduleType, parentInjector, bootstrapComponents, defWithOverride);\n}\nvar providerOverrides = new Map();\nvar viewDefOverrides = new Map();\n/**\n * @param {?} override\n * @return {?}\n */\nfunction debugOverrideProvider(override) {\n providerOverrides.set(override.token, override);\n}\n/**\n * @param {?} comp\n * @param {?} compFactory\n * @return {?}\n */\nfunction debugOverrideComponentView(comp, compFactory) {\n var /** @type {?} */ hostViewDef = resolveDefinition(getComponentViewDefinitionFactory(compFactory));\n var /** @type {?} */ compViewDef = resolveDefinition(/** @type {?} */ ((/** @type {?} */ ((hostViewDef.nodes[0].element)).componentView)));\n viewDefOverrides.set(comp, compViewDef);\n}\n/**\n * @return {?}\n */\nfunction debugClearOverrides() {\n providerOverrides.clear();\n viewDefOverrides.clear();\n}\n/**\n * @param {?} def\n * @return {?}\n */\nfunction applyProviderOverridesToView(def) {\n if (providerOverrides.size === 0) {\n return def;\n }\n var /** @type {?} */ elementIndicesWithOverwrittenProviders = findElementIndicesWithOverwrittenProviders(def);\n if (elementIndicesWithOverwrittenProviders.length === 0) {\n return def;\n }\n // clone the whole view definition,\n // as it maintains references between the nodes that are hard to update.\n def = /** @type {?} */ ((def.factory))(function () { return NOOP; });\n for (var /** @type {?} */ i = 0; i < elementIndicesWithOverwrittenProviders.length; i++) {\n applyProviderOverridesToElement(def, elementIndicesWithOverwrittenProviders[i]);\n }\n return def;\n /**\n * @param {?} def\n * @return {?}\n */\n function findElementIndicesWithOverwrittenProviders(def) {\n var /** @type {?} */ elIndicesWithOverwrittenProviders = [];\n var /** @type {?} */ lastElementDef = null;\n for (var /** @type {?} */ i = 0; i < def.nodes.length; i++) {\n var /** @type {?} */ nodeDef = def.nodes[i];\n if (nodeDef.flags & 1 /* TypeElement */) {\n lastElementDef = nodeDef;\n }\n if (lastElementDef && nodeDef.flags & 3840 /* CatProviderNoDirective */ &&\n providerOverrides.has(/** @type {?} */ ((nodeDef.provider)).token)) {\n elIndicesWithOverwrittenProviders.push(/** @type {?} */ ((lastElementDef)).nodeIndex);\n lastElementDef = null;\n }\n }\n return elIndicesWithOverwrittenProviders;\n }\n /**\n * @param {?} viewDef\n * @param {?} elIndex\n * @return {?}\n */\n function applyProviderOverridesToElement(viewDef$$1, elIndex) {\n for (var /** @type {?} */ i = elIndex + 1; i < viewDef$$1.nodes.length; i++) {\n var /** @type {?} */ nodeDef = viewDef$$1.nodes[i];\n if (nodeDef.flags & 1 /* TypeElement */) {\n // stop at the next element\n return;\n }\n if (nodeDef.flags & 3840 /* CatProviderNoDirective */) {\n var /** @type {?} */ provider = /** @type {?} */ ((nodeDef.provider));\n var /** @type {?} */ override = providerOverrides.get(provider.token);\n if (override) {\n nodeDef.flags = (nodeDef.flags & ~3840 /* CatProviderNoDirective */) | override.flags;\n provider.deps = splitDepsDsl(override.deps);\n provider.value = override.value;\n }\n }\n }\n }\n}\n/**\n * @param {?} def\n * @return {?}\n */\nfunction applyProviderOverridesToNgModule(def) {\n var _a = calcHasOverrides(def), hasOverrides = _a.hasOverrides, hasDeprecatedOverrides = _a.hasDeprecatedOverrides;\n if (!hasOverrides) {\n return def;\n }\n // clone the whole view definition,\n // as it maintains references between the nodes that are hard to update.\n def = /** @type {?} */ ((def.factory))(function () { return NOOP; });\n applyProviderOverrides(def);\n return def;\n /**\n * @param {?} def\n * @return {?}\n */\n function calcHasOverrides(def) {\n var /** @type {?} */ hasOverrides = false;\n var /** @type {?} */ hasDeprecatedOverrides = false;\n if (providerOverrides.size === 0) {\n return { hasOverrides: hasOverrides, hasDeprecatedOverrides: hasDeprecatedOverrides };\n }\n def.providers.forEach(function (node) {\n var /** @type {?} */ override = providerOverrides.get(node.token);\n if ((node.flags & 3840 /* CatProviderNoDirective */) && override) {\n hasOverrides = true;\n hasDeprecatedOverrides = hasDeprecatedOverrides || override.deprecatedBehavior;\n }\n });\n return { hasOverrides: hasOverrides, hasDeprecatedOverrides: hasDeprecatedOverrides };\n }\n /**\n * @param {?} def\n * @return {?}\n */\n function applyProviderOverrides(def) {\n for (var /** @type {?} */ i = 0; i < def.providers.length; i++) {\n var /** @type {?} */ provider = def.providers[i];\n if (hasDeprecatedOverrides) {\n // We had a bug where me made\n // all providers lazy. Keep this logic behind a flag\n // for migrating existing users.\n provider.flags |= 4096 /* LazyProvider */;\n }\n var /** @type {?} */ override = providerOverrides.get(provider.token);\n if (override) {\n provider.flags = (provider.flags & ~3840 /* CatProviderNoDirective */) | override.flags;\n provider.deps = splitDepsDsl(override.deps);\n provider.value = override.value;\n }\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} checkIndex\n * @param {?} argStyle\n * @param {?=} v0\n * @param {?=} v1\n * @param {?=} v2\n * @param {?=} v3\n * @param {?=} v4\n * @param {?=} v5\n * @param {?=} v6\n * @param {?=} v7\n * @param {?=} v8\n * @param {?=} v9\n * @return {?}\n */\nfunction prodCheckAndUpdateNode(view, checkIndex, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n var /** @type {?} */ nodeDef = view.def.nodes[checkIndex];\n checkAndUpdateNode(view, nodeDef, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n return (nodeDef.flags & 224 /* CatPureExpression */) ?\n asPureExpressionData(view, checkIndex).value :\n undefined;\n}\n/**\n * @param {?} view\n * @param {?} checkIndex\n * @param {?} argStyle\n * @param {?=} v0\n * @param {?=} v1\n * @param {?=} v2\n * @param {?=} v3\n * @param {?=} v4\n * @param {?=} v5\n * @param {?=} v6\n * @param {?=} v7\n * @param {?=} v8\n * @param {?=} v9\n * @return {?}\n */\nfunction prodCheckNoChangesNode(view, checkIndex, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n var /** @type {?} */ nodeDef = view.def.nodes[checkIndex];\n checkNoChangesNode(view, nodeDef, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n return (nodeDef.flags & 224 /* CatPureExpression */) ?\n asPureExpressionData(view, checkIndex).value :\n undefined;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction debugCheckAndUpdateView(view) {\n return callWithDebugContext(DebugAction.detectChanges, checkAndUpdateView, null, [view]);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction debugCheckNoChangesView(view) {\n return callWithDebugContext(DebugAction.checkNoChanges, checkNoChangesView, null, [view]);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction debugDestroyView(view) {\n return callWithDebugContext(DebugAction.destroy, destroyView, null, [view]);\n}\n/** @enum {number} */\nvar DebugAction = {\n create: 0,\n detectChanges: 1,\n checkNoChanges: 2,\n destroy: 3,\n handleEvent: 4,\n};\nDebugAction[DebugAction.create] = \"create\";\nDebugAction[DebugAction.detectChanges] = \"detectChanges\";\nDebugAction[DebugAction.checkNoChanges] = \"checkNoChanges\";\nDebugAction[DebugAction.destroy] = \"destroy\";\nDebugAction[DebugAction.handleEvent] = \"handleEvent\";\nvar _currentAction;\nvar _currentView;\nvar _currentNodeIndex;\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @return {?}\n */\nfunction debugSetCurrentNode(view, nodeIndex) {\n _currentView = view;\n _currentNodeIndex = nodeIndex;\n}\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @param {?} eventName\n * @param {?} event\n * @return {?}\n */\nfunction debugHandleEvent(view, nodeIndex, eventName, event) {\n debugSetCurrentNode(view, nodeIndex);\n return callWithDebugContext(DebugAction.handleEvent, view.def.handleEvent, null, [view, nodeIndex, eventName, event]);\n}\n/**\n * @param {?} view\n * @param {?} checkType\n * @return {?}\n */\nfunction debugUpdateDirectives(view, checkType) {\n if (view.state & 128 /* Destroyed */) {\n throw viewDestroyedError(DebugAction[_currentAction]);\n }\n debugSetCurrentNode(view, nextDirectiveWithBinding(view, 0));\n return view.def.updateDirectives(debugCheckDirectivesFn, view);\n /**\n * @param {?} view\n * @param {?} nodeIndex\n * @param {?} argStyle\n * @param {...?} values\n * @return {?}\n */\n function debugCheckDirectivesFn(view, nodeIndex, argStyle) {\n var values = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n values[_i - 3] = arguments[_i];\n }\n var /** @type {?} */ nodeDef = view.def.nodes[nodeIndex];\n if (checkType === 0 /* CheckAndUpdate */) {\n debugCheckAndUpdateNode(view, nodeDef, argStyle, values);\n }\n else {\n debugCheckNoChangesNode(view, nodeDef, argStyle, values);\n }\n if (nodeDef.flags & 16384 /* TypeDirective */) {\n debugSetCurrentNode(view, nextDirectiveWithBinding(view, nodeIndex));\n }\n return (nodeDef.flags & 224 /* CatPureExpression */) ?\n asPureExpressionData(view, nodeDef.nodeIndex).value :\n undefined;\n }\n}\n/**\n * @param {?} view\n * @param {?} checkType\n * @return {?}\n */\nfunction debugUpdateRenderer(view, checkType) {\n if (view.state & 128 /* Destroyed */) {\n throw viewDestroyedError(DebugAction[_currentAction]);\n }\n debugSetCurrentNode(view, nextRenderNodeWithBinding(view, 0));\n return view.def.updateRenderer(debugCheckRenderNodeFn, view);\n /**\n * @param {?} view\n * @param {?} nodeIndex\n * @param {?} argStyle\n * @param {...?} values\n * @return {?}\n */\n function debugCheckRenderNodeFn(view, nodeIndex, argStyle) {\n var values = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n values[_i - 3] = arguments[_i];\n }\n var /** @type {?} */ nodeDef = view.def.nodes[nodeIndex];\n if (checkType === 0 /* CheckAndUpdate */) {\n debugCheckAndUpdateNode(view, nodeDef, argStyle, values);\n }\n else {\n debugCheckNoChangesNode(view, nodeDef, argStyle, values);\n }\n if (nodeDef.flags & 3 /* CatRenderNode */) {\n debugSetCurrentNode(view, nextRenderNodeWithBinding(view, nodeIndex));\n }\n return (nodeDef.flags & 224 /* CatPureExpression */) ?\n asPureExpressionData(view, nodeDef.nodeIndex).value :\n undefined;\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} argStyle\n * @param {?} givenValues\n * @return {?}\n */\nfunction debugCheckAndUpdateNode(view, nodeDef, argStyle, givenValues) {\n var /** @type {?} */ changed = (/** @type {?} */ (checkAndUpdateNode)).apply(void 0, [view, nodeDef, argStyle].concat(givenValues));\n if (changed) {\n var /** @type {?} */ values = argStyle === 1 /* Dynamic */ ? givenValues[0] : givenValues;\n if (nodeDef.flags & 16384 /* TypeDirective */) {\n var /** @type {?} */ bindingValues = {};\n for (var /** @type {?} */ i = 0; i < nodeDef.bindings.length; i++) {\n var /** @type {?} */ binding = nodeDef.bindings[i];\n var /** @type {?} */ value = values[i];\n if (binding.flags & 8 /* TypeProperty */) {\n bindingValues[normalizeDebugBindingName(/** @type {?} */ ((binding.nonMinifiedName)))] =\n normalizeDebugBindingValue(value);\n }\n }\n var /** @type {?} */ elDef = /** @type {?} */ ((nodeDef.parent));\n var /** @type {?} */ el = asElementData(view, elDef.nodeIndex).renderElement;\n if (!/** @type {?} */ ((elDef.element)).name) {\n // a comment.\n view.renderer.setValue(el, \"bindings=\" + JSON.stringify(bindingValues, null, 2));\n }\n else {\n // a regular element.\n for (var /** @type {?} */ attr in bindingValues) {\n var /** @type {?} */ value = bindingValues[attr];\n if (value != null) {\n view.renderer.setAttribute(el, attr, value);\n }\n else {\n view.renderer.removeAttribute(el, attr);\n }\n }\n }\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} argStyle\n * @param {?} values\n * @return {?}\n */\nfunction debugCheckNoChangesNode(view, nodeDef, argStyle, values) {\n (/** @type {?} */ (checkNoChangesNode)).apply(void 0, [view, nodeDef, argStyle].concat(values));\n}\n/**\n * @param {?} name\n * @return {?}\n */\nfunction normalizeDebugBindingName(name) {\n // Attribute names with `$` (eg `x-y$`) are valid per spec, but unsupported by some browsers\n name = camelCaseToDashCase(name.replace(/[$@]/g, '_'));\n return \"ng-reflect-\" + name;\n}\nvar CAMEL_CASE_REGEXP = /([A-Z])/g;\n/**\n * @param {?} input\n * @return {?}\n */\nfunction camelCaseToDashCase(input) {\n return input.replace(CAMEL_CASE_REGEXP, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n return '-' + m[1].toLowerCase();\n });\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction normalizeDebugBindingValue(value) {\n try {\n // Limit the size of the value as otherwise the DOM just gets polluted.\n return value != null ? value.toString().slice(0, 30) : value;\n }\n catch (/** @type {?} */ e) {\n return '[ERROR] Exception while trying to serialize the value';\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @return {?}\n */\nfunction nextDirectiveWithBinding(view, nodeIndex) {\n for (var /** @type {?} */ i = nodeIndex; i < view.def.nodes.length; i++) {\n var /** @type {?} */ nodeDef = view.def.nodes[i];\n if (nodeDef.flags & 16384 /* TypeDirective */ && nodeDef.bindings && nodeDef.bindings.length) {\n return i;\n }\n }\n return null;\n}\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @return {?}\n */\nfunction nextRenderNodeWithBinding(view, nodeIndex) {\n for (var /** @type {?} */ i = nodeIndex; i < view.def.nodes.length; i++) {\n var /** @type {?} */ nodeDef = view.def.nodes[i];\n if ((nodeDef.flags & 3 /* CatRenderNode */) && nodeDef.bindings && nodeDef.bindings.length) {\n return i;\n }\n }\n return null;\n}\nvar DebugContext_ = /** @class */ (function () {\n function DebugContext_(view, nodeIndex) {\n this.view = view;\n this.nodeIndex = nodeIndex;\n if (nodeIndex == null) {\n this.nodeIndex = nodeIndex = 0;\n }\n this.nodeDef = view.def.nodes[nodeIndex];\n var /** @type {?} */ elDef = this.nodeDef;\n var /** @type {?} */ elView = view;\n while (elDef && (elDef.flags & 1 /* TypeElement */) === 0) {\n elDef = /** @type {?} */ ((elDef.parent));\n }\n if (!elDef) {\n while (!elDef && elView) {\n elDef = /** @type {?} */ ((viewParentEl(elView)));\n elView = /** @type {?} */ ((elView.parent));\n }\n }\n this.elDef = elDef;\n this.elView = elView;\n }\n Object.defineProperty(DebugContext_.prototype, \"elOrCompView\", {\n get: /**\n * @return {?}\n */\n function () {\n // Has to be done lazily as we use the DebugContext also during creation of elements...\n return asElementData(this.elView, this.elDef.nodeIndex).componentView || this.view;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugContext_.prototype, \"injector\", {\n get: /**\n * @return {?}\n */\n function () { return createInjector(this.elView, this.elDef); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugContext_.prototype, \"component\", {\n get: /**\n * @return {?}\n */\n function () { return this.elOrCompView.component; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugContext_.prototype, \"context\", {\n get: /**\n * @return {?}\n */\n function () { return this.elOrCompView.context; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugContext_.prototype, \"providerTokens\", {\n get: /**\n * @return {?}\n */\n function () {\n var /** @type {?} */ tokens = [];\n if (this.elDef) {\n for (var /** @type {?} */ i = this.elDef.nodeIndex + 1; i <= this.elDef.nodeIndex + this.elDef.childCount; i++) {\n var /** @type {?} */ childDef = this.elView.def.nodes[i];\n if (childDef.flags & 20224 /* CatProvider */) {\n tokens.push(/** @type {?} */ ((childDef.provider)).token);\n }\n i += childDef.childCount;\n }\n }\n return tokens;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugContext_.prototype, \"references\", {\n get: /**\n * @return {?}\n */\n function () {\n var /** @type {?} */ references = {};\n if (this.elDef) {\n collectReferences(this.elView, this.elDef, references);\n for (var /** @type {?} */ i = this.elDef.nodeIndex + 1; i <= this.elDef.nodeIndex + this.elDef.childCount; i++) {\n var /** @type {?} */ childDef = this.elView.def.nodes[i];\n if (childDef.flags & 20224 /* CatProvider */) {\n collectReferences(this.elView, childDef, references);\n }\n i += childDef.childCount;\n }\n }\n return references;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugContext_.prototype, \"componentRenderElement\", {\n get: /**\n * @return {?}\n */\n function () {\n var /** @type {?} */ elData = findHostElement(this.elOrCompView);\n return elData ? elData.renderElement : undefined;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugContext_.prototype, \"renderNode\", {\n get: /**\n * @return {?}\n */\n function () {\n return this.nodeDef.flags & 2 /* TypeText */ ? renderNode(this.view, this.nodeDef) :\n renderNode(this.elView, this.elDef);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} console\n * @param {...?} values\n * @return {?}\n */\n DebugContext_.prototype.logError = /**\n * @param {?} console\n * @param {...?} values\n * @return {?}\n */\n function (console) {\n var values = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n var /** @type {?} */ logViewDef;\n var /** @type {?} */ logNodeIndex;\n if (this.nodeDef.flags & 2 /* TypeText */) {\n logViewDef = this.view.def;\n logNodeIndex = this.nodeDef.nodeIndex;\n }\n else {\n logViewDef = this.elView.def;\n logNodeIndex = this.elDef.nodeIndex;\n }\n // Note: we only generate a log function for text and element nodes\n // to make the generated code as small as possible.\n var /** @type {?} */ renderNodeIndex = getRenderNodeIndex(logViewDef, logNodeIndex);\n var /** @type {?} */ currRenderNodeIndex = -1;\n var /** @type {?} */ nodeLogger = function () {\n currRenderNodeIndex++;\n if (currRenderNodeIndex === renderNodeIndex) {\n return (_a = console.error).bind.apply(_a, [console].concat(values));\n }\n else {\n return NOOP;\n }\n var _a;\n }; /** @type {?} */\n ((logViewDef.factory))(nodeLogger);\n if (currRenderNodeIndex < renderNodeIndex) {\n console.error('Illegal state: the ViewDefinitionFactory did not call the logger!');\n console.error.apply(console, values);\n }\n };\n return DebugContext_;\n}());\n/**\n * @param {?} viewDef\n * @param {?} nodeIndex\n * @return {?}\n */\nfunction getRenderNodeIndex(viewDef$$1, nodeIndex) {\n var /** @type {?} */ renderNodeIndex = -1;\n for (var /** @type {?} */ i = 0; i <= nodeIndex; i++) {\n var /** @type {?} */ nodeDef = viewDef$$1.nodes[i];\n if (nodeDef.flags & 3 /* CatRenderNode */) {\n renderNodeIndex++;\n }\n }\n return renderNodeIndex;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction findHostElement(view) {\n while (view && !isComponentView(view)) {\n view = /** @type {?} */ ((view.parent));\n }\n if (view.parent) {\n return asElementData(view.parent, /** @type {?} */ ((viewParentEl(view))).nodeIndex);\n }\n return null;\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} references\n * @return {?}\n */\nfunction collectReferences(view, nodeDef, references) {\n for (var /** @type {?} */ refName in nodeDef.references) {\n references[refName] = getQueryValue(view, nodeDef, nodeDef.references[refName]);\n }\n}\n/**\n * @param {?} action\n * @param {?} fn\n * @param {?} self\n * @param {?} args\n * @return {?}\n */\nfunction callWithDebugContext(action, fn, self, args) {\n var /** @type {?} */ oldAction = _currentAction;\n var /** @type {?} */ oldView = _currentView;\n var /** @type {?} */ oldNodeIndex = _currentNodeIndex;\n try {\n _currentAction = action;\n var /** @type {?} */ result = fn.apply(self, args);\n _currentView = oldView;\n _currentNodeIndex = oldNodeIndex;\n _currentAction = oldAction;\n return result;\n }\n catch (/** @type {?} */ e) {\n if (isViewDebugError(e) || !_currentView) {\n throw e;\n }\n throw viewWrappedDebugError(e, /** @type {?} */ ((getCurrentDebugContext())));\n }\n}\n/**\n * @return {?}\n */\nfunction getCurrentDebugContext() {\n return _currentView ? new DebugContext_(_currentView, _currentNodeIndex) : null;\n}\nvar DebugRendererFactory2 = /** @class */ (function () {\n function DebugRendererFactory2(delegate) {\n this.delegate = delegate;\n }\n /**\n * @param {?} element\n * @param {?} renderData\n * @return {?}\n */\n DebugRendererFactory2.prototype.createRenderer = /**\n * @param {?} element\n * @param {?} renderData\n * @return {?}\n */\n function (element, renderData) {\n return new DebugRenderer2(this.delegate.createRenderer(element, renderData));\n };\n /**\n * @return {?}\n */\n DebugRendererFactory2.prototype.begin = /**\n * @return {?}\n */\n function () {\n if (this.delegate.begin) {\n this.delegate.begin();\n }\n };\n /**\n * @return {?}\n */\n DebugRendererFactory2.prototype.end = /**\n * @return {?}\n */\n function () {\n if (this.delegate.end) {\n this.delegate.end();\n }\n };\n /**\n * @return {?}\n */\n DebugRendererFactory2.prototype.whenRenderingDone = /**\n * @return {?}\n */\n function () {\n if (this.delegate.whenRenderingDone) {\n return this.delegate.whenRenderingDone();\n }\n return Promise.resolve(null);\n };\n return DebugRendererFactory2;\n}());\nvar DebugRenderer2 = /** @class */ (function () {\n function DebugRenderer2(delegate) {\n this.delegate = delegate;\n this.data = this.delegate.data;\n }\n /**\n * @param {?} node\n * @return {?}\n */\n DebugRenderer2.prototype.destroyNode = /**\n * @param {?} node\n * @return {?}\n */\n function (node) {\n removeDebugNodeFromIndex(/** @type {?} */ ((getDebugNode(node))));\n if (this.delegate.destroyNode) {\n this.delegate.destroyNode(node);\n }\n };\n /**\n * @return {?}\n */\n DebugRenderer2.prototype.destroy = /**\n * @return {?}\n */\n function () { this.delegate.destroy(); };\n /**\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\n DebugRenderer2.prototype.createElement = /**\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\n function (name, namespace) {\n var /** @type {?} */ el = this.delegate.createElement(name, namespace);\n var /** @type {?} */ debugCtx = getCurrentDebugContext();\n if (debugCtx) {\n var /** @type {?} */ debugEl = new DebugElement(el, null, debugCtx);\n debugEl.name = name;\n indexDebugNode(debugEl);\n }\n return el;\n };\n /**\n * @param {?} value\n * @return {?}\n */\n DebugRenderer2.prototype.createComment = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n var /** @type {?} */ comment = this.delegate.createComment(value);\n var /** @type {?} */ debugCtx = getCurrentDebugContext();\n if (debugCtx) {\n indexDebugNode(new DebugNode(comment, null, debugCtx));\n }\n return comment;\n };\n /**\n * @param {?} value\n * @return {?}\n */\n DebugRenderer2.prototype.createText = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n var /** @type {?} */ text = this.delegate.createText(value);\n var /** @type {?} */ debugCtx = getCurrentDebugContext();\n if (debugCtx) {\n indexDebugNode(new DebugNode(text, null, debugCtx));\n }\n return text;\n };\n /**\n * @param {?} parent\n * @param {?} newChild\n * @return {?}\n */\n DebugRenderer2.prototype.appendChild = /**\n * @param {?} parent\n * @param {?} newChild\n * @return {?}\n */\n function (parent, newChild) {\n var /** @type {?} */ debugEl = getDebugNode(parent);\n var /** @type {?} */ debugChildEl = getDebugNode(newChild);\n if (debugEl && debugChildEl && debugEl instanceof DebugElement) {\n debugEl.addChild(debugChildEl);\n }\n this.delegate.appendChild(parent, newChild);\n };\n /**\n * @param {?} parent\n * @param {?} newChild\n * @param {?} refChild\n * @return {?}\n */\n DebugRenderer2.prototype.insertBefore = /**\n * @param {?} parent\n * @param {?} newChild\n * @param {?} refChild\n * @return {?}\n */\n function (parent, newChild, refChild) {\n var /** @type {?} */ debugEl = getDebugNode(parent);\n var /** @type {?} */ debugChildEl = getDebugNode(newChild);\n var /** @type {?} */ debugRefEl = /** @type {?} */ ((getDebugNode(refChild)));\n if (debugEl && debugChildEl && debugEl instanceof DebugElement) {\n debugEl.insertBefore(debugRefEl, debugChildEl);\n }\n this.delegate.insertBefore(parent, newChild, refChild);\n };\n /**\n * @param {?} parent\n * @param {?} oldChild\n * @return {?}\n */\n DebugRenderer2.prototype.removeChild = /**\n * @param {?} parent\n * @param {?} oldChild\n * @return {?}\n */\n function (parent, oldChild) {\n var /** @type {?} */ debugEl = getDebugNode(parent);\n var /** @type {?} */ debugChildEl = getDebugNode(oldChild);\n if (debugEl && debugChildEl && debugEl instanceof DebugElement) {\n debugEl.removeChild(debugChildEl);\n }\n this.delegate.removeChild(parent, oldChild);\n };\n /**\n * @param {?} selectorOrNode\n * @return {?}\n */\n DebugRenderer2.prototype.selectRootElement = /**\n * @param {?} selectorOrNode\n * @return {?}\n */\n function (selectorOrNode) {\n var /** @type {?} */ el = this.delegate.selectRootElement(selectorOrNode);\n var /** @type {?} */ debugCtx = getCurrentDebugContext();\n if (debugCtx) {\n indexDebugNode(new DebugElement(el, null, debugCtx));\n }\n return el;\n };\n /**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @param {?=} namespace\n * @return {?}\n */\n DebugRenderer2.prototype.setAttribute = /**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @param {?=} namespace\n * @return {?}\n */\n function (el, name, value, namespace) {\n var /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n var /** @type {?} */ fullName = namespace ? namespace + ':' + name : name;\n debugEl.attributes[fullName] = value;\n }\n this.delegate.setAttribute(el, name, value, namespace);\n };\n /**\n * @param {?} el\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\n DebugRenderer2.prototype.removeAttribute = /**\n * @param {?} el\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\n function (el, name, namespace) {\n var /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n var /** @type {?} */ fullName = namespace ? namespace + ':' + name : name;\n debugEl.attributes[fullName] = null;\n }\n this.delegate.removeAttribute(el, name, namespace);\n };\n /**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n DebugRenderer2.prototype.addClass = /**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n function (el, name) {\n var /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n debugEl.classes[name] = true;\n }\n this.delegate.addClass(el, name);\n };\n /**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n DebugRenderer2.prototype.removeClass = /**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n function (el, name) {\n var /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n debugEl.classes[name] = false;\n }\n this.delegate.removeClass(el, name);\n };\n /**\n * @param {?} el\n * @param {?} style\n * @param {?} value\n * @param {?} flags\n * @return {?}\n */\n DebugRenderer2.prototype.setStyle = /**\n * @param {?} el\n * @param {?} style\n * @param {?} value\n * @param {?} flags\n * @return {?}\n */\n function (el, style, value, flags) {\n var /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n debugEl.styles[style] = value;\n }\n this.delegate.setStyle(el, style, value, flags);\n };\n /**\n * @param {?} el\n * @param {?} style\n * @param {?} flags\n * @return {?}\n */\n DebugRenderer2.prototype.removeStyle = /**\n * @param {?} el\n * @param {?} style\n * @param {?} flags\n * @return {?}\n */\n function (el, style, flags) {\n var /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n debugEl.styles[style] = null;\n }\n this.delegate.removeStyle(el, style, flags);\n };\n /**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n DebugRenderer2.prototype.setProperty = /**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n function (el, name, value) {\n var /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n debugEl.properties[name] = value;\n }\n this.delegate.setProperty(el, name, value);\n };\n /**\n * @param {?} target\n * @param {?} eventName\n * @param {?} callback\n * @return {?}\n */\n DebugRenderer2.prototype.listen = /**\n * @param {?} target\n * @param {?} eventName\n * @param {?} callback\n * @return {?}\n */\n function (target, eventName, callback) {\n if (typeof target !== 'string') {\n var /** @type {?} */ debugEl = getDebugNode(target);\n if (debugEl) {\n debugEl.listeners.push(new EventListener(eventName, callback));\n }\n }\n return this.delegate.listen(target, eventName, callback);\n };\n /**\n * @param {?} node\n * @return {?}\n */\n DebugRenderer2.prototype.parentNode = /**\n * @param {?} node\n * @return {?}\n */\n function (node) { return this.delegate.parentNode(node); };\n /**\n * @param {?} node\n * @return {?}\n */\n DebugRenderer2.prototype.nextSibling = /**\n * @param {?} node\n * @return {?}\n */\n function (node) { return this.delegate.nextSibling(node); };\n /**\n * @param {?} node\n * @param {?} value\n * @return {?}\n */\n DebugRenderer2.prototype.setValue = /**\n * @param {?} node\n * @param {?} value\n * @return {?}\n */\n function (node, value) { return this.delegate.setValue(node, value); };\n return DebugRenderer2;\n}());\n\n/**\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 * @param {?} override\n * @return {?}\n */\nfunction overrideProvider(override) {\n initServicesIfNeeded();\n return Services.overrideProvider(override);\n}\n/**\n * @param {?} comp\n * @param {?} componentFactory\n * @return {?}\n */\nfunction overrideComponentView(comp, componentFactory) {\n initServicesIfNeeded();\n return Services.overrideComponentView(comp, componentFactory);\n}\n/**\n * @return {?}\n */\nfunction clearOverrides() {\n initServicesIfNeeded();\n return Services.clearOverrides();\n}\n/**\n * @param {?} ngModuleType\n * @param {?} bootstrapComponents\n * @param {?} defFactory\n * @return {?}\n */\nfunction createNgModuleFactory(ngModuleType, bootstrapComponents, defFactory) {\n return new NgModuleFactory_(ngModuleType, bootstrapComponents, defFactory);\n}\nvar NgModuleFactory_ = /** @class */ (function (_super) {\n __extends(NgModuleFactory_, _super);\n function NgModuleFactory_(moduleType, _bootstrapComponents, _ngModuleDefFactory) {\n var _this = \n // Attention: this ctor is called as top level function.\n // Putting any logic in here will destroy closure tree shaking!\n _super.call(this) || this;\n _this.moduleType = moduleType;\n _this._bootstrapComponents = _bootstrapComponents;\n _this._ngModuleDefFactory = _ngModuleDefFactory;\n return _this;\n }\n /**\n * @param {?} parentInjector\n * @return {?}\n */\n NgModuleFactory_.prototype.create = /**\n * @param {?} parentInjector\n * @return {?}\n */\n function (parentInjector) {\n initServicesIfNeeded();\n var /** @type {?} */ def = resolveDefinition(this._ngModuleDefFactory);\n return Services.createNgModuleRef(this.moduleType, parentInjector || Injector.NULL, this._bootstrapComponents, def);\n };\n return NgModuleFactory_;\n}(NgModuleFactory));\n\n/**\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/**\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/**\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// The functions in this file verify that the assumptions we are making\n// about state in an instruction are correct before implementing any logic.\n// They are meant only to be called in dev mode as sanity checks.\n/**\n * Stringifies values such that strings are wrapped in explicit quotation marks and\n * other types are stringified normally. Used in error messages (e.g. assertThrow)\n * to make it clear that certain values are of the string type when comparing.\n *\n * e.g. `expected \"3\" to be 3` is easier to understand than `expected 3 to be 3`.\n *\n * @param {?} value The value to be stringified\n * @return {?} The stringified value\n */\nfunction stringifyValueForError(value) {\n return typeof value === 'string' ? \"\\\"\" + value + \"\\\"\" : '' + value;\n}\n/**\n * @param {?} actual\n * @param {?} name\n * @return {?}\n */\n\n/**\n * @template T\n * @param {?} actual\n * @param {?} expected\n * @param {?} name\n * @param {?=} serializer\n * @return {?}\n */\nfunction assertEqual(actual, expected, name, serializer) {\n (actual != expected) && assertThrow(actual, expected, name, '==', serializer);\n}\n/**\n * @template T\n * @param {?} actual\n * @param {?} expected\n * @param {?} name\n * @return {?}\n */\nfunction assertLessThan(actual, expected, name) {\n (actual < expected) && assertThrow(actual, expected, name, '>');\n}\n/**\n * @template T\n * @param {?} actual\n * @param {?} name\n * @return {?}\n */\nfunction assertNotNull(actual, name) {\n assertNotEqual(actual, null, name);\n}\n/**\n * @template T\n * @param {?} actual\n * @param {?} expected\n * @param {?} name\n * @return {?}\n */\nfunction assertNotEqual(actual, expected, name) {\n (actual == expected) && assertThrow(actual, expected, name, '!=');\n}\n/**\n * Throws an error with a message constructed from the arguments.\n *\n * @template T\n * @param {?} actual The actual value (e.g. 3)\n * @param {?} expected The expected value (e.g. 5)\n * @param {?} name The name of the value being checked (e.g. attrs.length)\n * @param {?} operator The comparison operator (e.g. <, >, ==)\n * @param {?=} serializer Function that maps a value to its display value\n * @return {?}\n */\nfunction assertThrow(actual, expected, name, operator, serializer) {\n if (serializer === void 0) { serializer = stringifyValueForError; }\n throw new Error(\"ASSERT: expected \" + name + \" \" + operator + \" \" + serializer(expected) + \" but was \" + serializer(actual) + \"!\");\n}\n\n/**\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 */\nif (typeof ngDevMode == 'undefined') {\n if (typeof window != 'undefined')\n (/** @type {?} */ (window)).ngDevMode = true;\n if (typeof self != 'undefined')\n (/** @type {?} */ (self)).ngDevMode = true;\n if (typeof global != 'undefined')\n (/** @type {?} */ (global)).ngDevMode = true;\n}\n\n/**\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 * @param {?} node\n * @param {?} type\n * @return {?}\n */\nfunction assertNodeType(node, type) {\n assertNotEqual(node, null, 'node');\n assertEqual(node.flags & 3 /* TYPE_MASK */, type, 'Node.type', typeSerializer);\n}\n/**\n * @param {?} node\n * @param {...?} types\n * @return {?}\n */\n\n/**\n * @param {?} type\n * @return {?}\n */\nfunction typeSerializer(type) {\n if (type == 1 /* Projection */)\n return 'Projection';\n if (type == 0 /* Container */)\n return 'Container';\n if (type == 2 /* View */)\n return 'View';\n if (type == 3 /* Element */)\n return 'Element';\n return '??? ' + type + ' ???';\n}\n\n/**\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 * Finds the closest DOM node above a given container in the hierarchy.\n *\n * This is necessary to add or remove elements from the DOM when a view\n * is added or removed from the container. e.g. parent.removeChild(...)\n *\n * @param {?} containerNode The container node whose parent must be found\n * @return {?} Closest DOM node above the container\n */\nfunction findNativeParent(containerNode) {\n var /** @type {?} */ container = containerNode;\n while (container) {\n ngDevMode && assertNodeType(container, 0 /* Container */);\n var /** @type {?} */ renderParent = container.data.renderParent;\n if (renderParent !== null) {\n return renderParent.native;\n }\n var /** @type {?} */ viewOrElement = /** @type {?} */ ((container.parent));\n ngDevMode && assertNotNull(viewOrElement, 'container.parent');\n if ((viewOrElement.flags & 3 /* TYPE_MASK */) === 3 /* Element */) {\n // we are an LElement, which means we are past the last LContainer.\n // This means than we have not been projected so just ignore.\n return null;\n }\n ngDevMode && assertNodeType(viewOrElement, 2 /* View */);\n container = (/** @type {?} */ (viewOrElement)).parent;\n }\n return null;\n}\n/**\n * Finds the DOM element before which a certain view should be inserting its\n * child elements.\n *\n * If the view has a next (e.g. for loop), elements should be inserted before\n * the next view's first child element. Otherwise, the container's comment\n * anchor is the marker.\n *\n * @param {?} index The index of the view to check\n * @param {?} state ContainerState of the parent container\n * @param {?} native Comment anchor for container\n * @return {?} The DOM element for which the view should insert elements\n */\nfunction findBeforeNode(index, state, native) {\n var /** @type {?} */ views = state.views;\n // Find the node to insert in front of\n return index + 1 < views.length ?\n (/** @type {?} */ (views[index + 1].child)).native :\n native;\n}\n/**\n * @param {?} container\n * @param {?} rootNode\n * @param {?} insertMode\n * @param {?=} beforeNode\n * @return {?}\n */\nfunction addRemoveViewFromContainer(container, rootNode, insertMode, beforeNode) {\n ngDevMode && assertNodeType(container, 0 /* Container */);\n ngDevMode && assertNodeType(rootNode, 2 /* View */);\n var /** @type {?} */ parent = findNativeParent(container);\n var /** @type {?} */ node = rootNode.child;\n if (parent) {\n while (node) {\n var /** @type {?} */ type = node.flags & 3;\n var /** @type {?} */ nextNode = null;\n var /** @type {?} */ renderer = container.view.renderer;\n var /** @type {?} */ isFnRenderer = (/** @type {?} */ (renderer)).listen;\n if (type === 3 /* Element */) {\n insertMode ? (isFnRenderer ? /** @type {?} */ (((/** @type {?} */ (renderer))\n .insertBefore))(parent, /** @type {?} */ ((node.native)), /** @type {?} */ (beforeNode)) :\n parent.insertBefore(/** @type {?} */ ((node.native)), /** @type {?} */ (beforeNode), true)) :\n (isFnRenderer ? /** @type {?} */ (((/** @type {?} */ (renderer))\n .removeChild))(/** @type {?} */ (parent), /** @type {?} */ ((node.native))) :\n parent.removeChild(/** @type {?} */ ((node.native))));\n nextNode = node.next;\n }\n else if (type === 0 /* Container */) {\n // if we get to a container, it must be a root node of a view because we are only\n // propagating down into child views / containers and not child elements\n var /** @type {?} */ childContainerData = (/** @type {?} */ (node)).data;\n insertMode ? (isFnRenderer ? /** @type {?} */ (((/** @type {?} */ (renderer))\n .appendChild))(/** @type {?} */ (parent), /** @type {?} */ ((node.native))) :\n parent.appendChild(/** @type {?} */ ((node.native)))) :\n (isFnRenderer ? /** @type {?} */ (((/** @type {?} */ (renderer))\n .removeChild))(/** @type {?} */ (parent), /** @type {?} */ ((node.native))) :\n parent.removeChild(/** @type {?} */ ((node.native))));\n nextNode = childContainerData.views.length ? childContainerData.views[0].child : null;\n }\n else if (type === 1 /* Projection */) {\n nextNode = (/** @type {?} */ (node)).data[0];\n }\n else {\n nextNode = (/** @type {?} */ (node)).child;\n }\n if (nextNode === null) {\n while (node && !node.next) {\n node = node.parent;\n if (node === rootNode)\n node = null;\n }\n node = node && node.next;\n }\n else {\n node = nextNode;\n }\n }\n }\n}\n/**\n * Traverses the tree of component views and containers to remove listeners and\n * call onDestroy callbacks.\n *\n * Notes:\n * - Because it's used for onDestroy calls, it needs to be bottom-up.\n * - Must process containers instead of their views to avoid splicing\n * when views are destroyed and re-added.\n * - Using a while loop because it's faster than recursion\n * - Destroy only called on movement to sibling or movement to parent (laterally or up)\n *\n * \\@param rootView The view to destroy\n * @param {?} rootView\n * @return {?}\n */\nfunction destroyViewTree(rootView) {\n var /** @type {?} */ viewOrContainerState = rootView;\n while (viewOrContainerState) {\n var /** @type {?} */ next = null;\n if (viewOrContainerState.views && viewOrContainerState.views.length) {\n next = viewOrContainerState.views[0].data;\n }\n else if (viewOrContainerState.child) {\n next = viewOrContainerState.child;\n }\n else if (viewOrContainerState.next) {\n cleanUpView(/** @type {?} */ (viewOrContainerState));\n next = viewOrContainerState.next;\n }\n if (next == null) {\n while (viewOrContainerState && !/** @type {?} */ ((viewOrContainerState)).next) {\n cleanUpView(/** @type {?} */ (viewOrContainerState));\n viewOrContainerState = getParentState(viewOrContainerState, rootView);\n }\n cleanUpView(/** @type {?} */ (viewOrContainerState) || rootView);\n next = viewOrContainerState && viewOrContainerState.next;\n }\n viewOrContainerState = next;\n }\n}\n/**\n * Inserts a view into a container.\n *\n * This adds the view to the container's array of active views in the correct\n * position. It also adds the view's elements to the DOM if the container isn't a\n * root node of another view (in that case, the view's elements will be added when\n * the container's parent view is added later).\n *\n * @param {?} container The container into which the view should be inserted\n * @param {?} newView The view to insert\n * @param {?} index The index at which to insert the view\n * @return {?} The inserted view\n */\nfunction insertView(container, newView, index) {\n var /** @type {?} */ state = container.data;\n var /** @type {?} */ views = state.views;\n if (index > 0) {\n // This is a new view, we need to add it to the children.\n setViewNext(views[index - 1], newView);\n }\n if (index < views.length && views[index].data.id !== newView.data.id) {\n // View ID change replace the view.\n setViewNext(newView, views[index]);\n views.splice(index, 0, newView);\n }\n else if (index >= views.length) {\n views.push(newView);\n }\n if (state.nextIndex <= index) {\n state.nextIndex++;\n }\n // If the container's renderParent is null, we know that it is a root node of its own parent view\n // and we should wait until that parent processes its nodes (otherwise, we will insert this view's\n // nodes twice - once now and once when its parent inserts its views).\n if (container.data.renderParent !== null) {\n addRemoveViewFromContainer(container, newView, true, findBeforeNode(index, state, container.native));\n }\n // Notify query that view has been inserted\n container.query && container.query.insertView(container, newView, index);\n return newView;\n}\n/**\n * Removes a view from a container.\n *\n * This method splices the view from the container's array of active views. It also\n * removes the view's elements from the DOM and conducts cleanup (e.g. removing\n * listeners, calling onDestroys).\n *\n * @param {?} container The container from which to remove a view\n * @param {?} removeIndex The index of the view to remove\n * @return {?} The removed view\n */\nfunction removeView(container, removeIndex) {\n var /** @type {?} */ views = container.data.views;\n var /** @type {?} */ viewNode = views[removeIndex];\n if (removeIndex > 0) {\n setViewNext(views[removeIndex - 1], viewNode.next);\n }\n views.splice(removeIndex, 1);\n destroyViewTree(viewNode.data);\n addRemoveViewFromContainer(container, viewNode, false);\n // Notify query that view has been removed\n container.query && container.query.removeView(container, viewNode, removeIndex);\n return viewNode;\n}\n/**\n * Sets a next on the view node, so views in for loops can easily jump from\n * one view to the next to add/remove elements. Also adds the ViewState (view.data)\n * to the view tree for easy traversal when cleaning up the view.\n *\n * @param {?} view The view to set up\n * @param {?} next The view's new next\n * @return {?}\n */\nfunction setViewNext(view, next) {\n view.next = next;\n view.data.next = next ? next.data : null;\n}\n/**\n * Determines which ViewOrContainerState to jump to when traversing back up the\n * tree in destroyViewTree.\n *\n * Normally, the view's parent ViewState should be checked, but in the case of\n * embedded views, the container (which is the view node's parent, but not the\n * ViewState's parent) needs to be checked for a possible next property.\n *\n * @param {?} state The ViewOrContainerState for which we need a parent state\n * @param {?} rootView The rootView, so we don't propagate too far up the view tree\n * @return {?} The correct parent ViewOrContainerState\n */\nfunction getParentState(state, rootView) {\n var /** @type {?} */ node;\n if ((node = /** @type {?} */ (((/** @type {?} */ (state)))).node) &&\n (node.flags & 3 /* TYPE_MASK */) === 2 /* View */) {\n // if it's an embedded view, the state needs to go up to the container, in case the\n // container has a next\n return /** @type {?} */ (((node.parent)).data);\n }\n else {\n // otherwise, use parent view for containers or component views\n return state.parent === rootView ? null : state.parent;\n }\n}\n/**\n * Removes all listeners and call all onDestroys in a given view.\n *\n * @param {?} viewState The ViewState of the view to clean up\n * @return {?}\n */\nfunction cleanUpView(viewState) {\n if (!viewState.cleanup)\n return;\n var /** @type {?} */ cleanup = /** @type {?} */ ((viewState.cleanup));\n for (var /** @type {?} */ i = 0; i < cleanup.length - 1; i += 2) {\n if (typeof cleanup[i] === 'string') {\n /** @type {?} */ ((cleanup))[i + 1].removeEventListener(cleanup[i], cleanup[i + 2], cleanup[i + 3]);\n i += 2;\n }\n else {\n cleanup[i].call(cleanup[i + 1]);\n }\n }\n viewState.cleanup = null;\n}\n/**\n * Appends the provided child element to the provided parent, if appropriate.\n *\n * If the parent is a view, the element will be appended as part of viewEnd(), so\n * the element should not be appended now. Similarly, if the child is a content child\n * of a parent component, the child will be appended to the right position later by\n * the content projection system. Otherwise, append normally.\n *\n * @param {?} parent The parent to which to append the child\n * @param {?} child The child that should be appended\n * @param {?} currentView The current view's ViewState\n * @return {?} Whether or not the child was appended\n */\nfunction appendChild(parent, child, currentView) {\n // Only add native child element to parent element if the parent element is regular Element.\n // If parent is:\n // - Regular element => add child\n // - Component host element =>\n // - Current View, and parent view same => content => don't add -> parent component will\n // re-project if needed.\n // - Current View, and parent view different => view => add Child\n // - View element => View's get added separately.\n if (child !== null && (parent.flags & 3 /* TYPE_MASK */) === 3 /* Element */ &&\n (parent.view !==\n currentView /* Crossing View Boundaries, it is Component, but add Element of View */\n || parent.data === null /* Regular Element. */)) {\n // We only add element if not in View or not projected.\n var /** @type {?} */ renderer = currentView.renderer;\n (/** @type {?} */ (renderer)).listen ? /** @type {?} */ (((/** @type {?} */ (renderer)).appendChild))(/** @type {?} */ (((parent.native))), child) : /** @type {?} */ ((parent.native)).appendChild(child);\n return true;\n }\n return false;\n}\n/**\n * Inserts the provided node before the correct element in the DOM, if appropriate.\n *\n * If the parent is a view, the element will be inserted as part of viewEnd(), so\n * the element should not be inserted now. Similarly, if the child is a content child\n * of a parent component, the child will be inserted to the right position later by\n * the content projection system. Otherwise, insertBefore normally.\n *\n * @param {?} node Node to insert\n * @param {?} currentView The current view's ViewState\n * @return {?}\n */\nfunction insertChild(node, currentView) {\n var /** @type {?} */ parent = /** @type {?} */ ((node.parent));\n // Only add child element to parent element if the parent element is regular Element.\n // If parent is:\n // - Normal element => add child\n // - Component element =>\n // - Current View, and parent view same => content don't add -> parent component will\n // re-project if needed.\n // - Current View, and parent view different => view => add Child\n // - View element => View's get added separately.\n if ((parent.flags & 3 /* TYPE_MASK */) === 3 /* Element */ &&\n (parent.view !==\n currentView /* Crossing View Boundaries, its Component, but add Element of View */\n || parent.data === null /* Regular Element. */)) {\n // We only add element if not in View or not projected.\n var /** @type {?} */ sibling = node.next;\n var /** @type {?} */ nativeSibling = null;\n while (sibling && (nativeSibling = sibling.native) === null) {\n sibling = sibling.next;\n }\n var /** @type {?} */ renderer = currentView.renderer;\n (/** @type {?} */ (renderer)).listen ? /** @type {?} */ (((/** @type {?} */ (renderer))\n .insertBefore))(/** @type {?} */ ((parent.native)), /** @type {?} */ ((node.native)), nativeSibling) : /** @type {?} */ ((parent.native)).insertBefore(/** @type {?} */ ((node.native)), nativeSibling, false);\n }\n}\n/**\n * Appends a projected node to the DOM, or in the case of a projected container,\n * appends the nodes from all of the container's active views to the DOM. Also stores the\n * node in the given projectedNodes array.\n *\n * @param {?} projectedNodes Array to store the projected node\n * @param {?} node The node to process\n * @param {?} currentParent The last parent element to be processed\n * @param {?} currentView The current view's ViewState\n * @return {?}\n */\n\n/**\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 * A utility function to match an Ivy node static data against a simple CSS selector\n *\n * @param {?} lNodeStaticData\n * @param {?} selector\n * @return {?} true if node matches the selector.\n */\n\n/**\n * @param {?} lNodeStaticData\n * @param {?} selector\n * @return {?}\n */\n\n/**\n * @param {?} lNodeStaticData\n * @param {?} selector\n * @return {?}\n */\n\n/**\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 * Must use this method for CD (instead of === ) since NaN !== NaN\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction isDifferent(a, b) {\n // NaN is the only value that is not equal to itself so the first\n // test checks if both a and b are not NaN\n return !(a !== a && b !== b) && a !== b;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction stringify$1(value) {\n if (typeof value == 'function')\n return value.name || value;\n if (typeof value == 'string')\n return value;\n if (value == null)\n return '';\n return '' + value;\n}\n/**\n * Creates an ElementRef for a given node injector and stores it on the injector.\n * Or, if the ElementRef already exists, retrieves the existing ElementRef.\n *\n * @param {?} di The node injector where we should store a created ElementRef\n * @return {?} The ElementRef instance to use\n */\n\n/**\n * Creates a TemplateRef and stores it on the injector. Or, if the TemplateRef already\n * exists, retrieves the existing TemplateRef.\n *\n * @template T\n * @param {?} di The node injector where we should store a created TemplateRef\n * @return {?} The TemplateRef instance to use\n */\n\n/**\n * Creates a ViewContainerRef and stores it on the injector. Or, if the ViewContainerRef\n * already exists, retrieves the existing ViewContainerRef.\n *\n * @param {?} di\n * @return {?} The ViewContainerRef instance to use\n */\n\n/**\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 * A predicate which determines if a given element/directive should be included in the query\n * @record\n */\n\nvar QueryList_ = /** @class */ (function () {\n function QueryList_() {\n this.dirty = false;\n /**\n * \\@internal\n */\n this._valuesTree = null;\n /**\n * \\@internal\n */\n this._values = null;\n }\n Object.defineProperty(QueryList_.prototype, \"length\", {\n get: /**\n * @return {?}\n */\n function () {\n ngDevMode && assertNotNull(this._values, 'refreshed');\n return /** @type {?} */ ((this._values)).length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(QueryList_.prototype, \"first\", {\n get: /**\n * @return {?}\n */\n function () {\n ngDevMode && assertNotNull(this._values, 'refreshed');\n var /** @type {?} */ values = /** @type {?} */ ((this._values));\n return values.length ? values[0] : null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(QueryList_.prototype, \"last\", {\n get: /**\n * @return {?}\n */\n function () {\n ngDevMode && assertNotNull(this._values, 'refreshed');\n var /** @type {?} */ values = /** @type {?} */ ((this._values));\n return values.length ? values[values.length - 1] : null;\n },\n enumerable: true,\n configurable: true\n });\n /** @internal */\n /**\n * \\@internal\n * @return {?}\n */\n QueryList_.prototype._refresh = /**\n * \\@internal\n * @return {?}\n */\n function () {\n // TODO(misko): needs more logic to flatten tree.\n if (this._values === null) {\n this._values = this._valuesTree;\n return true;\n }\n return false;\n };\n /**\n * @template U\n * @param {?} fn\n * @return {?}\n */\n QueryList_.prototype.map = /**\n * @template U\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n throw new Error('Method not implemented.');\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n QueryList_.prototype.filter = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n throw new Error('Method not implemented.');\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n QueryList_.prototype.find = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n throw new Error('Method not implemented.');\n };\n /**\n * @template U\n * @param {?} fn\n * @param {?} init\n * @return {?}\n */\n QueryList_.prototype.reduce = /**\n * @template U\n * @param {?} fn\n * @param {?} init\n * @return {?}\n */\n function (fn, init) {\n throw new Error('Method not implemented.');\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n QueryList_.prototype.forEach = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n throw new Error('Method not implemented.');\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n QueryList_.prototype.some = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n throw new Error('Method not implemented.');\n };\n /**\n * @return {?}\n */\n QueryList_.prototype.toArray = /**\n * @return {?}\n */\n function () {\n ngDevMode && assertNotNull(this._values, 'refreshed');\n return /** @type {?} */ ((this._values));\n };\n /**\n * @return {?}\n */\n QueryList_.prototype.toString = /**\n * @return {?}\n */\n function () { throw new Error('Method not implemented.'); };\n /**\n * @param {?} res\n * @return {?}\n */\n QueryList_.prototype.reset = /**\n * @param {?} res\n * @return {?}\n */\n function (res) { throw new Error('Method not implemented.'); };\n /**\n * @return {?}\n */\n QueryList_.prototype.notifyOnChanges = /**\n * @return {?}\n */\n function () { throw new Error('Method not implemented.'); };\n /**\n * @return {?}\n */\n QueryList_.prototype.setDirty = /**\n * @return {?}\n */\n function () { throw new Error('Method not implemented.'); };\n /**\n * @return {?}\n */\n QueryList_.prototype.destroy = /**\n * @return {?}\n */\n function () { throw new Error('Method not implemented.'); };\n return QueryList_;\n}());\n\n/**\n * @param {?} query\n * @return {?}\n */\n\n/**\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/** @enum {number} */\nvar RendererStyleFlags3 = {\n Important: 1,\n DashCase: 2,\n};\nRendererStyleFlags3[RendererStyleFlags3.Important] = \"Important\";\nRendererStyleFlags3[RendererStyleFlags3.DashCase] = \"DashCase\";\n/**\n * Object Oriented style of API needed to create elements and text nodes.\n *\n * This is the native browser API style, e.g. operations are methods on individual objects\n * like HTMLElement. With this style, no additional code is needed as a facade\n * (reducing payload size).\n *\n * @record\n */\n\n/**\n * Procedural style of API needed to create elements and text nodes.\n *\n * In non-native browser environments (e.g. platforms such as web-workers), this is the\n * facade that enables element manipulation. This also facilitates backwards compatibility\n * with Renderer2.\n * @record\n */\n\n/**\n * @record\n */\n\nvar domRendererFactory3 = {\n createRenderer: function (hostElement, rendererType) { return document; }\n};\n/**\n * Subset of API needed for appending elements and text nodes.\n * @record\n */\n\n/**\n * Subset of API needed for writing attributes, properties, and setting up\n * listeners on Element.\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\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 * Directive (D) sets a property on all component instances using this constant as a key and the\n * component's host node (LElement) as the value. This is used in methods like detectChanges to\n * facilitate jumping from an instance to the host node.\n */\nvar NG_HOST_SYMBOL = '__ngHostLNode__';\n/**\n * This property gets set before entering a template.\n *\n * This renderer can be one of two varieties of Renderer3:\n *\n * - ObjectedOrientedRenderer3\n *\n * This is the native browser API style, e.g. operations are methods on individual objects\n * like HTMLElement. With this style, no additional code is needed as a facade (reducing payload\n * size).\n *\n * - ProceduralRenderer3\n *\n * In non-native browser environments (e.g. platforms such as web-workers), this is the facade\n * that enables element manipulation. This also facilitates backwards compatibility with\n * Renderer2.\n */\nvar renderer;\nvar rendererFactory;\n/**\n * Used to set the parent property when nodes are created.\n */\nvar previousOrParentNode;\n/**\n * If `isParent` is:\n * - `true`: then `previousOrParentNode` points to a parent node.\n * - `false`: then `previousOrParentNode` points to previous node (sibling).\n */\nvar isParent;\n/**\n * The current template's static data (shared between all templates of a\n * given type).\n *\n * Each node's static data is stored at the same index that it's stored\n * in the data array. Any nodes that do not have static data store a null\n * value to avoid a sparse array.\n */\nvar ngStaticData;\n/**\n * State of the current view being processed.\n */\nvar currentView;\n// The initialization has to be after the `let`, otherwise `createViewState` can't see `let`.\ncurrentView = createViewState(/** @type {?} */ ((null)), /** @type {?} */ ((null)), []);\nvar currentQuery;\n/**\n * This property gets set before entering a template.\n */\nvar creationMode;\n/**\n * An array of nodes (text, element, container, etc), their bindings, and\n * any local variables that need to be stored between invocations.\n */\nvar data;\n/**\n * Points to the next binding index to read or write to.\n */\nvar bindingIndex;\n/**\n * When a view is destroyed, listeners need to be released\n * and onDestroy callbacks need to be called. This cleanup array\n * stores both listener data (in chunks of 4) and onDestroy data\n * (in chunks of 2), as they'll be processed at the same time.\n *\n * If it's a listener being stored:\n * 1st index is: event name to remove\n * 2nd index is: native element\n * 3rd index is: listener function\n * 4th index is: useCapture boolean\n *\n * If it's an onDestroy function:\n * 1st index is: onDestroy function\n * 2nd index is: context for function\n */\nvar cleanup;\n/**\n * Index in the data array at which view hooks begin to be stored.\n */\nvar viewHookStartIndex;\n/**\n * Swap the current state with a new state.\n *\n * For performance reasons we store the state in the top level of the module.\n * This way we minimize the number of properties to read. Whenever a new view\n * is entered we have to store the state for later, and when the view is\n * exited the state has to be restored\n *\n * @param {?} newViewState New state to become active\n * @param {?} host Element to which the View is a child of\n * @return {?} the previous state;\n */\nfunction enterView(newViewState, host) {\n var /** @type {?} */ oldViewState = currentView;\n data = newViewState.data;\n bindingIndex = newViewState.bindingStartIndex || 0;\n ngStaticData = newViewState.ngStaticData;\n creationMode = newViewState.creationMode;\n viewHookStartIndex = newViewState.viewHookStartIndex;\n cleanup = newViewState.cleanup;\n renderer = newViewState.renderer;\n if (host != null) {\n previousOrParentNode = host;\n isParent = true;\n }\n currentView = newViewState;\n return /** @type {?} */ ((oldViewState));\n}\n/**\n * Used in lieu of enterView to make it clear when we are exiting a child view. This makes\n * the direction of traversal (up or down the view tree) a bit clearer.\n * @param {?} newViewState\n * @return {?}\n */\nfunction leaveView(newViewState) {\n executeViewHooks();\n enterView(newViewState, null);\n}\n/**\n * @param {?} viewId\n * @param {?} renderer\n * @param {?} ngStaticData\n * @return {?}\n */\nfunction createViewState(viewId, renderer, ngStaticData) {\n var /** @type {?} */ newView = {\n parent: currentView,\n id: viewId,\n // -1 for component views\n node: /** @type {?} */ ((null)),\n // until we initialize it in createNode.\n data: [],\n ngStaticData: ngStaticData,\n cleanup: null,\n renderer: renderer,\n child: null,\n tail: null,\n next: null,\n bindingStartIndex: null,\n creationMode: true,\n viewHookStartIndex: null\n };\n return newView;\n}\n/**\n * @param {?} index\n * @param {?} type\n * @param {?} native\n * @param {?=} state\n * @return {?}\n */\nfunction createLNode(index, type, native, state) {\n var /** @type {?} */ parent = isParent ? previousOrParentNode :\n previousOrParentNode && /** @type {?} */ (previousOrParentNode.parent);\n var /** @type {?} */ query = (isParent ? currentQuery : previousOrParentNode && previousOrParentNode.query) ||\n parent && parent.query && parent.query.child();\n var /** @type {?} */ isState = state != null;\n var /** @type {?} */ node = {\n flags: type,\n native: /** @type {?} */ (native),\n view: currentView,\n parent: /** @type {?} */ (parent),\n child: null,\n next: null,\n nodeInjector: parent ? parent.nodeInjector : null,\n data: isState ? /** @type {?} */ (state) : null,\n query: query,\n staticData: null\n };\n if ((type & 2 /* ViewOrElement */) === 2 /* ViewOrElement */ && isState) {\n // Bit of a hack to bust through the readonly because there is a circular dep between\n // ViewState and LNode.\n ngDevMode && assertEqual((/** @type {?} */ (state)).node, null, 'viewState.node');\n (/** @type {?} */ ((state))).node = node;\n }\n if (index != null) {\n // We are Element or Container\n ngDevMode && assertEqual(data.length, index, 'data.length not in sequence');\n data[index] = node;\n // Every node adds a value to the static data array to avoid a sparse array\n if (index >= ngStaticData.length) {\n ngStaticData[index] = null;\n }\n else {\n node.staticData = /** @type {?} */ (ngStaticData[index]);\n }\n // Now link ourselves into the tree.\n if (isParent) {\n currentQuery = null;\n if (previousOrParentNode.view === currentView ||\n (previousOrParentNode.flags & 3 /* TYPE_MASK */) === 2 /* View */) {\n // We are in the same view, which means we are adding content node to the parent View.\n ngDevMode && assertEqual(previousOrParentNode.child, null, 'previousNode.child');\n previousOrParentNode.child = node;\n }\n else {\n // We are adding component view, so we don't link parent node child to this node.\n }\n }\n else if (previousOrParentNode) {\n ngDevMode && assertEqual(previousOrParentNode.next, null, 'previousNode.next');\n previousOrParentNode.next = node;\n }\n }\n previousOrParentNode = node;\n isParent = true;\n return node;\n}\n/**\n * Resets the application state.\n * @return {?}\n */\nfunction resetApplicationState() {\n isParent = false;\n previousOrParentNode = /** @type {?} */ ((null));\n}\n/**\n *\n * @template T\n * @param {?} hostNode\n * @param {?} template Template function with the instructions.\n * @param {?} context to pass into the template.\n * @param {?} providedRendererFactory\n * @param {?} host Existing node to render into.\n * @return {?}\n */\n\n/**\n * @template T\n * @param {?} node\n * @param {?} viewState\n * @param {?} componentOrContext\n * @param {?=} template\n * @return {?}\n */\nfunction renderComponentOrTemplate(node, viewState, componentOrContext, template) {\n var /** @type {?} */ oldView = enterView(viewState, node);\n try {\n if (rendererFactory.begin) {\n rendererFactory.begin();\n }\n if (template) {\n ngStaticData = template.ngStaticData || (template.ngStaticData = /** @type {?} */ ([]));\n template(/** @type {?} */ ((componentOrContext)), creationMode);\n }\n else {\n // Element was stored at 0 and directive was stored at 1 in renderComponent\n // so to refresh the component, r() needs to be called with (1, 0)\n (/** @type {?} */ (componentOrContext.constructor)).ngComponentDef.r(1, 0);\n }\n }\n finally {\n if (rendererFactory.end) {\n rendererFactory.end();\n }\n viewState.creationMode = false;\n leaveView(oldView);\n }\n}\n/**\n * @return {?}\n */\n\n/**\n * Makes a directive public to the DI system by adding it to an injector's bloom filter.\n *\n * @param {?} def The definition of the directive to be made public\n * @return {?}\n */\n\n/**\n * Searches for an instance of the given directive type up the injector tree and returns\n * that instance if found.\n *\n * If not found, it will propagate up to the next parent injector until the token\n * is found or the top is reached.\n *\n * Usage example (in factory function):\n *\n * class SomeDirective {\n * constructor(directive: DirectiveA) {}\n *\n * static ngDirectiveDef = defineDirective({\n * type: SomeDirective,\n * factory: () => new SomeDirective(inject(DirectiveA))\n * });\n * }\n *\n * @template T\n * @param {?} token The directive type to search for\n * @param {?=} flags Injection flags (e.g. CheckParent)\n * @return {?} The instance found\n */\n\n/**\n * Creates an ElementRef and stores it on the injector.\n * Or, if the ElementRef already exists, retrieves the existing ElementRef.\n *\n * @return {?} The ElementRef instance to use\n */\n\n/**\n * Creates a TemplateRef and stores it on the injector. Or, if the TemplateRef already\n * exists, retrieves the existing TemplateRef.\n *\n * @template T\n * @return {?} The TemplateRef instance to use\n */\n\n/**\n * Creates a ViewContainerRef and stores it on the injector. Or, if the ViewContainerRef\n * already exists, retrieves the existing ViewContainerRef.\n *\n * @return {?} The ViewContainerRef instance to use\n */\n\n/**\n * Create DOM element. The instruction must later be followed by `elementEnd()` call.\n *\n * @param {?} index Index of the element in the data array\n * @param {?=} nameOrComponentDef Name of the DOM Node or `ComponentDef`.\n * @param {?=} attrs Statically bound set of attributes to be written into the DOM element on creation.\n * @param {?=} localName A name under which a given element is exported.\n *\n * Attributes are passed as an array of strings where elements with an even index hold an attribute\n * name and elements with an odd index hold an attribute value, ex.:\n * ['id', 'warning5', 'class', 'alert']\n * @return {?}\n */\nfunction elementStart(index, nameOrComponentDef, attrs, localName) {\n var /** @type {?} */ node;\n var /** @type {?} */ native;\n if (nameOrComponentDef == null) {\n // native node retrieval - used for exporting elements as tpl local variables (<div #foo>)\n var /** @type {?} */ node_1 = /** @type {?} */ ((data[index]));\n native = node_1 && (/** @type {?} */ (node_1)).native;\n }\n else {\n ngDevMode && assertEqual(currentView.bindingStartIndex, null, 'bindingStartIndex');\n var /** @type {?} */ isHostElement = typeof nameOrComponentDef !== 'string';\n var /** @type {?} */ name_1 = isHostElement ? (/** @type {?} */ (nameOrComponentDef)).tag : /** @type {?} */ (nameOrComponentDef);\n if (name_1 === null) {\n // TODO: future support for nameless components.\n throw 'for now name is required';\n }\n else {\n native = renderer.createElement(name_1);\n var /** @type {?} */ componentView = null;\n if (isHostElement) {\n var /** @type {?} */ ngStaticData_1 = getTemplateStatic((/** @type {?} */ (nameOrComponentDef)).template);\n componentView = addToViewTree(createViewState(-1, rendererFactory.createRenderer(native, (/** @type {?} */ (nameOrComponentDef)).rendererType), ngStaticData_1));\n }\n // Only component views should be added to the view tree directly. Embedded views are\n // accessed through their containers because they may be removed / re-added later.\n node = createLNode(index, 3 /* Element */, native, componentView);\n if (node.staticData == null) {\n ngDevMode && assertDataInRange(index - 1);\n node.staticData = ngStaticData[index] =\n createNodeStatic(name_1, attrs || null, null, localName || null);\n }\n if (attrs)\n setUpAttributes(native, attrs);\n appendChild(/** @type {?} */ ((node.parent)), native, currentView);\n }\n }\n return native;\n}\n/**\n * Gets static data from a template function or creates a new static\n * data array if it doesn't already exist.\n *\n * @param {?} template The template from which to get static data\n * @return {?} NgStaticData\n */\nfunction getTemplateStatic(template) {\n return template.ngStaticData || (template.ngStaticData = /** @type {?} */ ([]));\n}\n/**\n * @param {?} native\n * @param {?} attrs\n * @return {?}\n */\nfunction setUpAttributes(native, attrs) {\n ngDevMode && assertEqual(attrs.length % 2, 0, 'attrs.length % 2');\n var /** @type {?} */ isProceduralRenderer = (/** @type {?} */ (renderer)).setAttribute;\n for (var /** @type {?} */ i = 0; i < attrs.length; i += 2) {\n isProceduralRenderer ? /** @type {?} */ (((/** @type {?} */ (renderer)).setAttribute))(native, attrs[i], attrs[i | 1]) :\n native.setAttribute(attrs[i], attrs[i | 1]);\n }\n}\n/**\n * @param {?} text\n * @param {?} token\n * @return {?}\n */\nfunction createError(text, token) {\n return new Error(\"Renderer: \" + text + \" [\" + stringify$1(token) + \"]\");\n}\n/**\n * Locates the host native element, used for bootstrapping existing nodes into rendering pipeline.\n *\n * @param {?} factory\n * @param {?} elementOrSelector Render element or CSS selector to locate the element.\n * @return {?}\n */\nfunction locateHostElement(factory, elementOrSelector) {\n ngDevMode && assertDataInRange(-1);\n rendererFactory = factory;\n var /** @type {?} */ defaultRenderer = factory.createRenderer(null, null);\n var /** @type {?} */ rNode = typeof elementOrSelector === 'string' ?\n ((/** @type {?} */ (defaultRenderer)).selectRootElement ?\n (/** @type {?} */ (defaultRenderer)).selectRootElement(elementOrSelector) : /** @type {?} */ (((/** @type {?} */ (defaultRenderer)).querySelector))(elementOrSelector)) :\n elementOrSelector;\n if (ngDevMode && !rNode) {\n if (typeof elementOrSelector === 'string') {\n throw createError('Host node with selector not found:', elementOrSelector);\n }\n else {\n throw createError('Host node is required:', elementOrSelector);\n }\n }\n return rNode;\n}\n/**\n * Creates the host LNode..\n *\n * @param {?} rNode Render host element.\n * @param {?} def\n * @return {?}\n */\nfunction hostElement(rNode, def) {\n resetApplicationState();\n createLNode(0, 3 /* Element */, rNode, createViewState(-1, renderer, getTemplateStatic(def.template)));\n}\n/**\n * Adds an event listener to the current node.\n *\n * If an output exists on one of the node's directives, it also subscribes to the output\n * and saves the subscription for later cleanup.\n *\n * @param {?} eventName Name of the event\n * @param {?} listener The function to be called when event emits\n * @param {?=} useCapture Whether or not to use capture in event listener.\n * @return {?}\n */\n\n/**\n * Mark the end of the element.\n * @return {?}\n */\nfunction elementEnd() {\n if (isParent) {\n isParent = false;\n }\n else {\n ngDevMode && assertHasParent();\n previousOrParentNode = /** @type {?} */ ((previousOrParentNode.parent));\n }\n ngDevMode && assertNodeType(previousOrParentNode, 3 /* Element */);\n var /** @type {?} */ query = previousOrParentNode.query;\n query && query.addNode(previousOrParentNode);\n}\n/**\n * Update an attribute on an Element. This is used with a `bind` instruction.\n *\n * @param {?} index The index of the element to update in the data array\n * @param {?} attrName Name of attribute. Because it is going to DOM, this is not subject to\n * renaming as port of minification.\n * @param {?} value Value to write. This value will go through stringification.\n * @return {?}\n */\n\n/**\n * Update a property on an Element.\n *\n * If the property name also exists as an input property on one of the element's directives,\n * the component property will be set instead of the element property. This check must\n * be conducted at runtime so child components that add new \\@Inputs don't have to be re-compiled.\n *\n * @template T\n * @param {?} index The index of the element to update in the data array\n * @param {?} propName Name of property. Because it is going to DOM, this is not subject to\n * renaming as part of minification.\n * @param {?} value New value to write.\n * @return {?}\n */\nfunction elementProperty(index, propName, value) {\n if (value === NO_CHANGE)\n return;\n var /** @type {?} */ node = /** @type {?} */ (data[index]);\n var /** @type {?} */ staticData = /** @type {?} */ ((node.staticData));\n // if staticData.inputs is undefined, a listener has created output staticData, but inputs haven't\n // yet been checked\n if (staticData.inputs === undefined) {\n // mark inputs as checked\n staticData.inputs = null;\n staticData = generatePropertyAliases(node.flags, staticData, true);\n }\n var /** @type {?} */ inputData = staticData.inputs;\n var /** @type {?} */ dataValue;\n if (inputData && (dataValue = inputData[propName])) {\n setInputsForProperty(dataValue, value);\n }\n else {\n var /** @type {?} */ native = node.native;\n (/** @type {?} */ (renderer)).setProperty ?\n (/** @type {?} */ (renderer)).setProperty(native, propName, value) :\n native.setProperty ? native.setProperty(propName, value) :\n (/** @type {?} */ (native))[propName] = value;\n }\n}\n/**\n * Constructs a LNodeStatic object from the arguments.\n *\n * @param {?} tagName\n * @param {?} attrs\n * @param {?} containerStatic\n * @param {?} localName\n * @return {?} the LNodeStatic object\n */\nfunction createNodeStatic(tagName, attrs, containerStatic, localName) {\n return {\n tagName: tagName,\n attrs: attrs,\n localNames: localName ? [localName, -1] : null,\n initialInputs: undefined,\n inputs: undefined,\n outputs: undefined,\n containerStatic: containerStatic\n };\n}\n/**\n * Given a list of directive indices and minified input names, sets the\n * input properties on the corresponding directives.\n * @param {?} inputs\n * @param {?} value\n * @return {?}\n */\nfunction setInputsForProperty(inputs, value) {\n for (var /** @type {?} */ i = 0; i < inputs.length; i += 2) {\n ngDevMode && assertDataInRange(/** @type {?} */ (inputs[i]));\n data[/** @type {?} */ (inputs[i])][inputs[i | 1]] = value;\n }\n}\n/**\n * This function consolidates all the inputs or outputs defined by directives\n * on this node into one object and stores it in ngStaticData so it can\n * be shared between all templates of this type.\n *\n * @param {?} flags\n * @param {?} data\n * @param {?=} isInputData\n * @return {?}\n */\nfunction generatePropertyAliases(flags, data, isInputData) {\n if (isInputData === void 0) { isInputData = false; }\n var /** @type {?} */ start = flags >> 12;\n var /** @type {?} */ size = (flags & 4092 /* SIZE_MASK */) >> 2;\n for (var /** @type {?} */ i = start, /** @type {?} */ ii = start + size; i < ii; i++) {\n var /** @type {?} */ directiveDef = /** @type {?} */ (((ngStaticData))[i]);\n var /** @type {?} */ propertyAliasMap = isInputData ? directiveDef.inputs : directiveDef.outputs;\n for (var /** @type {?} */ publicName in propertyAliasMap) {\n if (propertyAliasMap.hasOwnProperty(publicName)) {\n var /** @type {?} */ internalName = propertyAliasMap[publicName];\n var /** @type {?} */ staticDirData = isInputData ? (data.inputs || (data.inputs = {})) :\n (data.outputs || (data.outputs = {}));\n var /** @type {?} */ hasProperty = staticDirData.hasOwnProperty(publicName);\n hasProperty ? staticDirData[publicName].push(i, internalName) :\n (staticDirData[publicName] = [i, internalName]);\n }\n }\n }\n return data;\n}\n/**\n * Add or remove a class in a classList.\n *\n * This instruction is meant to handle the [class.foo]=\"exp\" case\n *\n * @template T\n * @param {?} index The index of the element to update in the data array\n * @param {?} className Name of class to toggle. Because it is going to DOM, this is not subject to\n * renaming as part of minification.\n * @param {?} value A value indicating if a given class should be added or removed.\n * @return {?}\n */\n\n/**\n * Update a given style on an Element.\n *\n * @template T\n * @param {?} index Index of the element to change in the data array\n * @param {?} styleName Name of property. Because it is going to DOM this is not subject to\n * renaming as part of minification.\n * @param {?} value New value to write (null to remove).\n * @param {?=} suffix Suffix to add to style's value (optional).\n * @return {?}\n */\nfunction elementStyle(index, styleName, value, suffix) {\n if (value !== NO_CHANGE) {\n var /** @type {?} */ lElement = /** @type {?} */ (data[index]);\n if (value == null) {\n (/** @type {?} */ (renderer)).removeStyle ?\n (/** @type {?} */ (renderer))\n .removeStyle(lElement.native, styleName, RendererStyleFlags3.DashCase) :\n lElement.native.style.removeProperty(styleName);\n }\n else {\n (/** @type {?} */ (renderer)).setStyle ?\n (/** @type {?} */ (renderer))\n .setStyle(lElement.native, styleName, suffix ? stringify$1(value) + suffix : stringify$1(value), RendererStyleFlags3.DashCase) :\n lElement.native.style.setProperty(styleName, suffix ? stringify$1(value) + suffix : stringify$1(value));\n }\n }\n}\n/**\n * Create static text node\n *\n * @param {?} index Index of the node in the data array.\n * @param {?=} value Value to write. This value will be stringified.\n * If value is not provided than the actual creation of the text node is delayed.\n * @return {?}\n */\nfunction text(index, value) {\n ngDevMode && assertEqual(currentView.bindingStartIndex, null, 'bindingStartIndex');\n var /** @type {?} */ textNode = value != null ?\n ((/** @type {?} */ (renderer)).createText ?\n (/** @type {?} */ (renderer)).createText(stringify$1(value)) : /** @type {?} */ (((/** @type {?} */ (renderer)).createTextNode))(stringify$1(value))) :\n null;\n var /** @type {?} */ node = createLNode(index, 3 /* Element */, textNode);\n // Text nodes are self closing.\n isParent = false;\n appendChild(/** @type {?} */ ((node.parent)), textNode, currentView);\n}\n/**\n * Create text node with binding\n * Bindings should be handled externally with the proper bind(1-8) method\n *\n * @template T\n * @param {?} index Index of the node in the data array.\n * @param {?} value Stringified value to write.\n * @return {?}\n */\nfunction textBinding(index, value) {\n // TODO(misko): I don't think index < nodes.length check is needed here.\n var /** @type {?} */ existingNode = index < data.length && /** @type {?} */ (data[index]);\n if (existingNode && existingNode.native) {\n // If DOM node exists and value changed, update textContent\n value !== NO_CHANGE &&\n ((/** @type {?} */ (renderer)).setValue ?\n (/** @type {?} */ (renderer)).setValue(existingNode.native, stringify$1(value)) :\n existingNode.native.textContent = stringify$1(value));\n }\n else if (existingNode) {\n // Node was created but DOM node creation was delayed. Create and append now.\n existingNode.native =\n ((/** @type {?} */ (renderer)).createText ?\n (/** @type {?} */ (renderer)).createText(stringify$1(value)) : /** @type {?} */ (((/** @type {?} */ (renderer)).createTextNode))(stringify$1(value)));\n insertChild(existingNode, currentView);\n }\n else {\n text(index, value);\n }\n}\n/**\n * @template T\n * @param {?} index\n * @param {?=} directive\n * @param {?=} directiveDef\n * @param {?=} localName\n * @return {?}\n */\nfunction directive(index, directive, directiveDef, localName) {\n var /** @type {?} */ instance;\n if (directive == null) {\n // return existing\n ngDevMode && assertDataInRange(index);\n instance = data[index];\n }\n else {\n ngDevMode && assertEqual(currentView.bindingStartIndex, null, 'bindingStartIndex');\n ngDevMode && assertPreviousIsParent();\n var /** @type {?} */ flags = /** @type {?} */ ((previousOrParentNode)).flags;\n var /** @type {?} */ size = flags & 4092;\n if (size === 0) {\n flags =\n (index << 12 /* INDX_SHIFT */) | 4 /* SIZE_SKIP */ | flags & 3 /* TYPE_MASK */;\n }\n else {\n flags += 4 /* SIZE_SKIP */;\n } /** @type {?} */\n ((previousOrParentNode)).flags = flags;\n ngDevMode && assertDataInRange(index - 1);\n Object.defineProperty(directive, NG_HOST_SYMBOL, { enumerable: false, value: previousOrParentNode });\n data[index] = instance = directive;\n if (index >= ngStaticData.length) {\n ngStaticData[index] = /** @type {?} */ ((directiveDef));\n if (localName) {\n ngDevMode &&\n assertNotNull(previousOrParentNode.staticData, 'previousOrParentNode.staticData');\n var /** @type {?} */ nodeStaticData = /** @type {?} */ ((/** @type {?} */ ((previousOrParentNode)).staticData));\n (nodeStaticData.localNames || (nodeStaticData.localNames = [])).push(localName, index);\n }\n }\n var /** @type {?} */ diPublic_1 = /** @type {?} */ ((directiveDef)).diPublic;\n if (diPublic_1) {\n diPublic_1(/** @type {?} */ ((directiveDef)));\n }\n var /** @type {?} */ staticData = /** @type {?} */ ((previousOrParentNode.staticData));\n if (staticData && staticData.attrs) {\n setInputsFromAttrs(instance, /** @type {?} */ ((directiveDef)).inputs, staticData);\n }\n }\n return instance;\n}\n/**\n * Sets initial input properties on directive instances from attribute data\n *\n * @template T\n * @param {?} instance Instance of the directive on which to set the initial inputs\n * @param {?} inputs The list of inputs from the directive def\n * @param {?} staticData The static data for this node\n * @return {?}\n */\nfunction setInputsFromAttrs(instance, inputs, staticData) {\n var /** @type {?} */ directiveIndex = ((previousOrParentNode.flags & 4092 /* SIZE_MASK */) >> 2 /* SIZE_SHIFT */) - 1;\n var /** @type {?} */ initialInputData = /** @type {?} */ (staticData.initialInputs);\n if (initialInputData === undefined || directiveIndex >= initialInputData.length) {\n initialInputData = generateInitialInputs(directiveIndex, inputs, staticData);\n }\n var /** @type {?} */ initialInputs = initialInputData[directiveIndex];\n if (initialInputs) {\n for (var /** @type {?} */ i = 0; i < initialInputs.length; i += 2) {\n (/** @type {?} */ (instance))[initialInputs[i]] = initialInputs[i | 1];\n }\n }\n}\n/**\n * Generates initialInputData for a node and stores it in the template's static storage\n * so subsequent template invocations don't have to recalculate it.\n *\n * initialInputData is an array containing values that need to be set as input properties\n * for directives on this node, but only once on creation. We need this array to support\n * the case where you set an \\@Input property of a directive using attribute-like syntax.\n * e.g. if you have a `name` \\@Input, you can set it once like this:\n *\n * <my-component name=\"Bess\"></my-component>\n *\n * @param {?} directiveIndex Index to store the initial input data\n * @param {?} inputs The list of inputs from the directive def\n * @param {?} staticData The static data on this node\n * @return {?}\n */\nfunction generateInitialInputs(directiveIndex, inputs, staticData) {\n var /** @type {?} */ initialInputData = staticData.initialInputs || (staticData.initialInputs = []);\n initialInputData[directiveIndex] = null;\n var /** @type {?} */ attrs = /** @type {?} */ ((staticData.attrs));\n for (var /** @type {?} */ i = 0; i < attrs.length; i += 2) {\n var /** @type {?} */ attrName = attrs[i];\n var /** @type {?} */ minifiedInputName = inputs[attrName];\n if (minifiedInputName !== undefined) {\n var /** @type {?} */ inputsToStore = initialInputData[directiveIndex] || (initialInputData[directiveIndex] = []);\n inputsToStore.push(minifiedInputName, attrs[i | 1]);\n }\n }\n return initialInputData;\n}\n/**\n * @param {?} lifecycle\n * @param {?=} self\n * @param {?=} method\n * @return {?}\n */\n\n/**\n * Iterates over view hook functions and calls them.\n * @return {?}\n */\nfunction executeViewHooks() {\n if (viewHookStartIndex == null)\n return;\n // Instead of using splice to remove init hooks after their first run (expensive), we\n // shift over the AFTER_CHECKED hooks as we call them and truncate once at the end.\n var /** @type {?} */ checkIndex = /** @type {?} */ (viewHookStartIndex);\n var /** @type {?} */ writeIndex = checkIndex;\n while (checkIndex < data.length) {\n // Call lifecycle hook with its context\n data[checkIndex + 1].call(data[checkIndex + 2]);\n if (data[checkIndex] === 16 /* AFTER_VIEW_CHECKED */) {\n // We know if the writeIndex falls behind that there is an init that needs to\n // be overwritten.\n if (writeIndex < checkIndex) {\n data[writeIndex] = data[checkIndex];\n data[writeIndex + 1] = data[checkIndex + 1];\n data[writeIndex + 2] = data[checkIndex + 2];\n }\n writeIndex += 3;\n }\n checkIndex += 3;\n }\n // Truncate once at the writeIndex\n data.length = writeIndex;\n}\n/**\n * Creates an LContainer.\n *\n * Only `LView`s can go into `LContainer`.\n *\n * @param {?} index The index of the container in the data array\n * @param {?=} template Optional inline template\n * @param {?=} tagName The name of the container element, if applicable\n * @param {?=} attrs The attrs attached to the container, if applicable\n * @param {?=} localName\n * @return {?}\n */\nfunction containerStart(index, template, tagName, attrs, localName) {\n ngDevMode && assertEqual(currentView.bindingStartIndex, null, 'bindingStartIndex');\n // If the direct parent of the container is a view, its views (including its comment)\n // will need to be added through insertView() when its parent view is being inserted.\n // For now, it is marked \"headless\" so we know to append its views later.\n var /** @type {?} */ comment = renderer.createComment(ngDevMode ? 'container' : '');\n var /** @type {?} */ renderParent = null;\n var /** @type {?} */ currentParent = isParent ? previousOrParentNode : /** @type {?} */ ((previousOrParentNode.parent));\n ngDevMode && assertNotEqual(currentParent, null, 'currentParent');\n if (appendChild(currentParent, comment, currentView)) {\n // we are adding to an Element which is either:\n // - Not a component (will not be re-projected, just added)\n // - View of the Component\n renderParent = /** @type {?} */ (currentParent);\n }\n var /** @type {?} */ node = createLNode(index, 0 /* Container */, comment, /** @type {?} */ ({\n views: [],\n nextIndex: 0, renderParent: renderParent,\n template: template == null ? null : template,\n next: null,\n parent: currentView\n }));\n if (node.staticData == null) {\n node.staticData = ngStaticData[index] =\n createNodeStatic(tagName || null, attrs || null, [], localName || null);\n }\n // Containers are added to the current view tree instead of their embedded views\n // because views can be removed and re-inserted.\n addToViewTree(node.data);\n}\n/**\n * @return {?}\n */\nfunction containerEnd() {\n if (isParent) {\n isParent = false;\n }\n else {\n ngDevMode && assertHasParent();\n previousOrParentNode = /** @type {?} */ ((previousOrParentNode.parent));\n }\n ngDevMode && assertNodeType(previousOrParentNode, 0 /* Container */);\n var /** @type {?} */ query = previousOrParentNode.query;\n query && query.addNode(previousOrParentNode);\n}\n/**\n * Sets a container up to receive views.\n *\n * @param {?} index The index of the container in the data array\n * @return {?}\n */\nfunction containerRefreshStart(index) {\n ngDevMode && assertDataInRange(index);\n previousOrParentNode = /** @type {?} */ (data[index]);\n ngDevMode && assertNodeType(previousOrParentNode, 0 /* Container */);\n isParent = true;\n (/** @type {?} */ (previousOrParentNode)).data.nextIndex = 0;\n}\n/**\n * Marks the end of the LContainer.\n *\n * Marking the end of ViewContainer is the time when to child Views get inserted or removed.\n * @return {?}\n */\nfunction containerRefreshEnd() {\n if (isParent) {\n isParent = false;\n }\n else {\n ngDevMode && assertNodeType(previousOrParentNode, 2 /* View */);\n ngDevMode && assertHasParent();\n previousOrParentNode = /** @type {?} */ ((previousOrParentNode.parent));\n }\n ngDevMode && assertNodeType(previousOrParentNode, 0 /* Container */);\n var /** @type {?} */ container = /** @type {?} */ (previousOrParentNode);\n ngDevMode && assertNodeType(container, 0 /* Container */);\n var /** @type {?} */ nextIndex = container.data.nextIndex;\n while (nextIndex < container.data.views.length) {\n // remove extra view.\n removeView(container, nextIndex);\n }\n}\n/**\n * Creates an LView.\n *\n * @param {?} viewBlockId The ID of this view\n * @return {?} Whether or not this view is in creation mode\n */\nfunction viewStart(viewBlockId) {\n var /** @type {?} */ container = /** @type {?} */ ((isParent ? previousOrParentNode : /** @type {?} */ ((previousOrParentNode.parent))));\n ngDevMode && assertNodeType(container, 0 /* Container */);\n var /** @type {?} */ containerState = container.data;\n var /** @type {?} */ views = containerState.views;\n var /** @type {?} */ existingView = !creationMode && containerState.nextIndex < views.length && views[containerState.nextIndex];\n var /** @type {?} */ viewUpdateMode = existingView && viewBlockId === (/** @type {?} */ (existingView)).data.id;\n if (viewUpdateMode) {\n previousOrParentNode = views[containerState.nextIndex++];\n ngDevMode && assertNodeType(previousOrParentNode, 2 /* View */);\n isParent = true;\n enterView((/** @type {?} */ (existingView)).data, /** @type {?} */ (previousOrParentNode));\n }\n else {\n // When we create a new View, we always reset the state of the instructions.\n var /** @type {?} */ newViewState = createViewState(viewBlockId, renderer, initViewStaticData(viewBlockId, container));\n enterView(newViewState, createLNode(null, 2 /* View */, null, newViewState));\n containerState.nextIndex++;\n }\n return !viewUpdateMode;\n}\n/**\n * Initialize the static data for the active view.\n *\n * Each embedded view needs to set the global ngStaticData variable to the static data for\n * that view. Otherwise, the view's static data for a particular node would overwrite\n * the staticdata for a node in the view above it with the same index (since it's in the\n * same template).\n *\n * @param {?} viewIndex The index of the view's static data in containerStatic\n * @param {?} parent The parent container in which to look for the view's static data\n * @return {?} NgStaticData\n */\nfunction initViewStaticData(viewIndex, parent) {\n ngDevMode && assertNodeType(parent, 0 /* Container */);\n var /** @type {?} */ containerStatic = (/** @type {?} */ (((parent)).staticData)).containerStatic;\n if (viewIndex >= containerStatic.length || containerStatic[viewIndex] == null) {\n containerStatic[viewIndex] = [];\n }\n return containerStatic[viewIndex];\n}\n/**\n * Marks the end of the LView.\n * @return {?}\n */\nfunction viewEnd() {\n isParent = false;\n var /** @type {?} */ viewNode = previousOrParentNode = /** @type {?} */ (currentView.node);\n var /** @type {?} */ container = /** @type {?} */ (previousOrParentNode.parent);\n ngDevMode && assertNodeType(viewNode, 2 /* View */);\n ngDevMode && assertNodeType(container, 0 /* Container */);\n var /** @type {?} */ containerState = container.data;\n var /** @type {?} */ previousView = containerState.nextIndex <= containerState.views.length ? /** @type {?} */ (containerState.views[containerState.nextIndex - 1]) :\n null;\n var /** @type {?} */ viewIdChanged = previousView == null ? true : previousView.data.id !== viewNode.data.id;\n if (viewIdChanged) {\n insertView(container, viewNode, containerState.nextIndex - 1);\n currentView.creationMode = false;\n }\n leaveView(/** @type {?} */ ((/** @type {?} */ ((currentView)).parent)));\n ngDevMode && assertEqual(isParent, false, 'isParent');\n ngDevMode && assertNodeType(previousOrParentNode, 2 /* View */);\n}\n/**\n * Refreshes the component view.\n *\n * In other words, enters the component's view and processes it to update bindings, queries, etc.\n *\n * @param directiveIndex\n * @param elementIndex\n * @param template\n */\nvar componentRefresh = function (directiveIndex, elementIndex, template) {\n ngDevMode && assertDataInRange(elementIndex);\n var /** @type {?} */ element = /** @type {?} */ (((data))[elementIndex]);\n ngDevMode && assertNodeType(element, 3 /* Element */);\n ngDevMode && assertNotEqual(element.data, null, 'isComponent');\n ngDevMode && assertDataInRange(directiveIndex);\n var /** @type {?} */ hostView = /** @type {?} */ ((element.data));\n ngDevMode && assertNotEqual(hostView, null, 'hostView');\n var /** @type {?} */ directive = data[directiveIndex];\n var /** @type {?} */ oldView = enterView(hostView, element);\n try {\n template(directive, creationMode);\n }\n finally {\n hostView.creationMode = false;\n leaveView(oldView);\n }\n};\n/**\n * Instruction to distribute projectable nodes among <ng-content> occurrences in a given template.\n * It takes all the selectors from the entire component's template and decides where\n * each projected node belongs (it re-distributes nodes among \"buckets\" where each \"bucket\" is\n * backed by a selector).\n *\n * @param {?=} selectors\n * @return {?}\n */\n\n/**\n * Inserts previously re-distributed projected nodes. This instruction must be preceded by a call\n * to the projectionDef instruction.\n *\n * @param {?} nodeIndex\n * @param {?} localIndex - index under which distribution of projected nodes was memorized\n * @param {?=} selectorIndex - 0 means <ng-content> without any selector\n * @return {?}\n */\n\n/**\n * Adds a ViewState or a ContainerState to the end of the current view tree.\n *\n * This structure will be used to traverse through nested views to remove listeners\n * and call onDestroy callbacks.\n *\n * @template T\n * @param {?} state The ViewState or ContainerState to add to the view tree\n * @return {?} The state passed in\n */\nfunction addToViewTree(state) {\n currentView.tail ? (currentView.tail.next = state) : (currentView.child = state);\n currentView.tail = state;\n return state;\n}\n/**\n * A special value which designates that a value has not changed.\n */\nvar NO_CHANGE = /** @type {?} */ ({});\n/**\n * Create interpolation bindings with variable number of arguments.\n *\n * If any of the arguments change, then the interpolation is concatenated\n * and causes an update.\n *\n * @param {?} values an array of values to diff.\n * @return {?}\n */\n\n/**\n * Create a single value binding without interpolation.\n *\n * @template T\n * @param {?} value Value to diff\n * @return {?}\n */\nfunction bind(value) {\n var /** @type {?} */ different;\n if (different = creationMode) {\n if (typeof currentView.bindingStartIndex !== 'number') {\n bindingIndex = currentView.bindingStartIndex = data.length;\n }\n data[bindingIndex++] = value;\n }\n else {\n if (different = value !== NO_CHANGE && isDifferent(data[bindingIndex], value)) {\n data[bindingIndex] = value;\n }\n bindingIndex++;\n }\n return different ? value : NO_CHANGE;\n}\n/**\n * Create an interpolation bindings with 1 arguments.\n *\n * @param {?} prefix static value used for concatenation only.\n * @param {?} value value checked for change.\n * @param {?} suffix static value used for concatenation only.\n * @return {?}\n */\nfunction bind1(prefix, value, suffix) {\n return bind(value) === NO_CHANGE ? NO_CHANGE : prefix + stringify$1(value) + suffix;\n}\n/**\n * Create an interpolation bindings with 2 arguments.\n *\n * @param {?} prefix\n * @param {?} v0 value checked for change\n * @param {?} i0\n * @param {?} v1 value checked for change\n * @param {?} suffix\n * @return {?}\n */\n\n/**\n * Create an interpolation bindings with 3 arguments.\n *\n * @param {?} prefix\n * @param {?} v0\n * @param {?} i0\n * @param {?} v1\n * @param {?} i1\n * @param {?} v2\n * @param {?} suffix\n * @return {?}\n */\n\n/**\n * Create an interpolation binding with 4 arguments.\n *\n * @param {?} prefix\n * @param {?} v0\n * @param {?} i0\n * @param {?} v1\n * @param {?} i1\n * @param {?} v2\n * @param {?} i2\n * @param {?} v3\n * @param {?} suffix\n * @return {?}\n */\n\n/**\n * Create an interpolation binding with 5 arguments.\n *\n * @param {?} prefix\n * @param {?} v0\n * @param {?} i0\n * @param {?} v1\n * @param {?} i1\n * @param {?} v2\n * @param {?} i2\n * @param {?} v3\n * @param {?} i3\n * @param {?} v4\n * @param {?} suffix\n * @return {?}\n */\n\n/**\n * Create an interpolation binding with 6 arguments.\n *\n * @param {?} prefix\n * @param {?} v0\n * @param {?} i0\n * @param {?} v1\n * @param {?} i1\n * @param {?} v2\n * @param {?} i2\n * @param {?} v3\n * @param {?} i3\n * @param {?} v4\n * @param {?} i4\n * @param {?} v5\n * @param {?} suffix\n * @return {?}\n */\n\n/**\n * Create an interpolation binding with 7 arguments.\n *\n * @param {?} prefix\n * @param {?} v0\n * @param {?} i0\n * @param {?} v1\n * @param {?} i1\n * @param {?} v2\n * @param {?} i2\n * @param {?} v3\n * @param {?} i3\n * @param {?} v4\n * @param {?} i4\n * @param {?} v5\n * @param {?} i5\n * @param {?} v6\n * @param {?} suffix\n * @return {?}\n */\n\n/**\n * Create an interpolation binding with 8 arguments.\n *\n * @param {?} prefix\n * @param {?} v0\n * @param {?} i0\n * @param {?} v1\n * @param {?} i1\n * @param {?} v2\n * @param {?} i2\n * @param {?} v3\n * @param {?} i3\n * @param {?} v4\n * @param {?} i4\n * @param {?} v5\n * @param {?} i5\n * @param {?} v6\n * @param {?} i6\n * @param {?} v7\n * @param {?} suffix\n * @return {?}\n */\n\n/**\n * @template T\n * @param {?} index\n * @param {?=} value\n * @return {?}\n */\n\n/**\n * @template T\n * @param {?} predicate\n * @param {?=} descend\n * @param {?=} read\n * @return {?}\n */\n\n/**\n * @return {?}\n */\nfunction assertPreviousIsParent() {\n assertEqual(isParent, true, 'isParent');\n}\n/**\n * @return {?}\n */\nfunction assertHasParent() {\n assertNotEqual(previousOrParentNode.parent, null, 'isParent');\n}\n/**\n * @param {?} index\n * @param {?=} arr\n * @return {?}\n */\nfunction assertDataInRange(index, arr) {\n if (arr == null)\n arr = data;\n assertLessThan(arr ? arr.length : 0, index, 'data.length');\n}\n\n/**\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 * Options that control how the component should be bootstrapped.\n * @record\n */\n\n/**\n * Bootstraps a component, then creates and returns a `ComponentRef` for that component.\n *\n * @template T\n * @param {?} componentType Component to bootstrap\n * @param {?} opts\n * @return {?}\n */\n\n// TODO: A hack to not pull in the NullInjector from @angular/core.\n\n/**\n * Bootstraps a Component into an existing host element and returns an instance\n * of the component.\n *\n * @template T\n * @param {?} componentType Component to bootstrap\n * @param {?=} opts\n * @return {?}\n */\nfunction renderComponent(componentType, opts) {\n if (opts === void 0) { opts = {}; }\n var /** @type {?} */ rendererFactory = opts.rendererFactory || domRendererFactory3;\n var /** @type {?} */ componentDef = componentType.ngComponentDef;\n var /** @type {?} */ component;\n var /** @type {?} */ hostNode = locateHostElement(rendererFactory, opts.host || componentDef.tag);\n var /** @type {?} */ oldView = enterView(createViewState(-1, rendererFactory.createRenderer(hostNode, componentDef.rendererType), []), /** @type {?} */ ((null)));\n try {\n // Create element node at index 0 in data array\n hostElement(hostNode, componentDef);\n // Create directive instance with n() and store at index 1 in data array (el is 0)\n component = directive(1, componentDef.n(), componentDef);\n }\n finally {\n leaveView(oldView);\n }\n opts.features && opts.features.forEach(function (feature) { return feature(component, componentDef); });\n detectChanges(component);\n return component;\n}\n/**\n * @template T\n * @param {?} component\n * @return {?}\n */\nfunction detectChanges(component) {\n ngDevMode && assertNotNull(component, 'component');\n var /** @type {?} */ hostNode = /** @type {?} */ ((/** @type {?} */ (component))[NG_HOST_SYMBOL]);\n if (ngDevMode && !hostNode) {\n createError('Not a directive instance', component);\n }\n ngDevMode && assertNotNull(hostNode.data, 'hostNode.data');\n renderComponentOrTemplate(hostNode, hostNode.view, component);\n isDirty = false;\n}\nvar isDirty = false;\n/**\n * @template T\n * @param {?} component\n * @param {?=} scheduler\n * @return {?}\n */\n\n/**\n * @template T\n * @param {?} component\n * @return {?}\n */\n\n/**\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 * Create a component definition object.\n *\n *\n * # Example\n * ```\n * class MyDirective {\n * // Generated by Angular Template Compiler\n * // [Symbol] syntax will not be supported by TypeScript until v2.7\n * static [COMPONENT_DEF_SYMBOL] = defineComponent({\n * ...\n * });\n * }\n * ```\n * @template T\n * @param {?} componentDefinition\n * @return {?}\n */\nfunction defineComponent(componentDefinition) {\n var /** @type {?} */ def = /** @type {?} */ ({\n type: componentDefinition.type,\n diPublic: null,\n n: componentDefinition.factory,\n tag: (/** @type {?} */ (componentDefinition)).tag || /** @type {?} */ ((null)),\n template: (/** @type {?} */ (componentDefinition)).template || /** @type {?} */ ((null)),\n r: componentDefinition.refresh ||\n function (d, e) { componentRefresh(d, e, componentDefinition.template); },\n h: componentDefinition.hostBindings || noop$1,\n inputs: invertObject(componentDefinition.inputs),\n outputs: invertObject(componentDefinition.outputs),\n methods: invertObject(componentDefinition.methods),\n rendererType: resolveRendererType2(componentDefinition.rendererType) || null,\n });\n var /** @type {?} */ feature = componentDefinition.features;\n feature && feature.forEach(function (fn) { return fn(def); });\n return def;\n}\n/**\n * @template T\n * @param {?} definition\n * @return {?}\n */\n\n/**\n * @template T\n * @param {?} definition\n * @return {?}\n */\n\nvar EMPTY$1 = {};\n/**\n * @return {?}\n */\nfunction noop$1() { }\n/**\n * Swaps the keys and values of an object.\n * @param {?} obj\n * @return {?}\n */\nfunction invertObject(obj) {\n if (obj == null)\n return EMPTY$1;\n var /** @type {?} */ newObj = {};\n for (var /** @type {?} */ minifiedKey in obj) {\n newObj[obj[minifiedKey]] = minifiedKey;\n }\n return newObj;\n}\n/**\n * Create a directive definition object.\n *\n * # Example\n * ```\n * class MyDirective {\n * // Generated by Angular Template Compiler\n * // [Symbol] syntax will not be supported by TypeScript until v2.7\n * static [DIRECTIVE_DEF_SYMBOL] = defineDirective({\n * ...\n * });\n * }\n * ```\n */\n\n/**\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/**\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// clang-format on\n\n/**\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/**\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 * @record\n */\n\n/**\n * \\@experimental Animation support is experimental.\n */\n\n/**\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link trigger trigger animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link state state animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link transition transition animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link keyframes keyframes animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link style style animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link animate animate animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link animateChild animateChild animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link useAnimation useAnimation animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link sequence sequence animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link group group animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link stagger stagger animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * `trigger` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. If this information is new, please navigate to the\n * {\\@link Component#animations component animations metadata page} to gain a better\n * understanding of how animations in Angular are used.\n *\n * `trigger` Creates an animation trigger which will a list of {\\@link state state} and\n * {\\@link transition transition} entries that will be evaluated when the expression\n * bound to the trigger changes.\n *\n * Triggers are registered within the component annotation data under the\n * {\\@link Component#animations animations section}. An animation trigger can be placed on an element\n * within a template by referencing the name of the trigger followed by the expression value that\n * the\n * trigger is bound to (in the form of `[\\@triggerName]=\"expression\"`.\n *\n * Animation trigger bindings strigify values and then match the previous and current values against\n * any linked transitions. If a boolean value is provided into the trigger binding then it will both\n * be represented as `1` or `true` and `0` or `false` for a true and false boolean values\n * respectively.\n *\n * ### Usage\n *\n * `trigger` will create an animation trigger reference based on the provided `name` value. The\n * provided `animation` value is expected to be an array consisting of {\\@link state state} and\n * {\\@link transition transition} declarations.\n *\n * ```typescript\n * \\@Component({\n * selector: 'my-component',\n * templateUrl: 'my-component-tpl.html',\n * animations: [\n * trigger(\"myAnimationTrigger\", [\n * state(...),\n * state(...),\n * transition(...),\n * transition(...)\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"something\";\n * }\n * ```\n *\n * The template associated with this component will make use of the `myAnimationTrigger` animation\n * trigger by binding to an element within its template code.\n *\n * ```html\n * <!-- somewhere inside of my-component-tpl.html -->\n * <div [\\@myAnimationTrigger]=\"myStatusExp\">...</div>\n * ```\n *\n * ## Disable Animations\n * A special animation control binding called `\\@.disabled` can be placed on an element which will\n * then disable animations for any inner animation triggers situated within the element as well as\n * any animations on the element itself.\n *\n * When true, the `\\@.disabled` binding will prevent all animations from rendering. The example\n * below shows how to use this feature:\n *\n * ```ts\n * \\@Component({\n * selector: 'my-component',\n * template: `\n * <div [\\@.disabled]=\"isDisabled\">\n * <div [\\@childAnimation]=\"exp\"></div>\n * </div>\n * `,\n * animations: [\n * trigger(\"childAnimation\", [\n * // ...\n * ])\n * ]\n * })\n * class MyComponent {\n * isDisabled = true;\n * exp = '...';\n * }\n * ```\n *\n * The `\\@childAnimation` trigger will not animate because `\\@.disabled` prevents it from happening\n * (when true).\n *\n * Note that `\\@.disbled` will only disable all animations (this means any animations running on\n * the same element will also be disabled).\n *\n * ### Disabling Animations Application-wide\n * When an area of the template is set to have animations disabled, **all** inner components will\n * also have their animations disabled as well. This means that all animations for an angular\n * application can be disabled by placing a host binding set on `\\@.disabled` on the topmost Angular\n * component.\n *\n * ```ts\n * import {Component, HostBinding} from '\\@angular/core';\n *\n * \\@Component({\n * selector: 'app-component',\n * templateUrl: 'app.component.html',\n * })\n * class AppComponent {\n * \\@HostBinding('\\@.disabled')\n * public animationsDisabled = true;\n * }\n * ```\n *\n * ### What about animations that us `query()` and `animateChild()`?\n * Despite inner animations being disabled, a parent animation can {\\@link query query} for inner\n * elements located in disabled areas of the template and still animate them as it sees fit. This is\n * also the case for when a sub animation is queried by a parent and then later animated using {\\@link\n * animateChild animateChild}.\n *\n * \\@experimental Animation support is experimental.\n * @param {?} name\n * @param {?} definitions\n * @return {?}\n */\nfunction trigger$1(name, definitions) {\n return { type: 7 /* Trigger */, name: name, definitions: definitions, options: {} };\n}\n/**\n * `animate` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. If this information is new, please navigate to the {\\@link\n * Component#animations component animations metadata page} to gain a better understanding of\n * how animations in Angular are used.\n *\n * `animate` specifies an animation step that will apply the provided `styles` data for a given\n * amount of time based on the provided `timing` expression value. Calls to `animate` are expected\n * to be used within {\\@link sequence an animation sequence}, {\\@link group group}, or {\\@link\n * transition transition}.\n *\n * ### Usage\n *\n * The `animate` function accepts two input parameters: `timing` and `styles`:\n *\n * - `timing` is a string based value that can be a combination of a duration with optional delay\n * and easing values. The format for the expression breaks down to `duration delay easing`\n * (therefore a value such as `1s 100ms ease-out` will be parse itself into `duration=1000,\n * delay=100, easing=ease-out`. If a numeric value is provided then that will be used as the\n * `duration` value in millisecond form.\n * - `styles` is the style input data which can either be a call to {\\@link style style} or {\\@link\n * keyframes keyframes}. If left empty then the styles from the destination state will be collected\n * and used (this is useful when describing an animation step that will complete an animation by\n * {\\@link transition#the-final-animate-call animating to the final state}).\n *\n * ```typescript\n * // various functions for specifying timing data\n * animate(500, style(...))\n * animate(\"1s\", style(...))\n * animate(\"100ms 0.5s\", style(...))\n * animate(\"5s ease\", style(...))\n * animate(\"5s 10ms cubic-bezier(.17,.67,.88,.1)\", style(...))\n *\n * // either style() of keyframes() can be used\n * animate(500, style({ background: \"red\" }))\n * animate(500, keyframes([\n * style({ background: \"blue\" })),\n * style({ background: \"red\" }))\n * ])\n * ```\n *\n * {\\@example core/animation/ts/dsl/animation_example.ts region='Component'}\n *\n * \\@experimental Animation support is experimental.\n * @param {?} timings\n * @param {?=} styles\n * @return {?}\n */\nfunction animate$1(timings, styles) {\n if (styles === void 0) { styles = null; }\n return { type: 4 /* Animate */, styles: styles, timings: timings };\n}\n/**\n * `group` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. If this information is new, please navigate to the {\\@link\n * Component#animations component animations metadata page} to gain a better understanding of\n * how animations in Angular are used.\n *\n * `group` specifies a list of animation steps that are all run in parallel. Grouped animations are\n * useful when a series of styles must be animated/closed off at different starting/ending times.\n *\n * The `group` function can either be used within a {\\@link sequence sequence} or a {\\@link transition\n * transition} and it will only continue to the next instruction once all of the inner animation\n * steps have completed.\n *\n * ### Usage\n *\n * The `steps` data that is passed into the `group` animation function can either consist of {\\@link\n * style style} or {\\@link animate animate} function calls. Each call to `style()` or `animate()`\n * within a group will be executed instantly (use {\\@link keyframes keyframes} or a {\\@link\n * animate#usage animate() with a delay value} to offset styles to be applied at a later time).\n *\n * ```typescript\n * group([\n * animate(\"1s\", { background: \"black\" }))\n * animate(\"2s\", { color: \"white\" }))\n * ])\n * ```\n *\n * {\\@example core/animation/ts/dsl/animation_example.ts region='Component'}\n *\n * \\@experimental Animation support is experimental.\n * @param {?} steps\n * @param {?=} options\n * @return {?}\n */\nfunction group$1(steps, options) {\n if (options === void 0) { options = null; }\n return { type: 3 /* Group */, steps: steps, options: options };\n}\n/**\n * `sequence` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. If this information is new, please navigate to the {\\@link\n * Component#animations component animations metadata page} to gain a better understanding of\n * how animations in Angular are used.\n *\n * `sequence` Specifies a list of animation steps that are run one by one. (`sequence` is used by\n * default when an array is passed as animation data into {\\@link transition transition}.)\n *\n * The `sequence` function can either be used within a {\\@link group group} or a {\\@link transition\n * transition} and it will only continue to the next instruction once each of the inner animation\n * steps have completed.\n *\n * To perform animation styling in parallel with other animation steps then have a look at the\n * {\\@link group group} animation function.\n *\n * ### Usage\n *\n * The `steps` data that is passed into the `sequence` animation function can either consist of\n * {\\@link style style} or {\\@link animate animate} function calls. A call to `style()` will apply the\n * provided styling data immediately while a call to `animate()` will apply its styling data over a\n * given time depending on its timing data.\n *\n * ```typescript\n * sequence([\n * style({ opacity: 0 })),\n * animate(\"1s\", { opacity: 1 }))\n * ])\n * ```\n *\n * {\\@example core/animation/ts/dsl/animation_example.ts region='Component'}\n *\n * \\@experimental Animation support is experimental.\n * @param {?} steps\n * @param {?=} options\n * @return {?}\n */\nfunction sequence$1(steps, options) {\n if (options === void 0) { options = null; }\n return { type: 2 /* Sequence */, steps: steps, options: options };\n}\n/**\n * `style` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. If this information is new, please navigate to the {\\@link\n * Component#animations component animations metadata page} to gain a better understanding of\n * how animations in Angular are used.\n *\n * `style` declares a key/value object containing CSS properties/styles that can then be used for\n * {\\@link state animation states}, within an {\\@link sequence animation sequence}, or as styling data\n * for both {\\@link animate animate} and {\\@link keyframes keyframes}.\n *\n * ### Usage\n *\n * `style` takes in a key/value string map as data and expects one or more CSS property/value pairs\n * to be defined.\n *\n * ```typescript\n * // string values are used for css properties\n * style({ background: \"red\", color: \"blue\" })\n *\n * // numerical (pixel) values are also supported\n * style({ width: 100, height: 0 })\n * ```\n *\n * #### Auto-styles (using `*`)\n *\n * When an asterix (`*`) character is used as a value then it will be detected from the element\n * being animated and applied as animation data when the animation starts.\n *\n * This feature proves useful for a state depending on layout and/or environment factors; in such\n * cases the styles are calculated just before the animation starts.\n *\n * ```typescript\n * // the steps below will animate from 0 to the\n * // actual height of the element\n * style({ height: 0 }),\n * animate(\"1s\", style({ height: \"*\" }))\n * ```\n *\n * {\\@example core/animation/ts/dsl/animation_example.ts region='Component'}\n *\n * \\@experimental Animation support is experimental.\n * @param {?} tokens\n * @return {?}\n */\nfunction style$1(tokens) {\n return { type: 6 /* Style */, styles: tokens, offset: null };\n}\n/**\n * `state` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. If this information is new, please navigate to the {\\@link\n * Component#animations component animations metadata page} to gain a better understanding of\n * how animations in Angular are used.\n *\n * `state` declares an animation state within the given trigger. When a state is active within a\n * component then its associated styles will persist on the element that the trigger is attached to\n * (even when the animation ends).\n *\n * To animate between states, have a look at the animation {\\@link transition transition} DSL\n * function. To register states to an animation trigger please have a look at the {\\@link trigger\n * trigger} function.\n *\n * #### The `void` state\n *\n * The `void` state value is a reserved word that angular uses to determine when the element is not\n * apart of the application anymore (e.g. when an `ngIf` evaluates to false then the state of the\n * associated element is void).\n *\n * #### The `*` (default) state\n *\n * The `*` state (when styled) is a fallback state that will be used if the state that is being\n * animated is not declared within the trigger.\n *\n * ### Usage\n *\n * `state` will declare an animation state with its associated styles\n * within the given trigger.\n *\n * - `stateNameExpr` can be one or more state names separated by commas.\n * - `styles` refers to the {\\@link style styling data} that will be persisted on the element once\n * the state has been reached.\n *\n * ```typescript\n * // \"void\" is a reserved name for a state and is used to represent\n * // the state in which an element is detached from from the application.\n * state(\"void\", style({ height: 0 }))\n *\n * // user-defined states\n * state(\"closed\", style({ height: 0 }))\n * state(\"open, visible\", style({ height: \"*\" }))\n * ```\n *\n * {\\@example core/animation/ts/dsl/animation_example.ts region='Component'}\n *\n * \\@experimental Animation support is experimental.\n * @param {?} name\n * @param {?} styles\n * @param {?=} options\n * @return {?}\n */\nfunction state$1(name, styles, options) {\n return { type: 0 /* State */, name: name, styles: styles, options: options };\n}\n/**\n * `keyframes` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. If this information is new, please navigate to the {\\@link\n * Component#animations component animations metadata page} to gain a better understanding of\n * how animations in Angular are used.\n *\n * `keyframes` specifies a collection of {\\@link style style} entries each optionally characterized\n * by an `offset` value.\n *\n * ### Usage\n *\n * The `keyframes` animation function is designed to be used alongside the {\\@link animate animate}\n * animation function. Instead of applying animations from where they are currently to their\n * destination, keyframes can describe how each style entry is applied and at what point within the\n * animation arc (much like CSS Keyframe Animations do).\n *\n * For each `style()` entry an `offset` value can be set. Doing so allows to specifiy at what\n * percentage of the animate time the styles will be applied.\n *\n * ```typescript\n * // the provided offset values describe when each backgroundColor value is applied.\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\", offset: 0 }),\n * style({ backgroundColor: \"blue\", offset: 0.2 }),\n * style({ backgroundColor: \"orange\", offset: 0.3 }),\n * style({ backgroundColor: \"black\", offset: 1 })\n * ]))\n * ```\n *\n * Alternatively, if there are no `offset` values used within the style entries then the offsets\n * will be calculated automatically.\n *\n * ```typescript\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\" }) // offset = 0\n * style({ backgroundColor: \"blue\" }) // offset = 0.33\n * style({ backgroundColor: \"orange\" }) // offset = 0.66\n * style({ backgroundColor: \"black\" }) // offset = 1\n * ]))\n * ```\n *\n * {\\@example core/animation/ts/dsl/animation_example.ts region='Component'}\n *\n * \\@experimental Animation support is experimental.\n * @param {?} steps\n * @return {?}\n */\nfunction keyframes$1(steps) {\n return { type: 5 /* Keyframes */, steps: steps };\n}\n/**\n * `transition` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. If this information is new, please navigate to the {\\@link\n * Component#animations component animations metadata page} to gain a better understanding of\n * how animations in Angular are used.\n *\n * `transition` declares the {\\@link sequence sequence of animation steps} that will be run when the\n * provided `stateChangeExpr` value is satisfied. The `stateChangeExpr` consists of a `state1 =>\n * state2` which consists of two known states (use an asterix (`*`) to refer to a dynamic starting\n * and/or ending state).\n *\n * A function can also be provided as the `stateChangeExpr` argument for a transition and this\n * function will be executed each time a state change occurs. If the value returned within the\n * function is true then the associated animation will be run.\n *\n * Animation transitions are placed within an {\\@link trigger animation trigger}. For an transition\n * to animate to a state value and persist its styles then one or more {\\@link state animation\n * states} is expected to be defined.\n *\n * ### Usage\n *\n * An animation transition is kicked off the `stateChangeExpr` predicate evaluates to true based on\n * what the previous state is and what the current state has become. In other words, if a transition\n * is defined that matches the old/current state criteria then the associated animation will be\n * triggered.\n *\n * ```typescript\n * // all transition/state changes are defined within an animation trigger\n * trigger(\"myAnimationTrigger\", [\n * // if a state is defined then its styles will be persisted when the\n * // animation has fully completed itself\n * state(\"on\", style({ background: \"green\" })),\n * state(\"off\", style({ background: \"grey\" })),\n *\n * // a transition animation that will be kicked off when the state value\n * // bound to \"myAnimationTrigger\" changes from \"on\" to \"off\"\n * transition(\"on => off\", animate(500)),\n *\n * // it is also possible to do run the same animation for both directions\n * transition(\"on <=> off\", animate(500)),\n *\n * // or to define multiple states pairs separated by commas\n * transition(\"on => off, off => void\", animate(500)),\n *\n * // this is a catch-all state change for when an element is inserted into\n * // the page and the destination state is unknown\n * transition(\"void => *\", [\n * style({ opacity: 0 }),\n * animate(500)\n * ]),\n *\n * // this will capture a state change between any states\n * transition(\"* => *\", animate(\"1s 0s\")),\n *\n * // you can also go full out and include a function\n * transition((fromState, toState) => {\n * // when `true` then it will allow the animation below to be invoked\n * return fromState == \"off\" && toState == \"on\";\n * }, animate(\"1s 0s\"))\n * ])\n * ```\n *\n * The template associated with this component will make use of the `myAnimationTrigger` animation\n * trigger by binding to an element within its template code.\n *\n * ```html\n * <!-- somewhere inside of my-component-tpl.html -->\n * <div [\\@myAnimationTrigger]=\"myStatusExp\">...</div>\n * ```\n *\n * #### The final `animate` call\n *\n * If the final step within the transition steps is a call to `animate()` that **only** uses a\n * timing value with **no style data** then it will be automatically used as the final animation arc\n * for the element to animate itself to the final state. This involves an automatic mix of\n * adding/removing CSS styles so that the element will be in the exact state it should be for the\n * applied state to be presented correctly.\n *\n * ```\n * // start off by hiding the element, but make sure that it animates properly to whatever state\n * // is currently active for \"myAnimationTrigger\"\n * transition(\"void => *\", [\n * style({ opacity: 0 }),\n * animate(500)\n * ])\n * ```\n *\n * ### Using :enter and :leave\n *\n * Given that enter (insertion) and leave (removal) animations are so common, the `transition`\n * function accepts both `:enter` and `:leave` values which are aliases for the `void => *` and `*\n * => void` state changes.\n *\n * ```\n * transition(\":enter\", [\n * style({ opacity: 0 }),\n * animate(500, style({ opacity: 1 }))\n * ]),\n * transition(\":leave\", [\n * animate(500, style({ opacity: 0 }))\n * ])\n * ```\n *\n * ### Boolean values\n * if a trigger binding value is a boolean value then it can be matched using a transition\n * expression that compares `true` and `false` or `1` and `0`.\n *\n * ```\n * // in the template\n * <div [\\@openClose]=\"open ? true : false\">...</div>\n *\n * // in the component metadata\n * trigger('openClose', [\n * state('true', style({ height: '*' })),\n * state('false', style({ height: '0px' })),\n * transition('false <=> true', animate(500))\n * ])\n * ```\n *\n * ### Using :increment and :decrement\n * In addition to the :enter and :leave transition aliases, the :increment and :decrement aliases\n * can be used to kick off a transition when a numeric value has increased or decreased in value.\n *\n * ```\n * import {group, animate, query, transition, style, trigger} from '\\@angular/animations';\n * import {Component} from '\\@angular/core';\n *\n * \\@Component({\n * selector: 'banner-carousel-component',\n * styles: [`\n * .banner-container {\n * position:relative;\n * height:500px;\n * overflow:hidden;\n * }\n * .banner-container > .banner {\n * position:absolute;\n * left:0;\n * top:0;\n * font-size:200px;\n * line-height:500px;\n * font-weight:bold;\n * text-align:center;\n * width:100%;\n * }\n * `],\n * template: `\n * <button (click)=\"previous()\">Previous</button>\n * <button (click)=\"next()\">Next</button>\n * <hr>\n * <div [\\@bannerAnimation]=\"selectedIndex\" class=\"banner-container\">\n * <div class=\"banner\" *ngFor=\"let banner of banners\"> {{ banner }} </div>\n * </div>\n * `,\n * animations: [\n * trigger('bannerAnimation', [\n * transition(\":increment\", group([\n * query(':enter', [\n * style({ left: '100%' }),\n * animate('0.5s ease-out', style('*'))\n * ]),\n * query(':leave', [\n * animate('0.5s ease-out', style({ left: '-100%' }))\n * ])\n * ])),\n * transition(\":decrement\", group([\n * query(':enter', [\n * style({ left: '-100%' }),\n * animate('0.5s ease-out', style('*'))\n * ]),\n * query(':leave', [\n * animate('0.5s ease-out', style({ left: '100%' }))\n * ])\n * ]))\n * ])\n * ]\n * })\n * class BannerCarouselComponent {\n * allBanners: string[] = ['1', '2', '3', '4'];\n * selectedIndex: number = 0;\n *\n * get banners() {\n * return [this.allBanners[this.selectedIndex]];\n * }\n *\n * previous() {\n * this.selectedIndex = Math.max(this.selectedIndex - 1, 0);\n * }\n *\n * next() {\n * this.selectedIndex = Math.min(this.selectedIndex + 1, this.allBanners.length - 1);\n * }\n * }\n * ```\n *\n * {\\@example core/animation/ts/dsl/animation_example.ts region='Component'}\n *\n * \\@experimental Animation support is experimental.\n * @param {?} stateChangeExpr\n * @param {?} steps\n * @param {?=} options\n * @return {?}\n */\nfunction transition$1(stateChangeExpr, steps, options) {\n if (options === void 0) { options = null; }\n return { type: 1 /* Transition */, expr: stateChangeExpr, animation: steps, options: options };\n}\n/**\n * `animation` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language.\n *\n * `var myAnimation = animation(...)` is designed to produce a reusable animation that can be later\n * invoked in another animation or sequence. Reusable animations are designed to make use of\n * animation parameters and the produced animation can be used via the `useAnimation` method.\n *\n * ```\n * var fadeAnimation = animation([\n * style({ opacity: '{{ start }}' }),\n * animate('{{ time }}',\n * style({ opacity: '{{ end }}'}))\n * ], { params: { time: '1000ms', start: 0, end: 1 }});\n * ```\n *\n * If parameters are attached to an animation then they act as **default parameter values**. When an\n * animation is invoked via `useAnimation` then parameter values are allowed to be passed in\n * directly. If any of the passed in parameter values are missing then the default values will be\n * used.\n *\n * ```\n * useAnimation(fadeAnimation, {\n * params: {\n * time: '2s',\n * start: 1,\n * end: 0\n * }\n * })\n * ```\n *\n * If one or more parameter values are missing before animated then an error will be thrown.\n *\n * \\@experimental Animation support is experimental.\n * @param {?} steps\n * @param {?=} options\n * @return {?}\n */\n\n/**\n * `animateChild` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. It works by allowing a queried element to execute its own\n * animation within the animation sequence.\n *\n * Each time an animation is triggered in angular, the parent animation\n * will always get priority and any child animations will be blocked. In order\n * for a child animation to run, the parent animation must query each of the elements\n * containing child animations and then allow the animations to run using `animateChild`.\n *\n * The example HTML code below shows both parent and child elements that have animation\n * triggers that will execute at the same time.\n *\n * ```html\n * <!-- parent-child.component.html -->\n * <button (click)=\"exp =! exp\">Toggle</button>\n * <hr>\n *\n * <div [\\@parentAnimation]=\"exp\">\n * <header>Hello</header>\n * <div [\\@childAnimation]=\"exp\">\n * one\n * </div>\n * <div [\\@childAnimation]=\"exp\">\n * two\n * </div>\n * <div [\\@childAnimation]=\"exp\">\n * three\n * </div>\n * </div>\n * ```\n *\n * Now when the `exp` value changes to true, only the `parentAnimation` animation will animate\n * because it has priority. However, using `query` and `animateChild` each of the inner animations\n * can also fire:\n *\n * ```ts\n * // parent-child.component.ts\n * import {trigger, transition, animate, style, query, animateChild} from '\\@angular/animations';\n * \\@Component({\n * selector: 'parent-child-component',\n * animations: [\n * trigger('parentAnimation', [\n * transition('false => true', [\n * query('header', [\n * style({ opacity: 0 }),\n * animate(500, style({ opacity: 1 }))\n * ]),\n * query('\\@childAnimation', [\n * animateChild()\n * ])\n * ])\n * ]),\n * trigger('childAnimation', [\n * transition('false => true', [\n * style({ opacity: 0 }),\n * animate(500, style({ opacity: 1 }))\n * ])\n * ])\n * ]\n * })\n * class ParentChildCmp {\n * exp: boolean = false;\n * }\n * ```\n *\n * In the animation code above, when the `parentAnimation` transition kicks off it first queries to\n * find the header element and fades it in. It then finds each of the sub elements that contain the\n * `\\@childAnimation` trigger and then allows for their animations to fire.\n *\n * This example can be further extended by using stagger:\n *\n * ```ts\n * query('\\@childAnimation', stagger(100, [\n * animateChild()\n * ]))\n * ```\n *\n * Now each of the sub animations start off with respect to the `100ms` staggering step.\n *\n * ## The first frame of child animations\n * When sub animations are executed using `animateChild` the animation engine will always apply the\n * first frame of every sub animation immediately at the start of the animation sequence. This way\n * the parent animation does not need to set any initial styling data on the sub elements before the\n * sub animations kick off.\n *\n * In the example above the first frame of the `childAnimation`'s `false => true` transition\n * consists of a style of `opacity: 0`. This is applied immediately when the `parentAnimation`\n * animation transition sequence starts. Only then when the `\\@childAnimation` is queried and called\n * with `animateChild` will it then animate to its destination of `opacity: 1`.\n *\n * Note that this feature designed to be used alongside {\\@link query query()} and it will only work\n * with animations that are assigned using the Angular animation DSL (this means that CSS keyframes\n * and transitions are not handled by this API).\n *\n * \\@experimental Animation support is experimental.\n * @param {?=} options\n * @return {?}\n */\n\n/**\n * `useAnimation` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. It is used to kick off a reusable animation that is created using {\\@link\n * animation animation()}.\n *\n * \\@experimental Animation support is experimental.\n * @param {?} animation\n * @param {?=} options\n * @return {?}\n */\n\n/**\n * `query` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language.\n *\n * query() is used to find one or more inner elements within the current element that is\n * being animated within the sequence. The provided animation steps are applied\n * to the queried element (by default, an array is provided, then this will be\n * treated as an animation sequence).\n *\n * ### Usage\n *\n * query() is designed to collect mutiple elements and works internally by using\n * `element.querySelectorAll`. An additional options object can be provided which\n * can be used to limit the total amount of items to be collected.\n *\n * ```js\n * query('div', [\n * animate(...),\n * animate(...)\n * ], { limit: 1 })\n * ```\n *\n * query(), by default, will throw an error when zero items are found. If a query\n * has the `optional` flag set to true then this error will be ignored.\n *\n * ```js\n * query('.some-element-that-may-not-be-there', [\n * animate(...),\n * animate(...)\n * ], { optional: true })\n * ```\n *\n * ### Special Selector Values\n *\n * The selector value within a query can collect elements that contain angular-specific\n * characteristics\n * using special pseudo-selectors tokens.\n *\n * These include:\n *\n * - Querying for newly inserted/removed elements using `query(\":enter\")`/`query(\":leave\")`\n * - Querying all currently animating elements using `query(\":animating\")`\n * - Querying elements that contain an animation trigger using `query(\"\\@triggerName\")`\n * - Querying all elements that contain an animation triggers using `query(\"\\@*\")`\n * - Including the current element into the animation sequence using `query(\":self\")`\n *\n *\n * Each of these pseudo-selector tokens can be merged together into a combined query selector\n * string:\n *\n * ```\n * query(':self, .record:enter, .record:leave, \\@subTrigger', [...])\n * ```\n *\n * ### Demo\n *\n * ```\n * \\@Component({\n * selector: 'inner',\n * template: `\n * <div [\\@queryAnimation]=\"exp\">\n * <h1>Title</h1>\n * <div class=\"content\">\n * Blah blah blah\n * </div>\n * </div>\n * `,\n * animations: [\n * trigger('queryAnimation', [\n * transition('* => goAnimate', [\n * // hide the inner elements\n * query('h1', style({ opacity: 0 })),\n * query('.content', style({ opacity: 0 })),\n *\n * // animate the inner elements in, one by one\n * query('h1', animate(1000, style({ opacity: 1 })),\n * query('.content', animate(1000, style({ opacity: 1 })),\n * ])\n * ])\n * ]\n * })\n * class Cmp {\n * exp = '';\n *\n * goAnimate() {\n * this.exp = 'goAnimate';\n * }\n * }\n * ```\n *\n * \\@experimental Animation support is experimental.\n * @param {?} selector\n * @param {?} animation\n * @param {?=} options\n * @return {?}\n */\n\n/**\n * `stagger` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. It is designed to be used inside of an animation {\\@link query query()}\n * and works by issuing a timing gap between after each queried item is animated.\n *\n * ### Usage\n *\n * In the example below there is a container element that wraps a list of items stamped out\n * by an ngFor. The container element contains an animation trigger that will later be set\n * to query for each of the inner items.\n *\n * ```html\n * <!-- list.component.html -->\n * <button (click)=\"toggle()\">Show / Hide Items</button>\n * <hr />\n * <div [\\@listAnimation]=\"items.length\">\n * <div *ngFor=\"let item of items\">\n * {{ item }}\n * </div>\n * </div>\n * ```\n *\n * The component code for this looks as such:\n *\n * ```ts\n * import {trigger, transition, style, animate, query, stagger} from '\\@angular/animations';\n * \\@Component({\n * templateUrl: 'list.component.html',\n * animations: [\n * trigger('listAnimation', [\n * //...\n * ])\n * ]\n * })\n * class ListComponent {\n * items = [];\n *\n * showItems() {\n * this.items = [0,1,2,3,4];\n * }\n *\n * hideItems() {\n * this.items = [];\n * }\n *\n * toggle() {\n * this.items.length ? this.hideItems() : this.showItems();\n * }\n * }\n * ```\n *\n * And now for the animation trigger code:\n *\n * ```ts\n * trigger('listAnimation', [\n * transition('* => *', [ // each time the binding value changes\n * query(':leave', [\n * stagger(100, [\n * animate('0.5s', style({ opacity: 0 }))\n * ])\n * ]),\n * query(':enter', [\n * style({ opacity: 0 }),\n * stagger(100, [\n * animate('0.5s', style({ opacity: 1 }))\n * ])\n * ])\n * ])\n * ])\n * ```\n *\n * Now each time the items are added/removed then either the opacity\n * fade-in animation will run or each removed item will be faded out.\n * When either of these animations occur then a stagger effect will be\n * applied after each item's animation is started.\n *\n * \\@experimental Animation support is experimental.\n * @param {?} timings\n * @param {?} animation\n * @return {?}\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n */\nvar AUTO_STYLE = '*';\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @record\n */\n\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @record\n */\n\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @record\n */\n\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @record\n */\n\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @record\n */\n\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @record\n */\n\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @record\n */\n\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @record\n */\n\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @record\n */\n\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} name\n * @param {?} definitions\n * @return {?}\n */\nfunction trigger$$1(name, definitions) {\n return trigger$1(name, definitions);\n}\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} timings\n * @param {?=} styles\n * @return {?}\n */\nfunction animate$$1(timings, styles) {\n return animate$1(timings, styles);\n}\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} steps\n * @return {?}\n */\nfunction group$$1(steps) {\n return group$1(steps);\n}\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} steps\n * @return {?}\n */\nfunction sequence$$1(steps) {\n return sequence$1(steps);\n}\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} tokens\n * @return {?}\n */\nfunction style$$1(tokens) {\n return style$1(tokens);\n}\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} name\n * @param {?} styles\n * @return {?}\n */\nfunction state$$1(name, styles) {\n return state$1(name, styles);\n}\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} steps\n * @return {?}\n */\nfunction keyframes$$1(steps) {\n return keyframes$1(steps);\n}\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} stateChangeExpr\n * @param {?} steps\n * @return {?}\n */\nfunction transition$$1(stateChangeExpr, steps) {\n return transition$1(stateChangeExpr, steps);\n}\n\nexports.createPlatform = createPlatform;\nexports.assertPlatform = assertPlatform;\nexports.destroyPlatform = destroyPlatform;\nexports.getPlatform = getPlatform;\nexports.PlatformRef = PlatformRef;\nexports.ApplicationRef = ApplicationRef;\nexports.enableProdMode = enableProdMode;\nexports.isDevMode = isDevMode;\nexports.createPlatformFactory = createPlatformFactory;\nexports.NgProbeToken = NgProbeToken;\nexports.APP_ID = APP_ID;\nexports.PACKAGE_ROOT_URL = PACKAGE_ROOT_URL;\nexports.PLATFORM_INITIALIZER = PLATFORM_INITIALIZER;\nexports.PLATFORM_ID = PLATFORM_ID;\nexports.APP_BOOTSTRAP_LISTENER = APP_BOOTSTRAP_LISTENER;\nexports.APP_INITIALIZER = APP_INITIALIZER;\nexports.ApplicationInitStatus = ApplicationInitStatus;\nexports.DebugElement = DebugElement;\nexports.DebugNode = DebugNode;\nexports.asNativeElements = asNativeElements;\nexports.getDebugNode = getDebugNode;\nexports.Testability = Testability;\nexports.TestabilityRegistry = TestabilityRegistry;\nexports.setTestabilityGetter = setTestabilityGetter;\nexports.TRANSLATIONS = TRANSLATIONS;\nexports.TRANSLATIONS_FORMAT = TRANSLATIONS_FORMAT;\nexports.LOCALE_ID = LOCALE_ID;\nexports.MissingTranslationStrategy = MissingTranslationStrategy;\nexports.ApplicationModule = ApplicationModule;\nexports.wtfCreateScope = wtfCreateScope;\nexports.wtfLeave = wtfLeave;\nexports.wtfStartTimeRange = wtfStartTimeRange;\nexports.wtfEndTimeRange = wtfEndTimeRange;\nexports.Type = Type;\nexports.EventEmitter = EventEmitter;\nexports.ErrorHandler = ErrorHandler;\nexports.Sanitizer = Sanitizer;\nexports.SecurityContext = SecurityContext;\nexports.ANALYZE_FOR_ENTRY_COMPONENTS = ANALYZE_FOR_ENTRY_COMPONENTS;\nexports.Attribute = Attribute;\nexports.ContentChild = ContentChild;\nexports.ContentChildren = ContentChildren;\nexports.Query = Query;\nexports.ViewChild = ViewChild;\nexports.ViewChildren = ViewChildren;\nexports.Component = Component;\nexports.Directive = Directive;\nexports.HostBinding = HostBinding;\nexports.HostListener = HostListener;\nexports.Input = Input;\nexports.Output = Output;\nexports.Pipe = Pipe;\nexports.CUSTOM_ELEMENTS_SCHEMA = CUSTOM_ELEMENTS_SCHEMA;\nexports.NO_ERRORS_SCHEMA = NO_ERRORS_SCHEMA;\nexports.NgModule = NgModule;\nexports.ViewEncapsulation = ViewEncapsulation;\nexports.Version = Version;\nexports.VERSION = VERSION;\nexports.forwardRef = forwardRef;\nexports.resolveForwardRef = resolveForwardRef;\nexports.Injector = Injector;\nexports.ReflectiveInjector = ReflectiveInjector;\nexports.ResolvedReflectiveFactory = ResolvedReflectiveFactory;\nexports.ReflectiveKey = ReflectiveKey;\nexports.InjectionToken = InjectionToken;\nexports.Inject = Inject;\nexports.Optional = Optional;\nexports.Injectable = Injectable;\nexports.Self = Self;\nexports.SkipSelf = SkipSelf;\nexports.Host = Host;\nexports.NgZone = NgZone;\nexports.RenderComponentType = RenderComponentType;\nexports.Renderer = Renderer;\nexports.Renderer2 = Renderer2;\nexports.RendererFactory2 = RendererFactory2;\nexports.RendererStyleFlags2 = RendererStyleFlags2;\nexports.RootRenderer = RootRenderer;\nexports.COMPILER_OPTIONS = COMPILER_OPTIONS;\nexports.Compiler = Compiler;\nexports.CompilerFactory = CompilerFactory;\nexports.ModuleWithComponentFactories = ModuleWithComponentFactories;\nexports.ComponentFactory = ComponentFactory;\nexports.ComponentRef = ComponentRef;\nexports.ComponentFactoryResolver = ComponentFactoryResolver;\nexports.ElementRef = ElementRef;\nexports.NgModuleFactory = NgModuleFactory;\nexports.NgModuleRef = NgModuleRef;\nexports.NgModuleFactoryLoader = NgModuleFactoryLoader;\nexports.getModuleFactory = getModuleFactory;\nexports.QueryList = QueryList;\nexports.SystemJsNgModuleLoader = SystemJsNgModuleLoader;\nexports.SystemJsNgModuleLoaderConfig = SystemJsNgModuleLoaderConfig;\nexports.TemplateRef = TemplateRef;\nexports.ViewContainerRef = ViewContainerRef;\nexports.EmbeddedViewRef = EmbeddedViewRef;\nexports.ViewRef = ViewRef;\nexports.ChangeDetectionStrategy = ChangeDetectionStrategy;\nexports.ChangeDetectorRef = ChangeDetectorRef;\nexports.DefaultIterableDiffer = DefaultIterableDiffer;\nexports.IterableDiffers = IterableDiffers;\nexports.KeyValueDiffers = KeyValueDiffers;\nexports.SimpleChange = SimpleChange;\nexports.WrappedValue = WrappedValue;\nexports.platformCore = platformCore;\nexports.ɵALLOW_MULTIPLE_PLATFORMS = ALLOW_MULTIPLE_PLATFORMS;\nexports.ɵAPP_ID_RANDOM_PROVIDER = APP_ID_RANDOM_PROVIDER;\nexports.ɵdevModeEqual = devModeEqual;\nexports.ɵisListLikeIterable = isListLikeIterable;\nexports.ɵChangeDetectorStatus = ChangeDetectorStatus;\nexports.ɵisDefaultChangeDetectionStrategy = isDefaultChangeDetectionStrategy;\nexports.ɵConsole = Console;\nexports.ɵComponentFactory = ComponentFactory;\nexports.ɵCodegenComponentFactoryResolver = CodegenComponentFactoryResolver;\nexports.ɵReflectionCapabilities = ReflectionCapabilities;\nexports.ɵRenderDebugInfo = RenderDebugInfo;\nexports.ɵglobal = _global;\nexports.ɵlooseIdentical = looseIdentical;\nexports.ɵstringify = stringify;\nexports.ɵmakeDecorator = makeDecorator;\nexports.ɵisObservable = isObservable;\nexports.ɵisPromise = isPromise;\nexports.ɵclearOverrides = clearOverrides;\nexports.ɵoverrideComponentView = overrideComponentView;\nexports.ɵoverrideProvider = overrideProvider;\nexports.ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR = NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR;\nexports.ɵdefineComponent = defineComponent;\nexports.ɵdetectChanges = detectChanges;\nexports.ɵrenderComponent = renderComponent;\nexports.ɵC = containerStart;\nexports.ɵD = directive;\nexports.ɵE = elementStart;\nexports.ɵT = text;\nexports.ɵV = viewStart;\nexports.ɵb = bind;\nexports.ɵb1 = bind1;\nexports.ɵc = containerEnd;\nexports.ɵcR = containerRefreshStart;\nexports.ɵcr = containerRefreshEnd;\nexports.ɵe = elementEnd;\nexports.ɵp = elementProperty;\nexports.ɵs = elementStyle;\nexports.ɵt = textBinding;\nexports.ɵv = viewEnd;\nexports.ɵregisterModuleFactory = registerModuleFactory;\nexports.ɵEMPTY_ARRAY = EMPTY_ARRAY;\nexports.ɵEMPTY_MAP = EMPTY_MAP;\nexports.ɵand = anchorDef;\nexports.ɵccf = createComponentFactory;\nexports.ɵcmf = createNgModuleFactory;\nexports.ɵcrt = createRendererType2;\nexports.ɵdid = directiveDef;\nexports.ɵeld = elementDef;\nexports.ɵelementEventFullName = elementEventFullName;\nexports.ɵgetComponentViewDefinitionFactory = getComponentViewDefinitionFactory;\nexports.ɵinlineInterpolate = inlineInterpolate;\nexports.ɵinterpolate = interpolate;\nexports.ɵmod = moduleDef;\nexports.ɵmpd = moduleProvideDef;\nexports.ɵncd = ngContentDef;\nexports.ɵnov = nodeValue;\nexports.ɵpid = pipeDef;\nexports.ɵprd = providerDef;\nexports.ɵpad = pureArrayDef;\nexports.ɵpod = pureObjectDef;\nexports.ɵppd = purePipeDef;\nexports.ɵqud = queryDef;\nexports.ɵted = textDef;\nexports.ɵunv = unwrapValue;\nexports.ɵvid = viewDef;\nexports.AUTO_STYLE = AUTO_STYLE;\nexports.trigger = trigger$$1;\nexports.animate = animate$$1;\nexports.group = group$$1;\nexports.sequence = sequence$$1;\nexports.style = style$$1;\nexports.state = state$$1;\nexports.keyframes = keyframes$$1;\nexports.transition = transition$$1;\nexports.ɵbf = animate$1;\nexports.ɵbg = group$1;\nexports.ɵbk = keyframes$1;\nexports.ɵbh = sequence$1;\nexports.ɵbj = state$1;\nexports.ɵbi = style$1;\nexports.ɵbl = transition$1;\nexports.ɵbe = trigger$1;\nexports.ɵn = _iterableDiffersFactory;\nexports.ɵo = _keyValueDiffersFactory;\nexports.ɵq = _localeFactory;\nexports.ɵi = _appIdRandomProviderFactory;\nexports.ɵj = defaultIterableDiffers;\nexports.ɵk = defaultKeyValueDiffers;\nexports.ɵl = DefaultIterableDifferFactory;\nexports.ɵm = DefaultKeyValueDifferFactory;\nexports.ɵf = ReflectiveInjector_;\nexports.ɵg = ReflectiveDependency;\nexports.ɵh = resolveReflectiveProviders;\nexports.ɵr = wtfEnabled;\nexports.ɵw = createScope;\nexports.ɵu = detectWTF;\nexports.ɵz = endTimeRange;\nexports.ɵx = leave;\nexports.ɵy = startTimeRange;\nexports.ɵbc = stringify$1;\nexports.ɵa = makeParamDecorator;\nexports.ɵd = makePropDecorator;\nexports.ɵba = _def;\nexports.ɵbb = DebugContext;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=core.umd.js.map\n"]}
|
|
1
|
+
{"version":3,"sources":["core.umd.js"],"names":["global","factory","exports","module","require","define","amd","ng","core","Rx","Observable","prototype","this","rxjs_Observable","rxjs_observable_merge","rxjs_operator_share","rxjs_Subject","rxjs_Subscription","__extends","d","b","__","constructor","extendStatics","Object","create","makeDecorator","name","props","parentClass","chainFn","DecoratorFactory","objOrType","metaCtor","call","annotationInstance","TypeDecorator","cls","hasOwnProperty","ANNOTATIONS","defineProperty","value","push","makeMetadataCtor","ngMetadataName","annotationCls","args","_i","arguments","length","values","apply","propName","makeParamDecorator","ParamDecoratorFactory","ParamDecorator","unusedKey","index","parameters","PARAMETERS","_a","bind","concat","annotation","makePropDecorator","PropDecoratorFactory","decoratorInstance","target","meta","PROP_METADATA","unshift","isDefaultChangeDetectionStrategy","changeDetectionStrategy","ChangeDetectionStrategy","Default","getSymbolIterator","_symbolIterator","Symbol_1","_global","iterator","keys","getOwnPropertyNames","Map","i","key","scheduleMicroTask","fn","Zone","promise","then","current","looseIdentical","a","isNaN","stringify","token","Array","map","join","overriddenName","res","toString","newLineIndex","indexOf","substring","forwardRef","forwardRefFn","__forward_ref__","resolveForwardRef","type","resolveProvider","provider","deps","computeDeps","IDENT","EMPTY","useNew","provide","USE_VALUE","useValue","useFactory","useExisting","useClass","staticError","multiProviderMixError","recursivelyProcessProviders","records","resolvedProvider","multi","multiProvider","get","MULTI_PROVIDER_FN","set","options","record","tryResolveToken","parent","notFoundValue","resolveToken","e","Error","path","NG_TEMP_TOKEN_PATH","CIRCULAR","NO_NEW_LINE","depRecords","depRecord","childRecord","undefined","NULL_INJECTOR","Injector","THROW_IF_NOT_FOUND","providerDeps","j","annotations","Optional","SkipSelf","Self","Inject","formatError","text","obj","source","charAt","substr","context","parts","JSON","replace","NEW_LINE","getDebugContext","error","ERROR_DEBUG_CONTEXT","getOriginalError","ERROR_ORIGINAL_ERROR","getErrorLogger","ERROR_LOGGER","defaultErrorLogger","console","wrappedError","message","originalError","msg","findFirstClosedCycle","constructResolvingPath","slice","reverse","k","injectionError","injector","constructResolvingMessage","errMsg","addKey","injectors","noProviderError","cyclicDependencyError","instantiationError","originalException","originalStack","first","invalidProviderError","noAnnotationError","typeOrFunc","params","signature","ii","parameter","outOfBoundsError","mixingMultiProvidersWithRegularProvidersError","provider1","provider2","isType","v","convertTsickleDecoratorIntoMetadata","decoratorInvocations","decoratorInvocation","decoratorType","annotationArgs","getParentCtor","ctor","parentProto","getPrototypeOf","resolveReflectiveFactory","factoryFn","resolvedDeps","reflector","_dependenciesFor","aliasInstance","ReflectiveDependency","fromKey","ReflectiveKey","constructDependencies","_EMPTY_LIST","ResolvedReflectiveFactory","resolveReflectiveProvider","ResolvedReflectiveProvider_","resolveReflectiveProviders","providers","normalized","_normalizeProviders","resolved","resolvedProviderMap","mergeResolvedReflectiveProviders","from","normalizedProvidersMap","existing","id","resolvedFactories","forEach","Type","dependencies","params_1","t","_extractToken","some","p","metadata","optional","isArray","_createDependency","visibility","paramMetadata","InjectionToken","_mapProviders","_providers","getProviderAtIndex","isPromise","isObservable","subscribe","_appIdRandomProviderFactory","_randomChar","String","fromCharCode","Math","floor","random","_throwError","noComponentFactoryError","component","ERROR_COMPONENT","detectWTF","wtf","trace","events","createScope","flags","leave","scope","returnValue","leaveScope","startTimeRange","rangeType","action","beginTimeRange","endTimeRange","range","noopScope","arg0","arg1","noop","checkStable","zone","_nesting","hasPendingMicrotasks","isStable","onMicrotaskEmpty","emit","runOutsideAngular","onStable","forkInnerZoneWithAngularBehavior","_inner","fork","properties","isAngularZone","onInvokeTask","delegate","task","applyThis","applyArgs","onEnter","invokeTask","onLeave","onInvoke","callback","invoke","onHasTask","hasTaskState","hasTask","change","microTask","hasPendingMacrotasks","macroTask","onHandleError","handleError","onError","onUnstable","setTestabilityGetter","getter","_testabilityGetter","enableProdMode","_runModeLocked","_devMode","isDevMode","createPlatform","_platform","destroyed","ALLOW_MULTIPLE_PLATFORMS","PlatformRef","inits","PLATFORM_INITIALIZER","init","createPlatformFactory","parentPlatformFactory","desc","marker","extraProviders","platform","getPlatform","injectedProviders","assertPlatform","requiredToken","destroyPlatform","destroy","getNgZone","ngZoneOption","NoopNgZone","NgZone","enableLongStackTrace","_callAndReportToErrorHandler","errorHandler","ngZone","result","catch","optionsReducer","dst","objs","reduce","__assign","remove","list","el","splice","registerModuleFactory","moduleFactories","moduleType","getModuleFactory","flatten","flat","item","flatItem","checkNotEmpty","modulePath","exportName","asNativeElements","debugEls","nativeElement","_queryElementChildren","element","predicate","matches","childNodes","node","DebugElement","_queryNodeChildren","parentNode","getDebugNode","nativeNode","_nativeNodeToDebugNode","indexDebugNode","removeDebugNodeFromIndex","delete","devModeEqual","isListLikeIterableA","isListLikeIterable","isListLikeIterableB","areIterablesEqual","isAObject","isBObject","isJsObject","comparator","iterator1","iterator2","item1","next","item2","done","iterateListLike","o","getPreviousIndex","addRemoveOffset","moveOffsets","previousIndex","moveOffset","getTypeNameForDebugging","_iterableDiffersFactory","defaultIterableDiffers","_keyValueDiffersFactory","defaultKeyValueDiffers","_localeFactory","locale","shiftInitState","view","priorInitState","newInitState","state","initState","initIndex","shouldCallLifecycleInitHook","asTextData","nodes","asElementData","asProviderData","asPureExpressionData","asQueryList","expressionChangedAfterItHasBeenCheckedError","oldValue","currValue","isFirstCheck","viewDebugError","viewWrappedDebugError","err","_addDebugContext","logError","isViewDebugError","viewDestroyedError","tokenKey","_tokenKeyCache","size","unwrapValue","nodeIdx","bindingIdx","WrappedValue","isWrapped","unwrap","globalBindingIdx","def","bindingIndex","oldValues","createRendererType2","UNDEFINED_RENDERER_TYPE_ID","styles","encapsulation","data","resolveRendererType2","isFilled","ViewEncapsulation","None","_renderCompCount","EMPTY_RENDERER_TYPE_ID","checkBinding","checkAndUpdateBinding","checkBindingNoChanges","bindingName","bindings","Services","createDebugContext","nodeIndex","markParentViewsForCheck","currView","viewContainerParent","markParentViewsForCheckProjectedViews","endView","dispatchEvent","eventName","event","componentView","handleEvent","root","declaredViewContainer","viewParentEl","renderNode","renderElement","renderText","elementEventFullName","isComponentView","isEmbeddedView","filterQueryId","queryId","splitMatchedQueriesDsl","matchedQueriesDsl","matchedQueries","matchedQueryIds","references","valueType","splitDepsDsl","sourceName","SOURCE","configurable","getParentRenderElement","renderHost","renderParent","componentRendererType","Native","resolveDefinition","DEFINITION_CACHE","NOOP","rootRenderNodes","renderNodes","visitRootRenderNodes","nextSibling","renderer","visitSiblingRenderNodes","startIndex","endIndex","nodeDef","visitRenderNode","childCount","visitProjectedRenderNodes","ngContentIndex","compView","hostView","hostElDef","projectedNodes","projectableNodes","execRenderNodeAction","rn","bindingFlags","embeddedViews","_embeddedViews","appendChild","insertBefore","removeChild","splitNamespace","match","NS_PREFIX_RE","calcBindingFlags","interpolate","valueCount","constAndInterp","_toStringWithNull","inlineInterpolate","c0","a1","c1","a2","c2","a3","c3","a4","c4","a5","c5","a6","c6","a7","c7","a8","c8","a9","c9","anchorDef","templateFactory","outputIndex","checkIndex","childFlags","directChildFlags","childMatchedQueries","outputs","ns","attrs","template","componentProvider","publicProviders","allProviders","query","ngContent","elementDef","namespaceAndName","fixedAttrs","_b","bindingDefs","_c","namespaceAndName_1","suffixOrSecurityContext","_d","ns_1","name_1","securityContext","suffix","nonMinifiedName","outputDefs","_e","createElement","elDef","rootSelectorOrNode","selectorOrNode","createComment","parentEl","selectRootElement","name_2","setAttribute","listenToElementOutputs","output","handleEventClosure","renderEventHandlerClosure","listenTarget","listenerView","disposable","listen","checkAndUpdateElementInline","v0","v1","v2","v3","v4","v5","v6","v7","v8","v9","bindLen","changed","checkAndUpdateElementValue","checkAndUpdateElementDynamic","binding","elData","renderNode$$1","setElementAttribute","setElementClass","setElementStyle","setElementProperty","renderValue","sanitizer","sanitize","removeAttribute","addClass","removeClass","SecurityContext","STYLE","unit","setStyle","removeStyle","setProperty","moduleProvideDef","moduleDef","providersByKey","initNgModule","_def","provDef","_createProviderInstance$1","resolveNgModuleDep","depDef","_parent","tokenKey$$1","InjectorRefTokenKey$1","NgModuleRefTokenKey","providerDef","providerInstance","UNDEFINED_VALUE","ngModule","injectable","_createClass","_callFactory","len","depValues","callNgModuleLifecycle","lifecycles","instance","ngOnDestroy","attachEmbeddedView","parentView","elementData","viewIndex","addToArray","attachProjectedView","dirtyParentQueries","renderAttachEmbeddedView","vcElementData","dvcElementData","projectedViews","_projectedViews","markNodeAsProjectedTemplate","viewDef","nodeFlags","parentNodeDef","detachEmbeddedView","removeFromArray","renderDetachView","detachProjectedView","moveEmbeddedView","oldViewIndex","newViewIndex","prevView","prevRenderNode","arr","pop","createComponentFactory","selector","componentType","viewDefFactory","inputs","ngContentSelectors","ComponentFactory_","getComponentViewDefinitionFactory","componentFactory","createViewContainerData","ViewContainerRef_","createChangeDetectorRef","ViewRef_","createTemplateData","TemplateRef_","createInjector","Injector_","nodeValue","createRendererV1","RendererAdapter","createNgModuleRef","bootstrapComponents","NgModuleRef_","directiveDef","prop","pipeDef","depDefs","createProviderInstance","_createProviderInstance","createPipeInstance","createClass","createDirectiveInstance","allowPrivateServices","subscription","eventHandlerClosure","unsubscribe","checkAndUpdateDirectiveInline","providerData","directive","changes","updateProp","ngOnChanges","ngOnInit","ngDoCheck","checkAndUpdateDirectiveDynamic","callFactory","resolveDep","startView","ChangeDetectorRefTokenKey","RendererV1TokenKey","findCompView","Renderer2TokenKey","ElementRefTokenKey","ElementRef","ViewContainerRefTokenKey","viewContainer","TemplateRefTokenKey","InjectorRefTokenKey","providerDef_1","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","SimpleChange","callLifecycleHooksChildrenFirst","parent_1","callProviderLifecycles","callElementProvidersLifecycles","setCurrentNode","ngAfterContentInit","ngAfterContentChecked","ngAfterViewInit","ngAfterViewChecked","queryDef","bindingType","filterId","createQuery","QueryList","queryIds","nodeMatchedQueries","tplDef","end","setDirty","checkAndUpdateQuery","queryList","dirty","directiveInstance","newValues","calcQueryValues","reset","notify","boundValue","notifyOnChanges","getQueryValue","embeddedView","dvc","projectedView","queryValueType","ngContentDef","appendNgContent","purePipeDef","argCount","_pureExpressionDef","pureArrayDef","pureObjectDef","propToIndex","nbKeys","propertyNames","createPureExpression","checkAndUpdatePureExpressionInline","pipe","transform","checkAndUpdatePureExpressionDynamic","textDef","staticText","prefix","createText","checkAndUpdateTextInline","_addInterpolationPart","setValue","checkAndUpdateTextDynamic","updateDirectives","updateRenderer","viewBindingCount","viewDisposableCount","viewNodeFlags","viewRootNodeFlags","viewMatchedQueries","currentParent","currentRenderParent","currentElementHasPublicProviders","currentElementHasPrivateProviders","lastRenderRootNode","validateNode","isPrivateService","isComponent","isNgContainer","newParent","rootNodeFlags","bindingCount","outputCount","nodeCount","parentEnd","createEmbeddedView","anchorDef$$1","createView","initView","createViewNodes","createRootView","createComponentView","hostElement","compRenderer","rendererType","rendererFactory","createRenderer","disposables","hostDef","nodeData","compViewDef","execComponentViewsAction","ViewAction","CreateViewNodes","execQueriesAction","checkNoChangesView","markProjectedViewsForCheck","execEmbeddedViewsAction","CheckNoChanges","checkAndUpdateView","CheckAndUpdate","callInit","checkAndUpdateNode","argStyle","checkAndUpdateNodeInline","checkAndUpdateNodeDynamic","i_1","checkNoChangesNode","checkNoChangesNodeInline","checkNoChangesNodeDynamic","checkNoChangesQuery","destroyView","Destroy","destroyNode","destroyViewNodes","callViewAction","viewState","execProjectedViewsAction","CheckNoChangesProjectedViews","CheckAndUpdateProjectedViews","queryFlags","staticDynamicQueryFlag","checkType","initServicesIfNeeded","initialized","services","createDebugServices","createProdServices","overrideProvider","overrideComponentView","clearOverrides","createProdRootView","DebugContext_","prodCheckAndUpdateNode","prodCheckNoChangesNode","debugSetCurrentNode","debugCreateRootView","debugCreateEmbeddedView","debugCreateComponentView","debugCreateNgModuleRef","debugOverrideProvider","debugOverrideComponentView","debugClearOverrides","debugCheckAndUpdateView","debugCheckNoChangesView","debugDestroyView","debugHandleEvent","debugUpdateDirectives","debugUpdateRenderer","elInjector","createRootData","RendererFactory2","DebugRendererFactory2","defWithOverride","applyProviderOverridesToView","callWithDebugContext","DebugAction","Sanitizer","ErrorHandler","viewDef$$1","viewDefOverrides","parentInjector","applyProviderOverridesToNgModule","override","providerOverrides","comp","compFactory","hostViewDef","clear","elementIndicesWithOverwrittenProviders","elIndicesWithOverwrittenProviders","lastElementDef","has","elIndex","hasOverrides","hasDeprecatedOverrides","deprecatedBehavior","detectChanges","checkNoChanges","_currentView","_currentNodeIndex","debugCheckDirectivesFn","debugCheckAndUpdateNode","debugCheckNoChangesNode","nextDirectiveWithBinding","_currentAction","debugCheckRenderNodeFn","nextRenderNodeWithBinding","givenValues","bindingValues","normalizeDebugBindingName","normalizeDebugBindingValue","attr","camelCaseToDashCase","input","CAMEL_CASE_REGEXP","m","toLowerCase","getRenderNodeIndex","renderNodeIndex","findHostElement","collectReferences","refName","self","oldAction","oldView","oldNodeIndex","getCurrentDebugContext","createNgModuleFactory","ngModuleType","defFactory","NgModuleFactory_","stringifyValueForError","assertEqual","actual","expected","serializer","assertThrow","assertLessThan","assertNotNull","assertNotEqual","operator","assertNodeType","typeSerializer","findNativeParent","containerNode","container","ngDevMode","native","viewOrElement","findBeforeNode","views","addRemoveViewFromContainer","rootNode","insertMode","beforeNode","child","nextNode","isFnRenderer","childContainerData","destroyViewTree","rootView","viewOrContainerState","cleanUpView","getParentState","insertView","newView","setViewNext","nextIndex","removeView","removeIndex","viewNode","cleanup","removeEventListener","currentView","insertChild","sibling","nativeSibling","isDifferent","stringify$1","enterView","newViewState","host","oldViewState","bindingStartIndex","ngStaticData","creationMode","viewHookStartIndex","previousOrParentNode","isParent","leaveView","executeViewHooks","createViewState","viewId","tail","createLNode","currentQuery","isState","nodeInjector","staticData","resetApplicationState","renderComponentOrTemplate","componentOrContext","begin","ngComponentDef","r","elementStart","nameOrComponentDef","localName","node_1","isHostElement","tag","ngStaticData_1","getTemplateStatic","addToViewTree","assertDataInRange","createNodeStatic","setUpAttributes","isProceduralRenderer","createError","locateHostElement","elementOrSelector","defaultRenderer","rNode","elementEnd","assertHasParent","addNode","elementProperty","NO_CHANGE","generatePropertyAliases","dataValue","inputData","setInputsForProperty","tagName","containerStatic","localNames","initialInputs","isInputData","start","propertyAliasMap","publicName","internalName","staticDirData","hasProperty","elementStyle","styleName","lElement","RendererStyleFlags3","DashCase","style","removeProperty","textNode","textBinding","existingNode","textContent","assertPreviousIsParent","NG_HOST_SYMBOL","enumerable","nodeStaticData","diPublic_1","diPublic","setInputsFromAttrs","directiveIndex","initialInputData","generateInitialInputs","attrName","minifiedInputName","writeIndex","containerStart","comment","containerEnd","containerRefreshStart","containerRefreshEnd","viewStart","viewBlockId","containerState","existingView","viewUpdateMode","initViewStaticData","viewEnd","previousView","different","bind1","renderComponent","opts","domRendererFactory3","componentDef","hostNode","n","features","feature","isDirty","defineComponent","componentDefinition","refresh","componentRefresh","h","hostBindings","noop$1","invertObject","methods","EMPTY$1","newObj","minifiedKey","trigger$1","definitions","animate$1","timings","group$1","steps","sequence$1","style$1","tokens","offset","state$1","keyframes$1","transition$1","stateChangeExpr","expr","animation","trigger$$1","animate$$1","group$$1","sequence$$1","style$$1","state$$1","keyframes$$1","transition$$1","setPrototypeOf","__proto__","assign","s","_desc","ANALYZE_FOR_ENTRY_COMPONENTS","Attribute","attributeName","Query","ContentChildren","isViewQuery","descendants","ContentChild","ViewChildren","ViewChild","OnPush","ChangeDetectorStatus","CheckOnce","Checked","CheckAlways","Detached","Errored","Destroyed","Directive","dir","Component","c","changeDetection","Pipe","pure","Input","bindingPropertyName","Output","HostBinding","hostPropertyName","HostListener","CUSTOM_ELEMENTS_SCHEMA","NO_ERRORS_SCHEMA","NgModule","Emulated","Version","full","major","split","minor","patch","VERSION","Injectable","Host","__window","window","__self","WorkerGlobalScope","__global","Promise","resolve","_THROW_IF_NOT_FOUND","_NullInjector","StaticInjector","NULL","GET_PROPERTY_NAME","ɵ2","objWithPropertyToExtract","_records","tokenPath","_console","_findOriginalError","_findContext","errorLogger","displayName","_globalKeyRegistry","numberOfKeys","KeyRegistry","_allKeys","newKey","Function","DELEGATE_CTOR","ReflectionCapabilities","reflect","_reflect","isReflectionEnabled","_zipTypesAndAnnotations","paramTypes","paramAnnotations","_ownParameters","parentCtor","exec","tsickleCtorParams","ctorParameters","paramTypes_1","ctorParam","paramAnnotations_1","decorators","getOwnMetadata","fill","_ownAnnotations","ownAnnotations","_ownPropMetadata","propMetadata","propDecorators","propDecorators_1","propMetadata_1","parentPropMetadata_1","ownPropMetadata","hasLifecycleHook","lcProperty","guards","setter","method","functionBody","importUri","resourceUri","resolveIdentifier","moduleUrl","members","runtime","resolveEnum","enumIdentifier","Reflector","reflectionCapabilities","updateCapabilities","caps","identifier","resolvedFactory","UNDEFINED","ReflectiveInjector","resolveAndCreate","ResolvedReflectiveProviders","fromResolvedProviders","ReflectiveInjector_","_constructionCounter","keyIds","_getByKey","resolveAndCreateChild","createChildFromResolved","inj","resolveAndInstantiate","instantiateResolved","_instantiateProvider","_new","_getMaxNumberOfObjects","_instantiate","ResolvedReflectiveFactory$$1","_this","dep","_getByReflectiveDependency","stack","INJECTOR_KEY","_getByKeySelf","_getByKeyDefault","_getObjByKeyId","keyId","_throwOrNull","inj_","APP_INITIALIZER","ApplicationInitStatus","appInits","donePromise","rej","reject","runInitializers","asyncInitPromises","complete","initResult","all","APP_ID","APP_ID_RANDOM_PROVIDER","PLATFORM_ID","APP_BOOTSTRAP_LISTENER","PACKAGE_ROOT_URL","Console","log","warn","ModuleWithComponentFactories","ngModuleFactory","componentFactories","Compiler","compileModuleSync","compileModuleAsync","compileModuleAndAllComponentsSync","compileModuleAndAllComponentsAsync","clearCache","clearCacheFor","COMPILER_OPTIONS","CompilerFactory","ComponentRef","ComponentFactory","_NullComponentFactoryResolver","resolveComponentFactory","ComponentFactoryResolver","CodegenComponentFactoryResolver","factories","_ngModule","_factories","ComponentFactoryBoundToModule","_super","NgModuleRef","NgModuleFactory","wtfEnabled","wtfCreateScope","wtfLeave","wtfStartTimeRange","wtfEndTimeRange","EventEmitter","isAsync","__isAsync","generatorOrNext","schedulerFn","errorFn","completeFn","setTimeout","sink","Subscription","add","Subject","assertZonePatched","_outer","isInAngularZone","assertInAngularZone","assertNotInAngularZone","run","runTask","scheduleEventTask","EMPTY_PAYLOAD","cancelTask","runGuarded","Testability","_ngZone","_pendingCount","_isZoneStable","_didWork","_callbacks","_watchAngularEvents","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","whenStable","getPendingRequestCount","findProviders","using","exactMatch","TestabilityRegistry","_applications","addToWindow","registerApplication","testability","unregisterApplication","unregisterAllApplications","getTestability","elem","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","_NoopGetTestability","registry","NgProbeToken","_injector","_modules","_destroyListeners","_destroyed","bootstrapModuleFactory","moduleFactory","ngZoneInjector","moduleRef","exceptionHandler","onDestroy","initStatus","_moduleDoBootstrap","bootstrapModule","compilerOptions","compilerFactory","createCompiler","appRef","ApplicationRef","_bootstrapComponents","f","bootstrap","ngDoBootstrap","listener","_zone","_exceptionHandler","_componentFactoryResolver","_initStatus","_bootstrapListeners","_views","_runningTick","_enforceNoNewChanges","_stable","componentTypes","components","tick","isCurrentlyStable","observer","stableSub","unstableSub","merge","share","componentOrFactory","compRef","_unloadComponent","location","_loadComponent","_tickScope","attachView","viewRef","attachToAppRef","detachView","detachFromAppRef","componentRef","RenderComponentType","templateUrl","slotCount","animations","RenderDebugInfo","Renderer","RootRenderer","RendererStyleFlags2","Important","Renderer2","NgModuleFactoryLoader","_results","filter","find","toArray","last","SystemJsNgModuleLoaderConfig","DEFAULT_CONFIG","factoryPathPrefix","factoryPathSuffix","SystemJsNgModuleLoader","_compiler","config","_config","load","loadFactory","loadAndCompile","System","import","factoryClassSuffix","TemplateRef","ViewContainerRef","ChangeDetectorRef","ViewRef","EmbeddedViewRef","EventListener","DebugNode","_debugContext","addChild","listeners","providerTokens","attributes","classes","childIndex","insertChildrenAfter","newChildren","siblingIndex","refChild","newChild","refIndex","queryAll","queryAllNodes","triggerEventHandler","eventObj","wrapped","wrap","previousValue","currentValue","firstChange","isFirstChange","DefaultIterableDifferFactory","supports","trackByFn","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","_trackByFn","forEachItem","_next","forEachOperation","nextIt","nextRemove","adjPreviousIndex","currentIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","forEachAddedItem","_nextAdded","forEachMovedItem","_nextMoved","forEachRemovedItem","forEachIdentityChange","_nextIdentityChange","diff","collection","check","_reset","itemTrackBy","mayBeDirty","index_1","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","_truncate","nextRecord","previousRecord","_prev","_remove","_moveAfter","_reinsertAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","_addToRemovals","_unlink","prevRecord","prev","_prevRemoved","_insertAfter","_DuplicateMap","put","toIndex","_prevDup","_nextDup","_DuplicateItemRecordList","_head","_tail","atOrAfterIndex","duplicates","recordList","DefaultKeyValueDifferFactory","DefaultKeyValueDiffer","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","forEachChangedItem","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","before","record_1","KeyValueChangeRecord_","_addToAdditions","newValue","_addToChanges","IterableDiffers","copied","extend","iterable","KeyValueDiffers","kv","keyValDiff","iterableDiff","_CORE_PLATFORM_PROVIDERS","platformCore","LOCALE_ID","TRANSLATIONS","TRANSLATIONS_FORMAT","MissingTranslationStrategy","Warning","Ignore","ApplicationModule","NONE","HTML","SCRIPT","URL","RESOURCE_URL","DebugContext","WeakMap","EMPTY_ARRAY","EMPTY_MAP","EMPTY_CONTEXT","_inputs","_outputs","inputsArr","templateName","outputsArr","componentNodeIndex","ComponentRef_","_view","_viewRef","_component","_elDef","changeDetectorRef","_data","ref","attachToViewContainerRef","templateRef","insert","createComponent","ngModuleRef","contextInjector","viewRef_","viewData","move","detach","_viewContainerRef","_appRef","markForCheck","fs","reattach","vcRef","_parentView","createViewRoot","createTemplateAnchor","parentElement","projectNodes","attachViewAfter","viewRootNodes","viewAllNodes","listenGlobal","propertyName","propertyValue","attributeValue","setBindingDebugInfo","className","isAdd","styleValue","invokeElementMethod","methodName","setText","animate","_moduleType","elView","elOrCompView","childDef","logViewDef","logNodeIndex","currRenderNodeIndex","nodeLogger","renderData","DebugRenderer2","whenRenderingDone","namespace","debugCtx","debugEl","debugChildEl","debugRefEl","oldChild","fullName","_ngModuleDefFactory","QueryList_","_valuesTree","_values","_refresh","document","elementIndex","ɵALLOW_MULTIPLE_PLATFORMS","ɵAPP_ID_RANDOM_PROVIDER","ɵdevModeEqual","ɵisListLikeIterable","ɵChangeDetectorStatus","ɵisDefaultChangeDetectionStrategy","ɵConsole","ɵComponentFactory","ɵCodegenComponentFactoryResolver","ɵReflectionCapabilities","ɵRenderDebugInfo","ɵglobal","ɵlooseIdentical","ɵstringify","ɵmakeDecorator","ɵisObservable","ɵisPromise","ɵclearOverrides","ɵoverrideComponentView","ɵoverrideProvider","ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","ɵdefineComponent","ɵdetectChanges","ɵrenderComponent","ɵC","ɵD","ɵE","ɵT","ɵV","ɵb","ɵb1","ɵc","ɵcR","ɵcr","ɵe","ɵp","ɵs","ɵt","ɵv","ɵregisterModuleFactory","ɵEMPTY_ARRAY","ɵEMPTY_MAP","ɵand","ɵccf","ɵcmf","ɵcrt","ɵdid","ɵeld","ɵelementEventFullName","ɵgetComponentViewDefinitionFactory","ɵinlineInterpolate","ɵinterpolate","ɵmod","ɵmpd","ɵncd","ɵnov","ɵpid","ɵprd","ɵpad","ɵpod","ɵppd","ɵqud","ɵted","ɵunv","ɵvid","AUTO_STYLE","trigger","group","sequence","keyframes","transition","ɵbf","ɵbg","ɵbk","ɵbh","ɵbj","ɵbi","ɵbl","ɵbe","ɵn","ɵo","ɵq","ɵi","ɵj","ɵk","ɵl","ɵm","ɵf","ɵg","ɵh","ɵr","ɵw","ɵu","ɵz","ɵx","ɵy","ɵbc","ɵa","ɵd","ɵba","ɵbb"],"mappings":"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","file":"core.umd.min.js","sourcesContent":["/**\n * @license Angular v5.2.5\n * (c) 2010-2018 Google, Inc. https://angular.io/\n * License: MIT\n */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('rxjs/Observable'), require('rxjs/observable/merge'), require('rxjs/operator/share'), require('rxjs/Subject'), require('rxjs/Subscription')) :\n\ttypeof define === 'function' && define.amd ? define('@angular/core', ['exports', 'rxjs/Observable', 'rxjs/observable/merge', 'rxjs/operator/share', 'rxjs/Subject', 'rxjs/Subscription'], factory) :\n\t(factory((global.ng = global.ng || {}, global.ng.core = {}),global.Rx,global.Rx.Observable,global.Rx.Observable.prototype,global.Rx,global.Rx));\n}(this, (function (exports,rxjs_Observable,rxjs_observable_merge,rxjs_operator_share,rxjs_Subject,rxjs_Subscription) { 'use strict';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n};\n\n/**\n * @license Angular v5.2.5\n * (c) 2010-2018 Google, Inc. https://angular.io/\n * License: MIT\n */\n/**\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 * Creates a token that can be used in a DI Provider.\n *\n * Use an `InjectionToken` whenever the type you are injecting is not reified (does not have a\n * runtime representation) such as when injecting an interface, callable type, array or\n * parametrized type.\n *\n * `InjectionToken` is parameterized on `T` which is the type of object which will be returned by\n * the `Injector`. This provides additional level of type safety.\n *\n * ```\n * interface MyInterface {...}\n * var myInterface = injector.get(new InjectionToken<MyInterface>('SomeToken'));\n * // myInterface is inferred to be MyInterface.\n * ```\n *\n * ### Example\n *\n * {\\@example core/di/ts/injector_spec.ts region='InjectionToken'}\n *\n * \\@stable\n */\nvar InjectionToken = /** @class */ (function () {\n function InjectionToken(_desc) {\n this._desc = _desc;\n /**\n * \\@internal\n */\n this.ngMetadataName = 'InjectionToken';\n }\n /**\n * @return {?}\n */\n InjectionToken.prototype.toString = /**\n * @return {?}\n */\n function () { return \"InjectionToken \" + this._desc; };\n return InjectionToken;\n}());\n\n/**\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 * An interface implemented by all Angular type decorators, which allows them to be used as ES7\n * decorators as well as\n * Angular DSL syntax.\n *\n * ES7 syntax:\n *\n * ```\n * \\@ng.Component({...})\n * class MyClass {...}\n * ```\n * \\@stable\n * @record\n */\n\nvar ANNOTATIONS = '__annotations__';\nvar PARAMETERS = '__paramaters__';\nvar PROP_METADATA = '__prop__metadata__';\n/**\n * @suppress {globalThis}\n * @param {?} name\n * @param {?=} props\n * @param {?=} parentClass\n * @param {?=} chainFn\n * @return {?}\n */\nfunction makeDecorator(name, props, parentClass, chainFn) {\n var /** @type {?} */ metaCtor = makeMetadataCtor(props);\n /**\n * @param {?} objOrType\n * @return {?}\n */\n function DecoratorFactory(objOrType) {\n if (this instanceof DecoratorFactory) {\n metaCtor.call(this, objOrType);\n return this;\n }\n var /** @type {?} */ annotationInstance = new (/** @type {?} */ (DecoratorFactory))(objOrType);\n var /** @type {?} */ TypeDecorator = /** @type {?} */ (function TypeDecorator(cls) {\n // Use of Object.defineProperty is important since it creates non-enumerable property which\n // prevents the property is copied during subclassing.\n var /** @type {?} */ annotations = cls.hasOwnProperty(ANNOTATIONS) ?\n (/** @type {?} */ (cls))[ANNOTATIONS] :\n Object.defineProperty(cls, ANNOTATIONS, { value: [] })[ANNOTATIONS];\n annotations.push(annotationInstance);\n return cls;\n });\n if (chainFn)\n chainFn(TypeDecorator);\n return TypeDecorator;\n }\n if (parentClass) {\n DecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n DecoratorFactory.prototype.ngMetadataName = name;\n (/** @type {?} */ (DecoratorFactory)).annotationCls = DecoratorFactory;\n return /** @type {?} */ (DecoratorFactory);\n}\n/**\n * @param {?=} props\n * @return {?}\n */\nfunction makeMetadataCtor(props) {\n return function ctor() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (props) {\n var /** @type {?} */ values = props.apply(void 0, args);\n for (var /** @type {?} */ propName in values) {\n this[propName] = values[propName];\n }\n }\n };\n}\n/**\n * @param {?} name\n * @param {?=} props\n * @param {?=} parentClass\n * @return {?}\n */\nfunction makeParamDecorator(name, props, parentClass) {\n var /** @type {?} */ metaCtor = makeMetadataCtor(props);\n /**\n * @param {...?} args\n * @return {?}\n */\n function ParamDecoratorFactory() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this instanceof ParamDecoratorFactory) {\n metaCtor.apply(this, args);\n return this;\n }\n var /** @type {?} */ annotationInstance = new ((_a = (/** @type {?} */ (ParamDecoratorFactory))).bind.apply(_a, [void 0].concat(args)))();\n (/** @type {?} */ (ParamDecorator)).annotation = annotationInstance;\n return ParamDecorator;\n /**\n * @param {?} cls\n * @param {?} unusedKey\n * @param {?} index\n * @return {?}\n */\n function ParamDecorator(cls, unusedKey, index) {\n // Use of Object.defineProperty is important since it creates non-enumerable property which\n // prevents the property is copied during subclassing.\n var /** @type {?} */ parameters = cls.hasOwnProperty(PARAMETERS) ?\n (/** @type {?} */ (cls))[PARAMETERS] :\n Object.defineProperty(cls, PARAMETERS, { value: [] })[PARAMETERS];\n // there might be gaps if some in between parameters do not have annotations.\n // we pad with nulls.\n while (parameters.length <= index) {\n parameters.push(null);\n }\n (parameters[index] = parameters[index] || []).push(annotationInstance);\n return cls;\n }\n var _a;\n }\n if (parentClass) {\n ParamDecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n ParamDecoratorFactory.prototype.ngMetadataName = name;\n (/** @type {?} */ (ParamDecoratorFactory)).annotationCls = ParamDecoratorFactory;\n return ParamDecoratorFactory;\n}\n/**\n * @param {?} name\n * @param {?=} props\n * @param {?=} parentClass\n * @return {?}\n */\nfunction makePropDecorator(name, props, parentClass) {\n var /** @type {?} */ metaCtor = makeMetadataCtor(props);\n /**\n * @param {...?} args\n * @return {?}\n */\n function PropDecoratorFactory() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this instanceof PropDecoratorFactory) {\n metaCtor.apply(this, args);\n return this;\n }\n var /** @type {?} */ decoratorInstance = new ((_a = (/** @type {?} */ (PropDecoratorFactory))).bind.apply(_a, [void 0].concat(args)))();\n return function PropDecorator(target, name) {\n var /** @type {?} */ constructor = target.constructor;\n // Use of Object.defineProperty is important since it creates non-enumerable property which\n // prevents the property is copied during subclassing.\n var /** @type {?} */ meta = constructor.hasOwnProperty(PROP_METADATA) ?\n (/** @type {?} */ (constructor))[PROP_METADATA] :\n Object.defineProperty(constructor, PROP_METADATA, { value: {} })[PROP_METADATA];\n meta[name] = meta.hasOwnProperty(name) && meta[name] || [];\n meta[name].unshift(decoratorInstance);\n };\n var _a;\n }\n if (parentClass) {\n PropDecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n PropDecoratorFactory.prototype.ngMetadataName = name;\n (/** @type {?} */ (PropDecoratorFactory)).annotationCls = PropDecoratorFactory;\n return PropDecoratorFactory;\n}\n\n/**\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 * This token can be used to create a virtual provider that will populate the\n * `entryComponents` fields of components and ng modules based on its `useValue`.\n * All components that are referenced in the `useValue` value (either directly\n * or in a nested array or map) will be added to the `entryComponents` property.\n *\n * ### Example\n * The following example shows how the router can populate the `entryComponents`\n * field of an NgModule based on the router configuration which refers\n * to components.\n *\n * ```typescript\n * // helper function inside the router\n * function provideRoutes(routes) {\n * return [\n * {provide: ROUTES, useValue: routes},\n * {provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: routes, multi: true}\n * ];\n * }\n *\n * // user code\n * let routes = [\n * {path: '/root', component: RootComp},\n * {path: '/teams', component: TeamsComp}\n * ];\n *\n * \\@NgModule({\n * providers: [provideRoutes(routes)]\n * })\n * class ModuleWithRoutes {}\n * ```\n *\n * \\@experimental\n */\nvar ANALYZE_FOR_ENTRY_COMPONENTS = new InjectionToken('AnalyzeForEntryComponents');\n/**\n * Type of the Attribute decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Attribute decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Attribute = makeParamDecorator('Attribute', function (attributeName) { return ({ attributeName: attributeName }); });\n/**\n * Base class for query metadata.\n *\n * See {\\@link ContentChildren}, {\\@link ContentChild}, {\\@link ViewChildren}, {\\@link ViewChild} for\n * more information.\n *\n * \\@stable\n * @abstract\n */\nvar Query = /** @class */ (function () {\n function Query() {\n }\n return Query;\n}());\n/**\n * Type of the ContentChildren decorator / constructor function.\n *\n * See {\\@link ContentChildren}.\n *\n * \\@stable\n * @record\n */\n\n/**\n * ContentChildren decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar ContentChildren = makePropDecorator('ContentChildren', function (selector, data) {\n if (data === void 0) { data = {}; }\n return (__assign({ selector: selector, first: false, isViewQuery: false, descendants: false }, data));\n}, Query);\n/**\n * Type of the ContentChild decorator / constructor function.\n *\n *\n * \\@stable\n * @record\n */\n\n/**\n * ContentChild decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar ContentChild = makePropDecorator('ContentChild', function (selector, data) {\n if (data === void 0) { data = {}; }\n return (__assign({ selector: selector, first: true, isViewQuery: false, descendants: true }, data));\n}, Query);\n/**\n * Type of the ViewChildren decorator / constructor function.\n *\n * See {\\@link ViewChildren}.\n *\n * \\@stable\n * @record\n */\n\n/**\n * ViewChildren decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar ViewChildren = makePropDecorator('ViewChildren', function (selector, data) {\n if (data === void 0) { data = {}; }\n return (__assign({ selector: selector, first: false, isViewQuery: true, descendants: true }, data));\n}, Query);\n/**\n * Type of the ViewChild decorator / constructor function.\n *\n * See {\\@link ViewChild}\n *\n * \\@stable\n * @record\n */\n\n/**\n * ViewChild decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar ViewChild = makePropDecorator('ViewChild', function (selector, data) {\n return (__assign({ selector: selector, first: true, isViewQuery: true, descendants: true }, data));\n}, Query);\n\n/**\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/** @enum {number} */\nvar ChangeDetectionStrategy = {\n /**\n * `OnPush` means that the change detector's mode will be initially set to `CheckOnce`.\n */\n OnPush: 0,\n /**\n * `Default` means that the change detector's mode will be initially set to `CheckAlways`.\n */\n Default: 1,\n};\nChangeDetectionStrategy[ChangeDetectionStrategy.OnPush] = \"OnPush\";\nChangeDetectionStrategy[ChangeDetectionStrategy.Default] = \"Default\";\n/** @enum {number} */\nvar ChangeDetectorStatus = {\n /**\n * `CheckOnce` means that after calling detectChanges the mode of the change detector\n * will become `Checked`.\n */\n CheckOnce: 0,\n /**\n * `Checked` means that the change detector should be skipped until its mode changes to\n * `CheckOnce`.\n */\n Checked: 1,\n /**\n * `CheckAlways` means that after calling detectChanges the mode of the change detector\n * will remain `CheckAlways`.\n */\n CheckAlways: 2,\n /**\n * `Detached` means that the change detector sub tree is not a part of the main tree and\n * should be skipped.\n */\n Detached: 3,\n /**\n * `Errored` means that the change detector encountered an error checking a binding\n * or calling a directive lifecycle method and is now in an inconsistent state. Change\n * detectors in this state will no longer detect changes.\n */\n Errored: 4,\n /**\n * `Destroyed` means that the change detector is destroyed.\n */\n Destroyed: 5,\n};\nChangeDetectorStatus[ChangeDetectorStatus.CheckOnce] = \"CheckOnce\";\nChangeDetectorStatus[ChangeDetectorStatus.Checked] = \"Checked\";\nChangeDetectorStatus[ChangeDetectorStatus.CheckAlways] = \"CheckAlways\";\nChangeDetectorStatus[ChangeDetectorStatus.Detached] = \"Detached\";\nChangeDetectorStatus[ChangeDetectorStatus.Errored] = \"Errored\";\nChangeDetectorStatus[ChangeDetectorStatus.Destroyed] = \"Destroyed\";\n/**\n * @param {?} changeDetectionStrategy\n * @return {?}\n */\nfunction isDefaultChangeDetectionStrategy(changeDetectionStrategy) {\n return changeDetectionStrategy == null ||\n changeDetectionStrategy === ChangeDetectionStrategy.Default;\n}\n\n/**\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 * Type of the Directive decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Directive decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Directive = makeDecorator('Directive', function (dir) {\n if (dir === void 0) { dir = {}; }\n return dir;\n});\n/**\n * Type of the Component decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Component decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Component = makeDecorator('Component', function (c) {\n if (c === void 0) { c = {}; }\n return (__assign({ changeDetection: ChangeDetectionStrategy.Default }, c));\n}, Directive);\n/**\n * Type of the Pipe decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Pipe decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Pipe = makeDecorator('Pipe', function (p) { return (__assign({ pure: true }, p)); });\n/**\n * Type of the Input decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Input decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Input = makePropDecorator('Input', function (bindingPropertyName) { return ({ bindingPropertyName: bindingPropertyName }); });\n/**\n * Type of the Output decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Output decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Output = makePropDecorator('Output', function (bindingPropertyName) { return ({ bindingPropertyName: bindingPropertyName }); });\n/**\n * Type of the HostBinding decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * HostBinding decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar HostBinding = makePropDecorator('HostBinding', function (hostPropertyName) { return ({ hostPropertyName: hostPropertyName }); });\n/**\n * Type of the HostListener decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * HostListener decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar HostListener = makePropDecorator('HostListener', function (eventName, args) { return ({ eventName: eventName, args: args }); });\n\n/**\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 * A wrapper around a module that also includes the providers.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Interface for schema definitions in \\@NgModules.\n *\n * \\@experimental\n * @record\n */\n\n/**\n * Defines a schema that will allow:\n * - any non-Angular elements with a `-` in their name,\n * - any properties on elements with a `-` in their name which is the common rule for custom\n * elements.\n *\n * \\@stable\n */\nvar CUSTOM_ELEMENTS_SCHEMA = {\n name: 'custom-elements'\n};\n/**\n * Defines a schema that will allow any property on any element.\n *\n * \\@experimental\n */\nvar NO_ERRORS_SCHEMA = {\n name: 'no-errors-schema'\n};\n/**\n * Type of the NgModule decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * NgModule decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar NgModule = makeDecorator('NgModule', function (ngModule) { return ngModule; });\n\n/**\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/** @enum {number} */\nvar ViewEncapsulation = {\n /**\n * Emulate `Native` scoping of styles by adding an attribute containing surrogate id to the Host\n * Element and pre-processing the style rules provided via {@link Component#styles styles} or\n * {@link Component#styleUrls styleUrls}, and adding the new Host Element attribute to all\n * selectors.\n *\n * This is the default option.\n */\n Emulated: 0,\n /**\n * Use the native encapsulation mechanism of the renderer.\n *\n * For the DOM this means using [Shadow DOM](https://w3c.github.io/webcomponents/spec/shadow/) and\n * creating a ShadowRoot for Component's Host Element.\n */\n Native: 1,\n /**\n * Don't provide any template or style encapsulation.\n */\n None: 2,\n};\nViewEncapsulation[ViewEncapsulation.Emulated] = \"Emulated\";\nViewEncapsulation[ViewEncapsulation.Native] = \"Native\";\nViewEncapsulation[ViewEncapsulation.None] = \"None\";\n\n/**\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/**\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 Represents the version of Angular\n *\n * \\@stable\n */\nvar Version = /** @class */ (function () {\n function Version(full) {\n this.full = full;\n this.major = full.split('.')[0];\n this.minor = full.split('.')[1];\n this.patch = full.split('.').slice(2).join('.');\n }\n return Version;\n}());\n/**\n * \\@stable\n */\nvar VERSION = new Version('5.2.5');\n\n/**\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 * Type of the Inject decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Inject decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Inject = makeParamDecorator('Inject', function (token) { return ({ token: token }); });\n/**\n * Type of the Optional decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Optional decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Optional = makeParamDecorator('Optional');\n/**\n * Type of the Injectable decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Injectable decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Injectable = makeDecorator('Injectable');\n/**\n * Type of the Self decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Self decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Self = makeParamDecorator('Self');\n/**\n * Type of the SkipSelf decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * SkipSelf decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar SkipSelf = makeParamDecorator('SkipSelf');\n/**\n * Type of the Host decorator / constructor function.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Host decorator and metadata.\n *\n * \\@stable\n * \\@Annotation\n */\nvar Host = makeParamDecorator('Host');\n\n/**\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 */\nvar __window = typeof window !== 'undefined' && window;\nvar __self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' &&\n self instanceof WorkerGlobalScope && self;\nvar __global = typeof global !== 'undefined' && global;\nvar _global = __window || __global || __self;\nvar promise = Promise.resolve(0);\nvar _symbolIterator = null;\n/**\n * @return {?}\n */\nfunction getSymbolIterator() {\n if (!_symbolIterator) {\n var /** @type {?} */ Symbol_1 = _global['Symbol'];\n if (Symbol_1 && Symbol_1.iterator) {\n _symbolIterator = Symbol_1.iterator;\n }\n else {\n // es6-shim specific logic\n var /** @type {?} */ keys = Object.getOwnPropertyNames(Map.prototype);\n for (var /** @type {?} */ i = 0; i < keys.length; ++i) {\n var /** @type {?} */ key = keys[i];\n if (key !== 'entries' && key !== 'size' &&\n (/** @type {?} */ (Map)).prototype[key] === Map.prototype['entries']) {\n _symbolIterator = key;\n }\n }\n }\n }\n return _symbolIterator;\n}\n/**\n * @param {?} fn\n * @return {?}\n */\nfunction scheduleMicroTask(fn) {\n if (typeof Zone === 'undefined') {\n // use promise to schedule microTask instead of use Zone\n promise.then(function () { fn && fn.apply(null, null); });\n }\n else {\n Zone.current.scheduleMicroTask('scheduleMicrotask', fn);\n }\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction looseIdentical(a, b) {\n return a === b || typeof a === 'number' && typeof b === 'number' && isNaN(a) && isNaN(b);\n}\n/**\n * @param {?} token\n * @return {?}\n */\nfunction stringify(token) {\n if (typeof token === 'string') {\n return token;\n }\n if (token instanceof Array) {\n return '[' + token.map(stringify).join(', ') + ']';\n }\n if (token == null) {\n return '' + token;\n }\n if (token.overriddenName) {\n return \"\" + token.overriddenName;\n }\n if (token.name) {\n return \"\" + token.name;\n }\n var /** @type {?} */ res = token.toString();\n if (res == null) {\n return '' + res;\n }\n var /** @type {?} */ newLineIndex = res.indexOf('\\n');\n return newLineIndex === -1 ? res : res.substring(0, newLineIndex);\n}\n\n/**\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 * An interface that a function passed into {\\@link forwardRef} has to implement.\n *\n * ### Example\n *\n * {\\@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref_fn'}\n * \\@experimental\n * @record\n */\n\n/**\n * Allows to refer to references which are not yet defined.\n *\n * For instance, `forwardRef` is used when the `token` which we need to refer to for the purposes of\n * DI is declared,\n * but not yet defined. It is also used when the `token` which we use when creating a query is not\n * yet defined.\n *\n * ### Example\n * {\\@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref'}\n * \\@experimental\n * @param {?} forwardRefFn\n * @return {?}\n */\nfunction forwardRef(forwardRefFn) {\n (/** @type {?} */ (forwardRefFn)).__forward_ref__ = forwardRef;\n (/** @type {?} */ (forwardRefFn)).toString = function () { return stringify(this()); };\n return (/** @type {?} */ (/** @type {?} */ (forwardRefFn)));\n}\n/**\n * Lazily retrieves the reference value from a forwardRef.\n *\n * Acts as the identity function when given a non-forward-ref value.\n *\n * ### Example ([live demo](http://plnkr.co/edit/GU72mJrk1fiodChcmiDR?p=preview))\n *\n * {\\@example core/di/ts/forward_ref/forward_ref_spec.ts region='resolve_forward_ref'}\n *\n * See: {\\@link forwardRef}\n * \\@experimental\n * @param {?} type\n * @return {?}\n */\nfunction resolveForwardRef(type) {\n if (typeof type === 'function' && type.hasOwnProperty('__forward_ref__') &&\n type.__forward_ref__ === forwardRef) {\n return (/** @type {?} */ (type))();\n }\n else {\n return type;\n }\n}\n\n/**\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 */\nvar SOURCE = '__source';\nvar _THROW_IF_NOT_FOUND = new Object();\nvar THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;\nvar _NullInjector = /** @class */ (function () {\n function _NullInjector() {\n }\n /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n _NullInjector.prototype.get = /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n function (token, notFoundValue) {\n if (notFoundValue === void 0) { notFoundValue = _THROW_IF_NOT_FOUND; }\n if (notFoundValue === _THROW_IF_NOT_FOUND) {\n throw new Error(\"NullInjectorError: No provider for \" + stringify(token) + \"!\");\n }\n return notFoundValue;\n };\n return _NullInjector;\n}());\n/**\n * \\@whatItDoes Injector interface\n * \\@howToUse\n * ```\n * const injector: Injector = ...;\n * injector.get(...);\n * ```\n *\n * \\@description\n * For more details, see the {\\@linkDocs guide/dependency-injection \"Dependency Injection Guide\"}.\n *\n * ### Example\n *\n * {\\@example core/di/ts/injector_spec.ts region='Injector'}\n *\n * `Injector` returns itself when given `Injector` as a token:\n * {\\@example core/di/ts/injector_spec.ts region='injectInjector'}\n *\n * \\@stable\n * @abstract\n */\nvar Injector = /** @class */ (function () {\n function Injector() {\n }\n /**\n * Create a new Injector which is configure using `StaticProvider`s.\n *\n * ### Example\n *\n * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'}\n */\n /**\n * Create a new Injector which is configure using `StaticProvider`s.\n *\n * ### Example\n *\n * {\\@example core/di/ts/provider_spec.ts region='ConstructorProvider'}\n * @param {?} options\n * @param {?=} parent\n * @return {?}\n */\n Injector.create = /**\n * Create a new Injector which is configure using `StaticProvider`s.\n *\n * ### Example\n *\n * {\\@example core/di/ts/provider_spec.ts region='ConstructorProvider'}\n * @param {?} options\n * @param {?=} parent\n * @return {?}\n */\n function (options, parent) {\n if (Array.isArray(options)) {\n return new StaticInjector(options, parent);\n }\n else {\n return new StaticInjector(options.providers, options.parent, options.name || null);\n }\n };\n Injector.THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;\n Injector.NULL = new _NullInjector();\n return Injector;\n}());\nvar IDENT = function (value) {\n return value;\n};\nvar EMPTY = /** @type {?} */ ([]);\nvar CIRCULAR = IDENT;\nvar MULTI_PROVIDER_FN = function () {\n return Array.prototype.slice.call(arguments);\n};\nvar GET_PROPERTY_NAME = /** @type {?} */ ({});\nvar ɵ2 = GET_PROPERTY_NAME;\nvar USE_VALUE = getClosureSafeProperty({ provide: String, useValue: ɵ2 });\nvar NG_TOKEN_PATH = 'ngTokenPath';\nvar NG_TEMP_TOKEN_PATH = 'ngTempTokenPath';\nvar NULL_INJECTOR = Injector.NULL;\nvar NEW_LINE = /\\n/gm;\nvar NO_NEW_LINE = 'ɵ';\nvar StaticInjector = /** @class */ (function () {\n function StaticInjector(providers, parent, source) {\n if (parent === void 0) { parent = NULL_INJECTOR; }\n if (source === void 0) { source = null; }\n this.parent = parent;\n this.source = source;\n var /** @type {?} */ records = this._records = new Map();\n records.set(Injector, /** @type {?} */ ({ token: Injector, fn: IDENT, deps: EMPTY, value: this, useNew: false }));\n recursivelyProcessProviders(records, providers);\n }\n /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n StaticInjector.prototype.get = /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n function (token, notFoundValue) {\n var /** @type {?} */ record = this._records.get(token);\n try {\n return tryResolveToken(token, record, this._records, this.parent, notFoundValue);\n }\n catch (/** @type {?} */ e) {\n var /** @type {?} */ tokenPath = e[NG_TEMP_TOKEN_PATH];\n if (token[SOURCE]) {\n tokenPath.unshift(token[SOURCE]);\n }\n e.message = formatError('\\n' + e.message, tokenPath, this.source);\n e[NG_TOKEN_PATH] = tokenPath;\n e[NG_TEMP_TOKEN_PATH] = null;\n throw e;\n }\n };\n /**\n * @return {?}\n */\n StaticInjector.prototype.toString = /**\n * @return {?}\n */\n function () {\n var /** @type {?} */ tokens = /** @type {?} */ ([]), /** @type {?} */ records = this._records;\n records.forEach(function (v, token) { return tokens.push(stringify(token)); });\n return \"StaticInjector[\" + tokens.join(', ') + \"]\";\n };\n return StaticInjector;\n}());\n/**\n * @param {?} provider\n * @return {?}\n */\nfunction resolveProvider(provider) {\n var /** @type {?} */ deps = computeDeps(provider);\n var /** @type {?} */ fn = IDENT;\n var /** @type {?} */ value = EMPTY;\n var /** @type {?} */ useNew = false;\n var /** @type {?} */ provide = resolveForwardRef(provider.provide);\n if (USE_VALUE in provider) {\n // We need to use USE_VALUE in provider since provider.useValue could be defined as undefined.\n value = (/** @type {?} */ (provider)).useValue;\n }\n else if ((/** @type {?} */ (provider)).useFactory) {\n fn = (/** @type {?} */ (provider)).useFactory;\n }\n else if ((/** @type {?} */ (provider)).useExisting) {\n // Just use IDENT\n }\n else if ((/** @type {?} */ (provider)).useClass) {\n useNew = true;\n fn = resolveForwardRef((/** @type {?} */ (provider)).useClass);\n }\n else if (typeof provide == 'function') {\n useNew = true;\n fn = provide;\n }\n else {\n throw staticError('StaticProvider does not have [useValue|useFactory|useExisting|useClass] or [provide] is not newable', provider);\n }\n return { deps: deps, fn: fn, useNew: useNew, value: value };\n}\n/**\n * @param {?} token\n * @return {?}\n */\nfunction multiProviderMixError(token) {\n return staticError('Cannot mix multi providers and regular providers', token);\n}\n/**\n * @param {?} records\n * @param {?} provider\n * @return {?}\n */\nfunction recursivelyProcessProviders(records, provider) {\n if (provider) {\n provider = resolveForwardRef(provider);\n if (provider instanceof Array) {\n // if we have an array recurse into the array\n for (var /** @type {?} */ i = 0; i < provider.length; i++) {\n recursivelyProcessProviders(records, provider[i]);\n }\n }\n else if (typeof provider === 'function') {\n // Functions were supported in ReflectiveInjector, but are not here. For safety give useful\n // error messages\n throw staticError('Function/Class not supported', provider);\n }\n else if (provider && typeof provider === 'object' && provider.provide) {\n // At this point we have what looks like a provider: {provide: ?, ....}\n var /** @type {?} */ token = resolveForwardRef(provider.provide);\n var /** @type {?} */ resolvedProvider = resolveProvider(provider);\n if (provider.multi === true) {\n // This is a multi provider.\n var /** @type {?} */ multiProvider = records.get(token);\n if (multiProvider) {\n if (multiProvider.fn !== MULTI_PROVIDER_FN) {\n throw multiProviderMixError(token);\n }\n }\n else {\n // Create a placeholder factory which will look up the constituents of the multi provider.\n records.set(token, multiProvider = /** @type {?} */ ({\n token: provider.provide,\n deps: [],\n useNew: false,\n fn: MULTI_PROVIDER_FN,\n value: EMPTY\n }));\n }\n // Treat the provider as the token.\n token = provider;\n multiProvider.deps.push({ token: token, options: 6 /* Default */ });\n }\n var /** @type {?} */ record = records.get(token);\n if (record && record.fn == MULTI_PROVIDER_FN) {\n throw multiProviderMixError(token);\n }\n records.set(token, resolvedProvider);\n }\n else {\n throw staticError('Unexpected provider', provider);\n }\n }\n}\n/**\n * @param {?} token\n * @param {?} record\n * @param {?} records\n * @param {?} parent\n * @param {?} notFoundValue\n * @return {?}\n */\nfunction tryResolveToken(token, record, records, parent, notFoundValue) {\n try {\n return resolveToken(token, record, records, parent, notFoundValue);\n }\n catch (/** @type {?} */ e) {\n // ensure that 'e' is of type Error.\n if (!(e instanceof Error)) {\n e = new Error(e);\n }\n var /** @type {?} */ path = e[NG_TEMP_TOKEN_PATH] = e[NG_TEMP_TOKEN_PATH] || [];\n path.unshift(token);\n if (record && record.value == CIRCULAR) {\n // Reset the Circular flag.\n record.value = EMPTY;\n }\n throw e;\n }\n}\n/**\n * @param {?} token\n * @param {?} record\n * @param {?} records\n * @param {?} parent\n * @param {?} notFoundValue\n * @return {?}\n */\nfunction resolveToken(token, record, records, parent, notFoundValue) {\n var /** @type {?} */ value;\n if (record) {\n // If we don't have a record, this implies that we don't own the provider hence don't know how\n // to resolve it.\n value = record.value;\n if (value == CIRCULAR) {\n throw Error(NO_NEW_LINE + 'Circular dependency');\n }\n else if (value === EMPTY) {\n record.value = CIRCULAR;\n var /** @type {?} */ obj = undefined;\n var /** @type {?} */ useNew = record.useNew;\n var /** @type {?} */ fn = record.fn;\n var /** @type {?} */ depRecords = record.deps;\n var /** @type {?} */ deps = EMPTY;\n if (depRecords.length) {\n deps = [];\n for (var /** @type {?} */ i = 0; i < depRecords.length; i++) {\n var /** @type {?} */ depRecord = depRecords[i];\n var /** @type {?} */ options = depRecord.options;\n var /** @type {?} */ childRecord = options & 2 /* CheckSelf */ ? records.get(depRecord.token) : undefined;\n deps.push(tryResolveToken(\n // Current Token to resolve\n depRecord.token, childRecord, records, \n // If we don't know how to resolve dependency and we should not check parent for it,\n // than pass in Null injector.\n !childRecord && !(options & 4 /* CheckParent */) ? NULL_INJECTOR : parent, options & 1 /* Optional */ ? null : Injector.THROW_IF_NOT_FOUND));\n }\n }\n record.value = value = useNew ? new ((_a = (/** @type {?} */ (fn))).bind.apply(_a, [void 0].concat(deps)))() : fn.apply(obj, deps);\n }\n }\n else {\n value = parent.get(token, notFoundValue);\n }\n return value;\n var _a;\n}\n/**\n * @param {?} provider\n * @return {?}\n */\nfunction computeDeps(provider) {\n var /** @type {?} */ deps = EMPTY;\n var /** @type {?} */ providerDeps = (/** @type {?} */ (provider)).deps;\n if (providerDeps && providerDeps.length) {\n deps = [];\n for (var /** @type {?} */ i = 0; i < providerDeps.length; i++) {\n var /** @type {?} */ options = 6;\n var /** @type {?} */ token = resolveForwardRef(providerDeps[i]);\n if (token instanceof Array) {\n for (var /** @type {?} */ j = 0, /** @type {?} */ annotations = token; j < annotations.length; j++) {\n var /** @type {?} */ annotation = annotations[j];\n if (annotation instanceof Optional || annotation == Optional) {\n options = options | 1 /* Optional */;\n }\n else if (annotation instanceof SkipSelf || annotation == SkipSelf) {\n options = options & ~2 /* CheckSelf */;\n }\n else if (annotation instanceof Self || annotation == Self) {\n options = options & ~4 /* CheckParent */;\n }\n else if (annotation instanceof Inject) {\n token = (/** @type {?} */ (annotation)).token;\n }\n else {\n token = resolveForwardRef(annotation);\n }\n }\n }\n deps.push({ token: token, options: options });\n }\n }\n else if ((/** @type {?} */ (provider)).useExisting) {\n var /** @type {?} */ token = resolveForwardRef((/** @type {?} */ (provider)).useExisting);\n deps = [{ token: token, options: 6 /* Default */ }];\n }\n else if (!providerDeps && !(USE_VALUE in provider)) {\n // useValue & useExisting are the only ones which are exempt from deps all others need it.\n throw staticError('\\'deps\\' required', provider);\n }\n return deps;\n}\n/**\n * @param {?} text\n * @param {?} obj\n * @param {?=} source\n * @return {?}\n */\nfunction formatError(text, obj, source) {\n if (source === void 0) { source = null; }\n text = text && text.charAt(0) === '\\n' && text.charAt(1) == NO_NEW_LINE ? text.substr(2) : text;\n var /** @type {?} */ context = stringify(obj);\n if (obj instanceof Array) {\n context = obj.map(stringify).join(' -> ');\n }\n else if (typeof obj === 'object') {\n var /** @type {?} */ parts = /** @type {?} */ ([]);\n for (var /** @type {?} */ key in obj) {\n if (obj.hasOwnProperty(key)) {\n var /** @type {?} */ value = obj[key];\n parts.push(key + ':' + (typeof value === 'string' ? JSON.stringify(value) : stringify(value)));\n }\n }\n context = \"{\" + parts.join(', ') + \"}\";\n }\n return \"StaticInjectorError\" + (source ? '(' + source + ')' : '') + \"[\" + context + \"]: \" + text.replace(NEW_LINE, '\\n ');\n}\n/**\n * @param {?} text\n * @param {?} obj\n * @return {?}\n */\nfunction staticError(text, obj) {\n return new Error(formatError(text, obj));\n}\n/**\n * @template T\n * @param {?} objWithPropertyToExtract\n * @return {?}\n */\nfunction getClosureSafeProperty(objWithPropertyToExtract) {\n for (var /** @type {?} */ key in objWithPropertyToExtract) {\n if (objWithPropertyToExtract[key] === GET_PROPERTY_NAME) {\n return key;\n }\n }\n throw Error('!prop');\n}\n\n/**\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\nvar ERROR_DEBUG_CONTEXT = 'ngDebugContext';\nvar ERROR_ORIGINAL_ERROR = 'ngOriginalError';\nvar ERROR_LOGGER = 'ngErrorLogger';\n/**\n * @param {?} error\n * @return {?}\n */\n\n/**\n * @param {?} error\n * @return {?}\n */\nfunction getDebugContext(error) {\n return (/** @type {?} */ (error))[ERROR_DEBUG_CONTEXT];\n}\n/**\n * @param {?} error\n * @return {?}\n */\nfunction getOriginalError(error) {\n return (/** @type {?} */ (error))[ERROR_ORIGINAL_ERROR];\n}\n/**\n * @param {?} error\n * @return {?}\n */\nfunction getErrorLogger(error) {\n return (/** @type {?} */ (error))[ERROR_LOGGER] || defaultErrorLogger;\n}\n/**\n * @param {?} console\n * @param {...?} values\n * @return {?}\n */\nfunction defaultErrorLogger(console) {\n var values = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n console.error.apply(console, values);\n}\n\n/**\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 hook for centralized exception handling.\n *\n * \\@description\n *\n * The default implementation of `ErrorHandler` prints error messages to the `console`. To\n * intercept error handling, write a custom exception handler that replaces this default as\n * appropriate for your app.\n *\n * ### Example\n *\n * ```\n * class MyErrorHandler implements ErrorHandler {\n * handleError(error) {\n * // do something with the exception\n * }\n * }\n *\n * \\@NgModule({\n * providers: [{provide: ErrorHandler, useClass: MyErrorHandler}]\n * })\n * class MyModule {}\n * ```\n *\n * \\@stable\n */\nvar ErrorHandler = /** @class */ (function () {\n function ErrorHandler() {\n /**\n * \\@internal\n */\n this._console = console;\n }\n /**\n * @param {?} error\n * @return {?}\n */\n ErrorHandler.prototype.handleError = /**\n * @param {?} error\n * @return {?}\n */\n function (error) {\n var /** @type {?} */ originalError = this._findOriginalError(error);\n var /** @type {?} */ context = this._findContext(error);\n // Note: Browser consoles show the place from where console.error was called.\n // We can use this to give users additional information about the error.\n var /** @type {?} */ errorLogger = getErrorLogger(error);\n errorLogger(this._console, \"ERROR\", error);\n if (originalError) {\n errorLogger(this._console, \"ORIGINAL ERROR\", originalError);\n }\n if (context) {\n errorLogger(this._console, 'ERROR CONTEXT', context);\n }\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} error\n * @return {?}\n */\n ErrorHandler.prototype._findContext = /**\n * \\@internal\n * @param {?} error\n * @return {?}\n */\n function (error) {\n if (error) {\n return getDebugContext(error) ? getDebugContext(error) :\n this._findContext(getOriginalError(error));\n }\n return null;\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} error\n * @return {?}\n */\n ErrorHandler.prototype._findOriginalError = /**\n * \\@internal\n * @param {?} error\n * @return {?}\n */\n function (error) {\n var /** @type {?} */ e = getOriginalError(error);\n while (e && getOriginalError(e)) {\n e = getOriginalError(e);\n }\n return e;\n };\n return ErrorHandler;\n}());\n/**\n * @param {?} message\n * @param {?} originalError\n * @return {?}\n */\nfunction wrappedError(message, originalError) {\n var /** @type {?} */ msg = message + \" caused by: \" + (originalError instanceof Error ? originalError.message : originalError);\n var /** @type {?} */ error = Error(msg);\n (/** @type {?} */ (error))[ERROR_ORIGINAL_ERROR] = originalError;\n return error;\n}\n\n/**\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 * @param {?} keys\n * @return {?}\n */\nfunction findFirstClosedCycle(keys) {\n var /** @type {?} */ res = [];\n for (var /** @type {?} */ i = 0; i < keys.length; ++i) {\n if (res.indexOf(keys[i]) > -1) {\n res.push(keys[i]);\n return res;\n }\n res.push(keys[i]);\n }\n return res;\n}\n/**\n * @param {?} keys\n * @return {?}\n */\nfunction constructResolvingPath(keys) {\n if (keys.length > 1) {\n var /** @type {?} */ reversed = findFirstClosedCycle(keys.slice().reverse());\n var /** @type {?} */ tokenStrs = reversed.map(function (k) { return stringify(k.token); });\n return ' (' + tokenStrs.join(' -> ') + ')';\n }\n return '';\n}\n/**\n * @record\n */\n\n/**\n * @param {?} injector\n * @param {?} key\n * @param {?} constructResolvingMessage\n * @param {?=} originalError\n * @return {?}\n */\nfunction injectionError(injector, key, constructResolvingMessage, originalError) {\n var /** @type {?} */ keys = [key];\n var /** @type {?} */ errMsg = constructResolvingMessage(keys);\n var /** @type {?} */ error = /** @type {?} */ ((originalError ? wrappedError(errMsg, originalError) : Error(errMsg)));\n error.addKey = addKey;\n error.keys = keys;\n error.injectors = [injector];\n error.constructResolvingMessage = constructResolvingMessage;\n (/** @type {?} */ (error))[ERROR_ORIGINAL_ERROR] = originalError;\n return error;\n}\n/**\n * @this {?}\n * @param {?} injector\n * @param {?} key\n * @return {?}\n */\nfunction addKey(injector, key) {\n this.injectors.push(injector);\n this.keys.push(key);\n // Note: This updated message won't be reflected in the `.stack` property\n this.message = this.constructResolvingMessage(this.keys);\n}\n/**\n * Thrown when trying to retrieve a dependency by key from {\\@link Injector}, but the\n * {\\@link Injector} does not have a {\\@link Provider} for the given key.\n *\n * ### Example ([live demo](http://plnkr.co/edit/vq8D3FRB9aGbnWJqtEPE?p=preview))\n *\n * ```typescript\n * class A {\n * constructor(b:B) {}\n * }\n *\n * expect(() => Injector.resolveAndCreate([A])).toThrowError();\n * ```\n * @param {?} injector\n * @param {?} key\n * @return {?}\n */\nfunction noProviderError(injector, key) {\n return injectionError(injector, key, function (keys) {\n var /** @type {?} */ first = stringify(keys[0].token);\n return \"No provider for \" + first + \"!\" + constructResolvingPath(keys);\n });\n}\n/**\n * Thrown when dependencies form a cycle.\n *\n * ### Example ([live demo](http://plnkr.co/edit/wYQdNos0Tzql3ei1EV9j?p=info))\n *\n * ```typescript\n * var injector = Injector.resolveAndCreate([\n * {provide: \"one\", useFactory: (two) => \"two\", deps: [[new Inject(\"two\")]]},\n * {provide: \"two\", useFactory: (one) => \"one\", deps: [[new Inject(\"one\")]]}\n * ]);\n *\n * expect(() => injector.get(\"one\")).toThrowError();\n * ```\n *\n * Retrieving `A` or `B` throws a `CyclicDependencyError` as the graph above cannot be constructed.\n * @param {?} injector\n * @param {?} key\n * @return {?}\n */\nfunction cyclicDependencyError(injector, key) {\n return injectionError(injector, key, function (keys) {\n return \"Cannot instantiate cyclic dependency!\" + constructResolvingPath(keys);\n });\n}\n/**\n * Thrown when a constructing type returns with an Error.\n *\n * The `InstantiationError` class contains the original error plus the dependency graph which caused\n * this object to be instantiated.\n *\n * ### Example ([live demo](http://plnkr.co/edit/7aWYdcqTQsP0eNqEdUAf?p=preview))\n *\n * ```typescript\n * class A {\n * constructor() {\n * throw new Error('message');\n * }\n * }\n *\n * var injector = Injector.resolveAndCreate([A]);\n * try {\n * injector.get(A);\n * } catch (e) {\n * expect(e instanceof InstantiationError).toBe(true);\n * expect(e.originalException.message).toEqual(\"message\");\n * expect(e.originalStack).toBeDefined();\n * }\n * ```\n * @param {?} injector\n * @param {?} originalException\n * @param {?} originalStack\n * @param {?} key\n * @return {?}\n */\nfunction instantiationError(injector, originalException, originalStack, key) {\n return injectionError(injector, key, function (keys) {\n var /** @type {?} */ first = stringify(keys[0].token);\n return originalException.message + \": Error during instantiation of \" + first + \"!\" + constructResolvingPath(keys) + \".\";\n }, originalException);\n}\n/**\n * Thrown when an object other then {\\@link Provider} (or `Type`) is passed to {\\@link Injector}\n * creation.\n *\n * ### Example ([live demo](http://plnkr.co/edit/YatCFbPAMCL0JSSQ4mvH?p=preview))\n *\n * ```typescript\n * expect(() => Injector.resolveAndCreate([\"not a type\"])).toThrowError();\n * ```\n * @param {?} provider\n * @return {?}\n */\nfunction invalidProviderError(provider) {\n return Error(\"Invalid provider - only instances of Provider and Type are allowed, got: \" + provider);\n}\n/**\n * Thrown when the class has no annotation information.\n *\n * Lack of annotation information prevents the {\\@link Injector} from determining which dependencies\n * need to be injected into the constructor.\n *\n * ### Example ([live demo](http://plnkr.co/edit/rHnZtlNS7vJOPQ6pcVkm?p=preview))\n *\n * ```typescript\n * class A {\n * constructor(b) {}\n * }\n *\n * expect(() => Injector.resolveAndCreate([A])).toThrowError();\n * ```\n *\n * This error is also thrown when the class not marked with {\\@link Injectable} has parameter types.\n *\n * ```typescript\n * class B {}\n *\n * class A {\n * constructor(b:B) {} // no information about the parameter types of A is available at runtime.\n * }\n *\n * expect(() => Injector.resolveAndCreate([A,B])).toThrowError();\n * ```\n * \\@stable\n * @param {?} typeOrFunc\n * @param {?} params\n * @return {?}\n */\nfunction noAnnotationError(typeOrFunc, params) {\n var /** @type {?} */ signature = [];\n for (var /** @type {?} */ i = 0, /** @type {?} */ ii = params.length; i < ii; i++) {\n var /** @type {?} */ parameter = params[i];\n if (!parameter || parameter.length == 0) {\n signature.push('?');\n }\n else {\n signature.push(parameter.map(stringify).join(' '));\n }\n }\n return Error('Cannot resolve all parameters for \\'' + stringify(typeOrFunc) + '\\'(' +\n signature.join(', ') + '). ' +\n 'Make sure that all the parameters are decorated with Inject or have valid type annotations and that \\'' +\n stringify(typeOrFunc) + '\\' is decorated with Injectable.');\n}\n/**\n * Thrown when getting an object by index.\n *\n * ### Example ([live demo](http://plnkr.co/edit/bRs0SX2OTQiJzqvjgl8P?p=preview))\n *\n * ```typescript\n * class A {}\n *\n * var injector = Injector.resolveAndCreate([A]);\n *\n * expect(() => injector.getAt(100)).toThrowError();\n * ```\n * \\@stable\n * @param {?} index\n * @return {?}\n */\nfunction outOfBoundsError(index) {\n return Error(\"Index \" + index + \" is out-of-bounds.\");\n}\n/**\n * Thrown when a multi provider and a regular provider are bound to the same token.\n *\n * ### Example\n *\n * ```typescript\n * expect(() => Injector.resolveAndCreate([\n * { provide: \"Strings\", useValue: \"string1\", multi: true},\n * { provide: \"Strings\", useValue: \"string2\", multi: false}\n * ])).toThrowError();\n * ```\n * @param {?} provider1\n * @param {?} provider2\n * @return {?}\n */\nfunction mixingMultiProvidersWithRegularProvidersError(provider1, provider2) {\n return Error(\"Cannot mix multi providers and regular providers, got: \" + provider1 + \" \" + provider2);\n}\n\n/**\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 * A unique object used for retrieving items from the {\\@link ReflectiveInjector}.\n *\n * Keys have:\n * - a system-wide unique `id`.\n * - a `token`.\n *\n * `Key` is used internally by {\\@link ReflectiveInjector} because its system-wide unique `id` allows\n * the\n * injector to store created objects in a more efficient way.\n *\n * `Key` should not be created directly. {\\@link ReflectiveInjector} creates keys automatically when\n * resolving\n * providers.\n * @deprecated No replacement\n */\nvar ReflectiveKey = /** @class */ (function () {\n /**\n * Private\n */\n function ReflectiveKey(token, id) {\n this.token = token;\n this.id = id;\n if (!token) {\n throw new Error('Token must be defined!');\n }\n this.displayName = stringify(this.token);\n }\n /**\n * Retrieves a `Key` for a token.\n */\n /**\n * Retrieves a `Key` for a token.\n * @param {?} token\n * @return {?}\n */\n ReflectiveKey.get = /**\n * Retrieves a `Key` for a token.\n * @param {?} token\n * @return {?}\n */\n function (token) {\n return _globalKeyRegistry.get(resolveForwardRef(token));\n };\n Object.defineProperty(ReflectiveKey, \"numberOfKeys\", {\n /**\n * @returns the number of keys registered in the system.\n */\n get: /**\n * @return {?} the number of keys registered in the system.\n */\n function () { return _globalKeyRegistry.numberOfKeys; },\n enumerable: true,\n configurable: true\n });\n return ReflectiveKey;\n}());\nvar KeyRegistry = /** @class */ (function () {\n function KeyRegistry() {\n this._allKeys = new Map();\n }\n /**\n * @param {?} token\n * @return {?}\n */\n KeyRegistry.prototype.get = /**\n * @param {?} token\n * @return {?}\n */\n function (token) {\n if (token instanceof ReflectiveKey)\n return token;\n if (this._allKeys.has(token)) {\n return /** @type {?} */ ((this._allKeys.get(token)));\n }\n var /** @type {?} */ newKey = new ReflectiveKey(token, ReflectiveKey.numberOfKeys);\n this._allKeys.set(token, newKey);\n return newKey;\n };\n Object.defineProperty(KeyRegistry.prototype, \"numberOfKeys\", {\n get: /**\n * @return {?}\n */\n function () { return this._allKeys.size; },\n enumerable: true,\n configurable: true\n });\n return KeyRegistry;\n}());\nvar _globalKeyRegistry = new KeyRegistry();\n\n/**\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 Represents a type that a Component or other object is instances of.\n *\n * \\@description\n *\n * An example of a `Type` is `MyCustomComponent` class, which in JavaScript is be represented by\n * the `MyCustomComponent` constructor function.\n *\n * \\@stable\n */\nvar Type = Function;\n/**\n * @param {?} v\n * @return {?}\n */\nfunction isType(v) {\n return typeof v === 'function';\n}\n\n/**\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 * Attention: This regex has to hold even if the code is minified!\n */\nvar DELEGATE_CTOR = /^function\\s+\\S+\\(\\)\\s*{[\\s\\S]+\\.apply\\(this,\\s*arguments\\)/;\nvar ReflectionCapabilities = /** @class */ (function () {\n function ReflectionCapabilities(reflect) {\n this._reflect = reflect || _global['Reflect'];\n }\n /**\n * @return {?}\n */\n ReflectionCapabilities.prototype.isReflectionEnabled = /**\n * @return {?}\n */\n function () { return true; };\n /**\n * @template T\n * @param {?} t\n * @return {?}\n */\n ReflectionCapabilities.prototype.factory = /**\n * @template T\n * @param {?} t\n * @return {?}\n */\n function (t) { return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new (t.bind.apply(t, [void 0].concat(args)))();\n }; };\n /** @internal */\n /**\n * \\@internal\n * @param {?} paramTypes\n * @param {?} paramAnnotations\n * @return {?}\n */\n ReflectionCapabilities.prototype._zipTypesAndAnnotations = /**\n * \\@internal\n * @param {?} paramTypes\n * @param {?} paramAnnotations\n * @return {?}\n */\n function (paramTypes, paramAnnotations) {\n var /** @type {?} */ result;\n if (typeof paramTypes === 'undefined') {\n result = new Array(paramAnnotations.length);\n }\n else {\n result = new Array(paramTypes.length);\n }\n for (var /** @type {?} */ i = 0; i < result.length; i++) {\n // TS outputs Object for parameters without types, while Traceur omits\n // the annotations. For now we preserve the Traceur behavior to aid\n // migration, but this can be revisited.\n if (typeof paramTypes === 'undefined') {\n result[i] = [];\n }\n else if (paramTypes[i] != Object) {\n result[i] = [paramTypes[i]];\n }\n else {\n result[i] = [];\n }\n if (paramAnnotations && paramAnnotations[i] != null) {\n result[i] = result[i].concat(paramAnnotations[i]);\n }\n }\n return result;\n };\n /**\n * @param {?} type\n * @param {?} parentCtor\n * @return {?}\n */\n ReflectionCapabilities.prototype._ownParameters = /**\n * @param {?} type\n * @param {?} parentCtor\n * @return {?}\n */\n function (type, parentCtor) {\n // If we have no decorators, we only have function.length as metadata.\n // In that case, to detect whether a child class declared an own constructor or not,\n // we need to look inside of that constructor to check whether it is\n // just calling the parent.\n // This also helps to work around for https://github.com/Microsoft/TypeScript/issues/12439\n // that sets 'design:paramtypes' to []\n // if a class inherits from another class but has no ctor declared itself.\n if (DELEGATE_CTOR.exec(type.toString())) {\n return null;\n }\n // Prefer the direct API.\n if ((/** @type {?} */ (type)).parameters && (/** @type {?} */ (type)).parameters !== parentCtor.parameters) {\n return (/** @type {?} */ (type)).parameters;\n }\n // API of tsickle for lowering decorators to properties on the class.\n var /** @type {?} */ tsickleCtorParams = (/** @type {?} */ (type)).ctorParameters;\n if (tsickleCtorParams && tsickleCtorParams !== parentCtor.ctorParameters) {\n // Newer tsickle uses a function closure\n // Retain the non-function case for compatibility with older tsickle\n var /** @type {?} */ ctorParameters = typeof tsickleCtorParams === 'function' ? tsickleCtorParams() : tsickleCtorParams;\n var /** @type {?} */ paramTypes_1 = ctorParameters.map(function (ctorParam) { return ctorParam && ctorParam.type; });\n var /** @type {?} */ paramAnnotations_1 = ctorParameters.map(function (ctorParam) {\n return ctorParam && convertTsickleDecoratorIntoMetadata(ctorParam.decorators);\n });\n return this._zipTypesAndAnnotations(paramTypes_1, paramAnnotations_1);\n }\n // API for metadata created by invoking the decorators.\n var /** @type {?} */ paramAnnotations = type.hasOwnProperty(PARAMETERS) && (/** @type {?} */ (type))[PARAMETERS];\n var /** @type {?} */ paramTypes = this._reflect && this._reflect.getOwnMetadata &&\n this._reflect.getOwnMetadata('design:paramtypes', type);\n if (paramTypes || paramAnnotations) {\n return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);\n }\n // If a class has no decorators, at least create metadata\n // based on function.length.\n // Note: We know that this is a real constructor as we checked\n // the content of the constructor above.\n return new Array((/** @type {?} */ (type.length))).fill(undefined);\n };\n /**\n * @param {?} type\n * @return {?}\n */\n ReflectionCapabilities.prototype.parameters = /**\n * @param {?} type\n * @return {?}\n */\n function (type) {\n // Note: only report metadata if we have at least one class decorator\n // to stay in sync with the static reflector.\n if (!isType(type)) {\n return [];\n }\n var /** @type {?} */ parentCtor = getParentCtor(type);\n var /** @type {?} */ parameters = this._ownParameters(type, parentCtor);\n if (!parameters && parentCtor !== Object) {\n parameters = this.parameters(parentCtor);\n }\n return parameters || [];\n };\n /**\n * @param {?} typeOrFunc\n * @param {?} parentCtor\n * @return {?}\n */\n ReflectionCapabilities.prototype._ownAnnotations = /**\n * @param {?} typeOrFunc\n * @param {?} parentCtor\n * @return {?}\n */\n function (typeOrFunc, parentCtor) {\n // Prefer the direct API.\n if ((/** @type {?} */ (typeOrFunc)).annotations && (/** @type {?} */ (typeOrFunc)).annotations !== parentCtor.annotations) {\n var /** @type {?} */ annotations = (/** @type {?} */ (typeOrFunc)).annotations;\n if (typeof annotations === 'function' && annotations.annotations) {\n annotations = annotations.annotations;\n }\n return annotations;\n }\n // API of tsickle for lowering decorators to properties on the class.\n if ((/** @type {?} */ (typeOrFunc)).decorators && (/** @type {?} */ (typeOrFunc)).decorators !== parentCtor.decorators) {\n return convertTsickleDecoratorIntoMetadata((/** @type {?} */ (typeOrFunc)).decorators);\n }\n // API for metadata created by invoking the decorators.\n if (typeOrFunc.hasOwnProperty(ANNOTATIONS)) {\n return (/** @type {?} */ (typeOrFunc))[ANNOTATIONS];\n }\n return null;\n };\n /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n ReflectionCapabilities.prototype.annotations = /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n function (typeOrFunc) {\n if (!isType(typeOrFunc)) {\n return [];\n }\n var /** @type {?} */ parentCtor = getParentCtor(typeOrFunc);\n var /** @type {?} */ ownAnnotations = this._ownAnnotations(typeOrFunc, parentCtor) || [];\n var /** @type {?} */ parentAnnotations = parentCtor !== Object ? this.annotations(parentCtor) : [];\n return parentAnnotations.concat(ownAnnotations);\n };\n /**\n * @param {?} typeOrFunc\n * @param {?} parentCtor\n * @return {?}\n */\n ReflectionCapabilities.prototype._ownPropMetadata = /**\n * @param {?} typeOrFunc\n * @param {?} parentCtor\n * @return {?}\n */\n function (typeOrFunc, parentCtor) {\n // Prefer the direct API.\n if ((/** @type {?} */ (typeOrFunc)).propMetadata &&\n (/** @type {?} */ (typeOrFunc)).propMetadata !== parentCtor.propMetadata) {\n var /** @type {?} */ propMetadata = (/** @type {?} */ (typeOrFunc)).propMetadata;\n if (typeof propMetadata === 'function' && propMetadata.propMetadata) {\n propMetadata = propMetadata.propMetadata;\n }\n return propMetadata;\n }\n // API of tsickle for lowering decorators to properties on the class.\n if ((/** @type {?} */ (typeOrFunc)).propDecorators &&\n (/** @type {?} */ (typeOrFunc)).propDecorators !== parentCtor.propDecorators) {\n var /** @type {?} */ propDecorators_1 = (/** @type {?} */ (typeOrFunc)).propDecorators;\n var /** @type {?} */ propMetadata_1 = /** @type {?} */ ({});\n Object.keys(propDecorators_1).forEach(function (prop) {\n propMetadata_1[prop] = convertTsickleDecoratorIntoMetadata(propDecorators_1[prop]);\n });\n return propMetadata_1;\n }\n // API for metadata created by invoking the decorators.\n if (typeOrFunc.hasOwnProperty(PROP_METADATA)) {\n return (/** @type {?} */ (typeOrFunc))[PROP_METADATA];\n }\n return null;\n };\n /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n ReflectionCapabilities.prototype.propMetadata = /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n function (typeOrFunc) {\n if (!isType(typeOrFunc)) {\n return {};\n }\n var /** @type {?} */ parentCtor = getParentCtor(typeOrFunc);\n var /** @type {?} */ propMetadata = {};\n if (parentCtor !== Object) {\n var /** @type {?} */ parentPropMetadata_1 = this.propMetadata(parentCtor);\n Object.keys(parentPropMetadata_1).forEach(function (propName) {\n propMetadata[propName] = parentPropMetadata_1[propName];\n });\n }\n var /** @type {?} */ ownPropMetadata = this._ownPropMetadata(typeOrFunc, parentCtor);\n if (ownPropMetadata) {\n Object.keys(ownPropMetadata).forEach(function (propName) {\n var /** @type {?} */ decorators = [];\n if (propMetadata.hasOwnProperty(propName)) {\n decorators.push.apply(decorators, propMetadata[propName]);\n }\n decorators.push.apply(decorators, ownPropMetadata[propName]);\n propMetadata[propName] = decorators;\n });\n }\n return propMetadata;\n };\n /**\n * @param {?} type\n * @param {?} lcProperty\n * @return {?}\n */\n ReflectionCapabilities.prototype.hasLifecycleHook = /**\n * @param {?} type\n * @param {?} lcProperty\n * @return {?}\n */\n function (type, lcProperty) {\n return type instanceof Type && lcProperty in type.prototype;\n };\n /**\n * @param {?} type\n * @return {?}\n */\n ReflectionCapabilities.prototype.guards = /**\n * @param {?} type\n * @return {?}\n */\n function (type) { return {}; };\n /**\n * @param {?} name\n * @return {?}\n */\n ReflectionCapabilities.prototype.getter = /**\n * @param {?} name\n * @return {?}\n */\n function (name) { return /** @type {?} */ (new Function('o', 'return o.' + name + ';')); };\n /**\n * @param {?} name\n * @return {?}\n */\n ReflectionCapabilities.prototype.setter = /**\n * @param {?} name\n * @return {?}\n */\n function (name) {\n return /** @type {?} */ (new Function('o', 'v', 'return o.' + name + ' = v;'));\n };\n /**\n * @param {?} name\n * @return {?}\n */\n ReflectionCapabilities.prototype.method = /**\n * @param {?} name\n * @return {?}\n */\n function (name) {\n var /** @type {?} */ functionBody = \"if (!o.\" + name + \") throw new Error('\\\"\" + name + \"\\\" is undefined');\\n return o.\" + name + \".apply(o, args);\";\n return /** @type {?} */ (new Function('o', 'args', functionBody));\n };\n // There is not a concept of import uri in Js, but this is useful in developing Dart applications.\n /**\n * @param {?} type\n * @return {?}\n */\n ReflectionCapabilities.prototype.importUri = /**\n * @param {?} type\n * @return {?}\n */\n function (type) {\n // StaticSymbol\n if (typeof type === 'object' && type['filePath']) {\n return type['filePath'];\n }\n // Runtime type\n return \"./\" + stringify(type);\n };\n /**\n * @param {?} type\n * @return {?}\n */\n ReflectionCapabilities.prototype.resourceUri = /**\n * @param {?} type\n * @return {?}\n */\n function (type) { return \"./\" + stringify(type); };\n /**\n * @param {?} name\n * @param {?} moduleUrl\n * @param {?} members\n * @param {?} runtime\n * @return {?}\n */\n ReflectionCapabilities.prototype.resolveIdentifier = /**\n * @param {?} name\n * @param {?} moduleUrl\n * @param {?} members\n * @param {?} runtime\n * @return {?}\n */\n function (name, moduleUrl, members, runtime) {\n return runtime;\n };\n /**\n * @param {?} enumIdentifier\n * @param {?} name\n * @return {?}\n */\n ReflectionCapabilities.prototype.resolveEnum = /**\n * @param {?} enumIdentifier\n * @param {?} name\n * @return {?}\n */\n function (enumIdentifier, name) { return enumIdentifier[name]; };\n return ReflectionCapabilities;\n}());\n/**\n * @param {?} decoratorInvocations\n * @return {?}\n */\nfunction convertTsickleDecoratorIntoMetadata(decoratorInvocations) {\n if (!decoratorInvocations) {\n return [];\n }\n return decoratorInvocations.map(function (decoratorInvocation) {\n var /** @type {?} */ decoratorType = decoratorInvocation.type;\n var /** @type {?} */ annotationCls = decoratorType.annotationCls;\n var /** @type {?} */ annotationArgs = decoratorInvocation.args ? decoratorInvocation.args : [];\n return new (annotationCls.bind.apply(annotationCls, [void 0].concat(annotationArgs)))();\n });\n}\n/**\n * @param {?} ctor\n * @return {?}\n */\nfunction getParentCtor(ctor) {\n var /** @type {?} */ parentProto = Object.getPrototypeOf(ctor.prototype);\n var /** @type {?} */ parentCtor = parentProto ? parentProto.constructor : null;\n // Note: We always use `Object` as the null value\n // to simplify checking later on.\n return parentCtor || Object;\n}\n\n/**\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 * Provides access to reflection data about symbols. Used internally by Angular\n * to power dependency injection and compilation.\n */\nvar Reflector = /** @class */ (function () {\n function Reflector(reflectionCapabilities) {\n this.reflectionCapabilities = reflectionCapabilities;\n }\n /**\n * @param {?} caps\n * @return {?}\n */\n Reflector.prototype.updateCapabilities = /**\n * @param {?} caps\n * @return {?}\n */\n function (caps) { this.reflectionCapabilities = caps; };\n /**\n * @param {?} type\n * @return {?}\n */\n Reflector.prototype.factory = /**\n * @param {?} type\n * @return {?}\n */\n function (type) { return this.reflectionCapabilities.factory(type); };\n /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n Reflector.prototype.parameters = /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n function (typeOrFunc) {\n return this.reflectionCapabilities.parameters(typeOrFunc);\n };\n /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n Reflector.prototype.annotations = /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n function (typeOrFunc) {\n return this.reflectionCapabilities.annotations(typeOrFunc);\n };\n /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n Reflector.prototype.propMetadata = /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n function (typeOrFunc) {\n return this.reflectionCapabilities.propMetadata(typeOrFunc);\n };\n /**\n * @param {?} type\n * @param {?} lcProperty\n * @return {?}\n */\n Reflector.prototype.hasLifecycleHook = /**\n * @param {?} type\n * @param {?} lcProperty\n * @return {?}\n */\n function (type, lcProperty) {\n return this.reflectionCapabilities.hasLifecycleHook(type, lcProperty);\n };\n /**\n * @param {?} name\n * @return {?}\n */\n Reflector.prototype.getter = /**\n * @param {?} name\n * @return {?}\n */\n function (name) { return this.reflectionCapabilities.getter(name); };\n /**\n * @param {?} name\n * @return {?}\n */\n Reflector.prototype.setter = /**\n * @param {?} name\n * @return {?}\n */\n function (name) { return this.reflectionCapabilities.setter(name); };\n /**\n * @param {?} name\n * @return {?}\n */\n Reflector.prototype.method = /**\n * @param {?} name\n * @return {?}\n */\n function (name) { return this.reflectionCapabilities.method(name); };\n /**\n * @param {?} type\n * @return {?}\n */\n Reflector.prototype.importUri = /**\n * @param {?} type\n * @return {?}\n */\n function (type) { return this.reflectionCapabilities.importUri(type); };\n /**\n * @param {?} type\n * @return {?}\n */\n Reflector.prototype.resourceUri = /**\n * @param {?} type\n * @return {?}\n */\n function (type) { return this.reflectionCapabilities.resourceUri(type); };\n /**\n * @param {?} name\n * @param {?} moduleUrl\n * @param {?} members\n * @param {?} runtime\n * @return {?}\n */\n Reflector.prototype.resolveIdentifier = /**\n * @param {?} name\n * @param {?} moduleUrl\n * @param {?} members\n * @param {?} runtime\n * @return {?}\n */\n function (name, moduleUrl, members, runtime) {\n return this.reflectionCapabilities.resolveIdentifier(name, moduleUrl, members, runtime);\n };\n /**\n * @param {?} identifier\n * @param {?} name\n * @return {?}\n */\n Reflector.prototype.resolveEnum = /**\n * @param {?} identifier\n * @param {?} name\n * @return {?}\n */\n function (identifier, name) {\n return this.reflectionCapabilities.resolveEnum(identifier, name);\n };\n return Reflector;\n}());\n\n/**\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 * The {\\@link Reflector} used internally in Angular to access metadata\n * about symbols.\n */\nvar reflector = new Reflector(new ReflectionCapabilities());\n\n/**\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 * `Dependency` is used by the framework to extend DI.\n * This is internal to Angular and should not be used directly.\n */\nvar ReflectiveDependency = /** @class */ (function () {\n function ReflectiveDependency(key, optional, visibility) {\n this.key = key;\n this.optional = optional;\n this.visibility = visibility;\n }\n /**\n * @param {?} key\n * @return {?}\n */\n ReflectiveDependency.fromKey = /**\n * @param {?} key\n * @return {?}\n */\n function (key) {\n return new ReflectiveDependency(key, false, null);\n };\n return ReflectiveDependency;\n}());\nvar _EMPTY_LIST = [];\n/**\n * An internal resolved representation of a {\\@link Provider} used by the {\\@link Injector}.\n *\n * It is usually created automatically by `Injector.resolveAndCreate`.\n *\n * It can be created manually, as follows:\n *\n * ### Example ([live demo](http://plnkr.co/edit/RfEnhh8kUEI0G3qsnIeT?p%3Dpreview&p=preview))\n *\n * ```typescript\n * var resolvedProviders = Injector.resolve([{ provide: 'message', useValue: 'Hello' }]);\n * var injector = Injector.fromResolvedProviders(resolvedProviders);\n *\n * expect(injector.get('message')).toEqual('Hello');\n * ```\n *\n * \\@experimental\n * @record\n */\n\nvar ResolvedReflectiveProvider_ = /** @class */ (function () {\n function ResolvedReflectiveProvider_(key, resolvedFactories, multiProvider) {\n this.key = key;\n this.resolvedFactories = resolvedFactories;\n this.multiProvider = multiProvider;\n this.resolvedFactory = this.resolvedFactories[0];\n }\n return ResolvedReflectiveProvider_;\n}());\n/**\n * An internal resolved representation of a factory function created by resolving {\\@link\n * Provider}.\n * \\@experimental\n */\nvar ResolvedReflectiveFactory = /** @class */ (function () {\n function ResolvedReflectiveFactory(factory, dependencies) {\n this.factory = factory;\n this.dependencies = dependencies;\n }\n return ResolvedReflectiveFactory;\n}());\n/**\n * Resolve a single provider.\n * @param {?} provider\n * @return {?}\n */\nfunction resolveReflectiveFactory(provider) {\n var /** @type {?} */ factoryFn;\n var /** @type {?} */ resolvedDeps;\n if (provider.useClass) {\n var /** @type {?} */ useClass = resolveForwardRef(provider.useClass);\n factoryFn = reflector.factory(useClass);\n resolvedDeps = _dependenciesFor(useClass);\n }\n else if (provider.useExisting) {\n factoryFn = function (aliasInstance) { return aliasInstance; };\n resolvedDeps = [ReflectiveDependency.fromKey(ReflectiveKey.get(provider.useExisting))];\n }\n else if (provider.useFactory) {\n factoryFn = provider.useFactory;\n resolvedDeps = constructDependencies(provider.useFactory, provider.deps);\n }\n else {\n factoryFn = function () { return provider.useValue; };\n resolvedDeps = _EMPTY_LIST;\n }\n return new ResolvedReflectiveFactory(factoryFn, resolvedDeps);\n}\n/**\n * Converts the {\\@link Provider} into {\\@link ResolvedProvider}.\n *\n * {\\@link Injector} internally only uses {\\@link ResolvedProvider}, {\\@link Provider} contains\n * convenience provider syntax.\n * @param {?} provider\n * @return {?}\n */\nfunction resolveReflectiveProvider(provider) {\n return new ResolvedReflectiveProvider_(ReflectiveKey.get(provider.provide), [resolveReflectiveFactory(provider)], provider.multi || false);\n}\n/**\n * Resolve a list of Providers.\n * @param {?} providers\n * @return {?}\n */\nfunction resolveReflectiveProviders(providers) {\n var /** @type {?} */ normalized = _normalizeProviders(providers, []);\n var /** @type {?} */ resolved = normalized.map(resolveReflectiveProvider);\n var /** @type {?} */ resolvedProviderMap = mergeResolvedReflectiveProviders(resolved, new Map());\n return Array.from(resolvedProviderMap.values());\n}\n/**\n * Merges a list of ResolvedProviders into a list where\n * each key is contained exactly once and multi providers\n * have been merged.\n * @param {?} providers\n * @param {?} normalizedProvidersMap\n * @return {?}\n */\nfunction mergeResolvedReflectiveProviders(providers, normalizedProvidersMap) {\n for (var /** @type {?} */ i = 0; i < providers.length; i++) {\n var /** @type {?} */ provider = providers[i];\n var /** @type {?} */ existing = normalizedProvidersMap.get(provider.key.id);\n if (existing) {\n if (provider.multiProvider !== existing.multiProvider) {\n throw mixingMultiProvidersWithRegularProvidersError(existing, provider);\n }\n if (provider.multiProvider) {\n for (var /** @type {?} */ j = 0; j < provider.resolvedFactories.length; j++) {\n existing.resolvedFactories.push(provider.resolvedFactories[j]);\n }\n }\n else {\n normalizedProvidersMap.set(provider.key.id, provider);\n }\n }\n else {\n var /** @type {?} */ resolvedProvider = void 0;\n if (provider.multiProvider) {\n resolvedProvider = new ResolvedReflectiveProvider_(provider.key, provider.resolvedFactories.slice(), provider.multiProvider);\n }\n else {\n resolvedProvider = provider;\n }\n normalizedProvidersMap.set(provider.key.id, resolvedProvider);\n }\n }\n return normalizedProvidersMap;\n}\n/**\n * @param {?} providers\n * @param {?} res\n * @return {?}\n */\nfunction _normalizeProviders(providers, res) {\n providers.forEach(function (b) {\n if (b instanceof Type) {\n res.push({ provide: b, useClass: b });\n }\n else if (b && typeof b == 'object' && (/** @type {?} */ (b)).provide !== undefined) {\n res.push(/** @type {?} */ (b));\n }\n else if (b instanceof Array) {\n _normalizeProviders(b, res);\n }\n else {\n throw invalidProviderError(b);\n }\n });\n return res;\n}\n/**\n * @param {?} typeOrFunc\n * @param {?=} dependencies\n * @return {?}\n */\nfunction constructDependencies(typeOrFunc, dependencies) {\n if (!dependencies) {\n return _dependenciesFor(typeOrFunc);\n }\n else {\n var /** @type {?} */ params_1 = dependencies.map(function (t) { return [t]; });\n return dependencies.map(function (t) { return _extractToken(typeOrFunc, t, params_1); });\n }\n}\n/**\n * @param {?} typeOrFunc\n * @return {?}\n */\nfunction _dependenciesFor(typeOrFunc) {\n var /** @type {?} */ params = reflector.parameters(typeOrFunc);\n if (!params)\n return [];\n if (params.some(function (p) { return p == null; })) {\n throw noAnnotationError(typeOrFunc, params);\n }\n return params.map(function (p) { return _extractToken(typeOrFunc, p, params); });\n}\n/**\n * @param {?} typeOrFunc\n * @param {?} metadata\n * @param {?} params\n * @return {?}\n */\nfunction _extractToken(typeOrFunc, metadata, params) {\n var /** @type {?} */ token = null;\n var /** @type {?} */ optional = false;\n if (!Array.isArray(metadata)) {\n if (metadata instanceof Inject) {\n return _createDependency(metadata.token, optional, null);\n }\n else {\n return _createDependency(metadata, optional, null);\n }\n }\n var /** @type {?} */ visibility = null;\n for (var /** @type {?} */ i = 0; i < metadata.length; ++i) {\n var /** @type {?} */ paramMetadata = metadata[i];\n if (paramMetadata instanceof Type) {\n token = paramMetadata;\n }\n else if (paramMetadata instanceof Inject) {\n token = paramMetadata.token;\n }\n else if (paramMetadata instanceof Optional) {\n optional = true;\n }\n else if (paramMetadata instanceof Self || paramMetadata instanceof SkipSelf) {\n visibility = paramMetadata;\n }\n else if (paramMetadata instanceof InjectionToken) {\n token = paramMetadata;\n }\n }\n token = resolveForwardRef(token);\n if (token != null) {\n return _createDependency(token, optional, visibility);\n }\n else {\n throw noAnnotationError(typeOrFunc, params);\n }\n}\n/**\n * @param {?} token\n * @param {?} optional\n * @param {?} visibility\n * @return {?}\n */\nfunction _createDependency(token, optional, visibility) {\n return new ReflectiveDependency(ReflectiveKey.get(token), optional, visibility);\n}\n\n/**\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// Threshold for the dynamic version\nvar UNDEFINED = new Object();\n/**\n * A ReflectiveDependency injection container used for instantiating objects and resolving\n * dependencies.\n *\n * An `Injector` is a replacement for a `new` operator, which can automatically resolve the\n * constructor dependencies.\n *\n * In typical use, application code asks for the dependencies in the constructor and they are\n * resolved by the `Injector`.\n *\n * ### Example ([live demo](http://plnkr.co/edit/jzjec0?p=preview))\n *\n * The following example creates an `Injector` configured to create `Engine` and `Car`.\n *\n * ```typescript\n * \\@Injectable()\n * class Engine {\n * }\n *\n * \\@Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]);\n * var car = injector.get(Car);\n * expect(car instanceof Car).toBe(true);\n * expect(car.engine instanceof Engine).toBe(true);\n * ```\n *\n * Notice, we don't use the `new` operator because we explicitly want to have the `Injector`\n * resolve all of the object's dependencies automatically.\n *\n * @deprecated from v5 - slow and brings in a lot of code, Use `Injector.create` instead.\n * @abstract\n */\nvar ReflectiveInjector = /** @class */ (function () {\n function ReflectiveInjector() {\n }\n /**\n * Turns an array of provider definitions into an array of resolved providers.\n *\n * A resolution is a process of flattening multiple nested arrays and converting individual\n * providers into an array of {@link ResolvedReflectiveProvider}s.\n *\n * ### Example ([live demo](http://plnkr.co/edit/AiXTHi?p=preview))\n *\n * ```typescript\n * @Injectable()\n * class Engine {\n * }\n *\n * @Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var providers = ReflectiveInjector.resolve([Car, [[Engine]]]);\n *\n * expect(providers.length).toEqual(2);\n *\n * expect(providers[0] instanceof ResolvedReflectiveProvider).toBe(true);\n * expect(providers[0].key.displayName).toBe(\"Car\");\n * expect(providers[0].dependencies.length).toEqual(1);\n * expect(providers[0].factory).toBeDefined();\n *\n * expect(providers[1].key.displayName).toBe(\"Engine\");\n * });\n * ```\n *\n * See {@link ReflectiveInjector#fromResolvedProviders fromResolvedProviders} for more info.\n */\n /**\n * Turns an array of provider definitions into an array of resolved providers.\n *\n * A resolution is a process of flattening multiple nested arrays and converting individual\n * providers into an array of {\\@link ResolvedReflectiveProvider}s.\n *\n * ### Example ([live demo](http://plnkr.co/edit/AiXTHi?p=preview))\n *\n * ```typescript\n * \\@Injectable()\n * class Engine {\n * }\n *\n * \\@Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var providers = ReflectiveInjector.resolve([Car, [[Engine]]]);\n *\n * expect(providers.length).toEqual(2);\n *\n * expect(providers[0] instanceof ResolvedReflectiveProvider).toBe(true);\n * expect(providers[0].key.displayName).toBe(\"Car\");\n * expect(providers[0].dependencies.length).toEqual(1);\n * expect(providers[0].factory).toBeDefined();\n *\n * expect(providers[1].key.displayName).toBe(\"Engine\");\n * });\n * ```\n *\n * See {\\@link ReflectiveInjector#fromResolvedProviders fromResolvedProviders} for more info.\n * @param {?} providers\n * @return {?}\n */\n ReflectiveInjector.resolve = /**\n * Turns an array of provider definitions into an array of resolved providers.\n *\n * A resolution is a process of flattening multiple nested arrays and converting individual\n * providers into an array of {\\@link ResolvedReflectiveProvider}s.\n *\n * ### Example ([live demo](http://plnkr.co/edit/AiXTHi?p=preview))\n *\n * ```typescript\n * \\@Injectable()\n * class Engine {\n * }\n *\n * \\@Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var providers = ReflectiveInjector.resolve([Car, [[Engine]]]);\n *\n * expect(providers.length).toEqual(2);\n *\n * expect(providers[0] instanceof ResolvedReflectiveProvider).toBe(true);\n * expect(providers[0].key.displayName).toBe(\"Car\");\n * expect(providers[0].dependencies.length).toEqual(1);\n * expect(providers[0].factory).toBeDefined();\n *\n * expect(providers[1].key.displayName).toBe(\"Engine\");\n * });\n * ```\n *\n * See {\\@link ReflectiveInjector#fromResolvedProviders fromResolvedProviders} for more info.\n * @param {?} providers\n * @return {?}\n */\n function (providers) {\n return resolveReflectiveProviders(providers);\n };\n /**\n * Resolves an array of providers and creates an injector from those providers.\n *\n * The passed-in providers can be an array of `Type`, {@link Provider},\n * or a recursive array of more providers.\n *\n * ### Example ([live demo](http://plnkr.co/edit/ePOccA?p=preview))\n *\n * ```typescript\n * @Injectable()\n * class Engine {\n * }\n *\n * @Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]);\n * expect(injector.get(Car) instanceof Car).toBe(true);\n * ```\n *\n * This function is slower than the corresponding `fromResolvedProviders`\n * because it needs to resolve the passed-in providers first.\n * See {@link ReflectiveInjector#resolve resolve} and\n * {@link ReflectiveInjector#fromResolvedProviders fromResolvedProviders}.\n */\n /**\n * Resolves an array of providers and creates an injector from those providers.\n *\n * The passed-in providers can be an array of `Type`, {\\@link Provider},\n * or a recursive array of more providers.\n *\n * ### Example ([live demo](http://plnkr.co/edit/ePOccA?p=preview))\n *\n * ```typescript\n * \\@Injectable()\n * class Engine {\n * }\n *\n * \\@Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]);\n * expect(injector.get(Car) instanceof Car).toBe(true);\n * ```\n *\n * This function is slower than the corresponding `fromResolvedProviders`\n * because it needs to resolve the passed-in providers first.\n * See {\\@link ReflectiveInjector#resolve resolve} and\n * {\\@link ReflectiveInjector#fromResolvedProviders fromResolvedProviders}.\n * @param {?} providers\n * @param {?=} parent\n * @return {?}\n */\n ReflectiveInjector.resolveAndCreate = /**\n * Resolves an array of providers and creates an injector from those providers.\n *\n * The passed-in providers can be an array of `Type`, {\\@link Provider},\n * or a recursive array of more providers.\n *\n * ### Example ([live demo](http://plnkr.co/edit/ePOccA?p=preview))\n *\n * ```typescript\n * \\@Injectable()\n * class Engine {\n * }\n *\n * \\@Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]);\n * expect(injector.get(Car) instanceof Car).toBe(true);\n * ```\n *\n * This function is slower than the corresponding `fromResolvedProviders`\n * because it needs to resolve the passed-in providers first.\n * See {\\@link ReflectiveInjector#resolve resolve} and\n * {\\@link ReflectiveInjector#fromResolvedProviders fromResolvedProviders}.\n * @param {?} providers\n * @param {?=} parent\n * @return {?}\n */\n function (providers, parent) {\n var /** @type {?} */ ResolvedReflectiveProviders = ReflectiveInjector.resolve(providers);\n return ReflectiveInjector.fromResolvedProviders(ResolvedReflectiveProviders, parent);\n };\n /**\n * Creates an injector from previously resolved providers.\n *\n * This API is the recommended way to construct injectors in performance-sensitive parts.\n *\n * ### Example ([live demo](http://plnkr.co/edit/KrSMci?p=preview))\n *\n * ```typescript\n * @Injectable()\n * class Engine {\n * }\n *\n * @Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var providers = ReflectiveInjector.resolve([Car, Engine]);\n * var injector = ReflectiveInjector.fromResolvedProviders(providers);\n * expect(injector.get(Car) instanceof Car).toBe(true);\n * ```\n * @experimental\n */\n /**\n * Creates an injector from previously resolved providers.\n *\n * This API is the recommended way to construct injectors in performance-sensitive parts.\n *\n * ### Example ([live demo](http://plnkr.co/edit/KrSMci?p=preview))\n *\n * ```typescript\n * \\@Injectable()\n * class Engine {\n * }\n *\n * \\@Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var providers = ReflectiveInjector.resolve([Car, Engine]);\n * var injector = ReflectiveInjector.fromResolvedProviders(providers);\n * expect(injector.get(Car) instanceof Car).toBe(true);\n * ```\n * \\@experimental\n * @param {?} providers\n * @param {?=} parent\n * @return {?}\n */\n ReflectiveInjector.fromResolvedProviders = /**\n * Creates an injector from previously resolved providers.\n *\n * This API is the recommended way to construct injectors in performance-sensitive parts.\n *\n * ### Example ([live demo](http://plnkr.co/edit/KrSMci?p=preview))\n *\n * ```typescript\n * \\@Injectable()\n * class Engine {\n * }\n *\n * \\@Injectable()\n * class Car {\n * constructor(public engine:Engine) {}\n * }\n *\n * var providers = ReflectiveInjector.resolve([Car, Engine]);\n * var injector = ReflectiveInjector.fromResolvedProviders(providers);\n * expect(injector.get(Car) instanceof Car).toBe(true);\n * ```\n * \\@experimental\n * @param {?} providers\n * @param {?=} parent\n * @return {?}\n */\n function (providers, parent) {\n return new ReflectiveInjector_(providers, parent);\n };\n return ReflectiveInjector;\n}());\nvar ReflectiveInjector_ = /** @class */ (function () {\n /**\n * Private\n */\n function ReflectiveInjector_(_providers, _parent) {\n /**\n * \\@internal\n */\n this._constructionCounter = 0;\n this._providers = _providers;\n this.parent = _parent || null;\n var /** @type {?} */ len = _providers.length;\n this.keyIds = new Array(len);\n this.objs = new Array(len);\n for (var /** @type {?} */ i = 0; i < len; i++) {\n this.keyIds[i] = _providers[i].key.id;\n this.objs[i] = UNDEFINED;\n }\n }\n /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n ReflectiveInjector_.prototype.get = /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n function (token, notFoundValue) {\n if (notFoundValue === void 0) { notFoundValue = THROW_IF_NOT_FOUND; }\n return this._getByKey(ReflectiveKey.get(token), null, notFoundValue);\n };\n /**\n * @param {?} providers\n * @return {?}\n */\n ReflectiveInjector_.prototype.resolveAndCreateChild = /**\n * @param {?} providers\n * @return {?}\n */\n function (providers) {\n var /** @type {?} */ ResolvedReflectiveProviders = ReflectiveInjector.resolve(providers);\n return this.createChildFromResolved(ResolvedReflectiveProviders);\n };\n /**\n * @param {?} providers\n * @return {?}\n */\n ReflectiveInjector_.prototype.createChildFromResolved = /**\n * @param {?} providers\n * @return {?}\n */\n function (providers) {\n var /** @type {?} */ inj = new ReflectiveInjector_(providers);\n (/** @type {?} */ (inj)).parent = this;\n return inj;\n };\n /**\n * @param {?} provider\n * @return {?}\n */\n ReflectiveInjector_.prototype.resolveAndInstantiate = /**\n * @param {?} provider\n * @return {?}\n */\n function (provider) {\n return this.instantiateResolved(ReflectiveInjector.resolve([provider])[0]);\n };\n /**\n * @param {?} provider\n * @return {?}\n */\n ReflectiveInjector_.prototype.instantiateResolved = /**\n * @param {?} provider\n * @return {?}\n */\n function (provider) {\n return this._instantiateProvider(provider);\n };\n /**\n * @param {?} index\n * @return {?}\n */\n ReflectiveInjector_.prototype.getProviderAtIndex = /**\n * @param {?} index\n * @return {?}\n */\n function (index) {\n if (index < 0 || index >= this._providers.length) {\n throw outOfBoundsError(index);\n }\n return this._providers[index];\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} provider\n * @return {?}\n */\n ReflectiveInjector_.prototype._new = /**\n * \\@internal\n * @param {?} provider\n * @return {?}\n */\n function (provider) {\n if (this._constructionCounter++ > this._getMaxNumberOfObjects()) {\n throw cyclicDependencyError(this, provider.key);\n }\n return this._instantiateProvider(provider);\n };\n /**\n * @return {?}\n */\n ReflectiveInjector_.prototype._getMaxNumberOfObjects = /**\n * @return {?}\n */\n function () { return this.objs.length; };\n /**\n * @param {?} provider\n * @return {?}\n */\n ReflectiveInjector_.prototype._instantiateProvider = /**\n * @param {?} provider\n * @return {?}\n */\n function (provider) {\n if (provider.multiProvider) {\n var /** @type {?} */ res = new Array(provider.resolvedFactories.length);\n for (var /** @type {?} */ i = 0; i < provider.resolvedFactories.length; ++i) {\n res[i] = this._instantiate(provider, provider.resolvedFactories[i]);\n }\n return res;\n }\n else {\n return this._instantiate(provider, provider.resolvedFactories[0]);\n }\n };\n /**\n * @param {?} provider\n * @param {?} ResolvedReflectiveFactory\n * @return {?}\n */\n ReflectiveInjector_.prototype._instantiate = /**\n * @param {?} provider\n * @param {?} ResolvedReflectiveFactory\n * @return {?}\n */\n function (provider, ResolvedReflectiveFactory$$1) {\n var _this = this;\n var /** @type {?} */ factory = ResolvedReflectiveFactory$$1.factory;\n var /** @type {?} */ deps;\n try {\n deps =\n ResolvedReflectiveFactory$$1.dependencies.map(function (dep) { return _this._getByReflectiveDependency(dep); });\n }\n catch (/** @type {?} */ e) {\n if (e.addKey) {\n e.addKey(this, provider.key);\n }\n throw e;\n }\n var /** @type {?} */ obj;\n try {\n obj = factory.apply(void 0, deps);\n }\n catch (/** @type {?} */ e) {\n throw instantiationError(this, e, e.stack, provider.key);\n }\n return obj;\n };\n /**\n * @param {?} dep\n * @return {?}\n */\n ReflectiveInjector_.prototype._getByReflectiveDependency = /**\n * @param {?} dep\n * @return {?}\n */\n function (dep) {\n return this._getByKey(dep.key, dep.visibility, dep.optional ? null : THROW_IF_NOT_FOUND);\n };\n /**\n * @param {?} key\n * @param {?} visibility\n * @param {?} notFoundValue\n * @return {?}\n */\n ReflectiveInjector_.prototype._getByKey = /**\n * @param {?} key\n * @param {?} visibility\n * @param {?} notFoundValue\n * @return {?}\n */\n function (key, visibility, notFoundValue) {\n if (key === ReflectiveInjector_.INJECTOR_KEY) {\n return this;\n }\n if (visibility instanceof Self) {\n return this._getByKeySelf(key, notFoundValue);\n }\n else {\n return this._getByKeyDefault(key, notFoundValue, visibility);\n }\n };\n /**\n * @param {?} keyId\n * @return {?}\n */\n ReflectiveInjector_.prototype._getObjByKeyId = /**\n * @param {?} keyId\n * @return {?}\n */\n function (keyId) {\n for (var /** @type {?} */ i = 0; i < this.keyIds.length; i++) {\n if (this.keyIds[i] === keyId) {\n if (this.objs[i] === UNDEFINED) {\n this.objs[i] = this._new(this._providers[i]);\n }\n return this.objs[i];\n }\n }\n return UNDEFINED;\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} key\n * @param {?} notFoundValue\n * @return {?}\n */\n ReflectiveInjector_.prototype._throwOrNull = /**\n * \\@internal\n * @param {?} key\n * @param {?} notFoundValue\n * @return {?}\n */\n function (key, notFoundValue) {\n if (notFoundValue !== THROW_IF_NOT_FOUND) {\n return notFoundValue;\n }\n else {\n throw noProviderError(this, key);\n }\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} key\n * @param {?} notFoundValue\n * @return {?}\n */\n ReflectiveInjector_.prototype._getByKeySelf = /**\n * \\@internal\n * @param {?} key\n * @param {?} notFoundValue\n * @return {?}\n */\n function (key, notFoundValue) {\n var /** @type {?} */ obj = this._getObjByKeyId(key.id);\n return (obj !== UNDEFINED) ? obj : this._throwOrNull(key, notFoundValue);\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} key\n * @param {?} notFoundValue\n * @param {?} visibility\n * @return {?}\n */\n ReflectiveInjector_.prototype._getByKeyDefault = /**\n * \\@internal\n * @param {?} key\n * @param {?} notFoundValue\n * @param {?} visibility\n * @return {?}\n */\n function (key, notFoundValue, visibility) {\n var /** @type {?} */ inj;\n if (visibility instanceof SkipSelf) {\n inj = this.parent;\n }\n else {\n inj = this;\n }\n while (inj instanceof ReflectiveInjector_) {\n var /** @type {?} */ inj_ = /** @type {?} */ (inj);\n var /** @type {?} */ obj = inj_._getObjByKeyId(key.id);\n if (obj !== UNDEFINED)\n return obj;\n inj = inj_.parent;\n }\n if (inj !== null) {\n return inj.get(key.token, notFoundValue);\n }\n else {\n return this._throwOrNull(key, notFoundValue);\n }\n };\n Object.defineProperty(ReflectiveInjector_.prototype, \"displayName\", {\n get: /**\n * @return {?}\n */\n function () {\n var /** @type {?} */ providers = _mapProviders(this, function (b) { return ' \"' + b.key.displayName + '\" '; })\n .join(', ');\n return \"ReflectiveInjector(providers: [\" + providers + \"])\";\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n ReflectiveInjector_.prototype.toString = /**\n * @return {?}\n */\n function () { return this.displayName; };\n ReflectiveInjector_.INJECTOR_KEY = ReflectiveKey.get(Injector);\n return ReflectiveInjector_;\n}());\n/**\n * @param {?} injector\n * @param {?} fn\n * @return {?}\n */\nfunction _mapProviders(injector, fn) {\n var /** @type {?} */ res = new Array(injector._providers.length);\n for (var /** @type {?} */ i = 0; i < injector._providers.length; ++i) {\n res[i] = fn(injector.getProviderAtIndex(i));\n }\n return res;\n}\n\n/**\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 * The `di` module provides dependency injection container services.\n */\n\n/**\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 * Determine if the argument is shaped like a Promise\n * @param {?} obj\n * @return {?}\n */\nfunction isPromise(obj) {\n // allow any Promise/A+ compliant thenable.\n // It's up to the caller to ensure that obj.then conforms to the spec\n return !!obj && typeof obj.then === 'function';\n}\n/**\n * Determine if the argument is an Observable\n * @param {?} obj\n * @return {?}\n */\nfunction isObservable(obj) {\n // TODO use Symbol.observable when https://github.com/ReactiveX/rxjs/issues/2415 will be resolved\n return !!obj && typeof obj.subscribe === 'function';\n}\n\n/**\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 * A function that will be executed when an application is initialized.\n * \\@experimental\n */\nvar APP_INITIALIZER = new InjectionToken('Application Initializer');\n/**\n * A class that reflects the state of running {\\@link APP_INITIALIZER}s.\n *\n * \\@experimental\n */\nvar ApplicationInitStatus = /** @class */ (function () {\n function ApplicationInitStatus(appInits) {\n var _this = this;\n this.appInits = appInits;\n this.initialized = false;\n this.done = false;\n this.donePromise = new Promise(function (res, rej) {\n _this.resolve = res;\n _this.reject = rej;\n });\n }\n /** @internal */\n /**\n * \\@internal\n * @return {?}\n */\n ApplicationInitStatus.prototype.runInitializers = /**\n * \\@internal\n * @return {?}\n */\n function () {\n var _this = this;\n if (this.initialized) {\n return;\n }\n var /** @type {?} */ asyncInitPromises = [];\n var /** @type {?} */ complete = function () {\n (/** @type {?} */ (_this)).done = true;\n _this.resolve();\n };\n if (this.appInits) {\n for (var /** @type {?} */ i = 0; i < this.appInits.length; i++) {\n var /** @type {?} */ initResult = this.appInits[i]();\n if (isPromise(initResult)) {\n asyncInitPromises.push(initResult);\n }\n }\n }\n Promise.all(asyncInitPromises).then(function () { complete(); }).catch(function (e) { _this.reject(e); });\n if (asyncInitPromises.length === 0) {\n complete();\n }\n this.initialized = true;\n };\n ApplicationInitStatus.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n ApplicationInitStatus.ctorParameters = function () { return [\n { type: Array, decorators: [{ type: Inject, args: [APP_INITIALIZER,] }, { type: Optional },] },\n ]; };\n return ApplicationInitStatus;\n}());\n\n/**\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 * A DI Token representing a unique string id assigned to the application by Angular and used\n * primarily for prefixing application attributes and CSS styles when\n * {\\@link ViewEncapsulation#Emulated ViewEncapsulation.Emulated} is being used.\n *\n * If you need to avoid randomly generated value to be used as an application id, you can provide\n * a custom value via a DI provider <!-- TODO: provider --> configuring the root {\\@link Injector}\n * using this token.\n * \\@experimental\n */\nvar APP_ID = new InjectionToken('AppId');\n/**\n * @return {?}\n */\nfunction _appIdRandomProviderFactory() {\n return \"\" + _randomChar() + _randomChar() + _randomChar();\n}\n/**\n * Providers that will generate a random APP_ID_TOKEN.\n * \\@experimental\n */\nvar APP_ID_RANDOM_PROVIDER = {\n provide: APP_ID,\n useFactory: _appIdRandomProviderFactory,\n deps: /** @type {?} */ ([]),\n};\n/**\n * @return {?}\n */\nfunction _randomChar() {\n return String.fromCharCode(97 + Math.floor(Math.random() * 25));\n}\n/**\n * A function that will be executed when a platform is initialized.\n * \\@experimental\n */\nvar PLATFORM_INITIALIZER = new InjectionToken('Platform Initializer');\n/**\n * A token that indicates an opaque platform id.\n * \\@experimental\n */\nvar PLATFORM_ID = new InjectionToken('Platform ID');\n/**\n * All callbacks provided via this token will be called for every component that is bootstrapped.\n * Signature of the callback:\n *\n * `(componentRef: ComponentRef) => void`.\n *\n * \\@experimental\n */\nvar APP_BOOTSTRAP_LISTENER = new InjectionToken('appBootstrapListener');\n/**\n * A token which indicates the root directory of the application\n * \\@experimental\n */\nvar PACKAGE_ROOT_URL = new InjectionToken('Application Packages Root URL');\n\n/**\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 */\nvar Console = /** @class */ (function () {\n function Console() {\n }\n /**\n * @param {?} message\n * @return {?}\n */\n Console.prototype.log = /**\n * @param {?} message\n * @return {?}\n */\n function (message) {\n // tslint:disable-next-line:no-console\n console.log(message);\n };\n // Note: for reporting errors use `DOM.logError()` as it is platform specific\n /**\n * @param {?} message\n * @return {?}\n */\n Console.prototype.warn = /**\n * @param {?} message\n * @return {?}\n */\n function (message) {\n // tslint:disable-next-line:no-console\n console.warn(message);\n };\n Console.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n Console.ctorParameters = function () { return []; };\n return Console;\n}());\n\n/**\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 * Combination of NgModuleFactory and ComponentFactorys.\n *\n * \\@experimental\n */\nvar ModuleWithComponentFactories = /** @class */ (function () {\n function ModuleWithComponentFactories(ngModuleFactory, componentFactories) {\n this.ngModuleFactory = ngModuleFactory;\n this.componentFactories = componentFactories;\n }\n return ModuleWithComponentFactories;\n}());\n/**\n * @return {?}\n */\nfunction _throwError() {\n throw new Error(\"Runtime compiler is not loaded\");\n}\n/**\n * Low-level service for running the angular compiler during runtime\n * to create {\\@link ComponentFactory}s, which\n * can later be used to create and render a Component instance.\n *\n * Each `\\@NgModule` provides an own `Compiler` to its injector,\n * that will use the directives/pipes of the ng module for compilation\n * of components.\n * \\@stable\n */\nvar Compiler = /** @class */ (function () {\n function Compiler() {\n }\n /**\n * Compiles the given NgModule and all of its components. All templates of the components listed\n * in `entryComponents` have to be inlined.\n */\n /**\n * Compiles the given NgModule and all of its components. All templates of the components listed\n * in `entryComponents` have to be inlined.\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n Compiler.prototype.compileModuleSync = /**\n * Compiles the given NgModule and all of its components. All templates of the components listed\n * in `entryComponents` have to be inlined.\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n function (moduleType) { throw _throwError(); };\n /**\n * Compiles the given NgModule and all of its components\n */\n /**\n * Compiles the given NgModule and all of its components\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n Compiler.prototype.compileModuleAsync = /**\n * Compiles the given NgModule and all of its components\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n function (moduleType) { throw _throwError(); };\n /**\n * Same as {@link #compileModuleSync} but also creates ComponentFactories for all components.\n */\n /**\n * Same as {\\@link #compileModuleSync} but also creates ComponentFactories for all components.\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n Compiler.prototype.compileModuleAndAllComponentsSync = /**\n * Same as {\\@link #compileModuleSync} but also creates ComponentFactories for all components.\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n function (moduleType) {\n throw _throwError();\n };\n /**\n * Same as {@link #compileModuleAsync} but also creates ComponentFactories for all components.\n */\n /**\n * Same as {\\@link #compileModuleAsync} but also creates ComponentFactories for all components.\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n Compiler.prototype.compileModuleAndAllComponentsAsync = /**\n * Same as {\\@link #compileModuleAsync} but also creates ComponentFactories for all components.\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n function (moduleType) {\n throw _throwError();\n };\n /**\n * Clears all caches.\n */\n /**\n * Clears all caches.\n * @return {?}\n */\n Compiler.prototype.clearCache = /**\n * Clears all caches.\n * @return {?}\n */\n function () { };\n /**\n * Clears the cache for the given component/ngModule.\n */\n /**\n * Clears the cache for the given component/ngModule.\n * @param {?} type\n * @return {?}\n */\n Compiler.prototype.clearCacheFor = /**\n * Clears the cache for the given component/ngModule.\n * @param {?} type\n * @return {?}\n */\n function (type) { };\n Compiler.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n Compiler.ctorParameters = function () { return []; };\n return Compiler;\n}());\n/**\n * Token to provide CompilerOptions in the platform injector.\n *\n * \\@experimental\n */\nvar COMPILER_OPTIONS = new InjectionToken('compilerOptions');\n/**\n * A factory for creating a Compiler\n *\n * \\@experimental\n * @abstract\n */\nvar CompilerFactory = /** @class */ (function () {\n function CompilerFactory() {\n }\n return CompilerFactory;\n}());\n\n/**\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 * Represents an instance of a Component created via a {\\@link ComponentFactory}.\n *\n * `ComponentRef` provides access to the Component Instance as well other objects related to this\n * Component Instance and allows you to destroy the Component Instance via the {\\@link #destroy}\n * method.\n * \\@stable\n * @abstract\n */\nvar ComponentRef = /** @class */ (function () {\n function ComponentRef() {\n }\n return ComponentRef;\n}());\n/**\n * \\@stable\n * @abstract\n */\nvar ComponentFactory = /** @class */ (function () {\n function ComponentFactory() {\n }\n return ComponentFactory;\n}());\n\n/**\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 * @param {?} component\n * @return {?}\n */\nfunction noComponentFactoryError(component) {\n var /** @type {?} */ error = Error(\"No component factory found for \" + stringify(component) + \". Did you add it to @NgModule.entryComponents?\");\n (/** @type {?} */ (error))[ERROR_COMPONENT] = component;\n return error;\n}\nvar ERROR_COMPONENT = 'ngComponent';\n/**\n * @param {?} error\n * @return {?}\n */\n\nvar _NullComponentFactoryResolver = /** @class */ (function () {\n function _NullComponentFactoryResolver() {\n }\n /**\n * @template T\n * @param {?} component\n * @return {?}\n */\n _NullComponentFactoryResolver.prototype.resolveComponentFactory = /**\n * @template T\n * @param {?} component\n * @return {?}\n */\n function (component) {\n throw noComponentFactoryError(component);\n };\n return _NullComponentFactoryResolver;\n}());\n/**\n * \\@stable\n * @abstract\n */\nvar ComponentFactoryResolver = /** @class */ (function () {\n function ComponentFactoryResolver() {\n }\n ComponentFactoryResolver.NULL = new _NullComponentFactoryResolver();\n return ComponentFactoryResolver;\n}());\nvar CodegenComponentFactoryResolver = /** @class */ (function () {\n function CodegenComponentFactoryResolver(factories, _parent, _ngModule) {\n this._parent = _parent;\n this._ngModule = _ngModule;\n this._factories = new Map();\n for (var /** @type {?} */ i = 0; i < factories.length; i++) {\n var /** @type {?} */ factory = factories[i];\n this._factories.set(factory.componentType, factory);\n }\n }\n /**\n * @template T\n * @param {?} component\n * @return {?}\n */\n CodegenComponentFactoryResolver.prototype.resolveComponentFactory = /**\n * @template T\n * @param {?} component\n * @return {?}\n */\n function (component) {\n var /** @type {?} */ factory = this._factories.get(component);\n if (!factory && this._parent) {\n factory = this._parent.resolveComponentFactory(component);\n }\n if (!factory) {\n throw noComponentFactoryError(component);\n }\n return new ComponentFactoryBoundToModule(factory, this._ngModule);\n };\n return CodegenComponentFactoryResolver;\n}());\nvar ComponentFactoryBoundToModule = /** @class */ (function (_super) {\n __extends(ComponentFactoryBoundToModule, _super);\n function ComponentFactoryBoundToModule(factory, ngModule) {\n var _this = _super.call(this) || this;\n _this.factory = factory;\n _this.ngModule = ngModule;\n _this.selector = factory.selector;\n _this.componentType = factory.componentType;\n _this.ngContentSelectors = factory.ngContentSelectors;\n _this.inputs = factory.inputs;\n _this.outputs = factory.outputs;\n return _this;\n }\n /**\n * @param {?} injector\n * @param {?=} projectableNodes\n * @param {?=} rootSelectorOrNode\n * @param {?=} ngModule\n * @return {?}\n */\n ComponentFactoryBoundToModule.prototype.create = /**\n * @param {?} injector\n * @param {?=} projectableNodes\n * @param {?=} rootSelectorOrNode\n * @param {?=} ngModule\n * @return {?}\n */\n function (injector, projectableNodes, rootSelectorOrNode, ngModule) {\n return this.factory.create(injector, projectableNodes, rootSelectorOrNode, ngModule || this.ngModule);\n };\n return ComponentFactoryBoundToModule;\n}(ComponentFactory));\n\n/**\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 * Represents an instance of an NgModule created via a {\\@link NgModuleFactory}.\n *\n * `NgModuleRef` provides access to the NgModule Instance as well other objects related to this\n * NgModule Instance.\n *\n * \\@stable\n * @abstract\n */\nvar NgModuleRef = /** @class */ (function () {\n function NgModuleRef() {\n }\n return NgModuleRef;\n}());\n/**\n * @record\n */\n\n/**\n * \\@experimental\n * @abstract\n */\nvar NgModuleFactory = /** @class */ (function () {\n function NgModuleFactory() {\n }\n return NgModuleFactory;\n}());\n\n/**\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 * A scope function for the Web Tracing Framework (WTF).\n *\n * \\@experimental\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\nvar trace;\nvar events;\n/**\n * @return {?}\n */\nfunction detectWTF() {\n var /** @type {?} */ wtf = (/** @type {?} */ (_global /** TODO #9100 */) /** TODO #9100 */)['wtf'];\n if (wtf) {\n trace = wtf['trace'];\n if (trace) {\n events = trace['events'];\n return true;\n }\n }\n return false;\n}\n/**\n * @param {?} signature\n * @param {?=} flags\n * @return {?}\n */\nfunction createScope(signature, flags) {\n if (flags === void 0) { flags = null; }\n return events.createScope(signature, flags);\n}\n/**\n * @template T\n * @param {?} scope\n * @param {?=} returnValue\n * @return {?}\n */\nfunction leave(scope, returnValue) {\n trace.leaveScope(scope, returnValue);\n return returnValue;\n}\n/**\n * @param {?} rangeType\n * @param {?} action\n * @return {?}\n */\nfunction startTimeRange(rangeType, action) {\n return trace.beginTimeRange(rangeType, action);\n}\n/**\n * @param {?} range\n * @return {?}\n */\nfunction endTimeRange(range) {\n trace.endTimeRange(range);\n}\n\n/**\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 * True if WTF is enabled.\n */\nvar wtfEnabled = detectWTF();\n/**\n * @param {?=} arg0\n * @param {?=} arg1\n * @return {?}\n */\nfunction noopScope(arg0, arg1) {\n return null;\n}\n/**\n * Create trace scope.\n *\n * Scopes must be strictly nested and are analogous to stack frames, but\n * do not have to follow the stack frames. Instead it is recommended that they follow logical\n * nesting. You may want to use\n * [Event\n * Signatures](http://google.github.io/tracing-framework/instrumenting-code.html#custom-events)\n * as they are defined in WTF.\n *\n * Used to mark scope entry. The return value is used to leave the scope.\n *\n * var myScope = wtfCreateScope('MyClass#myMethod(ascii someVal)');\n *\n * someMethod() {\n * var s = myScope('Foo'); // 'Foo' gets stored in tracing UI\n * // DO SOME WORK HERE\n * return wtfLeave(s, 123); // Return value 123\n * }\n *\n * Note, adding try-finally block around the work to ensure that `wtfLeave` gets called can\n * negatively impact the performance of your application. For this reason we recommend that\n * you don't add them to ensure that `wtfLeave` gets called. In production `wtfLeave` is a noop and\n * so try-finally block has no value. When debugging perf issues, skipping `wtfLeave`, do to\n * exception, will produce incorrect trace, but presence of exception signifies logic error which\n * needs to be fixed before the app should be profiled. Add try-finally only when you expect that\n * an exception is expected during normal execution while profiling.\n *\n * \\@experimental\n */\nvar wtfCreateScope = wtfEnabled ? createScope : function (signature, flags) { return noopScope; };\n/**\n * Used to mark end of Scope.\n *\n * - `scope` to end.\n * - `returnValue` (optional) to be passed to the WTF.\n *\n * Returns the `returnValue for easy chaining.\n * \\@experimental\n */\nvar wtfLeave = wtfEnabled ? leave : function (s, r) { return r; };\n/**\n * Used to mark Async start. Async are similar to scope but they don't have to be strictly nested.\n * The return value is used in the call to [endAsync]. Async ranges only work if WTF has been\n * enabled.\n *\n * someMethod() {\n * var s = wtfStartTimeRange('HTTP:GET', 'some.url');\n * var future = new Future.delay(5).then((_) {\n * wtfEndTimeRange(s);\n * });\n * }\n * \\@experimental\n */\nvar wtfStartTimeRange = wtfEnabled ? startTimeRange : function (rangeType, action) { return null; };\n/**\n * Ends a async time range operation.\n * [range] is the return value from [wtfStartTimeRange] Async ranges only work if WTF has been\n * enabled.\n * \\@experimental\n */\nvar wtfEndTimeRange = wtfEnabled ? endTimeRange : function (r) { return null; };\n\n/**\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 * Use by directives and components to emit custom Events.\n *\n * ### Examples\n *\n * In the following example, `Zippy` alternatively emits `open` and `close` events when its\n * title gets clicked:\n *\n * ```\n * \\@Component({\n * selector: 'zippy',\n * template: `\n * <div class=\"zippy\">\n * <div (click)=\"toggle()\">Toggle</div>\n * <div [hidden]=\"!visible\">\n * <ng-content></ng-content>\n * </div>\n * </div>`})\n * export class Zippy {\n * visible: boolean = true;\n * \\@Output() open: EventEmitter<any> = new EventEmitter();\n * \\@Output() close: EventEmitter<any> = new EventEmitter();\n *\n * toggle() {\n * this.visible = !this.visible;\n * if (this.visible) {\n * this.open.emit(null);\n * } else {\n * this.close.emit(null);\n * }\n * }\n * }\n * ```\n *\n * The events payload can be accessed by the parameter `$event` on the components output event\n * handler:\n *\n * ```\n * <zippy (open)=\"onOpen($event)\" (close)=\"onClose($event)\"></zippy>\n * ```\n *\n * Uses Rx.Observable but provides an adapter to make it work as specified here:\n * https://github.com/jhusain/observable-spec\n *\n * Once a reference implementation of the spec is available, switch to it.\n * \\@stable\n */\nvar EventEmitter = /** @class */ (function (_super) {\n __extends(EventEmitter, _super);\n /**\n * Creates an instance of {@link EventEmitter}, which depending on `isAsync`,\n * delivers events synchronously or asynchronously.\n *\n * @param isAsync By default, events are delivered synchronously (default value: `false`).\n * Set to `true` for asynchronous event delivery.\n */\n function EventEmitter(isAsync) {\n if (isAsync === void 0) { isAsync = false; }\n var _this = _super.call(this) || this;\n _this.__isAsync = isAsync;\n return _this;\n }\n /**\n * @param {?=} value\n * @return {?}\n */\n EventEmitter.prototype.emit = /**\n * @param {?=} value\n * @return {?}\n */\n function (value) { _super.prototype.next.call(this, value); };\n /**\n * @param {?=} generatorOrNext\n * @param {?=} error\n * @param {?=} complete\n * @return {?}\n */\n EventEmitter.prototype.subscribe = /**\n * @param {?=} generatorOrNext\n * @param {?=} error\n * @param {?=} complete\n * @return {?}\n */\n function (generatorOrNext, error, complete) {\n var /** @type {?} */ schedulerFn;\n var /** @type {?} */ errorFn = function (err) { return null; };\n var /** @type {?} */ completeFn = function () { return null; };\n if (generatorOrNext && typeof generatorOrNext === 'object') {\n schedulerFn = this.__isAsync ? function (value) {\n setTimeout(function () { return generatorOrNext.next(value); });\n } : function (value) { generatorOrNext.next(value); };\n if (generatorOrNext.error) {\n errorFn = this.__isAsync ? function (err) { setTimeout(function () { return generatorOrNext.error(err); }); } :\n function (err) { generatorOrNext.error(err); };\n }\n if (generatorOrNext.complete) {\n completeFn = this.__isAsync ? function () { setTimeout(function () { return generatorOrNext.complete(); }); } :\n function () { generatorOrNext.complete(); };\n }\n }\n else {\n schedulerFn = this.__isAsync ? function (value) { setTimeout(function () { return generatorOrNext(value); }); } :\n function (value) { generatorOrNext(value); };\n if (error) {\n errorFn =\n this.__isAsync ? function (err) { setTimeout(function () { return error(err); }); } : function (err) { error(err); };\n }\n if (complete) {\n completeFn =\n this.__isAsync ? function () { setTimeout(function () { return complete(); }); } : function () { complete(); };\n }\n }\n var /** @type {?} */ sink = _super.prototype.subscribe.call(this, schedulerFn, errorFn, completeFn);\n if (generatorOrNext instanceof rxjs_Subscription.Subscription) {\n generatorOrNext.add(sink);\n }\n return sink;\n };\n return EventEmitter;\n}(rxjs_Subject.Subject));\n\n/**\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 * An injectable service for executing work inside or outside of the Angular zone.\n *\n * The most common use of this service is to optimize performance when starting a work consisting of\n * one or more asynchronous tasks that don't require UI updates or error handling to be handled by\n * Angular. Such tasks can be kicked off via {\\@link #runOutsideAngular} and if needed, these tasks\n * can reenter the Angular zone via {\\@link #run}.\n *\n * <!-- TODO: add/fix links to:\n * - docs explaining zones and the use of zones in Angular and change-detection\n * - link to runOutsideAngular/run (throughout this file!)\n * -->\n *\n * ### Example\n *\n * ```\n * import {Component, NgZone} from '\\@angular/core';\n * import {NgIf} from '\\@angular/common';\n *\n * \\@Component({\n * selector: 'ng-zone-demo',\n * template: `\n * <h2>Demo: NgZone</h2>\n *\n * <p>Progress: {{progress}}%</p>\n * <p *ngIf=\"progress >= 100\">Done processing {{label}} of Angular zone!</p>\n *\n * <button (click)=\"processWithinAngularZone()\">Process within Angular zone</button>\n * <button (click)=\"processOutsideOfAngularZone()\">Process outside of Angular zone</button>\n * `,\n * })\n * export class NgZoneDemo {\n * progress: number = 0;\n * label: string;\n *\n * constructor(private _ngZone: NgZone) {}\n *\n * // Loop inside the Angular zone\n * // so the UI DOES refresh after each setTimeout cycle\n * processWithinAngularZone() {\n * this.label = 'inside';\n * this.progress = 0;\n * this._increaseProgress(() => console.log('Inside Done!'));\n * }\n *\n * // Loop outside of the Angular zone\n * // so the UI DOES NOT refresh after each setTimeout cycle\n * processOutsideOfAngularZone() {\n * this.label = 'outside';\n * this.progress = 0;\n * this._ngZone.runOutsideAngular(() => {\n * this._increaseProgress(() => {\n * // reenter the Angular zone and display done\n * this._ngZone.run(() => { console.log('Outside Done!'); });\n * });\n * });\n * }\n *\n * _increaseProgress(doneCallback: () => void) {\n * this.progress += 1;\n * console.log(`Current progress: ${this.progress}%`);\n *\n * if (this.progress < 100) {\n * window.setTimeout(() => this._increaseProgress(doneCallback), 10);\n * } else {\n * doneCallback();\n * }\n * }\n * }\n * ```\n *\n * \\@experimental\n */\nvar NgZone = /** @class */ (function () {\n function NgZone(_a) {\n var _b = _a.enableLongStackTrace, enableLongStackTrace = _b === void 0 ? false : _b;\n this.hasPendingMicrotasks = false;\n this.hasPendingMacrotasks = false;\n /**\n * Whether there are no outstanding microtasks or macrotasks.\n */\n this.isStable = true;\n /**\n * Notifies when code enters Angular Zone. This gets fired first on VM Turn.\n */\n this.onUnstable = new EventEmitter(false);\n /**\n * Notifies when there is no more microtasks enqueued in the current VM Turn.\n * This is a hint for Angular to do change detection, which may enqueue more microtasks.\n * For this reason this event can fire multiple times per VM Turn.\n */\n this.onMicrotaskEmpty = new EventEmitter(false);\n /**\n * Notifies when the last `onMicrotaskEmpty` has run and there are no more microtasks, which\n * implies we are about to relinquish VM turn.\n * This event gets called just once.\n */\n this.onStable = new EventEmitter(false);\n /**\n * Notifies that an error has been delivered.\n */\n this.onError = new EventEmitter(false);\n if (typeof Zone == 'undefined') {\n throw new Error(\"In this configuration Angular requires Zone.js\");\n }\n Zone.assertZonePatched();\n var /** @type {?} */ self = /** @type {?} */ ((this));\n self._nesting = 0;\n self._outer = self._inner = Zone.current;\n if ((/** @type {?} */ (Zone))['wtfZoneSpec']) {\n self._inner = self._inner.fork((/** @type {?} */ (Zone))['wtfZoneSpec']);\n }\n if (enableLongStackTrace && (/** @type {?} */ (Zone))['longStackTraceZoneSpec']) {\n self._inner = self._inner.fork((/** @type {?} */ (Zone))['longStackTraceZoneSpec']);\n }\n forkInnerZoneWithAngularBehavior(self);\n }\n /**\n * @return {?}\n */\n NgZone.isInAngularZone = /**\n * @return {?}\n */\n function () { return Zone.current.get('isAngularZone') === true; };\n /**\n * @return {?}\n */\n NgZone.assertInAngularZone = /**\n * @return {?}\n */\n function () {\n if (!NgZone.isInAngularZone()) {\n throw new Error('Expected to be in Angular Zone, but it is not!');\n }\n };\n /**\n * @return {?}\n */\n NgZone.assertNotInAngularZone = /**\n * @return {?}\n */\n function () {\n if (NgZone.isInAngularZone()) {\n throw new Error('Expected to not be in Angular Zone, but it is!');\n }\n };\n /**\n * Executes the `fn` function synchronously within the Angular zone and returns value returned by\n * the function.\n *\n * Running functions via `run` allows you to reenter Angular zone from a task that was executed\n * outside of the Angular zone (typically started via {@link #runOutsideAngular}).\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * within the Angular zone.\n *\n * If a synchronous error happens it will be rethrown and not reported via `onError`.\n */\n /**\n * Executes the `fn` function synchronously within the Angular zone and returns value returned by\n * the function.\n *\n * Running functions via `run` allows you to reenter Angular zone from a task that was executed\n * outside of the Angular zone (typically started via {\\@link #runOutsideAngular}).\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * within the Angular zone.\n *\n * If a synchronous error happens it will be rethrown and not reported via `onError`.\n * @template T\n * @param {?} fn\n * @param {?=} applyThis\n * @param {?=} applyArgs\n * @return {?}\n */\n NgZone.prototype.run = /**\n * Executes the `fn` function synchronously within the Angular zone and returns value returned by\n * the function.\n *\n * Running functions via `run` allows you to reenter Angular zone from a task that was executed\n * outside of the Angular zone (typically started via {\\@link #runOutsideAngular}).\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * within the Angular zone.\n *\n * If a synchronous error happens it will be rethrown and not reported via `onError`.\n * @template T\n * @param {?} fn\n * @param {?=} applyThis\n * @param {?=} applyArgs\n * @return {?}\n */\n function (fn, applyThis, applyArgs) {\n return /** @type {?} */ ((/** @type {?} */ ((this)))._inner.run(fn, applyThis, applyArgs));\n };\n /**\n * Executes the `fn` function synchronously within the Angular zone as a task and returns value\n * returned by the function.\n *\n * Running functions via `run` allows you to reenter Angular zone from a task that was executed\n * outside of the Angular zone (typically started via {@link #runOutsideAngular}).\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * within the Angular zone.\n *\n * If a synchronous error happens it will be rethrown and not reported via `onError`.\n */\n /**\n * Executes the `fn` function synchronously within the Angular zone as a task and returns value\n * returned by the function.\n *\n * Running functions via `run` allows you to reenter Angular zone from a task that was executed\n * outside of the Angular zone (typically started via {\\@link #runOutsideAngular}).\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * within the Angular zone.\n *\n * If a synchronous error happens it will be rethrown and not reported via `onError`.\n * @template T\n * @param {?} fn\n * @param {?=} applyThis\n * @param {?=} applyArgs\n * @param {?=} name\n * @return {?}\n */\n NgZone.prototype.runTask = /**\n * Executes the `fn` function synchronously within the Angular zone as a task and returns value\n * returned by the function.\n *\n * Running functions via `run` allows you to reenter Angular zone from a task that was executed\n * outside of the Angular zone (typically started via {\\@link #runOutsideAngular}).\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * within the Angular zone.\n *\n * If a synchronous error happens it will be rethrown and not reported via `onError`.\n * @template T\n * @param {?} fn\n * @param {?=} applyThis\n * @param {?=} applyArgs\n * @param {?=} name\n * @return {?}\n */\n function (fn, applyThis, applyArgs, name) {\n var /** @type {?} */ zone = (/** @type {?} */ ((this)))._inner;\n var /** @type {?} */ task = zone.scheduleEventTask('NgZoneEvent: ' + name, fn, EMPTY_PAYLOAD, noop, noop);\n try {\n return /** @type {?} */ (zone.runTask(task, applyThis, applyArgs));\n }\n finally {\n zone.cancelTask(task);\n }\n };\n /**\n * Same as `run`, except that synchronous errors are caught and forwarded via `onError` and not\n * rethrown.\n */\n /**\n * Same as `run`, except that synchronous errors are caught and forwarded via `onError` and not\n * rethrown.\n * @template T\n * @param {?} fn\n * @param {?=} applyThis\n * @param {?=} applyArgs\n * @return {?}\n */\n NgZone.prototype.runGuarded = /**\n * Same as `run`, except that synchronous errors are caught and forwarded via `onError` and not\n * rethrown.\n * @template T\n * @param {?} fn\n * @param {?=} applyThis\n * @param {?=} applyArgs\n * @return {?}\n */\n function (fn, applyThis, applyArgs) {\n return /** @type {?} */ ((/** @type {?} */ ((this)))._inner.runGuarded(fn, applyThis, applyArgs));\n };\n /**\n * Executes the `fn` function synchronously in Angular's parent zone and returns value returned by\n * the function.\n *\n * Running functions via {@link #runOutsideAngular} allows you to escape Angular's zone and do\n * work that\n * doesn't trigger Angular change-detection or is subject to Angular's error handling.\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * outside of the Angular zone.\n *\n * Use {@link #run} to reenter the Angular zone and do work that updates the application model.\n */\n /**\n * Executes the `fn` function synchronously in Angular's parent zone and returns value returned by\n * the function.\n *\n * Running functions via {\\@link #runOutsideAngular} allows you to escape Angular's zone and do\n * work that\n * doesn't trigger Angular change-detection or is subject to Angular's error handling.\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * outside of the Angular zone.\n *\n * Use {\\@link #run} to reenter the Angular zone and do work that updates the application model.\n * @template T\n * @param {?} fn\n * @return {?}\n */\n NgZone.prototype.runOutsideAngular = /**\n * Executes the `fn` function synchronously in Angular's parent zone and returns value returned by\n * the function.\n *\n * Running functions via {\\@link #runOutsideAngular} allows you to escape Angular's zone and do\n * work that\n * doesn't trigger Angular change-detection or is subject to Angular's error handling.\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * outside of the Angular zone.\n *\n * Use {\\@link #run} to reenter the Angular zone and do work that updates the application model.\n * @template T\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n return /** @type {?} */ ((/** @type {?} */ ((this)))._outer.run(fn));\n };\n return NgZone;\n}());\n/**\n * @return {?}\n */\nfunction noop() { }\nvar EMPTY_PAYLOAD = {};\n/**\n * @param {?} zone\n * @return {?}\n */\nfunction checkStable(zone) {\n if (zone._nesting == 0 && !zone.hasPendingMicrotasks && !zone.isStable) {\n try {\n zone._nesting++;\n zone.onMicrotaskEmpty.emit(null);\n }\n finally {\n zone._nesting--;\n if (!zone.hasPendingMicrotasks) {\n try {\n zone.runOutsideAngular(function () { return zone.onStable.emit(null); });\n }\n finally {\n zone.isStable = true;\n }\n }\n }\n }\n}\n/**\n * @param {?} zone\n * @return {?}\n */\nfunction forkInnerZoneWithAngularBehavior(zone) {\n zone._inner = zone._inner.fork({\n name: 'angular',\n properties: /** @type {?} */ ({ 'isAngularZone': true }),\n onInvokeTask: function (delegate, current, target, task, applyThis, applyArgs) {\n try {\n onEnter(zone);\n return delegate.invokeTask(target, task, applyThis, applyArgs);\n }\n finally {\n onLeave(zone);\n }\n },\n onInvoke: function (delegate, current, target, callback, applyThis, applyArgs, source) {\n try {\n onEnter(zone);\n return delegate.invoke(target, callback, applyThis, applyArgs, source);\n }\n finally {\n onLeave(zone);\n }\n },\n onHasTask: function (delegate, current, target, hasTaskState) {\n delegate.hasTask(target, hasTaskState);\n if (current === target) {\n // We are only interested in hasTask events which originate from our zone\n // (A child hasTask event is not interesting to us)\n if (hasTaskState.change == 'microTask') {\n zone.hasPendingMicrotasks = hasTaskState.microTask;\n checkStable(zone);\n }\n else if (hasTaskState.change == 'macroTask') {\n zone.hasPendingMacrotasks = hasTaskState.macroTask;\n }\n }\n },\n onHandleError: function (delegate, current, target, error) {\n delegate.handleError(target, error);\n zone.runOutsideAngular(function () { return zone.onError.emit(error); });\n return false;\n }\n });\n}\n/**\n * @param {?} zone\n * @return {?}\n */\nfunction onEnter(zone) {\n zone._nesting++;\n if (zone.isStable) {\n zone.isStable = false;\n zone.onUnstable.emit(null);\n }\n}\n/**\n * @param {?} zone\n * @return {?}\n */\nfunction onLeave(zone) {\n zone._nesting--;\n checkStable(zone);\n}\n/**\n * Provides a noop implementation of `NgZone` which does nothing. This zone requires explicit calls\n * to framework to perform rendering.\n */\nvar NoopNgZone = /** @class */ (function () {\n function NoopNgZone() {\n this.hasPendingMicrotasks = false;\n this.hasPendingMacrotasks = false;\n this.isStable = true;\n this.onUnstable = new EventEmitter();\n this.onMicrotaskEmpty = new EventEmitter();\n this.onStable = new EventEmitter();\n this.onError = new EventEmitter();\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n NoopNgZone.prototype.run = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { return fn(); };\n /**\n * @param {?} fn\n * @return {?}\n */\n NoopNgZone.prototype.runGuarded = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { return fn(); };\n /**\n * @param {?} fn\n * @return {?}\n */\n NoopNgZone.prototype.runOutsideAngular = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { return fn(); };\n /**\n * @template T\n * @param {?} fn\n * @return {?}\n */\n NoopNgZone.prototype.runTask = /**\n * @template T\n * @param {?} fn\n * @return {?}\n */\n function (fn) { return fn(); };\n return NoopNgZone;\n}());\n\n/**\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 * The Testability service provides testing hooks that can be accessed from\n * the browser and by services such as Protractor. Each bootstrapped Angular\n * application on the page will have an instance of Testability.\n * \\@experimental\n */\nvar Testability = /** @class */ (function () {\n function Testability(_ngZone) {\n this._ngZone = _ngZone;\n /**\n * \\@internal\n */\n this._pendingCount = 0;\n /**\n * \\@internal\n */\n this._isZoneStable = true;\n /**\n * Whether any work was done since the last 'whenStable' callback. This is\n * useful to detect if this could have potentially destabilized another\n * component while it is stabilizing.\n * \\@internal\n */\n this._didWork = false;\n /**\n * \\@internal\n */\n this._callbacks = [];\n this._watchAngularEvents();\n }\n /** @internal */\n /**\n * \\@internal\n * @return {?}\n */\n Testability.prototype._watchAngularEvents = /**\n * \\@internal\n * @return {?}\n */\n function () {\n var _this = this;\n this._ngZone.onUnstable.subscribe({\n next: function () {\n _this._didWork = true;\n _this._isZoneStable = false;\n }\n });\n this._ngZone.runOutsideAngular(function () {\n _this._ngZone.onStable.subscribe({\n next: function () {\n NgZone.assertNotInAngularZone();\n scheduleMicroTask(function () {\n _this._isZoneStable = true;\n _this._runCallbacksIfReady();\n });\n }\n });\n });\n };\n /**\n * Increases the number of pending request\n */\n /**\n * Increases the number of pending request\n * @return {?}\n */\n Testability.prototype.increasePendingRequestCount = /**\n * Increases the number of pending request\n * @return {?}\n */\n function () {\n this._pendingCount += 1;\n this._didWork = true;\n return this._pendingCount;\n };\n /**\n * Decreases the number of pending request\n */\n /**\n * Decreases the number of pending request\n * @return {?}\n */\n Testability.prototype.decreasePendingRequestCount = /**\n * Decreases the number of pending request\n * @return {?}\n */\n function () {\n this._pendingCount -= 1;\n if (this._pendingCount < 0) {\n throw new Error('pending async requests below zero');\n }\n this._runCallbacksIfReady();\n return this._pendingCount;\n };\n /**\n * Whether an associated application is stable\n */\n /**\n * Whether an associated application is stable\n * @return {?}\n */\n Testability.prototype.isStable = /**\n * Whether an associated application is stable\n * @return {?}\n */\n function () {\n return this._isZoneStable && this._pendingCount == 0 && !this._ngZone.hasPendingMacrotasks;\n };\n /** @internal */\n /**\n * \\@internal\n * @return {?}\n */\n Testability.prototype._runCallbacksIfReady = /**\n * \\@internal\n * @return {?}\n */\n function () {\n var _this = this;\n if (this.isStable()) {\n // Schedules the call backs in a new frame so that it is always async.\n scheduleMicroTask(function () {\n while (_this._callbacks.length !== 0) {\n (/** @type {?} */ ((_this._callbacks.pop())))(_this._didWork);\n }\n _this._didWork = false;\n });\n }\n else {\n // Not Ready\n this._didWork = true;\n }\n };\n /**\n * Run callback when the application is stable\n * @param callback function to be called after the application is stable\n */\n /**\n * Run callback when the application is stable\n * @param {?} callback function to be called after the application is stable\n * @return {?}\n */\n Testability.prototype.whenStable = /**\n * Run callback when the application is stable\n * @param {?} callback function to be called after the application is stable\n * @return {?}\n */\n function (callback) {\n this._callbacks.push(callback);\n this._runCallbacksIfReady();\n };\n /**\n * Get the number of pending requests\n */\n /**\n * Get the number of pending requests\n * @return {?}\n */\n Testability.prototype.getPendingRequestCount = /**\n * Get the number of pending requests\n * @return {?}\n */\n function () { return this._pendingCount; };\n /**\n * Find providers by name\n * @param using The root element to search from\n * @param provider The name of binding variable\n * @param exactMatch Whether using exactMatch\n */\n /**\n * Find providers by name\n * @param {?} using The root element to search from\n * @param {?} provider The name of binding variable\n * @param {?} exactMatch Whether using exactMatch\n * @return {?}\n */\n Testability.prototype.findProviders = /**\n * Find providers by name\n * @param {?} using The root element to search from\n * @param {?} provider The name of binding variable\n * @param {?} exactMatch Whether using exactMatch\n * @return {?}\n */\n function (using, provider, exactMatch) {\n // TODO(juliemr): implement.\n return [];\n };\n Testability.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n Testability.ctorParameters = function () { return [\n { type: NgZone, },\n ]; };\n return Testability;\n}());\n/**\n * A global registry of {\\@link Testability} instances for specific elements.\n * \\@experimental\n */\nvar TestabilityRegistry = /** @class */ (function () {\n function TestabilityRegistry() {\n /**\n * \\@internal\n */\n this._applications = new Map();\n _testabilityGetter.addToWindow(this);\n }\n /**\n * Registers an application with a testability hook so that it can be tracked\n * @param token token of application, root element\n * @param testability Testability hook\n */\n /**\n * Registers an application with a testability hook so that it can be tracked\n * @param {?} token token of application, root element\n * @param {?} testability Testability hook\n * @return {?}\n */\n TestabilityRegistry.prototype.registerApplication = /**\n * Registers an application with a testability hook so that it can be tracked\n * @param {?} token token of application, root element\n * @param {?} testability Testability hook\n * @return {?}\n */\n function (token, testability) {\n this._applications.set(token, testability);\n };\n /**\n * Unregisters an application.\n * @param token token of application, root element\n */\n /**\n * Unregisters an application.\n * @param {?} token token of application, root element\n * @return {?}\n */\n TestabilityRegistry.prototype.unregisterApplication = /**\n * Unregisters an application.\n * @param {?} token token of application, root element\n * @return {?}\n */\n function (token) { this._applications.delete(token); };\n /**\n * Unregisters all applications\n */\n /**\n * Unregisters all applications\n * @return {?}\n */\n TestabilityRegistry.prototype.unregisterAllApplications = /**\n * Unregisters all applications\n * @return {?}\n */\n function () { this._applications.clear(); };\n /**\n * Get a testability hook associated with the application\n * @param elem root element\n */\n /**\n * Get a testability hook associated with the application\n * @param {?} elem root element\n * @return {?}\n */\n TestabilityRegistry.prototype.getTestability = /**\n * Get a testability hook associated with the application\n * @param {?} elem root element\n * @return {?}\n */\n function (elem) { return this._applications.get(elem) || null; };\n /**\n * Get all registered testabilities\n */\n /**\n * Get all registered testabilities\n * @return {?}\n */\n TestabilityRegistry.prototype.getAllTestabilities = /**\n * Get all registered testabilities\n * @return {?}\n */\n function () { return Array.from(this._applications.values()); };\n /**\n * Get all registered applications(root elements)\n */\n /**\n * Get all registered applications(root elements)\n * @return {?}\n */\n TestabilityRegistry.prototype.getAllRootElements = /**\n * Get all registered applications(root elements)\n * @return {?}\n */\n function () { return Array.from(this._applications.keys()); };\n /**\n * Find testability of a node in the Tree\n * @param elem node\n * @param findInAncestors whether finding testability in ancestors if testability was not found in\n * current node\n */\n /**\n * Find testability of a node in the Tree\n * @param {?} elem node\n * @param {?=} findInAncestors whether finding testability in ancestors if testability was not found in\n * current node\n * @return {?}\n */\n TestabilityRegistry.prototype.findTestabilityInTree = /**\n * Find testability of a node in the Tree\n * @param {?} elem node\n * @param {?=} findInAncestors whether finding testability in ancestors if testability was not found in\n * current node\n * @return {?}\n */\n function (elem, findInAncestors) {\n if (findInAncestors === void 0) { findInAncestors = true; }\n return _testabilityGetter.findTestabilityInTree(this, elem, findInAncestors);\n };\n TestabilityRegistry.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n TestabilityRegistry.ctorParameters = function () { return []; };\n return TestabilityRegistry;\n}());\n/**\n * Adapter interface for retrieving the `Testability` service associated for a\n * particular context.\n *\n * \\@experimental Testability apis are primarily intended to be used by e2e test tool vendors like\n * the Protractor team.\n * @record\n */\n\nvar _NoopGetTestability = /** @class */ (function () {\n function _NoopGetTestability() {\n }\n /**\n * @param {?} registry\n * @return {?}\n */\n _NoopGetTestability.prototype.addToWindow = /**\n * @param {?} registry\n * @return {?}\n */\n function (registry) { };\n /**\n * @param {?} registry\n * @param {?} elem\n * @param {?} findInAncestors\n * @return {?}\n */\n _NoopGetTestability.prototype.findTestabilityInTree = /**\n * @param {?} registry\n * @param {?} elem\n * @param {?} findInAncestors\n * @return {?}\n */\n function (registry, elem, findInAncestors) {\n return null;\n };\n return _NoopGetTestability;\n}());\n/**\n * Set the {\\@link GetTestability} implementation used by the Angular testing framework.\n * \\@experimental\n * @param {?} getter\n * @return {?}\n */\nfunction setTestabilityGetter(getter) {\n _testabilityGetter = getter;\n}\nvar _testabilityGetter = new _NoopGetTestability();\n\n/**\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 */\nvar _devMode = true;\nvar _runModeLocked = false;\nvar _platform;\nvar ALLOW_MULTIPLE_PLATFORMS = new InjectionToken('AllowMultipleToken');\n/**\n * Disable Angular's development mode, which turns off assertions and other\n * checks within the framework.\n *\n * One important assertion this disables verifies that a change detection pass\n * does not result in additional changes to any bindings (also known as\n * unidirectional data flow).\n *\n * \\@stable\n * @return {?}\n */\nfunction enableProdMode() {\n if (_runModeLocked) {\n throw new Error('Cannot enable prod mode after platform setup.');\n }\n _devMode = false;\n}\n/**\n * Returns whether Angular is in development mode. After called once,\n * the value is locked and won't change any more.\n *\n * By default, this is true, unless a user calls `enableProdMode` before calling this.\n *\n * \\@experimental APIs related to application bootstrap are currently under review.\n * @return {?}\n */\nfunction isDevMode() {\n _runModeLocked = true;\n return _devMode;\n}\n/**\n * A token for third-party components that can register themselves with NgProbe.\n *\n * \\@experimental\n */\nvar NgProbeToken = /** @class */ (function () {\n function NgProbeToken(name, token) {\n this.name = name;\n this.token = token;\n }\n return NgProbeToken;\n}());\n/**\n * Creates a platform.\n * Platforms have to be eagerly created via this function.\n *\n * \\@experimental APIs related to application bootstrap are currently under review.\n * @param {?} injector\n * @return {?}\n */\nfunction createPlatform(injector) {\n if (_platform && !_platform.destroyed &&\n !_platform.injector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {\n throw new Error('There can be only one platform. Destroy the previous one to create a new one.');\n }\n _platform = injector.get(PlatformRef);\n var /** @type {?} */ inits = injector.get(PLATFORM_INITIALIZER, null);\n if (inits)\n inits.forEach(function (init) { return init(); });\n return _platform;\n}\n/**\n * Creates a factory for a platform\n *\n * \\@experimental APIs related to application bootstrap are currently under review.\n * @param {?} parentPlatformFactory\n * @param {?} name\n * @param {?=} providers\n * @return {?}\n */\nfunction createPlatformFactory(parentPlatformFactory, name, providers) {\n if (providers === void 0) { providers = []; }\n var /** @type {?} */ desc = \"Platform: \" + name;\n var /** @type {?} */ marker = new InjectionToken(desc);\n return function (extraProviders) {\n if (extraProviders === void 0) { extraProviders = []; }\n var /** @type {?} */ platform = getPlatform();\n if (!platform || platform.injector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {\n if (parentPlatformFactory) {\n parentPlatformFactory(providers.concat(extraProviders).concat({ provide: marker, useValue: true }));\n }\n else {\n var /** @type {?} */ injectedProviders = providers.concat(extraProviders).concat({ provide: marker, useValue: true });\n createPlatform(Injector.create({ providers: injectedProviders, name: desc }));\n }\n }\n return assertPlatform(marker);\n };\n}\n/**\n * Checks that there currently is a platform which contains the given token as a provider.\n *\n * \\@experimental APIs related to application bootstrap are currently under review.\n * @param {?} requiredToken\n * @return {?}\n */\nfunction assertPlatform(requiredToken) {\n var /** @type {?} */ platform = getPlatform();\n if (!platform) {\n throw new Error('No platform exists!');\n }\n if (!platform.injector.get(requiredToken, null)) {\n throw new Error('A platform with a different configuration has been created. Please destroy it first.');\n }\n return platform;\n}\n/**\n * Destroy the existing platform.\n *\n * \\@experimental APIs related to application bootstrap are currently under review.\n * @return {?}\n */\nfunction destroyPlatform() {\n if (_platform && !_platform.destroyed) {\n _platform.destroy();\n }\n}\n/**\n * Returns the current platform.\n *\n * \\@experimental APIs related to application bootstrap are currently under review.\n * @return {?}\n */\nfunction getPlatform() {\n return _platform && !_platform.destroyed ? _platform : null;\n}\n/**\n * Provides additional options to the bootstraping process.\n *\n * \\@stable\n * @record\n */\n\n/**\n * The Angular platform is the entry point for Angular on a web page. Each page\n * has exactly one platform, and services (such as reflection) which are common\n * to every Angular application running on the page are bound in its scope.\n *\n * A page's platform is initialized implicitly when a platform is created via a platform factory\n * (e.g. {\\@link platformBrowser}), or explicitly by calling the {\\@link createPlatform} function.\n *\n * \\@stable\n */\nvar PlatformRef = /** @class */ (function () {\n /** @internal */\n function PlatformRef(_injector) {\n this._injector = _injector;\n this._modules = [];\n this._destroyListeners = [];\n this._destroyed = false;\n }\n /**\n * Creates an instance of an `@NgModule` for the given platform\n * for offline compilation.\n *\n * ## Simple Example\n *\n * ```typescript\n * my_module.ts:\n *\n * @NgModule({\n * imports: [BrowserModule]\n * })\n * class MyModule {}\n *\n * main.ts:\n * import {MyModuleNgFactory} from './my_module.ngfactory';\n * import {platformBrowser} from '@angular/platform-browser';\n *\n * let moduleRef = platformBrowser().bootstrapModuleFactory(MyModuleNgFactory);\n * ```\n *\n * @experimental APIs related to application bootstrap are currently under review.\n */\n /**\n * Creates an instance of an `\\@NgModule` for the given platform\n * for offline compilation.\n *\n * ## Simple Example\n *\n * ```typescript\n * my_module.ts:\n *\n * \\@NgModule({\n * imports: [BrowserModule]\n * })\n * class MyModule {}\n *\n * main.ts:\n * import {MyModuleNgFactory} from './my_module.ngfactory';\n * import {platformBrowser} from '\\@angular/platform-browser';\n *\n * let moduleRef = platformBrowser().bootstrapModuleFactory(MyModuleNgFactory);\n * ```\n *\n * \\@experimental APIs related to application bootstrap are currently under review.\n * @template M\n * @param {?} moduleFactory\n * @param {?=} options\n * @return {?}\n */\n PlatformRef.prototype.bootstrapModuleFactory = /**\n * Creates an instance of an `\\@NgModule` for the given platform\n * for offline compilation.\n *\n * ## Simple Example\n *\n * ```typescript\n * my_module.ts:\n *\n * \\@NgModule({\n * imports: [BrowserModule]\n * })\n * class MyModule {}\n *\n * main.ts:\n * import {MyModuleNgFactory} from './my_module.ngfactory';\n * import {platformBrowser} from '\\@angular/platform-browser';\n *\n * let moduleRef = platformBrowser().bootstrapModuleFactory(MyModuleNgFactory);\n * ```\n *\n * \\@experimental APIs related to application bootstrap are currently under review.\n * @template M\n * @param {?} moduleFactory\n * @param {?=} options\n * @return {?}\n */\n function (moduleFactory, options) {\n var _this = this;\n // Note: We need to create the NgZone _before_ we instantiate the module,\n // as instantiating the module creates some providers eagerly.\n // So we create a mini parent injector that just contains the new NgZone and\n // pass that as parent to the NgModuleFactory.\n var /** @type {?} */ ngZoneOption = options ? options.ngZone : undefined;\n var /** @type {?} */ ngZone = getNgZone(ngZoneOption);\n var /** @type {?} */ providers = [{ provide: NgZone, useValue: ngZone }];\n // Attention: Don't use ApplicationRef.run here,\n // as we want to be sure that all possible constructor calls are inside `ngZone.run`!\n return ngZone.run(function () {\n var /** @type {?} */ ngZoneInjector = Injector.create({ providers: providers, parent: _this.injector, name: moduleFactory.moduleType.name });\n var /** @type {?} */ moduleRef = /** @type {?} */ (moduleFactory.create(ngZoneInjector));\n var /** @type {?} */ exceptionHandler = moduleRef.injector.get(ErrorHandler, null);\n if (!exceptionHandler) {\n throw new Error('No ErrorHandler. Is platform module (BrowserModule) included?');\n }\n moduleRef.onDestroy(function () { return remove(_this._modules, moduleRef); }); /** @type {?} */\n ((ngZone)).runOutsideAngular(function () { return ((ngZone)).onError.subscribe({ next: function (error) { exceptionHandler.handleError(error); } }); });\n return _callAndReportToErrorHandler(exceptionHandler, /** @type {?} */ ((ngZone)), function () {\n var /** @type {?} */ initStatus = moduleRef.injector.get(ApplicationInitStatus);\n initStatus.runInitializers();\n return initStatus.donePromise.then(function () {\n _this._moduleDoBootstrap(moduleRef);\n return moduleRef;\n });\n });\n });\n };\n /**\n * Creates an instance of an `@NgModule` for a given platform using the given runtime compiler.\n *\n * ## Simple Example\n *\n * ```typescript\n * @NgModule({\n * imports: [BrowserModule]\n * })\n * class MyModule {}\n *\n * let moduleRef = platformBrowser().bootstrapModule(MyModule);\n * ```\n * @stable\n */\n /**\n * Creates an instance of an `\\@NgModule` for a given platform using the given runtime compiler.\n *\n * ## Simple Example\n *\n * ```typescript\n * \\@NgModule({\n * imports: [BrowserModule]\n * })\n * class MyModule {}\n *\n * let moduleRef = platformBrowser().bootstrapModule(MyModule);\n * ```\n * \\@stable\n * @template M\n * @param {?} moduleType\n * @param {?=} compilerOptions\n * @return {?}\n */\n PlatformRef.prototype.bootstrapModule = /**\n * Creates an instance of an `\\@NgModule` for a given platform using the given runtime compiler.\n *\n * ## Simple Example\n *\n * ```typescript\n * \\@NgModule({\n * imports: [BrowserModule]\n * })\n * class MyModule {}\n *\n * let moduleRef = platformBrowser().bootstrapModule(MyModule);\n * ```\n * \\@stable\n * @template M\n * @param {?} moduleType\n * @param {?=} compilerOptions\n * @return {?}\n */\n function (moduleType, compilerOptions) {\n var _this = this;\n if (compilerOptions === void 0) { compilerOptions = []; }\n var /** @type {?} */ compilerFactory = this.injector.get(CompilerFactory);\n var /** @type {?} */ options = optionsReducer({}, compilerOptions);\n var /** @type {?} */ compiler = compilerFactory.createCompiler([options]);\n return compiler.compileModuleAsync(moduleType)\n .then(function (moduleFactory) { return _this.bootstrapModuleFactory(moduleFactory, options); });\n };\n /**\n * @param {?} moduleRef\n * @return {?}\n */\n PlatformRef.prototype._moduleDoBootstrap = /**\n * @param {?} moduleRef\n * @return {?}\n */\n function (moduleRef) {\n var /** @type {?} */ appRef = /** @type {?} */ (moduleRef.injector.get(ApplicationRef));\n if (moduleRef._bootstrapComponents.length > 0) {\n moduleRef._bootstrapComponents.forEach(function (f) { return appRef.bootstrap(f); });\n }\n else if (moduleRef.instance.ngDoBootstrap) {\n moduleRef.instance.ngDoBootstrap(appRef);\n }\n else {\n throw new Error(\"The module \" + stringify(moduleRef.instance.constructor) + \" was bootstrapped, but it does not declare \\\"@NgModule.bootstrap\\\" components nor a \\\"ngDoBootstrap\\\" method. \" +\n \"Please define one of these.\");\n }\n this._modules.push(moduleRef);\n };\n /**\n * Register a listener to be called when the platform is disposed.\n */\n /**\n * Register a listener to be called when the platform is disposed.\n * @param {?} callback\n * @return {?}\n */\n PlatformRef.prototype.onDestroy = /**\n * Register a listener to be called when the platform is disposed.\n * @param {?} callback\n * @return {?}\n */\n function (callback) { this._destroyListeners.push(callback); };\n Object.defineProperty(PlatformRef.prototype, \"injector\", {\n /**\n * Retrieve the platform {@link Injector}, which is the parent injector for\n * every Angular application on the page and provides singleton providers.\n */\n get: /**\n * Retrieve the platform {\\@link Injector}, which is the parent injector for\n * every Angular application on the page and provides singleton providers.\n * @return {?}\n */\n function () { return this._injector; },\n enumerable: true,\n configurable: true\n });\n /**\n * Destroy the Angular platform and all Angular applications on the page.\n */\n /**\n * Destroy the Angular platform and all Angular applications on the page.\n * @return {?}\n */\n PlatformRef.prototype.destroy = /**\n * Destroy the Angular platform and all Angular applications on the page.\n * @return {?}\n */\n function () {\n if (this._destroyed) {\n throw new Error('The platform has already been destroyed!');\n }\n this._modules.slice().forEach(function (module) { return module.destroy(); });\n this._destroyListeners.forEach(function (listener) { return listener(); });\n this._destroyed = true;\n };\n Object.defineProperty(PlatformRef.prototype, \"destroyed\", {\n get: /**\n * @return {?}\n */\n function () { return this._destroyed; },\n enumerable: true,\n configurable: true\n });\n PlatformRef.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n PlatformRef.ctorParameters = function () { return [\n { type: Injector, },\n ]; };\n return PlatformRef;\n}());\n/**\n * @param {?=} ngZoneOption\n * @return {?}\n */\nfunction getNgZone(ngZoneOption) {\n var /** @type {?} */ ngZone;\n if (ngZoneOption === 'noop') {\n ngZone = new NoopNgZone();\n }\n else {\n ngZone = (ngZoneOption === 'zone.js' ? undefined : ngZoneOption) ||\n new NgZone({ enableLongStackTrace: isDevMode() });\n }\n return ngZone;\n}\n/**\n * @param {?} errorHandler\n * @param {?} ngZone\n * @param {?} callback\n * @return {?}\n */\nfunction _callAndReportToErrorHandler(errorHandler, ngZone, callback) {\n try {\n var /** @type {?} */ result = callback();\n if (isPromise(result)) {\n return result.catch(function (e) {\n ngZone.runOutsideAngular(function () { return errorHandler.handleError(e); });\n // rethrow as the exception handler might not do it\n throw e;\n });\n }\n return result;\n }\n catch (/** @type {?} */ e) {\n ngZone.runOutsideAngular(function () { return errorHandler.handleError(e); });\n // rethrow as the exception handler might not do it\n throw e;\n }\n}\n/**\n * @template T\n * @param {?} dst\n * @param {?} objs\n * @return {?}\n */\nfunction optionsReducer(dst, objs) {\n if (Array.isArray(objs)) {\n dst = objs.reduce(optionsReducer, dst);\n }\n else {\n dst = __assign({}, dst, (/** @type {?} */ (objs)));\n }\n return dst;\n}\n/**\n * A reference to an Angular application running on a page.\n *\n * \\@stable\n */\nvar ApplicationRef = /** @class */ (function () {\n /** @internal */\n function ApplicationRef(_zone, _console, _injector, _exceptionHandler, _componentFactoryResolver, _initStatus) {\n var _this = this;\n this._zone = _zone;\n this._console = _console;\n this._injector = _injector;\n this._exceptionHandler = _exceptionHandler;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._initStatus = _initStatus;\n this._bootstrapListeners = [];\n this._views = [];\n this._runningTick = false;\n this._enforceNoNewChanges = false;\n this._stable = true;\n /**\n * Get a list of component types registered to this application.\n * This list is populated even before the component is created.\n */\n this.componentTypes = [];\n /**\n * Get a list of components registered to this application.\n */\n this.components = [];\n this._enforceNoNewChanges = isDevMode();\n this._zone.onMicrotaskEmpty.subscribe({ next: function () { _this._zone.run(function () { _this.tick(); }); } });\n var /** @type {?} */ isCurrentlyStable = new rxjs_Observable.Observable(function (observer) {\n _this._stable = _this._zone.isStable && !_this._zone.hasPendingMacrotasks &&\n !_this._zone.hasPendingMicrotasks;\n _this._zone.runOutsideAngular(function () {\n observer.next(_this._stable);\n observer.complete();\n });\n });\n var /** @type {?} */ isStable = new rxjs_Observable.Observable(function (observer) {\n // Create the subscription to onStable outside the Angular Zone so that\n // the callback is run outside the Angular Zone.\n var /** @type {?} */ stableSub;\n _this._zone.runOutsideAngular(function () {\n stableSub = _this._zone.onStable.subscribe(function () {\n NgZone.assertNotInAngularZone();\n // Check whether there are no pending macro/micro tasks in the next tick\n // to allow for NgZone to update the state.\n scheduleMicroTask(function () {\n if (!_this._stable && !_this._zone.hasPendingMacrotasks &&\n !_this._zone.hasPendingMicrotasks) {\n _this._stable = true;\n observer.next(true);\n }\n });\n });\n });\n var /** @type {?} */ unstableSub = _this._zone.onUnstable.subscribe(function () {\n NgZone.assertInAngularZone();\n if (_this._stable) {\n _this._stable = false;\n _this._zone.runOutsideAngular(function () { observer.next(false); });\n }\n });\n return function () {\n stableSub.unsubscribe();\n unstableSub.unsubscribe();\n };\n });\n (/** @type {?} */ (this)).isStable =\n rxjs_observable_merge.merge(isCurrentlyStable, rxjs_operator_share.share.call(isStable));\n }\n /**\n * Bootstrap a new component at the root level of the application.\n *\n * ### Bootstrap process\n *\n * When bootstrapping a new root component into an application, Angular mounts the\n * specified application component onto DOM elements identified by the [componentType]'s\n * selector and kicks off automatic change detection to finish initializing the component.\n *\n * Optionally, a component can be mounted onto a DOM element that does not match the\n * [componentType]'s selector.\n *\n * ### Example\n * {@example core/ts/platform/platform.ts region='longform'}\n */\n /**\n * Bootstrap a new component at the root level of the application.\n *\n * ### Bootstrap process\n *\n * When bootstrapping a new root component into an application, Angular mounts the\n * specified application component onto DOM elements identified by the [componentType]'s\n * selector and kicks off automatic change detection to finish initializing the component.\n *\n * Optionally, a component can be mounted onto a DOM element that does not match the\n * [componentType]'s selector.\n *\n * ### Example\n * {\\@example core/ts/platform/platform.ts region='longform'}\n * @template C\n * @param {?} componentOrFactory\n * @param {?=} rootSelectorOrNode\n * @return {?}\n */\n ApplicationRef.prototype.bootstrap = /**\n * Bootstrap a new component at the root level of the application.\n *\n * ### Bootstrap process\n *\n * When bootstrapping a new root component into an application, Angular mounts the\n * specified application component onto DOM elements identified by the [componentType]'s\n * selector and kicks off automatic change detection to finish initializing the component.\n *\n * Optionally, a component can be mounted onto a DOM element that does not match the\n * [componentType]'s selector.\n *\n * ### Example\n * {\\@example core/ts/platform/platform.ts region='longform'}\n * @template C\n * @param {?} componentOrFactory\n * @param {?=} rootSelectorOrNode\n * @return {?}\n */\n function (componentOrFactory, rootSelectorOrNode) {\n var _this = this;\n if (!this._initStatus.done) {\n throw new Error('Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.');\n }\n var /** @type {?} */ componentFactory;\n if (componentOrFactory instanceof ComponentFactory) {\n componentFactory = componentOrFactory;\n }\n else {\n componentFactory =\n /** @type {?} */ ((this._componentFactoryResolver.resolveComponentFactory(componentOrFactory)));\n }\n this.componentTypes.push(componentFactory.componentType);\n // Create a factory associated with the current module if it's not bound to some other\n var /** @type {?} */ ngModule = componentFactory instanceof ComponentFactoryBoundToModule ?\n null :\n this._injector.get(NgModuleRef);\n var /** @type {?} */ selectorOrNode = rootSelectorOrNode || componentFactory.selector;\n var /** @type {?} */ compRef = componentFactory.create(Injector.NULL, [], selectorOrNode, ngModule);\n compRef.onDestroy(function () { _this._unloadComponent(compRef); });\n var /** @type {?} */ testability = compRef.injector.get(Testability, null);\n if (testability) {\n compRef.injector.get(TestabilityRegistry)\n .registerApplication(compRef.location.nativeElement, testability);\n }\n this._loadComponent(compRef);\n if (isDevMode()) {\n this._console.log(\"Angular is running in the development mode. Call enableProdMode() to enable the production mode.\");\n }\n return compRef;\n };\n /**\n * Invoke this method to explicitly process change detection and its side-effects.\n *\n * In development mode, `tick()` also performs a second change detection cycle to ensure that no\n * further changes are detected. If additional changes are picked up during this second cycle,\n * bindings in the app have side-effects that cannot be resolved in a single change detection\n * pass.\n * In this case, Angular throws an error, since an Angular application can only have one change\n * detection pass during which all change detection must complete.\n */\n /**\n * Invoke this method to explicitly process change detection and its side-effects.\n *\n * In development mode, `tick()` also performs a second change detection cycle to ensure that no\n * further changes are detected. If additional changes are picked up during this second cycle,\n * bindings in the app have side-effects that cannot be resolved in a single change detection\n * pass.\n * In this case, Angular throws an error, since an Angular application can only have one change\n * detection pass during which all change detection must complete.\n * @return {?}\n */\n ApplicationRef.prototype.tick = /**\n * Invoke this method to explicitly process change detection and its side-effects.\n *\n * In development mode, `tick()` also performs a second change detection cycle to ensure that no\n * further changes are detected. If additional changes are picked up during this second cycle,\n * bindings in the app have side-effects that cannot be resolved in a single change detection\n * pass.\n * In this case, Angular throws an error, since an Angular application can only have one change\n * detection pass during which all change detection must complete.\n * @return {?}\n */\n function () {\n var _this = this;\n if (this._runningTick) {\n throw new Error('ApplicationRef.tick is called recursively');\n }\n var /** @type {?} */ scope = ApplicationRef._tickScope();\n try {\n this._runningTick = true;\n this._views.forEach(function (view) { return view.detectChanges(); });\n if (this._enforceNoNewChanges) {\n this._views.forEach(function (view) { return view.checkNoChanges(); });\n }\n }\n catch (/** @type {?} */ e) {\n // Attention: Don't rethrow as it could cancel subscriptions to Observables!\n this._zone.runOutsideAngular(function () { return _this._exceptionHandler.handleError(e); });\n }\n finally {\n this._runningTick = false;\n wtfLeave(scope);\n }\n };\n /**\n * Attaches a view so that it will be dirty checked.\n * The view will be automatically detached when it is destroyed.\n * This will throw if the view is already attached to a ViewContainer.\n */\n /**\n * Attaches a view so that it will be dirty checked.\n * The view will be automatically detached when it is destroyed.\n * This will throw if the view is already attached to a ViewContainer.\n * @param {?} viewRef\n * @return {?}\n */\n ApplicationRef.prototype.attachView = /**\n * Attaches a view so that it will be dirty checked.\n * The view will be automatically detached when it is destroyed.\n * This will throw if the view is already attached to a ViewContainer.\n * @param {?} viewRef\n * @return {?}\n */\n function (viewRef) {\n var /** @type {?} */ view = (/** @type {?} */ (viewRef));\n this._views.push(view);\n view.attachToAppRef(this);\n };\n /**\n * Detaches a view from dirty checking again.\n */\n /**\n * Detaches a view from dirty checking again.\n * @param {?} viewRef\n * @return {?}\n */\n ApplicationRef.prototype.detachView = /**\n * Detaches a view from dirty checking again.\n * @param {?} viewRef\n * @return {?}\n */\n function (viewRef) {\n var /** @type {?} */ view = (/** @type {?} */ (viewRef));\n remove(this._views, view);\n view.detachFromAppRef();\n };\n /**\n * @param {?} componentRef\n * @return {?}\n */\n ApplicationRef.prototype._loadComponent = /**\n * @param {?} componentRef\n * @return {?}\n */\n function (componentRef) {\n this.attachView(componentRef.hostView);\n this.tick();\n this.components.push(componentRef);\n // Get the listeners lazily to prevent DI cycles.\n var /** @type {?} */ listeners = this._injector.get(APP_BOOTSTRAP_LISTENER, []).concat(this._bootstrapListeners);\n listeners.forEach(function (listener) { return listener(componentRef); });\n };\n /**\n * @param {?} componentRef\n * @return {?}\n */\n ApplicationRef.prototype._unloadComponent = /**\n * @param {?} componentRef\n * @return {?}\n */\n function (componentRef) {\n this.detachView(componentRef.hostView);\n remove(this.components, componentRef);\n };\n /** @internal */\n /**\n * \\@internal\n * @return {?}\n */\n ApplicationRef.prototype.ngOnDestroy = /**\n * \\@internal\n * @return {?}\n */\n function () {\n // TODO(alxhub): Dispose of the NgZone.\n this._views.slice().forEach(function (view) { return view.destroy(); });\n };\n Object.defineProperty(ApplicationRef.prototype, \"viewCount\", {\n /**\n * Returns the number of attached views.\n */\n get: /**\n * Returns the number of attached views.\n * @return {?}\n */\n function () { return this._views.length; },\n enumerable: true,\n configurable: true\n });\n /**\n * \\@internal\n */\n ApplicationRef._tickScope = wtfCreateScope('ApplicationRef#tick()');\n ApplicationRef.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n ApplicationRef.ctorParameters = function () { return [\n { type: NgZone, },\n { type: Console, },\n { type: Injector, },\n { type: ErrorHandler, },\n { type: ComponentFactoryResolver, },\n { type: ApplicationInitStatus, },\n ]; };\n return ApplicationRef;\n}());\n/**\n * @template T\n * @param {?} list\n * @param {?} el\n * @return {?}\n */\nfunction remove(list, el) {\n var /** @type {?} */ index = list.indexOf(el);\n if (index > -1) {\n list.splice(index, 1);\n }\n}\n\n/**\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/**\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 * @deprecated Use `RendererType2` (and `Renderer2`) instead.\n */\nvar RenderComponentType = /** @class */ (function () {\n function RenderComponentType(id, templateUrl, slotCount, encapsulation, styles, animations) {\n this.id = id;\n this.templateUrl = templateUrl;\n this.slotCount = slotCount;\n this.encapsulation = encapsulation;\n this.styles = styles;\n this.animations = animations;\n }\n return RenderComponentType;\n}());\n/**\n * @deprecated Debug info is handeled internally in the view engine now.\n * @abstract\n */\nvar RenderDebugInfo = /** @class */ (function () {\n function RenderDebugInfo() {\n }\n return RenderDebugInfo;\n}());\n/**\n * @deprecated Use the `Renderer2` instead.\n * @record\n */\n\n/**\n * @deprecated Use the `Renderer2` instead.\n * @abstract\n */\nvar Renderer = /** @class */ (function () {\n function Renderer() {\n }\n return Renderer;\n}());\nvar Renderer2Interceptor = new InjectionToken('Renderer2Interceptor');\n/**\n * Injectable service that provides a low-level interface for modifying the UI.\n *\n * Use this service to bypass Angular's templating and make custom UI changes that can't be\n * expressed declaratively. For example if you need to set a property or an attribute whose name is\n * not statically known, use {\\@link Renderer#setElementProperty setElementProperty} or\n * {\\@link Renderer#setElementAttribute setElementAttribute} respectively.\n *\n * If you are implementing a custom renderer, you must implement this interface.\n *\n * The default Renderer implementation is `DomRenderer`. Also available is `WebWorkerRenderer`.\n *\n * @deprecated Use `RendererFactory2` instead.\n * @abstract\n */\nvar RootRenderer = /** @class */ (function () {\n function RootRenderer() {\n }\n return RootRenderer;\n}());\n/**\n * \\@experimental\n * @record\n */\n\n/**\n * \\@experimental\n * @abstract\n */\nvar RendererFactory2 = /** @class */ (function () {\n function RendererFactory2() {\n }\n return RendererFactory2;\n}());\n/** @enum {number} */\nvar RendererStyleFlags2 = {\n Important: 1,\n DashCase: 2,\n};\nRendererStyleFlags2[RendererStyleFlags2.Important] = \"Important\";\nRendererStyleFlags2[RendererStyleFlags2.DashCase] = \"DashCase\";\n/**\n * \\@experimental\n * @abstract\n */\nvar Renderer2 = /** @class */ (function () {\n function Renderer2() {\n }\n return Renderer2;\n}());\n\n/**\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/**\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 * A wrapper around a native element inside of a View.\n *\n * An `ElementRef` is backed by a render-specific element. In the browser, this is usually a DOM\n * element.\n *\n * \\@security Permitting direct access to the DOM can make your application more vulnerable to\n * XSS attacks. Carefully review any use of `ElementRef` in your code. For more detail, see the\n * [Security Guide](http://g.co/ng/security).\n *\n * \\@stable\n */\nvar ElementRef = /** @class */ (function () {\n function ElementRef(nativeElement) {\n this.nativeElement = nativeElement;\n }\n return ElementRef;\n}());\n\n/**\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 * Used to load ng module factories.\n * \\@stable\n * @abstract\n */\nvar NgModuleFactoryLoader = /** @class */ (function () {\n function NgModuleFactoryLoader() {\n }\n return NgModuleFactoryLoader;\n}());\nvar moduleFactories = new Map();\n/**\n * Registers a loaded module. Should only be called from generated NgModuleFactory code.\n * \\@experimental\n * @param {?} id\n * @param {?} factory\n * @return {?}\n */\nfunction registerModuleFactory(id, factory) {\n var /** @type {?} */ existing = moduleFactories.get(id);\n if (existing) {\n throw new Error(\"Duplicate module registered for \" + id + \" - \" + existing.moduleType.name + \" vs \" + factory.moduleType.name);\n }\n moduleFactories.set(id, factory);\n}\n/**\n * @return {?}\n */\n\n/**\n * Returns the NgModuleFactory with the given id, if it exists and has been loaded.\n * Factories for modules that do not specify an `id` cannot be retrieved. Throws if the module\n * cannot be found.\n * \\@experimental\n * @param {?} id\n * @return {?}\n */\nfunction getModuleFactory(id) {\n var /** @type {?} */ factory = moduleFactories.get(id);\n if (!factory)\n throw new Error(\"No module with ID \" + id + \" loaded\");\n return factory;\n}\n\n/**\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 * An unmodifiable list of items that Angular keeps up to date when the state\n * of the application changes.\n *\n * The type of object that {\\@link ViewChildren}, {\\@link ContentChildren}, and {\\@link QueryList}\n * provide.\n *\n * Implements an iterable interface, therefore it can be used in both ES6\n * javascript `for (var i of items)` loops as well as in Angular templates with\n * `*ngFor=\"let i of myList\"`.\n *\n * Changes can be observed by subscribing to the changes `Observable`.\n *\n * NOTE: In the future this class will implement an `Observable` interface.\n *\n * ### Example ([live demo](http://plnkr.co/edit/RX8sJnQYl9FWuSCWme5z?p=preview))\n * ```typescript\n * \\@Component({...})\n * class Container {\n * \\@ViewChildren(Item) items:QueryList<Item>;\n * }\n * ```\n * \\@stable\n */\nvar QueryList = /** @class */ (function () {\n function QueryList() {\n this.dirty = true;\n this._results = [];\n this.changes = new EventEmitter();\n this.length = 0;\n }\n /**\n * See\n * [Array.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)\n */\n /**\n * See\n * [Array.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)\n * @template U\n * @param {?} fn\n * @return {?}\n */\n QueryList.prototype.map = /**\n * See\n * [Array.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)\n * @template U\n * @param {?} fn\n * @return {?}\n */\n function (fn) { return this._results.map(fn); };\n /**\n * See\n * [Array.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)\n */\n /**\n * See\n * [Array.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)\n * @param {?} fn\n * @return {?}\n */\n QueryList.prototype.filter = /**\n * See\n * [Array.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n return this._results.filter(fn);\n };\n /**\n * See\n * [Array.find](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)\n */\n /**\n * See\n * [Array.find](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)\n * @param {?} fn\n * @return {?}\n */\n QueryList.prototype.find = /**\n * See\n * [Array.find](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n return this._results.find(fn);\n };\n /**\n * See\n * [Array.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)\n */\n /**\n * See\n * [Array.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)\n * @template U\n * @param {?} fn\n * @param {?} init\n * @return {?}\n */\n QueryList.prototype.reduce = /**\n * See\n * [Array.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)\n * @template U\n * @param {?} fn\n * @param {?} init\n * @return {?}\n */\n function (fn, init) {\n return this._results.reduce(fn, init);\n };\n /**\n * See\n * [Array.forEach](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)\n */\n /**\n * See\n * [Array.forEach](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)\n * @param {?} fn\n * @return {?}\n */\n QueryList.prototype.forEach = /**\n * See\n * [Array.forEach](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this._results.forEach(fn); };\n /**\n * See\n * [Array.some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)\n */\n /**\n * See\n * [Array.some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)\n * @param {?} fn\n * @return {?}\n */\n QueryList.prototype.some = /**\n * See\n * [Array.some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n return this._results.some(fn);\n };\n /**\n * @return {?}\n */\n QueryList.prototype.toArray = /**\n * @return {?}\n */\n function () { return this._results.slice(); };\n /**\n * @return {?}\n */\n QueryList.prototype[getSymbolIterator()] = /**\n * @return {?}\n */\n function () { return (/** @type {?} */ (this._results))[getSymbolIterator()](); };\n /**\n * @return {?}\n */\n QueryList.prototype.toString = /**\n * @return {?}\n */\n function () { return this._results.toString(); };\n /**\n * @param {?} res\n * @return {?}\n */\n QueryList.prototype.reset = /**\n * @param {?} res\n * @return {?}\n */\n function (res) {\n this._results = flatten(res);\n (/** @type {?} */ (this)).dirty = false;\n (/** @type {?} */ (this)).length = this._results.length;\n (/** @type {?} */ (this)).last = this._results[this.length - 1];\n (/** @type {?} */ (this)).first = this._results[0];\n };\n /**\n * @return {?}\n */\n QueryList.prototype.notifyOnChanges = /**\n * @return {?}\n */\n function () { (/** @type {?} */ (this.changes)).emit(this); };\n /** internal */\n /**\n * internal\n * @return {?}\n */\n QueryList.prototype.setDirty = /**\n * internal\n * @return {?}\n */\n function () { (/** @type {?} */ (this)).dirty = true; };\n /** internal */\n /**\n * internal\n * @return {?}\n */\n QueryList.prototype.destroy = /**\n * internal\n * @return {?}\n */\n function () {\n (/** @type {?} */ (this.changes)).complete();\n (/** @type {?} */ (this.changes)).unsubscribe();\n };\n return QueryList;\n}());\n/**\n * @template T\n * @param {?} list\n * @return {?}\n */\nfunction flatten(list) {\n return list.reduce(function (flat, item) {\n var /** @type {?} */ flatItem = Array.isArray(item) ? flatten(item) : item;\n return (/** @type {?} */ (flat)).concat(flatItem);\n }, []);\n}\n\n/**\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 */\nvar _SEPARATOR = '#';\nvar FACTORY_CLASS_SUFFIX = 'NgFactory';\n/**\n * Configuration for SystemJsNgModuleLoader.\n * token.\n *\n * \\@experimental\n * @abstract\n */\nvar SystemJsNgModuleLoaderConfig = /** @class */ (function () {\n function SystemJsNgModuleLoaderConfig() {\n }\n return SystemJsNgModuleLoaderConfig;\n}());\nvar DEFAULT_CONFIG = {\n factoryPathPrefix: '',\n factoryPathSuffix: '.ngfactory',\n};\n/**\n * NgModuleFactoryLoader that uses SystemJS to load NgModuleFactory\n * \\@experimental\n */\nvar SystemJsNgModuleLoader = /** @class */ (function () {\n function SystemJsNgModuleLoader(_compiler, config) {\n this._compiler = _compiler;\n this._config = config || DEFAULT_CONFIG;\n }\n /**\n * @param {?} path\n * @return {?}\n */\n SystemJsNgModuleLoader.prototype.load = /**\n * @param {?} path\n * @return {?}\n */\n function (path) {\n var /** @type {?} */ offlineMode = this._compiler instanceof Compiler;\n return offlineMode ? this.loadFactory(path) : this.loadAndCompile(path);\n };\n /**\n * @param {?} path\n * @return {?}\n */\n SystemJsNgModuleLoader.prototype.loadAndCompile = /**\n * @param {?} path\n * @return {?}\n */\n function (path) {\n var _this = this;\n var _a = path.split(_SEPARATOR), module = _a[0], exportName = _a[1];\n if (exportName === undefined) {\n exportName = 'default';\n }\n return System.import(module)\n .then(function (module) { return module[exportName]; })\n .then(function (type) { return checkNotEmpty(type, module, exportName); })\n .then(function (type) { return _this._compiler.compileModuleAsync(type); });\n };\n /**\n * @param {?} path\n * @return {?}\n */\n SystemJsNgModuleLoader.prototype.loadFactory = /**\n * @param {?} path\n * @return {?}\n */\n function (path) {\n var _a = path.split(_SEPARATOR), module = _a[0], exportName = _a[1];\n var /** @type {?} */ factoryClassSuffix = FACTORY_CLASS_SUFFIX;\n if (exportName === undefined) {\n exportName = 'default';\n factoryClassSuffix = '';\n }\n return System.import(this._config.factoryPathPrefix + module + this._config.factoryPathSuffix)\n .then(function (module) { return module[exportName + factoryClassSuffix]; })\n .then(function (factory) { return checkNotEmpty(factory, module, exportName); });\n };\n SystemJsNgModuleLoader.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n SystemJsNgModuleLoader.ctorParameters = function () { return [\n { type: Compiler, },\n { type: SystemJsNgModuleLoaderConfig, decorators: [{ type: Optional },] },\n ]; };\n return SystemJsNgModuleLoader;\n}());\n/**\n * @param {?} value\n * @param {?} modulePath\n * @param {?} exportName\n * @return {?}\n */\nfunction checkNotEmpty(value, modulePath, exportName) {\n if (!value) {\n throw new Error(\"Cannot find '\" + exportName + \"' in '\" + modulePath + \"'\");\n }\n return value;\n}\n\n/**\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 * Represents an Embedded Template that can be used to instantiate Embedded Views.\n *\n * You can access a `TemplateRef`, in two ways. Via a directive placed on a `<ng-template>` element\n * (or directive prefixed with `*`) and have the `TemplateRef` for this Embedded View injected into\n * the constructor of the directive using the `TemplateRef` Token. Alternatively you can query for\n * the `TemplateRef` from a Component or a Directive via {\\@link Query}.\n *\n * To instantiate Embedded Views based on a Template, use {\\@link ViewContainerRef#\n * createEmbeddedView}, which will create the View and attach it to the View Container.\n * \\@stable\n * @abstract\n */\nvar TemplateRef = /** @class */ (function () {\n function TemplateRef() {\n }\n return TemplateRef;\n}());\n\n/**\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 * Represents a container where one or more Views can be attached.\n *\n * The container can contain two kinds of Views. Host Views, created by instantiating a\n * {\\@link Component} via {\\@link #createComponent}, and Embedded Views, created by instantiating an\n * {\\@link TemplateRef Embedded Template} via {\\@link #createEmbeddedView}.\n *\n * The location of the View Container within the containing View is specified by the Anchor\n * `element`. Each View Container can have only one Anchor Element and each Anchor Element can only\n * have a single View Container.\n *\n * Root elements of Views attached to this container become siblings of the Anchor Element in\n * the Rendered View.\n *\n * To access a `ViewContainerRef` of an Element, you can either place a {\\@link Directive} injected\n * with `ViewContainerRef` on the Element, or you obtain it via a {\\@link ViewChild} query.\n * \\@stable\n * @abstract\n */\nvar ViewContainerRef = /** @class */ (function () {\n function ViewContainerRef() {\n }\n return ViewContainerRef;\n}());\n\n/**\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 * \\@stable\n * @abstract\n */\nvar ChangeDetectorRef = /** @class */ (function () {\n function ChangeDetectorRef() {\n }\n return ChangeDetectorRef;\n}());\n\n/**\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 * \\@stable\n * @abstract\n */\nvar ViewRef = /** @class */ (function (_super) {\n __extends(ViewRef, _super);\n function ViewRef() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return ViewRef;\n}(ChangeDetectorRef));\n/**\n * Represents an Angular View.\n *\n * <!-- TODO: move the next two paragraphs to the dev guide -->\n * A View is a fundamental building block of the application UI. It is the smallest grouping of\n * Elements which are created and destroyed together.\n *\n * Properties of elements in a View can change, but the structure (number and order) of elements in\n * a View cannot. Changing the structure of Elements can only be done by inserting, moving or\n * removing nested Views via a {\\@link ViewContainerRef}. Each View can contain many View Containers.\n * <!-- /TODO -->\n *\n * ### Example\n *\n * Given this template...\n *\n * ```\n * Count: {{items.length}}\n * <ul>\n * <li *ngFor=\"let item of items\">{{item}}</li>\n * </ul>\n * ```\n *\n * We have two {\\@link TemplateRef}s:\n *\n * Outer {\\@link TemplateRef}:\n * ```\n * Count: {{items.length}}\n * <ul>\n * <ng-template ngFor let-item [ngForOf]=\"items\"></ng-template>\n * </ul>\n * ```\n *\n * Inner {\\@link TemplateRef}:\n * ```\n * <li>{{item}}</li>\n * ```\n *\n * Notice that the original template is broken down into two separate {\\@link TemplateRef}s.\n *\n * The outer/inner {\\@link TemplateRef}s are then assembled into views like so:\n *\n * ```\n * <!-- ViewRef: outer-0 -->\n * Count: 2\n * <ul>\n * <ng-template view-container-ref></ng-template>\n * <!-- ViewRef: inner-1 --><li>first</li><!-- /ViewRef: inner-1 -->\n * <!-- ViewRef: inner-2 --><li>second</li><!-- /ViewRef: inner-2 -->\n * </ul>\n * <!-- /ViewRef: outer-0 -->\n * ```\n * \\@experimental\n * @abstract\n */\nvar EmbeddedViewRef = /** @class */ (function (_super) {\n __extends(EmbeddedViewRef, _super);\n function EmbeddedViewRef() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return EmbeddedViewRef;\n}(ViewRef));\n/**\n * @record\n */\n\n/**\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/**\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 */\nvar EventListener = /** @class */ (function () {\n function EventListener(name, callback) {\n this.name = name;\n this.callback = callback;\n }\n return EventListener;\n}());\n/**\n * \\@experimental All debugging apis are currently experimental.\n */\nvar DebugNode = /** @class */ (function () {\n function DebugNode(nativeNode, parent, _debugContext) {\n this._debugContext = _debugContext;\n this.nativeNode = nativeNode;\n if (parent && parent instanceof DebugElement) {\n parent.addChild(this);\n }\n else {\n this.parent = null;\n }\n this.listeners = [];\n }\n Object.defineProperty(DebugNode.prototype, \"injector\", {\n get: /**\n * @return {?}\n */\n function () { return this._debugContext.injector; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugNode.prototype, \"componentInstance\", {\n get: /**\n * @return {?}\n */\n function () { return this._debugContext.component; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugNode.prototype, \"context\", {\n get: /**\n * @return {?}\n */\n function () { return this._debugContext.context; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugNode.prototype, \"references\", {\n get: /**\n * @return {?}\n */\n function () { return this._debugContext.references; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugNode.prototype, \"providerTokens\", {\n get: /**\n * @return {?}\n */\n function () { return this._debugContext.providerTokens; },\n enumerable: true,\n configurable: true\n });\n return DebugNode;\n}());\n/**\n * \\@experimental All debugging apis are currently experimental.\n */\nvar DebugElement = /** @class */ (function (_super) {\n __extends(DebugElement, _super);\n function DebugElement(nativeNode, parent, _debugContext) {\n var _this = _super.call(this, nativeNode, parent, _debugContext) || this;\n _this.properties = {};\n _this.attributes = {};\n _this.classes = {};\n _this.styles = {};\n _this.childNodes = [];\n _this.nativeElement = nativeNode;\n return _this;\n }\n /**\n * @param {?} child\n * @return {?}\n */\n DebugElement.prototype.addChild = /**\n * @param {?} child\n * @return {?}\n */\n function (child) {\n if (child) {\n this.childNodes.push(child);\n child.parent = this;\n }\n };\n /**\n * @param {?} child\n * @return {?}\n */\n DebugElement.prototype.removeChild = /**\n * @param {?} child\n * @return {?}\n */\n function (child) {\n var /** @type {?} */ childIndex = this.childNodes.indexOf(child);\n if (childIndex !== -1) {\n child.parent = null;\n this.childNodes.splice(childIndex, 1);\n }\n };\n /**\n * @param {?} child\n * @param {?} newChildren\n * @return {?}\n */\n DebugElement.prototype.insertChildrenAfter = /**\n * @param {?} child\n * @param {?} newChildren\n * @return {?}\n */\n function (child, newChildren) {\n var _this = this;\n var /** @type {?} */ siblingIndex = this.childNodes.indexOf(child);\n if (siblingIndex !== -1) {\n (_a = this.childNodes).splice.apply(_a, [siblingIndex + 1, 0].concat(newChildren));\n newChildren.forEach(function (c) {\n if (c.parent) {\n c.parent.removeChild(c);\n }\n c.parent = _this;\n });\n }\n var _a;\n };\n /**\n * @param {?} refChild\n * @param {?} newChild\n * @return {?}\n */\n DebugElement.prototype.insertBefore = /**\n * @param {?} refChild\n * @param {?} newChild\n * @return {?}\n */\n function (refChild, newChild) {\n var /** @type {?} */ refIndex = this.childNodes.indexOf(refChild);\n if (refIndex === -1) {\n this.addChild(newChild);\n }\n else {\n if (newChild.parent) {\n newChild.parent.removeChild(newChild);\n }\n newChild.parent = this;\n this.childNodes.splice(refIndex, 0, newChild);\n }\n };\n /**\n * @param {?} predicate\n * @return {?}\n */\n DebugElement.prototype.query = /**\n * @param {?} predicate\n * @return {?}\n */\n function (predicate) {\n var /** @type {?} */ results = this.queryAll(predicate);\n return results[0] || null;\n };\n /**\n * @param {?} predicate\n * @return {?}\n */\n DebugElement.prototype.queryAll = /**\n * @param {?} predicate\n * @return {?}\n */\n function (predicate) {\n var /** @type {?} */ matches = [];\n _queryElementChildren(this, predicate, matches);\n return matches;\n };\n /**\n * @param {?} predicate\n * @return {?}\n */\n DebugElement.prototype.queryAllNodes = /**\n * @param {?} predicate\n * @return {?}\n */\n function (predicate) {\n var /** @type {?} */ matches = [];\n _queryNodeChildren(this, predicate, matches);\n return matches;\n };\n Object.defineProperty(DebugElement.prototype, \"children\", {\n get: /**\n * @return {?}\n */\n function () {\n return /** @type {?} */ (this.childNodes.filter(function (node) { return node instanceof DebugElement; }));\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} eventName\n * @param {?} eventObj\n * @return {?}\n */\n DebugElement.prototype.triggerEventHandler = /**\n * @param {?} eventName\n * @param {?} eventObj\n * @return {?}\n */\n function (eventName, eventObj) {\n this.listeners.forEach(function (listener) {\n if (listener.name == eventName) {\n listener.callback(eventObj);\n }\n });\n };\n return DebugElement;\n}(DebugNode));\n/**\n * \\@experimental\n * @param {?} debugEls\n * @return {?}\n */\nfunction asNativeElements(debugEls) {\n return debugEls.map(function (el) { return el.nativeElement; });\n}\n/**\n * @param {?} element\n * @param {?} predicate\n * @param {?} matches\n * @return {?}\n */\nfunction _queryElementChildren(element, predicate, matches) {\n element.childNodes.forEach(function (node) {\n if (node instanceof DebugElement) {\n if (predicate(node)) {\n matches.push(node);\n }\n _queryElementChildren(node, predicate, matches);\n }\n });\n}\n/**\n * @param {?} parentNode\n * @param {?} predicate\n * @param {?} matches\n * @return {?}\n */\nfunction _queryNodeChildren(parentNode, predicate, matches) {\n if (parentNode instanceof DebugElement) {\n parentNode.childNodes.forEach(function (node) {\n if (predicate(node)) {\n matches.push(node);\n }\n if (node instanceof DebugElement) {\n _queryNodeChildren(node, predicate, matches);\n }\n });\n }\n}\n// Need to keep the nodes in a global Map so that multiple angular apps are supported.\nvar _nativeNodeToDebugNode = new Map();\n/**\n * \\@experimental\n * @param {?} nativeNode\n * @return {?}\n */\nfunction getDebugNode(nativeNode) {\n return _nativeNodeToDebugNode.get(nativeNode) || null;\n}\n/**\n * @return {?}\n */\n\n/**\n * @param {?} node\n * @return {?}\n */\nfunction indexDebugNode(node) {\n _nativeNodeToDebugNode.set(node.nativeNode, node);\n}\n/**\n * @param {?} node\n * @return {?}\n */\nfunction removeDebugNodeFromIndex(node) {\n _nativeNodeToDebugNode.delete(node.nativeNode);\n}\n/**\n * A boolean-valued function over a value, possibly including context information\n * regarding that value's position in an array.\n *\n * \\@experimental All debugging apis are currently experimental.\n * @record\n */\n\n/**\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 * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction devModeEqual(a, b) {\n var /** @type {?} */ isListLikeIterableA = isListLikeIterable(a);\n var /** @type {?} */ isListLikeIterableB = isListLikeIterable(b);\n if (isListLikeIterableA && isListLikeIterableB) {\n return areIterablesEqual(a, b, devModeEqual);\n }\n else {\n var /** @type {?} */ isAObject = a && (typeof a === 'object' || typeof a === 'function');\n var /** @type {?} */ isBObject = b && (typeof b === 'object' || typeof b === 'function');\n if (!isListLikeIterableA && isAObject && !isListLikeIterableB && isBObject) {\n return true;\n }\n else {\n return looseIdentical(a, b);\n }\n }\n}\n/**\n * Indicates that the result of a {\\@link Pipe} transformation has changed even though the\n * reference has not changed.\n *\n * Wrapped values are unwrapped automatically during the change detection, and the unwrapped value\n * is stored.\n *\n * Example:\n *\n * ```\n * if (this._latestValue === this._latestReturnedValue) {\n * return this._latestReturnedValue;\n * } else {\n * this._latestReturnedValue = this._latestValue;\n * return WrappedValue.wrap(this._latestValue); // this will force update\n * }\n * ```\n * \\@stable\n */\nvar WrappedValue = /** @class */ (function () {\n function WrappedValue(value) {\n this.wrapped = value;\n }\n /** Creates a wrapped value. */\n /**\n * Creates a wrapped value.\n * @param {?} value\n * @return {?}\n */\n WrappedValue.wrap = /**\n * Creates a wrapped value.\n * @param {?} value\n * @return {?}\n */\n function (value) { return new WrappedValue(value); };\n /**\n * Returns the underlying value of a wrapped value.\n * Returns the given `value` when it is not wrapped.\n **/\n /**\n * Returns the underlying value of a wrapped value.\n * Returns the given `value` when it is not wrapped.\n *\n * @param {?} value\n * @return {?}\n */\n WrappedValue.unwrap = /**\n * Returns the underlying value of a wrapped value.\n * Returns the given `value` when it is not wrapped.\n *\n * @param {?} value\n * @return {?}\n */\n function (value) { return WrappedValue.isWrapped(value) ? value.wrapped : value; };\n /** Returns true if `value` is a wrapped value. */\n /**\n * Returns true if `value` is a wrapped value.\n * @param {?} value\n * @return {?}\n */\n WrappedValue.isWrapped = /**\n * Returns true if `value` is a wrapped value.\n * @param {?} value\n * @return {?}\n */\n function (value) { return value instanceof WrappedValue; };\n return WrappedValue;\n}());\n/**\n * Represents a basic change from a previous to a new value.\n * \\@stable\n */\nvar SimpleChange = /** @class */ (function () {\n function SimpleChange(previousValue, currentValue, firstChange) {\n this.previousValue = previousValue;\n this.currentValue = currentValue;\n this.firstChange = firstChange;\n }\n /**\n * Check whether the new value is the first value assigned.\n */\n /**\n * Check whether the new value is the first value assigned.\n * @return {?}\n */\n SimpleChange.prototype.isFirstChange = /**\n * Check whether the new value is the first value assigned.\n * @return {?}\n */\n function () { return this.firstChange; };\n return SimpleChange;\n}());\n/**\n * @param {?} obj\n * @return {?}\n */\nfunction isListLikeIterable(obj) {\n if (!isJsObject(obj))\n return false;\n return Array.isArray(obj) ||\n (!(obj instanceof Map) && // JS Map are iterables but return entries as [k, v]\n // JS Map are iterables but return entries as [k, v]\n getSymbolIterator() in obj); // JS Iterable have a Symbol.iterator prop\n}\n/**\n * @param {?} a\n * @param {?} b\n * @param {?} comparator\n * @return {?}\n */\nfunction areIterablesEqual(a, b, comparator) {\n var /** @type {?} */ iterator1 = a[getSymbolIterator()]();\n var /** @type {?} */ iterator2 = b[getSymbolIterator()]();\n while (true) {\n var /** @type {?} */ item1 = iterator1.next();\n var /** @type {?} */ item2 = iterator2.next();\n if (item1.done && item2.done)\n return true;\n if (item1.done || item2.done)\n return false;\n if (!comparator(item1.value, item2.value))\n return false;\n }\n}\n/**\n * @param {?} obj\n * @param {?} fn\n * @return {?}\n */\nfunction iterateListLike(obj, fn) {\n if (Array.isArray(obj)) {\n for (var /** @type {?} */ i = 0; i < obj.length; i++) {\n fn(obj[i]);\n }\n }\n else {\n var /** @type {?} */ iterator = obj[getSymbolIterator()]();\n var /** @type {?} */ item = void 0;\n while (!((item = iterator.next()).done)) {\n fn(item.value);\n }\n }\n}\n/**\n * @param {?} o\n * @return {?}\n */\nfunction isJsObject(o) {\n return o !== null && (typeof o === 'function' || typeof o === 'object');\n}\n\n/**\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 */\nvar DefaultIterableDifferFactory = /** @class */ (function () {\n function DefaultIterableDifferFactory() {\n }\n /**\n * @param {?} obj\n * @return {?}\n */\n DefaultIterableDifferFactory.prototype.supports = /**\n * @param {?} obj\n * @return {?}\n */\n function (obj) { return isListLikeIterable(obj); };\n /**\n * @template V\n * @param {?=} trackByFn\n * @return {?}\n */\n DefaultIterableDifferFactory.prototype.create = /**\n * @template V\n * @param {?=} trackByFn\n * @return {?}\n */\n function (trackByFn) {\n return new DefaultIterableDiffer(trackByFn);\n };\n return DefaultIterableDifferFactory;\n}());\nvar trackByIdentity = function (index, item) { return item; };\n/**\n * @deprecated v4.0.0 - Should not be part of public API.\n */\nvar DefaultIterableDiffer = /** @class */ (function () {\n function DefaultIterableDiffer(trackByFn) {\n this.length = 0;\n this._linkedRecords = null;\n this._unlinkedRecords = null;\n this._previousItHead = null;\n this._itHead = null;\n this._itTail = null;\n this._additionsHead = null;\n this._additionsTail = null;\n this._movesHead = null;\n this._movesTail = null;\n this._removalsHead = null;\n this._removalsTail = null;\n this._identityChangesHead = null;\n this._identityChangesTail = null;\n this._trackByFn = trackByFn || trackByIdentity;\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultIterableDiffer.prototype.forEachItem = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._itHead; record !== null; record = record._next) {\n fn(record);\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultIterableDiffer.prototype.forEachOperation = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ nextIt = this._itHead;\n var /** @type {?} */ nextRemove = this._removalsHead;\n var /** @type {?} */ addRemoveOffset = 0;\n var /** @type {?} */ moveOffsets = null;\n while (nextIt || nextRemove) {\n // Figure out which is the next record to process\n // Order: remove, add, move\n var /** @type {?} */ record = !nextRemove ||\n nextIt && /** @type {?} */ ((nextIt.currentIndex)) < getPreviousIndex(nextRemove, addRemoveOffset, moveOffsets) ? /** @type {?} */\n ((nextIt)) :\n nextRemove;\n var /** @type {?} */ adjPreviousIndex = getPreviousIndex(record, addRemoveOffset, moveOffsets);\n var /** @type {?} */ currentIndex = record.currentIndex;\n // consume the item, and adjust the addRemoveOffset and update moveDistance if necessary\n if (record === nextRemove) {\n addRemoveOffset--;\n nextRemove = nextRemove._nextRemoved;\n }\n else {\n nextIt = /** @type {?} */ ((nextIt))._next;\n if (record.previousIndex == null) {\n addRemoveOffset++;\n }\n else {\n // INVARIANT: currentIndex < previousIndex\n if (!moveOffsets)\n moveOffsets = [];\n var /** @type {?} */ localMovePreviousIndex = adjPreviousIndex - addRemoveOffset;\n var /** @type {?} */ localCurrentIndex = /** @type {?} */ ((currentIndex)) - addRemoveOffset;\n if (localMovePreviousIndex != localCurrentIndex) {\n for (var /** @type {?} */ i = 0; i < localMovePreviousIndex; i++) {\n var /** @type {?} */ offset = i < moveOffsets.length ? moveOffsets[i] : (moveOffsets[i] = 0);\n var /** @type {?} */ index = offset + i;\n if (localCurrentIndex <= index && index < localMovePreviousIndex) {\n moveOffsets[i] = offset + 1;\n }\n }\n var /** @type {?} */ previousIndex = record.previousIndex;\n moveOffsets[previousIndex] = localCurrentIndex - localMovePreviousIndex;\n }\n }\n }\n if (adjPreviousIndex !== currentIndex) {\n fn(record, adjPreviousIndex, currentIndex);\n }\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultIterableDiffer.prototype.forEachPreviousItem = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._previousItHead; record !== null; record = record._nextPrevious) {\n fn(record);\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultIterableDiffer.prototype.forEachAddedItem = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n fn(record);\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultIterableDiffer.prototype.forEachMovedItem = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._movesHead; record !== null; record = record._nextMoved) {\n fn(record);\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultIterableDiffer.prototype.forEachRemovedItem = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\n fn(record);\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultIterableDiffer.prototype.forEachIdentityChange = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._identityChangesHead; record !== null; record = record._nextIdentityChange) {\n fn(record);\n }\n };\n /**\n * @param {?} collection\n * @return {?}\n */\n DefaultIterableDiffer.prototype.diff = /**\n * @param {?} collection\n * @return {?}\n */\n function (collection) {\n if (collection == null)\n collection = [];\n if (!isListLikeIterable(collection)) {\n throw new Error(\"Error trying to diff '\" + stringify(collection) + \"'. Only arrays and iterables are allowed\");\n }\n if (this.check(collection)) {\n return this;\n }\n else {\n return null;\n }\n };\n /**\n * @return {?}\n */\n DefaultIterableDiffer.prototype.onDestroy = /**\n * @return {?}\n */\n function () { };\n /**\n * @param {?} collection\n * @return {?}\n */\n DefaultIterableDiffer.prototype.check = /**\n * @param {?} collection\n * @return {?}\n */\n function (collection) {\n var _this = this;\n this._reset();\n var /** @type {?} */ record = this._itHead;\n var /** @type {?} */ mayBeDirty = false;\n var /** @type {?} */ index;\n var /** @type {?} */ item;\n var /** @type {?} */ itemTrackBy;\n if (Array.isArray(collection)) {\n (/** @type {?} */ (this)).length = collection.length;\n for (var /** @type {?} */ index_1 = 0; index_1 < this.length; index_1++) {\n item = collection[index_1];\n itemTrackBy = this._trackByFn(index_1, item);\n if (record === null || !looseIdentical(record.trackById, itemTrackBy)) {\n record = this._mismatch(record, item, itemTrackBy, index_1);\n mayBeDirty = true;\n }\n else {\n if (mayBeDirty) {\n // TODO(misko): can we limit this to duplicates only?\n record = this._verifyReinsertion(record, item, itemTrackBy, index_1);\n }\n if (!looseIdentical(record.item, item))\n this._addIdentityChange(record, item);\n }\n record = record._next;\n }\n }\n else {\n index = 0;\n iterateListLike(collection, function (item) {\n itemTrackBy = _this._trackByFn(index, item);\n if (record === null || !looseIdentical(record.trackById, itemTrackBy)) {\n record = _this._mismatch(record, item, itemTrackBy, index);\n mayBeDirty = true;\n }\n else {\n if (mayBeDirty) {\n // TODO(misko): can we limit this to duplicates only?\n record = _this._verifyReinsertion(record, item, itemTrackBy, index);\n }\n if (!looseIdentical(record.item, item))\n _this._addIdentityChange(record, item);\n }\n record = record._next;\n index++;\n });\n (/** @type {?} */ (this)).length = index;\n }\n this._truncate(record);\n (/** @type {?} */ (this)).collection = collection;\n return this.isDirty;\n };\n Object.defineProperty(DefaultIterableDiffer.prototype, \"isDirty\", {\n /* CollectionChanges is considered dirty if it has any additions, moves, removals, or identity\n * changes.\n */\n get: /**\n * @return {?}\n */\n function () {\n return this._additionsHead !== null || this._movesHead !== null ||\n this._removalsHead !== null || this._identityChangesHead !== null;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Reset the state of the change objects to show no changes. This means set previousKey to\n * currentKey, and clear all of the queues (additions, moves, removals).\n * Set the previousIndexes of moved and added items to their currentIndexes\n * Reset the list of additions, moves and removals\n *\n * @internal\n */\n /**\n * Reset the state of the change objects to show no changes. This means set previousKey to\n * currentKey, and clear all of the queues (additions, moves, removals).\n * Set the previousIndexes of moved and added items to their currentIndexes\n * Reset the list of additions, moves and removals\n *\n * \\@internal\n * @return {?}\n */\n DefaultIterableDiffer.prototype._reset = /**\n * Reset the state of the change objects to show no changes. This means set previousKey to\n * currentKey, and clear all of the queues (additions, moves, removals).\n * Set the previousIndexes of moved and added items to their currentIndexes\n * Reset the list of additions, moves and removals\n *\n * \\@internal\n * @return {?}\n */\n function () {\n if (this.isDirty) {\n var /** @type {?} */ record = void 0;\n var /** @type {?} */ nextRecord = void 0;\n for (record = this._previousItHead = this._itHead; record !== null; record = record._next) {\n record._nextPrevious = record._next;\n }\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n record.previousIndex = record.currentIndex;\n }\n this._additionsHead = this._additionsTail = null;\n for (record = this._movesHead; record !== null; record = nextRecord) {\n record.previousIndex = record.currentIndex;\n nextRecord = record._nextMoved;\n }\n this._movesHead = this._movesTail = null;\n this._removalsHead = this._removalsTail = null;\n this._identityChangesHead = this._identityChangesTail = null;\n // todo(vicb) when assert gets supported\n // assert(!this.isDirty);\n }\n };\n /**\n * This is the core function which handles differences between collections.\n *\n * - `record` is the record which we saw at this position last time. If null then it is a new\n * item.\n * - `item` is the current item in the collection\n * - `index` is the position of the item in the collection\n *\n * @internal\n */\n /**\n * This is the core function which handles differences between collections.\n *\n * - `record` is the record which we saw at this position last time. If null then it is a new\n * item.\n * - `item` is the current item in the collection\n * - `index` is the position of the item in the collection\n *\n * \\@internal\n * @param {?} record\n * @param {?} item\n * @param {?} itemTrackBy\n * @param {?} index\n * @return {?}\n */\n DefaultIterableDiffer.prototype._mismatch = /**\n * This is the core function which handles differences between collections.\n *\n * - `record` is the record which we saw at this position last time. If null then it is a new\n * item.\n * - `item` is the current item in the collection\n * - `index` is the position of the item in the collection\n *\n * \\@internal\n * @param {?} record\n * @param {?} item\n * @param {?} itemTrackBy\n * @param {?} index\n * @return {?}\n */\n function (record, item, itemTrackBy, index) {\n // The previous record after which we will append the current one.\n var /** @type {?} */ previousRecord;\n if (record === null) {\n previousRecord = this._itTail;\n }\n else {\n previousRecord = record._prev;\n // Remove the record from the collection since we know it does not match the item.\n this._remove(record);\n }\n // Attempt to see if we have seen the item before.\n record = this._linkedRecords === null ? null : this._linkedRecords.get(itemTrackBy, index);\n if (record !== null) {\n // We have seen this before, we need to move it forward in the collection.\n // But first we need to check if identity changed, so we can update in view if necessary\n if (!looseIdentical(record.item, item))\n this._addIdentityChange(record, item);\n this._moveAfter(record, previousRecord, index);\n }\n else {\n // Never seen it, check evicted list.\n record = this._unlinkedRecords === null ? null : this._unlinkedRecords.get(itemTrackBy, null);\n if (record !== null) {\n // It is an item which we have evicted earlier: reinsert it back into the list.\n // But first we need to check if identity changed, so we can update in view if necessary\n if (!looseIdentical(record.item, item))\n this._addIdentityChange(record, item);\n this._reinsertAfter(record, previousRecord, index);\n }\n else {\n // It is a new item: add it.\n record =\n this._addAfter(new IterableChangeRecord_(item, itemTrackBy), previousRecord, index);\n }\n }\n return record;\n };\n /**\n * This check is only needed if an array contains duplicates. (Short circuit of nothing dirty)\n *\n * Use case: `[a, a]` => `[b, a, a]`\n *\n * If we did not have this check then the insertion of `b` would:\n * 1) evict first `a`\n * 2) insert `b` at `0` index.\n * 3) leave `a` at index `1` as is. <-- this is wrong!\n * 3) reinsert `a` at index 2. <-- this is wrong!\n *\n * The correct behavior is:\n * 1) evict first `a`\n * 2) insert `b` at `0` index.\n * 3) reinsert `a` at index 1.\n * 3) move `a` at from `1` to `2`.\n *\n *\n * Double check that we have not evicted a duplicate item. We need to check if the item type may\n * have already been removed:\n * The insertion of b will evict the first 'a'. If we don't reinsert it now it will be reinserted\n * at the end. Which will show up as the two 'a's switching position. This is incorrect, since a\n * better way to think of it is as insert of 'b' rather then switch 'a' with 'b' and then add 'a'\n * at the end.\n *\n * @internal\n */\n /**\n * This check is only needed if an array contains duplicates. (Short circuit of nothing dirty)\n *\n * Use case: `[a, a]` => `[b, a, a]`\n *\n * If we did not have this check then the insertion of `b` would:\n * 1) evict first `a`\n * 2) insert `b` at `0` index.\n * 3) leave `a` at index `1` as is. <-- this is wrong!\n * 3) reinsert `a` at index 2. <-- this is wrong!\n *\n * The correct behavior is:\n * 1) evict first `a`\n * 2) insert `b` at `0` index.\n * 3) reinsert `a` at index 1.\n * 3) move `a` at from `1` to `2`.\n *\n *\n * Double check that we have not evicted a duplicate item. We need to check if the item type may\n * have already been removed:\n * The insertion of b will evict the first 'a'. If we don't reinsert it now it will be reinserted\n * at the end. Which will show up as the two 'a's switching position. This is incorrect, since a\n * better way to think of it is as insert of 'b' rather then switch 'a' with 'b' and then add 'a'\n * at the end.\n *\n * \\@internal\n * @param {?} record\n * @param {?} item\n * @param {?} itemTrackBy\n * @param {?} index\n * @return {?}\n */\n DefaultIterableDiffer.prototype._verifyReinsertion = /**\n * This check is only needed if an array contains duplicates. (Short circuit of nothing dirty)\n *\n * Use case: `[a, a]` => `[b, a, a]`\n *\n * If we did not have this check then the insertion of `b` would:\n * 1) evict first `a`\n * 2) insert `b` at `0` index.\n * 3) leave `a` at index `1` as is. <-- this is wrong!\n * 3) reinsert `a` at index 2. <-- this is wrong!\n *\n * The correct behavior is:\n * 1) evict first `a`\n * 2) insert `b` at `0` index.\n * 3) reinsert `a` at index 1.\n * 3) move `a` at from `1` to `2`.\n *\n *\n * Double check that we have not evicted a duplicate item. We need to check if the item type may\n * have already been removed:\n * The insertion of b will evict the first 'a'. If we don't reinsert it now it will be reinserted\n * at the end. Which will show up as the two 'a's switching position. This is incorrect, since a\n * better way to think of it is as insert of 'b' rather then switch 'a' with 'b' and then add 'a'\n * at the end.\n *\n * \\@internal\n * @param {?} record\n * @param {?} item\n * @param {?} itemTrackBy\n * @param {?} index\n * @return {?}\n */\n function (record, item, itemTrackBy, index) {\n var /** @type {?} */ reinsertRecord = this._unlinkedRecords === null ? null : this._unlinkedRecords.get(itemTrackBy, null);\n if (reinsertRecord !== null) {\n record = this._reinsertAfter(reinsertRecord, /** @type {?} */ ((record._prev)), index);\n }\n else if (record.currentIndex != index) {\n record.currentIndex = index;\n this._addToMoves(record, index);\n }\n return record;\n };\n /**\n * Get rid of any excess {@link IterableChangeRecord_}s from the previous collection\n *\n * - `record` The first excess {@link IterableChangeRecord_}.\n *\n * @internal\n */\n /**\n * Get rid of any excess {\\@link IterableChangeRecord_}s from the previous collection\n *\n * - `record` The first excess {\\@link IterableChangeRecord_}.\n *\n * \\@internal\n * @param {?} record\n * @return {?}\n */\n DefaultIterableDiffer.prototype._truncate = /**\n * Get rid of any excess {\\@link IterableChangeRecord_}s from the previous collection\n *\n * - `record` The first excess {\\@link IterableChangeRecord_}.\n *\n * \\@internal\n * @param {?} record\n * @return {?}\n */\n function (record) {\n // Anything after that needs to be removed;\n while (record !== null) {\n var /** @type {?} */ nextRecord = record._next;\n this._addToRemovals(this._unlink(record));\n record = nextRecord;\n }\n if (this._unlinkedRecords !== null) {\n this._unlinkedRecords.clear();\n }\n if (this._additionsTail !== null) {\n this._additionsTail._nextAdded = null;\n }\n if (this._movesTail !== null) {\n this._movesTail._nextMoved = null;\n }\n if (this._itTail !== null) {\n this._itTail._next = null;\n }\n if (this._removalsTail !== null) {\n this._removalsTail._nextRemoved = null;\n }\n if (this._identityChangesTail !== null) {\n this._identityChangesTail._nextIdentityChange = null;\n }\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n DefaultIterableDiffer.prototype._reinsertAfter = /**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n function (record, prevRecord, index) {\n if (this._unlinkedRecords !== null) {\n this._unlinkedRecords.remove(record);\n }\n var /** @type {?} */ prev = record._prevRemoved;\n var /** @type {?} */ next = record._nextRemoved;\n if (prev === null) {\n this._removalsHead = next;\n }\n else {\n prev._nextRemoved = next;\n }\n if (next === null) {\n this._removalsTail = prev;\n }\n else {\n next._prevRemoved = prev;\n }\n this._insertAfter(record, prevRecord, index);\n this._addToMoves(record, index);\n return record;\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n DefaultIterableDiffer.prototype._moveAfter = /**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n function (record, prevRecord, index) {\n this._unlink(record);\n this._insertAfter(record, prevRecord, index);\n this._addToMoves(record, index);\n return record;\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n DefaultIterableDiffer.prototype._addAfter = /**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n function (record, prevRecord, index) {\n this._insertAfter(record, prevRecord, index);\n if (this._additionsTail === null) {\n // todo(vicb)\n // assert(this._additionsHead === null);\n this._additionsTail = this._additionsHead = record;\n }\n else {\n // todo(vicb)\n // assert(_additionsTail._nextAdded === null);\n // assert(record._nextAdded === null);\n this._additionsTail = this._additionsTail._nextAdded = record;\n }\n return record;\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n DefaultIterableDiffer.prototype._insertAfter = /**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n function (record, prevRecord, index) {\n // todo(vicb)\n // assert(record != prevRecord);\n // assert(record._next === null);\n // assert(record._prev === null);\n var /** @type {?} */ next = prevRecord === null ? this._itHead : prevRecord._next;\n // todo(vicb)\n // assert(next != record);\n // assert(prevRecord != record);\n record._next = next;\n record._prev = prevRecord;\n if (next === null) {\n this._itTail = record;\n }\n else {\n next._prev = record;\n }\n if (prevRecord === null) {\n this._itHead = record;\n }\n else {\n prevRecord._next = record;\n }\n if (this._linkedRecords === null) {\n this._linkedRecords = new _DuplicateMap();\n }\n this._linkedRecords.put(record);\n record.currentIndex = index;\n return record;\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} record\n * @return {?}\n */\n DefaultIterableDiffer.prototype._remove = /**\n * \\@internal\n * @param {?} record\n * @return {?}\n */\n function (record) {\n return this._addToRemovals(this._unlink(record));\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} record\n * @return {?}\n */\n DefaultIterableDiffer.prototype._unlink = /**\n * \\@internal\n * @param {?} record\n * @return {?}\n */\n function (record) {\n if (this._linkedRecords !== null) {\n this._linkedRecords.remove(record);\n }\n var /** @type {?} */ prev = record._prev;\n var /** @type {?} */ next = record._next;\n // todo(vicb)\n // assert((record._prev = null) === null);\n // assert((record._next = null) === null);\n if (prev === null) {\n this._itHead = next;\n }\n else {\n prev._next = next;\n }\n if (next === null) {\n this._itTail = prev;\n }\n else {\n next._prev = prev;\n }\n return record;\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} record\n * @param {?} toIndex\n * @return {?}\n */\n DefaultIterableDiffer.prototype._addToMoves = /**\n * \\@internal\n * @param {?} record\n * @param {?} toIndex\n * @return {?}\n */\n function (record, toIndex) {\n // todo(vicb)\n // assert(record._nextMoved === null);\n if (record.previousIndex === toIndex) {\n return record;\n }\n if (this._movesTail === null) {\n // todo(vicb)\n // assert(_movesHead === null);\n this._movesTail = this._movesHead = record;\n }\n else {\n // todo(vicb)\n // assert(_movesTail._nextMoved === null);\n this._movesTail = this._movesTail._nextMoved = record;\n }\n return record;\n };\n /**\n * @param {?} record\n * @return {?}\n */\n DefaultIterableDiffer.prototype._addToRemovals = /**\n * @param {?} record\n * @return {?}\n */\n function (record) {\n if (this._unlinkedRecords === null) {\n this._unlinkedRecords = new _DuplicateMap();\n }\n this._unlinkedRecords.put(record);\n record.currentIndex = null;\n record._nextRemoved = null;\n if (this._removalsTail === null) {\n // todo(vicb)\n // assert(_removalsHead === null);\n this._removalsTail = this._removalsHead = record;\n record._prevRemoved = null;\n }\n else {\n // todo(vicb)\n // assert(_removalsTail._nextRemoved === null);\n // assert(record._nextRemoved === null);\n record._prevRemoved = this._removalsTail;\n this._removalsTail = this._removalsTail._nextRemoved = record;\n }\n return record;\n };\n /** @internal */\n /**\n * \\@internal\n * @param {?} record\n * @param {?} item\n * @return {?}\n */\n DefaultIterableDiffer.prototype._addIdentityChange = /**\n * \\@internal\n * @param {?} record\n * @param {?} item\n * @return {?}\n */\n function (record, item) {\n record.item = item;\n if (this._identityChangesTail === null) {\n this._identityChangesTail = this._identityChangesHead = record;\n }\n else {\n this._identityChangesTail = this._identityChangesTail._nextIdentityChange = record;\n }\n return record;\n };\n return DefaultIterableDiffer;\n}());\n/**\n * \\@stable\n */\nvar IterableChangeRecord_ = /** @class */ (function () {\n function IterableChangeRecord_(item, trackById) {\n this.item = item;\n this.trackById = trackById;\n this.currentIndex = null;\n this.previousIndex = null;\n /**\n * \\@internal\n */\n this._nextPrevious = null;\n /**\n * \\@internal\n */\n this._prev = null;\n /**\n * \\@internal\n */\n this._next = null;\n /**\n * \\@internal\n */\n this._prevDup = null;\n /**\n * \\@internal\n */\n this._nextDup = null;\n /**\n * \\@internal\n */\n this._prevRemoved = null;\n /**\n * \\@internal\n */\n this._nextRemoved = null;\n /**\n * \\@internal\n */\n this._nextAdded = null;\n /**\n * \\@internal\n */\n this._nextMoved = null;\n /**\n * \\@internal\n */\n this._nextIdentityChange = null;\n }\n return IterableChangeRecord_;\n}());\nvar _DuplicateItemRecordList = /** @class */ (function () {\n function _DuplicateItemRecordList() {\n /**\n * \\@internal\n */\n this._head = null;\n /**\n * \\@internal\n */\n this._tail = null;\n }\n /**\n * Append the record to the list of duplicates.\n *\n * Note: by design all records in the list of duplicates hold the same value in record.item.\n */\n /**\n * Append the record to the list of duplicates.\n *\n * Note: by design all records in the list of duplicates hold the same value in record.item.\n * @param {?} record\n * @return {?}\n */\n _DuplicateItemRecordList.prototype.add = /**\n * Append the record to the list of duplicates.\n *\n * Note: by design all records in the list of duplicates hold the same value in record.item.\n * @param {?} record\n * @return {?}\n */\n function (record) {\n if (this._head === null) {\n this._head = this._tail = record;\n record._nextDup = null;\n record._prevDup = null;\n }\n else {\n /** @type {?} */ ((\n // todo(vicb)\n // assert(record.item == _head.item ||\n // record.item is num && record.item.isNaN && _head.item is num && _head.item.isNaN);\n this._tail))._nextDup = record;\n record._prevDup = this._tail;\n record._nextDup = null;\n this._tail = record;\n }\n };\n // Returns a IterableChangeRecord_ having IterableChangeRecord_.trackById == trackById and\n // IterableChangeRecord_.currentIndex >= atOrAfterIndex\n /**\n * @param {?} trackById\n * @param {?} atOrAfterIndex\n * @return {?}\n */\n _DuplicateItemRecordList.prototype.get = /**\n * @param {?} trackById\n * @param {?} atOrAfterIndex\n * @return {?}\n */\n function (trackById, atOrAfterIndex) {\n var /** @type {?} */ record;\n for (record = this._head; record !== null; record = record._nextDup) {\n if ((atOrAfterIndex === null || atOrAfterIndex <= /** @type {?} */ ((record.currentIndex))) &&\n looseIdentical(record.trackById, trackById)) {\n return record;\n }\n }\n return null;\n };\n /**\n * Remove one {@link IterableChangeRecord_} from the list of duplicates.\n *\n * Returns whether the list of duplicates is empty.\n */\n /**\n * Remove one {\\@link IterableChangeRecord_} from the list of duplicates.\n *\n * Returns whether the list of duplicates is empty.\n * @param {?} record\n * @return {?}\n */\n _DuplicateItemRecordList.prototype.remove = /**\n * Remove one {\\@link IterableChangeRecord_} from the list of duplicates.\n *\n * Returns whether the list of duplicates is empty.\n * @param {?} record\n * @return {?}\n */\n function (record) {\n // todo(vicb)\n // assert(() {\n // // verify that the record being removed is in the list.\n // for (IterableChangeRecord_ cursor = _head; cursor != null; cursor = cursor._nextDup) {\n // if (identical(cursor, record)) return true;\n // }\n // return false;\n //});\n var /** @type {?} */ prev = record._prevDup;\n var /** @type {?} */ next = record._nextDup;\n if (prev === null) {\n this._head = next;\n }\n else {\n prev._nextDup = next;\n }\n if (next === null) {\n this._tail = prev;\n }\n else {\n next._prevDup = prev;\n }\n return this._head === null;\n };\n return _DuplicateItemRecordList;\n}());\nvar _DuplicateMap = /** @class */ (function () {\n function _DuplicateMap() {\n this.map = new Map();\n }\n /**\n * @param {?} record\n * @return {?}\n */\n _DuplicateMap.prototype.put = /**\n * @param {?} record\n * @return {?}\n */\n function (record) {\n var /** @type {?} */ key = record.trackById;\n var /** @type {?} */ duplicates = this.map.get(key);\n if (!duplicates) {\n duplicates = new _DuplicateItemRecordList();\n this.map.set(key, duplicates);\n }\n duplicates.add(record);\n };\n /**\n * Retrieve the `value` using key. Because the IterableChangeRecord_ value may be one which we\n * have already iterated over, we use the `atOrAfterIndex` to pretend it is not there.\n *\n * Use case: `[a, b, c, a, a]` if we are at index `3` which is the second `a` then asking if we\n * have any more `a`s needs to return the second `a`.\n */\n /**\n * Retrieve the `value` using key. Because the IterableChangeRecord_ value may be one which we\n * have already iterated over, we use the `atOrAfterIndex` to pretend it is not there.\n *\n * Use case: `[a, b, c, a, a]` if we are at index `3` which is the second `a` then asking if we\n * have any more `a`s needs to return the second `a`.\n * @param {?} trackById\n * @param {?} atOrAfterIndex\n * @return {?}\n */\n _DuplicateMap.prototype.get = /**\n * Retrieve the `value` using key. Because the IterableChangeRecord_ value may be one which we\n * have already iterated over, we use the `atOrAfterIndex` to pretend it is not there.\n *\n * Use case: `[a, b, c, a, a]` if we are at index `3` which is the second `a` then asking if we\n * have any more `a`s needs to return the second `a`.\n * @param {?} trackById\n * @param {?} atOrAfterIndex\n * @return {?}\n */\n function (trackById, atOrAfterIndex) {\n var /** @type {?} */ key = trackById;\n var /** @type {?} */ recordList = this.map.get(key);\n return recordList ? recordList.get(trackById, atOrAfterIndex) : null;\n };\n /**\n * Removes a {@link IterableChangeRecord_} from the list of duplicates.\n *\n * The list of duplicates also is removed from the map if it gets empty.\n */\n /**\n * Removes a {\\@link IterableChangeRecord_} from the list of duplicates.\n *\n * The list of duplicates also is removed from the map if it gets empty.\n * @param {?} record\n * @return {?}\n */\n _DuplicateMap.prototype.remove = /**\n * Removes a {\\@link IterableChangeRecord_} from the list of duplicates.\n *\n * The list of duplicates also is removed from the map if it gets empty.\n * @param {?} record\n * @return {?}\n */\n function (record) {\n var /** @type {?} */ key = record.trackById;\n var /** @type {?} */ recordList = /** @type {?} */ ((this.map.get(key)));\n // Remove the list of duplicates when it gets empty\n if (recordList.remove(record)) {\n this.map.delete(key);\n }\n return record;\n };\n Object.defineProperty(_DuplicateMap.prototype, \"isEmpty\", {\n get: /**\n * @return {?}\n */\n function () { return this.map.size === 0; },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n _DuplicateMap.prototype.clear = /**\n * @return {?}\n */\n function () { this.map.clear(); };\n return _DuplicateMap;\n}());\n/**\n * @param {?} item\n * @param {?} addRemoveOffset\n * @param {?} moveOffsets\n * @return {?}\n */\nfunction getPreviousIndex(item, addRemoveOffset, moveOffsets) {\n var /** @type {?} */ previousIndex = item.previousIndex;\n if (previousIndex === null)\n return previousIndex;\n var /** @type {?} */ moveOffset = 0;\n if (moveOffsets && previousIndex < moveOffsets.length) {\n moveOffset = moveOffsets[previousIndex];\n }\n return previousIndex + addRemoveOffset + moveOffset;\n}\n\n/**\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 */\nvar DefaultKeyValueDifferFactory = /** @class */ (function () {\n function DefaultKeyValueDifferFactory() {\n }\n /**\n * @param {?} obj\n * @return {?}\n */\n DefaultKeyValueDifferFactory.prototype.supports = /**\n * @param {?} obj\n * @return {?}\n */\n function (obj) { return obj instanceof Map || isJsObject(obj); };\n /**\n * @template K, V\n * @return {?}\n */\n DefaultKeyValueDifferFactory.prototype.create = /**\n * @template K, V\n * @return {?}\n */\n function () { return new DefaultKeyValueDiffer(); };\n return DefaultKeyValueDifferFactory;\n}());\nvar DefaultKeyValueDiffer = /** @class */ (function () {\n function DefaultKeyValueDiffer() {\n this._records = new Map();\n this._mapHead = null;\n this._appendAfter = null;\n this._previousMapHead = null;\n this._changesHead = null;\n this._changesTail = null;\n this._additionsHead = null;\n this._additionsTail = null;\n this._removalsHead = null;\n this._removalsTail = null;\n }\n Object.defineProperty(DefaultKeyValueDiffer.prototype, \"isDirty\", {\n get: /**\n * @return {?}\n */\n function () {\n return this._additionsHead !== null || this._changesHead !== null ||\n this._removalsHead !== null;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype.forEachItem = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._mapHead; record !== null; record = record._next) {\n fn(record);\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype.forEachPreviousItem = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._previousMapHead; record !== null; record = record._nextPrevious) {\n fn(record);\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype.forEachChangedItem = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\n fn(record);\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype.forEachAddedItem = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n fn(record);\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype.forEachRemovedItem = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n var /** @type {?} */ record;\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\n fn(record);\n }\n };\n /**\n * @param {?=} map\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype.diff = /**\n * @param {?=} map\n * @return {?}\n */\n function (map) {\n if (!map) {\n map = new Map();\n }\n else if (!(map instanceof Map || isJsObject(map))) {\n throw new Error(\"Error trying to diff '\" + stringify(map) + \"'. Only maps and objects are allowed\");\n }\n return this.check(map) ? this : null;\n };\n /**\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype.onDestroy = /**\n * @return {?}\n */\n function () { };\n /**\n * Check the current state of the map vs the previous.\n * The algorithm is optimised for when the keys do no change.\n */\n /**\n * Check the current state of the map vs the previous.\n * The algorithm is optimised for when the keys do no change.\n * @param {?} map\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype.check = /**\n * Check the current state of the map vs the previous.\n * The algorithm is optimised for when the keys do no change.\n * @param {?} map\n * @return {?}\n */\n function (map) {\n var _this = this;\n this._reset();\n var /** @type {?} */ insertBefore = this._mapHead;\n this._appendAfter = null;\n this._forEach(map, function (value, key) {\n if (insertBefore && insertBefore.key === key) {\n _this._maybeAddToChanges(insertBefore, value);\n _this._appendAfter = insertBefore;\n insertBefore = insertBefore._next;\n }\n else {\n var /** @type {?} */ record = _this._getOrCreateRecordForKey(key, value);\n insertBefore = _this._insertBeforeOrAppend(insertBefore, record);\n }\n });\n // Items remaining at the end of the list have been deleted\n if (insertBefore) {\n if (insertBefore._prev) {\n insertBefore._prev._next = null;\n }\n this._removalsHead = insertBefore;\n for (var /** @type {?} */ record = insertBefore; record !== null; record = record._nextRemoved) {\n if (record === this._mapHead) {\n this._mapHead = null;\n }\n this._records.delete(record.key);\n record._nextRemoved = record._next;\n record.previousValue = record.currentValue;\n record.currentValue = null;\n record._prev = null;\n record._next = null;\n }\n }\n // Make sure tails have no next records from previous runs\n if (this._changesTail)\n this._changesTail._nextChanged = null;\n if (this._additionsTail)\n this._additionsTail._nextAdded = null;\n return this.isDirty;\n };\n /**\n * Inserts a record before `before` or append at the end of the list when `before` is null.\n *\n * Notes:\n * - This method appends at `this._appendAfter`,\n * - This method updates `this._appendAfter`,\n * - The return value is the new value for the insertion pointer.\n * @param {?} before\n * @param {?} record\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype._insertBeforeOrAppend = /**\n * Inserts a record before `before` or append at the end of the list when `before` is null.\n *\n * Notes:\n * - This method appends at `this._appendAfter`,\n * - This method updates `this._appendAfter`,\n * - The return value is the new value for the insertion pointer.\n * @param {?} before\n * @param {?} record\n * @return {?}\n */\n function (before, record) {\n if (before) {\n var /** @type {?} */ prev = before._prev;\n record._next = before;\n record._prev = prev;\n before._prev = record;\n if (prev) {\n prev._next = record;\n }\n if (before === this._mapHead) {\n this._mapHead = record;\n }\n this._appendAfter = before;\n return before;\n }\n if (this._appendAfter) {\n this._appendAfter._next = record;\n record._prev = this._appendAfter;\n }\n else {\n this._mapHead = record;\n }\n this._appendAfter = record;\n return null;\n };\n /**\n * @param {?} key\n * @param {?} value\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype._getOrCreateRecordForKey = /**\n * @param {?} key\n * @param {?} value\n * @return {?}\n */\n function (key, value) {\n if (this._records.has(key)) {\n var /** @type {?} */ record_1 = /** @type {?} */ ((this._records.get(key)));\n this._maybeAddToChanges(record_1, value);\n var /** @type {?} */ prev = record_1._prev;\n var /** @type {?} */ next = record_1._next;\n if (prev) {\n prev._next = next;\n }\n if (next) {\n next._prev = prev;\n }\n record_1._next = null;\n record_1._prev = null;\n return record_1;\n }\n var /** @type {?} */ record = new KeyValueChangeRecord_(key);\n this._records.set(key, record);\n record.currentValue = value;\n this._addToAdditions(record);\n return record;\n };\n /** @internal */\n /**\n * \\@internal\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype._reset = /**\n * \\@internal\n * @return {?}\n */\n function () {\n if (this.isDirty) {\n var /** @type {?} */ record = void 0;\n // let `_previousMapHead` contain the state of the map before the changes\n this._previousMapHead = this._mapHead;\n for (record = this._previousMapHead; record !== null; record = record._next) {\n record._nextPrevious = record._next;\n }\n // Update `record.previousValue` with the value of the item before the changes\n // We need to update all changed items (that's those which have been added and changed)\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\n record.previousValue = record.currentValue;\n }\n for (record = this._additionsHead; record != null; record = record._nextAdded) {\n record.previousValue = record.currentValue;\n }\n this._changesHead = this._changesTail = null;\n this._additionsHead = this._additionsTail = null;\n this._removalsHead = null;\n }\n };\n /**\n * @param {?} record\n * @param {?} newValue\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype._maybeAddToChanges = /**\n * @param {?} record\n * @param {?} newValue\n * @return {?}\n */\n function (record, newValue) {\n if (!looseIdentical(newValue, record.currentValue)) {\n record.previousValue = record.currentValue;\n record.currentValue = newValue;\n this._addToChanges(record);\n }\n };\n /**\n * @param {?} record\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype._addToAdditions = /**\n * @param {?} record\n * @return {?}\n */\n function (record) {\n if (this._additionsHead === null) {\n this._additionsHead = this._additionsTail = record;\n }\n else {\n /** @type {?} */ ((this._additionsTail))._nextAdded = record;\n this._additionsTail = record;\n }\n };\n /**\n * @param {?} record\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype._addToChanges = /**\n * @param {?} record\n * @return {?}\n */\n function (record) {\n if (this._changesHead === null) {\n this._changesHead = this._changesTail = record;\n }\n else {\n /** @type {?} */ ((this._changesTail))._nextChanged = record;\n this._changesTail = record;\n }\n };\n /**\n * \\@internal\n * @template K, V\n * @param {?} obj\n * @param {?} fn\n * @return {?}\n */\n DefaultKeyValueDiffer.prototype._forEach = /**\n * \\@internal\n * @template K, V\n * @param {?} obj\n * @param {?} fn\n * @return {?}\n */\n function (obj, fn) {\n if (obj instanceof Map) {\n obj.forEach(fn);\n }\n else {\n Object.keys(obj).forEach(function (k) { return fn(obj[k], k); });\n }\n };\n return DefaultKeyValueDiffer;\n}());\n/**\n * \\@stable\n */\nvar KeyValueChangeRecord_ = /** @class */ (function () {\n function KeyValueChangeRecord_(key) {\n this.key = key;\n this.previousValue = null;\n this.currentValue = null;\n /**\n * \\@internal\n */\n this._nextPrevious = null;\n /**\n * \\@internal\n */\n this._next = null;\n /**\n * \\@internal\n */\n this._prev = null;\n /**\n * \\@internal\n */\n this._nextAdded = null;\n /**\n * \\@internal\n */\n this._nextRemoved = null;\n /**\n * \\@internal\n */\n this._nextChanged = null;\n }\n return KeyValueChangeRecord_;\n}());\n\n/**\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 * A strategy for tracking changes over time to an iterable. Used by {\\@link NgForOf} to\n * respond to changes in an iterable by effecting equivalent changes in the DOM.\n *\n * \\@stable\n * @record\n */\n\n/**\n * An object describing the changes in the `Iterable` collection since last time\n * `IterableDiffer#diff()` was invoked.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Record representing the item change information.\n *\n * \\@stable\n * @record\n */\n\n/**\n * @deprecated v4.0.0 - Use IterableChangeRecord instead.\n * @record\n */\n\n/**\n * An optional function passed into {\\@link NgForOf} that defines how to track\n * items in an iterable (e.g. fby index or id)\n *\n * \\@stable\n * @record\n */\n\n/**\n * Provides a factory for {\\@link IterableDiffer}.\n *\n * \\@stable\n * @record\n */\n\n/**\n * A repository of different iterable diffing strategies used by NgFor, NgClass, and others.\n * \\@stable\n */\nvar IterableDiffers = /** @class */ (function () {\n function IterableDiffers(factories) {\n this.factories = factories;\n }\n /**\n * @param {?} factories\n * @param {?=} parent\n * @return {?}\n */\n IterableDiffers.create = /**\n * @param {?} factories\n * @param {?=} parent\n * @return {?}\n */\n function (factories, parent) {\n if (parent != null) {\n var /** @type {?} */ copied = parent.factories.slice();\n factories = factories.concat(copied);\n return new IterableDiffers(factories);\n }\n else {\n return new IterableDiffers(factories);\n }\n };\n /**\n * Takes an array of {@link IterableDifferFactory} and returns a provider used to extend the\n * inherited {@link IterableDiffers} instance with the provided factories and return a new\n * {@link IterableDiffers} instance.\n *\n * The following example shows how to extend an existing list of factories,\n * which will only be applied to the injector for this component and its children.\n * This step is all that's required to make a new {@link IterableDiffer} available.\n *\n * ### Example\n *\n * ```\n * @Component({\n * viewProviders: [\n * IterableDiffers.extend([new ImmutableListDiffer()])\n * ]\n * })\n * ```\n */\n /**\n * Takes an array of {\\@link IterableDifferFactory} and returns a provider used to extend the\n * inherited {\\@link IterableDiffers} instance with the provided factories and return a new\n * {\\@link IterableDiffers} instance.\n *\n * The following example shows how to extend an existing list of factories,\n * which will only be applied to the injector for this component and its children.\n * This step is all that's required to make a new {\\@link IterableDiffer} available.\n *\n * ### Example\n *\n * ```\n * \\@Component({\n * viewProviders: [\n * IterableDiffers.extend([new ImmutableListDiffer()])\n * ]\n * })\n * ```\n * @param {?} factories\n * @return {?}\n */\n IterableDiffers.extend = /**\n * Takes an array of {\\@link IterableDifferFactory} and returns a provider used to extend the\n * inherited {\\@link IterableDiffers} instance with the provided factories and return a new\n * {\\@link IterableDiffers} instance.\n *\n * The following example shows how to extend an existing list of factories,\n * which will only be applied to the injector for this component and its children.\n * This step is all that's required to make a new {\\@link IterableDiffer} available.\n *\n * ### Example\n *\n * ```\n * \\@Component({\n * viewProviders: [\n * IterableDiffers.extend([new ImmutableListDiffer()])\n * ]\n * })\n * ```\n * @param {?} factories\n * @return {?}\n */\n function (factories) {\n return {\n provide: IterableDiffers,\n useFactory: function (parent) {\n if (!parent) {\n // Typically would occur when calling IterableDiffers.extend inside of dependencies passed\n // to\n // bootstrap(), which would override default pipes instead of extending them.\n throw new Error('Cannot extend IterableDiffers without a parent injector');\n }\n return IterableDiffers.create(factories, parent);\n },\n // Dependency technically isn't optional, but we can provide a better error message this way.\n deps: [[IterableDiffers, new SkipSelf(), new Optional()]]\n };\n };\n /**\n * @param {?} iterable\n * @return {?}\n */\n IterableDiffers.prototype.find = /**\n * @param {?} iterable\n * @return {?}\n */\n function (iterable) {\n var /** @type {?} */ factory = this.factories.find(function (f) { return f.supports(iterable); });\n if (factory != null) {\n return factory;\n }\n else {\n throw new Error(\"Cannot find a differ supporting object '\" + iterable + \"' of type '\" + getTypeNameForDebugging(iterable) + \"'\");\n }\n };\n return IterableDiffers;\n}());\n/**\n * @param {?} type\n * @return {?}\n */\nfunction getTypeNameForDebugging(type) {\n return type['name'] || typeof type;\n}\n\n/**\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 * A differ that tracks changes made to an object over time.\n *\n * \\@stable\n * @record\n */\n\n/**\n * An object describing the changes in the `Map` or `{[k:string]: string}` since last time\n * `KeyValueDiffer#diff()` was invoked.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Record representing the item change information.\n *\n * \\@stable\n * @record\n */\n\n/**\n * Provides a factory for {\\@link KeyValueDiffer}.\n *\n * \\@stable\n * @record\n */\n\n/**\n * A repository of different Map diffing strategies used by NgClass, NgStyle, and others.\n * \\@stable\n */\nvar KeyValueDiffers = /** @class */ (function () {\n function KeyValueDiffers(factories) {\n this.factories = factories;\n }\n /**\n * @template S\n * @param {?} factories\n * @param {?=} parent\n * @return {?}\n */\n KeyValueDiffers.create = /**\n * @template S\n * @param {?} factories\n * @param {?=} parent\n * @return {?}\n */\n function (factories, parent) {\n if (parent) {\n var /** @type {?} */ copied = parent.factories.slice();\n factories = factories.concat(copied);\n }\n return new KeyValueDiffers(factories);\n };\n /**\n * Takes an array of {@link KeyValueDifferFactory} and returns a provider used to extend the\n * inherited {@link KeyValueDiffers} instance with the provided factories and return a new\n * {@link KeyValueDiffers} instance.\n *\n * The following example shows how to extend an existing list of factories,\n * which will only be applied to the injector for this component and its children.\n * This step is all that's required to make a new {@link KeyValueDiffer} available.\n *\n * ### Example\n *\n * ```\n * @Component({\n * viewProviders: [\n * KeyValueDiffers.extend([new ImmutableMapDiffer()])\n * ]\n * })\n * ```\n */\n /**\n * Takes an array of {\\@link KeyValueDifferFactory} and returns a provider used to extend the\n * inherited {\\@link KeyValueDiffers} instance with the provided factories and return a new\n * {\\@link KeyValueDiffers} instance.\n *\n * The following example shows how to extend an existing list of factories,\n * which will only be applied to the injector for this component and its children.\n * This step is all that's required to make a new {\\@link KeyValueDiffer} available.\n *\n * ### Example\n *\n * ```\n * \\@Component({\n * viewProviders: [\n * KeyValueDiffers.extend([new ImmutableMapDiffer()])\n * ]\n * })\n * ```\n * @template S\n * @param {?} factories\n * @return {?}\n */\n KeyValueDiffers.extend = /**\n * Takes an array of {\\@link KeyValueDifferFactory} and returns a provider used to extend the\n * inherited {\\@link KeyValueDiffers} instance with the provided factories and return a new\n * {\\@link KeyValueDiffers} instance.\n *\n * The following example shows how to extend an existing list of factories,\n * which will only be applied to the injector for this component and its children.\n * This step is all that's required to make a new {\\@link KeyValueDiffer} available.\n *\n * ### Example\n *\n * ```\n * \\@Component({\n * viewProviders: [\n * KeyValueDiffers.extend([new ImmutableMapDiffer()])\n * ]\n * })\n * ```\n * @template S\n * @param {?} factories\n * @return {?}\n */\n function (factories) {\n return {\n provide: KeyValueDiffers,\n useFactory: function (parent) {\n if (!parent) {\n // Typically would occur when calling KeyValueDiffers.extend inside of dependencies passed\n // to bootstrap(), which would override default pipes instead of extending them.\n throw new Error('Cannot extend KeyValueDiffers without a parent injector');\n }\n return KeyValueDiffers.create(factories, parent);\n },\n // Dependency technically isn't optional, but we can provide a better error message this way.\n deps: [[KeyValueDiffers, new SkipSelf(), new Optional()]]\n };\n };\n /**\n * @param {?} kv\n * @return {?}\n */\n KeyValueDiffers.prototype.find = /**\n * @param {?} kv\n * @return {?}\n */\n function (kv) {\n var /** @type {?} */ factory = this.factories.find(function (f) { return f.supports(kv); });\n if (factory) {\n return factory;\n }\n throw new Error(\"Cannot find a differ supporting object '\" + kv + \"'\");\n };\n return KeyValueDiffers;\n}());\n\n/**\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 * Structural diffing for `Object`s and `Map`s.\n */\nvar keyValDiff = [new DefaultKeyValueDifferFactory()];\n/**\n * Structural diffing for `Iterable` types such as `Array`s.\n */\nvar iterableDiff = [new DefaultIterableDifferFactory()];\nvar defaultIterableDiffers = new IterableDiffers(iterableDiff);\nvar defaultKeyValueDiffers = new KeyValueDiffers(keyValDiff);\n\n/**\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/**\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 */\nvar _CORE_PLATFORM_PROVIDERS = [\n // Set a default platform name for platforms that don't set it explicitly.\n { provide: PLATFORM_ID, useValue: 'unknown' },\n { provide: PlatformRef, deps: [Injector] },\n { provide: TestabilityRegistry, deps: [] },\n { provide: Console, deps: [] },\n];\n/**\n * This platform has to be included in any other platform\n *\n * \\@experimental\n */\nvar platformCore = createPlatformFactory(null, 'core', _CORE_PLATFORM_PROVIDERS);\n\n/**\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 * Provide this token to set the locale of your application.\n * It is used for i18n extraction, by i18n pipes (DatePipe, I18nPluralPipe, CurrencyPipe,\n * DecimalPipe and PercentPipe) and by ICU expressions.\n *\n * See the {\\@linkDocs guide/i18n#setting-up-locale i18n guide} for more information.\n *\n * ### Example\n *\n * ```typescript\n * import { LOCALE_ID } from '\\@angular/core';\n * import { platformBrowserDynamic } from '\\@angular/platform-browser-dynamic';\n * import { AppModule } from './app/app.module';\n *\n * platformBrowserDynamic().bootstrapModule(AppModule, {\n * providers: [{provide: LOCALE_ID, useValue: 'en-US' }]\n * });\n * ```\n *\n * \\@experimental i18n support is experimental.\n */\nvar LOCALE_ID = new InjectionToken('LocaleId');\n/**\n * Use this token at bootstrap to provide the content of your translation file (`xtb`,\n * `xlf` or `xlf2`) when you want to translate your application in another language.\n *\n * See the {\\@linkDocs guide/i18n#merge i18n guide} for more information.\n *\n * ### Example\n *\n * ```typescript\n * import { TRANSLATIONS } from '\\@angular/core';\n * import { platformBrowserDynamic } from '\\@angular/platform-browser-dynamic';\n * import { AppModule } from './app/app.module';\n *\n * // content of your translation file\n * const translations = '....';\n *\n * platformBrowserDynamic().bootstrapModule(AppModule, {\n * providers: [{provide: TRANSLATIONS, useValue: translations }]\n * });\n * ```\n *\n * \\@experimental i18n support is experimental.\n */\nvar TRANSLATIONS = new InjectionToken('Translations');\n/**\n * Provide this token at bootstrap to set the format of your {\\@link TRANSLATIONS}: `xtb`,\n * `xlf` or `xlf2`.\n *\n * See the {\\@linkDocs guide/i18n#merge i18n guide} for more information.\n *\n * ### Example\n *\n * ```typescript\n * import { TRANSLATIONS_FORMAT } from '\\@angular/core';\n * import { platformBrowserDynamic } from '\\@angular/platform-browser-dynamic';\n * import { AppModule } from './app/app.module';\n *\n * platformBrowserDynamic().bootstrapModule(AppModule, {\n * providers: [{provide: TRANSLATIONS_FORMAT, useValue: 'xlf' }]\n * });\n * ```\n *\n * \\@experimental i18n support is experimental.\n */\nvar TRANSLATIONS_FORMAT = new InjectionToken('TranslationsFormat');\n/** @enum {number} */\nvar MissingTranslationStrategy = {\n Error: 0,\n Warning: 1,\n Ignore: 2,\n};\nMissingTranslationStrategy[MissingTranslationStrategy.Error] = \"Error\";\nMissingTranslationStrategy[MissingTranslationStrategy.Warning] = \"Warning\";\nMissingTranslationStrategy[MissingTranslationStrategy.Ignore] = \"Ignore\";\n\n/**\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 * @return {?}\n */\nfunction _iterableDiffersFactory() {\n return defaultIterableDiffers;\n}\n/**\n * @return {?}\n */\nfunction _keyValueDiffersFactory() {\n return defaultKeyValueDiffers;\n}\n/**\n * @param {?=} locale\n * @return {?}\n */\nfunction _localeFactory(locale) {\n return locale || 'en-US';\n}\n/**\n * This module includes the providers of \\@angular/core that are needed\n * to bootstrap components via `ApplicationRef`.\n *\n * \\@experimental\n */\nvar ApplicationModule = /** @class */ (function () {\n // Inject ApplicationRef to make it eager...\n function ApplicationModule(appRef) {\n }\n ApplicationModule.decorators = [\n { type: NgModule, args: [{\n providers: [\n ApplicationRef,\n ApplicationInitStatus,\n Compiler,\n APP_ID_RANDOM_PROVIDER,\n { provide: IterableDiffers, useFactory: _iterableDiffersFactory },\n { provide: KeyValueDiffers, useFactory: _keyValueDiffersFactory },\n {\n provide: LOCALE_ID,\n useFactory: _localeFactory,\n deps: [[new Inject(LOCALE_ID), new Optional(), new SkipSelf()]]\n },\n ]\n },] },\n ];\n /** @nocollapse */\n ApplicationModule.ctorParameters = function () { return [\n { type: ApplicationRef, },\n ]; };\n return ApplicationModule;\n}());\n\n/**\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/** @enum {number} */\nvar SecurityContext = {\n NONE: 0,\n HTML: 1,\n STYLE: 2,\n SCRIPT: 3,\n URL: 4,\n RESOURCE_URL: 5,\n};\nSecurityContext[SecurityContext.NONE] = \"NONE\";\nSecurityContext[SecurityContext.HTML] = \"HTML\";\nSecurityContext[SecurityContext.STYLE] = \"STYLE\";\nSecurityContext[SecurityContext.SCRIPT] = \"SCRIPT\";\nSecurityContext[SecurityContext.URL] = \"URL\";\nSecurityContext[SecurityContext.RESOURCE_URL] = \"RESOURCE_URL\";\n/**\n * Sanitizer is used by the views to sanitize potentially dangerous values.\n *\n * \\@stable\n * @abstract\n */\nvar Sanitizer = /** @class */ (function () {\n function Sanitizer() {\n }\n return Sanitizer;\n}());\n\n/**\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 * Factory for ViewDefinitions/NgModuleDefinitions.\n * We use a function so we can reexeute it in case an error happens and use the given logger\n * function to log the error from the definition of the node, which is shown in all browser\n * logs.\n * @record\n */\n\n/**\n * Function to call console.error at the right source location. This is an indirection\n * via another function as browser will log the location that actually called\n * `console.error`.\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * A node definition in the view.\n *\n * Note: We use one type for all nodes so that loops that loop over all nodes\n * of a ViewDefinition stay monomorphic!\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * View instance data.\n * Attention: Adding fields to this is performance sensitive!\n * @record\n */\n\n/**\n * @param {?} view\n * @param {?} priorInitState\n * @param {?} newInitState\n * @return {?}\n */\nfunction shiftInitState(view, priorInitState, newInitState) {\n // Only update the InitState if we are currently in the prior state.\n // For example, only move into CallingInit if we are in BeforeInit. Only\n // move into CallingContentInit if we are in CallingInit. Normally this will\n // always be true because of how checkCycle is called in checkAndUpdateView.\n // However, if checkAndUpdateView is called recursively or if an exception is\n // thrown while checkAndUpdateView is running, checkAndUpdateView starts over\n // from the beginning. This ensures the state is monotonically increasing,\n // terminating in the AfterInit state, which ensures the Init methods are called\n // at least once and only once.\n var /** @type {?} */ state = view.state;\n var /** @type {?} */ initState = state & 1792;\n if (initState === priorInitState) {\n view.state = (state & ~1792 /* InitState_Mask */) | newInitState;\n view.initIndex = -1;\n return true;\n }\n return initState === newInitState;\n}\n/**\n * @param {?} view\n * @param {?} initState\n * @param {?} index\n * @return {?}\n */\nfunction shouldCallLifecycleInitHook(view, initState, index) {\n if ((view.state & 1792 /* InitState_Mask */) === initState && view.initIndex <= index) {\n view.initIndex = index + 1;\n return true;\n }\n return false;\n}\n/**\n * @record\n */\n\n/**\n * Data for an instantiated NodeType.Text.\n *\n * Attention: Adding fields to this is performance sensitive!\n * @record\n */\n\n/**\n * Accessor for view.nodes, enforcing that every usage site stays monomorphic.\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nfunction asTextData(view, index) {\n return /** @type {?} */ (view.nodes[index]);\n}\n/**\n * Data for an instantiated NodeType.Element.\n *\n * Attention: Adding fields to this is performance sensitive!\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * Accessor for view.nodes, enforcing that every usage site stays monomorphic.\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nfunction asElementData(view, index) {\n return /** @type {?} */ (view.nodes[index]);\n}\n/**\n * Data for an instantiated NodeType.Provider.\n *\n * Attention: Adding fields to this is performance sensitive!\n * @record\n */\n\n/**\n * Accessor for view.nodes, enforcing that every usage site stays monomorphic.\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nfunction asProviderData(view, index) {\n return /** @type {?} */ (view.nodes[index]);\n}\n/**\n * Data for an instantiated NodeType.PureExpression.\n *\n * Attention: Adding fields to this is performance sensitive!\n * @record\n */\n\n/**\n * Accessor for view.nodes, enforcing that every usage site stays monomorphic.\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nfunction asPureExpressionData(view, index) {\n return /** @type {?} */ (view.nodes[index]);\n}\n/**\n * Accessor for view.nodes, enforcing that every usage site stays monomorphic.\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nfunction asQueryList(view, index) {\n return /** @type {?} */ (view.nodes[index]);\n}\n/**\n * @record\n */\n\n/**\n * @abstract\n */\nvar DebugContext = /** @class */ (function () {\n function DebugContext() {\n }\n return DebugContext;\n}());\n/**\n * @record\n */\n\n/**\n * This object is used to prevent cycles in the source files and to have a place where\n * debug mode can hook it. It is lazily filled when `isDevMode` is known.\n */\nvar Services = {\n setCurrentNode: /** @type {?} */ ((undefined)),\n createRootView: /** @type {?} */ ((undefined)),\n createEmbeddedView: /** @type {?} */ ((undefined)),\n createComponentView: /** @type {?} */ ((undefined)),\n createNgModuleRef: /** @type {?} */ ((undefined)),\n overrideProvider: /** @type {?} */ ((undefined)),\n overrideComponentView: /** @type {?} */ ((undefined)),\n clearOverrides: /** @type {?} */ ((undefined)),\n checkAndUpdateView: /** @type {?} */ ((undefined)),\n checkNoChangesView: /** @type {?} */ ((undefined)),\n destroyView: /** @type {?} */ ((undefined)),\n resolveDep: /** @type {?} */ ((undefined)),\n createDebugContext: /** @type {?} */ ((undefined)),\n handleEvent: /** @type {?} */ ((undefined)),\n updateDirectives: /** @type {?} */ ((undefined)),\n updateRenderer: /** @type {?} */ ((undefined)),\n dirtyParentQueries: /** @type {?} */ ((undefined)),\n};\n\n/**\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 * @param {?} context\n * @param {?} oldValue\n * @param {?} currValue\n * @param {?} isFirstCheck\n * @return {?}\n */\nfunction expressionChangedAfterItHasBeenCheckedError(context, oldValue, currValue, isFirstCheck) {\n var /** @type {?} */ msg = \"ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: '\" + oldValue + \"'. Current value: '\" + currValue + \"'.\";\n if (isFirstCheck) {\n msg +=\n \" It seems like the view has been created after its parent and its children have been dirty checked.\" +\n \" Has it been created in a change detection hook ?\";\n }\n return viewDebugError(msg, context);\n}\n/**\n * @param {?} err\n * @param {?} context\n * @return {?}\n */\nfunction viewWrappedDebugError(err, context) {\n if (!(err instanceof Error)) {\n // errors that are not Error instances don't have a stack,\n // so it is ok to wrap them into a new Error object...\n err = new Error(err.toString());\n }\n _addDebugContext(err, context);\n return err;\n}\n/**\n * @param {?} msg\n * @param {?} context\n * @return {?}\n */\nfunction viewDebugError(msg, context) {\n var /** @type {?} */ err = new Error(msg);\n _addDebugContext(err, context);\n return err;\n}\n/**\n * @param {?} err\n * @param {?} context\n * @return {?}\n */\nfunction _addDebugContext(err, context) {\n (/** @type {?} */ (err))[ERROR_DEBUG_CONTEXT] = context;\n (/** @type {?} */ (err))[ERROR_LOGGER] = context.logError.bind(context);\n}\n/**\n * @param {?} err\n * @return {?}\n */\nfunction isViewDebugError(err) {\n return !!getDebugContext(err);\n}\n/**\n * @param {?} action\n * @return {?}\n */\nfunction viewDestroyedError(action) {\n return new Error(\"ViewDestroyedError: Attempt to use a destroyed view: \" + action);\n}\n\n/**\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 */\nvar NOOP = function () { };\nvar _tokenKeyCache = new Map();\n/**\n * @param {?} token\n * @return {?}\n */\nfunction tokenKey(token) {\n var /** @type {?} */ key = _tokenKeyCache.get(token);\n if (!key) {\n key = stringify(token) + '_' + _tokenKeyCache.size;\n _tokenKeyCache.set(token, key);\n }\n return key;\n}\n/**\n * @param {?} view\n * @param {?} nodeIdx\n * @param {?} bindingIdx\n * @param {?} value\n * @return {?}\n */\nfunction unwrapValue(view, nodeIdx, bindingIdx, value) {\n if (WrappedValue.isWrapped(value)) {\n value = WrappedValue.unwrap(value);\n var /** @type {?} */ globalBindingIdx = view.def.nodes[nodeIdx].bindingIndex + bindingIdx;\n var /** @type {?} */ oldValue = WrappedValue.unwrap(view.oldValues[globalBindingIdx]);\n view.oldValues[globalBindingIdx] = new WrappedValue(oldValue);\n }\n return value;\n}\nvar UNDEFINED_RENDERER_TYPE_ID = '$$undefined';\nvar EMPTY_RENDERER_TYPE_ID = '$$empty';\n/**\n * @param {?} values\n * @return {?}\n */\nfunction createRendererType2(values) {\n return {\n id: UNDEFINED_RENDERER_TYPE_ID,\n styles: values.styles,\n encapsulation: values.encapsulation,\n data: values.data\n };\n}\nvar _renderCompCount = 0;\n/**\n * @param {?=} type\n * @return {?}\n */\nfunction resolveRendererType2(type) {\n if (type && type.id === UNDEFINED_RENDERER_TYPE_ID) {\n // first time we see this RendererType2. Initialize it...\n var /** @type {?} */ isFilled = ((type.encapsulation != null && type.encapsulation !== ViewEncapsulation.None) ||\n type.styles.length || Object.keys(type.data).length);\n if (isFilled) {\n type.id = \"c\" + _renderCompCount++;\n }\n else {\n type.id = EMPTY_RENDERER_TYPE_ID;\n }\n }\n if (type && type.id === EMPTY_RENDERER_TYPE_ID) {\n type = null;\n }\n return type || null;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} bindingIdx\n * @param {?} value\n * @return {?}\n */\nfunction checkBinding(view, def, bindingIdx, value) {\n var /** @type {?} */ oldValues = view.oldValues;\n if ((view.state & 2 /* FirstCheck */) ||\n !looseIdentical(oldValues[def.bindingIndex + bindingIdx], value)) {\n return true;\n }\n return false;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} bindingIdx\n * @param {?} value\n * @return {?}\n */\nfunction checkAndUpdateBinding(view, def, bindingIdx, value) {\n if (checkBinding(view, def, bindingIdx, value)) {\n view.oldValues[def.bindingIndex + bindingIdx] = value;\n return true;\n }\n return false;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} bindingIdx\n * @param {?} value\n * @return {?}\n */\nfunction checkBindingNoChanges(view, def, bindingIdx, value) {\n var /** @type {?} */ oldValue = view.oldValues[def.bindingIndex + bindingIdx];\n if ((view.state & 1 /* BeforeFirstCheck */) || !devModeEqual(oldValue, value)) {\n var /** @type {?} */ bindingName = def.bindings[bindingIdx].name;\n throw expressionChangedAfterItHasBeenCheckedError(Services.createDebugContext(view, def.nodeIndex), bindingName + \": \" + oldValue, bindingName + \": \" + value, (view.state & 1 /* BeforeFirstCheck */) !== 0);\n }\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction markParentViewsForCheck(view) {\n var /** @type {?} */ currView = view;\n while (currView) {\n if (currView.def.flags & 2 /* OnPush */) {\n currView.state |= 8 /* ChecksEnabled */;\n }\n currView = currView.viewContainerParent || currView.parent;\n }\n}\n/**\n * @param {?} view\n * @param {?} endView\n * @return {?}\n */\nfunction markParentViewsForCheckProjectedViews(view, endView) {\n var /** @type {?} */ currView = view;\n while (currView && currView !== endView) {\n currView.state |= 64 /* CheckProjectedViews */;\n currView = currView.viewContainerParent || currView.parent;\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @param {?} eventName\n * @param {?} event\n * @return {?}\n */\nfunction dispatchEvent(view, nodeIndex, eventName, event) {\n try {\n var /** @type {?} */ nodeDef = view.def.nodes[nodeIndex];\n var /** @type {?} */ startView = nodeDef.flags & 33554432 /* ComponentView */ ?\n asElementData(view, nodeIndex).componentView :\n view;\n markParentViewsForCheck(startView);\n return Services.handleEvent(view, nodeIndex, eventName, event);\n }\n catch (/** @type {?} */ e) {\n // Attention: Don't rethrow, as it would cancel Observable subscriptions!\n view.root.errorHandler.handleError(e);\n }\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction declaredViewContainer(view) {\n if (view.parent) {\n var /** @type {?} */ parentView = view.parent;\n return asElementData(parentView, /** @type {?} */ ((view.parentNodeDef)).nodeIndex);\n }\n return null;\n}\n/**\n * for component views, this is the host element.\n * for embedded views, this is the index of the parent node\n * that contains the view container.\n * @param {?} view\n * @return {?}\n */\nfunction viewParentEl(view) {\n var /** @type {?} */ parentView = view.parent;\n if (parentView) {\n return /** @type {?} */ ((view.parentNodeDef)).parent;\n }\n else {\n return null;\n }\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nfunction renderNode(view, def) {\n switch (def.flags & 201347067 /* Types */) {\n case 1 /* TypeElement */:\n return asElementData(view, def.nodeIndex).renderElement;\n case 2 /* TypeText */:\n return asTextData(view, def.nodeIndex).renderText;\n }\n}\n/**\n * @param {?} target\n * @param {?} name\n * @return {?}\n */\nfunction elementEventFullName(target, name) {\n return target ? target + \":\" + name : name;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction isComponentView(view) {\n return !!view.parent && !!(/** @type {?} */ ((view.parentNodeDef)).flags & 32768 /* Component */);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction isEmbeddedView(view) {\n return !!view.parent && !(/** @type {?} */ ((view.parentNodeDef)).flags & 32768 /* Component */);\n}\n/**\n * @param {?} queryId\n * @return {?}\n */\nfunction filterQueryId(queryId) {\n return 1 << (queryId % 32);\n}\n/**\n * @param {?} matchedQueriesDsl\n * @return {?}\n */\nfunction splitMatchedQueriesDsl(matchedQueriesDsl) {\n var /** @type {?} */ matchedQueries = {};\n var /** @type {?} */ matchedQueryIds = 0;\n var /** @type {?} */ references = {};\n if (matchedQueriesDsl) {\n matchedQueriesDsl.forEach(function (_a) {\n var queryId = _a[0], valueType = _a[1];\n if (typeof queryId === 'number') {\n matchedQueries[queryId] = valueType;\n matchedQueryIds |= filterQueryId(queryId);\n }\n else {\n references[queryId] = valueType;\n }\n });\n }\n return { matchedQueries: matchedQueries, references: references, matchedQueryIds: matchedQueryIds };\n}\n/**\n * @param {?} deps\n * @param {?=} sourceName\n * @return {?}\n */\nfunction splitDepsDsl(deps, sourceName) {\n return deps.map(function (value) {\n var /** @type {?} */ token;\n var /** @type {?} */ flags;\n if (Array.isArray(value)) {\n flags = value[0], token = value[1];\n }\n else {\n flags = 0 /* None */;\n token = value;\n }\n if (token && (typeof token === 'function' || typeof token === 'object') && sourceName) {\n Object.defineProperty(token, SOURCE, { value: sourceName, configurable: true });\n }\n return { flags: flags, token: token, tokenKey: tokenKey(token) };\n });\n}\n/**\n * @param {?} view\n * @param {?} renderHost\n * @param {?} def\n * @return {?}\n */\nfunction getParentRenderElement(view, renderHost, def) {\n var /** @type {?} */ renderParent = def.renderParent;\n if (renderParent) {\n if ((renderParent.flags & 1 /* TypeElement */) === 0 ||\n (renderParent.flags & 33554432 /* ComponentView */) === 0 ||\n (/** @type {?} */ ((renderParent.element)).componentRendererType && /** @type {?} */ ((/** @type {?} */ ((renderParent.element)).componentRendererType)).encapsulation === ViewEncapsulation.Native)) {\n // only children of non components, or children of components with native encapsulation should\n // be attached.\n return asElementData(view, /** @type {?} */ ((def.renderParent)).nodeIndex).renderElement;\n }\n }\n else {\n return renderHost;\n }\n}\nvar DEFINITION_CACHE = new WeakMap();\n/**\n * @template D\n * @param {?} factory\n * @return {?}\n */\nfunction resolveDefinition(factory) {\n var /** @type {?} */ value = /** @type {?} */ (((DEFINITION_CACHE.get(factory))));\n if (!value) {\n value = factory(function () { return NOOP; });\n value.factory = factory;\n DEFINITION_CACHE.set(factory, value);\n }\n return value;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction rootRenderNodes(view) {\n var /** @type {?} */ renderNodes = [];\n visitRootRenderNodes(view, 0 /* Collect */, undefined, undefined, renderNodes);\n return renderNodes;\n}\n/**\n * @param {?} view\n * @param {?} action\n * @param {?} parentNode\n * @param {?} nextSibling\n * @param {?=} target\n * @return {?}\n */\nfunction visitRootRenderNodes(view, action, parentNode, nextSibling, target) {\n // We need to re-compute the parent node in case the nodes have been moved around manually\n if (action === 3 /* RemoveChild */) {\n parentNode = view.renderer.parentNode(renderNode(view, /** @type {?} */ ((view.def.lastRenderRootNode))));\n }\n visitSiblingRenderNodes(view, action, 0, view.def.nodes.length - 1, parentNode, nextSibling, target);\n}\n/**\n * @param {?} view\n * @param {?} action\n * @param {?} startIndex\n * @param {?} endIndex\n * @param {?} parentNode\n * @param {?} nextSibling\n * @param {?=} target\n * @return {?}\n */\nfunction visitSiblingRenderNodes(view, action, startIndex, endIndex, parentNode, nextSibling, target) {\n for (var /** @type {?} */ i = startIndex; i <= endIndex; i++) {\n var /** @type {?} */ nodeDef = view.def.nodes[i];\n if (nodeDef.flags & (1 /* TypeElement */ | 2 /* TypeText */ | 8 /* TypeNgContent */)) {\n visitRenderNode(view, nodeDef, action, parentNode, nextSibling, target);\n }\n // jump to next sibling\n i += nodeDef.childCount;\n }\n}\n/**\n * @param {?} view\n * @param {?} ngContentIndex\n * @param {?} action\n * @param {?} parentNode\n * @param {?} nextSibling\n * @param {?=} target\n * @return {?}\n */\nfunction visitProjectedRenderNodes(view, ngContentIndex, action, parentNode, nextSibling, target) {\n var /** @type {?} */ compView = view;\n while (compView && !isComponentView(compView)) {\n compView = compView.parent;\n }\n var /** @type {?} */ hostView = /** @type {?} */ ((compView)).parent;\n var /** @type {?} */ hostElDef = viewParentEl(/** @type {?} */ ((compView)));\n var /** @type {?} */ startIndex = /** @type {?} */ ((hostElDef)).nodeIndex + 1;\n var /** @type {?} */ endIndex = /** @type {?} */ ((hostElDef)).nodeIndex + /** @type {?} */ ((hostElDef)).childCount;\n for (var /** @type {?} */ i = startIndex; i <= endIndex; i++) {\n var /** @type {?} */ nodeDef = /** @type {?} */ ((hostView)).def.nodes[i];\n if (nodeDef.ngContentIndex === ngContentIndex) {\n visitRenderNode(/** @type {?} */ ((hostView)), nodeDef, action, parentNode, nextSibling, target);\n }\n // jump to next sibling\n i += nodeDef.childCount;\n }\n if (!/** @type {?} */ ((hostView)).parent) {\n // a root view\n var /** @type {?} */ projectedNodes = view.root.projectableNodes[ngContentIndex];\n if (projectedNodes) {\n for (var /** @type {?} */ i = 0; i < projectedNodes.length; i++) {\n execRenderNodeAction(view, projectedNodes[i], action, parentNode, nextSibling, target);\n }\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} action\n * @param {?} parentNode\n * @param {?} nextSibling\n * @param {?=} target\n * @return {?}\n */\nfunction visitRenderNode(view, nodeDef, action, parentNode, nextSibling, target) {\n if (nodeDef.flags & 8 /* TypeNgContent */) {\n visitProjectedRenderNodes(view, /** @type {?} */ ((nodeDef.ngContent)).index, action, parentNode, nextSibling, target);\n }\n else {\n var /** @type {?} */ rn = renderNode(view, nodeDef);\n if (action === 3 /* RemoveChild */ && (nodeDef.flags & 33554432 /* ComponentView */) &&\n (nodeDef.bindingFlags & 48 /* CatSyntheticProperty */)) {\n // Note: we might need to do both actions.\n if (nodeDef.bindingFlags & (16 /* SyntheticProperty */)) {\n execRenderNodeAction(view, rn, action, parentNode, nextSibling, target);\n }\n if (nodeDef.bindingFlags & (32 /* SyntheticHostProperty */)) {\n var /** @type {?} */ compView = asElementData(view, nodeDef.nodeIndex).componentView;\n execRenderNodeAction(compView, rn, action, parentNode, nextSibling, target);\n }\n }\n else {\n execRenderNodeAction(view, rn, action, parentNode, nextSibling, target);\n }\n if (nodeDef.flags & 16777216 /* EmbeddedViews */) {\n var /** @type {?} */ embeddedViews = /** @type {?} */ ((asElementData(view, nodeDef.nodeIndex).viewContainer))._embeddedViews;\n for (var /** @type {?} */ k = 0; k < embeddedViews.length; k++) {\n visitRootRenderNodes(embeddedViews[k], action, parentNode, nextSibling, target);\n }\n }\n if (nodeDef.flags & 1 /* TypeElement */ && !/** @type {?} */ ((nodeDef.element)).name) {\n visitSiblingRenderNodes(view, action, nodeDef.nodeIndex + 1, nodeDef.nodeIndex + nodeDef.childCount, parentNode, nextSibling, target);\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} renderNode\n * @param {?} action\n * @param {?} parentNode\n * @param {?} nextSibling\n * @param {?=} target\n * @return {?}\n */\nfunction execRenderNodeAction(view, renderNode, action, parentNode, nextSibling, target) {\n var /** @type {?} */ renderer = view.renderer;\n switch (action) {\n case 1 /* AppendChild */:\n renderer.appendChild(parentNode, renderNode);\n break;\n case 2 /* InsertBefore */:\n renderer.insertBefore(parentNode, renderNode, nextSibling);\n break;\n case 3 /* RemoveChild */:\n renderer.removeChild(parentNode, renderNode);\n break;\n case 0 /* Collect */:\n /** @type {?} */ ((target)).push(renderNode);\n break;\n }\n}\nvar NS_PREFIX_RE = /^:([^:]+):(.+)$/;\n/**\n * @param {?} name\n * @return {?}\n */\nfunction splitNamespace(name) {\n if (name[0] === ':') {\n var /** @type {?} */ match = /** @type {?} */ ((name.match(NS_PREFIX_RE)));\n return [match[1], match[2]];\n }\n return ['', name];\n}\n/**\n * @param {?} bindings\n * @return {?}\n */\nfunction calcBindingFlags(bindings) {\n var /** @type {?} */ flags = 0;\n for (var /** @type {?} */ i = 0; i < bindings.length; i++) {\n flags |= bindings[i].flags;\n }\n return flags;\n}\n/**\n * @param {?} valueCount\n * @param {?} constAndInterp\n * @return {?}\n */\nfunction interpolate(valueCount, constAndInterp) {\n var /** @type {?} */ result = '';\n for (var /** @type {?} */ i = 0; i < valueCount * 2; i = i + 2) {\n result = result + constAndInterp[i] + _toStringWithNull(constAndInterp[i + 1]);\n }\n return result + constAndInterp[valueCount * 2];\n}\n/**\n * @param {?} valueCount\n * @param {?} c0\n * @param {?} a1\n * @param {?} c1\n * @param {?=} a2\n * @param {?=} c2\n * @param {?=} a3\n * @param {?=} c3\n * @param {?=} a4\n * @param {?=} c4\n * @param {?=} a5\n * @param {?=} c5\n * @param {?=} a6\n * @param {?=} c6\n * @param {?=} a7\n * @param {?=} c7\n * @param {?=} a8\n * @param {?=} c8\n * @param {?=} a9\n * @param {?=} c9\n * @return {?}\n */\nfunction inlineInterpolate(valueCount, c0, a1, c1, a2, c2, a3, c3, a4, c4, a5, c5, a6, c6, a7, c7, a8, c8, a9, c9) {\n switch (valueCount) {\n case 1:\n return c0 + _toStringWithNull(a1) + c1;\n case 2:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2;\n case 3:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3;\n case 4:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3 + _toStringWithNull(a4) + c4;\n case 5:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5;\n case 6:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5 + _toStringWithNull(a6) + c6;\n case 7:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5 + _toStringWithNull(a6) +\n c6 + _toStringWithNull(a7) + c7;\n case 8:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5 + _toStringWithNull(a6) +\n c6 + _toStringWithNull(a7) + c7 + _toStringWithNull(a8) + c8;\n case 9:\n return c0 + _toStringWithNull(a1) + c1 + _toStringWithNull(a2) + c2 + _toStringWithNull(a3) +\n c3 + _toStringWithNull(a4) + c4 + _toStringWithNull(a5) + c5 + _toStringWithNull(a6) +\n c6 + _toStringWithNull(a7) + c7 + _toStringWithNull(a8) + c8 + _toStringWithNull(a9) + c9;\n default:\n throw new Error(\"Does not support more than 9 expressions\");\n }\n}\n/**\n * @param {?} v\n * @return {?}\n */\nfunction _toStringWithNull(v) {\n return v != null ? v.toString() : '';\n}\nvar EMPTY_ARRAY = [];\nvar EMPTY_MAP = {};\n\n/**\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 * @param {?} flags\n * @param {?} matchedQueriesDsl\n * @param {?} ngContentIndex\n * @param {?} childCount\n * @param {?=} handleEvent\n * @param {?=} templateFactory\n * @return {?}\n */\nfunction anchorDef(flags, matchedQueriesDsl, ngContentIndex, childCount, handleEvent, templateFactory) {\n flags |= 1 /* TypeElement */;\n var _a = splitMatchedQueriesDsl(matchedQueriesDsl), matchedQueries = _a.matchedQueries, references = _a.references, matchedQueryIds = _a.matchedQueryIds;\n var /** @type {?} */ template = templateFactory ? resolveDefinition(templateFactory) : null;\n return {\n // will bet set by the view definition\n nodeIndex: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n flags: flags,\n checkIndex: -1,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0, matchedQueries: matchedQueries, matchedQueryIds: matchedQueryIds, references: references, ngContentIndex: ngContentIndex, childCount: childCount,\n bindings: [],\n bindingFlags: 0,\n outputs: [],\n element: {\n ns: null,\n name: null,\n attrs: null, template: template,\n componentProvider: null,\n componentView: null,\n componentRendererType: null,\n publicProviders: null,\n allProviders: null,\n handleEvent: handleEvent || NOOP\n },\n provider: null,\n text: null,\n query: null,\n ngContent: null\n };\n}\n/**\n * @param {?} checkIndex\n * @param {?} flags\n * @param {?} matchedQueriesDsl\n * @param {?} ngContentIndex\n * @param {?} childCount\n * @param {?} namespaceAndName\n * @param {?=} fixedAttrs\n * @param {?=} bindings\n * @param {?=} outputs\n * @param {?=} handleEvent\n * @param {?=} componentView\n * @param {?=} componentRendererType\n * @return {?}\n */\nfunction elementDef(checkIndex, flags, matchedQueriesDsl, ngContentIndex, childCount, namespaceAndName, fixedAttrs, bindings, outputs, handleEvent, componentView, componentRendererType) {\n if (fixedAttrs === void 0) { fixedAttrs = []; }\n if (!handleEvent) {\n handleEvent = NOOP;\n }\n var _a = splitMatchedQueriesDsl(matchedQueriesDsl), matchedQueries = _a.matchedQueries, references = _a.references, matchedQueryIds = _a.matchedQueryIds;\n var /** @type {?} */ ns = /** @type {?} */ ((null));\n var /** @type {?} */ name = /** @type {?} */ ((null));\n if (namespaceAndName) {\n _b = splitNamespace(namespaceAndName), ns = _b[0], name = _b[1];\n }\n bindings = bindings || [];\n var /** @type {?} */ bindingDefs = new Array(bindings.length);\n for (var /** @type {?} */ i = 0; i < bindings.length; i++) {\n var _c = bindings[i], bindingFlags = _c[0], namespaceAndName_1 = _c[1], suffixOrSecurityContext = _c[2];\n var _d = splitNamespace(namespaceAndName_1), ns_1 = _d[0], name_1 = _d[1];\n var /** @type {?} */ securityContext = /** @type {?} */ ((undefined));\n var /** @type {?} */ suffix = /** @type {?} */ ((undefined));\n switch (bindingFlags & 15 /* Types */) {\n case 4 /* TypeElementStyle */:\n suffix = /** @type {?} */ (suffixOrSecurityContext);\n break;\n case 1 /* TypeElementAttribute */:\n case 8 /* TypeProperty */:\n securityContext = /** @type {?} */ (suffixOrSecurityContext);\n break;\n }\n bindingDefs[i] =\n { flags: bindingFlags, ns: ns_1, name: name_1, nonMinifiedName: name_1, securityContext: securityContext, suffix: suffix };\n }\n outputs = outputs || [];\n var /** @type {?} */ outputDefs = new Array(outputs.length);\n for (var /** @type {?} */ i = 0; i < outputs.length; i++) {\n var _e = outputs[i], target = _e[0], eventName = _e[1];\n outputDefs[i] = {\n type: 0 /* ElementOutput */,\n target: /** @type {?} */ (target), eventName: eventName,\n propName: null\n };\n }\n fixedAttrs = fixedAttrs || [];\n var /** @type {?} */ attrs = /** @type {?} */ (fixedAttrs.map(function (_a) {\n var namespaceAndName = _a[0], value = _a[1];\n var _b = splitNamespace(namespaceAndName), ns = _b[0], name = _b[1];\n return [ns, name, value];\n }));\n componentRendererType = resolveRendererType2(componentRendererType);\n if (componentView) {\n flags |= 33554432 /* ComponentView */;\n }\n flags |= 1 /* TypeElement */;\n return {\n // will bet set by the view definition\n nodeIndex: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n checkIndex: checkIndex,\n flags: flags,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0, matchedQueries: matchedQueries, matchedQueryIds: matchedQueryIds, references: references, ngContentIndex: ngContentIndex, childCount: childCount,\n bindings: bindingDefs,\n bindingFlags: calcBindingFlags(bindingDefs),\n outputs: outputDefs,\n element: {\n ns: ns,\n name: name,\n attrs: attrs,\n template: null,\n // will bet set by the view definition\n componentProvider: null,\n componentView: componentView || null,\n componentRendererType: componentRendererType,\n publicProviders: null,\n allProviders: null,\n handleEvent: handleEvent || NOOP,\n },\n provider: null,\n text: null,\n query: null,\n ngContent: null\n };\n var _b;\n}\n/**\n * @param {?} view\n * @param {?} renderHost\n * @param {?} def\n * @return {?}\n */\nfunction createElement(view, renderHost, def) {\n var /** @type {?} */ elDef = /** @type {?} */ ((def.element));\n var /** @type {?} */ rootSelectorOrNode = view.root.selectorOrNode;\n var /** @type {?} */ renderer = view.renderer;\n var /** @type {?} */ el;\n if (view.parent || !rootSelectorOrNode) {\n if (elDef.name) {\n el = renderer.createElement(elDef.name, elDef.ns);\n }\n else {\n el = renderer.createComment('');\n }\n var /** @type {?} */ parentEl = getParentRenderElement(view, renderHost, def);\n if (parentEl) {\n renderer.appendChild(parentEl, el);\n }\n }\n else {\n el = renderer.selectRootElement(rootSelectorOrNode);\n }\n if (elDef.attrs) {\n for (var /** @type {?} */ i = 0; i < elDef.attrs.length; i++) {\n var _a = elDef.attrs[i], ns = _a[0], name_2 = _a[1], value = _a[2];\n renderer.setAttribute(el, name_2, value, ns);\n }\n }\n return el;\n}\n/**\n * @param {?} view\n * @param {?} compView\n * @param {?} def\n * @param {?} el\n * @return {?}\n */\nfunction listenToElementOutputs(view, compView, def, el) {\n for (var /** @type {?} */ i = 0; i < def.outputs.length; i++) {\n var /** @type {?} */ output = def.outputs[i];\n var /** @type {?} */ handleEventClosure = renderEventHandlerClosure(view, def.nodeIndex, elementEventFullName(output.target, output.eventName));\n var /** @type {?} */ listenTarget = output.target;\n var /** @type {?} */ listenerView = view;\n if (output.target === 'component') {\n listenTarget = null;\n listenerView = compView;\n }\n var /** @type {?} */ disposable = /** @type {?} */ (listenerView.renderer.listen(listenTarget || el, output.eventName, handleEventClosure)); /** @type {?} */\n ((view.disposables))[def.outputIndex + i] = disposable;\n }\n}\n/**\n * @param {?} view\n * @param {?} index\n * @param {?} eventName\n * @return {?}\n */\nfunction renderEventHandlerClosure(view, index, eventName) {\n return function (event) { return dispatchEvent(view, index, eventName, event); };\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} v0\n * @param {?} v1\n * @param {?} v2\n * @param {?} v3\n * @param {?} v4\n * @param {?} v5\n * @param {?} v6\n * @param {?} v7\n * @param {?} v8\n * @param {?} v9\n * @return {?}\n */\nfunction checkAndUpdateElementInline(view, def, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n var /** @type {?} */ bindLen = def.bindings.length;\n var /** @type {?} */ changed = false;\n if (bindLen > 0 && checkAndUpdateElementValue(view, def, 0, v0))\n changed = true;\n if (bindLen > 1 && checkAndUpdateElementValue(view, def, 1, v1))\n changed = true;\n if (bindLen > 2 && checkAndUpdateElementValue(view, def, 2, v2))\n changed = true;\n if (bindLen > 3 && checkAndUpdateElementValue(view, def, 3, v3))\n changed = true;\n if (bindLen > 4 && checkAndUpdateElementValue(view, def, 4, v4))\n changed = true;\n if (bindLen > 5 && checkAndUpdateElementValue(view, def, 5, v5))\n changed = true;\n if (bindLen > 6 && checkAndUpdateElementValue(view, def, 6, v6))\n changed = true;\n if (bindLen > 7 && checkAndUpdateElementValue(view, def, 7, v7))\n changed = true;\n if (bindLen > 8 && checkAndUpdateElementValue(view, def, 8, v8))\n changed = true;\n if (bindLen > 9 && checkAndUpdateElementValue(view, def, 9, v9))\n changed = true;\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} values\n * @return {?}\n */\nfunction checkAndUpdateElementDynamic(view, def, values) {\n var /** @type {?} */ changed = false;\n for (var /** @type {?} */ i = 0; i < values.length; i++) {\n if (checkAndUpdateElementValue(view, def, i, values[i]))\n changed = true;\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} bindingIdx\n * @param {?} value\n * @return {?}\n */\nfunction checkAndUpdateElementValue(view, def, bindingIdx, value) {\n if (!checkAndUpdateBinding(view, def, bindingIdx, value)) {\n return false;\n }\n var /** @type {?} */ binding = def.bindings[bindingIdx];\n var /** @type {?} */ elData = asElementData(view, def.nodeIndex);\n var /** @type {?} */ renderNode$$1 = elData.renderElement;\n var /** @type {?} */ name = /** @type {?} */ ((binding.name));\n switch (binding.flags & 15 /* Types */) {\n case 1 /* TypeElementAttribute */:\n setElementAttribute(view, binding, renderNode$$1, binding.ns, name, value);\n break;\n case 2 /* TypeElementClass */:\n setElementClass(view, renderNode$$1, name, value);\n break;\n case 4 /* TypeElementStyle */:\n setElementStyle(view, binding, renderNode$$1, name, value);\n break;\n case 8 /* TypeProperty */:\n var /** @type {?} */ bindView = (def.flags & 33554432 /* ComponentView */ &&\n binding.flags & 32 /* SyntheticHostProperty */) ?\n elData.componentView :\n view;\n setElementProperty(bindView, binding, renderNode$$1, name, value);\n break;\n }\n return true;\n}\n/**\n * @param {?} view\n * @param {?} binding\n * @param {?} renderNode\n * @param {?} ns\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nfunction setElementAttribute(view, binding, renderNode$$1, ns, name, value) {\n var /** @type {?} */ securityContext = binding.securityContext;\n var /** @type {?} */ renderValue = securityContext ? view.root.sanitizer.sanitize(securityContext, value) : value;\n renderValue = renderValue != null ? renderValue.toString() : null;\n var /** @type {?} */ renderer = view.renderer;\n if (value != null) {\n renderer.setAttribute(renderNode$$1, name, renderValue, ns);\n }\n else {\n renderer.removeAttribute(renderNode$$1, name, ns);\n }\n}\n/**\n * @param {?} view\n * @param {?} renderNode\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nfunction setElementClass(view, renderNode$$1, name, value) {\n var /** @type {?} */ renderer = view.renderer;\n if (value) {\n renderer.addClass(renderNode$$1, name);\n }\n else {\n renderer.removeClass(renderNode$$1, name);\n }\n}\n/**\n * @param {?} view\n * @param {?} binding\n * @param {?} renderNode\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nfunction setElementStyle(view, binding, renderNode$$1, name, value) {\n var /** @type {?} */ renderValue = view.root.sanitizer.sanitize(SecurityContext.STYLE, /** @type {?} */ (value));\n if (renderValue != null) {\n renderValue = renderValue.toString();\n var /** @type {?} */ unit = binding.suffix;\n if (unit != null) {\n renderValue = renderValue + unit;\n }\n }\n else {\n renderValue = null;\n }\n var /** @type {?} */ renderer = view.renderer;\n if (renderValue != null) {\n renderer.setStyle(renderNode$$1, name, renderValue);\n }\n else {\n renderer.removeStyle(renderNode$$1, name);\n }\n}\n/**\n * @param {?} view\n * @param {?} binding\n * @param {?} renderNode\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nfunction setElementProperty(view, binding, renderNode$$1, name, value) {\n var /** @type {?} */ securityContext = binding.securityContext;\n var /** @type {?} */ renderValue = securityContext ? view.root.sanitizer.sanitize(securityContext, value) : value;\n view.renderer.setProperty(renderNode$$1, name, renderValue);\n}\n\n/**\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 */\nvar UNDEFINED_VALUE = new Object();\nvar InjectorRefTokenKey$1 = tokenKey(Injector);\nvar NgModuleRefTokenKey = tokenKey(NgModuleRef);\n/**\n * @param {?} flags\n * @param {?} token\n * @param {?} value\n * @param {?} deps\n * @return {?}\n */\nfunction moduleProvideDef(flags, token, value, deps) {\n // Need to resolve forwardRefs as e.g. for `useValue` we\n // lowered the expression and then stopped evaluating it,\n // i.e. also didn't unwrap it.\n value = resolveForwardRef(value);\n var /** @type {?} */ depDefs = splitDepsDsl(deps, stringify(token));\n return {\n // will bet set by the module definition\n index: -1,\n deps: depDefs, flags: flags, token: token, value: value\n };\n}\n/**\n * @param {?} providers\n * @return {?}\n */\nfunction moduleDef(providers) {\n var /** @type {?} */ providersByKey = {};\n for (var /** @type {?} */ i = 0; i < providers.length; i++) {\n var /** @type {?} */ provider = providers[i];\n provider.index = i;\n providersByKey[tokenKey(provider.token)] = provider;\n }\n return {\n // Will be filled later...\n factory: null,\n providersByKey: providersByKey,\n providers: providers\n };\n}\n/**\n * @param {?} data\n * @return {?}\n */\nfunction initNgModule(data) {\n var /** @type {?} */ def = data._def;\n var /** @type {?} */ providers = data._providers = new Array(def.providers.length);\n for (var /** @type {?} */ i = 0; i < def.providers.length; i++) {\n var /** @type {?} */ provDef = def.providers[i];\n if (!(provDef.flags & 4096 /* LazyProvider */)) {\n providers[i] = _createProviderInstance$1(data, provDef);\n }\n }\n}\n/**\n * @param {?} data\n * @param {?} depDef\n * @param {?=} notFoundValue\n * @return {?}\n */\nfunction resolveNgModuleDep(data, depDef, notFoundValue) {\n if (notFoundValue === void 0) { notFoundValue = Injector.THROW_IF_NOT_FOUND; }\n if (depDef.flags & 8 /* Value */) {\n return depDef.token;\n }\n if (depDef.flags & 2 /* Optional */) {\n notFoundValue = null;\n }\n if (depDef.flags & 1 /* SkipSelf */) {\n return data._parent.get(depDef.token, notFoundValue);\n }\n var /** @type {?} */ tokenKey$$1 = depDef.tokenKey;\n switch (tokenKey$$1) {\n case InjectorRefTokenKey$1:\n case NgModuleRefTokenKey:\n return data;\n }\n var /** @type {?} */ providerDef = data._def.providersByKey[tokenKey$$1];\n if (providerDef) {\n var /** @type {?} */ providerInstance = data._providers[providerDef.index];\n if (providerInstance === undefined) {\n providerInstance = data._providers[providerDef.index] =\n _createProviderInstance$1(data, providerDef);\n }\n return providerInstance === UNDEFINED_VALUE ? undefined : providerInstance;\n }\n return data._parent.get(depDef.token, notFoundValue);\n}\n/**\n * @param {?} ngModule\n * @param {?} providerDef\n * @return {?}\n */\nfunction _createProviderInstance$1(ngModule, providerDef) {\n var /** @type {?} */ injectable;\n switch (providerDef.flags & 201347067 /* Types */) {\n case 512 /* TypeClassProvider */:\n injectable = _createClass(ngModule, providerDef.value, providerDef.deps);\n break;\n case 1024 /* TypeFactoryProvider */:\n injectable = _callFactory(ngModule, providerDef.value, providerDef.deps);\n break;\n case 2048 /* TypeUseExistingProvider */:\n injectable = resolveNgModuleDep(ngModule, providerDef.deps[0]);\n break;\n case 256 /* TypeValueProvider */:\n injectable = providerDef.value;\n break;\n }\n return injectable === undefined ? UNDEFINED_VALUE : injectable;\n}\n/**\n * @param {?} ngModule\n * @param {?} ctor\n * @param {?} deps\n * @return {?}\n */\nfunction _createClass(ngModule, ctor, deps) {\n var /** @type {?} */ len = deps.length;\n switch (len) {\n case 0:\n return new ctor();\n case 1:\n return new ctor(resolveNgModuleDep(ngModule, deps[0]));\n case 2:\n return new ctor(resolveNgModuleDep(ngModule, deps[0]), resolveNgModuleDep(ngModule, deps[1]));\n case 3:\n return new ctor(resolveNgModuleDep(ngModule, deps[0]), resolveNgModuleDep(ngModule, deps[1]), resolveNgModuleDep(ngModule, deps[2]));\n default:\n var /** @type {?} */ depValues = new Array(len);\n for (var /** @type {?} */ i = 0; i < len; i++) {\n depValues[i] = resolveNgModuleDep(ngModule, deps[i]);\n }\n return new (ctor.bind.apply(ctor, [void 0].concat(depValues)))();\n }\n}\n/**\n * @param {?} ngModule\n * @param {?} factory\n * @param {?} deps\n * @return {?}\n */\nfunction _callFactory(ngModule, factory, deps) {\n var /** @type {?} */ len = deps.length;\n switch (len) {\n case 0:\n return factory();\n case 1:\n return factory(resolveNgModuleDep(ngModule, deps[0]));\n case 2:\n return factory(resolveNgModuleDep(ngModule, deps[0]), resolveNgModuleDep(ngModule, deps[1]));\n case 3:\n return factory(resolveNgModuleDep(ngModule, deps[0]), resolveNgModuleDep(ngModule, deps[1]), resolveNgModuleDep(ngModule, deps[2]));\n default:\n var /** @type {?} */ depValues = Array(len);\n for (var /** @type {?} */ i = 0; i < len; i++) {\n depValues[i] = resolveNgModuleDep(ngModule, deps[i]);\n }\n return factory.apply(void 0, depValues);\n }\n}\n/**\n * @param {?} ngModule\n * @param {?} lifecycles\n * @return {?}\n */\nfunction callNgModuleLifecycle(ngModule, lifecycles) {\n var /** @type {?} */ def = ngModule._def;\n for (var /** @type {?} */ i = 0; i < def.providers.length; i++) {\n var /** @type {?} */ provDef = def.providers[i];\n if (provDef.flags & 131072 /* OnDestroy */) {\n var /** @type {?} */ instance = ngModule._providers[i];\n if (instance && instance !== UNDEFINED_VALUE) {\n instance.ngOnDestroy();\n }\n }\n }\n}\n\n/**\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 * @param {?} parentView\n * @param {?} elementData\n * @param {?} viewIndex\n * @param {?} view\n * @return {?}\n */\nfunction attachEmbeddedView(parentView, elementData, viewIndex, view) {\n var /** @type {?} */ embeddedViews = /** @type {?} */ ((elementData.viewContainer))._embeddedViews;\n if (viewIndex === null || viewIndex === undefined) {\n viewIndex = embeddedViews.length;\n }\n view.viewContainerParent = parentView;\n addToArray(embeddedViews, /** @type {?} */ ((viewIndex)), view);\n attachProjectedView(elementData, view);\n Services.dirtyParentQueries(view);\n var /** @type {?} */ prevView = /** @type {?} */ ((viewIndex)) > 0 ? embeddedViews[/** @type {?} */ ((viewIndex)) - 1] : null;\n renderAttachEmbeddedView(elementData, prevView, view);\n}\n/**\n * @param {?} vcElementData\n * @param {?} view\n * @return {?}\n */\nfunction attachProjectedView(vcElementData, view) {\n var /** @type {?} */ dvcElementData = declaredViewContainer(view);\n if (!dvcElementData || dvcElementData === vcElementData ||\n view.state & 16 /* IsProjectedView */) {\n return;\n }\n // Note: For performance reasons, we\n // - add a view to template._projectedViews only 1x throughout its lifetime,\n // and remove it not until the view is destroyed.\n // (hard, as when a parent view is attached/detached we would need to attach/detach all\n // nested projected views as well, even accross component boundaries).\n // - don't track the insertion order of views in the projected views array\n // (hard, as when the views of the same template are inserted different view containers)\n view.state |= 16 /* IsProjectedView */;\n var /** @type {?} */ projectedViews = dvcElementData.template._projectedViews;\n if (!projectedViews) {\n projectedViews = dvcElementData.template._projectedViews = [];\n }\n projectedViews.push(view);\n // Note: we are changing the NodeDef here as we cannot calculate\n // the fact whether a template is used for projection during compilation.\n markNodeAsProjectedTemplate(/** @type {?} */ ((view.parent)).def, /** @type {?} */ ((view.parentNodeDef)));\n}\n/**\n * @param {?} viewDef\n * @param {?} nodeDef\n * @return {?}\n */\nfunction markNodeAsProjectedTemplate(viewDef, nodeDef) {\n if (nodeDef.flags & 4 /* ProjectedTemplate */) {\n return;\n }\n viewDef.nodeFlags |= 4 /* ProjectedTemplate */;\n nodeDef.flags |= 4 /* ProjectedTemplate */;\n var /** @type {?} */ parentNodeDef = nodeDef.parent;\n while (parentNodeDef) {\n parentNodeDef.childFlags |= 4 /* ProjectedTemplate */;\n parentNodeDef = parentNodeDef.parent;\n }\n}\n/**\n * @param {?} elementData\n * @param {?=} viewIndex\n * @return {?}\n */\nfunction detachEmbeddedView(elementData, viewIndex) {\n var /** @type {?} */ embeddedViews = /** @type {?} */ ((elementData.viewContainer))._embeddedViews;\n if (viewIndex == null || viewIndex >= embeddedViews.length) {\n viewIndex = embeddedViews.length - 1;\n }\n if (viewIndex < 0) {\n return null;\n }\n var /** @type {?} */ view = embeddedViews[viewIndex];\n view.viewContainerParent = null;\n removeFromArray(embeddedViews, viewIndex);\n // See attachProjectedView for why we don't update projectedViews here.\n Services.dirtyParentQueries(view);\n renderDetachView(view);\n return view;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction detachProjectedView(view) {\n if (!(view.state & 16 /* IsProjectedView */)) {\n return;\n }\n var /** @type {?} */ dvcElementData = declaredViewContainer(view);\n if (dvcElementData) {\n var /** @type {?} */ projectedViews = dvcElementData.template._projectedViews;\n if (projectedViews) {\n removeFromArray(projectedViews, projectedViews.indexOf(view));\n Services.dirtyParentQueries(view);\n }\n }\n}\n/**\n * @param {?} elementData\n * @param {?} oldViewIndex\n * @param {?} newViewIndex\n * @return {?}\n */\nfunction moveEmbeddedView(elementData, oldViewIndex, newViewIndex) {\n var /** @type {?} */ embeddedViews = /** @type {?} */ ((elementData.viewContainer))._embeddedViews;\n var /** @type {?} */ view = embeddedViews[oldViewIndex];\n removeFromArray(embeddedViews, oldViewIndex);\n if (newViewIndex == null) {\n newViewIndex = embeddedViews.length;\n }\n addToArray(embeddedViews, newViewIndex, view);\n // Note: Don't need to change projectedViews as the order in there\n // as always invalid...\n Services.dirtyParentQueries(view);\n renderDetachView(view);\n var /** @type {?} */ prevView = newViewIndex > 0 ? embeddedViews[newViewIndex - 1] : null;\n renderAttachEmbeddedView(elementData, prevView, view);\n return view;\n}\n/**\n * @param {?} elementData\n * @param {?} prevView\n * @param {?} view\n * @return {?}\n */\nfunction renderAttachEmbeddedView(elementData, prevView, view) {\n var /** @type {?} */ prevRenderNode = prevView ? renderNode(prevView, /** @type {?} */ ((prevView.def.lastRenderRootNode))) :\n elementData.renderElement;\n var /** @type {?} */ parentNode = view.renderer.parentNode(prevRenderNode);\n var /** @type {?} */ nextSibling = view.renderer.nextSibling(prevRenderNode);\n // Note: We can't check if `nextSibling` is present, as on WebWorkers it will always be!\n // However, browsers automatically do `appendChild` when there is no `nextSibling`.\n visitRootRenderNodes(view, 2 /* InsertBefore */, parentNode, nextSibling, undefined);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction renderDetachView(view) {\n visitRootRenderNodes(view, 3 /* RemoveChild */, null, null, undefined);\n}\n/**\n * @param {?} arr\n * @param {?} index\n * @param {?} value\n * @return {?}\n */\nfunction addToArray(arr, index, value) {\n // perf: array.push is faster than array.splice!\n if (index >= arr.length) {\n arr.push(value);\n }\n else {\n arr.splice(index, 0, value);\n }\n}\n/**\n * @param {?} arr\n * @param {?} index\n * @return {?}\n */\nfunction removeFromArray(arr, index) {\n // perf: array.pop is faster than array.splice!\n if (index >= arr.length - 1) {\n arr.pop();\n }\n else {\n arr.splice(index, 1);\n }\n}\n\n/**\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 */\nvar EMPTY_CONTEXT = new Object();\n/**\n * @param {?} selector\n * @param {?} componentType\n * @param {?} viewDefFactory\n * @param {?} inputs\n * @param {?} outputs\n * @param {?} ngContentSelectors\n * @return {?}\n */\nfunction createComponentFactory(selector, componentType, viewDefFactory, inputs, outputs, ngContentSelectors) {\n return new ComponentFactory_(selector, componentType, viewDefFactory, inputs, outputs, ngContentSelectors);\n}\n/**\n * @param {?} componentFactory\n * @return {?}\n */\nfunction getComponentViewDefinitionFactory(componentFactory) {\n return (/** @type {?} */ (componentFactory)).viewDefFactory;\n}\nvar ComponentFactory_ = /** @class */ (function (_super) {\n __extends(ComponentFactory_, _super);\n function ComponentFactory_(selector, componentType, viewDefFactory, _inputs, _outputs, ngContentSelectors) {\n var _this = \n // Attention: this ctor is called as top level function.\n // Putting any logic in here will destroy closure tree shaking!\n _super.call(this) || this;\n _this.selector = selector;\n _this.componentType = componentType;\n _this._inputs = _inputs;\n _this._outputs = _outputs;\n _this.ngContentSelectors = ngContentSelectors;\n _this.viewDefFactory = viewDefFactory;\n return _this;\n }\n Object.defineProperty(ComponentFactory_.prototype, \"inputs\", {\n get: /**\n * @return {?}\n */\n function () {\n var /** @type {?} */ inputsArr = [];\n var /** @type {?} */ inputs = /** @type {?} */ ((this._inputs));\n for (var /** @type {?} */ propName in inputs) {\n var /** @type {?} */ templateName = inputs[propName];\n inputsArr.push({ propName: propName, templateName: templateName });\n }\n return inputsArr;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ComponentFactory_.prototype, \"outputs\", {\n get: /**\n * @return {?}\n */\n function () {\n var /** @type {?} */ outputsArr = [];\n for (var /** @type {?} */ propName in this._outputs) {\n var /** @type {?} */ templateName = this._outputs[propName];\n outputsArr.push({ propName: propName, templateName: templateName });\n }\n return outputsArr;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Creates a new component.\n */\n /**\n * Creates a new component.\n * @param {?} injector\n * @param {?=} projectableNodes\n * @param {?=} rootSelectorOrNode\n * @param {?=} ngModule\n * @return {?}\n */\n ComponentFactory_.prototype.create = /**\n * Creates a new component.\n * @param {?} injector\n * @param {?=} projectableNodes\n * @param {?=} rootSelectorOrNode\n * @param {?=} ngModule\n * @return {?}\n */\n function (injector, projectableNodes, rootSelectorOrNode, ngModule) {\n if (!ngModule) {\n throw new Error('ngModule should be provided');\n }\n var /** @type {?} */ viewDef = resolveDefinition(this.viewDefFactory);\n var /** @type {?} */ componentNodeIndex = /** @type {?} */ ((/** @type {?} */ ((viewDef.nodes[0].element)).componentProvider)).nodeIndex;\n var /** @type {?} */ view = Services.createRootView(injector, projectableNodes || [], rootSelectorOrNode, viewDef, ngModule, EMPTY_CONTEXT);\n var /** @type {?} */ component = asProviderData(view, componentNodeIndex).instance;\n if (rootSelectorOrNode) {\n view.renderer.setAttribute(asElementData(view, 0).renderElement, 'ng-version', VERSION.full);\n }\n return new ComponentRef_(view, new ViewRef_(view), component);\n };\n return ComponentFactory_;\n}(ComponentFactory));\nvar ComponentRef_ = /** @class */ (function (_super) {\n __extends(ComponentRef_, _super);\n function ComponentRef_(_view, _viewRef, _component) {\n var _this = _super.call(this) || this;\n _this._view = _view;\n _this._viewRef = _viewRef;\n _this._component = _component;\n _this._elDef = _this._view.def.nodes[0];\n _this.hostView = _viewRef;\n _this.changeDetectorRef = _viewRef;\n _this.instance = _component;\n return _this;\n }\n Object.defineProperty(ComponentRef_.prototype, \"location\", {\n get: /**\n * @return {?}\n */\n function () {\n return new ElementRef(asElementData(this._view, this._elDef.nodeIndex).renderElement);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ComponentRef_.prototype, \"injector\", {\n get: /**\n * @return {?}\n */\n function () { return new Injector_(this._view, this._elDef); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ComponentRef_.prototype, \"componentType\", {\n get: /**\n * @return {?}\n */\n function () { return /** @type {?} */ (this._component.constructor); },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n ComponentRef_.prototype.destroy = /**\n * @return {?}\n */\n function () { this._viewRef.destroy(); };\n /**\n * @param {?} callback\n * @return {?}\n */\n ComponentRef_.prototype.onDestroy = /**\n * @param {?} callback\n * @return {?}\n */\n function (callback) { this._viewRef.onDestroy(callback); };\n return ComponentRef_;\n}(ComponentRef));\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} elData\n * @return {?}\n */\nfunction createViewContainerData(view, elDef, elData) {\n return new ViewContainerRef_(view, elDef, elData);\n}\nvar ViewContainerRef_ = /** @class */ (function () {\n function ViewContainerRef_(_view, _elDef, _data) {\n this._view = _view;\n this._elDef = _elDef;\n this._data = _data;\n /**\n * \\@internal\n */\n this._embeddedViews = [];\n }\n Object.defineProperty(ViewContainerRef_.prototype, \"element\", {\n get: /**\n * @return {?}\n */\n function () { return new ElementRef(this._data.renderElement); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewContainerRef_.prototype, \"injector\", {\n get: /**\n * @return {?}\n */\n function () { return new Injector_(this._view, this._elDef); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewContainerRef_.prototype, \"parentInjector\", {\n get: /**\n * @return {?}\n */\n function () {\n var /** @type {?} */ view = this._view;\n var /** @type {?} */ elDef = this._elDef.parent;\n while (!elDef && view) {\n elDef = viewParentEl(view);\n view = /** @type {?} */ ((view.parent));\n }\n return view ? new Injector_(view, elDef) : new Injector_(this._view, null);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n ViewContainerRef_.prototype.clear = /**\n * @return {?}\n */\n function () {\n var /** @type {?} */ len = this._embeddedViews.length;\n for (var /** @type {?} */ i = len - 1; i >= 0; i--) {\n var /** @type {?} */ view = /** @type {?} */ ((detachEmbeddedView(this._data, i)));\n Services.destroyView(view);\n }\n };\n /**\n * @param {?} index\n * @return {?}\n */\n ViewContainerRef_.prototype.get = /**\n * @param {?} index\n * @return {?}\n */\n function (index) {\n var /** @type {?} */ view = this._embeddedViews[index];\n if (view) {\n var /** @type {?} */ ref = new ViewRef_(view);\n ref.attachToViewContainerRef(this);\n return ref;\n }\n return null;\n };\n Object.defineProperty(ViewContainerRef_.prototype, \"length\", {\n get: /**\n * @return {?}\n */\n function () { return this._embeddedViews.length; },\n enumerable: true,\n configurable: true\n });\n /**\n * @template C\n * @param {?} templateRef\n * @param {?=} context\n * @param {?=} index\n * @return {?}\n */\n ViewContainerRef_.prototype.createEmbeddedView = /**\n * @template C\n * @param {?} templateRef\n * @param {?=} context\n * @param {?=} index\n * @return {?}\n */\n function (templateRef, context, index) {\n var /** @type {?} */ viewRef = templateRef.createEmbeddedView(context || /** @type {?} */ ({}));\n this.insert(viewRef, index);\n return viewRef;\n };\n /**\n * @template C\n * @param {?} componentFactory\n * @param {?=} index\n * @param {?=} injector\n * @param {?=} projectableNodes\n * @param {?=} ngModuleRef\n * @return {?}\n */\n ViewContainerRef_.prototype.createComponent = /**\n * @template C\n * @param {?} componentFactory\n * @param {?=} index\n * @param {?=} injector\n * @param {?=} projectableNodes\n * @param {?=} ngModuleRef\n * @return {?}\n */\n function (componentFactory, index, injector, projectableNodes, ngModuleRef) {\n var /** @type {?} */ contextInjector = injector || this.parentInjector;\n if (!ngModuleRef && !(componentFactory instanceof ComponentFactoryBoundToModule)) {\n ngModuleRef = contextInjector.get(NgModuleRef);\n }\n var /** @type {?} */ componentRef = componentFactory.create(contextInjector, projectableNodes, undefined, ngModuleRef);\n this.insert(componentRef.hostView, index);\n return componentRef;\n };\n /**\n * @param {?} viewRef\n * @param {?=} index\n * @return {?}\n */\n ViewContainerRef_.prototype.insert = /**\n * @param {?} viewRef\n * @param {?=} index\n * @return {?}\n */\n function (viewRef, index) {\n if (viewRef.destroyed) {\n throw new Error('Cannot insert a destroyed View in a ViewContainer!');\n }\n var /** @type {?} */ viewRef_ = /** @type {?} */ (viewRef);\n var /** @type {?} */ viewData = viewRef_._view;\n attachEmbeddedView(this._view, this._data, index, viewData);\n viewRef_.attachToViewContainerRef(this);\n return viewRef;\n };\n /**\n * @param {?} viewRef\n * @param {?} currentIndex\n * @return {?}\n */\n ViewContainerRef_.prototype.move = /**\n * @param {?} viewRef\n * @param {?} currentIndex\n * @return {?}\n */\n function (viewRef, currentIndex) {\n if (viewRef.destroyed) {\n throw new Error('Cannot move a destroyed View in a ViewContainer!');\n }\n var /** @type {?} */ previousIndex = this._embeddedViews.indexOf(viewRef._view);\n moveEmbeddedView(this._data, previousIndex, currentIndex);\n return viewRef;\n };\n /**\n * @param {?} viewRef\n * @return {?}\n */\n ViewContainerRef_.prototype.indexOf = /**\n * @param {?} viewRef\n * @return {?}\n */\n function (viewRef) {\n return this._embeddedViews.indexOf((/** @type {?} */ (viewRef))._view);\n };\n /**\n * @param {?=} index\n * @return {?}\n */\n ViewContainerRef_.prototype.remove = /**\n * @param {?=} index\n * @return {?}\n */\n function (index) {\n var /** @type {?} */ viewData = detachEmbeddedView(this._data, index);\n if (viewData) {\n Services.destroyView(viewData);\n }\n };\n /**\n * @param {?=} index\n * @return {?}\n */\n ViewContainerRef_.prototype.detach = /**\n * @param {?=} index\n * @return {?}\n */\n function (index) {\n var /** @type {?} */ view = detachEmbeddedView(this._data, index);\n return view ? new ViewRef_(view) : null;\n };\n return ViewContainerRef_;\n}());\n/**\n * @param {?} view\n * @return {?}\n */\nfunction createChangeDetectorRef(view) {\n return new ViewRef_(view);\n}\nvar ViewRef_ = /** @class */ (function () {\n function ViewRef_(_view) {\n this._view = _view;\n this._viewContainerRef = null;\n this._appRef = null;\n }\n Object.defineProperty(ViewRef_.prototype, \"rootNodes\", {\n get: /**\n * @return {?}\n */\n function () { return rootRenderNodes(this._view); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewRef_.prototype, \"context\", {\n get: /**\n * @return {?}\n */\n function () { return this._view.context; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewRef_.prototype, \"destroyed\", {\n get: /**\n * @return {?}\n */\n function () { return (this._view.state & 128 /* Destroyed */) !== 0; },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n ViewRef_.prototype.markForCheck = /**\n * @return {?}\n */\n function () { markParentViewsForCheck(this._view); };\n /**\n * @return {?}\n */\n ViewRef_.prototype.detach = /**\n * @return {?}\n */\n function () { this._view.state &= ~4 /* Attached */; };\n /**\n * @return {?}\n */\n ViewRef_.prototype.detectChanges = /**\n * @return {?}\n */\n function () {\n var /** @type {?} */ fs = this._view.root.rendererFactory;\n if (fs.begin) {\n fs.begin();\n }\n try {\n Services.checkAndUpdateView(this._view);\n }\n finally {\n if (fs.end) {\n fs.end();\n }\n }\n };\n /**\n * @return {?}\n */\n ViewRef_.prototype.checkNoChanges = /**\n * @return {?}\n */\n function () { Services.checkNoChangesView(this._view); };\n /**\n * @return {?}\n */\n ViewRef_.prototype.reattach = /**\n * @return {?}\n */\n function () { this._view.state |= 4 /* Attached */; };\n /**\n * @param {?} callback\n * @return {?}\n */\n ViewRef_.prototype.onDestroy = /**\n * @param {?} callback\n * @return {?}\n */\n function (callback) {\n if (!this._view.disposables) {\n this._view.disposables = [];\n }\n this._view.disposables.push(/** @type {?} */ (callback));\n };\n /**\n * @return {?}\n */\n ViewRef_.prototype.destroy = /**\n * @return {?}\n */\n function () {\n if (this._appRef) {\n this._appRef.detachView(this);\n }\n else if (this._viewContainerRef) {\n this._viewContainerRef.detach(this._viewContainerRef.indexOf(this));\n }\n Services.destroyView(this._view);\n };\n /**\n * @return {?}\n */\n ViewRef_.prototype.detachFromAppRef = /**\n * @return {?}\n */\n function () {\n this._appRef = null;\n renderDetachView(this._view);\n Services.dirtyParentQueries(this._view);\n };\n /**\n * @param {?} appRef\n * @return {?}\n */\n ViewRef_.prototype.attachToAppRef = /**\n * @param {?} appRef\n * @return {?}\n */\n function (appRef) {\n if (this._viewContainerRef) {\n throw new Error('This view is already attached to a ViewContainer!');\n }\n this._appRef = appRef;\n };\n /**\n * @param {?} vcRef\n * @return {?}\n */\n ViewRef_.prototype.attachToViewContainerRef = /**\n * @param {?} vcRef\n * @return {?}\n */\n function (vcRef) {\n if (this._appRef) {\n throw new Error('This view is already attached directly to the ApplicationRef!');\n }\n this._viewContainerRef = vcRef;\n };\n return ViewRef_;\n}());\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nfunction createTemplateData(view, def) {\n return new TemplateRef_(view, def);\n}\nvar TemplateRef_ = /** @class */ (function (_super) {\n __extends(TemplateRef_, _super);\n function TemplateRef_(_parentView, _def) {\n var _this = _super.call(this) || this;\n _this._parentView = _parentView;\n _this._def = _def;\n return _this;\n }\n /**\n * @param {?} context\n * @return {?}\n */\n TemplateRef_.prototype.createEmbeddedView = /**\n * @param {?} context\n * @return {?}\n */\n function (context) {\n return new ViewRef_(Services.createEmbeddedView(this._parentView, this._def, /** @type {?} */ ((/** @type {?} */ ((this._def.element)).template)), context));\n };\n Object.defineProperty(TemplateRef_.prototype, \"elementRef\", {\n get: /**\n * @return {?}\n */\n function () {\n return new ElementRef(asElementData(this._parentView, this._def.nodeIndex).renderElement);\n },\n enumerable: true,\n configurable: true\n });\n return TemplateRef_;\n}(TemplateRef));\n/**\n * @param {?} view\n * @param {?} elDef\n * @return {?}\n */\nfunction createInjector(view, elDef) {\n return new Injector_(view, elDef);\n}\nvar Injector_ = /** @class */ (function () {\n function Injector_(view, elDef) {\n this.view = view;\n this.elDef = elDef;\n }\n /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n Injector_.prototype.get = /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n function (token, notFoundValue) {\n if (notFoundValue === void 0) { notFoundValue = Injector.THROW_IF_NOT_FOUND; }\n var /** @type {?} */ allowPrivateServices = this.elDef ? (this.elDef.flags & 33554432 /* ComponentView */) !== 0 : false;\n return Services.resolveDep(this.view, this.elDef, allowPrivateServices, { flags: 0 /* None */, token: token, tokenKey: tokenKey(token) }, notFoundValue);\n };\n return Injector_;\n}());\n/**\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nfunction nodeValue(view, index) {\n var /** @type {?} */ def = view.def.nodes[index];\n if (def.flags & 1 /* TypeElement */) {\n var /** @type {?} */ elData = asElementData(view, def.nodeIndex);\n return /** @type {?} */ ((def.element)).template ? elData.template : elData.renderElement;\n }\n else if (def.flags & 2 /* TypeText */) {\n return asTextData(view, def.nodeIndex).renderText;\n }\n else if (def.flags & (20224 /* CatProvider */ | 16 /* TypePipe */)) {\n return asProviderData(view, def.nodeIndex).instance;\n }\n throw new Error(\"Illegal state: read nodeValue for node index \" + index);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction createRendererV1(view) {\n return new RendererAdapter(view.renderer);\n}\nvar RendererAdapter = /** @class */ (function () {\n function RendererAdapter(delegate) {\n this.delegate = delegate;\n }\n /**\n * @param {?} selectorOrNode\n * @return {?}\n */\n RendererAdapter.prototype.selectRootElement = /**\n * @param {?} selectorOrNode\n * @return {?}\n */\n function (selectorOrNode) {\n return this.delegate.selectRootElement(selectorOrNode);\n };\n /**\n * @param {?} parent\n * @param {?} namespaceAndName\n * @return {?}\n */\n RendererAdapter.prototype.createElement = /**\n * @param {?} parent\n * @param {?} namespaceAndName\n * @return {?}\n */\n function (parent, namespaceAndName) {\n var _a = splitNamespace(namespaceAndName), ns = _a[0], name = _a[1];\n var /** @type {?} */ el = this.delegate.createElement(name, ns);\n if (parent) {\n this.delegate.appendChild(parent, el);\n }\n return el;\n };\n /**\n * @param {?} hostElement\n * @return {?}\n */\n RendererAdapter.prototype.createViewRoot = /**\n * @param {?} hostElement\n * @return {?}\n */\n function (hostElement) { return hostElement; };\n /**\n * @param {?} parentElement\n * @return {?}\n */\n RendererAdapter.prototype.createTemplateAnchor = /**\n * @param {?} parentElement\n * @return {?}\n */\n function (parentElement) {\n var /** @type {?} */ comment = this.delegate.createComment('');\n if (parentElement) {\n this.delegate.appendChild(parentElement, comment);\n }\n return comment;\n };\n /**\n * @param {?} parentElement\n * @param {?} value\n * @return {?}\n */\n RendererAdapter.prototype.createText = /**\n * @param {?} parentElement\n * @param {?} value\n * @return {?}\n */\n function (parentElement, value) {\n var /** @type {?} */ node = this.delegate.createText(value);\n if (parentElement) {\n this.delegate.appendChild(parentElement, node);\n }\n return node;\n };\n /**\n * @param {?} parentElement\n * @param {?} nodes\n * @return {?}\n */\n RendererAdapter.prototype.projectNodes = /**\n * @param {?} parentElement\n * @param {?} nodes\n * @return {?}\n */\n function (parentElement, nodes) {\n for (var /** @type {?} */ i = 0; i < nodes.length; i++) {\n this.delegate.appendChild(parentElement, nodes[i]);\n }\n };\n /**\n * @param {?} node\n * @param {?} viewRootNodes\n * @return {?}\n */\n RendererAdapter.prototype.attachViewAfter = /**\n * @param {?} node\n * @param {?} viewRootNodes\n * @return {?}\n */\n function (node, viewRootNodes) {\n var /** @type {?} */ parentElement = this.delegate.parentNode(node);\n var /** @type {?} */ nextSibling = this.delegate.nextSibling(node);\n for (var /** @type {?} */ i = 0; i < viewRootNodes.length; i++) {\n this.delegate.insertBefore(parentElement, viewRootNodes[i], nextSibling);\n }\n };\n /**\n * @param {?} viewRootNodes\n * @return {?}\n */\n RendererAdapter.prototype.detachView = /**\n * @param {?} viewRootNodes\n * @return {?}\n */\n function (viewRootNodes) {\n for (var /** @type {?} */ i = 0; i < viewRootNodes.length; i++) {\n var /** @type {?} */ node = viewRootNodes[i];\n var /** @type {?} */ parentElement = this.delegate.parentNode(node);\n this.delegate.removeChild(parentElement, node);\n }\n };\n /**\n * @param {?} hostElement\n * @param {?} viewAllNodes\n * @return {?}\n */\n RendererAdapter.prototype.destroyView = /**\n * @param {?} hostElement\n * @param {?} viewAllNodes\n * @return {?}\n */\n function (hostElement, viewAllNodes) {\n for (var /** @type {?} */ i = 0; i < viewAllNodes.length; i++) {\n /** @type {?} */ ((this.delegate.destroyNode))(viewAllNodes[i]);\n }\n };\n /**\n * @param {?} renderElement\n * @param {?} name\n * @param {?} callback\n * @return {?}\n */\n RendererAdapter.prototype.listen = /**\n * @param {?} renderElement\n * @param {?} name\n * @param {?} callback\n * @return {?}\n */\n function (renderElement, name, callback) {\n return this.delegate.listen(renderElement, name, /** @type {?} */ (callback));\n };\n /**\n * @param {?} target\n * @param {?} name\n * @param {?} callback\n * @return {?}\n */\n RendererAdapter.prototype.listenGlobal = /**\n * @param {?} target\n * @param {?} name\n * @param {?} callback\n * @return {?}\n */\n function (target, name, callback) {\n return this.delegate.listen(target, name, /** @type {?} */ (callback));\n };\n /**\n * @param {?} renderElement\n * @param {?} propertyName\n * @param {?} propertyValue\n * @return {?}\n */\n RendererAdapter.prototype.setElementProperty = /**\n * @param {?} renderElement\n * @param {?} propertyName\n * @param {?} propertyValue\n * @return {?}\n */\n function (renderElement, propertyName, propertyValue) {\n this.delegate.setProperty(renderElement, propertyName, propertyValue);\n };\n /**\n * @param {?} renderElement\n * @param {?} namespaceAndName\n * @param {?} attributeValue\n * @return {?}\n */\n RendererAdapter.prototype.setElementAttribute = /**\n * @param {?} renderElement\n * @param {?} namespaceAndName\n * @param {?} attributeValue\n * @return {?}\n */\n function (renderElement, namespaceAndName, attributeValue) {\n var _a = splitNamespace(namespaceAndName), ns = _a[0], name = _a[1];\n if (attributeValue != null) {\n this.delegate.setAttribute(renderElement, name, attributeValue, ns);\n }\n else {\n this.delegate.removeAttribute(renderElement, name, ns);\n }\n };\n /**\n * @param {?} renderElement\n * @param {?} propertyName\n * @param {?} propertyValue\n * @return {?}\n */\n RendererAdapter.prototype.setBindingDebugInfo = /**\n * @param {?} renderElement\n * @param {?} propertyName\n * @param {?} propertyValue\n * @return {?}\n */\n function (renderElement, propertyName, propertyValue) { };\n /**\n * @param {?} renderElement\n * @param {?} className\n * @param {?} isAdd\n * @return {?}\n */\n RendererAdapter.prototype.setElementClass = /**\n * @param {?} renderElement\n * @param {?} className\n * @param {?} isAdd\n * @return {?}\n */\n function (renderElement, className, isAdd) {\n if (isAdd) {\n this.delegate.addClass(renderElement, className);\n }\n else {\n this.delegate.removeClass(renderElement, className);\n }\n };\n /**\n * @param {?} renderElement\n * @param {?} styleName\n * @param {?} styleValue\n * @return {?}\n */\n RendererAdapter.prototype.setElementStyle = /**\n * @param {?} renderElement\n * @param {?} styleName\n * @param {?} styleValue\n * @return {?}\n */\n function (renderElement, styleName, styleValue) {\n if (styleValue != null) {\n this.delegate.setStyle(renderElement, styleName, styleValue);\n }\n else {\n this.delegate.removeStyle(renderElement, styleName);\n }\n };\n /**\n * @param {?} renderElement\n * @param {?} methodName\n * @param {?} args\n * @return {?}\n */\n RendererAdapter.prototype.invokeElementMethod = /**\n * @param {?} renderElement\n * @param {?} methodName\n * @param {?} args\n * @return {?}\n */\n function (renderElement, methodName, args) {\n (/** @type {?} */ (renderElement))[methodName].apply(renderElement, args);\n };\n /**\n * @param {?} renderNode\n * @param {?} text\n * @return {?}\n */\n RendererAdapter.prototype.setText = /**\n * @param {?} renderNode\n * @param {?} text\n * @return {?}\n */\n function (renderNode$$1, text) { this.delegate.setValue(renderNode$$1, text); };\n /**\n * @return {?}\n */\n RendererAdapter.prototype.animate = /**\n * @return {?}\n */\n function () { throw new Error('Renderer.animate is no longer supported!'); };\n return RendererAdapter;\n}());\n/**\n * @param {?} moduleType\n * @param {?} parent\n * @param {?} bootstrapComponents\n * @param {?} def\n * @return {?}\n */\nfunction createNgModuleRef(moduleType, parent, bootstrapComponents, def) {\n return new NgModuleRef_(moduleType, parent, bootstrapComponents, def);\n}\nvar NgModuleRef_ = /** @class */ (function () {\n function NgModuleRef_(_moduleType, _parent, _bootstrapComponents, _def) {\n this._moduleType = _moduleType;\n this._parent = _parent;\n this._bootstrapComponents = _bootstrapComponents;\n this._def = _def;\n this._destroyListeners = [];\n this._destroyed = false;\n this.injector = this;\n initNgModule(this);\n }\n /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n NgModuleRef_.prototype.get = /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n function (token, notFoundValue) {\n if (notFoundValue === void 0) { notFoundValue = Injector.THROW_IF_NOT_FOUND; }\n return resolveNgModuleDep(this, { token: token, tokenKey: tokenKey(token), flags: 0 /* None */ }, notFoundValue);\n };\n Object.defineProperty(NgModuleRef_.prototype, \"instance\", {\n get: /**\n * @return {?}\n */\n function () { return this.get(this._moduleType); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgModuleRef_.prototype, \"componentFactoryResolver\", {\n get: /**\n * @return {?}\n */\n function () { return this.get(ComponentFactoryResolver); },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n NgModuleRef_.prototype.destroy = /**\n * @return {?}\n */\n function () {\n if (this._destroyed) {\n throw new Error(\"The ng module \" + stringify(this.instance.constructor) + \" has already been destroyed.\");\n }\n this._destroyed = true;\n callNgModuleLifecycle(this, 131072 /* OnDestroy */);\n this._destroyListeners.forEach(function (listener) { return listener(); });\n };\n /**\n * @param {?} callback\n * @return {?}\n */\n NgModuleRef_.prototype.onDestroy = /**\n * @param {?} callback\n * @return {?}\n */\n function (callback) { this._destroyListeners.push(callback); };\n return NgModuleRef_;\n}());\n\n/**\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 */\nvar RendererV1TokenKey = tokenKey(Renderer);\nvar Renderer2TokenKey = tokenKey(Renderer2);\nvar ElementRefTokenKey = tokenKey(ElementRef);\nvar ViewContainerRefTokenKey = tokenKey(ViewContainerRef);\nvar TemplateRefTokenKey = tokenKey(TemplateRef);\nvar ChangeDetectorRefTokenKey = tokenKey(ChangeDetectorRef);\nvar InjectorRefTokenKey = tokenKey(Injector);\n/**\n * @param {?} checkIndex\n * @param {?} flags\n * @param {?} matchedQueries\n * @param {?} childCount\n * @param {?} ctor\n * @param {?} deps\n * @param {?=} props\n * @param {?=} outputs\n * @return {?}\n */\nfunction directiveDef(checkIndex, flags, matchedQueries, childCount, ctor, deps, props, outputs) {\n var /** @type {?} */ bindings = [];\n if (props) {\n for (var /** @type {?} */ prop in props) {\n var _a = props[prop], bindingIndex = _a[0], nonMinifiedName = _a[1];\n bindings[bindingIndex] = {\n flags: 8 /* TypeProperty */,\n name: prop, nonMinifiedName: nonMinifiedName,\n ns: null,\n securityContext: null,\n suffix: null\n };\n }\n }\n var /** @type {?} */ outputDefs = [];\n if (outputs) {\n for (var /** @type {?} */ propName in outputs) {\n outputDefs.push({ type: 1 /* DirectiveOutput */, propName: propName, target: null, eventName: outputs[propName] });\n }\n }\n flags |= 16384 /* TypeDirective */;\n return _def(checkIndex, flags, matchedQueries, childCount, ctor, ctor, deps, bindings, outputDefs);\n}\n/**\n * @param {?} flags\n * @param {?} ctor\n * @param {?} deps\n * @return {?}\n */\nfunction pipeDef(flags, ctor, deps) {\n flags |= 16 /* TypePipe */;\n return _def(-1, flags, null, 0, ctor, ctor, deps);\n}\n/**\n * @param {?} flags\n * @param {?} matchedQueries\n * @param {?} token\n * @param {?} value\n * @param {?} deps\n * @return {?}\n */\nfunction providerDef(flags, matchedQueries, token, value, deps) {\n return _def(-1, flags, matchedQueries, 0, token, value, deps);\n}\n/**\n * @param {?} checkIndex\n * @param {?} flags\n * @param {?} matchedQueriesDsl\n * @param {?} childCount\n * @param {?} token\n * @param {?} value\n * @param {?} deps\n * @param {?=} bindings\n * @param {?=} outputs\n * @return {?}\n */\nfunction _def(checkIndex, flags, matchedQueriesDsl, childCount, token, value, deps, bindings, outputs) {\n var _a = splitMatchedQueriesDsl(matchedQueriesDsl), matchedQueries = _a.matchedQueries, references = _a.references, matchedQueryIds = _a.matchedQueryIds;\n if (!outputs) {\n outputs = [];\n }\n if (!bindings) {\n bindings = [];\n }\n // Need to resolve forwardRefs as e.g. for `useValue` we\n // lowered the expression and then stopped evaluating it,\n // i.e. also didn't unwrap it.\n value = resolveForwardRef(value);\n var /** @type {?} */ depDefs = splitDepsDsl(deps, stringify(token));\n return {\n // will bet set by the view definition\n nodeIndex: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n checkIndex: checkIndex,\n flags: flags,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0, matchedQueries: matchedQueries, matchedQueryIds: matchedQueryIds, references: references,\n ngContentIndex: -1, childCount: childCount, bindings: bindings,\n bindingFlags: calcBindingFlags(bindings), outputs: outputs,\n element: null,\n provider: { token: token, value: value, deps: depDefs },\n text: null,\n query: null,\n ngContent: null\n };\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nfunction createProviderInstance(view, def) {\n return _createProviderInstance(view, def);\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nfunction createPipeInstance(view, def) {\n // deps are looked up from component.\n var /** @type {?} */ compView = view;\n while (compView.parent && !isComponentView(compView)) {\n compView = compView.parent;\n }\n // pipes can see the private services of the component\n var /** @type {?} */ allowPrivateServices = true;\n // pipes are always eager and classes!\n return createClass(/** @type {?} */ ((compView.parent)), /** @type {?} */ ((viewParentEl(compView))), allowPrivateServices, /** @type {?} */ ((def.provider)).value, /** @type {?} */ ((def.provider)).deps);\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nfunction createDirectiveInstance(view, def) {\n // components can see other private services, other directives can't.\n var /** @type {?} */ allowPrivateServices = (def.flags & 32768 /* Component */) > 0;\n // directives are always eager and classes!\n var /** @type {?} */ instance = createClass(view, /** @type {?} */ ((def.parent)), allowPrivateServices, /** @type {?} */ ((def.provider)).value, /** @type {?} */ ((def.provider)).deps);\n if (def.outputs.length) {\n for (var /** @type {?} */ i = 0; i < def.outputs.length; i++) {\n var /** @type {?} */ output = def.outputs[i];\n var /** @type {?} */ subscription = instance[/** @type {?} */ ((output.propName))].subscribe(eventHandlerClosure(view, /** @type {?} */ ((def.parent)).nodeIndex, output.eventName)); /** @type {?} */\n ((view.disposables))[def.outputIndex + i] = subscription.unsubscribe.bind(subscription);\n }\n }\n return instance;\n}\n/**\n * @param {?} view\n * @param {?} index\n * @param {?} eventName\n * @return {?}\n */\nfunction eventHandlerClosure(view, index, eventName) {\n return function (event) { return dispatchEvent(view, index, eventName, event); };\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} v0\n * @param {?} v1\n * @param {?} v2\n * @param {?} v3\n * @param {?} v4\n * @param {?} v5\n * @param {?} v6\n * @param {?} v7\n * @param {?} v8\n * @param {?} v9\n * @return {?}\n */\nfunction checkAndUpdateDirectiveInline(view, def, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n var /** @type {?} */ providerData = asProviderData(view, def.nodeIndex);\n var /** @type {?} */ directive = providerData.instance;\n var /** @type {?} */ changed = false;\n var /** @type {?} */ changes = /** @type {?} */ ((undefined));\n var /** @type {?} */ bindLen = def.bindings.length;\n if (bindLen > 0 && checkBinding(view, def, 0, v0)) {\n changed = true;\n changes = updateProp(view, providerData, def, 0, v0, changes);\n }\n if (bindLen > 1 && checkBinding(view, def, 1, v1)) {\n changed = true;\n changes = updateProp(view, providerData, def, 1, v1, changes);\n }\n if (bindLen > 2 && checkBinding(view, def, 2, v2)) {\n changed = true;\n changes = updateProp(view, providerData, def, 2, v2, changes);\n }\n if (bindLen > 3 && checkBinding(view, def, 3, v3)) {\n changed = true;\n changes = updateProp(view, providerData, def, 3, v3, changes);\n }\n if (bindLen > 4 && checkBinding(view, def, 4, v4)) {\n changed = true;\n changes = updateProp(view, providerData, def, 4, v4, changes);\n }\n if (bindLen > 5 && checkBinding(view, def, 5, v5)) {\n changed = true;\n changes = updateProp(view, providerData, def, 5, v5, changes);\n }\n if (bindLen > 6 && checkBinding(view, def, 6, v6)) {\n changed = true;\n changes = updateProp(view, providerData, def, 6, v6, changes);\n }\n if (bindLen > 7 && checkBinding(view, def, 7, v7)) {\n changed = true;\n changes = updateProp(view, providerData, def, 7, v7, changes);\n }\n if (bindLen > 8 && checkBinding(view, def, 8, v8)) {\n changed = true;\n changes = updateProp(view, providerData, def, 8, v8, changes);\n }\n if (bindLen > 9 && checkBinding(view, def, 9, v9)) {\n changed = true;\n changes = updateProp(view, providerData, def, 9, v9, changes);\n }\n if (changes) {\n directive.ngOnChanges(changes);\n }\n if ((def.flags & 65536 /* OnInit */) &&\n shouldCallLifecycleInitHook(view, 256 /* InitState_CallingOnInit */, def.nodeIndex)) {\n directive.ngOnInit();\n }\n if (def.flags & 262144 /* DoCheck */) {\n directive.ngDoCheck();\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} values\n * @return {?}\n */\nfunction checkAndUpdateDirectiveDynamic(view, def, values) {\n var /** @type {?} */ providerData = asProviderData(view, def.nodeIndex);\n var /** @type {?} */ directive = providerData.instance;\n var /** @type {?} */ changed = false;\n var /** @type {?} */ changes = /** @type {?} */ ((undefined));\n for (var /** @type {?} */ i = 0; i < values.length; i++) {\n if (checkBinding(view, def, i, values[i])) {\n changed = true;\n changes = updateProp(view, providerData, def, i, values[i], changes);\n }\n }\n if (changes) {\n directive.ngOnChanges(changes);\n }\n if ((def.flags & 65536 /* OnInit */) &&\n shouldCallLifecycleInitHook(view, 256 /* InitState_CallingOnInit */, def.nodeIndex)) {\n directive.ngOnInit();\n }\n if (def.flags & 262144 /* DoCheck */) {\n directive.ngDoCheck();\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nfunction _createProviderInstance(view, def) {\n // private services can see other private services\n var /** @type {?} */ allowPrivateServices = (def.flags & 8192 /* PrivateProvider */) > 0;\n var /** @type {?} */ providerDef = def.provider;\n switch (def.flags & 201347067 /* Types */) {\n case 512 /* TypeClassProvider */:\n return createClass(view, /** @type {?} */ ((def.parent)), allowPrivateServices, /** @type {?} */ ((providerDef)).value, /** @type {?} */ ((providerDef)).deps);\n case 1024 /* TypeFactoryProvider */:\n return callFactory(view, /** @type {?} */ ((def.parent)), allowPrivateServices, /** @type {?} */ ((providerDef)).value, /** @type {?} */ ((providerDef)).deps);\n case 2048 /* TypeUseExistingProvider */:\n return resolveDep(view, /** @type {?} */ ((def.parent)), allowPrivateServices, /** @type {?} */ ((providerDef)).deps[0]);\n case 256 /* TypeValueProvider */:\n return /** @type {?} */ ((providerDef)).value;\n }\n}\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} allowPrivateServices\n * @param {?} ctor\n * @param {?} deps\n * @return {?}\n */\nfunction createClass(view, elDef, allowPrivateServices, ctor, deps) {\n var /** @type {?} */ len = deps.length;\n switch (len) {\n case 0:\n return new ctor();\n case 1:\n return new ctor(resolveDep(view, elDef, allowPrivateServices, deps[0]));\n case 2:\n return new ctor(resolveDep(view, elDef, allowPrivateServices, deps[0]), resolveDep(view, elDef, allowPrivateServices, deps[1]));\n case 3:\n return new ctor(resolveDep(view, elDef, allowPrivateServices, deps[0]), resolveDep(view, elDef, allowPrivateServices, deps[1]), resolveDep(view, elDef, allowPrivateServices, deps[2]));\n default:\n var /** @type {?} */ depValues = new Array(len);\n for (var /** @type {?} */ i = 0; i < len; i++) {\n depValues[i] = resolveDep(view, elDef, allowPrivateServices, deps[i]);\n }\n return new (ctor.bind.apply(ctor, [void 0].concat(depValues)))();\n }\n}\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} allowPrivateServices\n * @param {?} factory\n * @param {?} deps\n * @return {?}\n */\nfunction callFactory(view, elDef, allowPrivateServices, factory, deps) {\n var /** @type {?} */ len = deps.length;\n switch (len) {\n case 0:\n return factory();\n case 1:\n return factory(resolveDep(view, elDef, allowPrivateServices, deps[0]));\n case 2:\n return factory(resolveDep(view, elDef, allowPrivateServices, deps[0]), resolveDep(view, elDef, allowPrivateServices, deps[1]));\n case 3:\n return factory(resolveDep(view, elDef, allowPrivateServices, deps[0]), resolveDep(view, elDef, allowPrivateServices, deps[1]), resolveDep(view, elDef, allowPrivateServices, deps[2]));\n default:\n var /** @type {?} */ depValues = Array(len);\n for (var /** @type {?} */ i = 0; i < len; i++) {\n depValues[i] = resolveDep(view, elDef, allowPrivateServices, deps[i]);\n }\n return factory.apply(void 0, depValues);\n }\n}\n// This default value is when checking the hierarchy for a token.\n//\n// It means both:\n// - the token is not provided by the current injector,\n// - only the element injectors should be checked (ie do not check module injectors\n//\n// mod1\n// /\n// el1 mod2\n// \\ /\n// el2\n//\n// When requesting el2.injector.get(token), we should check in the following order and return the\n// first found value:\n// - el2.injector.get(token, default)\n// - el1.injector.get(token, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR) -> do not check the module\n// - mod2.injector.get(token, default)\nvar NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR = {};\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} allowPrivateServices\n * @param {?} depDef\n * @param {?=} notFoundValue\n * @return {?}\n */\nfunction resolveDep(view, elDef, allowPrivateServices, depDef, notFoundValue) {\n if (notFoundValue === void 0) { notFoundValue = Injector.THROW_IF_NOT_FOUND; }\n if (depDef.flags & 8 /* Value */) {\n return depDef.token;\n }\n var /** @type {?} */ startView = view;\n if (depDef.flags & 2 /* Optional */) {\n notFoundValue = null;\n }\n var /** @type {?} */ tokenKey$$1 = depDef.tokenKey;\n if (tokenKey$$1 === ChangeDetectorRefTokenKey) {\n // directives on the same element as a component should be able to control the change detector\n // of that component as well.\n allowPrivateServices = !!(elDef && /** @type {?} */ ((elDef.element)).componentView);\n }\n if (elDef && (depDef.flags & 1 /* SkipSelf */)) {\n allowPrivateServices = false;\n elDef = /** @type {?} */ ((elDef.parent));\n }\n while (view) {\n if (elDef) {\n switch (tokenKey$$1) {\n case RendererV1TokenKey: {\n var /** @type {?} */ compView = findCompView(view, elDef, allowPrivateServices);\n return createRendererV1(compView);\n }\n case Renderer2TokenKey: {\n var /** @type {?} */ compView = findCompView(view, elDef, allowPrivateServices);\n return compView.renderer;\n }\n case ElementRefTokenKey:\n return new ElementRef(asElementData(view, elDef.nodeIndex).renderElement);\n case ViewContainerRefTokenKey:\n return asElementData(view, elDef.nodeIndex).viewContainer;\n case TemplateRefTokenKey: {\n if (/** @type {?} */ ((elDef.element)).template) {\n return asElementData(view, elDef.nodeIndex).template;\n }\n break;\n }\n case ChangeDetectorRefTokenKey: {\n var /** @type {?} */ cdView = findCompView(view, elDef, allowPrivateServices);\n return createChangeDetectorRef(cdView);\n }\n case InjectorRefTokenKey:\n return createInjector(view, elDef);\n default:\n var /** @type {?} */ providerDef_1 = /** @type {?} */ (((allowPrivateServices ? /** @type {?} */ ((elDef.element)).allProviders : /** @type {?} */ ((elDef.element)).publicProviders)))[tokenKey$$1];\n if (providerDef_1) {\n var /** @type {?} */ providerData = asProviderData(view, providerDef_1.nodeIndex);\n if (!providerData) {\n providerData = { instance: _createProviderInstance(view, providerDef_1) };\n view.nodes[providerDef_1.nodeIndex] = /** @type {?} */ (providerData);\n }\n return providerData.instance;\n }\n }\n }\n allowPrivateServices = isComponentView(view);\n elDef = /** @type {?} */ ((viewParentEl(view)));\n view = /** @type {?} */ ((view.parent));\n }\n var /** @type {?} */ value = startView.root.injector.get(depDef.token, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR);\n if (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR ||\n notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR) {\n // Return the value from the root element injector when\n // - it provides it\n // (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)\n // - the module injector should not be checked\n // (notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)\n return value;\n }\n return startView.root.ngModule.injector.get(depDef.token, notFoundValue);\n}\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} allowPrivateServices\n * @return {?}\n */\nfunction findCompView(view, elDef, allowPrivateServices) {\n var /** @type {?} */ compView;\n if (allowPrivateServices) {\n compView = asElementData(view, elDef.nodeIndex).componentView;\n }\n else {\n compView = view;\n while (compView.parent && !isComponentView(compView)) {\n compView = compView.parent;\n }\n }\n return compView;\n}\n/**\n * @param {?} view\n * @param {?} providerData\n * @param {?} def\n * @param {?} bindingIdx\n * @param {?} value\n * @param {?} changes\n * @return {?}\n */\nfunction updateProp(view, providerData, def, bindingIdx, value, changes) {\n if (def.flags & 32768 /* Component */) {\n var /** @type {?} */ compView = asElementData(view, /** @type {?} */ ((def.parent)).nodeIndex).componentView;\n if (compView.def.flags & 2 /* OnPush */) {\n compView.state |= 8 /* ChecksEnabled */;\n }\n }\n var /** @type {?} */ binding = def.bindings[bindingIdx];\n var /** @type {?} */ propName = /** @type {?} */ ((binding.name));\n // Note: This is still safe with Closure Compiler as\n // the user passed in the property name as an object has to `providerDef`,\n // so Closure Compiler will have renamed the property correctly already.\n providerData.instance[propName] = value;\n if (def.flags & 524288 /* OnChanges */) {\n changes = changes || {};\n var /** @type {?} */ oldValue = WrappedValue.unwrap(view.oldValues[def.bindingIndex + bindingIdx]);\n var /** @type {?} */ binding_1 = def.bindings[bindingIdx];\n changes[/** @type {?} */ ((binding_1.nonMinifiedName))] =\n new SimpleChange(oldValue, value, (view.state & 2 /* FirstCheck */) !== 0);\n }\n view.oldValues[def.bindingIndex + bindingIdx] = value;\n return changes;\n}\n/**\n * @param {?} view\n * @param {?} lifecycles\n * @return {?}\n */\nfunction callLifecycleHooksChildrenFirst(view, lifecycles) {\n if (!(view.def.nodeFlags & lifecycles)) {\n return;\n }\n var /** @type {?} */ nodes = view.def.nodes;\n var /** @type {?} */ initIndex = 0;\n for (var /** @type {?} */ i = 0; i < nodes.length; i++) {\n var /** @type {?} */ nodeDef = nodes[i];\n var /** @type {?} */ parent_1 = nodeDef.parent;\n if (!parent_1 && nodeDef.flags & lifecycles) {\n // matching root node (e.g. a pipe)\n callProviderLifecycles(view, i, nodeDef.flags & lifecycles, initIndex++);\n }\n if ((nodeDef.childFlags & lifecycles) === 0) {\n // no child matches one of the lifecycles\n i += nodeDef.childCount;\n }\n while (parent_1 && (parent_1.flags & 1 /* TypeElement */) &&\n i === parent_1.nodeIndex + parent_1.childCount) {\n // last child of an element\n if (parent_1.directChildFlags & lifecycles) {\n initIndex = callElementProvidersLifecycles(view, parent_1, lifecycles, initIndex);\n }\n parent_1 = parent_1.parent;\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} lifecycles\n * @param {?} initIndex\n * @return {?}\n */\nfunction callElementProvidersLifecycles(view, elDef, lifecycles, initIndex) {\n for (var /** @type {?} */ i = elDef.nodeIndex + 1; i <= elDef.nodeIndex + elDef.childCount; i++) {\n var /** @type {?} */ nodeDef = view.def.nodes[i];\n if (nodeDef.flags & lifecycles) {\n callProviderLifecycles(view, i, nodeDef.flags & lifecycles, initIndex++);\n }\n // only visit direct children\n i += nodeDef.childCount;\n }\n return initIndex;\n}\n/**\n * @param {?} view\n * @param {?} index\n * @param {?} lifecycles\n * @param {?} initIndex\n * @return {?}\n */\nfunction callProviderLifecycles(view, index, lifecycles, initIndex) {\n var /** @type {?} */ providerData = asProviderData(view, index);\n if (!providerData) {\n return;\n }\n var /** @type {?} */ provider = providerData.instance;\n if (!provider) {\n return;\n }\n Services.setCurrentNode(view, index);\n if (lifecycles & 1048576 /* AfterContentInit */ &&\n shouldCallLifecycleInitHook(view, 512 /* InitState_CallingAfterContentInit */, initIndex)) {\n provider.ngAfterContentInit();\n }\n if (lifecycles & 2097152 /* AfterContentChecked */) {\n provider.ngAfterContentChecked();\n }\n if (lifecycles & 4194304 /* AfterViewInit */ &&\n shouldCallLifecycleInitHook(view, 768 /* InitState_CallingAfterViewInit */, initIndex)) {\n provider.ngAfterViewInit();\n }\n if (lifecycles & 8388608 /* AfterViewChecked */) {\n provider.ngAfterViewChecked();\n }\n if (lifecycles & 131072 /* OnDestroy */) {\n provider.ngOnDestroy();\n }\n}\n\n/**\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 * @param {?} flags\n * @param {?} id\n * @param {?} bindings\n * @return {?}\n */\nfunction queryDef(flags, id, bindings) {\n var /** @type {?} */ bindingDefs = [];\n for (var /** @type {?} */ propName in bindings) {\n var /** @type {?} */ bindingType = bindings[propName];\n bindingDefs.push({ propName: propName, bindingType: bindingType });\n }\n return {\n // will bet set by the view definition\n nodeIndex: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n // TODO(vicb): check\n checkIndex: -1, flags: flags,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0,\n ngContentIndex: -1,\n matchedQueries: {},\n matchedQueryIds: 0,\n references: {},\n childCount: 0,\n bindings: [],\n bindingFlags: 0,\n outputs: [],\n element: null,\n provider: null,\n text: null,\n query: { id: id, filterId: filterQueryId(id), bindings: bindingDefs },\n ngContent: null\n };\n}\n/**\n * @return {?}\n */\nfunction createQuery() {\n return new QueryList();\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction dirtyParentQueries(view) {\n var /** @type {?} */ queryIds = view.def.nodeMatchedQueries;\n while (view.parent && isEmbeddedView(view)) {\n var /** @type {?} */ tplDef = /** @type {?} */ ((view.parentNodeDef));\n view = view.parent;\n // content queries\n var /** @type {?} */ end = tplDef.nodeIndex + tplDef.childCount;\n for (var /** @type {?} */ i = 0; i <= end; i++) {\n var /** @type {?} */ nodeDef = view.def.nodes[i];\n if ((nodeDef.flags & 67108864 /* TypeContentQuery */) &&\n (nodeDef.flags & 536870912 /* DynamicQuery */) &&\n (/** @type {?} */ ((nodeDef.query)).filterId & queryIds) === /** @type {?} */ ((nodeDef.query)).filterId) {\n asQueryList(view, i).setDirty();\n }\n if ((nodeDef.flags & 1 /* TypeElement */ && i + nodeDef.childCount < tplDef.nodeIndex) ||\n !(nodeDef.childFlags & 67108864 /* TypeContentQuery */) ||\n !(nodeDef.childFlags & 536870912 /* DynamicQuery */)) {\n // skip elements that don't contain the template element or no query.\n i += nodeDef.childCount;\n }\n }\n }\n // view queries\n if (view.def.nodeFlags & 134217728 /* TypeViewQuery */) {\n for (var /** @type {?} */ i = 0; i < view.def.nodes.length; i++) {\n var /** @type {?} */ nodeDef = view.def.nodes[i];\n if ((nodeDef.flags & 134217728 /* TypeViewQuery */) && (nodeDef.flags & 536870912 /* DynamicQuery */)) {\n asQueryList(view, i).setDirty();\n }\n // only visit the root nodes\n i += nodeDef.childCount;\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @return {?}\n */\nfunction checkAndUpdateQuery(view, nodeDef) {\n var /** @type {?} */ queryList = asQueryList(view, nodeDef.nodeIndex);\n if (!queryList.dirty) {\n return;\n }\n var /** @type {?} */ directiveInstance;\n var /** @type {?} */ newValues = /** @type {?} */ ((undefined));\n if (nodeDef.flags & 67108864 /* TypeContentQuery */) {\n var /** @type {?} */ elementDef = /** @type {?} */ ((/** @type {?} */ ((nodeDef.parent)).parent));\n newValues = calcQueryValues(view, elementDef.nodeIndex, elementDef.nodeIndex + elementDef.childCount, /** @type {?} */ ((nodeDef.query)), []);\n directiveInstance = asProviderData(view, /** @type {?} */ ((nodeDef.parent)).nodeIndex).instance;\n }\n else if (nodeDef.flags & 134217728 /* TypeViewQuery */) {\n newValues = calcQueryValues(view, 0, view.def.nodes.length - 1, /** @type {?} */ ((nodeDef.query)), []);\n directiveInstance = view.component;\n }\n queryList.reset(newValues);\n var /** @type {?} */ bindings = /** @type {?} */ ((nodeDef.query)).bindings;\n var /** @type {?} */ notify = false;\n for (var /** @type {?} */ i = 0; i < bindings.length; i++) {\n var /** @type {?} */ binding = bindings[i];\n var /** @type {?} */ boundValue = void 0;\n switch (binding.bindingType) {\n case 0 /* First */:\n boundValue = queryList.first;\n break;\n case 1 /* All */:\n boundValue = queryList;\n notify = true;\n break;\n }\n directiveInstance[binding.propName] = boundValue;\n }\n if (notify) {\n queryList.notifyOnChanges();\n }\n}\n/**\n * @param {?} view\n * @param {?} startIndex\n * @param {?} endIndex\n * @param {?} queryDef\n * @param {?} values\n * @return {?}\n */\nfunction calcQueryValues(view, startIndex, endIndex, queryDef, values) {\n for (var /** @type {?} */ i = startIndex; i <= endIndex; i++) {\n var /** @type {?} */ nodeDef = view.def.nodes[i];\n var /** @type {?} */ valueType = nodeDef.matchedQueries[queryDef.id];\n if (valueType != null) {\n values.push(getQueryValue(view, nodeDef, valueType));\n }\n if (nodeDef.flags & 1 /* TypeElement */ && /** @type {?} */ ((nodeDef.element)).template &&\n (/** @type {?} */ ((/** @type {?} */ ((nodeDef.element)).template)).nodeMatchedQueries & queryDef.filterId) ===\n queryDef.filterId) {\n var /** @type {?} */ elementData = asElementData(view, i);\n // check embedded views that were attached at the place of their template,\n // but process child nodes first if some match the query (see issue #16568)\n if ((nodeDef.childMatchedQueries & queryDef.filterId) === queryDef.filterId) {\n calcQueryValues(view, i + 1, i + nodeDef.childCount, queryDef, values);\n i += nodeDef.childCount;\n }\n if (nodeDef.flags & 16777216 /* EmbeddedViews */) {\n var /** @type {?} */ embeddedViews = /** @type {?} */ ((elementData.viewContainer))._embeddedViews;\n for (var /** @type {?} */ k = 0; k < embeddedViews.length; k++) {\n var /** @type {?} */ embeddedView = embeddedViews[k];\n var /** @type {?} */ dvc = declaredViewContainer(embeddedView);\n if (dvc && dvc === elementData) {\n calcQueryValues(embeddedView, 0, embeddedView.def.nodes.length - 1, queryDef, values);\n }\n }\n }\n var /** @type {?} */ projectedViews = elementData.template._projectedViews;\n if (projectedViews) {\n for (var /** @type {?} */ k = 0; k < projectedViews.length; k++) {\n var /** @type {?} */ projectedView = projectedViews[k];\n calcQueryValues(projectedView, 0, projectedView.def.nodes.length - 1, queryDef, values);\n }\n }\n }\n if ((nodeDef.childMatchedQueries & queryDef.filterId) !== queryDef.filterId) {\n // if no child matches the query, skip the children.\n i += nodeDef.childCount;\n }\n }\n return values;\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} queryValueType\n * @return {?}\n */\nfunction getQueryValue(view, nodeDef, queryValueType) {\n if (queryValueType != null) {\n // a match\n switch (queryValueType) {\n case 1 /* RenderElement */:\n return asElementData(view, nodeDef.nodeIndex).renderElement;\n case 0 /* ElementRef */:\n return new ElementRef(asElementData(view, nodeDef.nodeIndex).renderElement);\n case 2 /* TemplateRef */:\n return asElementData(view, nodeDef.nodeIndex).template;\n case 3 /* ViewContainerRef */:\n return asElementData(view, nodeDef.nodeIndex).viewContainer;\n case 4 /* Provider */:\n return asProviderData(view, nodeDef.nodeIndex).instance;\n }\n }\n}\n\n/**\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 * @param {?} ngContentIndex\n * @param {?} index\n * @return {?}\n */\nfunction ngContentDef(ngContentIndex, index) {\n return {\n // will bet set by the view definition\n nodeIndex: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n checkIndex: -1,\n flags: 8 /* TypeNgContent */,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0,\n matchedQueries: {},\n matchedQueryIds: 0,\n references: {}, ngContentIndex: ngContentIndex,\n childCount: 0,\n bindings: [],\n bindingFlags: 0,\n outputs: [],\n element: null,\n provider: null,\n text: null,\n query: null,\n ngContent: { index: index }\n };\n}\n/**\n * @param {?} view\n * @param {?} renderHost\n * @param {?} def\n * @return {?}\n */\nfunction appendNgContent(view, renderHost, def) {\n var /** @type {?} */ parentEl = getParentRenderElement(view, renderHost, def);\n if (!parentEl) {\n // Nothing to do if there is no parent element.\n return;\n }\n var /** @type {?} */ ngContentIndex = /** @type {?} */ ((def.ngContent)).index;\n visitProjectedRenderNodes(view, ngContentIndex, 1 /* AppendChild */, parentEl, null, undefined);\n}\n\n/**\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 * @param {?} checkIndex\n * @param {?} argCount\n * @return {?}\n */\nfunction purePipeDef(checkIndex, argCount) {\n // argCount + 1 to include the pipe as first arg\n return _pureExpressionDef(128 /* TypePurePipe */, checkIndex, new Array(argCount + 1));\n}\n/**\n * @param {?} checkIndex\n * @param {?} argCount\n * @return {?}\n */\nfunction pureArrayDef(checkIndex, argCount) {\n return _pureExpressionDef(32 /* TypePureArray */, checkIndex, new Array(argCount));\n}\n/**\n * @param {?} checkIndex\n * @param {?} propToIndex\n * @return {?}\n */\nfunction pureObjectDef(checkIndex, propToIndex) {\n var /** @type {?} */ keys = Object.keys(propToIndex);\n var /** @type {?} */ nbKeys = keys.length;\n var /** @type {?} */ propertyNames = new Array(nbKeys);\n for (var /** @type {?} */ i = 0; i < nbKeys; i++) {\n var /** @type {?} */ key = keys[i];\n var /** @type {?} */ index = propToIndex[key];\n propertyNames[index] = key;\n }\n return _pureExpressionDef(64 /* TypePureObject */, checkIndex, propertyNames);\n}\n/**\n * @param {?} flags\n * @param {?} checkIndex\n * @param {?} propertyNames\n * @return {?}\n */\nfunction _pureExpressionDef(flags, checkIndex, propertyNames) {\n var /** @type {?} */ bindings = new Array(propertyNames.length);\n for (var /** @type {?} */ i = 0; i < propertyNames.length; i++) {\n var /** @type {?} */ prop = propertyNames[i];\n bindings[i] = {\n flags: 8 /* TypeProperty */,\n name: prop,\n ns: null,\n nonMinifiedName: prop,\n securityContext: null,\n suffix: null\n };\n }\n return {\n // will bet set by the view definition\n nodeIndex: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n checkIndex: checkIndex,\n flags: flags,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0,\n matchedQueries: {},\n matchedQueryIds: 0,\n references: {},\n ngContentIndex: -1,\n childCount: 0, bindings: bindings,\n bindingFlags: calcBindingFlags(bindings),\n outputs: [],\n element: null,\n provider: null,\n text: null,\n query: null,\n ngContent: null\n };\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nfunction createPureExpression(view, def) {\n return { value: undefined };\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} v0\n * @param {?} v1\n * @param {?} v2\n * @param {?} v3\n * @param {?} v4\n * @param {?} v5\n * @param {?} v6\n * @param {?} v7\n * @param {?} v8\n * @param {?} v9\n * @return {?}\n */\nfunction checkAndUpdatePureExpressionInline(view, def, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n var /** @type {?} */ bindings = def.bindings;\n var /** @type {?} */ changed = false;\n var /** @type {?} */ bindLen = bindings.length;\n if (bindLen > 0 && checkAndUpdateBinding(view, def, 0, v0))\n changed = true;\n if (bindLen > 1 && checkAndUpdateBinding(view, def, 1, v1))\n changed = true;\n if (bindLen > 2 && checkAndUpdateBinding(view, def, 2, v2))\n changed = true;\n if (bindLen > 3 && checkAndUpdateBinding(view, def, 3, v3))\n changed = true;\n if (bindLen > 4 && checkAndUpdateBinding(view, def, 4, v4))\n changed = true;\n if (bindLen > 5 && checkAndUpdateBinding(view, def, 5, v5))\n changed = true;\n if (bindLen > 6 && checkAndUpdateBinding(view, def, 6, v6))\n changed = true;\n if (bindLen > 7 && checkAndUpdateBinding(view, def, 7, v7))\n changed = true;\n if (bindLen > 8 && checkAndUpdateBinding(view, def, 8, v8))\n changed = true;\n if (bindLen > 9 && checkAndUpdateBinding(view, def, 9, v9))\n changed = true;\n if (changed) {\n var /** @type {?} */ data = asPureExpressionData(view, def.nodeIndex);\n var /** @type {?} */ value = void 0;\n switch (def.flags & 201347067 /* Types */) {\n case 32 /* TypePureArray */:\n value = new Array(bindings.length);\n if (bindLen > 0)\n value[0] = v0;\n if (bindLen > 1)\n value[1] = v1;\n if (bindLen > 2)\n value[2] = v2;\n if (bindLen > 3)\n value[3] = v3;\n if (bindLen > 4)\n value[4] = v4;\n if (bindLen > 5)\n value[5] = v5;\n if (bindLen > 6)\n value[6] = v6;\n if (bindLen > 7)\n value[7] = v7;\n if (bindLen > 8)\n value[8] = v8;\n if (bindLen > 9)\n value[9] = v9;\n break;\n case 64 /* TypePureObject */:\n value = {};\n if (bindLen > 0)\n value[/** @type {?} */ ((bindings[0].name))] = v0;\n if (bindLen > 1)\n value[/** @type {?} */ ((bindings[1].name))] = v1;\n if (bindLen > 2)\n value[/** @type {?} */ ((bindings[2].name))] = v2;\n if (bindLen > 3)\n value[/** @type {?} */ ((bindings[3].name))] = v3;\n if (bindLen > 4)\n value[/** @type {?} */ ((bindings[4].name))] = v4;\n if (bindLen > 5)\n value[/** @type {?} */ ((bindings[5].name))] = v5;\n if (bindLen > 6)\n value[/** @type {?} */ ((bindings[6].name))] = v6;\n if (bindLen > 7)\n value[/** @type {?} */ ((bindings[7].name))] = v7;\n if (bindLen > 8)\n value[/** @type {?} */ ((bindings[8].name))] = v8;\n if (bindLen > 9)\n value[/** @type {?} */ ((bindings[9].name))] = v9;\n break;\n case 128 /* TypePurePipe */:\n var /** @type {?} */ pipe = v0;\n switch (bindLen) {\n case 1:\n value = pipe.transform(v0);\n break;\n case 2:\n value = pipe.transform(v1);\n break;\n case 3:\n value = pipe.transform(v1, v2);\n break;\n case 4:\n value = pipe.transform(v1, v2, v3);\n break;\n case 5:\n value = pipe.transform(v1, v2, v3, v4);\n break;\n case 6:\n value = pipe.transform(v1, v2, v3, v4, v5);\n break;\n case 7:\n value = pipe.transform(v1, v2, v3, v4, v5, v6);\n break;\n case 8:\n value = pipe.transform(v1, v2, v3, v4, v5, v6, v7);\n break;\n case 9:\n value = pipe.transform(v1, v2, v3, v4, v5, v6, v7, v8);\n break;\n case 10:\n value = pipe.transform(v1, v2, v3, v4, v5, v6, v7, v8, v9);\n break;\n }\n break;\n }\n data.value = value;\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} values\n * @return {?}\n */\nfunction checkAndUpdatePureExpressionDynamic(view, def, values) {\n var /** @type {?} */ bindings = def.bindings;\n var /** @type {?} */ changed = false;\n for (var /** @type {?} */ i = 0; i < values.length; i++) {\n // Note: We need to loop over all values, so that\n // the old values are updates as well!\n if (checkAndUpdateBinding(view, def, i, values[i])) {\n changed = true;\n }\n }\n if (changed) {\n var /** @type {?} */ data = asPureExpressionData(view, def.nodeIndex);\n var /** @type {?} */ value = void 0;\n switch (def.flags & 201347067 /* Types */) {\n case 32 /* TypePureArray */:\n value = values;\n break;\n case 64 /* TypePureObject */:\n value = {};\n for (var /** @type {?} */ i = 0; i < values.length; i++) {\n value[/** @type {?} */ ((bindings[i].name))] = values[i];\n }\n break;\n case 128 /* TypePurePipe */:\n var /** @type {?} */ pipe = values[0];\n var /** @type {?} */ params = values.slice(1);\n value = pipe.transform.apply(pipe, params);\n break;\n }\n data.value = value;\n }\n return changed;\n}\n\n/**\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 * @param {?} checkIndex\n * @param {?} ngContentIndex\n * @param {?} staticText\n * @return {?}\n */\nfunction textDef(checkIndex, ngContentIndex, staticText) {\n var /** @type {?} */ bindings = new Array(staticText.length - 1);\n for (var /** @type {?} */ i = 1; i < staticText.length; i++) {\n bindings[i - 1] = {\n flags: 8 /* TypeProperty */,\n name: null,\n ns: null,\n nonMinifiedName: null,\n securityContext: null,\n suffix: staticText[i],\n };\n }\n return {\n // will bet set by the view definition\n nodeIndex: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n checkIndex: checkIndex,\n flags: 2 /* TypeText */,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0,\n matchedQueries: {},\n matchedQueryIds: 0,\n references: {}, ngContentIndex: ngContentIndex,\n childCount: 0, bindings: bindings,\n bindingFlags: 8 /* TypeProperty */,\n outputs: [],\n element: null,\n provider: null,\n text: { prefix: staticText[0] },\n query: null,\n ngContent: null,\n };\n}\n/**\n * @param {?} view\n * @param {?} renderHost\n * @param {?} def\n * @return {?}\n */\nfunction createText(view, renderHost, def) {\n var /** @type {?} */ renderNode$$1;\n var /** @type {?} */ renderer = view.renderer;\n renderNode$$1 = renderer.createText(/** @type {?} */ ((def.text)).prefix);\n var /** @type {?} */ parentEl = getParentRenderElement(view, renderHost, def);\n if (parentEl) {\n renderer.appendChild(parentEl, renderNode$$1);\n }\n return { renderText: renderNode$$1 };\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} v0\n * @param {?} v1\n * @param {?} v2\n * @param {?} v3\n * @param {?} v4\n * @param {?} v5\n * @param {?} v6\n * @param {?} v7\n * @param {?} v8\n * @param {?} v9\n * @return {?}\n */\nfunction checkAndUpdateTextInline(view, def, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n var /** @type {?} */ changed = false;\n var /** @type {?} */ bindings = def.bindings;\n var /** @type {?} */ bindLen = bindings.length;\n if (bindLen > 0 && checkAndUpdateBinding(view, def, 0, v0))\n changed = true;\n if (bindLen > 1 && checkAndUpdateBinding(view, def, 1, v1))\n changed = true;\n if (bindLen > 2 && checkAndUpdateBinding(view, def, 2, v2))\n changed = true;\n if (bindLen > 3 && checkAndUpdateBinding(view, def, 3, v3))\n changed = true;\n if (bindLen > 4 && checkAndUpdateBinding(view, def, 4, v4))\n changed = true;\n if (bindLen > 5 && checkAndUpdateBinding(view, def, 5, v5))\n changed = true;\n if (bindLen > 6 && checkAndUpdateBinding(view, def, 6, v6))\n changed = true;\n if (bindLen > 7 && checkAndUpdateBinding(view, def, 7, v7))\n changed = true;\n if (bindLen > 8 && checkAndUpdateBinding(view, def, 8, v8))\n changed = true;\n if (bindLen > 9 && checkAndUpdateBinding(view, def, 9, v9))\n changed = true;\n if (changed) {\n var /** @type {?} */ value = /** @type {?} */ ((def.text)).prefix;\n if (bindLen > 0)\n value += _addInterpolationPart(v0, bindings[0]);\n if (bindLen > 1)\n value += _addInterpolationPart(v1, bindings[1]);\n if (bindLen > 2)\n value += _addInterpolationPart(v2, bindings[2]);\n if (bindLen > 3)\n value += _addInterpolationPart(v3, bindings[3]);\n if (bindLen > 4)\n value += _addInterpolationPart(v4, bindings[4]);\n if (bindLen > 5)\n value += _addInterpolationPart(v5, bindings[5]);\n if (bindLen > 6)\n value += _addInterpolationPart(v6, bindings[6]);\n if (bindLen > 7)\n value += _addInterpolationPart(v7, bindings[7]);\n if (bindLen > 8)\n value += _addInterpolationPart(v8, bindings[8]);\n if (bindLen > 9)\n value += _addInterpolationPart(v9, bindings[9]);\n var /** @type {?} */ renderNode$$1 = asTextData(view, def.nodeIndex).renderText;\n view.renderer.setValue(renderNode$$1, value);\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} values\n * @return {?}\n */\nfunction checkAndUpdateTextDynamic(view, def, values) {\n var /** @type {?} */ bindings = def.bindings;\n var /** @type {?} */ changed = false;\n for (var /** @type {?} */ i = 0; i < values.length; i++) {\n // Note: We need to loop over all values, so that\n // the old values are updates as well!\n if (checkAndUpdateBinding(view, def, i, values[i])) {\n changed = true;\n }\n }\n if (changed) {\n var /** @type {?} */ value = '';\n for (var /** @type {?} */ i = 0; i < values.length; i++) {\n value = value + _addInterpolationPart(values[i], bindings[i]);\n }\n value = /** @type {?} */ ((def.text)).prefix + value;\n var /** @type {?} */ renderNode$$1 = asTextData(view, def.nodeIndex).renderText;\n view.renderer.setValue(renderNode$$1, value);\n }\n return changed;\n}\n/**\n * @param {?} value\n * @param {?} binding\n * @return {?}\n */\nfunction _addInterpolationPart(value, binding) {\n var /** @type {?} */ valueStr = value != null ? value.toString() : '';\n return valueStr + binding.suffix;\n}\n\n/**\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 * @param {?} flags\n * @param {?} nodes\n * @param {?=} updateDirectives\n * @param {?=} updateRenderer\n * @return {?}\n */\nfunction viewDef(flags, nodes, updateDirectives, updateRenderer) {\n // clone nodes and set auto calculated values\n var /** @type {?} */ viewBindingCount = 0;\n var /** @type {?} */ viewDisposableCount = 0;\n var /** @type {?} */ viewNodeFlags = 0;\n var /** @type {?} */ viewRootNodeFlags = 0;\n var /** @type {?} */ viewMatchedQueries = 0;\n var /** @type {?} */ currentParent = null;\n var /** @type {?} */ currentRenderParent = null;\n var /** @type {?} */ currentElementHasPublicProviders = false;\n var /** @type {?} */ currentElementHasPrivateProviders = false;\n var /** @type {?} */ lastRenderRootNode = null;\n for (var /** @type {?} */ i = 0; i < nodes.length; i++) {\n var /** @type {?} */ node = nodes[i];\n node.nodeIndex = i;\n node.parent = currentParent;\n node.bindingIndex = viewBindingCount;\n node.outputIndex = viewDisposableCount;\n node.renderParent = currentRenderParent;\n viewNodeFlags |= node.flags;\n viewMatchedQueries |= node.matchedQueryIds;\n if (node.element) {\n var /** @type {?} */ elDef = node.element;\n elDef.publicProviders =\n currentParent ? /** @type {?} */ ((currentParent.element)).publicProviders : Object.create(null);\n elDef.allProviders = elDef.publicProviders;\n // Note: We assume that all providers of an element are before any child element!\n currentElementHasPublicProviders = false;\n currentElementHasPrivateProviders = false;\n if (node.element.template) {\n viewMatchedQueries |= node.element.template.nodeMatchedQueries;\n }\n }\n validateNode(currentParent, node, nodes.length);\n viewBindingCount += node.bindings.length;\n viewDisposableCount += node.outputs.length;\n if (!currentRenderParent && (node.flags & 3 /* CatRenderNode */)) {\n lastRenderRootNode = node;\n }\n if (node.flags & 20224 /* CatProvider */) {\n if (!currentElementHasPublicProviders) {\n currentElementHasPublicProviders = true; /** @type {?} */\n ((/** @type {?} */ ((currentParent)).element)).publicProviders = Object.create(/** @type {?} */ ((/** @type {?} */ ((currentParent)).element)).publicProviders); /** @type {?} */\n ((/** @type {?} */ ((currentParent)).element)).allProviders = /** @type {?} */ ((/** @type {?} */ ((currentParent)).element)).publicProviders;\n }\n var /** @type {?} */ isPrivateService = (node.flags & 8192 /* PrivateProvider */) !== 0;\n var /** @type {?} */ isComponent = (node.flags & 32768 /* Component */) !== 0;\n if (!isPrivateService || isComponent) {\n /** @type {?} */ ((/** @type {?} */ ((/** @type {?} */ ((currentParent)).element)).publicProviders))[tokenKey(/** @type {?} */ ((node.provider)).token)] = node;\n }\n else {\n if (!currentElementHasPrivateProviders) {\n currentElementHasPrivateProviders = true; /** @type {?} */\n ((/** @type {?} */ ((currentParent)).element)).allProviders = Object.create(/** @type {?} */ ((/** @type {?} */ ((currentParent)).element)).publicProviders);\n } /** @type {?} */\n ((/** @type {?} */ ((/** @type {?} */ ((currentParent)).element)).allProviders))[tokenKey(/** @type {?} */ ((node.provider)).token)] = node;\n }\n if (isComponent) {\n /** @type {?} */ ((/** @type {?} */ ((currentParent)).element)).componentProvider = node;\n }\n }\n if (currentParent) {\n currentParent.childFlags |= node.flags;\n currentParent.directChildFlags |= node.flags;\n currentParent.childMatchedQueries |= node.matchedQueryIds;\n if (node.element && node.element.template) {\n currentParent.childMatchedQueries |= node.element.template.nodeMatchedQueries;\n }\n }\n else {\n viewRootNodeFlags |= node.flags;\n }\n if (node.childCount > 0) {\n currentParent = node;\n if (!isNgContainer(node)) {\n currentRenderParent = node;\n }\n }\n else {\n // When the current node has no children, check if it is the last children of its parent.\n // When it is, propagate the flags up.\n // The loop is required because an element could be the last transitive children of several\n // elements. We loop to either the root or the highest opened element (= with remaining\n // children)\n while (currentParent && i === currentParent.nodeIndex + currentParent.childCount) {\n var /** @type {?} */ newParent = currentParent.parent;\n if (newParent) {\n newParent.childFlags |= currentParent.childFlags;\n newParent.childMatchedQueries |= currentParent.childMatchedQueries;\n }\n currentParent = newParent;\n // We also need to update the render parent & account for ng-container\n if (currentParent && isNgContainer(currentParent)) {\n currentRenderParent = currentParent.renderParent;\n }\n else {\n currentRenderParent = currentParent;\n }\n }\n }\n }\n var /** @type {?} */ handleEvent = function (view, nodeIndex, eventName, event) { return ((/** @type {?} */ ((nodes[nodeIndex].element)).handleEvent))(view, eventName, event); };\n return {\n // Will be filled later...\n factory: null,\n nodeFlags: viewNodeFlags,\n rootNodeFlags: viewRootNodeFlags,\n nodeMatchedQueries: viewMatchedQueries, flags: flags,\n nodes: nodes,\n updateDirectives: updateDirectives || NOOP,\n updateRenderer: updateRenderer || NOOP, handleEvent: handleEvent,\n bindingCount: viewBindingCount,\n outputCount: viewDisposableCount, lastRenderRootNode: lastRenderRootNode\n };\n}\n/**\n * @param {?} node\n * @return {?}\n */\nfunction isNgContainer(node) {\n return (node.flags & 1 /* TypeElement */) !== 0 && /** @type {?} */ ((node.element)).name === null;\n}\n/**\n * @param {?} parent\n * @param {?} node\n * @param {?} nodeCount\n * @return {?}\n */\nfunction validateNode(parent, node, nodeCount) {\n var /** @type {?} */ template = node.element && node.element.template;\n if (template) {\n if (!template.lastRenderRootNode) {\n throw new Error(\"Illegal State: Embedded templates without nodes are not allowed!\");\n }\n if (template.lastRenderRootNode &&\n template.lastRenderRootNode.flags & 16777216 /* EmbeddedViews */) {\n throw new Error(\"Illegal State: Last root node of a template can't have embedded views, at index \" + node.nodeIndex + \"!\");\n }\n }\n if (node.flags & 20224 /* CatProvider */) {\n var /** @type {?} */ parentFlags = parent ? parent.flags : 0;\n if ((parentFlags & 1 /* TypeElement */) === 0) {\n throw new Error(\"Illegal State: StaticProvider/Directive nodes need to be children of elements or anchors, at index \" + node.nodeIndex + \"!\");\n }\n }\n if (node.query) {\n if (node.flags & 67108864 /* TypeContentQuery */ &&\n (!parent || (parent.flags & 16384 /* TypeDirective */) === 0)) {\n throw new Error(\"Illegal State: Content Query nodes need to be children of directives, at index \" + node.nodeIndex + \"!\");\n }\n if (node.flags & 134217728 /* TypeViewQuery */ && parent) {\n throw new Error(\"Illegal State: View Query nodes have to be top level nodes, at index \" + node.nodeIndex + \"!\");\n }\n }\n if (node.childCount) {\n var /** @type {?} */ parentEnd = parent ? parent.nodeIndex + parent.childCount : nodeCount - 1;\n if (node.nodeIndex <= parentEnd && node.nodeIndex + node.childCount > parentEnd) {\n throw new Error(\"Illegal State: childCount of node leads outside of parent, at index \" + node.nodeIndex + \"!\");\n }\n }\n}\n/**\n * @param {?} parent\n * @param {?} anchorDef\n * @param {?} viewDef\n * @param {?=} context\n * @return {?}\n */\nfunction createEmbeddedView(parent, anchorDef$$1, viewDef, context) {\n // embedded views are seen as siblings to the anchor, so we need\n // to get the parent of the anchor and use it as parentIndex.\n var /** @type {?} */ view = createView(parent.root, parent.renderer, parent, anchorDef$$1, viewDef);\n initView(view, parent.component, context);\n createViewNodes(view);\n return view;\n}\n/**\n * @param {?} root\n * @param {?} def\n * @param {?=} context\n * @return {?}\n */\nfunction createRootView(root, def, context) {\n var /** @type {?} */ view = createView(root, root.renderer, null, null, def);\n initView(view, context, context);\n createViewNodes(view);\n return view;\n}\n/**\n * @param {?} parentView\n * @param {?} nodeDef\n * @param {?} viewDef\n * @param {?} hostElement\n * @return {?}\n */\nfunction createComponentView(parentView, nodeDef, viewDef, hostElement) {\n var /** @type {?} */ rendererType = /** @type {?} */ ((nodeDef.element)).componentRendererType;\n var /** @type {?} */ compRenderer;\n if (!rendererType) {\n compRenderer = parentView.root.renderer;\n }\n else {\n compRenderer = parentView.root.rendererFactory.createRenderer(hostElement, rendererType);\n }\n return createView(parentView.root, compRenderer, parentView, /** @type {?} */ ((nodeDef.element)).componentProvider, viewDef);\n}\n/**\n * @param {?} root\n * @param {?} renderer\n * @param {?} parent\n * @param {?} parentNodeDef\n * @param {?} def\n * @return {?}\n */\nfunction createView(root, renderer, parent, parentNodeDef, def) {\n var /** @type {?} */ nodes = new Array(def.nodes.length);\n var /** @type {?} */ disposables = def.outputCount ? new Array(def.outputCount) : null;\n var /** @type {?} */ view = {\n def: def,\n parent: parent,\n viewContainerParent: null, parentNodeDef: parentNodeDef,\n context: null,\n component: null, nodes: nodes,\n state: 13 /* CatInit */, root: root, renderer: renderer,\n oldValues: new Array(def.bindingCount), disposables: disposables,\n initIndex: -1\n };\n return view;\n}\n/**\n * @param {?} view\n * @param {?} component\n * @param {?} context\n * @return {?}\n */\nfunction initView(view, component, context) {\n view.component = component;\n view.context = context;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction createViewNodes(view) {\n var /** @type {?} */ renderHost;\n if (isComponentView(view)) {\n var /** @type {?} */ hostDef = view.parentNodeDef;\n renderHost = asElementData(/** @type {?} */ ((view.parent)), /** @type {?} */ ((/** @type {?} */ ((hostDef)).parent)).nodeIndex).renderElement;\n }\n var /** @type {?} */ def = view.def;\n var /** @type {?} */ nodes = view.nodes;\n for (var /** @type {?} */ i = 0; i < def.nodes.length; i++) {\n var /** @type {?} */ nodeDef = def.nodes[i];\n Services.setCurrentNode(view, i);\n var /** @type {?} */ nodeData = void 0;\n switch (nodeDef.flags & 201347067 /* Types */) {\n case 1 /* TypeElement */:\n var /** @type {?} */ el = /** @type {?} */ (createElement(view, renderHost, nodeDef));\n var /** @type {?} */ componentView = /** @type {?} */ ((undefined));\n if (nodeDef.flags & 33554432 /* ComponentView */) {\n var /** @type {?} */ compViewDef = resolveDefinition(/** @type {?} */ ((/** @type {?} */ ((nodeDef.element)).componentView)));\n componentView = Services.createComponentView(view, nodeDef, compViewDef, el);\n }\n listenToElementOutputs(view, componentView, nodeDef, el);\n nodeData = /** @type {?} */ ({\n renderElement: el,\n componentView: componentView,\n viewContainer: null,\n template: /** @type {?} */ ((nodeDef.element)).template ? createTemplateData(view, nodeDef) : undefined\n });\n if (nodeDef.flags & 16777216 /* EmbeddedViews */) {\n nodeData.viewContainer = createViewContainerData(view, nodeDef, nodeData);\n }\n break;\n case 2 /* TypeText */:\n nodeData = /** @type {?} */ (createText(view, renderHost, nodeDef));\n break;\n case 512 /* TypeClassProvider */:\n case 1024 /* TypeFactoryProvider */:\n case 2048 /* TypeUseExistingProvider */:\n case 256 /* TypeValueProvider */: {\n nodeData = nodes[i];\n if (!nodeData && !(nodeDef.flags & 4096 /* LazyProvider */)) {\n var /** @type {?} */ instance = createProviderInstance(view, nodeDef);\n nodeData = /** @type {?} */ ({ instance: instance });\n }\n break;\n }\n case 16 /* TypePipe */: {\n var /** @type {?} */ instance = createPipeInstance(view, nodeDef);\n nodeData = /** @type {?} */ ({ instance: instance });\n break;\n }\n case 16384 /* TypeDirective */: {\n nodeData = nodes[i];\n if (!nodeData) {\n var /** @type {?} */ instance = createDirectiveInstance(view, nodeDef);\n nodeData = /** @type {?} */ ({ instance: instance });\n }\n if (nodeDef.flags & 32768 /* Component */) {\n var /** @type {?} */ compView = asElementData(view, /** @type {?} */ ((nodeDef.parent)).nodeIndex).componentView;\n initView(compView, nodeData.instance, nodeData.instance);\n }\n break;\n }\n case 32 /* TypePureArray */:\n case 64 /* TypePureObject */:\n case 128 /* TypePurePipe */:\n nodeData = /** @type {?} */ (createPureExpression(view, nodeDef));\n break;\n case 67108864 /* TypeContentQuery */:\n case 134217728 /* TypeViewQuery */:\n nodeData = /** @type {?} */ (createQuery());\n break;\n case 8 /* TypeNgContent */:\n appendNgContent(view, renderHost, nodeDef);\n // no runtime data needed for NgContent...\n nodeData = undefined;\n break;\n }\n nodes[i] = nodeData;\n }\n // Create the ViewData.nodes of component views after we created everything else,\n // so that e.g. ng-content works\n execComponentViewsAction(view, ViewAction.CreateViewNodes);\n // fill static content and view queries\n execQueriesAction(view, 67108864 /* TypeContentQuery */ | 134217728 /* TypeViewQuery */, 268435456 /* StaticQuery */, 0 /* CheckAndUpdate */);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction checkNoChangesView(view) {\n markProjectedViewsForCheck(view);\n Services.updateDirectives(view, 1 /* CheckNoChanges */);\n execEmbeddedViewsAction(view, ViewAction.CheckNoChanges);\n Services.updateRenderer(view, 1 /* CheckNoChanges */);\n execComponentViewsAction(view, ViewAction.CheckNoChanges);\n // Note: We don't check queries for changes as we didn't do this in v2.x.\n // TODO(tbosch): investigate if we can enable the check again in v5.x with a nicer error message.\n view.state &= ~(64 /* CheckProjectedViews */ | 32 /* CheckProjectedView */);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction checkAndUpdateView(view) {\n if (view.state & 1 /* BeforeFirstCheck */) {\n view.state &= ~1 /* BeforeFirstCheck */;\n view.state |= 2 /* FirstCheck */;\n }\n else {\n view.state &= ~2 /* FirstCheck */;\n }\n shiftInitState(view, 0 /* InitState_BeforeInit */, 256 /* InitState_CallingOnInit */);\n markProjectedViewsForCheck(view);\n Services.updateDirectives(view, 0 /* CheckAndUpdate */);\n execEmbeddedViewsAction(view, ViewAction.CheckAndUpdate);\n execQueriesAction(view, 67108864 /* TypeContentQuery */, 536870912 /* DynamicQuery */, 0 /* CheckAndUpdate */);\n var /** @type {?} */ callInit = shiftInitState(view, 256 /* InitState_CallingOnInit */, 512 /* InitState_CallingAfterContentInit */);\n callLifecycleHooksChildrenFirst(view, 2097152 /* AfterContentChecked */ | (callInit ? 1048576 /* AfterContentInit */ : 0));\n Services.updateRenderer(view, 0 /* CheckAndUpdate */);\n execComponentViewsAction(view, ViewAction.CheckAndUpdate);\n execQueriesAction(view, 134217728 /* TypeViewQuery */, 536870912 /* DynamicQuery */, 0 /* CheckAndUpdate */);\n callInit = shiftInitState(view, 512 /* InitState_CallingAfterContentInit */, 768 /* InitState_CallingAfterViewInit */);\n callLifecycleHooksChildrenFirst(view, 8388608 /* AfterViewChecked */ | (callInit ? 4194304 /* AfterViewInit */ : 0));\n if (view.def.flags & 2 /* OnPush */) {\n view.state &= ~8 /* ChecksEnabled */;\n }\n view.state &= ~(64 /* CheckProjectedViews */ | 32 /* CheckProjectedView */);\n shiftInitState(view, 768 /* InitState_CallingAfterViewInit */, 1024 /* InitState_AfterInit */);\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} argStyle\n * @param {?=} v0\n * @param {?=} v1\n * @param {?=} v2\n * @param {?=} v3\n * @param {?=} v4\n * @param {?=} v5\n * @param {?=} v6\n * @param {?=} v7\n * @param {?=} v8\n * @param {?=} v9\n * @return {?}\n */\nfunction checkAndUpdateNode(view, nodeDef, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n if (argStyle === 0 /* Inline */) {\n return checkAndUpdateNodeInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n }\n else {\n return checkAndUpdateNodeDynamic(view, nodeDef, v0);\n }\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction markProjectedViewsForCheck(view) {\n var /** @type {?} */ def = view.def;\n if (!(def.nodeFlags & 4 /* ProjectedTemplate */)) {\n return;\n }\n for (var /** @type {?} */ i = 0; i < def.nodes.length; i++) {\n var /** @type {?} */ nodeDef = def.nodes[i];\n if (nodeDef.flags & 4 /* ProjectedTemplate */) {\n var /** @type {?} */ projectedViews = asElementData(view, i).template._projectedViews;\n if (projectedViews) {\n for (var /** @type {?} */ i_1 = 0; i_1 < projectedViews.length; i_1++) {\n var /** @type {?} */ projectedView = projectedViews[i_1];\n projectedView.state |= 32 /* CheckProjectedView */;\n markParentViewsForCheckProjectedViews(projectedView, view);\n }\n }\n }\n else if ((nodeDef.childFlags & 4 /* ProjectedTemplate */) === 0) {\n // a parent with leafs\n // no child is a component,\n // then skip the children\n i += nodeDef.childCount;\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?=} v0\n * @param {?=} v1\n * @param {?=} v2\n * @param {?=} v3\n * @param {?=} v4\n * @param {?=} v5\n * @param {?=} v6\n * @param {?=} v7\n * @param {?=} v8\n * @param {?=} v9\n * @return {?}\n */\nfunction checkAndUpdateNodeInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n switch (nodeDef.flags & 201347067 /* Types */) {\n case 1 /* TypeElement */:\n return checkAndUpdateElementInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n case 2 /* TypeText */:\n return checkAndUpdateTextInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n case 16384 /* TypeDirective */:\n return checkAndUpdateDirectiveInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n case 32 /* TypePureArray */:\n case 64 /* TypePureObject */:\n case 128 /* TypePurePipe */:\n return checkAndUpdatePureExpressionInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n default:\n throw 'unreachable';\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} values\n * @return {?}\n */\nfunction checkAndUpdateNodeDynamic(view, nodeDef, values) {\n switch (nodeDef.flags & 201347067 /* Types */) {\n case 1 /* TypeElement */:\n return checkAndUpdateElementDynamic(view, nodeDef, values);\n case 2 /* TypeText */:\n return checkAndUpdateTextDynamic(view, nodeDef, values);\n case 16384 /* TypeDirective */:\n return checkAndUpdateDirectiveDynamic(view, nodeDef, values);\n case 32 /* TypePureArray */:\n case 64 /* TypePureObject */:\n case 128 /* TypePurePipe */:\n return checkAndUpdatePureExpressionDynamic(view, nodeDef, values);\n default:\n throw 'unreachable';\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} argStyle\n * @param {?=} v0\n * @param {?=} v1\n * @param {?=} v2\n * @param {?=} v3\n * @param {?=} v4\n * @param {?=} v5\n * @param {?=} v6\n * @param {?=} v7\n * @param {?=} v8\n * @param {?=} v9\n * @return {?}\n */\nfunction checkNoChangesNode(view, nodeDef, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n if (argStyle === 0 /* Inline */) {\n checkNoChangesNodeInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n }\n else {\n checkNoChangesNodeDynamic(view, nodeDef, v0);\n }\n // Returning false is ok here as we would have thrown in case of a change.\n return false;\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} v0\n * @param {?} v1\n * @param {?} v2\n * @param {?} v3\n * @param {?} v4\n * @param {?} v5\n * @param {?} v6\n * @param {?} v7\n * @param {?} v8\n * @param {?} v9\n * @return {?}\n */\nfunction checkNoChangesNodeInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n var /** @type {?} */ bindLen = nodeDef.bindings.length;\n if (bindLen > 0)\n checkBindingNoChanges(view, nodeDef, 0, v0);\n if (bindLen > 1)\n checkBindingNoChanges(view, nodeDef, 1, v1);\n if (bindLen > 2)\n checkBindingNoChanges(view, nodeDef, 2, v2);\n if (bindLen > 3)\n checkBindingNoChanges(view, nodeDef, 3, v3);\n if (bindLen > 4)\n checkBindingNoChanges(view, nodeDef, 4, v4);\n if (bindLen > 5)\n checkBindingNoChanges(view, nodeDef, 5, v5);\n if (bindLen > 6)\n checkBindingNoChanges(view, nodeDef, 6, v6);\n if (bindLen > 7)\n checkBindingNoChanges(view, nodeDef, 7, v7);\n if (bindLen > 8)\n checkBindingNoChanges(view, nodeDef, 8, v8);\n if (bindLen > 9)\n checkBindingNoChanges(view, nodeDef, 9, v9);\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} values\n * @return {?}\n */\nfunction checkNoChangesNodeDynamic(view, nodeDef, values) {\n for (var /** @type {?} */ i = 0; i < values.length; i++) {\n checkBindingNoChanges(view, nodeDef, i, values[i]);\n }\n}\n/**\n * Workaround https://github.com/angular/tsickle/issues/497\n * @suppress {misplacedTypeAnnotation}\n * @param {?} view\n * @param {?} nodeDef\n * @return {?}\n */\nfunction checkNoChangesQuery(view, nodeDef) {\n var /** @type {?} */ queryList = asQueryList(view, nodeDef.nodeIndex);\n if (queryList.dirty) {\n throw expressionChangedAfterItHasBeenCheckedError(Services.createDebugContext(view, nodeDef.nodeIndex), \"Query \" + (/** @type {?} */ ((nodeDef.query))).id + \" not dirty\", \"Query \" + (/** @type {?} */ ((nodeDef.query))).id + \" dirty\", (view.state & 1 /* BeforeFirstCheck */) !== 0);\n }\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction destroyView(view) {\n if (view.state & 128 /* Destroyed */) {\n return;\n }\n execEmbeddedViewsAction(view, ViewAction.Destroy);\n execComponentViewsAction(view, ViewAction.Destroy);\n callLifecycleHooksChildrenFirst(view, 131072 /* OnDestroy */);\n if (view.disposables) {\n for (var /** @type {?} */ i = 0; i < view.disposables.length; i++) {\n view.disposables[i]();\n }\n }\n detachProjectedView(view);\n if (view.renderer.destroyNode) {\n destroyViewNodes(view);\n }\n if (isComponentView(view)) {\n view.renderer.destroy();\n }\n view.state |= 128 /* Destroyed */;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction destroyViewNodes(view) {\n var /** @type {?} */ len = view.def.nodes.length;\n for (var /** @type {?} */ i = 0; i < len; i++) {\n var /** @type {?} */ def = view.def.nodes[i];\n if (def.flags & 1 /* TypeElement */) {\n /** @type {?} */ ((view.renderer.destroyNode))(asElementData(view, i).renderElement);\n }\n else if (def.flags & 2 /* TypeText */) {\n /** @type {?} */ ((view.renderer.destroyNode))(asTextData(view, i).renderText);\n }\n else if (def.flags & 67108864 /* TypeContentQuery */ || def.flags & 134217728 /* TypeViewQuery */) {\n asQueryList(view, i).destroy();\n }\n }\n}\n/** @enum {number} */\nvar ViewAction = {\n CreateViewNodes: 0,\n CheckNoChanges: 1,\n CheckNoChangesProjectedViews: 2,\n CheckAndUpdate: 3,\n CheckAndUpdateProjectedViews: 4,\n Destroy: 5,\n};\nViewAction[ViewAction.CreateViewNodes] = \"CreateViewNodes\";\nViewAction[ViewAction.CheckNoChanges] = \"CheckNoChanges\";\nViewAction[ViewAction.CheckNoChangesProjectedViews] = \"CheckNoChangesProjectedViews\";\nViewAction[ViewAction.CheckAndUpdate] = \"CheckAndUpdate\";\nViewAction[ViewAction.CheckAndUpdateProjectedViews] = \"CheckAndUpdateProjectedViews\";\nViewAction[ViewAction.Destroy] = \"Destroy\";\n/**\n * @param {?} view\n * @param {?} action\n * @return {?}\n */\nfunction execComponentViewsAction(view, action) {\n var /** @type {?} */ def = view.def;\n if (!(def.nodeFlags & 33554432 /* ComponentView */)) {\n return;\n }\n for (var /** @type {?} */ i = 0; i < def.nodes.length; i++) {\n var /** @type {?} */ nodeDef = def.nodes[i];\n if (nodeDef.flags & 33554432 /* ComponentView */) {\n // a leaf\n callViewAction(asElementData(view, i).componentView, action);\n }\n else if ((nodeDef.childFlags & 33554432 /* ComponentView */) === 0) {\n // a parent with leafs\n // no child is a component,\n // then skip the children\n i += nodeDef.childCount;\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} action\n * @return {?}\n */\nfunction execEmbeddedViewsAction(view, action) {\n var /** @type {?} */ def = view.def;\n if (!(def.nodeFlags & 16777216 /* EmbeddedViews */)) {\n return;\n }\n for (var /** @type {?} */ i = 0; i < def.nodes.length; i++) {\n var /** @type {?} */ nodeDef = def.nodes[i];\n if (nodeDef.flags & 16777216 /* EmbeddedViews */) {\n // a leaf\n var /** @type {?} */ embeddedViews = /** @type {?} */ ((asElementData(view, i).viewContainer))._embeddedViews;\n for (var /** @type {?} */ k = 0; k < embeddedViews.length; k++) {\n callViewAction(embeddedViews[k], action);\n }\n }\n else if ((nodeDef.childFlags & 16777216 /* EmbeddedViews */) === 0) {\n // a parent with leafs\n // no child is a component,\n // then skip the children\n i += nodeDef.childCount;\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} action\n * @return {?}\n */\nfunction callViewAction(view, action) {\n var /** @type {?} */ viewState = view.state;\n switch (action) {\n case ViewAction.CheckNoChanges:\n if ((viewState & 128 /* Destroyed */) === 0) {\n if ((viewState & 12 /* CatDetectChanges */) === 12 /* CatDetectChanges */) {\n checkNoChangesView(view);\n }\n else if (viewState & 64 /* CheckProjectedViews */) {\n execProjectedViewsAction(view, ViewAction.CheckNoChangesProjectedViews);\n }\n }\n break;\n case ViewAction.CheckNoChangesProjectedViews:\n if ((viewState & 128 /* Destroyed */) === 0) {\n if (viewState & 32 /* CheckProjectedView */) {\n checkNoChangesView(view);\n }\n else if (viewState & 64 /* CheckProjectedViews */) {\n execProjectedViewsAction(view, action);\n }\n }\n break;\n case ViewAction.CheckAndUpdate:\n if ((viewState & 128 /* Destroyed */) === 0) {\n if ((viewState & 12 /* CatDetectChanges */) === 12 /* CatDetectChanges */) {\n checkAndUpdateView(view);\n }\n else if (viewState & 64 /* CheckProjectedViews */) {\n execProjectedViewsAction(view, ViewAction.CheckAndUpdateProjectedViews);\n }\n }\n break;\n case ViewAction.CheckAndUpdateProjectedViews:\n if ((viewState & 128 /* Destroyed */) === 0) {\n if (viewState & 32 /* CheckProjectedView */) {\n checkAndUpdateView(view);\n }\n else if (viewState & 64 /* CheckProjectedViews */) {\n execProjectedViewsAction(view, action);\n }\n }\n break;\n case ViewAction.Destroy:\n // Note: destroyView recurses over all views,\n // so we don't need to special case projected views here.\n destroyView(view);\n break;\n case ViewAction.CreateViewNodes:\n createViewNodes(view);\n break;\n }\n}\n/**\n * @param {?} view\n * @param {?} action\n * @return {?}\n */\nfunction execProjectedViewsAction(view, action) {\n execEmbeddedViewsAction(view, action);\n execComponentViewsAction(view, action);\n}\n/**\n * @param {?} view\n * @param {?} queryFlags\n * @param {?} staticDynamicQueryFlag\n * @param {?} checkType\n * @return {?}\n */\nfunction execQueriesAction(view, queryFlags, staticDynamicQueryFlag, checkType) {\n if (!(view.def.nodeFlags & queryFlags) || !(view.def.nodeFlags & staticDynamicQueryFlag)) {\n return;\n }\n var /** @type {?} */ nodeCount = view.def.nodes.length;\n for (var /** @type {?} */ i = 0; i < nodeCount; i++) {\n var /** @type {?} */ nodeDef = view.def.nodes[i];\n if ((nodeDef.flags & queryFlags) && (nodeDef.flags & staticDynamicQueryFlag)) {\n Services.setCurrentNode(view, nodeDef.nodeIndex);\n switch (checkType) {\n case 0 /* CheckAndUpdate */:\n checkAndUpdateQuery(view, nodeDef);\n break;\n case 1 /* CheckNoChanges */:\n checkNoChangesQuery(view, nodeDef);\n break;\n }\n }\n if (!(nodeDef.childFlags & queryFlags) || !(nodeDef.childFlags & staticDynamicQueryFlag)) {\n // no child has a matching query\n // then skip the children\n i += nodeDef.childCount;\n }\n }\n}\n\n/**\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 */\nvar initialized = false;\n/**\n * @return {?}\n */\nfunction initServicesIfNeeded() {\n if (initialized) {\n return;\n }\n initialized = true;\n var /** @type {?} */ services = isDevMode() ? createDebugServices() : createProdServices();\n Services.setCurrentNode = services.setCurrentNode;\n Services.createRootView = services.createRootView;\n Services.createEmbeddedView = services.createEmbeddedView;\n Services.createComponentView = services.createComponentView;\n Services.createNgModuleRef = services.createNgModuleRef;\n Services.overrideProvider = services.overrideProvider;\n Services.overrideComponentView = services.overrideComponentView;\n Services.clearOverrides = services.clearOverrides;\n Services.checkAndUpdateView = services.checkAndUpdateView;\n Services.checkNoChangesView = services.checkNoChangesView;\n Services.destroyView = services.destroyView;\n Services.resolveDep = resolveDep;\n Services.createDebugContext = services.createDebugContext;\n Services.handleEvent = services.handleEvent;\n Services.updateDirectives = services.updateDirectives;\n Services.updateRenderer = services.updateRenderer;\n Services.dirtyParentQueries = dirtyParentQueries;\n}\n/**\n * @return {?}\n */\nfunction createProdServices() {\n return {\n setCurrentNode: function () { },\n createRootView: createProdRootView,\n createEmbeddedView: createEmbeddedView,\n createComponentView: createComponentView,\n createNgModuleRef: createNgModuleRef,\n overrideProvider: NOOP,\n overrideComponentView: NOOP,\n clearOverrides: NOOP,\n checkAndUpdateView: checkAndUpdateView,\n checkNoChangesView: checkNoChangesView,\n destroyView: destroyView,\n createDebugContext: function (view, nodeIndex) { return new DebugContext_(view, nodeIndex); },\n handleEvent: function (view, nodeIndex, eventName, event) {\n return view.def.handleEvent(view, nodeIndex, eventName, event);\n },\n updateDirectives: function (view, checkType) {\n return view.def.updateDirectives(checkType === 0 /* CheckAndUpdate */ ? prodCheckAndUpdateNode :\n prodCheckNoChangesNode, view);\n },\n updateRenderer: function (view, checkType) {\n return view.def.updateRenderer(checkType === 0 /* CheckAndUpdate */ ? prodCheckAndUpdateNode :\n prodCheckNoChangesNode, view);\n },\n };\n}\n/**\n * @return {?}\n */\nfunction createDebugServices() {\n return {\n setCurrentNode: debugSetCurrentNode,\n createRootView: debugCreateRootView,\n createEmbeddedView: debugCreateEmbeddedView,\n createComponentView: debugCreateComponentView,\n createNgModuleRef: debugCreateNgModuleRef,\n overrideProvider: debugOverrideProvider,\n overrideComponentView: debugOverrideComponentView,\n clearOverrides: debugClearOverrides,\n checkAndUpdateView: debugCheckAndUpdateView,\n checkNoChangesView: debugCheckNoChangesView,\n destroyView: debugDestroyView,\n createDebugContext: function (view, nodeIndex) { return new DebugContext_(view, nodeIndex); },\n handleEvent: debugHandleEvent,\n updateDirectives: debugUpdateDirectives,\n updateRenderer: debugUpdateRenderer,\n };\n}\n/**\n * @param {?} elInjector\n * @param {?} projectableNodes\n * @param {?} rootSelectorOrNode\n * @param {?} def\n * @param {?} ngModule\n * @param {?=} context\n * @return {?}\n */\nfunction createProdRootView(elInjector, projectableNodes, rootSelectorOrNode, def, ngModule, context) {\n var /** @type {?} */ rendererFactory = ngModule.injector.get(RendererFactory2);\n return createRootView(createRootData(elInjector, ngModule, rendererFactory, projectableNodes, rootSelectorOrNode), def, context);\n}\n/**\n * @param {?} elInjector\n * @param {?} projectableNodes\n * @param {?} rootSelectorOrNode\n * @param {?} def\n * @param {?} ngModule\n * @param {?=} context\n * @return {?}\n */\nfunction debugCreateRootView(elInjector, projectableNodes, rootSelectorOrNode, def, ngModule, context) {\n var /** @type {?} */ rendererFactory = ngModule.injector.get(RendererFactory2);\n var /** @type {?} */ root = createRootData(elInjector, ngModule, new DebugRendererFactory2(rendererFactory), projectableNodes, rootSelectorOrNode);\n var /** @type {?} */ defWithOverride = applyProviderOverridesToView(def);\n return callWithDebugContext(DebugAction.create, createRootView, null, [root, defWithOverride, context]);\n}\n/**\n * @param {?} elInjector\n * @param {?} ngModule\n * @param {?} rendererFactory\n * @param {?} projectableNodes\n * @param {?} rootSelectorOrNode\n * @return {?}\n */\nfunction createRootData(elInjector, ngModule, rendererFactory, projectableNodes, rootSelectorOrNode) {\n var /** @type {?} */ sanitizer = ngModule.injector.get(Sanitizer);\n var /** @type {?} */ errorHandler = ngModule.injector.get(ErrorHandler);\n var /** @type {?} */ renderer = rendererFactory.createRenderer(null, null);\n return {\n ngModule: ngModule,\n injector: elInjector, projectableNodes: projectableNodes,\n selectorOrNode: rootSelectorOrNode, sanitizer: sanitizer, rendererFactory: rendererFactory, renderer: renderer, errorHandler: errorHandler\n };\n}\n/**\n * @param {?} parentView\n * @param {?} anchorDef\n * @param {?} viewDef\n * @param {?=} context\n * @return {?}\n */\nfunction debugCreateEmbeddedView(parentView, anchorDef, viewDef$$1, context) {\n var /** @type {?} */ defWithOverride = applyProviderOverridesToView(viewDef$$1);\n return callWithDebugContext(DebugAction.create, createEmbeddedView, null, [parentView, anchorDef, defWithOverride, context]);\n}\n/**\n * @param {?} parentView\n * @param {?} nodeDef\n * @param {?} viewDef\n * @param {?} hostElement\n * @return {?}\n */\nfunction debugCreateComponentView(parentView, nodeDef, viewDef$$1, hostElement) {\n var /** @type {?} */ overrideComponentView = viewDefOverrides.get(/** @type {?} */ ((/** @type {?} */ ((/** @type {?} */ ((nodeDef.element)).componentProvider)).provider)).token);\n if (overrideComponentView) {\n viewDef$$1 = overrideComponentView;\n }\n else {\n viewDef$$1 = applyProviderOverridesToView(viewDef$$1);\n }\n return callWithDebugContext(DebugAction.create, createComponentView, null, [parentView, nodeDef, viewDef$$1, hostElement]);\n}\n/**\n * @param {?} moduleType\n * @param {?} parentInjector\n * @param {?} bootstrapComponents\n * @param {?} def\n * @return {?}\n */\nfunction debugCreateNgModuleRef(moduleType, parentInjector, bootstrapComponents, def) {\n var /** @type {?} */ defWithOverride = applyProviderOverridesToNgModule(def);\n return createNgModuleRef(moduleType, parentInjector, bootstrapComponents, defWithOverride);\n}\nvar providerOverrides = new Map();\nvar viewDefOverrides = new Map();\n/**\n * @param {?} override\n * @return {?}\n */\nfunction debugOverrideProvider(override) {\n providerOverrides.set(override.token, override);\n}\n/**\n * @param {?} comp\n * @param {?} compFactory\n * @return {?}\n */\nfunction debugOverrideComponentView(comp, compFactory) {\n var /** @type {?} */ hostViewDef = resolveDefinition(getComponentViewDefinitionFactory(compFactory));\n var /** @type {?} */ compViewDef = resolveDefinition(/** @type {?} */ ((/** @type {?} */ ((hostViewDef.nodes[0].element)).componentView)));\n viewDefOverrides.set(comp, compViewDef);\n}\n/**\n * @return {?}\n */\nfunction debugClearOverrides() {\n providerOverrides.clear();\n viewDefOverrides.clear();\n}\n/**\n * @param {?} def\n * @return {?}\n */\nfunction applyProviderOverridesToView(def) {\n if (providerOverrides.size === 0) {\n return def;\n }\n var /** @type {?} */ elementIndicesWithOverwrittenProviders = findElementIndicesWithOverwrittenProviders(def);\n if (elementIndicesWithOverwrittenProviders.length === 0) {\n return def;\n }\n // clone the whole view definition,\n // as it maintains references between the nodes that are hard to update.\n def = /** @type {?} */ ((def.factory))(function () { return NOOP; });\n for (var /** @type {?} */ i = 0; i < elementIndicesWithOverwrittenProviders.length; i++) {\n applyProviderOverridesToElement(def, elementIndicesWithOverwrittenProviders[i]);\n }\n return def;\n /**\n * @param {?} def\n * @return {?}\n */\n function findElementIndicesWithOverwrittenProviders(def) {\n var /** @type {?} */ elIndicesWithOverwrittenProviders = [];\n var /** @type {?} */ lastElementDef = null;\n for (var /** @type {?} */ i = 0; i < def.nodes.length; i++) {\n var /** @type {?} */ nodeDef = def.nodes[i];\n if (nodeDef.flags & 1 /* TypeElement */) {\n lastElementDef = nodeDef;\n }\n if (lastElementDef && nodeDef.flags & 3840 /* CatProviderNoDirective */ &&\n providerOverrides.has(/** @type {?} */ ((nodeDef.provider)).token)) {\n elIndicesWithOverwrittenProviders.push(/** @type {?} */ ((lastElementDef)).nodeIndex);\n lastElementDef = null;\n }\n }\n return elIndicesWithOverwrittenProviders;\n }\n /**\n * @param {?} viewDef\n * @param {?} elIndex\n * @return {?}\n */\n function applyProviderOverridesToElement(viewDef$$1, elIndex) {\n for (var /** @type {?} */ i = elIndex + 1; i < viewDef$$1.nodes.length; i++) {\n var /** @type {?} */ nodeDef = viewDef$$1.nodes[i];\n if (nodeDef.flags & 1 /* TypeElement */) {\n // stop at the next element\n return;\n }\n if (nodeDef.flags & 3840 /* CatProviderNoDirective */) {\n var /** @type {?} */ provider = /** @type {?} */ ((nodeDef.provider));\n var /** @type {?} */ override = providerOverrides.get(provider.token);\n if (override) {\n nodeDef.flags = (nodeDef.flags & ~3840 /* CatProviderNoDirective */) | override.flags;\n provider.deps = splitDepsDsl(override.deps);\n provider.value = override.value;\n }\n }\n }\n }\n}\n/**\n * @param {?} def\n * @return {?}\n */\nfunction applyProviderOverridesToNgModule(def) {\n var _a = calcHasOverrides(def), hasOverrides = _a.hasOverrides, hasDeprecatedOverrides = _a.hasDeprecatedOverrides;\n if (!hasOverrides) {\n return def;\n }\n // clone the whole view definition,\n // as it maintains references between the nodes that are hard to update.\n def = /** @type {?} */ ((def.factory))(function () { return NOOP; });\n applyProviderOverrides(def);\n return def;\n /**\n * @param {?} def\n * @return {?}\n */\n function calcHasOverrides(def) {\n var /** @type {?} */ hasOverrides = false;\n var /** @type {?} */ hasDeprecatedOverrides = false;\n if (providerOverrides.size === 0) {\n return { hasOverrides: hasOverrides, hasDeprecatedOverrides: hasDeprecatedOverrides };\n }\n def.providers.forEach(function (node) {\n var /** @type {?} */ override = providerOverrides.get(node.token);\n if ((node.flags & 3840 /* CatProviderNoDirective */) && override) {\n hasOverrides = true;\n hasDeprecatedOverrides = hasDeprecatedOverrides || override.deprecatedBehavior;\n }\n });\n return { hasOverrides: hasOverrides, hasDeprecatedOverrides: hasDeprecatedOverrides };\n }\n /**\n * @param {?} def\n * @return {?}\n */\n function applyProviderOverrides(def) {\n for (var /** @type {?} */ i = 0; i < def.providers.length; i++) {\n var /** @type {?} */ provider = def.providers[i];\n if (hasDeprecatedOverrides) {\n // We had a bug where me made\n // all providers lazy. Keep this logic behind a flag\n // for migrating existing users.\n provider.flags |= 4096 /* LazyProvider */;\n }\n var /** @type {?} */ override = providerOverrides.get(provider.token);\n if (override) {\n provider.flags = (provider.flags & ~3840 /* CatProviderNoDirective */) | override.flags;\n provider.deps = splitDepsDsl(override.deps);\n provider.value = override.value;\n }\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} checkIndex\n * @param {?} argStyle\n * @param {?=} v0\n * @param {?=} v1\n * @param {?=} v2\n * @param {?=} v3\n * @param {?=} v4\n * @param {?=} v5\n * @param {?=} v6\n * @param {?=} v7\n * @param {?=} v8\n * @param {?=} v9\n * @return {?}\n */\nfunction prodCheckAndUpdateNode(view, checkIndex, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n var /** @type {?} */ nodeDef = view.def.nodes[checkIndex];\n checkAndUpdateNode(view, nodeDef, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n return (nodeDef.flags & 224 /* CatPureExpression */) ?\n asPureExpressionData(view, checkIndex).value :\n undefined;\n}\n/**\n * @param {?} view\n * @param {?} checkIndex\n * @param {?} argStyle\n * @param {?=} v0\n * @param {?=} v1\n * @param {?=} v2\n * @param {?=} v3\n * @param {?=} v4\n * @param {?=} v5\n * @param {?=} v6\n * @param {?=} v7\n * @param {?=} v8\n * @param {?=} v9\n * @return {?}\n */\nfunction prodCheckNoChangesNode(view, checkIndex, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9) {\n var /** @type {?} */ nodeDef = view.def.nodes[checkIndex];\n checkNoChangesNode(view, nodeDef, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n return (nodeDef.flags & 224 /* CatPureExpression */) ?\n asPureExpressionData(view, checkIndex).value :\n undefined;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction debugCheckAndUpdateView(view) {\n return callWithDebugContext(DebugAction.detectChanges, checkAndUpdateView, null, [view]);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction debugCheckNoChangesView(view) {\n return callWithDebugContext(DebugAction.checkNoChanges, checkNoChangesView, null, [view]);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction debugDestroyView(view) {\n return callWithDebugContext(DebugAction.destroy, destroyView, null, [view]);\n}\n/** @enum {number} */\nvar DebugAction = {\n create: 0,\n detectChanges: 1,\n checkNoChanges: 2,\n destroy: 3,\n handleEvent: 4,\n};\nDebugAction[DebugAction.create] = \"create\";\nDebugAction[DebugAction.detectChanges] = \"detectChanges\";\nDebugAction[DebugAction.checkNoChanges] = \"checkNoChanges\";\nDebugAction[DebugAction.destroy] = \"destroy\";\nDebugAction[DebugAction.handleEvent] = \"handleEvent\";\nvar _currentAction;\nvar _currentView;\nvar _currentNodeIndex;\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @return {?}\n */\nfunction debugSetCurrentNode(view, nodeIndex) {\n _currentView = view;\n _currentNodeIndex = nodeIndex;\n}\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @param {?} eventName\n * @param {?} event\n * @return {?}\n */\nfunction debugHandleEvent(view, nodeIndex, eventName, event) {\n debugSetCurrentNode(view, nodeIndex);\n return callWithDebugContext(DebugAction.handleEvent, view.def.handleEvent, null, [view, nodeIndex, eventName, event]);\n}\n/**\n * @param {?} view\n * @param {?} checkType\n * @return {?}\n */\nfunction debugUpdateDirectives(view, checkType) {\n if (view.state & 128 /* Destroyed */) {\n throw viewDestroyedError(DebugAction[_currentAction]);\n }\n debugSetCurrentNode(view, nextDirectiveWithBinding(view, 0));\n return view.def.updateDirectives(debugCheckDirectivesFn, view);\n /**\n * @param {?} view\n * @param {?} nodeIndex\n * @param {?} argStyle\n * @param {...?} values\n * @return {?}\n */\n function debugCheckDirectivesFn(view, nodeIndex, argStyle) {\n var values = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n values[_i - 3] = arguments[_i];\n }\n var /** @type {?} */ nodeDef = view.def.nodes[nodeIndex];\n if (checkType === 0 /* CheckAndUpdate */) {\n debugCheckAndUpdateNode(view, nodeDef, argStyle, values);\n }\n else {\n debugCheckNoChangesNode(view, nodeDef, argStyle, values);\n }\n if (nodeDef.flags & 16384 /* TypeDirective */) {\n debugSetCurrentNode(view, nextDirectiveWithBinding(view, nodeIndex));\n }\n return (nodeDef.flags & 224 /* CatPureExpression */) ?\n asPureExpressionData(view, nodeDef.nodeIndex).value :\n undefined;\n }\n}\n/**\n * @param {?} view\n * @param {?} checkType\n * @return {?}\n */\nfunction debugUpdateRenderer(view, checkType) {\n if (view.state & 128 /* Destroyed */) {\n throw viewDestroyedError(DebugAction[_currentAction]);\n }\n debugSetCurrentNode(view, nextRenderNodeWithBinding(view, 0));\n return view.def.updateRenderer(debugCheckRenderNodeFn, view);\n /**\n * @param {?} view\n * @param {?} nodeIndex\n * @param {?} argStyle\n * @param {...?} values\n * @return {?}\n */\n function debugCheckRenderNodeFn(view, nodeIndex, argStyle) {\n var values = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n values[_i - 3] = arguments[_i];\n }\n var /** @type {?} */ nodeDef = view.def.nodes[nodeIndex];\n if (checkType === 0 /* CheckAndUpdate */) {\n debugCheckAndUpdateNode(view, nodeDef, argStyle, values);\n }\n else {\n debugCheckNoChangesNode(view, nodeDef, argStyle, values);\n }\n if (nodeDef.flags & 3 /* CatRenderNode */) {\n debugSetCurrentNode(view, nextRenderNodeWithBinding(view, nodeIndex));\n }\n return (nodeDef.flags & 224 /* CatPureExpression */) ?\n asPureExpressionData(view, nodeDef.nodeIndex).value :\n undefined;\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} argStyle\n * @param {?} givenValues\n * @return {?}\n */\nfunction debugCheckAndUpdateNode(view, nodeDef, argStyle, givenValues) {\n var /** @type {?} */ changed = (/** @type {?} */ (checkAndUpdateNode)).apply(void 0, [view, nodeDef, argStyle].concat(givenValues));\n if (changed) {\n var /** @type {?} */ values = argStyle === 1 /* Dynamic */ ? givenValues[0] : givenValues;\n if (nodeDef.flags & 16384 /* TypeDirective */) {\n var /** @type {?} */ bindingValues = {};\n for (var /** @type {?} */ i = 0; i < nodeDef.bindings.length; i++) {\n var /** @type {?} */ binding = nodeDef.bindings[i];\n var /** @type {?} */ value = values[i];\n if (binding.flags & 8 /* TypeProperty */) {\n bindingValues[normalizeDebugBindingName(/** @type {?} */ ((binding.nonMinifiedName)))] =\n normalizeDebugBindingValue(value);\n }\n }\n var /** @type {?} */ elDef = /** @type {?} */ ((nodeDef.parent));\n var /** @type {?} */ el = asElementData(view, elDef.nodeIndex).renderElement;\n if (!/** @type {?} */ ((elDef.element)).name) {\n // a comment.\n view.renderer.setValue(el, \"bindings=\" + JSON.stringify(bindingValues, null, 2));\n }\n else {\n // a regular element.\n for (var /** @type {?} */ attr in bindingValues) {\n var /** @type {?} */ value = bindingValues[attr];\n if (value != null) {\n view.renderer.setAttribute(el, attr, value);\n }\n else {\n view.renderer.removeAttribute(el, attr);\n }\n }\n }\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} argStyle\n * @param {?} values\n * @return {?}\n */\nfunction debugCheckNoChangesNode(view, nodeDef, argStyle, values) {\n (/** @type {?} */ (checkNoChangesNode)).apply(void 0, [view, nodeDef, argStyle].concat(values));\n}\n/**\n * @param {?} name\n * @return {?}\n */\nfunction normalizeDebugBindingName(name) {\n // Attribute names with `$` (eg `x-y$`) are valid per spec, but unsupported by some browsers\n name = camelCaseToDashCase(name.replace(/[$@]/g, '_'));\n return \"ng-reflect-\" + name;\n}\nvar CAMEL_CASE_REGEXP = /([A-Z])/g;\n/**\n * @param {?} input\n * @return {?}\n */\nfunction camelCaseToDashCase(input) {\n return input.replace(CAMEL_CASE_REGEXP, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n return '-' + m[1].toLowerCase();\n });\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction normalizeDebugBindingValue(value) {\n try {\n // Limit the size of the value as otherwise the DOM just gets polluted.\n return value != null ? value.toString().slice(0, 30) : value;\n }\n catch (/** @type {?} */ e) {\n return '[ERROR] Exception while trying to serialize the value';\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @return {?}\n */\nfunction nextDirectiveWithBinding(view, nodeIndex) {\n for (var /** @type {?} */ i = nodeIndex; i < view.def.nodes.length; i++) {\n var /** @type {?} */ nodeDef = view.def.nodes[i];\n if (nodeDef.flags & 16384 /* TypeDirective */ && nodeDef.bindings && nodeDef.bindings.length) {\n return i;\n }\n }\n return null;\n}\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @return {?}\n */\nfunction nextRenderNodeWithBinding(view, nodeIndex) {\n for (var /** @type {?} */ i = nodeIndex; i < view.def.nodes.length; i++) {\n var /** @type {?} */ nodeDef = view.def.nodes[i];\n if ((nodeDef.flags & 3 /* CatRenderNode */) && nodeDef.bindings && nodeDef.bindings.length) {\n return i;\n }\n }\n return null;\n}\nvar DebugContext_ = /** @class */ (function () {\n function DebugContext_(view, nodeIndex) {\n this.view = view;\n this.nodeIndex = nodeIndex;\n if (nodeIndex == null) {\n this.nodeIndex = nodeIndex = 0;\n }\n this.nodeDef = view.def.nodes[nodeIndex];\n var /** @type {?} */ elDef = this.nodeDef;\n var /** @type {?} */ elView = view;\n while (elDef && (elDef.flags & 1 /* TypeElement */) === 0) {\n elDef = /** @type {?} */ ((elDef.parent));\n }\n if (!elDef) {\n while (!elDef && elView) {\n elDef = /** @type {?} */ ((viewParentEl(elView)));\n elView = /** @type {?} */ ((elView.parent));\n }\n }\n this.elDef = elDef;\n this.elView = elView;\n }\n Object.defineProperty(DebugContext_.prototype, \"elOrCompView\", {\n get: /**\n * @return {?}\n */\n function () {\n // Has to be done lazily as we use the DebugContext also during creation of elements...\n return asElementData(this.elView, this.elDef.nodeIndex).componentView || this.view;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugContext_.prototype, \"injector\", {\n get: /**\n * @return {?}\n */\n function () { return createInjector(this.elView, this.elDef); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugContext_.prototype, \"component\", {\n get: /**\n * @return {?}\n */\n function () { return this.elOrCompView.component; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugContext_.prototype, \"context\", {\n get: /**\n * @return {?}\n */\n function () { return this.elOrCompView.context; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugContext_.prototype, \"providerTokens\", {\n get: /**\n * @return {?}\n */\n function () {\n var /** @type {?} */ tokens = [];\n if (this.elDef) {\n for (var /** @type {?} */ i = this.elDef.nodeIndex + 1; i <= this.elDef.nodeIndex + this.elDef.childCount; i++) {\n var /** @type {?} */ childDef = this.elView.def.nodes[i];\n if (childDef.flags & 20224 /* CatProvider */) {\n tokens.push(/** @type {?} */ ((childDef.provider)).token);\n }\n i += childDef.childCount;\n }\n }\n return tokens;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugContext_.prototype, \"references\", {\n get: /**\n * @return {?}\n */\n function () {\n var /** @type {?} */ references = {};\n if (this.elDef) {\n collectReferences(this.elView, this.elDef, references);\n for (var /** @type {?} */ i = this.elDef.nodeIndex + 1; i <= this.elDef.nodeIndex + this.elDef.childCount; i++) {\n var /** @type {?} */ childDef = this.elView.def.nodes[i];\n if (childDef.flags & 20224 /* CatProvider */) {\n collectReferences(this.elView, childDef, references);\n }\n i += childDef.childCount;\n }\n }\n return references;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugContext_.prototype, \"componentRenderElement\", {\n get: /**\n * @return {?}\n */\n function () {\n var /** @type {?} */ elData = findHostElement(this.elOrCompView);\n return elData ? elData.renderElement : undefined;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DebugContext_.prototype, \"renderNode\", {\n get: /**\n * @return {?}\n */\n function () {\n return this.nodeDef.flags & 2 /* TypeText */ ? renderNode(this.view, this.nodeDef) :\n renderNode(this.elView, this.elDef);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} console\n * @param {...?} values\n * @return {?}\n */\n DebugContext_.prototype.logError = /**\n * @param {?} console\n * @param {...?} values\n * @return {?}\n */\n function (console) {\n var values = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n var /** @type {?} */ logViewDef;\n var /** @type {?} */ logNodeIndex;\n if (this.nodeDef.flags & 2 /* TypeText */) {\n logViewDef = this.view.def;\n logNodeIndex = this.nodeDef.nodeIndex;\n }\n else {\n logViewDef = this.elView.def;\n logNodeIndex = this.elDef.nodeIndex;\n }\n // Note: we only generate a log function for text and element nodes\n // to make the generated code as small as possible.\n var /** @type {?} */ renderNodeIndex = getRenderNodeIndex(logViewDef, logNodeIndex);\n var /** @type {?} */ currRenderNodeIndex = -1;\n var /** @type {?} */ nodeLogger = function () {\n currRenderNodeIndex++;\n if (currRenderNodeIndex === renderNodeIndex) {\n return (_a = console.error).bind.apply(_a, [console].concat(values));\n }\n else {\n return NOOP;\n }\n var _a;\n }; /** @type {?} */\n ((logViewDef.factory))(nodeLogger);\n if (currRenderNodeIndex < renderNodeIndex) {\n console.error('Illegal state: the ViewDefinitionFactory did not call the logger!');\n console.error.apply(console, values);\n }\n };\n return DebugContext_;\n}());\n/**\n * @param {?} viewDef\n * @param {?} nodeIndex\n * @return {?}\n */\nfunction getRenderNodeIndex(viewDef$$1, nodeIndex) {\n var /** @type {?} */ renderNodeIndex = -1;\n for (var /** @type {?} */ i = 0; i <= nodeIndex; i++) {\n var /** @type {?} */ nodeDef = viewDef$$1.nodes[i];\n if (nodeDef.flags & 3 /* CatRenderNode */) {\n renderNodeIndex++;\n }\n }\n return renderNodeIndex;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction findHostElement(view) {\n while (view && !isComponentView(view)) {\n view = /** @type {?} */ ((view.parent));\n }\n if (view.parent) {\n return asElementData(view.parent, /** @type {?} */ ((viewParentEl(view))).nodeIndex);\n }\n return null;\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} references\n * @return {?}\n */\nfunction collectReferences(view, nodeDef, references) {\n for (var /** @type {?} */ refName in nodeDef.references) {\n references[refName] = getQueryValue(view, nodeDef, nodeDef.references[refName]);\n }\n}\n/**\n * @param {?} action\n * @param {?} fn\n * @param {?} self\n * @param {?} args\n * @return {?}\n */\nfunction callWithDebugContext(action, fn, self, args) {\n var /** @type {?} */ oldAction = _currentAction;\n var /** @type {?} */ oldView = _currentView;\n var /** @type {?} */ oldNodeIndex = _currentNodeIndex;\n try {\n _currentAction = action;\n var /** @type {?} */ result = fn.apply(self, args);\n _currentView = oldView;\n _currentNodeIndex = oldNodeIndex;\n _currentAction = oldAction;\n return result;\n }\n catch (/** @type {?} */ e) {\n if (isViewDebugError(e) || !_currentView) {\n throw e;\n }\n throw viewWrappedDebugError(e, /** @type {?} */ ((getCurrentDebugContext())));\n }\n}\n/**\n * @return {?}\n */\nfunction getCurrentDebugContext() {\n return _currentView ? new DebugContext_(_currentView, _currentNodeIndex) : null;\n}\nvar DebugRendererFactory2 = /** @class */ (function () {\n function DebugRendererFactory2(delegate) {\n this.delegate = delegate;\n }\n /**\n * @param {?} element\n * @param {?} renderData\n * @return {?}\n */\n DebugRendererFactory2.prototype.createRenderer = /**\n * @param {?} element\n * @param {?} renderData\n * @return {?}\n */\n function (element, renderData) {\n return new DebugRenderer2(this.delegate.createRenderer(element, renderData));\n };\n /**\n * @return {?}\n */\n DebugRendererFactory2.prototype.begin = /**\n * @return {?}\n */\n function () {\n if (this.delegate.begin) {\n this.delegate.begin();\n }\n };\n /**\n * @return {?}\n */\n DebugRendererFactory2.prototype.end = /**\n * @return {?}\n */\n function () {\n if (this.delegate.end) {\n this.delegate.end();\n }\n };\n /**\n * @return {?}\n */\n DebugRendererFactory2.prototype.whenRenderingDone = /**\n * @return {?}\n */\n function () {\n if (this.delegate.whenRenderingDone) {\n return this.delegate.whenRenderingDone();\n }\n return Promise.resolve(null);\n };\n return DebugRendererFactory2;\n}());\nvar DebugRenderer2 = /** @class */ (function () {\n function DebugRenderer2(delegate) {\n this.delegate = delegate;\n this.data = this.delegate.data;\n }\n /**\n * @param {?} node\n * @return {?}\n */\n DebugRenderer2.prototype.destroyNode = /**\n * @param {?} node\n * @return {?}\n */\n function (node) {\n removeDebugNodeFromIndex(/** @type {?} */ ((getDebugNode(node))));\n if (this.delegate.destroyNode) {\n this.delegate.destroyNode(node);\n }\n };\n /**\n * @return {?}\n */\n DebugRenderer2.prototype.destroy = /**\n * @return {?}\n */\n function () { this.delegate.destroy(); };\n /**\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\n DebugRenderer2.prototype.createElement = /**\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\n function (name, namespace) {\n var /** @type {?} */ el = this.delegate.createElement(name, namespace);\n var /** @type {?} */ debugCtx = getCurrentDebugContext();\n if (debugCtx) {\n var /** @type {?} */ debugEl = new DebugElement(el, null, debugCtx);\n debugEl.name = name;\n indexDebugNode(debugEl);\n }\n return el;\n };\n /**\n * @param {?} value\n * @return {?}\n */\n DebugRenderer2.prototype.createComment = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n var /** @type {?} */ comment = this.delegate.createComment(value);\n var /** @type {?} */ debugCtx = getCurrentDebugContext();\n if (debugCtx) {\n indexDebugNode(new DebugNode(comment, null, debugCtx));\n }\n return comment;\n };\n /**\n * @param {?} value\n * @return {?}\n */\n DebugRenderer2.prototype.createText = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n var /** @type {?} */ text = this.delegate.createText(value);\n var /** @type {?} */ debugCtx = getCurrentDebugContext();\n if (debugCtx) {\n indexDebugNode(new DebugNode(text, null, debugCtx));\n }\n return text;\n };\n /**\n * @param {?} parent\n * @param {?} newChild\n * @return {?}\n */\n DebugRenderer2.prototype.appendChild = /**\n * @param {?} parent\n * @param {?} newChild\n * @return {?}\n */\n function (parent, newChild) {\n var /** @type {?} */ debugEl = getDebugNode(parent);\n var /** @type {?} */ debugChildEl = getDebugNode(newChild);\n if (debugEl && debugChildEl && debugEl instanceof DebugElement) {\n debugEl.addChild(debugChildEl);\n }\n this.delegate.appendChild(parent, newChild);\n };\n /**\n * @param {?} parent\n * @param {?} newChild\n * @param {?} refChild\n * @return {?}\n */\n DebugRenderer2.prototype.insertBefore = /**\n * @param {?} parent\n * @param {?} newChild\n * @param {?} refChild\n * @return {?}\n */\n function (parent, newChild, refChild) {\n var /** @type {?} */ debugEl = getDebugNode(parent);\n var /** @type {?} */ debugChildEl = getDebugNode(newChild);\n var /** @type {?} */ debugRefEl = /** @type {?} */ ((getDebugNode(refChild)));\n if (debugEl && debugChildEl && debugEl instanceof DebugElement) {\n debugEl.insertBefore(debugRefEl, debugChildEl);\n }\n this.delegate.insertBefore(parent, newChild, refChild);\n };\n /**\n * @param {?} parent\n * @param {?} oldChild\n * @return {?}\n */\n DebugRenderer2.prototype.removeChild = /**\n * @param {?} parent\n * @param {?} oldChild\n * @return {?}\n */\n function (parent, oldChild) {\n var /** @type {?} */ debugEl = getDebugNode(parent);\n var /** @type {?} */ debugChildEl = getDebugNode(oldChild);\n if (debugEl && debugChildEl && debugEl instanceof DebugElement) {\n debugEl.removeChild(debugChildEl);\n }\n this.delegate.removeChild(parent, oldChild);\n };\n /**\n * @param {?} selectorOrNode\n * @return {?}\n */\n DebugRenderer2.prototype.selectRootElement = /**\n * @param {?} selectorOrNode\n * @return {?}\n */\n function (selectorOrNode) {\n var /** @type {?} */ el = this.delegate.selectRootElement(selectorOrNode);\n var /** @type {?} */ debugCtx = getCurrentDebugContext();\n if (debugCtx) {\n indexDebugNode(new DebugElement(el, null, debugCtx));\n }\n return el;\n };\n /**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @param {?=} namespace\n * @return {?}\n */\n DebugRenderer2.prototype.setAttribute = /**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @param {?=} namespace\n * @return {?}\n */\n function (el, name, value, namespace) {\n var /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n var /** @type {?} */ fullName = namespace ? namespace + ':' + name : name;\n debugEl.attributes[fullName] = value;\n }\n this.delegate.setAttribute(el, name, value, namespace);\n };\n /**\n * @param {?} el\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\n DebugRenderer2.prototype.removeAttribute = /**\n * @param {?} el\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\n function (el, name, namespace) {\n var /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n var /** @type {?} */ fullName = namespace ? namespace + ':' + name : name;\n debugEl.attributes[fullName] = null;\n }\n this.delegate.removeAttribute(el, name, namespace);\n };\n /**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n DebugRenderer2.prototype.addClass = /**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n function (el, name) {\n var /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n debugEl.classes[name] = true;\n }\n this.delegate.addClass(el, name);\n };\n /**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n DebugRenderer2.prototype.removeClass = /**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n function (el, name) {\n var /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n debugEl.classes[name] = false;\n }\n this.delegate.removeClass(el, name);\n };\n /**\n * @param {?} el\n * @param {?} style\n * @param {?} value\n * @param {?} flags\n * @return {?}\n */\n DebugRenderer2.prototype.setStyle = /**\n * @param {?} el\n * @param {?} style\n * @param {?} value\n * @param {?} flags\n * @return {?}\n */\n function (el, style, value, flags) {\n var /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n debugEl.styles[style] = value;\n }\n this.delegate.setStyle(el, style, value, flags);\n };\n /**\n * @param {?} el\n * @param {?} style\n * @param {?} flags\n * @return {?}\n */\n DebugRenderer2.prototype.removeStyle = /**\n * @param {?} el\n * @param {?} style\n * @param {?} flags\n * @return {?}\n */\n function (el, style, flags) {\n var /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n debugEl.styles[style] = null;\n }\n this.delegate.removeStyle(el, style, flags);\n };\n /**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n DebugRenderer2.prototype.setProperty = /**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n function (el, name, value) {\n var /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n debugEl.properties[name] = value;\n }\n this.delegate.setProperty(el, name, value);\n };\n /**\n * @param {?} target\n * @param {?} eventName\n * @param {?} callback\n * @return {?}\n */\n DebugRenderer2.prototype.listen = /**\n * @param {?} target\n * @param {?} eventName\n * @param {?} callback\n * @return {?}\n */\n function (target, eventName, callback) {\n if (typeof target !== 'string') {\n var /** @type {?} */ debugEl = getDebugNode(target);\n if (debugEl) {\n debugEl.listeners.push(new EventListener(eventName, callback));\n }\n }\n return this.delegate.listen(target, eventName, callback);\n };\n /**\n * @param {?} node\n * @return {?}\n */\n DebugRenderer2.prototype.parentNode = /**\n * @param {?} node\n * @return {?}\n */\n function (node) { return this.delegate.parentNode(node); };\n /**\n * @param {?} node\n * @return {?}\n */\n DebugRenderer2.prototype.nextSibling = /**\n * @param {?} node\n * @return {?}\n */\n function (node) { return this.delegate.nextSibling(node); };\n /**\n * @param {?} node\n * @param {?} value\n * @return {?}\n */\n DebugRenderer2.prototype.setValue = /**\n * @param {?} node\n * @param {?} value\n * @return {?}\n */\n function (node, value) { return this.delegate.setValue(node, value); };\n return DebugRenderer2;\n}());\n\n/**\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 * @param {?} override\n * @return {?}\n */\nfunction overrideProvider(override) {\n initServicesIfNeeded();\n return Services.overrideProvider(override);\n}\n/**\n * @param {?} comp\n * @param {?} componentFactory\n * @return {?}\n */\nfunction overrideComponentView(comp, componentFactory) {\n initServicesIfNeeded();\n return Services.overrideComponentView(comp, componentFactory);\n}\n/**\n * @return {?}\n */\nfunction clearOverrides() {\n initServicesIfNeeded();\n return Services.clearOverrides();\n}\n/**\n * @param {?} ngModuleType\n * @param {?} bootstrapComponents\n * @param {?} defFactory\n * @return {?}\n */\nfunction createNgModuleFactory(ngModuleType, bootstrapComponents, defFactory) {\n return new NgModuleFactory_(ngModuleType, bootstrapComponents, defFactory);\n}\nvar NgModuleFactory_ = /** @class */ (function (_super) {\n __extends(NgModuleFactory_, _super);\n function NgModuleFactory_(moduleType, _bootstrapComponents, _ngModuleDefFactory) {\n var _this = \n // Attention: this ctor is called as top level function.\n // Putting any logic in here will destroy closure tree shaking!\n _super.call(this) || this;\n _this.moduleType = moduleType;\n _this._bootstrapComponents = _bootstrapComponents;\n _this._ngModuleDefFactory = _ngModuleDefFactory;\n return _this;\n }\n /**\n * @param {?} parentInjector\n * @return {?}\n */\n NgModuleFactory_.prototype.create = /**\n * @param {?} parentInjector\n * @return {?}\n */\n function (parentInjector) {\n initServicesIfNeeded();\n var /** @type {?} */ def = resolveDefinition(this._ngModuleDefFactory);\n return Services.createNgModuleRef(this.moduleType, parentInjector || Injector.NULL, this._bootstrapComponents, def);\n };\n return NgModuleFactory_;\n}(NgModuleFactory));\n\n/**\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/**\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/**\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// The functions in this file verify that the assumptions we are making\n// about state in an instruction are correct before implementing any logic.\n// They are meant only to be called in dev mode as sanity checks.\n/**\n * Stringifies values such that strings are wrapped in explicit quotation marks and\n * other types are stringified normally. Used in error messages (e.g. assertThrow)\n * to make it clear that certain values are of the string type when comparing.\n *\n * e.g. `expected \"3\" to be 3` is easier to understand than `expected 3 to be 3`.\n *\n * @param {?} value The value to be stringified\n * @return {?} The stringified value\n */\nfunction stringifyValueForError(value) {\n return typeof value === 'string' ? \"\\\"\" + value + \"\\\"\" : '' + value;\n}\n/**\n * @param {?} actual\n * @param {?} name\n * @return {?}\n */\n\n/**\n * @template T\n * @param {?} actual\n * @param {?} expected\n * @param {?} name\n * @param {?=} serializer\n * @return {?}\n */\nfunction assertEqual(actual, expected, name, serializer) {\n (actual != expected) && assertThrow(actual, expected, name, '==', serializer);\n}\n/**\n * @template T\n * @param {?} actual\n * @param {?} expected\n * @param {?} name\n * @return {?}\n */\nfunction assertLessThan(actual, expected, name) {\n (actual < expected) && assertThrow(actual, expected, name, '>');\n}\n/**\n * @template T\n * @param {?} actual\n * @param {?} name\n * @return {?}\n */\nfunction assertNotNull(actual, name) {\n assertNotEqual(actual, null, name);\n}\n/**\n * @template T\n * @param {?} actual\n * @param {?} expected\n * @param {?} name\n * @return {?}\n */\nfunction assertNotEqual(actual, expected, name) {\n (actual == expected) && assertThrow(actual, expected, name, '!=');\n}\n/**\n * Throws an error with a message constructed from the arguments.\n *\n * @template T\n * @param {?} actual The actual value (e.g. 3)\n * @param {?} expected The expected value (e.g. 5)\n * @param {?} name The name of the value being checked (e.g. attrs.length)\n * @param {?} operator The comparison operator (e.g. <, >, ==)\n * @param {?=} serializer Function that maps a value to its display value\n * @return {?}\n */\nfunction assertThrow(actual, expected, name, operator, serializer) {\n if (serializer === void 0) { serializer = stringifyValueForError; }\n throw new Error(\"ASSERT: expected \" + name + \" \" + operator + \" \" + serializer(expected) + \" but was \" + serializer(actual) + \"!\");\n}\n\n/**\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 */\nif (typeof ngDevMode == 'undefined') {\n if (typeof window != 'undefined')\n (/** @type {?} */ (window)).ngDevMode = true;\n if (typeof self != 'undefined')\n (/** @type {?} */ (self)).ngDevMode = true;\n if (typeof global != 'undefined')\n (/** @type {?} */ (global)).ngDevMode = true;\n}\n\n/**\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 * @param {?} node\n * @param {?} type\n * @return {?}\n */\nfunction assertNodeType(node, type) {\n assertNotEqual(node, null, 'node');\n assertEqual(node.flags & 3 /* TYPE_MASK */, type, 'Node.type', typeSerializer);\n}\n/**\n * @param {?} node\n * @param {...?} types\n * @return {?}\n */\n\n/**\n * @param {?} type\n * @return {?}\n */\nfunction typeSerializer(type) {\n if (type == 1 /* Projection */)\n return 'Projection';\n if (type == 0 /* Container */)\n return 'Container';\n if (type == 2 /* View */)\n return 'View';\n if (type == 3 /* Element */)\n return 'Element';\n return '??? ' + type + ' ???';\n}\n\n/**\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 * Finds the closest DOM node above a given container in the hierarchy.\n *\n * This is necessary to add or remove elements from the DOM when a view\n * is added or removed from the container. e.g. parent.removeChild(...)\n *\n * @param {?} containerNode The container node whose parent must be found\n * @return {?} Closest DOM node above the container\n */\nfunction findNativeParent(containerNode) {\n var /** @type {?} */ container = containerNode;\n while (container) {\n ngDevMode && assertNodeType(container, 0 /* Container */);\n var /** @type {?} */ renderParent = container.data.renderParent;\n if (renderParent !== null) {\n return renderParent.native;\n }\n var /** @type {?} */ viewOrElement = /** @type {?} */ ((container.parent));\n ngDevMode && assertNotNull(viewOrElement, 'container.parent');\n if ((viewOrElement.flags & 3 /* TYPE_MASK */) === 3 /* Element */) {\n // we are an LElement, which means we are past the last LContainer.\n // This means than we have not been projected so just ignore.\n return null;\n }\n ngDevMode && assertNodeType(viewOrElement, 2 /* View */);\n container = (/** @type {?} */ (viewOrElement)).parent;\n }\n return null;\n}\n/**\n * Finds the DOM element before which a certain view should be inserting its\n * child elements.\n *\n * If the view has a next (e.g. for loop), elements should be inserted before\n * the next view's first child element. Otherwise, the container's comment\n * anchor is the marker.\n *\n * @param {?} index The index of the view to check\n * @param {?} state ContainerState of the parent container\n * @param {?} native Comment anchor for container\n * @return {?} The DOM element for which the view should insert elements\n */\nfunction findBeforeNode(index, state, native) {\n var /** @type {?} */ views = state.views;\n // Find the node to insert in front of\n return index + 1 < views.length ?\n (/** @type {?} */ (views[index + 1].child)).native :\n native;\n}\n/**\n * @param {?} container\n * @param {?} rootNode\n * @param {?} insertMode\n * @param {?=} beforeNode\n * @return {?}\n */\nfunction addRemoveViewFromContainer(container, rootNode, insertMode, beforeNode) {\n ngDevMode && assertNodeType(container, 0 /* Container */);\n ngDevMode && assertNodeType(rootNode, 2 /* View */);\n var /** @type {?} */ parent = findNativeParent(container);\n var /** @type {?} */ node = rootNode.child;\n if (parent) {\n while (node) {\n var /** @type {?} */ type = node.flags & 3;\n var /** @type {?} */ nextNode = null;\n var /** @type {?} */ renderer = container.view.renderer;\n var /** @type {?} */ isFnRenderer = (/** @type {?} */ (renderer)).listen;\n if (type === 3 /* Element */) {\n insertMode ? (isFnRenderer ? /** @type {?} */ (((/** @type {?} */ (renderer))\n .insertBefore))(parent, /** @type {?} */ ((node.native)), /** @type {?} */ (beforeNode)) :\n parent.insertBefore(/** @type {?} */ ((node.native)), /** @type {?} */ (beforeNode), true)) :\n (isFnRenderer ? /** @type {?} */ (((/** @type {?} */ (renderer))\n .removeChild))(/** @type {?} */ (parent), /** @type {?} */ ((node.native))) :\n parent.removeChild(/** @type {?} */ ((node.native))));\n nextNode = node.next;\n }\n else if (type === 0 /* Container */) {\n // if we get to a container, it must be a root node of a view because we are only\n // propagating down into child views / containers and not child elements\n var /** @type {?} */ childContainerData = (/** @type {?} */ (node)).data;\n insertMode ? (isFnRenderer ? /** @type {?} */ (((/** @type {?} */ (renderer))\n .appendChild))(/** @type {?} */ (parent), /** @type {?} */ ((node.native))) :\n parent.appendChild(/** @type {?} */ ((node.native)))) :\n (isFnRenderer ? /** @type {?} */ (((/** @type {?} */ (renderer))\n .removeChild))(/** @type {?} */ (parent), /** @type {?} */ ((node.native))) :\n parent.removeChild(/** @type {?} */ ((node.native))));\n nextNode = childContainerData.views.length ? childContainerData.views[0].child : null;\n }\n else if (type === 1 /* Projection */) {\n nextNode = (/** @type {?} */ (node)).data[0];\n }\n else {\n nextNode = (/** @type {?} */ (node)).child;\n }\n if (nextNode === null) {\n while (node && !node.next) {\n node = node.parent;\n if (node === rootNode)\n node = null;\n }\n node = node && node.next;\n }\n else {\n node = nextNode;\n }\n }\n }\n}\n/**\n * Traverses the tree of component views and containers to remove listeners and\n * call onDestroy callbacks.\n *\n * Notes:\n * - Because it's used for onDestroy calls, it needs to be bottom-up.\n * - Must process containers instead of their views to avoid splicing\n * when views are destroyed and re-added.\n * - Using a while loop because it's faster than recursion\n * - Destroy only called on movement to sibling or movement to parent (laterally or up)\n *\n * \\@param rootView The view to destroy\n * @param {?} rootView\n * @return {?}\n */\nfunction destroyViewTree(rootView) {\n var /** @type {?} */ viewOrContainerState = rootView;\n while (viewOrContainerState) {\n var /** @type {?} */ next = null;\n if (viewOrContainerState.views && viewOrContainerState.views.length) {\n next = viewOrContainerState.views[0].data;\n }\n else if (viewOrContainerState.child) {\n next = viewOrContainerState.child;\n }\n else if (viewOrContainerState.next) {\n cleanUpView(/** @type {?} */ (viewOrContainerState));\n next = viewOrContainerState.next;\n }\n if (next == null) {\n while (viewOrContainerState && !/** @type {?} */ ((viewOrContainerState)).next) {\n cleanUpView(/** @type {?} */ (viewOrContainerState));\n viewOrContainerState = getParentState(viewOrContainerState, rootView);\n }\n cleanUpView(/** @type {?} */ (viewOrContainerState) || rootView);\n next = viewOrContainerState && viewOrContainerState.next;\n }\n viewOrContainerState = next;\n }\n}\n/**\n * Inserts a view into a container.\n *\n * This adds the view to the container's array of active views in the correct\n * position. It also adds the view's elements to the DOM if the container isn't a\n * root node of another view (in that case, the view's elements will be added when\n * the container's parent view is added later).\n *\n * @param {?} container The container into which the view should be inserted\n * @param {?} newView The view to insert\n * @param {?} index The index at which to insert the view\n * @return {?} The inserted view\n */\nfunction insertView(container, newView, index) {\n var /** @type {?} */ state = container.data;\n var /** @type {?} */ views = state.views;\n if (index > 0) {\n // This is a new view, we need to add it to the children.\n setViewNext(views[index - 1], newView);\n }\n if (index < views.length && views[index].data.id !== newView.data.id) {\n // View ID change replace the view.\n setViewNext(newView, views[index]);\n views.splice(index, 0, newView);\n }\n else if (index >= views.length) {\n views.push(newView);\n }\n if (state.nextIndex <= index) {\n state.nextIndex++;\n }\n // If the container's renderParent is null, we know that it is a root node of its own parent view\n // and we should wait until that parent processes its nodes (otherwise, we will insert this view's\n // nodes twice - once now and once when its parent inserts its views).\n if (container.data.renderParent !== null) {\n addRemoveViewFromContainer(container, newView, true, findBeforeNode(index, state, container.native));\n }\n // Notify query that view has been inserted\n container.query && container.query.insertView(container, newView, index);\n return newView;\n}\n/**\n * Removes a view from a container.\n *\n * This method splices the view from the container's array of active views. It also\n * removes the view's elements from the DOM and conducts cleanup (e.g. removing\n * listeners, calling onDestroys).\n *\n * @param {?} container The container from which to remove a view\n * @param {?} removeIndex The index of the view to remove\n * @return {?} The removed view\n */\nfunction removeView(container, removeIndex) {\n var /** @type {?} */ views = container.data.views;\n var /** @type {?} */ viewNode = views[removeIndex];\n if (removeIndex > 0) {\n setViewNext(views[removeIndex - 1], viewNode.next);\n }\n views.splice(removeIndex, 1);\n destroyViewTree(viewNode.data);\n addRemoveViewFromContainer(container, viewNode, false);\n // Notify query that view has been removed\n container.query && container.query.removeView(container, viewNode, removeIndex);\n return viewNode;\n}\n/**\n * Sets a next on the view node, so views in for loops can easily jump from\n * one view to the next to add/remove elements. Also adds the ViewState (view.data)\n * to the view tree for easy traversal when cleaning up the view.\n *\n * @param {?} view The view to set up\n * @param {?} next The view's new next\n * @return {?}\n */\nfunction setViewNext(view, next) {\n view.next = next;\n view.data.next = next ? next.data : null;\n}\n/**\n * Determines which ViewOrContainerState to jump to when traversing back up the\n * tree in destroyViewTree.\n *\n * Normally, the view's parent ViewState should be checked, but in the case of\n * embedded views, the container (which is the view node's parent, but not the\n * ViewState's parent) needs to be checked for a possible next property.\n *\n * @param {?} state The ViewOrContainerState for which we need a parent state\n * @param {?} rootView The rootView, so we don't propagate too far up the view tree\n * @return {?} The correct parent ViewOrContainerState\n */\nfunction getParentState(state, rootView) {\n var /** @type {?} */ node;\n if ((node = /** @type {?} */ (((/** @type {?} */ (state)))).node) &&\n (node.flags & 3 /* TYPE_MASK */) === 2 /* View */) {\n // if it's an embedded view, the state needs to go up to the container, in case the\n // container has a next\n return /** @type {?} */ (((node.parent)).data);\n }\n else {\n // otherwise, use parent view for containers or component views\n return state.parent === rootView ? null : state.parent;\n }\n}\n/**\n * Removes all listeners and call all onDestroys in a given view.\n *\n * @param {?} viewState The ViewState of the view to clean up\n * @return {?}\n */\nfunction cleanUpView(viewState) {\n if (!viewState.cleanup)\n return;\n var /** @type {?} */ cleanup = /** @type {?} */ ((viewState.cleanup));\n for (var /** @type {?} */ i = 0; i < cleanup.length - 1; i += 2) {\n if (typeof cleanup[i] === 'string') {\n /** @type {?} */ ((cleanup))[i + 1].removeEventListener(cleanup[i], cleanup[i + 2], cleanup[i + 3]);\n i += 2;\n }\n else {\n cleanup[i].call(cleanup[i + 1]);\n }\n }\n viewState.cleanup = null;\n}\n/**\n * Appends the provided child element to the provided parent, if appropriate.\n *\n * If the parent is a view, the element will be appended as part of viewEnd(), so\n * the element should not be appended now. Similarly, if the child is a content child\n * of a parent component, the child will be appended to the right position later by\n * the content projection system. Otherwise, append normally.\n *\n * @param {?} parent The parent to which to append the child\n * @param {?} child The child that should be appended\n * @param {?} currentView The current view's ViewState\n * @return {?} Whether or not the child was appended\n */\nfunction appendChild(parent, child, currentView) {\n // Only add native child element to parent element if the parent element is regular Element.\n // If parent is:\n // - Regular element => add child\n // - Component host element =>\n // - Current View, and parent view same => content => don't add -> parent component will\n // re-project if needed.\n // - Current View, and parent view different => view => add Child\n // - View element => View's get added separately.\n if (child !== null && (parent.flags & 3 /* TYPE_MASK */) === 3 /* Element */ &&\n (parent.view !==\n currentView /* Crossing View Boundaries, it is Component, but add Element of View */\n || parent.data === null /* Regular Element. */)) {\n // We only add element if not in View or not projected.\n var /** @type {?} */ renderer = currentView.renderer;\n (/** @type {?} */ (renderer)).listen ? /** @type {?} */ (((/** @type {?} */ (renderer)).appendChild))(/** @type {?} */ (((parent.native))), child) : /** @type {?} */ ((parent.native)).appendChild(child);\n return true;\n }\n return false;\n}\n/**\n * Inserts the provided node before the correct element in the DOM, if appropriate.\n *\n * If the parent is a view, the element will be inserted as part of viewEnd(), so\n * the element should not be inserted now. Similarly, if the child is a content child\n * of a parent component, the child will be inserted to the right position later by\n * the content projection system. Otherwise, insertBefore normally.\n *\n * @param {?} node Node to insert\n * @param {?} currentView The current view's ViewState\n * @return {?}\n */\nfunction insertChild(node, currentView) {\n var /** @type {?} */ parent = /** @type {?} */ ((node.parent));\n // Only add child element to parent element if the parent element is regular Element.\n // If parent is:\n // - Normal element => add child\n // - Component element =>\n // - Current View, and parent view same => content don't add -> parent component will\n // re-project if needed.\n // - Current View, and parent view different => view => add Child\n // - View element => View's get added separately.\n if ((parent.flags & 3 /* TYPE_MASK */) === 3 /* Element */ &&\n (parent.view !==\n currentView /* Crossing View Boundaries, its Component, but add Element of View */\n || parent.data === null /* Regular Element. */)) {\n // We only add element if not in View or not projected.\n var /** @type {?} */ sibling = node.next;\n var /** @type {?} */ nativeSibling = null;\n while (sibling && (nativeSibling = sibling.native) === null) {\n sibling = sibling.next;\n }\n var /** @type {?} */ renderer = currentView.renderer;\n (/** @type {?} */ (renderer)).listen ? /** @type {?} */ (((/** @type {?} */ (renderer))\n .insertBefore))(/** @type {?} */ ((parent.native)), /** @type {?} */ ((node.native)), nativeSibling) : /** @type {?} */ ((parent.native)).insertBefore(/** @type {?} */ ((node.native)), nativeSibling, false);\n }\n}\n/**\n * Appends a projected node to the DOM, or in the case of a projected container,\n * appends the nodes from all of the container's active views to the DOM. Also stores the\n * node in the given projectedNodes array.\n *\n * @param {?} projectedNodes Array to store the projected node\n * @param {?} node The node to process\n * @param {?} currentParent The last parent element to be processed\n * @param {?} currentView The current view's ViewState\n * @return {?}\n */\n\n/**\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 * A utility function to match an Ivy node static data against a simple CSS selector\n *\n * @param {?} lNodeStaticData\n * @param {?} selector\n * @return {?} true if node matches the selector.\n */\n\n/**\n * @param {?} lNodeStaticData\n * @param {?} selector\n * @return {?}\n */\n\n/**\n * @param {?} lNodeStaticData\n * @param {?} selector\n * @return {?}\n */\n\n/**\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 * Must use this method for CD (instead of === ) since NaN !== NaN\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction isDifferent(a, b) {\n // NaN is the only value that is not equal to itself so the first\n // test checks if both a and b are not NaN\n return !(a !== a && b !== b) && a !== b;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction stringify$1(value) {\n if (typeof value == 'function')\n return value.name || value;\n if (typeof value == 'string')\n return value;\n if (value == null)\n return '';\n return '' + value;\n}\n/**\n * Creates an ElementRef for a given node injector and stores it on the injector.\n * Or, if the ElementRef already exists, retrieves the existing ElementRef.\n *\n * @param {?} di The node injector where we should store a created ElementRef\n * @return {?} The ElementRef instance to use\n */\n\n/**\n * Creates a TemplateRef and stores it on the injector. Or, if the TemplateRef already\n * exists, retrieves the existing TemplateRef.\n *\n * @template T\n * @param {?} di The node injector where we should store a created TemplateRef\n * @return {?} The TemplateRef instance to use\n */\n\n/**\n * Creates a ViewContainerRef and stores it on the injector. Or, if the ViewContainerRef\n * already exists, retrieves the existing ViewContainerRef.\n *\n * @param {?} di\n * @return {?} The ViewContainerRef instance to use\n */\n\n/**\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 * A predicate which determines if a given element/directive should be included in the query\n * @record\n */\n\nvar QueryList_ = /** @class */ (function () {\n function QueryList_() {\n this.dirty = false;\n /**\n * \\@internal\n */\n this._valuesTree = null;\n /**\n * \\@internal\n */\n this._values = null;\n }\n Object.defineProperty(QueryList_.prototype, \"length\", {\n get: /**\n * @return {?}\n */\n function () {\n ngDevMode && assertNotNull(this._values, 'refreshed');\n return /** @type {?} */ ((this._values)).length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(QueryList_.prototype, \"first\", {\n get: /**\n * @return {?}\n */\n function () {\n ngDevMode && assertNotNull(this._values, 'refreshed');\n var /** @type {?} */ values = /** @type {?} */ ((this._values));\n return values.length ? values[0] : null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(QueryList_.prototype, \"last\", {\n get: /**\n * @return {?}\n */\n function () {\n ngDevMode && assertNotNull(this._values, 'refreshed');\n var /** @type {?} */ values = /** @type {?} */ ((this._values));\n return values.length ? values[values.length - 1] : null;\n },\n enumerable: true,\n configurable: true\n });\n /** @internal */\n /**\n * \\@internal\n * @return {?}\n */\n QueryList_.prototype._refresh = /**\n * \\@internal\n * @return {?}\n */\n function () {\n // TODO(misko): needs more logic to flatten tree.\n if (this._values === null) {\n this._values = this._valuesTree;\n return true;\n }\n return false;\n };\n /**\n * @template U\n * @param {?} fn\n * @return {?}\n */\n QueryList_.prototype.map = /**\n * @template U\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n throw new Error('Method not implemented.');\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n QueryList_.prototype.filter = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n throw new Error('Method not implemented.');\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n QueryList_.prototype.find = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n throw new Error('Method not implemented.');\n };\n /**\n * @template U\n * @param {?} fn\n * @param {?} init\n * @return {?}\n */\n QueryList_.prototype.reduce = /**\n * @template U\n * @param {?} fn\n * @param {?} init\n * @return {?}\n */\n function (fn, init) {\n throw new Error('Method not implemented.');\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n QueryList_.prototype.forEach = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n throw new Error('Method not implemented.');\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n QueryList_.prototype.some = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n throw new Error('Method not implemented.');\n };\n /**\n * @return {?}\n */\n QueryList_.prototype.toArray = /**\n * @return {?}\n */\n function () {\n ngDevMode && assertNotNull(this._values, 'refreshed');\n return /** @type {?} */ ((this._values));\n };\n /**\n * @return {?}\n */\n QueryList_.prototype.toString = /**\n * @return {?}\n */\n function () { throw new Error('Method not implemented.'); };\n /**\n * @param {?} res\n * @return {?}\n */\n QueryList_.prototype.reset = /**\n * @param {?} res\n * @return {?}\n */\n function (res) { throw new Error('Method not implemented.'); };\n /**\n * @return {?}\n */\n QueryList_.prototype.notifyOnChanges = /**\n * @return {?}\n */\n function () { throw new Error('Method not implemented.'); };\n /**\n * @return {?}\n */\n QueryList_.prototype.setDirty = /**\n * @return {?}\n */\n function () { throw new Error('Method not implemented.'); };\n /**\n * @return {?}\n */\n QueryList_.prototype.destroy = /**\n * @return {?}\n */\n function () { throw new Error('Method not implemented.'); };\n return QueryList_;\n}());\n\n/**\n * @param {?} query\n * @return {?}\n */\n\n/**\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/** @enum {number} */\nvar RendererStyleFlags3 = {\n Important: 1,\n DashCase: 2,\n};\nRendererStyleFlags3[RendererStyleFlags3.Important] = \"Important\";\nRendererStyleFlags3[RendererStyleFlags3.DashCase] = \"DashCase\";\n/**\n * Object Oriented style of API needed to create elements and text nodes.\n *\n * This is the native browser API style, e.g. operations are methods on individual objects\n * like HTMLElement. With this style, no additional code is needed as a facade\n * (reducing payload size).\n *\n * @record\n */\n\n/**\n * Procedural style of API needed to create elements and text nodes.\n *\n * In non-native browser environments (e.g. platforms such as web-workers), this is the\n * facade that enables element manipulation. This also facilitates backwards compatibility\n * with Renderer2.\n * @record\n */\n\n/**\n * @record\n */\n\nvar domRendererFactory3 = {\n createRenderer: function (hostElement, rendererType) { return document; }\n};\n/**\n * Subset of API needed for appending elements and text nodes.\n * @record\n */\n\n/**\n * Subset of API needed for writing attributes, properties, and setting up\n * listeners on Element.\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\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 * Directive (D) sets a property on all component instances using this constant as a key and the\n * component's host node (LElement) as the value. This is used in methods like detectChanges to\n * facilitate jumping from an instance to the host node.\n */\nvar NG_HOST_SYMBOL = '__ngHostLNode__';\n/**\n * This property gets set before entering a template.\n *\n * This renderer can be one of two varieties of Renderer3:\n *\n * - ObjectedOrientedRenderer3\n *\n * This is the native browser API style, e.g. operations are methods on individual objects\n * like HTMLElement. With this style, no additional code is needed as a facade (reducing payload\n * size).\n *\n * - ProceduralRenderer3\n *\n * In non-native browser environments (e.g. platforms such as web-workers), this is the facade\n * that enables element manipulation. This also facilitates backwards compatibility with\n * Renderer2.\n */\nvar renderer;\nvar rendererFactory;\n/**\n * Used to set the parent property when nodes are created.\n */\nvar previousOrParentNode;\n/**\n * If `isParent` is:\n * - `true`: then `previousOrParentNode` points to a parent node.\n * - `false`: then `previousOrParentNode` points to previous node (sibling).\n */\nvar isParent;\n/**\n * The current template's static data (shared between all templates of a\n * given type).\n *\n * Each node's static data is stored at the same index that it's stored\n * in the data array. Any nodes that do not have static data store a null\n * value to avoid a sparse array.\n */\nvar ngStaticData;\n/**\n * State of the current view being processed.\n */\nvar currentView;\n// The initialization has to be after the `let`, otherwise `createViewState` can't see `let`.\ncurrentView = createViewState(/** @type {?} */ ((null)), /** @type {?} */ ((null)), []);\nvar currentQuery;\n/**\n * This property gets set before entering a template.\n */\nvar creationMode;\n/**\n * An array of nodes (text, element, container, etc), their bindings, and\n * any local variables that need to be stored between invocations.\n */\nvar data;\n/**\n * Points to the next binding index to read or write to.\n */\nvar bindingIndex;\n/**\n * When a view is destroyed, listeners need to be released\n * and onDestroy callbacks need to be called. This cleanup array\n * stores both listener data (in chunks of 4) and onDestroy data\n * (in chunks of 2), as they'll be processed at the same time.\n *\n * If it's a listener being stored:\n * 1st index is: event name to remove\n * 2nd index is: native element\n * 3rd index is: listener function\n * 4th index is: useCapture boolean\n *\n * If it's an onDestroy function:\n * 1st index is: onDestroy function\n * 2nd index is: context for function\n */\nvar cleanup;\n/**\n * Index in the data array at which view hooks begin to be stored.\n */\nvar viewHookStartIndex;\n/**\n * Swap the current state with a new state.\n *\n * For performance reasons we store the state in the top level of the module.\n * This way we minimize the number of properties to read. Whenever a new view\n * is entered we have to store the state for later, and when the view is\n * exited the state has to be restored\n *\n * @param {?} newViewState New state to become active\n * @param {?} host Element to which the View is a child of\n * @return {?} the previous state;\n */\nfunction enterView(newViewState, host) {\n var /** @type {?} */ oldViewState = currentView;\n data = newViewState.data;\n bindingIndex = newViewState.bindingStartIndex || 0;\n ngStaticData = newViewState.ngStaticData;\n creationMode = newViewState.creationMode;\n viewHookStartIndex = newViewState.viewHookStartIndex;\n cleanup = newViewState.cleanup;\n renderer = newViewState.renderer;\n if (host != null) {\n previousOrParentNode = host;\n isParent = true;\n }\n currentView = newViewState;\n return /** @type {?} */ ((oldViewState));\n}\n/**\n * Used in lieu of enterView to make it clear when we are exiting a child view. This makes\n * the direction of traversal (up or down the view tree) a bit clearer.\n * @param {?} newViewState\n * @return {?}\n */\nfunction leaveView(newViewState) {\n executeViewHooks();\n enterView(newViewState, null);\n}\n/**\n * @param {?} viewId\n * @param {?} renderer\n * @param {?} ngStaticData\n * @return {?}\n */\nfunction createViewState(viewId, renderer, ngStaticData) {\n var /** @type {?} */ newView = {\n parent: currentView,\n id: viewId,\n // -1 for component views\n node: /** @type {?} */ ((null)),\n // until we initialize it in createNode.\n data: [],\n ngStaticData: ngStaticData,\n cleanup: null,\n renderer: renderer,\n child: null,\n tail: null,\n next: null,\n bindingStartIndex: null,\n creationMode: true,\n viewHookStartIndex: null\n };\n return newView;\n}\n/**\n * @param {?} index\n * @param {?} type\n * @param {?} native\n * @param {?=} state\n * @return {?}\n */\nfunction createLNode(index, type, native, state) {\n var /** @type {?} */ parent = isParent ? previousOrParentNode :\n previousOrParentNode && /** @type {?} */ (previousOrParentNode.parent);\n var /** @type {?} */ query = (isParent ? currentQuery : previousOrParentNode && previousOrParentNode.query) ||\n parent && parent.query && parent.query.child();\n var /** @type {?} */ isState = state != null;\n var /** @type {?} */ node = {\n flags: type,\n native: /** @type {?} */ (native),\n view: currentView,\n parent: /** @type {?} */ (parent),\n child: null,\n next: null,\n nodeInjector: parent ? parent.nodeInjector : null,\n data: isState ? /** @type {?} */ (state) : null,\n query: query,\n staticData: null\n };\n if ((type & 2 /* ViewOrElement */) === 2 /* ViewOrElement */ && isState) {\n // Bit of a hack to bust through the readonly because there is a circular dep between\n // ViewState and LNode.\n ngDevMode && assertEqual((/** @type {?} */ (state)).node, null, 'viewState.node');\n (/** @type {?} */ ((state))).node = node;\n }\n if (index != null) {\n // We are Element or Container\n ngDevMode && assertEqual(data.length, index, 'data.length not in sequence');\n data[index] = node;\n // Every node adds a value to the static data array to avoid a sparse array\n if (index >= ngStaticData.length) {\n ngStaticData[index] = null;\n }\n else {\n node.staticData = /** @type {?} */ (ngStaticData[index]);\n }\n // Now link ourselves into the tree.\n if (isParent) {\n currentQuery = null;\n if (previousOrParentNode.view === currentView ||\n (previousOrParentNode.flags & 3 /* TYPE_MASK */) === 2 /* View */) {\n // We are in the same view, which means we are adding content node to the parent View.\n ngDevMode && assertEqual(previousOrParentNode.child, null, 'previousNode.child');\n previousOrParentNode.child = node;\n }\n else {\n // We are adding component view, so we don't link parent node child to this node.\n }\n }\n else if (previousOrParentNode) {\n ngDevMode && assertEqual(previousOrParentNode.next, null, 'previousNode.next');\n previousOrParentNode.next = node;\n }\n }\n previousOrParentNode = node;\n isParent = true;\n return node;\n}\n/**\n * Resets the application state.\n * @return {?}\n */\nfunction resetApplicationState() {\n isParent = false;\n previousOrParentNode = /** @type {?} */ ((null));\n}\n/**\n *\n * @template T\n * @param {?} hostNode\n * @param {?} template Template function with the instructions.\n * @param {?} context to pass into the template.\n * @param {?} providedRendererFactory\n * @param {?} host Existing node to render into.\n * @return {?}\n */\n\n/**\n * @template T\n * @param {?} node\n * @param {?} viewState\n * @param {?} componentOrContext\n * @param {?=} template\n * @return {?}\n */\nfunction renderComponentOrTemplate(node, viewState, componentOrContext, template) {\n var /** @type {?} */ oldView = enterView(viewState, node);\n try {\n if (rendererFactory.begin) {\n rendererFactory.begin();\n }\n if (template) {\n ngStaticData = template.ngStaticData || (template.ngStaticData = /** @type {?} */ ([]));\n template(/** @type {?} */ ((componentOrContext)), creationMode);\n }\n else {\n // Element was stored at 0 and directive was stored at 1 in renderComponent\n // so to refresh the component, r() needs to be called with (1, 0)\n (/** @type {?} */ (componentOrContext.constructor)).ngComponentDef.r(1, 0);\n }\n }\n finally {\n if (rendererFactory.end) {\n rendererFactory.end();\n }\n viewState.creationMode = false;\n leaveView(oldView);\n }\n}\n/**\n * @return {?}\n */\n\n/**\n * Makes a directive public to the DI system by adding it to an injector's bloom filter.\n *\n * @param {?} def The definition of the directive to be made public\n * @return {?}\n */\n\n/**\n * Searches for an instance of the given directive type up the injector tree and returns\n * that instance if found.\n *\n * If not found, it will propagate up to the next parent injector until the token\n * is found or the top is reached.\n *\n * Usage example (in factory function):\n *\n * class SomeDirective {\n * constructor(directive: DirectiveA) {}\n *\n * static ngDirectiveDef = defineDirective({\n * type: SomeDirective,\n * factory: () => new SomeDirective(inject(DirectiveA))\n * });\n * }\n *\n * @template T\n * @param {?} token The directive type to search for\n * @param {?=} flags Injection flags (e.g. CheckParent)\n * @return {?} The instance found\n */\n\n/**\n * Creates an ElementRef and stores it on the injector.\n * Or, if the ElementRef already exists, retrieves the existing ElementRef.\n *\n * @return {?} The ElementRef instance to use\n */\n\n/**\n * Creates a TemplateRef and stores it on the injector. Or, if the TemplateRef already\n * exists, retrieves the existing TemplateRef.\n *\n * @template T\n * @return {?} The TemplateRef instance to use\n */\n\n/**\n * Creates a ViewContainerRef and stores it on the injector. Or, if the ViewContainerRef\n * already exists, retrieves the existing ViewContainerRef.\n *\n * @return {?} The ViewContainerRef instance to use\n */\n\n/**\n * Create DOM element. The instruction must later be followed by `elementEnd()` call.\n *\n * @param {?} index Index of the element in the data array\n * @param {?=} nameOrComponentDef Name of the DOM Node or `ComponentDef`.\n * @param {?=} attrs Statically bound set of attributes to be written into the DOM element on creation.\n * @param {?=} localName A name under which a given element is exported.\n *\n * Attributes are passed as an array of strings where elements with an even index hold an attribute\n * name and elements with an odd index hold an attribute value, ex.:\n * ['id', 'warning5', 'class', 'alert']\n * @return {?}\n */\nfunction elementStart(index, nameOrComponentDef, attrs, localName) {\n var /** @type {?} */ node;\n var /** @type {?} */ native;\n if (nameOrComponentDef == null) {\n // native node retrieval - used for exporting elements as tpl local variables (<div #foo>)\n var /** @type {?} */ node_1 = /** @type {?} */ ((data[index]));\n native = node_1 && (/** @type {?} */ (node_1)).native;\n }\n else {\n ngDevMode && assertEqual(currentView.bindingStartIndex, null, 'bindingStartIndex');\n var /** @type {?} */ isHostElement = typeof nameOrComponentDef !== 'string';\n var /** @type {?} */ name_1 = isHostElement ? (/** @type {?} */ (nameOrComponentDef)).tag : /** @type {?} */ (nameOrComponentDef);\n if (name_1 === null) {\n // TODO: future support for nameless components.\n throw 'for now name is required';\n }\n else {\n native = renderer.createElement(name_1);\n var /** @type {?} */ componentView = null;\n if (isHostElement) {\n var /** @type {?} */ ngStaticData_1 = getTemplateStatic((/** @type {?} */ (nameOrComponentDef)).template);\n componentView = addToViewTree(createViewState(-1, rendererFactory.createRenderer(native, (/** @type {?} */ (nameOrComponentDef)).rendererType), ngStaticData_1));\n }\n // Only component views should be added to the view tree directly. Embedded views are\n // accessed through their containers because they may be removed / re-added later.\n node = createLNode(index, 3 /* Element */, native, componentView);\n if (node.staticData == null) {\n ngDevMode && assertDataInRange(index - 1);\n node.staticData = ngStaticData[index] =\n createNodeStatic(name_1, attrs || null, null, localName || null);\n }\n if (attrs)\n setUpAttributes(native, attrs);\n appendChild(/** @type {?} */ ((node.parent)), native, currentView);\n }\n }\n return native;\n}\n/**\n * Gets static data from a template function or creates a new static\n * data array if it doesn't already exist.\n *\n * @param {?} template The template from which to get static data\n * @return {?} NgStaticData\n */\nfunction getTemplateStatic(template) {\n return template.ngStaticData || (template.ngStaticData = /** @type {?} */ ([]));\n}\n/**\n * @param {?} native\n * @param {?} attrs\n * @return {?}\n */\nfunction setUpAttributes(native, attrs) {\n ngDevMode && assertEqual(attrs.length % 2, 0, 'attrs.length % 2');\n var /** @type {?} */ isProceduralRenderer = (/** @type {?} */ (renderer)).setAttribute;\n for (var /** @type {?} */ i = 0; i < attrs.length; i += 2) {\n isProceduralRenderer ? /** @type {?} */ (((/** @type {?} */ (renderer)).setAttribute))(native, attrs[i], attrs[i | 1]) :\n native.setAttribute(attrs[i], attrs[i | 1]);\n }\n}\n/**\n * @param {?} text\n * @param {?} token\n * @return {?}\n */\nfunction createError(text, token) {\n return new Error(\"Renderer: \" + text + \" [\" + stringify$1(token) + \"]\");\n}\n/**\n * Locates the host native element, used for bootstrapping existing nodes into rendering pipeline.\n *\n * @param {?} factory\n * @param {?} elementOrSelector Render element or CSS selector to locate the element.\n * @return {?}\n */\nfunction locateHostElement(factory, elementOrSelector) {\n ngDevMode && assertDataInRange(-1);\n rendererFactory = factory;\n var /** @type {?} */ defaultRenderer = factory.createRenderer(null, null);\n var /** @type {?} */ rNode = typeof elementOrSelector === 'string' ?\n ((/** @type {?} */ (defaultRenderer)).selectRootElement ?\n (/** @type {?} */ (defaultRenderer)).selectRootElement(elementOrSelector) : /** @type {?} */ (((/** @type {?} */ (defaultRenderer)).querySelector))(elementOrSelector)) :\n elementOrSelector;\n if (ngDevMode && !rNode) {\n if (typeof elementOrSelector === 'string') {\n throw createError('Host node with selector not found:', elementOrSelector);\n }\n else {\n throw createError('Host node is required:', elementOrSelector);\n }\n }\n return rNode;\n}\n/**\n * Creates the host LNode..\n *\n * @param {?} rNode Render host element.\n * @param {?} def\n * @return {?}\n */\nfunction hostElement(rNode, def) {\n resetApplicationState();\n createLNode(0, 3 /* Element */, rNode, createViewState(-1, renderer, getTemplateStatic(def.template)));\n}\n/**\n * Adds an event listener to the current node.\n *\n * If an output exists on one of the node's directives, it also subscribes to the output\n * and saves the subscription for later cleanup.\n *\n * @param {?} eventName Name of the event\n * @param {?} listener The function to be called when event emits\n * @param {?=} useCapture Whether or not to use capture in event listener.\n * @return {?}\n */\n\n/**\n * Mark the end of the element.\n * @return {?}\n */\nfunction elementEnd() {\n if (isParent) {\n isParent = false;\n }\n else {\n ngDevMode && assertHasParent();\n previousOrParentNode = /** @type {?} */ ((previousOrParentNode.parent));\n }\n ngDevMode && assertNodeType(previousOrParentNode, 3 /* Element */);\n var /** @type {?} */ query = previousOrParentNode.query;\n query && query.addNode(previousOrParentNode);\n}\n/**\n * Update an attribute on an Element. This is used with a `bind` instruction.\n *\n * @param {?} index The index of the element to update in the data array\n * @param {?} attrName Name of attribute. Because it is going to DOM, this is not subject to\n * renaming as port of minification.\n * @param {?} value Value to write. This value will go through stringification.\n * @return {?}\n */\n\n/**\n * Update a property on an Element.\n *\n * If the property name also exists as an input property on one of the element's directives,\n * the component property will be set instead of the element property. This check must\n * be conducted at runtime so child components that add new \\@Inputs don't have to be re-compiled.\n *\n * @template T\n * @param {?} index The index of the element to update in the data array\n * @param {?} propName Name of property. Because it is going to DOM, this is not subject to\n * renaming as part of minification.\n * @param {?} value New value to write.\n * @return {?}\n */\nfunction elementProperty(index, propName, value) {\n if (value === NO_CHANGE)\n return;\n var /** @type {?} */ node = /** @type {?} */ (data[index]);\n var /** @type {?} */ staticData = /** @type {?} */ ((node.staticData));\n // if staticData.inputs is undefined, a listener has created output staticData, but inputs haven't\n // yet been checked\n if (staticData.inputs === undefined) {\n // mark inputs as checked\n staticData.inputs = null;\n staticData = generatePropertyAliases(node.flags, staticData, true);\n }\n var /** @type {?} */ inputData = staticData.inputs;\n var /** @type {?} */ dataValue;\n if (inputData && (dataValue = inputData[propName])) {\n setInputsForProperty(dataValue, value);\n }\n else {\n var /** @type {?} */ native = node.native;\n (/** @type {?} */ (renderer)).setProperty ?\n (/** @type {?} */ (renderer)).setProperty(native, propName, value) :\n native.setProperty ? native.setProperty(propName, value) :\n (/** @type {?} */ (native))[propName] = value;\n }\n}\n/**\n * Constructs a LNodeStatic object from the arguments.\n *\n * @param {?} tagName\n * @param {?} attrs\n * @param {?} containerStatic\n * @param {?} localName\n * @return {?} the LNodeStatic object\n */\nfunction createNodeStatic(tagName, attrs, containerStatic, localName) {\n return {\n tagName: tagName,\n attrs: attrs,\n localNames: localName ? [localName, -1] : null,\n initialInputs: undefined,\n inputs: undefined,\n outputs: undefined,\n containerStatic: containerStatic\n };\n}\n/**\n * Given a list of directive indices and minified input names, sets the\n * input properties on the corresponding directives.\n * @param {?} inputs\n * @param {?} value\n * @return {?}\n */\nfunction setInputsForProperty(inputs, value) {\n for (var /** @type {?} */ i = 0; i < inputs.length; i += 2) {\n ngDevMode && assertDataInRange(/** @type {?} */ (inputs[i]));\n data[/** @type {?} */ (inputs[i])][inputs[i | 1]] = value;\n }\n}\n/**\n * This function consolidates all the inputs or outputs defined by directives\n * on this node into one object and stores it in ngStaticData so it can\n * be shared between all templates of this type.\n *\n * @param {?} flags\n * @param {?} data\n * @param {?=} isInputData\n * @return {?}\n */\nfunction generatePropertyAliases(flags, data, isInputData) {\n if (isInputData === void 0) { isInputData = false; }\n var /** @type {?} */ start = flags >> 12;\n var /** @type {?} */ size = (flags & 4092 /* SIZE_MASK */) >> 2;\n for (var /** @type {?} */ i = start, /** @type {?} */ ii = start + size; i < ii; i++) {\n var /** @type {?} */ directiveDef = /** @type {?} */ (((ngStaticData))[i]);\n var /** @type {?} */ propertyAliasMap = isInputData ? directiveDef.inputs : directiveDef.outputs;\n for (var /** @type {?} */ publicName in propertyAliasMap) {\n if (propertyAliasMap.hasOwnProperty(publicName)) {\n var /** @type {?} */ internalName = propertyAliasMap[publicName];\n var /** @type {?} */ staticDirData = isInputData ? (data.inputs || (data.inputs = {})) :\n (data.outputs || (data.outputs = {}));\n var /** @type {?} */ hasProperty = staticDirData.hasOwnProperty(publicName);\n hasProperty ? staticDirData[publicName].push(i, internalName) :\n (staticDirData[publicName] = [i, internalName]);\n }\n }\n }\n return data;\n}\n/**\n * Add or remove a class in a classList.\n *\n * This instruction is meant to handle the [class.foo]=\"exp\" case\n *\n * @template T\n * @param {?} index The index of the element to update in the data array\n * @param {?} className Name of class to toggle. Because it is going to DOM, this is not subject to\n * renaming as part of minification.\n * @param {?} value A value indicating if a given class should be added or removed.\n * @return {?}\n */\n\n/**\n * Update a given style on an Element.\n *\n * @template T\n * @param {?} index Index of the element to change in the data array\n * @param {?} styleName Name of property. Because it is going to DOM this is not subject to\n * renaming as part of minification.\n * @param {?} value New value to write (null to remove).\n * @param {?=} suffix Suffix to add to style's value (optional).\n * @return {?}\n */\nfunction elementStyle(index, styleName, value, suffix) {\n if (value !== NO_CHANGE) {\n var /** @type {?} */ lElement = /** @type {?} */ (data[index]);\n if (value == null) {\n (/** @type {?} */ (renderer)).removeStyle ?\n (/** @type {?} */ (renderer))\n .removeStyle(lElement.native, styleName, RendererStyleFlags3.DashCase) :\n lElement.native.style.removeProperty(styleName);\n }\n else {\n (/** @type {?} */ (renderer)).setStyle ?\n (/** @type {?} */ (renderer))\n .setStyle(lElement.native, styleName, suffix ? stringify$1(value) + suffix : stringify$1(value), RendererStyleFlags3.DashCase) :\n lElement.native.style.setProperty(styleName, suffix ? stringify$1(value) + suffix : stringify$1(value));\n }\n }\n}\n/**\n * Create static text node\n *\n * @param {?} index Index of the node in the data array.\n * @param {?=} value Value to write. This value will be stringified.\n * If value is not provided than the actual creation of the text node is delayed.\n * @return {?}\n */\nfunction text(index, value) {\n ngDevMode && assertEqual(currentView.bindingStartIndex, null, 'bindingStartIndex');\n var /** @type {?} */ textNode = value != null ?\n ((/** @type {?} */ (renderer)).createText ?\n (/** @type {?} */ (renderer)).createText(stringify$1(value)) : /** @type {?} */ (((/** @type {?} */ (renderer)).createTextNode))(stringify$1(value))) :\n null;\n var /** @type {?} */ node = createLNode(index, 3 /* Element */, textNode);\n // Text nodes are self closing.\n isParent = false;\n appendChild(/** @type {?} */ ((node.parent)), textNode, currentView);\n}\n/**\n * Create text node with binding\n * Bindings should be handled externally with the proper bind(1-8) method\n *\n * @template T\n * @param {?} index Index of the node in the data array.\n * @param {?} value Stringified value to write.\n * @return {?}\n */\nfunction textBinding(index, value) {\n // TODO(misko): I don't think index < nodes.length check is needed here.\n var /** @type {?} */ existingNode = index < data.length && /** @type {?} */ (data[index]);\n if (existingNode && existingNode.native) {\n // If DOM node exists and value changed, update textContent\n value !== NO_CHANGE &&\n ((/** @type {?} */ (renderer)).setValue ?\n (/** @type {?} */ (renderer)).setValue(existingNode.native, stringify$1(value)) :\n existingNode.native.textContent = stringify$1(value));\n }\n else if (existingNode) {\n // Node was created but DOM node creation was delayed. Create and append now.\n existingNode.native =\n ((/** @type {?} */ (renderer)).createText ?\n (/** @type {?} */ (renderer)).createText(stringify$1(value)) : /** @type {?} */ (((/** @type {?} */ (renderer)).createTextNode))(stringify$1(value)));\n insertChild(existingNode, currentView);\n }\n else {\n text(index, value);\n }\n}\n/**\n * @template T\n * @param {?} index\n * @param {?=} directive\n * @param {?=} directiveDef\n * @param {?=} localName\n * @return {?}\n */\nfunction directive(index, directive, directiveDef, localName) {\n var /** @type {?} */ instance;\n if (directive == null) {\n // return existing\n ngDevMode && assertDataInRange(index);\n instance = data[index];\n }\n else {\n ngDevMode && assertEqual(currentView.bindingStartIndex, null, 'bindingStartIndex');\n ngDevMode && assertPreviousIsParent();\n var /** @type {?} */ flags = /** @type {?} */ ((previousOrParentNode)).flags;\n var /** @type {?} */ size = flags & 4092;\n if (size === 0) {\n flags =\n (index << 12 /* INDX_SHIFT */) | 4 /* SIZE_SKIP */ | flags & 3 /* TYPE_MASK */;\n }\n else {\n flags += 4 /* SIZE_SKIP */;\n } /** @type {?} */\n ((previousOrParentNode)).flags = flags;\n ngDevMode && assertDataInRange(index - 1);\n Object.defineProperty(directive, NG_HOST_SYMBOL, { enumerable: false, value: previousOrParentNode });\n data[index] = instance = directive;\n if (index >= ngStaticData.length) {\n ngStaticData[index] = /** @type {?} */ ((directiveDef));\n if (localName) {\n ngDevMode &&\n assertNotNull(previousOrParentNode.staticData, 'previousOrParentNode.staticData');\n var /** @type {?} */ nodeStaticData = /** @type {?} */ ((/** @type {?} */ ((previousOrParentNode)).staticData));\n (nodeStaticData.localNames || (nodeStaticData.localNames = [])).push(localName, index);\n }\n }\n var /** @type {?} */ diPublic_1 = /** @type {?} */ ((directiveDef)).diPublic;\n if (diPublic_1) {\n diPublic_1(/** @type {?} */ ((directiveDef)));\n }\n var /** @type {?} */ staticData = /** @type {?} */ ((previousOrParentNode.staticData));\n if (staticData && staticData.attrs) {\n setInputsFromAttrs(instance, /** @type {?} */ ((directiveDef)).inputs, staticData);\n }\n }\n return instance;\n}\n/**\n * Sets initial input properties on directive instances from attribute data\n *\n * @template T\n * @param {?} instance Instance of the directive on which to set the initial inputs\n * @param {?} inputs The list of inputs from the directive def\n * @param {?} staticData The static data for this node\n * @return {?}\n */\nfunction setInputsFromAttrs(instance, inputs, staticData) {\n var /** @type {?} */ directiveIndex = ((previousOrParentNode.flags & 4092 /* SIZE_MASK */) >> 2 /* SIZE_SHIFT */) - 1;\n var /** @type {?} */ initialInputData = /** @type {?} */ (staticData.initialInputs);\n if (initialInputData === undefined || directiveIndex >= initialInputData.length) {\n initialInputData = generateInitialInputs(directiveIndex, inputs, staticData);\n }\n var /** @type {?} */ initialInputs = initialInputData[directiveIndex];\n if (initialInputs) {\n for (var /** @type {?} */ i = 0; i < initialInputs.length; i += 2) {\n (/** @type {?} */ (instance))[initialInputs[i]] = initialInputs[i | 1];\n }\n }\n}\n/**\n * Generates initialInputData for a node and stores it in the template's static storage\n * so subsequent template invocations don't have to recalculate it.\n *\n * initialInputData is an array containing values that need to be set as input properties\n * for directives on this node, but only once on creation. We need this array to support\n * the case where you set an \\@Input property of a directive using attribute-like syntax.\n * e.g. if you have a `name` \\@Input, you can set it once like this:\n *\n * <my-component name=\"Bess\"></my-component>\n *\n * @param {?} directiveIndex Index to store the initial input data\n * @param {?} inputs The list of inputs from the directive def\n * @param {?} staticData The static data on this node\n * @return {?}\n */\nfunction generateInitialInputs(directiveIndex, inputs, staticData) {\n var /** @type {?} */ initialInputData = staticData.initialInputs || (staticData.initialInputs = []);\n initialInputData[directiveIndex] = null;\n var /** @type {?} */ attrs = /** @type {?} */ ((staticData.attrs));\n for (var /** @type {?} */ i = 0; i < attrs.length; i += 2) {\n var /** @type {?} */ attrName = attrs[i];\n var /** @type {?} */ minifiedInputName = inputs[attrName];\n if (minifiedInputName !== undefined) {\n var /** @type {?} */ inputsToStore = initialInputData[directiveIndex] || (initialInputData[directiveIndex] = []);\n inputsToStore.push(minifiedInputName, attrs[i | 1]);\n }\n }\n return initialInputData;\n}\n/**\n * @param {?} lifecycle\n * @param {?=} self\n * @param {?=} method\n * @return {?}\n */\n\n/**\n * Iterates over view hook functions and calls them.\n * @return {?}\n */\nfunction executeViewHooks() {\n if (viewHookStartIndex == null)\n return;\n // Instead of using splice to remove init hooks after their first run (expensive), we\n // shift over the AFTER_CHECKED hooks as we call them and truncate once at the end.\n var /** @type {?} */ checkIndex = /** @type {?} */ (viewHookStartIndex);\n var /** @type {?} */ writeIndex = checkIndex;\n while (checkIndex < data.length) {\n // Call lifecycle hook with its context\n data[checkIndex + 1].call(data[checkIndex + 2]);\n if (data[checkIndex] === 16 /* AFTER_VIEW_CHECKED */) {\n // We know if the writeIndex falls behind that there is an init that needs to\n // be overwritten.\n if (writeIndex < checkIndex) {\n data[writeIndex] = data[checkIndex];\n data[writeIndex + 1] = data[checkIndex + 1];\n data[writeIndex + 2] = data[checkIndex + 2];\n }\n writeIndex += 3;\n }\n checkIndex += 3;\n }\n // Truncate once at the writeIndex\n data.length = writeIndex;\n}\n/**\n * Creates an LContainer.\n *\n * Only `LView`s can go into `LContainer`.\n *\n * @param {?} index The index of the container in the data array\n * @param {?=} template Optional inline template\n * @param {?=} tagName The name of the container element, if applicable\n * @param {?=} attrs The attrs attached to the container, if applicable\n * @param {?=} localName\n * @return {?}\n */\nfunction containerStart(index, template, tagName, attrs, localName) {\n ngDevMode && assertEqual(currentView.bindingStartIndex, null, 'bindingStartIndex');\n // If the direct parent of the container is a view, its views (including its comment)\n // will need to be added through insertView() when its parent view is being inserted.\n // For now, it is marked \"headless\" so we know to append its views later.\n var /** @type {?} */ comment = renderer.createComment(ngDevMode ? 'container' : '');\n var /** @type {?} */ renderParent = null;\n var /** @type {?} */ currentParent = isParent ? previousOrParentNode : /** @type {?} */ ((previousOrParentNode.parent));\n ngDevMode && assertNotEqual(currentParent, null, 'currentParent');\n if (appendChild(currentParent, comment, currentView)) {\n // we are adding to an Element which is either:\n // - Not a component (will not be re-projected, just added)\n // - View of the Component\n renderParent = /** @type {?} */ (currentParent);\n }\n var /** @type {?} */ node = createLNode(index, 0 /* Container */, comment, /** @type {?} */ ({\n views: [],\n nextIndex: 0, renderParent: renderParent,\n template: template == null ? null : template,\n next: null,\n parent: currentView\n }));\n if (node.staticData == null) {\n node.staticData = ngStaticData[index] =\n createNodeStatic(tagName || null, attrs || null, [], localName || null);\n }\n // Containers are added to the current view tree instead of their embedded views\n // because views can be removed and re-inserted.\n addToViewTree(node.data);\n}\n/**\n * @return {?}\n */\nfunction containerEnd() {\n if (isParent) {\n isParent = false;\n }\n else {\n ngDevMode && assertHasParent();\n previousOrParentNode = /** @type {?} */ ((previousOrParentNode.parent));\n }\n ngDevMode && assertNodeType(previousOrParentNode, 0 /* Container */);\n var /** @type {?} */ query = previousOrParentNode.query;\n query && query.addNode(previousOrParentNode);\n}\n/**\n * Sets a container up to receive views.\n *\n * @param {?} index The index of the container in the data array\n * @return {?}\n */\nfunction containerRefreshStart(index) {\n ngDevMode && assertDataInRange(index);\n previousOrParentNode = /** @type {?} */ (data[index]);\n ngDevMode && assertNodeType(previousOrParentNode, 0 /* Container */);\n isParent = true;\n (/** @type {?} */ (previousOrParentNode)).data.nextIndex = 0;\n}\n/**\n * Marks the end of the LContainer.\n *\n * Marking the end of ViewContainer is the time when to child Views get inserted or removed.\n * @return {?}\n */\nfunction containerRefreshEnd() {\n if (isParent) {\n isParent = false;\n }\n else {\n ngDevMode && assertNodeType(previousOrParentNode, 2 /* View */);\n ngDevMode && assertHasParent();\n previousOrParentNode = /** @type {?} */ ((previousOrParentNode.parent));\n }\n ngDevMode && assertNodeType(previousOrParentNode, 0 /* Container */);\n var /** @type {?} */ container = /** @type {?} */ (previousOrParentNode);\n ngDevMode && assertNodeType(container, 0 /* Container */);\n var /** @type {?} */ nextIndex = container.data.nextIndex;\n while (nextIndex < container.data.views.length) {\n // remove extra view.\n removeView(container, nextIndex);\n }\n}\n/**\n * Creates an LView.\n *\n * @param {?} viewBlockId The ID of this view\n * @return {?} Whether or not this view is in creation mode\n */\nfunction viewStart(viewBlockId) {\n var /** @type {?} */ container = /** @type {?} */ ((isParent ? previousOrParentNode : /** @type {?} */ ((previousOrParentNode.parent))));\n ngDevMode && assertNodeType(container, 0 /* Container */);\n var /** @type {?} */ containerState = container.data;\n var /** @type {?} */ views = containerState.views;\n var /** @type {?} */ existingView = !creationMode && containerState.nextIndex < views.length && views[containerState.nextIndex];\n var /** @type {?} */ viewUpdateMode = existingView && viewBlockId === (/** @type {?} */ (existingView)).data.id;\n if (viewUpdateMode) {\n previousOrParentNode = views[containerState.nextIndex++];\n ngDevMode && assertNodeType(previousOrParentNode, 2 /* View */);\n isParent = true;\n enterView((/** @type {?} */ (existingView)).data, /** @type {?} */ (previousOrParentNode));\n }\n else {\n // When we create a new View, we always reset the state of the instructions.\n var /** @type {?} */ newViewState = createViewState(viewBlockId, renderer, initViewStaticData(viewBlockId, container));\n enterView(newViewState, createLNode(null, 2 /* View */, null, newViewState));\n containerState.nextIndex++;\n }\n return !viewUpdateMode;\n}\n/**\n * Initialize the static data for the active view.\n *\n * Each embedded view needs to set the global ngStaticData variable to the static data for\n * that view. Otherwise, the view's static data for a particular node would overwrite\n * the staticdata for a node in the view above it with the same index (since it's in the\n * same template).\n *\n * @param {?} viewIndex The index of the view's static data in containerStatic\n * @param {?} parent The parent container in which to look for the view's static data\n * @return {?} NgStaticData\n */\nfunction initViewStaticData(viewIndex, parent) {\n ngDevMode && assertNodeType(parent, 0 /* Container */);\n var /** @type {?} */ containerStatic = (/** @type {?} */ (((parent)).staticData)).containerStatic;\n if (viewIndex >= containerStatic.length || containerStatic[viewIndex] == null) {\n containerStatic[viewIndex] = [];\n }\n return containerStatic[viewIndex];\n}\n/**\n * Marks the end of the LView.\n * @return {?}\n */\nfunction viewEnd() {\n isParent = false;\n var /** @type {?} */ viewNode = previousOrParentNode = /** @type {?} */ (currentView.node);\n var /** @type {?} */ container = /** @type {?} */ (previousOrParentNode.parent);\n ngDevMode && assertNodeType(viewNode, 2 /* View */);\n ngDevMode && assertNodeType(container, 0 /* Container */);\n var /** @type {?} */ containerState = container.data;\n var /** @type {?} */ previousView = containerState.nextIndex <= containerState.views.length ? /** @type {?} */ (containerState.views[containerState.nextIndex - 1]) :\n null;\n var /** @type {?} */ viewIdChanged = previousView == null ? true : previousView.data.id !== viewNode.data.id;\n if (viewIdChanged) {\n insertView(container, viewNode, containerState.nextIndex - 1);\n currentView.creationMode = false;\n }\n leaveView(/** @type {?} */ ((/** @type {?} */ ((currentView)).parent)));\n ngDevMode && assertEqual(isParent, false, 'isParent');\n ngDevMode && assertNodeType(previousOrParentNode, 2 /* View */);\n}\n/**\n * Refreshes the component view.\n *\n * In other words, enters the component's view and processes it to update bindings, queries, etc.\n *\n * @param directiveIndex\n * @param elementIndex\n * @param template\n */\nvar componentRefresh = function (directiveIndex, elementIndex, template) {\n ngDevMode && assertDataInRange(elementIndex);\n var /** @type {?} */ element = /** @type {?} */ (((data))[elementIndex]);\n ngDevMode && assertNodeType(element, 3 /* Element */);\n ngDevMode && assertNotEqual(element.data, null, 'isComponent');\n ngDevMode && assertDataInRange(directiveIndex);\n var /** @type {?} */ hostView = /** @type {?} */ ((element.data));\n ngDevMode && assertNotEqual(hostView, null, 'hostView');\n var /** @type {?} */ directive = data[directiveIndex];\n var /** @type {?} */ oldView = enterView(hostView, element);\n try {\n template(directive, creationMode);\n }\n finally {\n hostView.creationMode = false;\n leaveView(oldView);\n }\n};\n/**\n * Instruction to distribute projectable nodes among <ng-content> occurrences in a given template.\n * It takes all the selectors from the entire component's template and decides where\n * each projected node belongs (it re-distributes nodes among \"buckets\" where each \"bucket\" is\n * backed by a selector).\n *\n * @param {?=} selectors\n * @return {?}\n */\n\n/**\n * Inserts previously re-distributed projected nodes. This instruction must be preceded by a call\n * to the projectionDef instruction.\n *\n * @param {?} nodeIndex\n * @param {?} localIndex - index under which distribution of projected nodes was memorized\n * @param {?=} selectorIndex - 0 means <ng-content> without any selector\n * @return {?}\n */\n\n/**\n * Adds a ViewState or a ContainerState to the end of the current view tree.\n *\n * This structure will be used to traverse through nested views to remove listeners\n * and call onDestroy callbacks.\n *\n * @template T\n * @param {?} state The ViewState or ContainerState to add to the view tree\n * @return {?} The state passed in\n */\nfunction addToViewTree(state) {\n currentView.tail ? (currentView.tail.next = state) : (currentView.child = state);\n currentView.tail = state;\n return state;\n}\n/**\n * A special value which designates that a value has not changed.\n */\nvar NO_CHANGE = /** @type {?} */ ({});\n/**\n * Create interpolation bindings with variable number of arguments.\n *\n * If any of the arguments change, then the interpolation is concatenated\n * and causes an update.\n *\n * @param {?} values an array of values to diff.\n * @return {?}\n */\n\n/**\n * Create a single value binding without interpolation.\n *\n * @template T\n * @param {?} value Value to diff\n * @return {?}\n */\nfunction bind(value) {\n var /** @type {?} */ different;\n if (different = creationMode) {\n if (typeof currentView.bindingStartIndex !== 'number') {\n bindingIndex = currentView.bindingStartIndex = data.length;\n }\n data[bindingIndex++] = value;\n }\n else {\n if (different = value !== NO_CHANGE && isDifferent(data[bindingIndex], value)) {\n data[bindingIndex] = value;\n }\n bindingIndex++;\n }\n return different ? value : NO_CHANGE;\n}\n/**\n * Create an interpolation bindings with 1 arguments.\n *\n * @param {?} prefix static value used for concatenation only.\n * @param {?} value value checked for change.\n * @param {?} suffix static value used for concatenation only.\n * @return {?}\n */\nfunction bind1(prefix, value, suffix) {\n return bind(value) === NO_CHANGE ? NO_CHANGE : prefix + stringify$1(value) + suffix;\n}\n/**\n * Create an interpolation bindings with 2 arguments.\n *\n * @param {?} prefix\n * @param {?} v0 value checked for change\n * @param {?} i0\n * @param {?} v1 value checked for change\n * @param {?} suffix\n * @return {?}\n */\n\n/**\n * Create an interpolation bindings with 3 arguments.\n *\n * @param {?} prefix\n * @param {?} v0\n * @param {?} i0\n * @param {?} v1\n * @param {?} i1\n * @param {?} v2\n * @param {?} suffix\n * @return {?}\n */\n\n/**\n * Create an interpolation binding with 4 arguments.\n *\n * @param {?} prefix\n * @param {?} v0\n * @param {?} i0\n * @param {?} v1\n * @param {?} i1\n * @param {?} v2\n * @param {?} i2\n * @param {?} v3\n * @param {?} suffix\n * @return {?}\n */\n\n/**\n * Create an interpolation binding with 5 arguments.\n *\n * @param {?} prefix\n * @param {?} v0\n * @param {?} i0\n * @param {?} v1\n * @param {?} i1\n * @param {?} v2\n * @param {?} i2\n * @param {?} v3\n * @param {?} i3\n * @param {?} v4\n * @param {?} suffix\n * @return {?}\n */\n\n/**\n * Create an interpolation binding with 6 arguments.\n *\n * @param {?} prefix\n * @param {?} v0\n * @param {?} i0\n * @param {?} v1\n * @param {?} i1\n * @param {?} v2\n * @param {?} i2\n * @param {?} v3\n * @param {?} i3\n * @param {?} v4\n * @param {?} i4\n * @param {?} v5\n * @param {?} suffix\n * @return {?}\n */\n\n/**\n * Create an interpolation binding with 7 arguments.\n *\n * @param {?} prefix\n * @param {?} v0\n * @param {?} i0\n * @param {?} v1\n * @param {?} i1\n * @param {?} v2\n * @param {?} i2\n * @param {?} v3\n * @param {?} i3\n * @param {?} v4\n * @param {?} i4\n * @param {?} v5\n * @param {?} i5\n * @param {?} v6\n * @param {?} suffix\n * @return {?}\n */\n\n/**\n * Create an interpolation binding with 8 arguments.\n *\n * @param {?} prefix\n * @param {?} v0\n * @param {?} i0\n * @param {?} v1\n * @param {?} i1\n * @param {?} v2\n * @param {?} i2\n * @param {?} v3\n * @param {?} i3\n * @param {?} v4\n * @param {?} i4\n * @param {?} v5\n * @param {?} i5\n * @param {?} v6\n * @param {?} i6\n * @param {?} v7\n * @param {?} suffix\n * @return {?}\n */\n\n/**\n * @template T\n * @param {?} index\n * @param {?=} value\n * @return {?}\n */\n\n/**\n * @template T\n * @param {?} predicate\n * @param {?=} descend\n * @param {?=} read\n * @return {?}\n */\n\n/**\n * @return {?}\n */\nfunction assertPreviousIsParent() {\n assertEqual(isParent, true, 'isParent');\n}\n/**\n * @return {?}\n */\nfunction assertHasParent() {\n assertNotEqual(previousOrParentNode.parent, null, 'isParent');\n}\n/**\n * @param {?} index\n * @param {?=} arr\n * @return {?}\n */\nfunction assertDataInRange(index, arr) {\n if (arr == null)\n arr = data;\n assertLessThan(arr ? arr.length : 0, index, 'data.length');\n}\n\n/**\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 * Options that control how the component should be bootstrapped.\n * @record\n */\n\n/**\n * Bootstraps a component, then creates and returns a `ComponentRef` for that component.\n *\n * @template T\n * @param {?} componentType Component to bootstrap\n * @param {?} opts\n * @return {?}\n */\n\n// TODO: A hack to not pull in the NullInjector from @angular/core.\n\n/**\n * Bootstraps a Component into an existing host element and returns an instance\n * of the component.\n *\n * @template T\n * @param {?} componentType Component to bootstrap\n * @param {?=} opts\n * @return {?}\n */\nfunction renderComponent(componentType, opts) {\n if (opts === void 0) { opts = {}; }\n var /** @type {?} */ rendererFactory = opts.rendererFactory || domRendererFactory3;\n var /** @type {?} */ componentDef = componentType.ngComponentDef;\n var /** @type {?} */ component;\n var /** @type {?} */ hostNode = locateHostElement(rendererFactory, opts.host || componentDef.tag);\n var /** @type {?} */ oldView = enterView(createViewState(-1, rendererFactory.createRenderer(hostNode, componentDef.rendererType), []), /** @type {?} */ ((null)));\n try {\n // Create element node at index 0 in data array\n hostElement(hostNode, componentDef);\n // Create directive instance with n() and store at index 1 in data array (el is 0)\n component = directive(1, componentDef.n(), componentDef);\n }\n finally {\n leaveView(oldView);\n }\n opts.features && opts.features.forEach(function (feature) { return feature(component, componentDef); });\n detectChanges(component);\n return component;\n}\n/**\n * @template T\n * @param {?} component\n * @return {?}\n */\nfunction detectChanges(component) {\n ngDevMode && assertNotNull(component, 'component');\n var /** @type {?} */ hostNode = /** @type {?} */ ((/** @type {?} */ (component))[NG_HOST_SYMBOL]);\n if (ngDevMode && !hostNode) {\n createError('Not a directive instance', component);\n }\n ngDevMode && assertNotNull(hostNode.data, 'hostNode.data');\n renderComponentOrTemplate(hostNode, hostNode.view, component);\n isDirty = false;\n}\nvar isDirty = false;\n/**\n * @template T\n * @param {?} component\n * @param {?=} scheduler\n * @return {?}\n */\n\n/**\n * @template T\n * @param {?} component\n * @return {?}\n */\n\n/**\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 * Create a component definition object.\n *\n *\n * # Example\n * ```\n * class MyDirective {\n * // Generated by Angular Template Compiler\n * // [Symbol] syntax will not be supported by TypeScript until v2.7\n * static [COMPONENT_DEF_SYMBOL] = defineComponent({\n * ...\n * });\n * }\n * ```\n * @template T\n * @param {?} componentDefinition\n * @return {?}\n */\nfunction defineComponent(componentDefinition) {\n var /** @type {?} */ def = /** @type {?} */ ({\n type: componentDefinition.type,\n diPublic: null,\n n: componentDefinition.factory,\n tag: (/** @type {?} */ (componentDefinition)).tag || /** @type {?} */ ((null)),\n template: (/** @type {?} */ (componentDefinition)).template || /** @type {?} */ ((null)),\n r: componentDefinition.refresh ||\n function (d, e) { componentRefresh(d, e, componentDefinition.template); },\n h: componentDefinition.hostBindings || noop$1,\n inputs: invertObject(componentDefinition.inputs),\n outputs: invertObject(componentDefinition.outputs),\n methods: invertObject(componentDefinition.methods),\n rendererType: resolveRendererType2(componentDefinition.rendererType) || null,\n });\n var /** @type {?} */ feature = componentDefinition.features;\n feature && feature.forEach(function (fn) { return fn(def); });\n return def;\n}\n/**\n * @template T\n * @param {?} definition\n * @return {?}\n */\n\n/**\n * @template T\n * @param {?} definition\n * @return {?}\n */\n\nvar EMPTY$1 = {};\n/**\n * @return {?}\n */\nfunction noop$1() { }\n/**\n * Swaps the keys and values of an object.\n * @param {?} obj\n * @return {?}\n */\nfunction invertObject(obj) {\n if (obj == null)\n return EMPTY$1;\n var /** @type {?} */ newObj = {};\n for (var /** @type {?} */ minifiedKey in obj) {\n newObj[obj[minifiedKey]] = minifiedKey;\n }\n return newObj;\n}\n/**\n * Create a directive definition object.\n *\n * # Example\n * ```\n * class MyDirective {\n * // Generated by Angular Template Compiler\n * // [Symbol] syntax will not be supported by TypeScript until v2.7\n * static [DIRECTIVE_DEF_SYMBOL] = defineDirective({\n * ...\n * });\n * }\n * ```\n */\n\n/**\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/**\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// clang-format on\n\n/**\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/**\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 * @record\n */\n\n/**\n * \\@experimental Animation support is experimental.\n */\n\n/**\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link trigger trigger animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link state state animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link transition transition animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link keyframes keyframes animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link style style animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link animate animate animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link animateChild animateChild animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link useAnimation useAnimation animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link sequence sequence animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link group group animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * Metadata representing the entry of animations. Instances of this interface are provided via the\n * animation DSL when the {\\@link stagger stagger animation function} is called.\n *\n * \\@experimental Animation support is experimental.\n * @record\n */\n\n/**\n * `trigger` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. If this information is new, please navigate to the\n * {\\@link Component#animations component animations metadata page} to gain a better\n * understanding of how animations in Angular are used.\n *\n * `trigger` Creates an animation trigger which will a list of {\\@link state state} and\n * {\\@link transition transition} entries that will be evaluated when the expression\n * bound to the trigger changes.\n *\n * Triggers are registered within the component annotation data under the\n * {\\@link Component#animations animations section}. An animation trigger can be placed on an element\n * within a template by referencing the name of the trigger followed by the expression value that\n * the\n * trigger is bound to (in the form of `[\\@triggerName]=\"expression\"`.\n *\n * Animation trigger bindings strigify values and then match the previous and current values against\n * any linked transitions. If a boolean value is provided into the trigger binding then it will both\n * be represented as `1` or `true` and `0` or `false` for a true and false boolean values\n * respectively.\n *\n * ### Usage\n *\n * `trigger` will create an animation trigger reference based on the provided `name` value. The\n * provided `animation` value is expected to be an array consisting of {\\@link state state} and\n * {\\@link transition transition} declarations.\n *\n * ```typescript\n * \\@Component({\n * selector: 'my-component',\n * templateUrl: 'my-component-tpl.html',\n * animations: [\n * trigger(\"myAnimationTrigger\", [\n * state(...),\n * state(...),\n * transition(...),\n * transition(...)\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"something\";\n * }\n * ```\n *\n * The template associated with this component will make use of the `myAnimationTrigger` animation\n * trigger by binding to an element within its template code.\n *\n * ```html\n * <!-- somewhere inside of my-component-tpl.html -->\n * <div [\\@myAnimationTrigger]=\"myStatusExp\">...</div>\n * ```\n *\n * ## Disable Animations\n * A special animation control binding called `\\@.disabled` can be placed on an element which will\n * then disable animations for any inner animation triggers situated within the element as well as\n * any animations on the element itself.\n *\n * When true, the `\\@.disabled` binding will prevent all animations from rendering. The example\n * below shows how to use this feature:\n *\n * ```ts\n * \\@Component({\n * selector: 'my-component',\n * template: `\n * <div [\\@.disabled]=\"isDisabled\">\n * <div [\\@childAnimation]=\"exp\"></div>\n * </div>\n * `,\n * animations: [\n * trigger(\"childAnimation\", [\n * // ...\n * ])\n * ]\n * })\n * class MyComponent {\n * isDisabled = true;\n * exp = '...';\n * }\n * ```\n *\n * The `\\@childAnimation` trigger will not animate because `\\@.disabled` prevents it from happening\n * (when true).\n *\n * Note that `\\@.disabled` will only disable all animations (this means any animations running on\n * the same element will also be disabled).\n *\n * ### Disabling Animations Application-wide\n * When an area of the template is set to have animations disabled, **all** inner components will\n * also have their animations disabled as well. This means that all animations for an angular\n * application can be disabled by placing a host binding set on `\\@.disabled` on the topmost Angular\n * component.\n *\n * ```ts\n * import {Component, HostBinding} from '\\@angular/core';\n *\n * \\@Component({\n * selector: 'app-component',\n * templateUrl: 'app.component.html',\n * })\n * class AppComponent {\n * \\@HostBinding('\\@.disabled')\n * public animationsDisabled = true;\n * }\n * ```\n *\n * ### What about animations that us `query()` and `animateChild()`?\n * Despite inner animations being disabled, a parent animation can {\\@link query query} for inner\n * elements located in disabled areas of the template and still animate them as it sees fit. This is\n * also the case for when a sub animation is queried by a parent and then later animated using {\\@link\n * animateChild animateChild}.\n *\n * \\@experimental Animation support is experimental.\n * @param {?} name\n * @param {?} definitions\n * @return {?}\n */\nfunction trigger$1(name, definitions) {\n return { type: 7 /* Trigger */, name: name, definitions: definitions, options: {} };\n}\n/**\n * `animate` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. If this information is new, please navigate to the {\\@link\n * Component#animations component animations metadata page} to gain a better understanding of\n * how animations in Angular are used.\n *\n * `animate` specifies an animation step that will apply the provided `styles` data for a given\n * amount of time based on the provided `timing` expression value. Calls to `animate` are expected\n * to be used within {\\@link sequence an animation sequence}, {\\@link group group}, or {\\@link\n * transition transition}.\n *\n * ### Usage\n *\n * The `animate` function accepts two input parameters: `timing` and `styles`:\n *\n * - `timing` is a string based value that can be a combination of a duration with optional delay\n * and easing values. The format for the expression breaks down to `duration delay easing`\n * (therefore a value such as `1s 100ms ease-out` will be parse itself into `duration=1000,\n * delay=100, easing=ease-out`. If a numeric value is provided then that will be used as the\n * `duration` value in millisecond form.\n * - `styles` is the style input data which can either be a call to {\\@link style style} or {\\@link\n * keyframes keyframes}. If left empty then the styles from the destination state will be collected\n * and used (this is useful when describing an animation step that will complete an animation by\n * {\\@link transition#the-final-animate-call animating to the final state}).\n *\n * ```typescript\n * // various functions for specifying timing data\n * animate(500, style(...))\n * animate(\"1s\", style(...))\n * animate(\"100ms 0.5s\", style(...))\n * animate(\"5s ease\", style(...))\n * animate(\"5s 10ms cubic-bezier(.17,.67,.88,.1)\", style(...))\n *\n * // either style() of keyframes() can be used\n * animate(500, style({ background: \"red\" }))\n * animate(500, keyframes([\n * style({ background: \"blue\" })),\n * style({ background: \"red\" }))\n * ])\n * ```\n *\n * {\\@example core/animation/ts/dsl/animation_example.ts region='Component'}\n *\n * \\@experimental Animation support is experimental.\n * @param {?} timings\n * @param {?=} styles\n * @return {?}\n */\nfunction animate$1(timings, styles) {\n if (styles === void 0) { styles = null; }\n return { type: 4 /* Animate */, styles: styles, timings: timings };\n}\n/**\n * `group` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. If this information is new, please navigate to the {\\@link\n * Component#animations component animations metadata page} to gain a better understanding of\n * how animations in Angular are used.\n *\n * `group` specifies a list of animation steps that are all run in parallel. Grouped animations are\n * useful when a series of styles must be animated/closed off at different starting/ending times.\n *\n * The `group` function can either be used within a {\\@link sequence sequence} or a {\\@link transition\n * transition} and it will only continue to the next instruction once all of the inner animation\n * steps have completed.\n *\n * ### Usage\n *\n * The `steps` data that is passed into the `group` animation function can either consist of {\\@link\n * style style} or {\\@link animate animate} function calls. Each call to `style()` or `animate()`\n * within a group will be executed instantly (use {\\@link keyframes keyframes} or a {\\@link\n * animate#usage animate() with a delay value} to offset styles to be applied at a later time).\n *\n * ```typescript\n * group([\n * animate(\"1s\", { background: \"black\" }))\n * animate(\"2s\", { color: \"white\" }))\n * ])\n * ```\n *\n * {\\@example core/animation/ts/dsl/animation_example.ts region='Component'}\n *\n * \\@experimental Animation support is experimental.\n * @param {?} steps\n * @param {?=} options\n * @return {?}\n */\nfunction group$1(steps, options) {\n if (options === void 0) { options = null; }\n return { type: 3 /* Group */, steps: steps, options: options };\n}\n/**\n * `sequence` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. If this information is new, please navigate to the {\\@link\n * Component#animations component animations metadata page} to gain a better understanding of\n * how animations in Angular are used.\n *\n * `sequence` Specifies a list of animation steps that are run one by one. (`sequence` is used by\n * default when an array is passed as animation data into {\\@link transition transition}.)\n *\n * The `sequence` function can either be used within a {\\@link group group} or a {\\@link transition\n * transition} and it will only continue to the next instruction once each of the inner animation\n * steps have completed.\n *\n * To perform animation styling in parallel with other animation steps then have a look at the\n * {\\@link group group} animation function.\n *\n * ### Usage\n *\n * The `steps` data that is passed into the `sequence` animation function can either consist of\n * {\\@link style style} or {\\@link animate animate} function calls. A call to `style()` will apply the\n * provided styling data immediately while a call to `animate()` will apply its styling data over a\n * given time depending on its timing data.\n *\n * ```typescript\n * sequence([\n * style({ opacity: 0 })),\n * animate(\"1s\", { opacity: 1 }))\n * ])\n * ```\n *\n * {\\@example core/animation/ts/dsl/animation_example.ts region='Component'}\n *\n * \\@experimental Animation support is experimental.\n * @param {?} steps\n * @param {?=} options\n * @return {?}\n */\nfunction sequence$1(steps, options) {\n if (options === void 0) { options = null; }\n return { type: 2 /* Sequence */, steps: steps, options: options };\n}\n/**\n * `style` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. If this information is new, please navigate to the {\\@link\n * Component#animations component animations metadata page} to gain a better understanding of\n * how animations in Angular are used.\n *\n * `style` declares a key/value object containing CSS properties/styles that can then be used for\n * {\\@link state animation states}, within an {\\@link sequence animation sequence}, or as styling data\n * for both {\\@link animate animate} and {\\@link keyframes keyframes}.\n *\n * ### Usage\n *\n * `style` takes in a key/value string map as data and expects one or more CSS property/value pairs\n * to be defined.\n *\n * ```typescript\n * // string values are used for css properties\n * style({ background: \"red\", color: \"blue\" })\n *\n * // numerical (pixel) values are also supported\n * style({ width: 100, height: 0 })\n * ```\n *\n * #### Auto-styles (using `*`)\n *\n * When an asterix (`*`) character is used as a value then it will be detected from the element\n * being animated and applied as animation data when the animation starts.\n *\n * This feature proves useful for a state depending on layout and/or environment factors; in such\n * cases the styles are calculated just before the animation starts.\n *\n * ```typescript\n * // the steps below will animate from 0 to the\n * // actual height of the element\n * style({ height: 0 }),\n * animate(\"1s\", style({ height: \"*\" }))\n * ```\n *\n * {\\@example core/animation/ts/dsl/animation_example.ts region='Component'}\n *\n * \\@experimental Animation support is experimental.\n * @param {?} tokens\n * @return {?}\n */\nfunction style$1(tokens) {\n return { type: 6 /* Style */, styles: tokens, offset: null };\n}\n/**\n * `state` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. If this information is new, please navigate to the {\\@link\n * Component#animations component animations metadata page} to gain a better understanding of\n * how animations in Angular are used.\n *\n * `state` declares an animation state within the given trigger. When a state is active within a\n * component then its associated styles will persist on the element that the trigger is attached to\n * (even when the animation ends).\n *\n * To animate between states, have a look at the animation {\\@link transition transition} DSL\n * function. To register states to an animation trigger please have a look at the {\\@link trigger\n * trigger} function.\n *\n * #### The `void` state\n *\n * The `void` state value is a reserved word that angular uses to determine when the element is not\n * apart of the application anymore (e.g. when an `ngIf` evaluates to false then the state of the\n * associated element is void).\n *\n * #### The `*` (default) state\n *\n * The `*` state (when styled) is a fallback state that will be used if the state that is being\n * animated is not declared within the trigger.\n *\n * ### Usage\n *\n * `state` will declare an animation state with its associated styles\n * within the given trigger.\n *\n * - `stateNameExpr` can be one or more state names separated by commas.\n * - `styles` refers to the {\\@link style styling data} that will be persisted on the element once\n * the state has been reached.\n *\n * ```typescript\n * // \"void\" is a reserved name for a state and is used to represent\n * // the state in which an element is detached from from the application.\n * state(\"void\", style({ height: 0 }))\n *\n * // user-defined states\n * state(\"closed\", style({ height: 0 }))\n * state(\"open, visible\", style({ height: \"*\" }))\n * ```\n *\n * {\\@example core/animation/ts/dsl/animation_example.ts region='Component'}\n *\n * \\@experimental Animation support is experimental.\n * @param {?} name\n * @param {?} styles\n * @param {?=} options\n * @return {?}\n */\nfunction state$1(name, styles, options) {\n return { type: 0 /* State */, name: name, styles: styles, options: options };\n}\n/**\n * `keyframes` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. If this information is new, please navigate to the {\\@link\n * Component#animations component animations metadata page} to gain a better understanding of\n * how animations in Angular are used.\n *\n * `keyframes` specifies a collection of {\\@link style style} entries each optionally characterized\n * by an `offset` value.\n *\n * ### Usage\n *\n * The `keyframes` animation function is designed to be used alongside the {\\@link animate animate}\n * animation function. Instead of applying animations from where they are currently to their\n * destination, keyframes can describe how each style entry is applied and at what point within the\n * animation arc (much like CSS Keyframe Animations do).\n *\n * For each `style()` entry an `offset` value can be set. Doing so allows to specifiy at what\n * percentage of the animate time the styles will be applied.\n *\n * ```typescript\n * // the provided offset values describe when each backgroundColor value is applied.\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\", offset: 0 }),\n * style({ backgroundColor: \"blue\", offset: 0.2 }),\n * style({ backgroundColor: \"orange\", offset: 0.3 }),\n * style({ backgroundColor: \"black\", offset: 1 })\n * ]))\n * ```\n *\n * Alternatively, if there are no `offset` values used within the style entries then the offsets\n * will be calculated automatically.\n *\n * ```typescript\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\" }) // offset = 0\n * style({ backgroundColor: \"blue\" }) // offset = 0.33\n * style({ backgroundColor: \"orange\" }) // offset = 0.66\n * style({ backgroundColor: \"black\" }) // offset = 1\n * ]))\n * ```\n *\n * {\\@example core/animation/ts/dsl/animation_example.ts region='Component'}\n *\n * \\@experimental Animation support is experimental.\n * @param {?} steps\n * @return {?}\n */\nfunction keyframes$1(steps) {\n return { type: 5 /* Keyframes */, steps: steps };\n}\n/**\n * `transition` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. If this information is new, please navigate to the {\\@link\n * Component#animations component animations metadata page} to gain a better understanding of\n * how animations in Angular are used.\n *\n * `transition` declares the {\\@link sequence sequence of animation steps} that will be run when the\n * provided `stateChangeExpr` value is satisfied. The `stateChangeExpr` consists of a `state1 =>\n * state2` which consists of two known states (use an asterix (`*`) to refer to a dynamic starting\n * and/or ending state).\n *\n * A function can also be provided as the `stateChangeExpr` argument for a transition and this\n * function will be executed each time a state change occurs. If the value returned within the\n * function is true then the associated animation will be run.\n *\n * Animation transitions are placed within an {\\@link trigger animation trigger}. For an transition\n * to animate to a state value and persist its styles then one or more {\\@link state animation\n * states} is expected to be defined.\n *\n * ### Usage\n *\n * An animation transition is kicked off the `stateChangeExpr` predicate evaluates to true based on\n * what the previous state is and what the current state has become. In other words, if a transition\n * is defined that matches the old/current state criteria then the associated animation will be\n * triggered.\n *\n * ```typescript\n * // all transition/state changes are defined within an animation trigger\n * trigger(\"myAnimationTrigger\", [\n * // if a state is defined then its styles will be persisted when the\n * // animation has fully completed itself\n * state(\"on\", style({ background: \"green\" })),\n * state(\"off\", style({ background: \"grey\" })),\n *\n * // a transition animation that will be kicked off when the state value\n * // bound to \"myAnimationTrigger\" changes from \"on\" to \"off\"\n * transition(\"on => off\", animate(500)),\n *\n * // it is also possible to do run the same animation for both directions\n * transition(\"on <=> off\", animate(500)),\n *\n * // or to define multiple states pairs separated by commas\n * transition(\"on => off, off => void\", animate(500)),\n *\n * // this is a catch-all state change for when an element is inserted into\n * // the page and the destination state is unknown\n * transition(\"void => *\", [\n * style({ opacity: 0 }),\n * animate(500)\n * ]),\n *\n * // this will capture a state change between any states\n * transition(\"* => *\", animate(\"1s 0s\")),\n *\n * // you can also go full out and include a function\n * transition((fromState, toState) => {\n * // when `true` then it will allow the animation below to be invoked\n * return fromState == \"off\" && toState == \"on\";\n * }, animate(\"1s 0s\"))\n * ])\n * ```\n *\n * The template associated with this component will make use of the `myAnimationTrigger` animation\n * trigger by binding to an element within its template code.\n *\n * ```html\n * <!-- somewhere inside of my-component-tpl.html -->\n * <div [\\@myAnimationTrigger]=\"myStatusExp\">...</div>\n * ```\n *\n * #### The final `animate` call\n *\n * If the final step within the transition steps is a call to `animate()` that **only** uses a\n * timing value with **no style data** then it will be automatically used as the final animation arc\n * for the element to animate itself to the final state. This involves an automatic mix of\n * adding/removing CSS styles so that the element will be in the exact state it should be for the\n * applied state to be presented correctly.\n *\n * ```\n * // start off by hiding the element, but make sure that it animates properly to whatever state\n * // is currently active for \"myAnimationTrigger\"\n * transition(\"void => *\", [\n * style({ opacity: 0 }),\n * animate(500)\n * ])\n * ```\n *\n * ### Using :enter and :leave\n *\n * Given that enter (insertion) and leave (removal) animations are so common, the `transition`\n * function accepts both `:enter` and `:leave` values which are aliases for the `void => *` and `*\n * => void` state changes.\n *\n * ```\n * transition(\":enter\", [\n * style({ opacity: 0 }),\n * animate(500, style({ opacity: 1 }))\n * ]),\n * transition(\":leave\", [\n * animate(500, style({ opacity: 0 }))\n * ])\n * ```\n *\n * ### Boolean values\n * if a trigger binding value is a boolean value then it can be matched using a transition\n * expression that compares `true` and `false` or `1` and `0`.\n *\n * ```\n * // in the template\n * <div [\\@openClose]=\"open ? true : false\">...</div>\n *\n * // in the component metadata\n * trigger('openClose', [\n * state('true', style({ height: '*' })),\n * state('false', style({ height: '0px' })),\n * transition('false <=> true', animate(500))\n * ])\n * ```\n *\n * ### Using :increment and :decrement\n * In addition to the :enter and :leave transition aliases, the :increment and :decrement aliases\n * can be used to kick off a transition when a numeric value has increased or decreased in value.\n *\n * ```\n * import {group, animate, query, transition, style, trigger} from '\\@angular/animations';\n * import {Component} from '\\@angular/core';\n *\n * \\@Component({\n * selector: 'banner-carousel-component',\n * styles: [`\n * .banner-container {\n * position:relative;\n * height:500px;\n * overflow:hidden;\n * }\n * .banner-container > .banner {\n * position:absolute;\n * left:0;\n * top:0;\n * font-size:200px;\n * line-height:500px;\n * font-weight:bold;\n * text-align:center;\n * width:100%;\n * }\n * `],\n * template: `\n * <button (click)=\"previous()\">Previous</button>\n * <button (click)=\"next()\">Next</button>\n * <hr>\n * <div [\\@bannerAnimation]=\"selectedIndex\" class=\"banner-container\">\n * <div class=\"banner\" *ngFor=\"let banner of banners\"> {{ banner }} </div>\n * </div>\n * `,\n * animations: [\n * trigger('bannerAnimation', [\n * transition(\":increment\", group([\n * query(':enter', [\n * style({ left: '100%' }),\n * animate('0.5s ease-out', style('*'))\n * ]),\n * query(':leave', [\n * animate('0.5s ease-out', style({ left: '-100%' }))\n * ])\n * ])),\n * transition(\":decrement\", group([\n * query(':enter', [\n * style({ left: '-100%' }),\n * animate('0.5s ease-out', style('*'))\n * ]),\n * query(':leave', [\n * animate('0.5s ease-out', style({ left: '100%' }))\n * ])\n * ]))\n * ])\n * ]\n * })\n * class BannerCarouselComponent {\n * allBanners: string[] = ['1', '2', '3', '4'];\n * selectedIndex: number = 0;\n *\n * get banners() {\n * return [this.allBanners[this.selectedIndex]];\n * }\n *\n * previous() {\n * this.selectedIndex = Math.max(this.selectedIndex - 1, 0);\n * }\n *\n * next() {\n * this.selectedIndex = Math.min(this.selectedIndex + 1, this.allBanners.length - 1);\n * }\n * }\n * ```\n *\n * {\\@example core/animation/ts/dsl/animation_example.ts region='Component'}\n *\n * \\@experimental Animation support is experimental.\n * @param {?} stateChangeExpr\n * @param {?} steps\n * @param {?=} options\n * @return {?}\n */\nfunction transition$1(stateChangeExpr, steps, options) {\n if (options === void 0) { options = null; }\n return { type: 1 /* Transition */, expr: stateChangeExpr, animation: steps, options: options };\n}\n/**\n * `animation` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language.\n *\n * `var myAnimation = animation(...)` is designed to produce a reusable animation that can be later\n * invoked in another animation or sequence. Reusable animations are designed to make use of\n * animation parameters and the produced animation can be used via the `useAnimation` method.\n *\n * ```\n * var fadeAnimation = animation([\n * style({ opacity: '{{ start }}' }),\n * animate('{{ time }}',\n * style({ opacity: '{{ end }}'}))\n * ], { params: { time: '1000ms', start: 0, end: 1 }});\n * ```\n *\n * If parameters are attached to an animation then they act as **default parameter values**. When an\n * animation is invoked via `useAnimation` then parameter values are allowed to be passed in\n * directly. If any of the passed in parameter values are missing then the default values will be\n * used.\n *\n * ```\n * useAnimation(fadeAnimation, {\n * params: {\n * time: '2s',\n * start: 1,\n * end: 0\n * }\n * })\n * ```\n *\n * If one or more parameter values are missing before animated then an error will be thrown.\n *\n * \\@experimental Animation support is experimental.\n * @param {?} steps\n * @param {?=} options\n * @return {?}\n */\n\n/**\n * `animateChild` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. It works by allowing a queried element to execute its own\n * animation within the animation sequence.\n *\n * Each time an animation is triggered in angular, the parent animation\n * will always get priority and any child animations will be blocked. In order\n * for a child animation to run, the parent animation must query each of the elements\n * containing child animations and then allow the animations to run using `animateChild`.\n *\n * The example HTML code below shows both parent and child elements that have animation\n * triggers that will execute at the same time.\n *\n * ```html\n * <!-- parent-child.component.html -->\n * <button (click)=\"exp =! exp\">Toggle</button>\n * <hr>\n *\n * <div [\\@parentAnimation]=\"exp\">\n * <header>Hello</header>\n * <div [\\@childAnimation]=\"exp\">\n * one\n * </div>\n * <div [\\@childAnimation]=\"exp\">\n * two\n * </div>\n * <div [\\@childAnimation]=\"exp\">\n * three\n * </div>\n * </div>\n * ```\n *\n * Now when the `exp` value changes to true, only the `parentAnimation` animation will animate\n * because it has priority. However, using `query` and `animateChild` each of the inner animations\n * can also fire:\n *\n * ```ts\n * // parent-child.component.ts\n * import {trigger, transition, animate, style, query, animateChild} from '\\@angular/animations';\n * \\@Component({\n * selector: 'parent-child-component',\n * animations: [\n * trigger('parentAnimation', [\n * transition('false => true', [\n * query('header', [\n * style({ opacity: 0 }),\n * animate(500, style({ opacity: 1 }))\n * ]),\n * query('\\@childAnimation', [\n * animateChild()\n * ])\n * ])\n * ]),\n * trigger('childAnimation', [\n * transition('false => true', [\n * style({ opacity: 0 }),\n * animate(500, style({ opacity: 1 }))\n * ])\n * ])\n * ]\n * })\n * class ParentChildCmp {\n * exp: boolean = false;\n * }\n * ```\n *\n * In the animation code above, when the `parentAnimation` transition kicks off it first queries to\n * find the header element and fades it in. It then finds each of the sub elements that contain the\n * `\\@childAnimation` trigger and then allows for their animations to fire.\n *\n * This example can be further extended by using stagger:\n *\n * ```ts\n * query('\\@childAnimation', stagger(100, [\n * animateChild()\n * ]))\n * ```\n *\n * Now each of the sub animations start off with respect to the `100ms` staggering step.\n *\n * ## The first frame of child animations\n * When sub animations are executed using `animateChild` the animation engine will always apply the\n * first frame of every sub animation immediately at the start of the animation sequence. This way\n * the parent animation does not need to set any initial styling data on the sub elements before the\n * sub animations kick off.\n *\n * In the example above the first frame of the `childAnimation`'s `false => true` transition\n * consists of a style of `opacity: 0`. This is applied immediately when the `parentAnimation`\n * animation transition sequence starts. Only then when the `\\@childAnimation` is queried and called\n * with `animateChild` will it then animate to its destination of `opacity: 1`.\n *\n * Note that this feature designed to be used alongside {\\@link query query()} and it will only work\n * with animations that are assigned using the Angular animation DSL (this means that CSS keyframes\n * and transitions are not handled by this API).\n *\n * \\@experimental Animation support is experimental.\n * @param {?=} options\n * @return {?}\n */\n\n/**\n * `useAnimation` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. It is used to kick off a reusable animation that is created using {\\@link\n * animation animation()}.\n *\n * \\@experimental Animation support is experimental.\n * @param {?} animation\n * @param {?=} options\n * @return {?}\n */\n\n/**\n * `query` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language.\n *\n * query() is used to find one or more inner elements within the current element that is\n * being animated within the sequence. The provided animation steps are applied\n * to the queried element (by default, an array is provided, then this will be\n * treated as an animation sequence).\n *\n * ### Usage\n *\n * query() is designed to collect mutiple elements and works internally by using\n * `element.querySelectorAll`. An additional options object can be provided which\n * can be used to limit the total amount of items to be collected.\n *\n * ```js\n * query('div', [\n * animate(...),\n * animate(...)\n * ], { limit: 1 })\n * ```\n *\n * query(), by default, will throw an error when zero items are found. If a query\n * has the `optional` flag set to true then this error will be ignored.\n *\n * ```js\n * query('.some-element-that-may-not-be-there', [\n * animate(...),\n * animate(...)\n * ], { optional: true })\n * ```\n *\n * ### Special Selector Values\n *\n * The selector value within a query can collect elements that contain angular-specific\n * characteristics\n * using special pseudo-selectors tokens.\n *\n * These include:\n *\n * - Querying for newly inserted/removed elements using `query(\":enter\")`/`query(\":leave\")`\n * - Querying all currently animating elements using `query(\":animating\")`\n * - Querying elements that contain an animation trigger using `query(\"\\@triggerName\")`\n * - Querying all elements that contain an animation triggers using `query(\"\\@*\")`\n * - Including the current element into the animation sequence using `query(\":self\")`\n *\n *\n * Each of these pseudo-selector tokens can be merged together into a combined query selector\n * string:\n *\n * ```\n * query(':self, .record:enter, .record:leave, \\@subTrigger', [...])\n * ```\n *\n * ### Demo\n *\n * ```\n * \\@Component({\n * selector: 'inner',\n * template: `\n * <div [\\@queryAnimation]=\"exp\">\n * <h1>Title</h1>\n * <div class=\"content\">\n * Blah blah blah\n * </div>\n * </div>\n * `,\n * animations: [\n * trigger('queryAnimation', [\n * transition('* => goAnimate', [\n * // hide the inner elements\n * query('h1', style({ opacity: 0 })),\n * query('.content', style({ opacity: 0 })),\n *\n * // animate the inner elements in, one by one\n * query('h1', animate(1000, style({ opacity: 1 })),\n * query('.content', animate(1000, style({ opacity: 1 })),\n * ])\n * ])\n * ]\n * })\n * class Cmp {\n * exp = '';\n *\n * goAnimate() {\n * this.exp = 'goAnimate';\n * }\n * }\n * ```\n *\n * \\@experimental Animation support is experimental.\n * @param {?} selector\n * @param {?} animation\n * @param {?=} options\n * @return {?}\n */\n\n/**\n * `stagger` is an animation-specific function that is designed to be used inside of Angular's\n * animation DSL language. It is designed to be used inside of an animation {\\@link query query()}\n * and works by issuing a timing gap between after each queried item is animated.\n *\n * ### Usage\n *\n * In the example below there is a container element that wraps a list of items stamped out\n * by an ngFor. The container element contains an animation trigger that will later be set\n * to query for each of the inner items.\n *\n * ```html\n * <!-- list.component.html -->\n * <button (click)=\"toggle()\">Show / Hide Items</button>\n * <hr />\n * <div [\\@listAnimation]=\"items.length\">\n * <div *ngFor=\"let item of items\">\n * {{ item }}\n * </div>\n * </div>\n * ```\n *\n * The component code for this looks as such:\n *\n * ```ts\n * import {trigger, transition, style, animate, query, stagger} from '\\@angular/animations';\n * \\@Component({\n * templateUrl: 'list.component.html',\n * animations: [\n * trigger('listAnimation', [\n * //...\n * ])\n * ]\n * })\n * class ListComponent {\n * items = [];\n *\n * showItems() {\n * this.items = [0,1,2,3,4];\n * }\n *\n * hideItems() {\n * this.items = [];\n * }\n *\n * toggle() {\n * this.items.length ? this.hideItems() : this.showItems();\n * }\n * }\n * ```\n *\n * And now for the animation trigger code:\n *\n * ```ts\n * trigger('listAnimation', [\n * transition('* => *', [ // each time the binding value changes\n * query(':leave', [\n * stagger(100, [\n * animate('0.5s', style({ opacity: 0 }))\n * ])\n * ]),\n * query(':enter', [\n * style({ opacity: 0 }),\n * stagger(100, [\n * animate('0.5s', style({ opacity: 1 }))\n * ])\n * ])\n * ])\n * ])\n * ```\n *\n * Now each time the items are added/removed then either the opacity\n * fade-in animation will run or each removed item will be faded out.\n * When either of these animations occur then a stagger effect will be\n * applied after each item's animation is started.\n *\n * \\@experimental Animation support is experimental.\n * @param {?} timings\n * @param {?} animation\n * @return {?}\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n */\nvar AUTO_STYLE = '*';\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @record\n */\n\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @record\n */\n\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @record\n */\n\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @record\n */\n\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @record\n */\n\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @record\n */\n\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @record\n */\n\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @record\n */\n\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @record\n */\n\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} name\n * @param {?} definitions\n * @return {?}\n */\nfunction trigger$$1(name, definitions) {\n return trigger$1(name, definitions);\n}\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} timings\n * @param {?=} styles\n * @return {?}\n */\nfunction animate$$1(timings, styles) {\n return animate$1(timings, styles);\n}\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} steps\n * @return {?}\n */\nfunction group$$1(steps) {\n return group$1(steps);\n}\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} steps\n * @return {?}\n */\nfunction sequence$$1(steps) {\n return sequence$1(steps);\n}\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} tokens\n * @return {?}\n */\nfunction style$$1(tokens) {\n return style$1(tokens);\n}\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} name\n * @param {?} styles\n * @return {?}\n */\nfunction state$$1(name, styles) {\n return state$1(name, styles);\n}\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} steps\n * @return {?}\n */\nfunction keyframes$$1(steps) {\n return keyframes$1(steps);\n}\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} stateChangeExpr\n * @param {?} steps\n * @return {?}\n */\nfunction transition$$1(stateChangeExpr, steps) {\n return transition$1(stateChangeExpr, steps);\n}\n\nexports.createPlatform = createPlatform;\nexports.assertPlatform = assertPlatform;\nexports.destroyPlatform = destroyPlatform;\nexports.getPlatform = getPlatform;\nexports.PlatformRef = PlatformRef;\nexports.ApplicationRef = ApplicationRef;\nexports.enableProdMode = enableProdMode;\nexports.isDevMode = isDevMode;\nexports.createPlatformFactory = createPlatformFactory;\nexports.NgProbeToken = NgProbeToken;\nexports.APP_ID = APP_ID;\nexports.PACKAGE_ROOT_URL = PACKAGE_ROOT_URL;\nexports.PLATFORM_INITIALIZER = PLATFORM_INITIALIZER;\nexports.PLATFORM_ID = PLATFORM_ID;\nexports.APP_BOOTSTRAP_LISTENER = APP_BOOTSTRAP_LISTENER;\nexports.APP_INITIALIZER = APP_INITIALIZER;\nexports.ApplicationInitStatus = ApplicationInitStatus;\nexports.DebugElement = DebugElement;\nexports.DebugNode = DebugNode;\nexports.asNativeElements = asNativeElements;\nexports.getDebugNode = getDebugNode;\nexports.Testability = Testability;\nexports.TestabilityRegistry = TestabilityRegistry;\nexports.setTestabilityGetter = setTestabilityGetter;\nexports.TRANSLATIONS = TRANSLATIONS;\nexports.TRANSLATIONS_FORMAT = TRANSLATIONS_FORMAT;\nexports.LOCALE_ID = LOCALE_ID;\nexports.MissingTranslationStrategy = MissingTranslationStrategy;\nexports.ApplicationModule = ApplicationModule;\nexports.wtfCreateScope = wtfCreateScope;\nexports.wtfLeave = wtfLeave;\nexports.wtfStartTimeRange = wtfStartTimeRange;\nexports.wtfEndTimeRange = wtfEndTimeRange;\nexports.Type = Type;\nexports.EventEmitter = EventEmitter;\nexports.ErrorHandler = ErrorHandler;\nexports.Sanitizer = Sanitizer;\nexports.SecurityContext = SecurityContext;\nexports.ANALYZE_FOR_ENTRY_COMPONENTS = ANALYZE_FOR_ENTRY_COMPONENTS;\nexports.Attribute = Attribute;\nexports.ContentChild = ContentChild;\nexports.ContentChildren = ContentChildren;\nexports.Query = Query;\nexports.ViewChild = ViewChild;\nexports.ViewChildren = ViewChildren;\nexports.Component = Component;\nexports.Directive = Directive;\nexports.HostBinding = HostBinding;\nexports.HostListener = HostListener;\nexports.Input = Input;\nexports.Output = Output;\nexports.Pipe = Pipe;\nexports.CUSTOM_ELEMENTS_SCHEMA = CUSTOM_ELEMENTS_SCHEMA;\nexports.NO_ERRORS_SCHEMA = NO_ERRORS_SCHEMA;\nexports.NgModule = NgModule;\nexports.ViewEncapsulation = ViewEncapsulation;\nexports.Version = Version;\nexports.VERSION = VERSION;\nexports.forwardRef = forwardRef;\nexports.resolveForwardRef = resolveForwardRef;\nexports.Injector = Injector;\nexports.ReflectiveInjector = ReflectiveInjector;\nexports.ResolvedReflectiveFactory = ResolvedReflectiveFactory;\nexports.ReflectiveKey = ReflectiveKey;\nexports.InjectionToken = InjectionToken;\nexports.Inject = Inject;\nexports.Optional = Optional;\nexports.Injectable = Injectable;\nexports.Self = Self;\nexports.SkipSelf = SkipSelf;\nexports.Host = Host;\nexports.NgZone = NgZone;\nexports.RenderComponentType = RenderComponentType;\nexports.Renderer = Renderer;\nexports.Renderer2 = Renderer2;\nexports.RendererFactory2 = RendererFactory2;\nexports.RendererStyleFlags2 = RendererStyleFlags2;\nexports.RootRenderer = RootRenderer;\nexports.COMPILER_OPTIONS = COMPILER_OPTIONS;\nexports.Compiler = Compiler;\nexports.CompilerFactory = CompilerFactory;\nexports.ModuleWithComponentFactories = ModuleWithComponentFactories;\nexports.ComponentFactory = ComponentFactory;\nexports.ComponentRef = ComponentRef;\nexports.ComponentFactoryResolver = ComponentFactoryResolver;\nexports.ElementRef = ElementRef;\nexports.NgModuleFactory = NgModuleFactory;\nexports.NgModuleRef = NgModuleRef;\nexports.NgModuleFactoryLoader = NgModuleFactoryLoader;\nexports.getModuleFactory = getModuleFactory;\nexports.QueryList = QueryList;\nexports.SystemJsNgModuleLoader = SystemJsNgModuleLoader;\nexports.SystemJsNgModuleLoaderConfig = SystemJsNgModuleLoaderConfig;\nexports.TemplateRef = TemplateRef;\nexports.ViewContainerRef = ViewContainerRef;\nexports.EmbeddedViewRef = EmbeddedViewRef;\nexports.ViewRef = ViewRef;\nexports.ChangeDetectionStrategy = ChangeDetectionStrategy;\nexports.ChangeDetectorRef = ChangeDetectorRef;\nexports.DefaultIterableDiffer = DefaultIterableDiffer;\nexports.IterableDiffers = IterableDiffers;\nexports.KeyValueDiffers = KeyValueDiffers;\nexports.SimpleChange = SimpleChange;\nexports.WrappedValue = WrappedValue;\nexports.platformCore = platformCore;\nexports.ɵALLOW_MULTIPLE_PLATFORMS = ALLOW_MULTIPLE_PLATFORMS;\nexports.ɵAPP_ID_RANDOM_PROVIDER = APP_ID_RANDOM_PROVIDER;\nexports.ɵdevModeEqual = devModeEqual;\nexports.ɵisListLikeIterable = isListLikeIterable;\nexports.ɵChangeDetectorStatus = ChangeDetectorStatus;\nexports.ɵisDefaultChangeDetectionStrategy = isDefaultChangeDetectionStrategy;\nexports.ɵConsole = Console;\nexports.ɵComponentFactory = ComponentFactory;\nexports.ɵCodegenComponentFactoryResolver = CodegenComponentFactoryResolver;\nexports.ɵReflectionCapabilities = ReflectionCapabilities;\nexports.ɵRenderDebugInfo = RenderDebugInfo;\nexports.ɵglobal = _global;\nexports.ɵlooseIdentical = looseIdentical;\nexports.ɵstringify = stringify;\nexports.ɵmakeDecorator = makeDecorator;\nexports.ɵisObservable = isObservable;\nexports.ɵisPromise = isPromise;\nexports.ɵclearOverrides = clearOverrides;\nexports.ɵoverrideComponentView = overrideComponentView;\nexports.ɵoverrideProvider = overrideProvider;\nexports.ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR = NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR;\nexports.ɵdefineComponent = defineComponent;\nexports.ɵdetectChanges = detectChanges;\nexports.ɵrenderComponent = renderComponent;\nexports.ɵC = containerStart;\nexports.ɵD = directive;\nexports.ɵE = elementStart;\nexports.ɵT = text;\nexports.ɵV = viewStart;\nexports.ɵb = bind;\nexports.ɵb1 = bind1;\nexports.ɵc = containerEnd;\nexports.ɵcR = containerRefreshStart;\nexports.ɵcr = containerRefreshEnd;\nexports.ɵe = elementEnd;\nexports.ɵp = elementProperty;\nexports.ɵs = elementStyle;\nexports.ɵt = textBinding;\nexports.ɵv = viewEnd;\nexports.ɵregisterModuleFactory = registerModuleFactory;\nexports.ɵEMPTY_ARRAY = EMPTY_ARRAY;\nexports.ɵEMPTY_MAP = EMPTY_MAP;\nexports.ɵand = anchorDef;\nexports.ɵccf = createComponentFactory;\nexports.ɵcmf = createNgModuleFactory;\nexports.ɵcrt = createRendererType2;\nexports.ɵdid = directiveDef;\nexports.ɵeld = elementDef;\nexports.ɵelementEventFullName = elementEventFullName;\nexports.ɵgetComponentViewDefinitionFactory = getComponentViewDefinitionFactory;\nexports.ɵinlineInterpolate = inlineInterpolate;\nexports.ɵinterpolate = interpolate;\nexports.ɵmod = moduleDef;\nexports.ɵmpd = moduleProvideDef;\nexports.ɵncd = ngContentDef;\nexports.ɵnov = nodeValue;\nexports.ɵpid = pipeDef;\nexports.ɵprd = providerDef;\nexports.ɵpad = pureArrayDef;\nexports.ɵpod = pureObjectDef;\nexports.ɵppd = purePipeDef;\nexports.ɵqud = queryDef;\nexports.ɵted = textDef;\nexports.ɵunv = unwrapValue;\nexports.ɵvid = viewDef;\nexports.AUTO_STYLE = AUTO_STYLE;\nexports.trigger = trigger$$1;\nexports.animate = animate$$1;\nexports.group = group$$1;\nexports.sequence = sequence$$1;\nexports.style = style$$1;\nexports.state = state$$1;\nexports.keyframes = keyframes$$1;\nexports.transition = transition$$1;\nexports.ɵbf = animate$1;\nexports.ɵbg = group$1;\nexports.ɵbk = keyframes$1;\nexports.ɵbh = sequence$1;\nexports.ɵbj = state$1;\nexports.ɵbi = style$1;\nexports.ɵbl = transition$1;\nexports.ɵbe = trigger$1;\nexports.ɵn = _iterableDiffersFactory;\nexports.ɵo = _keyValueDiffersFactory;\nexports.ɵq = _localeFactory;\nexports.ɵi = _appIdRandomProviderFactory;\nexports.ɵj = defaultIterableDiffers;\nexports.ɵk = defaultKeyValueDiffers;\nexports.ɵl = DefaultIterableDifferFactory;\nexports.ɵm = DefaultKeyValueDifferFactory;\nexports.ɵf = ReflectiveInjector_;\nexports.ɵg = ReflectiveDependency;\nexports.ɵh = resolveReflectiveProviders;\nexports.ɵr = wtfEnabled;\nexports.ɵw = createScope;\nexports.ɵu = detectWTF;\nexports.ɵz = endTimeRange;\nexports.ɵx = leave;\nexports.ɵy = startTimeRange;\nexports.ɵbc = stringify$1;\nexports.ɵa = makeParamDecorator;\nexports.ɵd = makePropDecorator;\nexports.ɵba = _def;\nexports.ɵbb = DebugContext;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=core.umd.js.map\n"]}
|