UNPKG

830 kBSource Map (JSON)View Raw
1{"version":3,"file":"core.js","sources":["../../../../packages/core/index.ts","../../../../packages/core/public_api.ts","../../../../packages/core/src/core.ts","../../../../packages/core/src/animation/animation_metadata_wrapped.ts","../../../../packages/core/src/animation/dsl.ts","../../../../packages/core/src/codegen_private_exports.ts","../../../../packages/core/src/core_private_export.ts","../../../../packages/core/src/metadata/lifecycle_hooks.ts","../../../../packages/core/src/application_module.ts","../../../../packages/core/src/view/index.ts","../../../../packages/core/src/view/services.ts","../../../../packages/core/src/view/view.ts","../../../../packages/core/src/view/text.ts","../../../../packages/core/src/view/query.ts","../../../../packages/core/src/view/pure_expression.ts","../../../../packages/core/src/view/provider.ts","../../../../packages/core/src/view/refs.ts","../../../../packages/core/src/view/view_attach.ts","../../../../packages/core/src/view/ng_content.ts","../../../../packages/core/src/view/element.ts","../../../../packages/core/src/view/util.ts","../../../../packages/core/src/view/errors.ts","../../../../packages/core/src/view/types.ts","../../../../packages/core/src/security.ts","../../../../packages/core/src/i18n/tokens.ts","../../../../packages/core/src/platform_core_providers.ts","../../../../packages/core/src/change_detection.ts","../../../../packages/core/src/change_detection/change_detection.ts","../../../../packages/core/src/change_detection/differs/keyvalue_differs.ts","../../../../packages/core/src/change_detection/differs/iterable_differs.ts","../../../../packages/core/src/change_detection/differs/default_keyvalue_differ.ts","../../../../packages/core/src/change_detection/differs/default_iterable_differ.ts","../../../../packages/core/src/change_detection/change_detection_util.ts","../../../../packages/core/src/debug/debug_node.ts","../../../../packages/core/src/linker.ts","../../../../packages/core/src/linker/view_ref.ts","../../../../packages/core/src/change_detection/change_detector_ref.ts","../../../../packages/core/src/linker/view_container_ref.ts","../../../../packages/core/src/linker/template_ref.ts","../../../../packages/core/src/linker/system_js_ng_module_factory_loader.ts","../../../../packages/core/src/linker/query_list.ts","../../../../packages/core/src/linker/ng_module_factory_loader.ts","../../../../packages/core/src/linker/element_ref.ts","../../../../packages/core/src/render.ts","../../../../packages/core/src/render/api.ts","../../../../packages/core/src/zone.ts","../../../../packages/core/src/application_ref.ts","../../../../packages/core/src/testability/testability.ts","../../../../packages/core/src/zone/ng_zone.ts","../../../../packages/core/src/event_emitter.ts","../../../../packages/core/src/profile/profile.ts","../../../../packages/core/src/profile/wtf_impl.ts","../../../../packages/core/src/linker/ng_module_factory.ts","../../../../packages/core/src/linker/component_factory_resolver.ts","../../../../packages/core/src/linker/component_factory.ts","../../../../packages/core/src/linker/compiler.ts","../../../../packages/core/src/console.ts","../../../../packages/core/src/application_tokens.ts","../../../../packages/core/src/application_init.ts","../../../../packages/core/src/util/lang.ts","../../../../packages/core/src/di.ts","../../../../packages/core/src/di/reflective_injector.ts","../../../../packages/core/src/di/reflective_provider.ts","../../../../packages/core/src/reflection/reflection.ts","../../../../packages/core/src/reflection/reflector.ts","../../../../packages/core/src/reflection/reflector_reader.ts","../../../../packages/core/src/reflection/reflection_capabilities.ts","../../../../packages/core/src/type.ts","../../../../packages/core/src/di/reflective_key.ts","../../../../packages/core/src/di/reflective_errors.ts","../../../../packages/core/src/error_handler.ts","../../../../packages/core/src/errors.ts","../../../../packages/core/src/di/injector.ts","../../../../packages/core/src/di/forward_ref.ts","../../../../packages/core/src/di/metadata.ts","../../../../packages/core/src/version.ts","../../../../packages/core/src/metadata.ts","../../../../packages/core/src/metadata/view.ts","../../../../packages/core/src/metadata/ng_module.ts","../../../../packages/core/src/metadata/directives.ts","../../../../packages/core/src/change_detection/constants.ts","../../../../packages/core/src/metadata/di.ts","../../../../packages/core/src/util/decorators.ts","../../../../packages/core/src/util.ts","../../../../packages/core/src/di/injection_token.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport {Class,ClassDefinition,TypeDecorator,createPlatform,assertPlatform,destroyPlatform,getPlatform,PlatformRef,ApplicationRef,enableProdMode,isDevMode,createPlatformFactory,NgProbeToken,APP_ID,PACKAGE_ROOT_URL,PLATFORM_INITIALIZER,PLATFORM_ID,APP_BOOTSTRAP_LISTENER,APP_INITIALIZER,ApplicationInitStatus,DebugElement,DebugNode,asNativeElements,getDebugNode,Predicate,GetTestability,Testability,TestabilityRegistry,setTestabilityGetter,TRANSLATIONS,TRANSLATIONS_FORMAT,LOCALE_ID,MissingTranslationStrategy,ApplicationModule,wtfCreateScope,wtfLeave,wtfStartTimeRange,wtfEndTimeRange,WtfScopeFn,Type,EventEmitter,ErrorHandler,Sanitizer,SecurityContext,AnimationEntryMetadata,AnimationStateTransitionMetadata,AnimationPlayer,AnimationStyles,AnimationKeyframe,ANALYZE_FOR_ENTRY_COMPONENTS,Attribute,ContentChild,ContentChildDecorator,ContentChildren,ContentChildrenDecorator,Query,ViewChild,ViewChildDecorator,ViewChildren,ViewChildrenDecorator,Component,ComponentDecorator,Directive,DirectiveDecorator,HostBinding,HostListener,Input,Output,Pipe,AfterContentChecked,AfterContentInit,AfterViewChecked,AfterViewInit,DoCheck,OnChanges,OnDestroy,OnInit,CUSTOM_ELEMENTS_SCHEMA,ModuleWithProviders,NO_ERRORS_SCHEMA,NgModule,SchemaMetadata,ViewEncapsulation,Version,VERSION,forwardRef,resolveForwardRef,ForwardRefFn,Injector,ReflectiveInjector,Provider,TypeProvider,ValueProvider,ClassProvider,ExistingProvider,FactoryProvider,ResolvedReflectiveFactory,ResolvedReflectiveProvider,ReflectiveKey,InjectionToken,OpaqueToken,InjectDecorator,Inject,OptionalDecorator,Optional,InjectableDecorator,Injectable,SelfDecorator,Self,SkipSelfDecorator,SkipSelf,HostDecorator,Host,NgZone,RenderComponentType,Renderer,Renderer2,RendererFactory2,RendererStyleFlags2,RendererType2,RootRenderer,COMPILER_OPTIONS,Compiler,CompilerFactory,CompilerOptions,ModuleWithComponentFactories,ComponentFactory,ComponentRef,ComponentFactoryResolver,ElementRef,NgModuleFactory,NgModuleRef,NgModuleFactoryLoader,getModuleFactory,QueryList,SystemJsNgModuleLoader,SystemJsNgModuleLoaderConfig,TemplateRef,ViewContainerRef,EmbeddedViewRef,ViewRef,ChangeDetectionStrategy,ChangeDetectorRef,CollectionChangeRecord,DefaultIterableDiffer,IterableChangeRecord,IterableChanges,IterableDiffer,IterableDifferFactory,IterableDiffers,KeyValueChangeRecord,KeyValueChanges,KeyValueDiffer,KeyValueDifferFactory,KeyValueDiffers,NgIterable,PipeTransform,SimpleChange,SimpleChanges,TrackByFn,TrackByFunction,WrappedValue,platformCore,ɵALLOW_MULTIPLE_PLATFORMS,ɵAPP_ID_RANDOM_PROVIDER,ɵValueUnwrapper,ɵdevModeEqual,ɵisListLikeIterable,ɵChangeDetectorStatus,ɵisDefaultChangeDetectionStrategy,ɵConsole,ɵERROR_COMPONENT_TYPE,ɵComponentFactory,ɵCodegenComponentFactoryResolver,ɵLIFECYCLE_HOOKS_VALUES,ɵLifecycleHooks,ɵViewMetadata,ɵReflector,ɵreflector,ɵReflectionCapabilities,ɵReflectorReader,ɵGetterFn,ɵMethodFn,ɵSetterFn,ɵDirectRenderer,ɵRenderDebugInfo,ɵglobal,ɵlooseIdentical,ɵstringify,ɵmakeDecorator,ɵisObservable,ɵisPromise,ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR,ɵNgModuleInjector,ɵregisterModuleFactory,ɵArgumentType,ɵBindingFlags,ɵDepFlags,ɵEMPTY_ARRAY,ɵEMPTY_MAP,ɵNodeFlags,ɵQueryBindingType,ɵQueryValueType,ɵViewDefinition,ɵViewFlags,ɵand,ɵccf,ɵcrt,ɵdid,ɵeld,ɵelementEventFullName,ɵgetComponentViewDefinitionFactory,ɵinlineInterpolate,ɵinterpolate,ɵncd,ɵnov,ɵpid,ɵprd,ɵpad,ɵpod,ɵppd,ɵqud,ɵted,ɵunv,ɵvid,AUTO_STYLE,AnimationMetadata,AnimationTriggerMetadata,AnimationStateMetadata,AnimationTransitionMetadata,AnimationKeyframesSequenceMetadata,AnimationStyleMetadata,AnimationAnimateMetadata,AnimationSequenceMetadata,AnimationGroupMetadata,trigger,animate,group,sequence,style,state,keyframes,transition,AnimationTransitionEvent} from './public_api';\n\nexport {AnimationMetadataType as ɵy,animate as ɵba,group as ɵbb,keyframes as ɵbf,sequence as ɵbc,state as ɵbe,style as ɵbd,transition as ɵbg,trigger as ɵz} from './src/animation/dsl';\nexport {_initViewEngine as ɵo,_iterableDiffersFactory as ɵl,_keyValueDiffersFactory as ɵm,_localeFactory as ɵn} from './src/application_module';\nexport {ApplicationRef_ as ɵf} from './src/application_ref';\nexport {_appIdRandomProviderFactory as ɵg} from './src/application_tokens';\nexport {defaultIterableDiffers as ɵh,defaultKeyValueDiffers as ɵi} from './src/change_detection/change_detection';\nexport {DefaultIterableDifferFactory as ɵj} from './src/change_detection/differs/default_iterable_differ';\nexport {DefaultKeyValueDifferFactory as ɵk} from './src/change_detection/differs/default_keyvalue_differ';\nexport {ReflectiveInjector_ as ɵc} from './src/di/reflective_injector';\nexport {ReflectiveDependency as ɵd,resolveReflectiveProviders as ɵe} from './src/di/reflective_provider';\nexport {wtfEnabled as ɵp} from './src/profile/profile';\nexport {createScope as ɵr,detectWTF as ɵq,endTimeRange as ɵu,leave as ɵs,startTimeRange as ɵt} from './src/profile/wtf_impl';\nexport {PlatformReflectionCapabilities as ɵv} from './src/reflection/platform_reflection_capabilities';\nexport {makeParamDecorator as ɵa,makePropDecorator as ɵb} from './src/util/decorators';\nexport {_def as ɵw} from './src/view/provider';\nexport {DebugContext as ɵx} from './src/view/types';","/**\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 * @module\n * @description\n * Entry point for all public APIs of the core package.\n */\nexport {Class,ClassDefinition,TypeDecorator,createPlatform,assertPlatform,destroyPlatform,getPlatform,PlatformRef,ApplicationRef,enableProdMode,isDevMode,createPlatformFactory,NgProbeToken,APP_ID,PACKAGE_ROOT_URL,PLATFORM_INITIALIZER,PLATFORM_ID,APP_BOOTSTRAP_LISTENER,APP_INITIALIZER,ApplicationInitStatus,DebugElement,DebugNode,asNativeElements,getDebugNode,Predicate,GetTestability,Testability,TestabilityRegistry,setTestabilityGetter,TRANSLATIONS,TRANSLATIONS_FORMAT,LOCALE_ID,MissingTranslationStrategy,ApplicationModule,wtfCreateScope,wtfLeave,wtfStartTimeRange,wtfEndTimeRange,WtfScopeFn,Type,EventEmitter,ErrorHandler,Sanitizer,SecurityContext,AnimationEntryMetadata,AnimationStateTransitionMetadata,AnimationPlayer,AnimationStyles,AnimationKeyframe,ANALYZE_FOR_ENTRY_COMPONENTS,Attribute,ContentChild,ContentChildDecorator,ContentChildren,ContentChildrenDecorator,Query,ViewChild,ViewChildDecorator,ViewChildren,ViewChildrenDecorator,Component,ComponentDecorator,Directive,DirectiveDecorator,HostBinding,HostListener,Input,Output,Pipe,AfterContentChecked,AfterContentInit,AfterViewChecked,AfterViewInit,DoCheck,OnChanges,OnDestroy,OnInit,CUSTOM_ELEMENTS_SCHEMA,ModuleWithProviders,NO_ERRORS_SCHEMA,NgModule,SchemaMetadata,ViewEncapsulation,Version,VERSION,forwardRef,resolveForwardRef,ForwardRefFn,Injector,ReflectiveInjector,Provider,TypeProvider,ValueProvider,ClassProvider,ExistingProvider,FactoryProvider,ResolvedReflectiveFactory,ResolvedReflectiveProvider,ReflectiveKey,InjectionToken,OpaqueToken,InjectDecorator,Inject,OptionalDecorator,Optional,InjectableDecorator,Injectable,SelfDecorator,Self,SkipSelfDecorator,SkipSelf,HostDecorator,Host,NgZone,RenderComponentType,Renderer,Renderer2,RendererFactory2,RendererStyleFlags2,RendererType2,RootRenderer,COMPILER_OPTIONS,Compiler,CompilerFactory,CompilerOptions,ModuleWithComponentFactories,ComponentFactory,ComponentRef,ComponentFactoryResolver,ElementRef,NgModuleFactory,NgModuleRef,NgModuleFactoryLoader,getModuleFactory,QueryList,SystemJsNgModuleLoader,SystemJsNgModuleLoaderConfig,TemplateRef,ViewContainerRef,EmbeddedViewRef,ViewRef,ChangeDetectionStrategy,ChangeDetectorRef,CollectionChangeRecord,DefaultIterableDiffer,IterableChangeRecord,IterableChanges,IterableDiffer,IterableDifferFactory,IterableDiffers,KeyValueChangeRecord,KeyValueChanges,KeyValueDiffer,KeyValueDifferFactory,KeyValueDiffers,NgIterable,PipeTransform,SimpleChange,SimpleChanges,TrackByFn,TrackByFunction,WrappedValue,platformCore,ɵALLOW_MULTIPLE_PLATFORMS,ɵAPP_ID_RANDOM_PROVIDER,ɵValueUnwrapper,ɵdevModeEqual,ɵisListLikeIterable,ɵChangeDetectorStatus,ɵisDefaultChangeDetectionStrategy,ɵConsole,ɵERROR_COMPONENT_TYPE,ɵComponentFactory,ɵCodegenComponentFactoryResolver,ɵLIFECYCLE_HOOKS_VALUES,ɵLifecycleHooks,ɵViewMetadata,ɵReflector,ɵreflector,ɵReflectionCapabilities,ɵReflectorReader,ɵGetterFn,ɵMethodFn,ɵSetterFn,ɵDirectRenderer,ɵRenderDebugInfo,ɵglobal,ɵlooseIdentical,ɵstringify,ɵmakeDecorator,ɵisObservable,ɵisPromise,ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR,ɵNgModuleInjector,ɵregisterModuleFactory,ɵArgumentType,ɵBindingFlags,ɵDepFlags,ɵEMPTY_ARRAY,ɵEMPTY_MAP,ɵNodeFlags,ɵQueryBindingType,ɵQueryValueType,ɵViewDefinition,ɵViewFlags,ɵand,ɵccf,ɵcrt,ɵdid,ɵeld,ɵelementEventFullName,ɵgetComponentViewDefinitionFactory,ɵinlineInterpolate,ɵinterpolate,ɵncd,ɵnov,ɵpid,ɵprd,ɵpad,ɵpod,ɵppd,ɵqud,ɵted,ɵunv,ɵvid,AUTO_STYLE,AnimationMetadata,AnimationTriggerMetadata,AnimationStateMetadata,AnimationTransitionMetadata,AnimationKeyframesSequenceMetadata,AnimationStyleMetadata,AnimationAnimateMetadata,AnimationSequenceMetadata,AnimationGroupMetadata,trigger,animate,group,sequence,style,state,keyframes,transition,AnimationTransitionEvent} from './src/core';\n\n// This file only reexports content of the `src` folder. Keep it that way.\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 * @module\n * @description\n * Entry point from which you should import all public core APIs.\n */\nexport {ANALYZE_FOR_ENTRY_COMPONENTS,Attribute,ContentChild,ContentChildDecorator,ContentChildren,ContentChildrenDecorator,Query,ViewChild,ViewChildDecorator,ViewChildren,ViewChildrenDecorator,Component,ComponentDecorator,Directive,DirectiveDecorator,HostBinding,HostListener,Input,Output,Pipe,AfterContentChecked,AfterContentInit,AfterViewChecked,AfterViewInit,DoCheck,OnChanges,OnDestroy,OnInit,CUSTOM_ELEMENTS_SCHEMA,ModuleWithProviders,NO_ERRORS_SCHEMA,NgModule,SchemaMetadata,ViewEncapsulation} from './metadata';\nexport {Version,VERSION} from './version';\nexport {Class, ClassDefinition, TypeDecorator} from './util/decorators';\nexport {forwardRef,resolveForwardRef,ForwardRefFn,Injector,ReflectiveInjector,Provider,TypeProvider,ValueProvider,ClassProvider,ExistingProvider,FactoryProvider,ResolvedReflectiveFactory,ResolvedReflectiveProvider,ReflectiveKey,InjectionToken,OpaqueToken,InjectDecorator,Inject,OptionalDecorator,Optional,InjectableDecorator,Injectable,SelfDecorator,Self,SkipSelfDecorator,SkipSelf,HostDecorator,Host} from './di';\nexport {createPlatform, assertPlatform, destroyPlatform, getPlatform, PlatformRef, ApplicationRef, enableProdMode, isDevMode, createPlatformFactory, NgProbeToken} from './application_ref';\nexport {APP_ID, PACKAGE_ROOT_URL, PLATFORM_INITIALIZER, PLATFORM_ID, APP_BOOTSTRAP_LISTENER} from './application_tokens';\nexport {APP_INITIALIZER, ApplicationInitStatus} from './application_init';\nexport {NgZone} from './zone';\nexport {RenderComponentType,Renderer,Renderer2,RendererFactory2,RendererStyleFlags2,RendererType2,RootRenderer} from './render';\nexport {COMPILER_OPTIONS,Compiler,CompilerFactory,CompilerOptions,ModuleWithComponentFactories,ComponentFactory,ComponentRef,ComponentFactoryResolver,ElementRef,NgModuleFactory,NgModuleRef,NgModuleFactoryLoader,getModuleFactory,QueryList,SystemJsNgModuleLoader,SystemJsNgModuleLoaderConfig,TemplateRef,ViewContainerRef,EmbeddedViewRef,ViewRef} from './linker';\nexport {DebugElement, DebugNode, asNativeElements, getDebugNode, Predicate} from './debug/debug_node';\nexport {GetTestability, Testability, TestabilityRegistry, setTestabilityGetter} from './testability/testability';\nexport {ChangeDetectionStrategy,ChangeDetectorRef,CollectionChangeRecord,DefaultIterableDiffer,IterableChangeRecord,IterableChanges,IterableDiffer,IterableDifferFactory,IterableDiffers,KeyValueChangeRecord,KeyValueChanges,KeyValueDiffer,KeyValueDifferFactory,KeyValueDiffers,NgIterable,PipeTransform,SimpleChange,SimpleChanges,TrackByFn,TrackByFunction,WrappedValue} from './change_detection';\nexport {platformCore} from './platform_core_providers';\nexport {TRANSLATIONS, TRANSLATIONS_FORMAT, LOCALE_ID, MissingTranslationStrategy} from './i18n/tokens';\nexport {ApplicationModule} from './application_module';\nexport {wtfCreateScope, wtfLeave, wtfStartTimeRange, wtfEndTimeRange, WtfScopeFn} from './profile/profile';\nexport {Type} from './type';\nexport {EventEmitter} from './event_emitter';\nexport {ErrorHandler} from './error_handler';\nexport {ɵALLOW_MULTIPLE_PLATFORMS,ɵAPP_ID_RANDOM_PROVIDER,ɵValueUnwrapper,ɵdevModeEqual,ɵisListLikeIterable,ɵChangeDetectorStatus,ɵisDefaultChangeDetectionStrategy,ɵConsole,ɵERROR_COMPONENT_TYPE,ɵComponentFactory,ɵCodegenComponentFactoryResolver,ɵLIFECYCLE_HOOKS_VALUES,ɵLifecycleHooks,ɵViewMetadata,ɵReflector,ɵreflector,ɵReflectionCapabilities,ɵReflectorReader,ɵGetterFn,ɵMethodFn,ɵSetterFn,ɵDirectRenderer,ɵRenderDebugInfo,ɵglobal,ɵlooseIdentical,ɵstringify,ɵmakeDecorator,ɵisObservable,ɵisPromise,ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR} from './core_private_export';\nexport {Sanitizer, SecurityContext} from './security';\nexport {ɵNgModuleInjector,ɵregisterModuleFactory,ɵArgumentType,ɵBindingFlags,ɵDepFlags,ɵEMPTY_ARRAY,ɵEMPTY_MAP,ɵNodeFlags,ɵQueryBindingType,ɵQueryValueType,ɵViewDefinition,ɵViewFlags,ɵand,ɵccf,ɵcrt,ɵdid,ɵeld,ɵelementEventFullName,ɵgetComponentViewDefinitionFactory,ɵinlineInterpolate,ɵinterpolate,ɵncd,ɵnov,ɵpid,ɵprd,ɵpad,ɵpod,ɵppd,ɵqud,ɵted,ɵunv,ɵvid} from './codegen_private_exports';\nexport {AUTO_STYLE,AnimationMetadata,AnimationTriggerMetadata,AnimationStateMetadata,AnimationTransitionMetadata,AnimationKeyframesSequenceMetadata,AnimationStyleMetadata,AnimationAnimateMetadata,AnimationSequenceMetadata,AnimationGroupMetadata,trigger,animate,group,sequence,style,state,keyframes,transition,AnimationTransitionEvent} from './animation/animation_metadata_wrapped';\nimport {AnimationTriggerMetadata} from './animation/animation_metadata_wrapped';\n\n\n// For backwards compatibility.\n/**\n * @deprecated from v4\n */\nexport type AnimationEntryMetadata = any;\n/**\n * @deprecated from v4\n */\nexport type AnimationStateTransitionMetadata = any;\n/**\n * @deprecated from v4\n */\nexport type AnimationPlayer = any;\n/**\n * @deprecated from v4\n */\nexport type AnimationStyles = any;\n/**\n * @deprecated from v4\n */\nexport type AnimationKeyframe = any;\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\nimport {AnimateTimings, AnimationMetadataType, animate as _animate, group as _group, keyframes as _keyframes, sequence as _sequence, state as _state, style as _style, transition as _transition, trigger as _trigger} from './dsl';\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n */\nexport const AUTO_STYLE = '*';\n\n/**\n * @deprecated This symbol has moved. Please Import from @angular/animations instead!\n */\nexport interface AnimationMetadata { type: AnimationMetadataType; }\n\n/**\n * @deprecated This symbol has moved. Please Import from @angular/animations instead!\n */\nexport interface AnimationTriggerMetadata {\n name: string;\n definitions: AnimationMetadata[];\n}\n\n/**\n * @deprecated This symbol has moved. Please Import from @angular/animations instead!\n */\nexport interface AnimationStateMetadata extends AnimationMetadata {\n name: string;\n styles: AnimationStyleMetadata;\n}\n\n/**\n * @deprecated This symbol has moved. Please Import from @angular/animations instead!\n */\nexport interface AnimationTransitionMetadata extends AnimationMetadata {\n expr: string|((fromState: string, toState: string) => boolean);\n animation: AnimationMetadata|AnimationMetadata[];\n}\n\n/**\n * @deprecated This symbol has moved. Please Import from @angular/animations instead!\n */\nexport interface AnimationKeyframesSequenceMetadata extends AnimationMetadata {\n steps: AnimationStyleMetadata[];\n}\n\n/**\n * @deprecated This symbol has moved. Please Import from @angular/animations instead!\n */\nexport interface AnimationStyleMetadata extends AnimationMetadata {\n styles: {[key: string]: string | number}|{[key: string]: string | number}[];\n offset?: number;\n}\n\n/**\n * @deprecated This symbol has moved. Please Import from @angular/animations instead!\n */\nexport interface AnimationAnimateMetadata extends AnimationMetadata {\n timings: string|number|AnimateTimings;\n styles: AnimationStyleMetadata|AnimationKeyframesSequenceMetadata|null;\n}\n\n/**\n * @deprecated This symbol has moved. Please Import from @angular/animations instead!\n */\nexport interface AnimationSequenceMetadata extends AnimationMetadata { steps: AnimationMetadata[]; }\n\n/**\n * @deprecated This symbol has moved. Please Import from @angular/animations instead!\n */\nexport interface AnimationGroupMetadata extends AnimationMetadata { steps: AnimationMetadata[]; }\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} name\n * @param {?} definitions\n * @return {?}\n */\nexport function trigger(name: string, definitions: AnimationMetadata[]): AnimationTriggerMetadata {\n return _trigger(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 */\nexport function animate(\n timings: string | number, styles?: AnimationStyleMetadata |\n AnimationKeyframesSequenceMetadata): AnimationAnimateMetadata {\n return _animate(timings, styles);\n}\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} steps\n * @return {?}\n */\nexport function group(steps: AnimationMetadata[]): AnimationGroupMetadata {\n return _group(steps);\n}\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} steps\n * @return {?}\n */\nexport function sequence(steps: AnimationMetadata[]): AnimationSequenceMetadata {\n return _sequence(steps);\n}\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} tokens\n * @return {?}\n */\nexport function style(\n tokens: {[key: string]: string | number} |\n Array<{[key: string]: string | number}>): AnimationStyleMetadata {\n return _style(tokens);\n}\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} name\n * @param {?} styles\n * @return {?}\n */\nexport function state(name: string, styles: AnimationStyleMetadata): AnimationStateMetadata {\n return _state(name, styles);\n}\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} steps\n * @return {?}\n */\nexport function keyframes(steps: AnimationStyleMetadata[]): AnimationKeyframesSequenceMetadata {\n return _keyframes(steps);\n}\n/**\n * @deprecated This symbol has moved. Please Import from \\@angular/animations instead!\n * @param {?} stateChangeExpr\n * @param {?} steps\n * @return {?}\n */\nexport function transition(\n stateChangeExpr: string | ((fromState: string, toState: string) => boolean),\n steps: AnimationMetadata | AnimationMetadata[]): AnimationTransitionMetadata {\n return _transition(stateChangeExpr, steps);\n}\n\n/**\n * @deprecated This has been renamed to `AnimationEvent`. Please import it from @angular/animations.\n */\nexport interface AnimationTransitionEvent {\n fromState: string;\n toState: string;\n totalTime: number;\n phaseName: string;\n element: any;\n triggerName: string;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport interface ɵStyleData { [key: string]: string|number; }\n\n/**\n * @experimental Animation support is experimental.\n */\nexport declare type AnimateTimings = {\n duration: number,\n delay: number,\n easing: string | null\n};\n\n/**\n * @experimental Animation support is experimental.\n */\nexport const enum AnimationMetadataType {\n State,\n Transition,\n Sequence,\n Group,\n Animate,\n KeyframeSequence,\n Style\n}\n/**\n * \\@experimental Animation support is experimental.\n */\nexport const AUTO_STYLE = '*';\n\n/**\n * @experimental Animation support is experimental.\n */\nexport interface AnimationMetadata { type: AnimationMetadataType; }\n\n/**\n * @experimental Animation support is experimental.\n */\nexport interface AnimationTriggerMetadata {\n name: string;\n definitions: AnimationMetadata[];\n}\n\n/**\n * Metadata representing the entry of animations. Instances of this class are provided via the\n * animation DSL when the {@link state state animation function} is called.\n *\n * @experimental Animation support is experimental.\n */\nexport interface AnimationStateMetadata extends AnimationMetadata {\n name: string;\n styles: AnimationStyleMetadata;\n}\n\n/**\n * Metadata representing the entry of animations. Instances of this class are provided via the\n * animation DSL when the {@link transition transition animation function} is called.\n *\n * @experimental Animation support is experimental.\n */\nexport interface AnimationTransitionMetadata extends AnimationMetadata {\n expr: string|((fromState: string, toState: string) => boolean);\n animation: AnimationMetadata|AnimationMetadata[];\n}\n\n/**\n * Metadata representing the entry of animations. Instances of this class are provided via the\n * animation DSL when the {@link keyframes keyframes animation function} is called.\n *\n * @experimental Animation support is experimental.\n */\nexport interface AnimationKeyframesSequenceMetadata extends AnimationMetadata {\n steps: AnimationStyleMetadata[];\n}\n\n/**\n * Metadata representing the entry of animations. Instances of this class are provided via the\n * animation DSL when the {@link style style animation function} is called.\n *\n * @experimental Animation support is experimental.\n */\nexport interface AnimationStyleMetadata extends AnimationMetadata {\n styles: {[key: string]: string | number}|{[key: string]: string | number}[];\n offset?: number;\n}\n\n/**\n * Metadata representing the entry of animations. Instances of this class are provided via the\n * animation DSL when the {@link animate animate animation function} is called.\n *\n * @experimental Animation support is experimental.\n */\nexport interface AnimationAnimateMetadata extends AnimationMetadata {\n timings: string|number|AnimateTimings;\n styles: AnimationStyleMetadata|AnimationKeyframesSequenceMetadata|null;\n}\n\n/**\n * Metadata representing the entry of animations. Instances of this class are provided via the\n * animation DSL when the {@link sequence sequence animation function} is called.\n *\n * @experimental Animation support is experimental.\n */\nexport interface AnimationSequenceMetadata extends AnimationMetadata { steps: AnimationMetadata[]; }\n\n/**\n * Metadata representing the entry of animations. Instances of this class are provided via the\n * animation DSL when the {@link group group animation function} is called.\n *\n * @experimental Animation support is experimental.\n */\nexport interface AnimationGroupMetadata extends AnimationMetadata { steps: AnimationMetadata[]; }\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 {\\@link\n * Component#animations-anchor component animations metadata page} to gain a better understanding of\n * how animations in Angular are used.\n * \n * `trigger` Creates an animation trigger which will a list of {\\@link state state} and {\\@link\n * transition transition} entries that will be evaluated when the expression bound to the trigger\n * changes.\n * \n * Triggers are registered within the component annotation data under the {\\@link\n * Component#animations-anchor 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 the\n * trigger is bound to (in the form of `[\\@triggerName]=\"expression\"`.\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 {\\@link\n * 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 * tools/gulp-tasks/validate-commit-message.js ```\n * \n * {\\@example core/animation/ts/dsl/animation_example.ts region='Component'}\n * \n * \\@experimental Animation support is experimental.\n * @param {?} name\n * @param {?} definitions\n * @return {?}\n */\nexport function trigger(name: string, definitions: AnimationMetadata[]): AnimationTriggerMetadata {\n return {name, definitions};\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-anchor 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 */\nexport function animate(\n timings: string | number, styles: AnimationStyleMetadata | AnimationKeyframesSequenceMetadata |\n null = null): AnimationAnimateMetadata {\n return {type: AnimationMetadataType.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-anchor 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 statrting/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 * @return {?}\n */\nexport function group(steps: AnimationMetadata[]): AnimationGroupMetadata {\n return {type: AnimationMetadataType.Group, steps: steps};\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-anchor 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 * @return {?}\n */\nexport function sequence(steps: AnimationMetadata[]): AnimationSequenceMetadata {\n return {type: AnimationMetadataType.Sequence, steps: steps};\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-anchor 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 */\nexport function style(\n tokens: {[key: string]: string | number} |\n Array<{[key: string]: string | number}>): AnimationStyleMetadata {\n return {type: AnimationMetadataType.Style, styles: tokens};\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-anchor 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 * @return {?}\n */\nexport function state(name: string, styles: AnimationStyleMetadata): AnimationStateMetadata {\n return {type: AnimationMetadataType.State, name: name, styles: styles};\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-anchor 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 */\nexport function keyframes(steps: AnimationStyleMetadata[]): AnimationKeyframesSequenceMetadata {\n return {type: AnimationMetadataType.KeyframeSequence, 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-anchor 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 * ### Transition Aliases (`: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 * {\\@example core/animation/ts/dsl/animation_example.ts region='Component'}\n * \n * \\@experimental Animation support is experimental.\n * @param {?} stateChangeExpr\n * @param {?} steps\n * @return {?}\n */\nexport function transition(\n stateChangeExpr: string | ((fromState: string, toState: string) => boolean),\n steps: AnimationMetadata | AnimationMetadata[]): AnimationTransitionMetadata {\n return {type: AnimationMetadataType.Transition, expr: stateChangeExpr, animation: steps};\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\nexport {CodegenComponentFactoryResolver as ɵCodegenComponentFactoryResolver} from './linker/component_factory_resolver';\nexport {NgModuleInjector as ɵNgModuleInjector} from './linker/ng_module_factory';\nexport {registerModuleFactory as ɵregisterModuleFactory} from './linker/ng_module_factory_loader';\nexport {reflector as ɵreflector} from './reflection/reflection';\nexport {ArgumentType as ɵArgumentType, BindingFlags as ɵBindingFlags, DepFlags as ɵDepFlags, EMPTY_ARRAY as ɵEMPTY_ARRAY, EMPTY_MAP as ɵEMPTY_MAP, NodeFlags as ɵNodeFlags, QueryBindingType as ɵQueryBindingType, QueryValueType as ɵQueryValueType, ViewDefinition as ɵViewDefinition, ViewFlags as ɵViewFlags, anchorDef as ɵand, createComponentFactory as ɵccf, createRendererType2 as ɵcrt, directiveDef as ɵdid, elementDef as ɵeld, elementEventFullName as ɵelementEventFullName, getComponentViewDefinitionFactory as ɵgetComponentViewDefinitionFactory, inlineInterpolate as ɵinlineInterpolate, interpolate as ɵinterpolate, ngContentDef as ɵncd, nodeValue as ɵnov, pipeDef as ɵpid, providerDef as ɵprd, pureArrayDef as ɵpad, pureObjectDef as ɵpod, purePipeDef as ɵppd, queryDef as ɵqud, textDef as ɵted, unwrapValue as ɵunv, viewDef as ɵvid} from './view/index';\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\nexport {ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS} from './application_ref';\nexport {APP_ID_RANDOM_PROVIDER as ɵAPP_ID_RANDOM_PROVIDER} from './application_tokens';\nexport {ValueUnwrapper as ɵValueUnwrapper, devModeEqual as ɵdevModeEqual} from './change_detection/change_detection_util';\nexport {isListLikeIterable as ɵisListLikeIterable} from './change_detection/change_detection_util';\nexport {ChangeDetectorStatus as ɵChangeDetectorStatus, isDefaultChangeDetectionStrategy as ɵisDefaultChangeDetectionStrategy} from './change_detection/constants';\nexport {Console as ɵConsole} from './console';\nexport {ERROR_COMPONENT_TYPE as ɵERROR_COMPONENT_TYPE} from './errors';\nexport {ComponentFactory as ɵComponentFactory} from './linker/component_factory';\nexport {CodegenComponentFactoryResolver as ɵCodegenComponentFactoryResolver} from './linker/component_factory_resolver';\nexport {LIFECYCLE_HOOKS_VALUES as ɵLIFECYCLE_HOOKS_VALUES, LifecycleHooks as ɵLifecycleHooks} from './metadata/lifecycle_hooks';\nexport {ViewMetadata as ɵViewMetadata} from './metadata/view';\nexport {Reflector as ɵReflector, reflector as ɵreflector} from './reflection/reflection';\n// We need to import this name separately from the above wildcard, because this symbol is exposed.\nexport {ReflectionCapabilities as ɵReflectionCapabilities} from './reflection/reflection_capabilities';\nexport {ReflectorReader as ɵReflectorReader} from './reflection/reflector_reader';\nexport {GetterFn as ɵGetterFn, MethodFn as ɵMethodFn, SetterFn as ɵSetterFn} from './reflection/types';\nexport {DirectRenderer as ɵDirectRenderer, RenderDebugInfo as ɵRenderDebugInfo} from './render/api';\nexport {global as ɵglobal, looseIdentical as ɵlooseIdentical, stringify as ɵstringify} from './util';\nexport {makeDecorator as ɵmakeDecorator} from './util/decorators';\nexport {isObservable as ɵisObservable, isPromise as ɵisPromise} from './util/lang';\nexport {NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR} from './view/provider';\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\nimport {SimpleChange} from '../change_detection/change_detection_util';\nexport type LifecycleHooks = number;\nexport let LifecycleHooks: any = {};\nLifecycleHooks.OnInit = 0;\nLifecycleHooks.OnDestroy = 1;\nLifecycleHooks.DoCheck = 2;\nLifecycleHooks.OnChanges = 3;\nLifecycleHooks.AfterContentInit = 4;\nLifecycleHooks.AfterContentChecked = 5;\nLifecycleHooks.AfterViewInit = 6;\nLifecycleHooks.AfterViewChecked = 7;\nLifecycleHooks[LifecycleHooks.OnInit] = \"OnInit\";\nLifecycleHooks[LifecycleHooks.OnDestroy] = \"OnDestroy\";\nLifecycleHooks[LifecycleHooks.DoCheck] = \"DoCheck\";\nLifecycleHooks[LifecycleHooks.OnChanges] = \"OnChanges\";\nLifecycleHooks[LifecycleHooks.AfterContentInit] = \"AfterContentInit\";\nLifecycleHooks[LifecycleHooks.AfterContentChecked] = \"AfterContentChecked\";\nLifecycleHooks[LifecycleHooks.AfterViewInit] = \"AfterViewInit\";\nLifecycleHooks[LifecycleHooks.AfterViewChecked] = \"AfterViewChecked\";\n\n\n/**\n * A `changes` object whose keys are property names and\n * values are instances of {@link SimpleChange}. See {@link OnChanges}\n * @stable\n */\nexport interface SimpleChanges { [propName: string]: SimpleChange; }\n\nexport const /** @type {?} */ LIFECYCLE_HOOKS_VALUES = [\n LifecycleHooks.OnInit, LifecycleHooks.OnDestroy, LifecycleHooks.DoCheck, LifecycleHooks.OnChanges,\n LifecycleHooks.AfterContentInit, LifecycleHooks.AfterContentChecked, LifecycleHooks.AfterViewInit,\n LifecycleHooks.AfterViewChecked\n];\n\n/**\n * @whatItDoes Lifecycle hook that is called when any data-bound property of a directive changes.\n * @howToUse\n * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='OnChanges'}\n *\n * @description\n * `ngOnChanges` is called right after the data-bound properties have been checked and before view\n * and content children are checked if at least one of them has changed.\n * The `changes` parameter contains the changed properties.\n *\n * See {@linkDocs guide/lifecycle-hooks#onchanges \"Lifecycle Hooks Guide\"}.\n *\n * @stable\n */\nexport interface OnChanges { ngOnChanges(changes: SimpleChanges): void; }\n\n/**\n * @whatItDoes Lifecycle hook that is called after data-bound properties of a directive are\n * initialized.\n * @howToUse\n * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='OnInit'}\n *\n * @description\n * `ngOnInit` is called right after the directive's data-bound properties have been checked for the\n * first time, and before any of its children have been checked. It is invoked only once when the\n * directive is instantiated.\n *\n * See {@linkDocs guide/lifecycle-hooks \"Lifecycle Hooks Guide\"}.\n *\n * @stable\n */\nexport interface OnInit { ngOnInit(): void; }\n\n/**\n * @whatItDoes Lifecycle hook that is called when Angular dirty checks a directive.\n * @howToUse\n * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='DoCheck'}\n *\n * @description\n * `ngDoCheck` gets called to check the changes in the directives in addition to the default\n * algorithm. The default change detection algorithm looks for differences by comparing\n * bound-property values by reference across change detection runs.\n *\n * Note that a directive typically should not use both `DoCheck` and {@link OnChanges} to respond to\n * changes on the same input, as `ngOnChanges` will continue to be called when the default change\n * detector detects changes.\n *\n * See {@link KeyValueDiffers} and {@link IterableDiffers} for implementing custom dirty checking\n * for collections.\n *\n * See {@linkDocs guide/lifecycle-hooks#docheck \"Lifecycle Hooks Guide\"}.\n *\n * @stable\n */\nexport interface DoCheck { ngDoCheck(): void; }\n\n/**\n * @whatItDoes Lifecycle hook that is called when a directive, pipe or service is destroyed.\n * @howToUse\n * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='OnDestroy'}\n *\n * @description\n * `ngOnDestroy` callback is typically used for any custom cleanup that needs to occur when the\n * instance is destroyed.\n *\n * See {@linkDocs guide/lifecycle-hooks \"Lifecycle Hooks Guide\"}.\n *\n * @stable\n */\nexport interface OnDestroy { ngOnDestroy(): void; }\n\n/**\n *\n * @whatItDoes Lifecycle hook that is called after a directive's content has been fully\n * initialized.\n * @howToUse\n * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterContentInit'}\n *\n * @description\n * See {@linkDocs guide/lifecycle-hooks#aftercontent \"Lifecycle Hooks Guide\"}.\n *\n * @stable\n */\nexport interface AfterContentInit { ngAfterContentInit(): void; }\n\n/**\n * @whatItDoes Lifecycle hook that is called after every check of a directive's content.\n * @howToUse\n * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterContentChecked'}\n *\n * @description\n * See {@linkDocs guide/lifecycle-hooks#aftercontent \"Lifecycle Hooks Guide\"}.\n *\n * @stable\n */\nexport interface AfterContentChecked { ngAfterContentChecked(): void; }\n\n/**\n * @whatItDoes Lifecycle hook that is called after a component's view has been fully\n * initialized.\n * @howToUse\n * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterViewInit'}\n *\n * @description\n * See {@linkDocs guide/lifecycle-hooks#afterview \"Lifecycle Hooks Guide\"}.\n *\n * @stable\n */\nexport interface AfterViewInit { ngAfterViewInit(): void; }\n\n/**\n * @whatItDoes Lifecycle hook that is called after every check of a component's view.\n * @howToUse\n * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterViewChecked'}\n *\n * @description\n * See {@linkDocs guide/lifecycle-hooks#afterview \"Lifecycle Hooks Guide\"}.\n *\n * @stable\n */\nexport interface AfterViewChecked { ngAfterViewChecked(): void; }\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\nimport {APP_INITIALIZER, ApplicationInitStatus} from './application_init';\nimport {ApplicationRef, ApplicationRef_} from './application_ref';\nimport {APP_ID_RANDOM_PROVIDER} from './application_tokens';\nimport {IterableDiffers, KeyValueDiffers, defaultIterableDiffers, defaultKeyValueDiffers} from './change_detection/change_detection';\nimport {Inject, Optional, SkipSelf} from './di/metadata';\nimport {LOCALE_ID} from './i18n/tokens';\nimport {Compiler} from './linker/compiler';\nimport {NgModule} from './metadata';\nimport {initServicesIfNeeded} from './view/index';\n/**\n * @return {?}\n */\nexport function _iterableDiffersFactory() {\n return defaultIterableDiffers;\n}\n/**\n * @return {?}\n */\nexport function _keyValueDiffersFactory() {\n return defaultKeyValueDiffers;\n}\n/**\n * @param {?=} locale\n * @return {?}\n */\nexport function _localeFactory(locale?: string): string {\n return locale || 'en-US';\n}\n/**\n * @return {?}\n */\nexport function _initViewEngine() {\n initServicesIfNeeded();\n}\n/**\n * This module includes the providers of \\@angular/core that are needed\n * to bootstrap components via `ApplicationRef`.\n * \n * \\@experimental\n */\nexport class ApplicationModule {\n/**\n * @param {?} appRef\n */\nconstructor(appRef: ApplicationRef) {}\nstatic decorators: DecoratorInvocation[] = [\n{ type: NgModule, args: [{\n providers: [\n ApplicationRef_,\n {provide: ApplicationRef, useExisting: 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 {provide: APP_INITIALIZER, useValue: _initViewEngine, multi: true},\n ]\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: ApplicationRef, },\n];\n}\n\nfunction ApplicationModule_tsickle_Closure_declarations() {\n/** @type {?} */\nApplicationModule.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nApplicationModule.ctorParameters;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\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\nexport {anchorDef, elementDef} from './element';\nexport {ngContentDef} from './ng_content';\nexport {directiveDef, pipeDef, providerDef} from './provider';\nexport {pureArrayDef, pureObjectDef, purePipeDef} from './pure_expression';\nexport {queryDef} from './query';\nexport {ViewRef_, createComponentFactory, getComponentViewDefinitionFactory, nodeValue} from './refs';\nexport {initServicesIfNeeded} from './services';\nexport {textDef} from './text';\nexport {EMPTY_ARRAY, EMPTY_MAP, createRendererType2, elementEventFullName, inlineInterpolate, interpolate, rootRenderNodes, unwrapValue} from './util';\nexport {viewDef} from './view';\nexport {attachEmbeddedView, detachEmbeddedView, moveEmbeddedView} from './view_attach';\n\nexport {ViewDefinition,ViewDefinitionFactory,NodeLogger,ViewUpdateFn,NodeCheckFn,ArgumentType,ViewHandleEventFn,ViewFlags,NodeDef,NodeFlags,BindingDef,BindingFlags,OutputDef,OutputType,QueryValueType,ElementDef,ElementHandleEventFn,ProviderDef,DepDef,DepFlags,TextDef,QueryDef,QueryBindingDef,QueryBindingType,NgContentDef,ViewData,ViewState,DisposableFn,NodeData,TextData,asTextData,ElementData,ViewContainerData,TemplateData,asElementData,ProviderData,asProviderData,PureExpressionData,asPureExpressionData,asQueryList,RootData,DebugContext,CheckType,Services} from './types';\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\nimport {isDevMode} from '../application_ref';\nimport {DebugElement, DebugNode, EventListener, getDebugNode, indexDebugNode, removeDebugNodeFromIndex} from '../debug/debug_node';\nimport {Injector} from '../di';\nimport {ErrorHandler} from '../error_handler';\nimport {NgModuleRef} from '../linker/ng_module_factory';\nimport {Renderer2, RendererFactory2, RendererStyleFlags2, RendererType2} from '../render/api';\nimport {Sanitizer} from '../security';\n\nimport {isViewDebugError, viewDestroyedError, viewWrappedDebugError} from './errors';\nimport {resolveDep} from './provider';\nimport {dirtyParentQueries, getQueryValue} from './query';\nimport {createInjector} from './refs';\nimport {ArgumentType, BindingFlags, CheckType, DebugContext, ElementData, NodeDef, NodeFlags, NodeLogger, RootData, Services, ViewData, ViewDefinition, ViewState, asElementData, asPureExpressionData} from './types';\nimport {NOOP, isComponentView, renderNode, viewParentEl} from './util';\nimport {checkAndUpdateNode, checkAndUpdateView, checkNoChangesNode, checkNoChangesView, createEmbeddedView, createRootView, destroyView} from './view';\n\n\nlet /** @type {?} */ initialized = false;\n/**\n * @return {?}\n */\nexport function initServicesIfNeeded() {\n if (initialized) {\n return;\n }\n initialized = true;\n const /** @type {?} */ services = isDevMode() ? createDebugServices() : createProdServices();\n Services.setCurrentNode = services.setCurrentNode;\n Services.createRootView = services.createRootView;\n Services.createEmbeddedView = services.createEmbeddedView;\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: () => {},\n createRootView: createProdRootView,\n createEmbeddedView: createEmbeddedView,\n checkAndUpdateView: checkAndUpdateView,\n checkNoChangesView: checkNoChangesView,\n destroyView: destroyView,\n createDebugContext: (view: ViewData, nodeIndex: number) => new DebugContext_(view, nodeIndex),\n handleEvent: (view: ViewData, nodeIndex: number, eventName: string, event: any) =>\n view.def.handleEvent(view, nodeIndex, eventName, event),\n updateDirectives: (view: ViewData, checkType: CheckType) => view.def.updateDirectives(\n checkType === CheckType.CheckAndUpdate ? prodCheckAndUpdateNode :\n prodCheckNoChangesNode,\n view),\n updateRenderer: (view: ViewData, checkType: CheckType) => view.def.updateRenderer(\n checkType === CheckType.CheckAndUpdate ? prodCheckAndUpdateNode :\n prodCheckNoChangesNode,\n view),\n };\n}\n/**\n * @return {?}\n */\nfunction createDebugServices() {\n return {\n setCurrentNode: debugSetCurrentNode,\n createRootView: debugCreateRootView,\n createEmbeddedView: debugCreateEmbeddedView,\n checkAndUpdateView: debugCheckAndUpdateView,\n checkNoChangesView: debugCheckNoChangesView,\n destroyView: debugDestroyView,\n createDebugContext: (view: ViewData, nodeIndex: number) => 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(\n elInjector: Injector, projectableNodes: any[][], rootSelectorOrNode: string | any,\n def: ViewDefinition, ngModule: NgModuleRef<any>, context?: any): ViewData {\n const /** @type {?} */ rendererFactory: RendererFactory2 = ngModule.injector.get(RendererFactory2);\n return createRootView(\n createRootData(elInjector, ngModule, rendererFactory, projectableNodes, rootSelectorOrNode),\n 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(\n elInjector: Injector, projectableNodes: any[][], rootSelectorOrNode: string | any,\n def: ViewDefinition, ngModule: NgModuleRef<any>, context?: any): ViewData {\n const /** @type {?} */ rendererFactory: RendererFactory2 = ngModule.injector.get(RendererFactory2);\n const /** @type {?} */ root = createRootData(\n elInjector, ngModule, new DebugRendererFactory2(rendererFactory), projectableNodes,\n rootSelectorOrNode);\n return callWithDebugContext(DebugAction.create, createRootView, null, [root, def, context]);\n}\n/**\n * @param {?} elInjector\n * @param {?} ngModule\n * @param {?} rendererFactory\n * @param {?} projectableNodes\n * @param {?} rootSelectorOrNode\n * @return {?}\n */\nfunction createRootData(\n elInjector: Injector, ngModule: NgModuleRef<any>, rendererFactory: RendererFactory2,\n projectableNodes: any[][], rootSelectorOrNode: any): RootData {\n const /** @type {?} */ sanitizer = ngModule.injector.get(Sanitizer);\n const /** @type {?} */ errorHandler = ngModule.injector.get(ErrorHandler);\n const /** @type {?} */ renderer = rendererFactory.createRenderer(null, null);\n return {\n ngModule,\n injector: elInjector, projectableNodes,\n selectorOrNode: rootSelectorOrNode, sanitizer, rendererFactory, renderer, errorHandler\n };\n}\n/**\n * @param {?} view\n * @param {?} nodeIndex\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(\n view: ViewData, nodeIndex: number, argStyle: ArgumentType, v0?: any, v1?: any, v2?: any,\n v3?: any, v4?: any, v5?: any, v6?: any, v7?: any, v8?: any, v9?: any): any {\n const /** @type {?} */ nodeDef = view.def.nodes[nodeIndex];\n checkAndUpdateNode(view, nodeDef, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n return (nodeDef.flags & NodeFlags.CatPureExpression) ?\n asPureExpressionData(view, nodeIndex).value :\n undefined;\n}\n/**\n * @param {?} view\n * @param {?} nodeIndex\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(\n view: ViewData, nodeIndex: number, argStyle: ArgumentType, v0?: any, v1?: any, v2?: any,\n v3?: any, v4?: any, v5?: any, v6?: any, v7?: any, v8?: any, v9?: any): any {\n const /** @type {?} */ nodeDef = view.def.nodes[nodeIndex];\n checkNoChangesNode(view, nodeDef, argStyle, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n return (nodeDef.flags & NodeFlags.CatPureExpression) ?\n asPureExpressionData(view, nodeIndex).value :\n undefined;\n}\n/**\n * @param {?} parent\n * @param {?} anchorDef\n * @param {?=} context\n * @return {?}\n */\nfunction debugCreateEmbeddedView(parent: ViewData, anchorDef: NodeDef, context?: any): ViewData {\n return callWithDebugContext(\n DebugAction.create, createEmbeddedView, null, [parent, anchorDef, context]);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction debugCheckAndUpdateView(view: ViewData) {\n return callWithDebugContext(DebugAction.detectChanges, checkAndUpdateView, null, [view]);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction debugCheckNoChangesView(view: ViewData) {\n return callWithDebugContext(DebugAction.checkNoChanges, checkNoChangesView, null, [view]);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction debugDestroyView(view: ViewData) {\n return callWithDebugContext(DebugAction.destroy, destroyView, null, [view]);\n}\ntype DebugAction = number;\nlet DebugAction: any = {};\nDebugAction.create = 0;\nDebugAction.detectChanges = 1;\nDebugAction.checkNoChanges = 2;\nDebugAction.destroy = 3;\nDebugAction.handleEvent = 4;\nDebugAction[DebugAction.create] = \"create\";\nDebugAction[DebugAction.detectChanges] = \"detectChanges\";\nDebugAction[DebugAction.checkNoChanges] = \"checkNoChanges\";\nDebugAction[DebugAction.destroy] = \"destroy\";\nDebugAction[DebugAction.handleEvent] = \"handleEvent\";\n\n\nlet /** @type {?} */ _currentAction: DebugAction;\nlet /** @type {?} */ _currentView: ViewData;\nlet /** @type {?} */ _currentNodeIndex: number|null;\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @return {?}\n */\nfunction debugSetCurrentNode(view: ViewData, nodeIndex: number | null) {\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: ViewData, nodeIndex: number, eventName: string, event: any) {\n debugSetCurrentNode(view, nodeIndex);\n return callWithDebugContext(\n DebugAction.handleEvent, view.def.handleEvent, null, [view, nodeIndex, eventName, event]);\n}\n/**\n * @param {?} view\n * @param {?} checkType\n * @return {?}\n */\nfunction debugUpdateDirectives(view: ViewData, checkType: CheckType) {\n if (view.state & ViewState.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 */\nfunction debugCheckDirectivesFn(\n view: ViewData, nodeIndex: number, argStyle: ArgumentType, ...values: any[]) {\n const /** @type {?} */ nodeDef = view.def.nodes[nodeIndex];\n if (checkType === CheckType.CheckAndUpdate) {\n debugCheckAndUpdateNode(view, nodeDef, argStyle, values);\n } else {\n debugCheckNoChangesNode(view, nodeDef, argStyle, values);\n }\n if (nodeDef.flags & NodeFlags.TypeDirective) {\n debugSetCurrentNode(view, nextDirectiveWithBinding(view, nodeIndex));\n }\n return (nodeDef.flags & NodeFlags.CatPureExpression) ?\n asPureExpressionData(view, nodeDef.index).value :\n undefined;\n }\n}\n/**\n * @param {?} view\n * @param {?} checkType\n * @return {?}\n */\nfunction debugUpdateRenderer(view: ViewData, checkType: CheckType) {\n if (view.state & ViewState.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 */\nfunction debugCheckRenderNodeFn(\n view: ViewData, nodeIndex: number, argStyle: ArgumentType, ...values: any[]) {\n const /** @type {?} */ nodeDef = view.def.nodes[nodeIndex];\n if (checkType === CheckType.CheckAndUpdate) {\n debugCheckAndUpdateNode(view, nodeDef, argStyle, values);\n } else {\n debugCheckNoChangesNode(view, nodeDef, argStyle, values);\n }\n if (nodeDef.flags & NodeFlags.CatRenderNode) {\n debugSetCurrentNode(view, nextRenderNodeWithBinding(view, nodeIndex));\n }\n return (nodeDef.flags & NodeFlags.CatPureExpression) ?\n asPureExpressionData(view, nodeDef.index).value :\n undefined;\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} argStyle\n * @param {?} givenValues\n * @return {?}\n */\nfunction debugCheckAndUpdateNode(\n view: ViewData, nodeDef: NodeDef, argStyle: ArgumentType, givenValues: any[]): void {\n const /** @type {?} */ changed = ( /** @type {?} */((<any>checkAndUpdateNode)))(view, nodeDef, argStyle, ...givenValues);\n if (changed) {\n const /** @type {?} */ values = argStyle === ArgumentType.Dynamic ? givenValues[0] : givenValues;\n if (nodeDef.flags & NodeFlags.TypeDirective) {\n const /** @type {?} */ bindingValues: {[key: string]: string} = {};\n for (let /** @type {?} */ i = 0; i < nodeDef.bindings.length; i++) {\n const /** @type {?} */ binding = nodeDef.bindings[i];\n const /** @type {?} */ value = values[i];\n if (binding.flags & BindingFlags.TypeProperty) {\n bindingValues[normalizeDebugBindingName( /** @type {?} */((binding.nonMinifiedName)))] =\n normalizeDebugBindingValue(value);\n }\n }\n const /** @type {?} */ elDef = /** @type {?} */(( nodeDef.parent));\n const /** @type {?} */ el = asElementData(view, elDef.index).renderElement;\n if (! /** @type {?} */((elDef.element)).name) {\n // a comment.\n view.renderer.setValue(el, `bindings=${JSON.stringify(bindingValues, null, 2)}`);\n } else {\n // a regular element.\n for (let /** @type {?} */ attr in bindingValues) {\n const /** @type {?} */ value = bindingValues[attr];\n if (value != null) {\n view.renderer.setAttribute(el, attr, value);\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(\n view: ViewData, nodeDef: NodeDef, argStyle: ArgumentType, values: any[]): void {\n ( /** @type {?} */((<any>checkNoChangesNode)))(view, nodeDef, argStyle, ...values);\n}\n/**\n * @param {?} name\n * @return {?}\n */\nfunction normalizeDebugBindingName(name: string) {\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}\n\nconst /** @type {?} */ CAMEL_CASE_REGEXP = /([A-Z])/g;\n/**\n * @param {?} input\n * @return {?}\n */\nfunction camelCaseToDashCase(input: string): string {\n return input.replace(CAMEL_CASE_REGEXP, (...m: any[]) => '-' + m[1].toLowerCase());\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction normalizeDebugBindingValue(value: any): string {\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 } 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: ViewData, nodeIndex: number): number|null {\n for (let /** @type {?} */ i = nodeIndex; i < view.def.nodes.length; i++) {\n const /** @type {?} */ nodeDef = view.def.nodes[i];\n if (nodeDef.flags & NodeFlags.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: ViewData, nodeIndex: number): number|null {\n for (let /** @type {?} */ i = nodeIndex; i < view.def.nodes.length; i++) {\n const /** @type {?} */ nodeDef = view.def.nodes[i];\n if ((nodeDef.flags & NodeFlags.CatRenderNode) && nodeDef.bindings && nodeDef.bindings.length) {\n return i;\n }\n }\n return null;\n}\nclass DebugContext_ implements DebugContext {\nprivate nodeDef: NodeDef;\nprivate elView: ViewData;\nprivate elDef: NodeDef;\n/**\n * @param {?} view\n * @param {?} nodeIndex\n */\nconstructor(public view: ViewData,\npublic nodeIndex: number|null) {\n if (nodeIndex == null) {\n this.nodeIndex = nodeIndex = 0;\n }\n this.nodeDef = view.def.nodes[nodeIndex];\n let elDef = this.nodeDef;\n let elView = view;\n while (elDef && (elDef.flags & NodeFlags.TypeElement) === 0) {\n elDef = elDef.parent !;\n }\n if (!elDef) {\n while (!elDef && elView) {\n elDef = viewParentEl(elView) !;\n elView = elView.parent !;\n }\n }\n this.elDef = elDef;\n this.elView = elView;\n }\n/**\n * @return {?}\n */\nprivate get elOrCompView() {\n // Has to be done lazily as we use the DebugContext also during creation of elements...\n return asElementData(this.elView, this.elDef.index).componentView || this.view;\n }\n/**\n * @return {?}\n */\nget injector(): Injector { return createInjector(this.elView, this.elDef); }\n/**\n * @return {?}\n */\nget component(): any { return this.elOrCompView.component; }\n/**\n * @return {?}\n */\nget context(): any { return this.elOrCompView.context; }\n/**\n * @return {?}\n */\nget providerTokens(): any[] {\n const /** @type {?} */ tokens: any[] = [];\n if (this.elDef) {\n for (let /** @type {?} */ i = this.elDef.index + 1; i <= this.elDef.index + this.elDef.childCount; i++) {\n const /** @type {?} */ childDef = this.elView.def.nodes[i];\n if (childDef.flags & NodeFlags.CatProvider) {\n tokens.push( /** @type {?} */((childDef.provider)).token);\n }\n i += childDef.childCount;\n }\n }\n return tokens;\n }\n/**\n * @return {?}\n */\nget references(): {[key: string]: any} {\n const /** @type {?} */ references: {[key: string]: any} = {};\n if (this.elDef) {\n collectReferences(this.elView, this.elDef, references);\n\n for (let /** @type {?} */ i = this.elDef.index + 1; i <= this.elDef.index + this.elDef.childCount; i++) {\n const /** @type {?} */ childDef = this.elView.def.nodes[i];\n if (childDef.flags & NodeFlags.CatProvider) {\n collectReferences(this.elView, childDef, references);\n }\n i += childDef.childCount;\n }\n }\n return references;\n }\n/**\n * @return {?}\n */\nget componentRenderElement() {\n const /** @type {?} */ elData = findHostElement(this.elOrCompView);\n return elData ? elData.renderElement : undefined;\n }\n/**\n * @return {?}\n */\nget renderNode(): any {\n return this.nodeDef.flags & NodeFlags.TypeText ? renderNode(this.view, this.nodeDef) :\n renderNode(this.elView, this.elDef);\n }\n/**\n * @param {?} console\n * @param {...?} values\n * @return {?}\n */\nlogError(console: Console, ...values: any[]) {\n let /** @type {?} */ logViewDef: ViewDefinition;\n let /** @type {?} */ logNodeIndex: number;\n if (this.nodeDef.flags & NodeFlags.TypeText) {\n logViewDef = this.view.def;\n logNodeIndex = this.nodeDef.index;\n } else {\n logViewDef = this.elView.def;\n logNodeIndex = this.elDef.index;\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 const /** @type {?} */ renderNodeIndex = getRenderNodeIndex(logViewDef, logNodeIndex);\n let /** @type {?} */ currRenderNodeIndex = -1;\n let /** @type {?} */ nodeLogger: NodeLogger = () => {\n currRenderNodeIndex++;\n if (currRenderNodeIndex === renderNodeIndex) {\n return console.error.bind(console, ...values);\n } else {\n return NOOP;\n }\n }; /** @type {?} */((\n logViewDef.factory))(nodeLogger);\n if (currRenderNodeIndex < renderNodeIndex) {\n console.error('Illegal state: the ViewDefinitionFactory did not call the logger!');\n ( /** @type {?} */((<any>console.error)))(...values);\n }\n }\n}\n\nfunction DebugContext__tsickle_Closure_declarations() {\n/** @type {?} */\nDebugContext_.prototype.nodeDef;\n/** @type {?} */\nDebugContext_.prototype.elView;\n/** @type {?} */\nDebugContext_.prototype.elDef;\n/** @type {?} */\nDebugContext_.prototype.view;\n/** @type {?} */\nDebugContext_.prototype.nodeIndex;\n}\n\n/**\n * @param {?} viewDef\n * @param {?} nodeIndex\n * @return {?}\n */\nfunction getRenderNodeIndex(viewDef: ViewDefinition, nodeIndex: number): number {\n let /** @type {?} */ renderNodeIndex = -1;\n for (let /** @type {?} */ i = 0; i <= nodeIndex; i++) {\n const /** @type {?} */ nodeDef = viewDef.nodes[i];\n if (nodeDef.flags & NodeFlags.CatRenderNode) {\n renderNodeIndex++;\n }\n }\n return renderNodeIndex;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction findHostElement(view: ViewData): ElementData|null {\n while (view && !isComponentView(view)) {\n view = /** @type {?} */(( view.parent));\n }\n if (view.parent) {\n return asElementData(view.parent, /** @type {?} */(( viewParentEl(view))).index);\n }\n return null;\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} references\n * @return {?}\n */\nfunction collectReferences(view: ViewData, nodeDef: NodeDef, references: {[key: string]: any}) {\n for (let /** @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: DebugAction, fn: any, self: any, args: any[]) {\n const /** @type {?} */ oldAction = _currentAction;\n const /** @type {?} */ oldView = _currentView;\n const /** @type {?} */ oldNodeIndex = _currentNodeIndex;\n try {\n _currentAction = action;\n const /** @type {?} */ result = fn.apply(self, args);\n _currentView = oldView;\n _currentNodeIndex = oldNodeIndex;\n _currentAction = oldAction;\n return result;\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 */\nexport function getCurrentDebugContext(): DebugContext|null {\n return _currentView ? new DebugContext_(_currentView, _currentNodeIndex) : null;\n}\nclass DebugRendererFactory2 implements RendererFactory2 {\n/**\n * @param {?} delegate\n */\nconstructor(private delegate: RendererFactory2) {}\n/**\n * @param {?} element\n * @param {?} renderData\n * @return {?}\n */\ncreateRenderer(element: any, renderData: RendererType2|null): Renderer2 {\n return new DebugRenderer2(this.delegate.createRenderer(element, renderData));\n }\n}\n\nfunction DebugRendererFactory2_tsickle_Closure_declarations() {\n/** @type {?} */\nDebugRendererFactory2.prototype.delegate;\n}\n\nclass DebugRenderer2 implements Renderer2 {\n/**\n * @param {?} delegate\n */\nconstructor(private delegate: Renderer2) {}\n/**\n * @return {?}\n */\nget data() { return this.delegate.data; }\n/**\n * @param {?} node\n * @return {?}\n */\ndestroyNode(node: any) {\n removeDebugNodeFromIndex( /** @type {?} */((getDebugNode(node))));\n if (this.delegate.destroyNode) {\n this.delegate.destroyNode(node);\n }\n }\n/**\n * @return {?}\n */\ndestroy() { this.delegate.destroy(); }\n/**\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\ncreateElement(name: string, namespace?: string): any {\n const /** @type {?} */ el = this.delegate.createElement(name, namespace);\n const /** @type {?} */ debugCtx = getCurrentDebugContext();\n if (debugCtx) {\n const /** @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 */\ncreateComment(value: string): any {\n const /** @type {?} */ comment = this.delegate.createComment(value);\n const /** @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 */\ncreateText(value: string): any {\n const /** @type {?} */ text = this.delegate.createText(value);\n const /** @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 */\nappendChild(parent: any, newChild: any): void {\n const /** @type {?} */ debugEl = getDebugNode(parent);\n const /** @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 */\ninsertBefore(parent: any, newChild: any, refChild: any): void {\n const /** @type {?} */ debugEl = getDebugNode(parent);\n const /** @type {?} */ debugChildEl = getDebugNode(newChild);\n const /** @type {?} */ debugRefEl = /** @type {?} */(( getDebugNode(refChild)));\n if (debugEl && debugChildEl && debugEl instanceof DebugElement) {\n debugEl.insertBefore(debugRefEl, debugChildEl);\n }\n\n this.delegate.insertBefore(parent, newChild, refChild);\n }\n/**\n * @param {?} parent\n * @param {?} oldChild\n * @return {?}\n */\nremoveChild(parent: any, oldChild: any): void {\n const /** @type {?} */ debugEl = getDebugNode(parent);\n const /** @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 */\nselectRootElement(selectorOrNode: string|any): any {\n const /** @type {?} */ el = this.delegate.selectRootElement(selectorOrNode);\n const /** @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 */\nsetAttribute(el: any, name: string, value: string, namespace?: string): void {\n const /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n const /** @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 */\nremoveAttribute(el: any, name: string, namespace?: string): void {\n const /** @type {?} */ debugEl = getDebugNode(el);\n if (debugEl && debugEl instanceof DebugElement) {\n const /** @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 */\naddClass(el: any, name: string): void {\n const /** @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 */\nremoveClass(el: any, name: string): void {\n const /** @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 */\nsetStyle(el: any, style: string, value: any, flags: RendererStyleFlags2): void {\n const /** @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 */\nremoveStyle(el: any, style: string, flags: RendererStyleFlags2): void {\n const /** @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 */\nsetProperty(el: any, name: string, value: any): void {\n const /** @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 */\nlisten(\n target: 'document'|'windows'|'body'|any, eventName: string,\n callback: (event: any) => boolean): () => void {\n if (typeof target !== 'string') {\n const /** @type {?} */ debugEl = getDebugNode(target);\n if (debugEl) {\n debugEl.listeners.push(new EventListener(eventName, callback));\n }\n }\n\n return this.delegate.listen(target, eventName, callback);\n }\n/**\n * @param {?} node\n * @return {?}\n */\nparentNode(node: any): any { return this.delegate.parentNode(node); }\n/**\n * @param {?} node\n * @return {?}\n */\nnextSibling(node: any): any { return this.delegate.nextSibling(node); }\n/**\n * @param {?} node\n * @param {?} value\n * @return {?}\n */\nsetValue(node: any, value: string): void { return this.delegate.setValue(node, value); }\n}\n\nfunction DebugRenderer2_tsickle_Closure_declarations() {\n/** @type {?} */\nDebugRenderer2.prototype.delegate;\n}\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\nimport {Renderer2} from '../render/api';\n\nimport {checkAndUpdateElementDynamic, checkAndUpdateElementInline, createElement, listenToElementOutputs} from './element';\nimport {expressionChangedAfterItHasBeenCheckedError} from './errors';\nimport {appendNgContent} from './ng_content';\nimport {callLifecycleHooksChildrenFirst, checkAndUpdateDirectiveDynamic, checkAndUpdateDirectiveInline, createDirectiveInstance, createPipeInstance, createProviderInstance} from './provider';\nimport {checkAndUpdatePureExpressionDynamic, checkAndUpdatePureExpressionInline, createPureExpression} from './pure_expression';\nimport {checkAndUpdateQuery, createQuery} from './query';\nimport {createTemplateData, createViewContainerData} from './refs';\nimport {checkAndUpdateTextDynamic, checkAndUpdateTextInline, createText} from './text';\nimport {ArgumentType, CheckType, ElementData, NodeData, NodeDef, NodeFlags, ProviderData, RootData, Services, ViewData, ViewDefinition, ViewFlags, ViewHandleEventFn, ViewState, ViewUpdateFn, asElementData, asQueryList, asTextData} from './types';\nimport {NOOP, checkBindingNoChanges, isComponentView, resolveViewDefinition} from './util';\n/**\n * @param {?} flags\n * @param {?} nodes\n * @param {?=} updateDirectives\n * @param {?=} updateRenderer\n * @return {?}\n */\nexport function viewDef(\n flags: ViewFlags, nodes: NodeDef[], updateDirectives?: ViewUpdateFn,\n updateRenderer?: ViewUpdateFn): ViewDefinition {\n // clone nodes and set auto calculated values\n let /** @type {?} */ viewBindingCount = 0;\n let /** @type {?} */ viewDisposableCount = 0;\n let /** @type {?} */ viewNodeFlags = 0;\n let /** @type {?} */ viewRootNodeFlags = 0;\n let /** @type {?} */ viewMatchedQueries = 0;\n let /** @type {?} */ currentParent: NodeDef|null = null;\n let /** @type {?} */ currentElementHasPublicProviders = false;\n let /** @type {?} */ currentElementHasPrivateProviders = false;\n let /** @type {?} */ lastRenderRootNode: NodeDef|null = null;\n for (let /** @type {?} */ i = 0; i < nodes.length; i++) {\n while (currentParent && i > currentParent.index + currentParent.childCount) {\n const /** @type {?} */ newParent: NodeDef|null = currentParent.parent;\n if (newParent) {\n newParent.childFlags |= /** @type {?} */(( currentParent.childFlags));\n newParent.childMatchedQueries |= currentParent.childMatchedQueries;\n }\n currentParent = newParent;\n }\n const /** @type {?} */ node = nodes[i];\n node.index = i;\n node.parent = currentParent;\n node.bindingIndex = viewBindingCount;\n node.outputIndex = viewDisposableCount;\n\n // renderParent needs to account for ng-container!\n let /** @type {?} */ currentRenderParent: NodeDef|null;\n if (currentParent && currentParent.flags & NodeFlags.TypeElement &&\n ! /** @type {?} */((currentParent.element)).name) {\n currentRenderParent = currentParent.renderParent;\n } else {\n currentRenderParent = currentParent;\n }\n node.renderParent = currentRenderParent;\n\n if (node.element) {\n const /** @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 }\n validateNode(currentParent, node, nodes.length);\n\n viewNodeFlags |= node.flags;\n viewMatchedQueries |= node.matchedQueryIds;\n if (node.element && node.element.template) {\n viewMatchedQueries |= node.element.template.nodeMatchedQueries;\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 } else {\n viewRootNodeFlags |= node.flags;\n }\n\n viewBindingCount += node.bindings.length;\n viewDisposableCount += node.outputs.length;\n\n if (!currentRenderParent && (node.flags & NodeFlags.CatRenderNode)) {\n lastRenderRootNode = node;\n }\n if (node.flags & NodeFlags.CatProvider) {\n if (!currentElementHasPublicProviders) {\n currentElementHasPublicProviders = true; /** @type {?} */(( /** @type {?} */((\n // Use prototypical inheritance to not get O(n^2) complexity...\n currentParent)).element)).publicProviders =\n Object.create( /** @type {?} */(( /** @type {?} */((currentParent)).element)).publicProviders); /** @type {?} */(( /** @type {?} */((\n currentParent)).element)).allProviders = /** @type {?} */(( /** @type {?} */(( currentParent)).element)).publicProviders;\n }\n const /** @type {?} */ isPrivateService = (node.flags & NodeFlags.PrivateProvider) !== 0;\n const /** @type {?} */ isComponent = (node.flags & NodeFlags.Component) !== 0;\n if (!isPrivateService || isComponent) { /** @type {?} */(( /** @type {?} */(( /** @type {?} */((\n currentParent)).element)).publicProviders))[ /** @type {?} */((node.provider)).tokenKey] = node;\n } else {\n if (!currentElementHasPrivateProviders) {\n currentElementHasPrivateProviders = true; /** @type {?} */(( /** @type {?} */((\n // Use protoyypical inheritance to not get O(n^2) complexity...\n currentParent)).element)).allProviders =\n Object.create( /** @type {?} */(( /** @type {?} */((currentParent)).element)).publicProviders);\n } /** @type {?} */(( /** @type {?} */(( /** @type {?} */((\n currentParent)).element)).allProviders))[ /** @type {?} */((node.provider)).tokenKey] = node;\n }\n if (isComponent) { /** @type {?} */(( /** @type {?} */((\n currentParent)).element)).componentProvider = node;\n }\n }\n if (node.childCount) {\n currentParent = node;\n }\n }\n while (currentParent) {\n const /** @type {?} */ newParent = currentParent.parent;\n if (newParent) {\n newParent.childFlags |= currentParent.childFlags;\n newParent.childMatchedQueries |= currentParent.childMatchedQueries;\n }\n currentParent = newParent;\n }\n const /** @type {?} */ handleEvent: ViewHandleEventFn = (view, nodeIndex, eventName, event) => /** @type {?} */(( /** @type {?} */((\n 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,\n nodes: nodes,\n updateDirectives: updateDirectives || NOOP,\n updateRenderer: updateRenderer || NOOP,\n handleEvent: handleEvent || NOOP,\n bindingCount: viewBindingCount,\n outputCount: viewDisposableCount, lastRenderRootNode\n };\n}\n/**\n * @param {?} parent\n * @param {?} node\n * @param {?} nodeCount\n * @return {?}\n */\nfunction validateNode(parent: NodeDef | null, node: NodeDef, nodeCount: number) {\n const /** @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 & NodeFlags.EmbeddedViews) {\n throw new Error(\n `Illegal State: Last root node of a template can't have embedded views, at index ${node.index}!`);\n }\n }\n if (node.flags & NodeFlags.CatProvider) {\n const /** @type {?} */ parentFlags = parent ? parent.flags : 0;\n if ((parentFlags & NodeFlags.TypeElement) === 0) {\n throw new Error(\n `Illegal State: Provider/Directive nodes need to be children of elements or anchors, at index ${node.index}!`);\n }\n }\n if (node.query) {\n if (node.flags & NodeFlags.TypeContentQuery &&\n (!parent || (parent.flags & NodeFlags.TypeDirective) === 0)) {\n throw new Error(\n `Illegal State: Content Query nodes need to be children of directives, at index ${node.index}!`);\n }\n if (node.flags & NodeFlags.TypeViewQuery && parent) {\n throw new Error(\n `Illegal State: View Query nodes have to be top level nodes, at index ${node.index}!`);\n }\n }\n if (node.childCount) {\n const /** @type {?} */ parentEnd = parent ? parent.index + parent.childCount : nodeCount - 1;\n if (node.index <= parentEnd && node.index + node.childCount > parentEnd) {\n throw new Error(\n `Illegal State: childCount of node leads outside of parent, at index ${node.index}!`);\n }\n }\n}\n/**\n * @param {?} parent\n * @param {?} anchorDef\n * @param {?=} context\n * @return {?}\n */\nexport function createEmbeddedView(parent: ViewData, anchorDef: NodeDef, context?: any): ViewData {\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 const /** @type {?} */ view =\n createView(parent.root, parent.renderer, parent, anchorDef, /** @type {?} */(( /** @type {?} */(( anchorDef.element)).template)));\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 */\nexport function createRootView(root: RootData, def: ViewDefinition, context?: any): ViewData {\n const /** @type {?} */ view = createView(root, root.renderer, null, null, def);\n initView(view, context, context);\n createViewNodes(view);\n return view;\n}\n/**\n * @param {?} root\n * @param {?} renderer\n * @param {?} parent\n * @param {?} parentNodeDef\n * @param {?} def\n * @return {?}\n */\nfunction createView(\n root: RootData, renderer: Renderer2, parent: ViewData | null, parentNodeDef: NodeDef | null,\n def: ViewDefinition): ViewData {\n const /** @type {?} */ nodes: NodeData[] = new Array(def.nodes.length);\n const /** @type {?} */ disposables = def.outputCount ? new Array(def.outputCount) : null;\n const /** @type {?} */ view: ViewData = {\n def,\n parent,\n viewContainerParent: null, parentNodeDef,\n context: null,\n component: null, nodes,\n state: ViewState.CatInit, root, renderer,\n oldValues: new Array(def.bindingCount), disposables\n };\n return view;\n}\n/**\n * @param {?} view\n * @param {?} component\n * @param {?} context\n * @return {?}\n */\nfunction initView(view: ViewData, component: any, context: any) {\n view.component = component;\n view.context = context;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction createViewNodes(view: ViewData) {\n let /** @type {?} */ renderHost: any;\n if (isComponentView(view)) {\n const /** @type {?} */ hostDef = view.parentNodeDef;\n renderHost = asElementData( /** @type {?} */((view.parent)), /** @type {?} */(( /** @type {?} */(( hostDef)).parent)).index).renderElement;\n }\n const /** @type {?} */ def = view.def;\n const /** @type {?} */ nodes = view.nodes;\n for (let /** @type {?} */ i = 0; i < def.nodes.length; i++) {\n const /** @type {?} */ nodeDef = def.nodes[i];\n Services.setCurrentNode(view, i);\n let /** @type {?} */ nodeData: any;\n switch (nodeDef.flags & NodeFlags.Types) {\n case NodeFlags.TypeElement:\n const /** @type {?} */ el = /** @type {?} */(( createElement(view, renderHost, nodeDef) as any));\n let /** @type {?} */ componentView: ViewData = /** @type {?} */(( undefined));\n if (nodeDef.flags & NodeFlags.ComponentView) {\n const /** @type {?} */ compViewDef = resolveViewDefinition( /** @type {?} */(( /** @type {?} */((nodeDef.element)).componentView)));\n const /** @type {?} */ rendererType = /** @type {?} */(( nodeDef.element)).componentRendererType;\n let /** @type {?} */ compRenderer: Renderer2;\n if (!rendererType) {\n compRenderer = view.root.renderer;\n } else {\n compRenderer = view.root.rendererFactory.createRenderer(el, rendererType);\n }\n componentView = createView(\n view.root, compRenderer, view, /** @type {?} */(( nodeDef.element)).componentProvider, compViewDef);\n }\n listenToElementOutputs(view, componentView, nodeDef, el);\n nodeData = /** @type {?} */(( <ElementData>{\n renderElement: el,\n componentView,\n viewContainer: null,\n template: /** @type {?} */(( nodeDef.element)).template ? createTemplateData(view, nodeDef) : undefined\n }));\n if (nodeDef.flags & NodeFlags.EmbeddedViews) {\n nodeData.viewContainer = createViewContainerData(view, nodeDef, nodeData);\n }\n break;\n case NodeFlags.TypeText:\n nodeData = /** @type {?} */(( createText(view, renderHost, nodeDef) as any));\n break;\n case NodeFlags.TypeClassProvider:\n case NodeFlags.TypeFactoryProvider:\n case NodeFlags.TypeUseExistingProvider:\n case NodeFlags.TypeValueProvider: {\n const /** @type {?} */ instance = createProviderInstance(view, nodeDef);\n nodeData = /** @type {?} */(( <ProviderData>{instance}));\n break;\n }\n case NodeFlags.TypePipe: {\n const /** @type {?} */ instance = createPipeInstance(view, nodeDef);\n nodeData = /** @type {?} */(( <ProviderData>{instance}));\n break;\n }\n case NodeFlags.TypeDirective: {\n const /** @type {?} */ instance = createDirectiveInstance(view, nodeDef);\n nodeData = /** @type {?} */(( <ProviderData>{instance}));\n if (nodeDef.flags & NodeFlags.Component) {\n const /** @type {?} */ compView = asElementData(view, /** @type {?} */(( nodeDef.parent)).index).componentView;\n initView(compView, instance, instance);\n }\n break;\n }\n case NodeFlags.TypePureArray:\n case NodeFlags.TypePureObject:\n case NodeFlags.TypePurePipe:\n nodeData = /** @type {?} */(( createPureExpression(view, nodeDef) as any));\n break;\n case NodeFlags.TypeContentQuery:\n case NodeFlags.TypeViewQuery:\n nodeData = /** @type {?} */(( createQuery() as any));\n break;\n case NodeFlags.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\n // fill static content and view queries\n execQueriesAction(\n view, NodeFlags.TypeContentQuery | NodeFlags.TypeViewQuery, NodeFlags.StaticQuery,\n CheckType.CheckAndUpdate);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function checkNoChangesView(view: ViewData) {\n Services.updateDirectives(view, CheckType.CheckNoChanges);\n execEmbeddedViewsAction(view, ViewAction.CheckNoChanges);\n Services.updateRenderer(view, CheckType.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}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function checkAndUpdateView(view: ViewData) {\n if (view.state & ViewState.BeforeFirstCheck) {\n view.state &= ~ViewState.BeforeFirstCheck;\n view.state |= ViewState.FirstCheck;\n } else {\n view.state &= ~ViewState.FirstCheck;\n }\n Services.updateDirectives(view, CheckType.CheckAndUpdate);\n execEmbeddedViewsAction(view, ViewAction.CheckAndUpdate);\n execQueriesAction(\n view, NodeFlags.TypeContentQuery, NodeFlags.DynamicQuery, CheckType.CheckAndUpdate);\n\n callLifecycleHooksChildrenFirst(\n view, NodeFlags.AfterContentChecked |\n (view.state & ViewState.FirstCheck ? NodeFlags.AfterContentInit : 0));\n\n Services.updateRenderer(view, CheckType.CheckAndUpdate);\n\n execComponentViewsAction(view, ViewAction.CheckAndUpdate);\n execQueriesAction(\n view, NodeFlags.TypeViewQuery, NodeFlags.DynamicQuery, CheckType.CheckAndUpdate);\n\n callLifecycleHooksChildrenFirst(\n view, NodeFlags.AfterViewChecked |\n (view.state & ViewState.FirstCheck ? NodeFlags.AfterViewInit : 0));\n\n if (view.def.flags & ViewFlags.OnPush) {\n view.state &= ~ViewState.ChecksEnabled;\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 */\nexport function checkAndUpdateNode(\n view: ViewData, nodeDef: NodeDef, argStyle: ArgumentType, v0?: any, v1?: any, v2?: any,\n v3?: any, v4?: any, v5?: any, v6?: any, v7?: any, v8?: any, v9?: any): boolean {\n if (argStyle === ArgumentType.Inline) {\n return checkAndUpdateNodeInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n } else {\n return checkAndUpdateNodeDynamic(view, nodeDef, v0);\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(\n view: ViewData, nodeDef: NodeDef, v0?: any, v1?: any, v2?: any, v3?: any, v4?: any, v5?: any,\n v6?: any, v7?: any, v8?: any, v9?: any): boolean {\n let /** @type {?} */ changed = false;\n switch (nodeDef.flags & NodeFlags.Types) {\n case NodeFlags.TypeElement:\n changed = checkAndUpdateElementInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n break;\n case NodeFlags.TypeText:\n changed = checkAndUpdateTextInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n break;\n case NodeFlags.TypeDirective:\n changed =\n checkAndUpdateDirectiveInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n break;\n case NodeFlags.TypePureArray:\n case NodeFlags.TypePureObject:\n case NodeFlags.TypePurePipe:\n changed =\n checkAndUpdatePureExpressionInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\n break;\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} values\n * @return {?}\n */\nfunction checkAndUpdateNodeDynamic(view: ViewData, nodeDef: NodeDef, values: any[]): boolean {\n let /** @type {?} */ changed = false;\n switch (nodeDef.flags & NodeFlags.Types) {\n case NodeFlags.TypeElement:\n changed = checkAndUpdateElementDynamic(view, nodeDef, values);\n break;\n case NodeFlags.TypeText:\n changed = checkAndUpdateTextDynamic(view, nodeDef, values);\n break;\n case NodeFlags.TypeDirective:\n changed = checkAndUpdateDirectiveDynamic(view, nodeDef, values);\n break;\n case NodeFlags.TypePureArray:\n case NodeFlags.TypePureObject:\n case NodeFlags.TypePurePipe:\n changed = checkAndUpdatePureExpressionDynamic(view, nodeDef, values);\n break;\n }\n if (changed) {\n // Update oldValues after all bindings have been updated,\n // as a setter for a property might update other properties.\n const /** @type {?} */ bindLen = nodeDef.bindings.length;\n const /** @type {?} */ bindingStart = nodeDef.bindingIndex;\n const /** @type {?} */ oldValues = view.oldValues;\n for (let /** @type {?} */ i = 0; i < bindLen; i++) {\n oldValues[bindingStart + i] = values[i];\n }\n }\n return changed;\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 */\nexport function checkNoChangesNode(\n view: ViewData, nodeDef: NodeDef, argStyle: ArgumentType, v0?: any, v1?: any, v2?: any,\n v3?: any, v4?: any, v5?: any, v6?: any, v7?: any, v8?: any, v9?: any): any {\n if (argStyle === ArgumentType.Inline) {\n checkNoChangesNodeInline(view, nodeDef, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9);\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(\n view: ViewData, nodeDef: NodeDef, v0: any, v1: any, v2: any, v3: any, v4: any, v5: any, v6: any,\n v7: any, v8: any, v9: any): void {\n const /** @type {?} */ bindLen = nodeDef.bindings.length;\n if (bindLen > 0) checkBindingNoChanges(view, nodeDef, 0, v0);\n if (bindLen > 1) checkBindingNoChanges(view, nodeDef, 1, v1);\n if (bindLen > 2) checkBindingNoChanges(view, nodeDef, 2, v2);\n if (bindLen > 3) checkBindingNoChanges(view, nodeDef, 3, v3);\n if (bindLen > 4) checkBindingNoChanges(view, nodeDef, 4, v4);\n if (bindLen > 5) checkBindingNoChanges(view, nodeDef, 5, v5);\n if (bindLen > 6) checkBindingNoChanges(view, nodeDef, 6, v6);\n if (bindLen > 7) checkBindingNoChanges(view, nodeDef, 7, v7);\n if (bindLen > 8) checkBindingNoChanges(view, nodeDef, 8, v8);\n if (bindLen > 9) checkBindingNoChanges(view, nodeDef, 9, v9);\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @param {?} values\n * @return {?}\n */\nfunction checkNoChangesNodeDynamic(view: ViewData, nodeDef: NodeDef, values: any[]): void {\n for (let /** @type {?} */ i = 0; i < values.length; i++) {\n checkBindingNoChanges(view, nodeDef, i, values[i]);\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeDef\n * @return {?}\n */\nfunction checkNoChangesQuery(view: ViewData, nodeDef: NodeDef) {\n const /** @type {?} */ queryList = asQueryList(view, nodeDef.index);\n if (queryList.dirty) {\n throw expressionChangedAfterItHasBeenCheckedError(\n Services.createDebugContext(view, nodeDef.index), `Query ${ /** @type {?} */((nodeDef.query)).id} not dirty`,\n `Query ${ /** @type {?} */((nodeDef.query)).id} dirty`, (view.state & ViewState.BeforeFirstCheck) !== 0);\n }\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function destroyView(view: ViewData) {\n if (view.state & ViewState.Destroyed) {\n return;\n }\n execEmbeddedViewsAction(view, ViewAction.Destroy);\n execComponentViewsAction(view, ViewAction.Destroy);\n callLifecycleHooksChildrenFirst(view, NodeFlags.OnDestroy);\n if (view.disposables) {\n for (let /** @type {?} */ i = 0; i < view.disposables.length; i++) {\n view.disposables[i]();\n }\n }\n if (view.renderer.destroyNode) {\n destroyViewNodes(view);\n }\n if (isComponentView(view)) {\n view.renderer.destroy();\n }\n view.state |= ViewState.Destroyed;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nfunction destroyViewNodes(view: ViewData) {\n const /** @type {?} */ len = view.def.nodes.length;\n for (let /** @type {?} */ i = 0; i < len; i++) {\n const /** @type {?} */ def = view.def.nodes[i];\n if (def.flags & NodeFlags.TypeElement) { /** @type {?} */((\n view.renderer.destroyNode))(asElementData(view, i).renderElement);\n } else if (def.flags & NodeFlags.TypeText) { /** @type {?} */((\n view.renderer.destroyNode))(asTextData(view, i).renderText);\n }\n }\n}\ntype ViewAction = number;\nlet ViewAction: any = {};\nViewAction.CreateViewNodes = 0;\nViewAction.CheckNoChanges = 1;\nViewAction.CheckAndUpdate = 2;\nViewAction.Destroy = 3;\nViewAction[ViewAction.CreateViewNodes] = \"CreateViewNodes\";\nViewAction[ViewAction.CheckNoChanges] = \"CheckNoChanges\";\nViewAction[ViewAction.CheckAndUpdate] = \"CheckAndUpdate\";\nViewAction[ViewAction.Destroy] = \"Destroy\";\n\n/**\n * @param {?} view\n * @param {?} action\n * @return {?}\n */\nfunction execComponentViewsAction(view: ViewData, action: ViewAction) {\n const /** @type {?} */ def = view.def;\n if (!(def.nodeFlags & NodeFlags.ComponentView)) {\n return;\n }\n for (let /** @type {?} */ i = 0; i < def.nodes.length; i++) {\n const /** @type {?} */ nodeDef = def.nodes[i];\n if (nodeDef.flags & NodeFlags.ComponentView) {\n // a leaf\n callViewAction(asElementData(view, i).componentView, action);\n } else if ((nodeDef.childFlags & NodeFlags.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: ViewData, action: ViewAction) {\n const /** @type {?} */ def = view.def;\n if (!(def.nodeFlags & NodeFlags.EmbeddedViews)) {\n return;\n }\n for (let /** @type {?} */ i = 0; i < def.nodes.length; i++) {\n const /** @type {?} */ nodeDef = def.nodes[i];\n if (nodeDef.flags & NodeFlags.EmbeddedViews) {\n // a leaf\n const /** @type {?} */ embeddedViews = /** @type {?} */(( asElementData(view, i).viewContainer))._embeddedViews;\n for (let /** @type {?} */ k = 0; k < embeddedViews.length; k++) {\n callViewAction(embeddedViews[k], action);\n }\n } else if ((nodeDef.childFlags & NodeFlags.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: ViewData, action: ViewAction) {\n const /** @type {?} */ viewState = view.state;\n switch (action) {\n case ViewAction.CheckNoChanges:\n if ((viewState & ViewState.CatDetectChanges) === ViewState.CatDetectChanges &&\n (viewState & ViewState.Destroyed) === 0) {\n checkNoChangesView(view);\n }\n break;\n case ViewAction.CheckAndUpdate:\n if ((viewState & ViewState.CatDetectChanges) === ViewState.CatDetectChanges &&\n (viewState & ViewState.Destroyed) === 0) {\n checkAndUpdateView(view);\n }\n break;\n case ViewAction.Destroy:\n destroyView(view);\n break;\n case ViewAction.CreateViewNodes:\n createViewNodes(view);\n break;\n }\n}\n/**\n * @param {?} view\n * @param {?} queryFlags\n * @param {?} staticDynamicQueryFlag\n * @param {?} checkType\n * @return {?}\n */\nfunction execQueriesAction(\n view: ViewData, queryFlags: NodeFlags, staticDynamicQueryFlag: NodeFlags,\n checkType: CheckType) {\n if (!(view.def.nodeFlags & queryFlags) || !(view.def.nodeFlags & staticDynamicQueryFlag)) {\n return;\n }\n const /** @type {?} */ nodeCount = view.def.nodes.length;\n for (let /** @type {?} */ i = 0; i < nodeCount; i++) {\n const /** @type {?} */ nodeDef = view.def.nodes[i];\n if ((nodeDef.flags & queryFlags) && (nodeDef.flags & staticDynamicQueryFlag)) {\n Services.setCurrentNode(view, nodeDef.index);\n switch (checkType) {\n case CheckType.CheckAndUpdate:\n checkAndUpdateQuery(view, nodeDef);\n break;\n case CheckType.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 * @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\nimport {BindingDef, BindingFlags, NodeDef, NodeFlags, TextData, ViewData, asTextData} from './types';\nimport {calcBindingFlags, checkAndUpdateBinding, getParentRenderElement} from './util';\n/**\n * @param {?} ngContentIndex\n * @param {?} constants\n * @return {?}\n */\nexport function textDef(ngContentIndex: number, constants: string[]): NodeDef {\n const /** @type {?} */ bindings: BindingDef[] = new Array(constants.length - 1);\n for (let /** @type {?} */ i = 1; i < constants.length; i++) {\n bindings[i - 1] = {\n flags: BindingFlags.TypeProperty,\n name: null,\n ns: null,\n nonMinifiedName: null,\n securityContext: null,\n suffix: constants[i]\n };\n }\n const /** @type {?} */ flags = NodeFlags.TypeText;\n return {\n // will bet set by the view definition\n index: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n flags,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0,\n matchedQueries: {},\n matchedQueryIds: 0,\n references: {}, ngContentIndex,\n childCount: 0, bindings,\n bindingFlags: calcBindingFlags(bindings),\n outputs: [],\n element: null,\n provider: null,\n text: {prefix: constants[0]},\n query: null,\n ngContent: null\n };\n}\n/**\n * @param {?} view\n * @param {?} renderHost\n * @param {?} def\n * @return {?}\n */\nexport function createText(view: ViewData, renderHost: any, def: NodeDef): TextData {\n let /** @type {?} */ renderNode: any;\n const /** @type {?} */ renderer = view.renderer;\n renderNode = renderer.createText( /** @type {?} */((def.text)).prefix);\n const /** @type {?} */ parentEl = getParentRenderElement(view, renderHost, def);\n if (parentEl) {\n renderer.appendChild(parentEl, renderNode);\n }\n return {renderText: renderNode};\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 */\nexport function checkAndUpdateTextInline(\n view: ViewData, def: NodeDef, v0: any, v1: any, v2: any, v3: any, v4: any, v5: any, v6: any,\n v7: any, v8: any, v9: any): boolean {\n let /** @type {?} */ changed = false;\n const /** @type {?} */ bindings = def.bindings;\n const /** @type {?} */ bindLen = bindings.length;\n if (bindLen > 0 && checkAndUpdateBinding(view, def, 0, v0)) changed = true;\n if (bindLen > 1 && checkAndUpdateBinding(view, def, 1, v1)) changed = true;\n if (bindLen > 2 && checkAndUpdateBinding(view, def, 2, v2)) changed = true;\n if (bindLen > 3 && checkAndUpdateBinding(view, def, 3, v3)) changed = true;\n if (bindLen > 4 && checkAndUpdateBinding(view, def, 4, v4)) changed = true;\n if (bindLen > 5 && checkAndUpdateBinding(view, def, 5, v5)) changed = true;\n if (bindLen > 6 && checkAndUpdateBinding(view, def, 6, v6)) changed = true;\n if (bindLen > 7 && checkAndUpdateBinding(view, def, 7, v7)) changed = true;\n if (bindLen > 8 && checkAndUpdateBinding(view, def, 8, v8)) changed = true;\n if (bindLen > 9 && checkAndUpdateBinding(view, def, 9, v9)) changed = true;\n\n if (changed) {\n let /** @type {?} */ value = /** @type {?} */(( def.text)).prefix;\n if (bindLen > 0) value += _addInterpolationPart(v0, bindings[0]);\n if (bindLen > 1) value += _addInterpolationPart(v1, bindings[1]);\n if (bindLen > 2) value += _addInterpolationPart(v2, bindings[2]);\n if (bindLen > 3) value += _addInterpolationPart(v3, bindings[3]);\n if (bindLen > 4) value += _addInterpolationPart(v4, bindings[4]);\n if (bindLen > 5) value += _addInterpolationPart(v5, bindings[5]);\n if (bindLen > 6) value += _addInterpolationPart(v6, bindings[6]);\n if (bindLen > 7) value += _addInterpolationPart(v7, bindings[7]);\n if (bindLen > 8) value += _addInterpolationPart(v8, bindings[8]);\n if (bindLen > 9) value += _addInterpolationPart(v9, bindings[9]);\n const /** @type {?} */ renderNode = asTextData(view, def.index).renderText;\n view.renderer.setValue(renderNode, value);\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} values\n * @return {?}\n */\nexport function checkAndUpdateTextDynamic(view: ViewData, def: NodeDef, values: any[]): boolean {\n const /** @type {?} */ bindings = def.bindings;\n let /** @type {?} */ changed = false;\n for (let /** @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 let /** @type {?} */ value = '';\n for (let /** @type {?} */ i = 0; i < values.length; i++) {\n value = value + _addInterpolationPart(values[i], bindings[i]);\n }\n value = /** @type {?} */(( def.text)).prefix + value;\n const /** @type {?} */ renderNode = asTextData(view, def.index).renderText;\n view.renderer.setValue(renderNode, value);\n }\n return changed;\n}\n/**\n * @param {?} value\n * @param {?} binding\n * @return {?}\n */\nfunction _addInterpolationPart(value: any, binding: BindingDef): string {\n const /** @type {?} */ valueStr = value != null ? value.toString() : '';\n return valueStr + binding.suffix;\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\nimport {ElementRef} from '../linker/element_ref';\nimport {QueryList} from '../linker/query_list';\n\nimport {NodeDef, NodeFlags, QueryBindingDef, QueryBindingType, QueryDef, QueryValueType, ViewData, asElementData, asProviderData, asQueryList} from './types';\nimport {declaredViewContainer, filterQueryId, isEmbeddedView} from './util';\n/**\n * @param {?} flags\n * @param {?} id\n * @param {?} bindings\n * @return {?}\n */\nexport function queryDef(\n flags: NodeFlags, id: number, bindings: {[propName: string]: QueryBindingType}): NodeDef {\n let /** @type {?} */ bindingDefs: QueryBindingDef[] = [];\n for (let /** @type {?} */ propName in bindings) {\n const /** @type {?} */ bindingType = bindings[propName];\n bindingDefs.push({propName, bindingType});\n }\n\n return {\n // will bet set by the view definition\n index: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n 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, filterId: filterQueryId(id), bindings: bindingDefs},\n ngContent: null\n };\n}\n/**\n * @return {?}\n */\nexport function createQuery(): QueryList<any> {\n return new QueryList();\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function dirtyParentQueries(view: ViewData) {\n const /** @type {?} */ queryIds = view.def.nodeMatchedQueries;\n while (view.parent && isEmbeddedView(view)) {\n let /** @type {?} */ tplDef = /** @type {?} */(( view.parentNodeDef));\n view = view.parent;\n // content queries\n const /** @type {?} */ end = tplDef.index + tplDef.childCount;\n for (let /** @type {?} */ i = 0; i <= end; i++) {\n const /** @type {?} */ nodeDef = view.def.nodes[i];\n if ((nodeDef.flags & NodeFlags.TypeContentQuery) &&\n (nodeDef.flags & NodeFlags.DynamicQuery) &&\n ( /** @type {?} */((nodeDef.query)).filterId & queryIds) === /** @type {?} */(( nodeDef.query)).filterId) {\n asQueryList(view, i).setDirty();\n }\n if ((nodeDef.flags & NodeFlags.TypeElement && i + nodeDef.childCount < tplDef.index) ||\n !(nodeDef.childFlags & NodeFlags.TypeContentQuery) ||\n !(nodeDef.childFlags & NodeFlags.DynamicQuery)) {\n // skip elements that don't contain the template element or no query.\n i += nodeDef.childCount;\n }\n }\n }\n\n // view queries\n if (view.def.nodeFlags & NodeFlags.TypeViewQuery) {\n for (let /** @type {?} */ i = 0; i < view.def.nodes.length; i++) {\n const /** @type {?} */ nodeDef = view.def.nodes[i];\n if ((nodeDef.flags & NodeFlags.TypeViewQuery) && (nodeDef.flags & NodeFlags.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 */\nexport function checkAndUpdateQuery(view: ViewData, nodeDef: NodeDef) {\n const /** @type {?} */ queryList = asQueryList(view, nodeDef.index);\n if (!queryList.dirty) {\n return;\n }\n let /** @type {?} */ directiveInstance: any;\n let /** @type {?} */ newValues: any[] = /** @type {?} */(( undefined));\n if (nodeDef.flags & NodeFlags.TypeContentQuery) {\n const /** @type {?} */ elementDef = /** @type {?} */(( /** @type {?} */(( nodeDef.parent)).parent));\n newValues = calcQueryValues(\n view, elementDef.index, elementDef.index + elementDef.childCount, /** @type {?} */(( nodeDef.query)), []);\n directiveInstance = asProviderData(view, /** @type {?} */(( nodeDef.parent)).index).instance;\n } else if (nodeDef.flags & NodeFlags.TypeViewQuery) {\n newValues = calcQueryValues(view, 0, view.def.nodes.length - 1, /** @type {?} */(( nodeDef.query)), []);\n directiveInstance = view.component;\n }\n queryList.reset(newValues);\n const /** @type {?} */ bindings = /** @type {?} */(( nodeDef.query)).bindings;\n let /** @type {?} */ notify = false;\n for (let /** @type {?} */ i = 0; i < bindings.length; i++) {\n const /** @type {?} */ binding = bindings[i];\n let /** @type {?} */ boundValue: any;\n switch (binding.bindingType) {\n case QueryBindingType.First:\n boundValue = queryList.first;\n break;\n case QueryBindingType.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(\n view: ViewData, startIndex: number, endIndex: number, queryDef: QueryDef,\n values: any[]): any[] {\n for (let /** @type {?} */ i = startIndex; i <= endIndex; i++) {\n const /** @type {?} */ nodeDef = view.def.nodes[i];\n const /** @type {?} */ valueType = nodeDef.matchedQueries[queryDef.id];\n if (valueType != null) {\n values.push(getQueryValue(view, nodeDef, valueType));\n }\n if (nodeDef.flags & NodeFlags.TypeElement && /** @type {?} */(( nodeDef.element)).template &&\n ( /** @type {?} */(( /** @type {?} */((nodeDef.element)).template)).nodeMatchedQueries & queryDef.filterId) ===\n queryDef.filterId) {\n // check embedded views that were attached at the place of their template.\n const /** @type {?} */ elementData = asElementData(view, i);\n if (nodeDef.flags & NodeFlags.EmbeddedViews) {\n const /** @type {?} */ embeddedViews = /** @type {?} */(( elementData.viewContainer))._embeddedViews;\n for (let /** @type {?} */ k = 0; k < embeddedViews.length; k++) {\n const /** @type {?} */ embeddedView = embeddedViews[k];\n const /** @type {?} */ dvc = declaredViewContainer(embeddedView);\n if (dvc && dvc === elementData) {\n calcQueryValues(embeddedView, 0, embeddedView.def.nodes.length - 1, queryDef, values);\n }\n }\n }\n const /** @type {?} */ projectedViews = elementData.template._projectedViews;\n if (projectedViews) {\n for (let /** @type {?} */ k = 0; k < projectedViews.length; k++) {\n const /** @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 */\nexport function getQueryValue(\n view: ViewData, nodeDef: NodeDef, queryValueType: QueryValueType): any {\n if (queryValueType != null) {\n // a match\n let /** @type {?} */ value: any;\n switch (queryValueType) {\n case QueryValueType.RenderElement:\n value = asElementData(view, nodeDef.index).renderElement;\n break;\n case QueryValueType.ElementRef:\n value = new ElementRef(asElementData(view, nodeDef.index).renderElement);\n break;\n case QueryValueType.TemplateRef:\n value = asElementData(view, nodeDef.index).template;\n break;\n case QueryValueType.ViewContainerRef:\n value = asElementData(view, nodeDef.index).viewContainer;\n break;\n case QueryValueType.Provider:\n value = asProviderData(view, nodeDef.index).instance;\n break;\n }\n return value;\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\nimport {BindingDef, BindingFlags, NodeDef, NodeFlags, PureExpressionData, ViewData, asPureExpressionData} from './types';\nimport {calcBindingFlags, checkAndUpdateBinding} from './util';\n/**\n * @param {?} argCount\n * @return {?}\n */\nexport function purePipeDef(argCount: number): NodeDef {\n // argCount + 1 to include the pipe as first arg\n return _pureExpressionDef(NodeFlags.TypePurePipe, new Array(argCount + 1));\n}\n/**\n * @param {?} argCount\n * @return {?}\n */\nexport function pureArrayDef(argCount: number): NodeDef {\n return _pureExpressionDef(NodeFlags.TypePureArray, new Array(argCount));\n}\n/**\n * @param {?} propertyNames\n * @return {?}\n */\nexport function pureObjectDef(propertyNames: string[]): NodeDef {\n return _pureExpressionDef(NodeFlags.TypePureObject, propertyNames);\n}\n/**\n * @param {?} flags\n * @param {?} propertyNames\n * @return {?}\n */\nfunction _pureExpressionDef(flags: NodeFlags, propertyNames: string[]): NodeDef {\n const /** @type {?} */ bindings: BindingDef[] = new Array(propertyNames.length);\n for (let /** @type {?} */ i = 0; i < propertyNames.length; i++) {\n const /** @type {?} */ prop = propertyNames[i];\n bindings[i] = {\n flags: BindingFlags.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 index: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n flags,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0,\n matchedQueries: {},\n matchedQueryIds: 0,\n references: {},\n ngContentIndex: -1,\n childCount: 0, 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 */\nexport function createPureExpression(view: ViewData, def: NodeDef): PureExpressionData {\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 */\nexport function checkAndUpdatePureExpressionInline(\n view: ViewData, def: NodeDef, v0: any, v1: any, v2: any, v3: any, v4: any, v5: any, v6: any,\n v7: any, v8: any, v9: any): boolean {\n const /** @type {?} */ bindings = def.bindings;\n let /** @type {?} */ changed = false;\n const /** @type {?} */ bindLen = bindings.length;\n if (bindLen > 0 && checkAndUpdateBinding(view, def, 0, v0)) changed = true;\n if (bindLen > 1 && checkAndUpdateBinding(view, def, 1, v1)) changed = true;\n if (bindLen > 2 && checkAndUpdateBinding(view, def, 2, v2)) changed = true;\n if (bindLen > 3 && checkAndUpdateBinding(view, def, 3, v3)) changed = true;\n if (bindLen > 4 && checkAndUpdateBinding(view, def, 4, v4)) changed = true;\n if (bindLen > 5 && checkAndUpdateBinding(view, def, 5, v5)) changed = true;\n if (bindLen > 6 && checkAndUpdateBinding(view, def, 6, v6)) changed = true;\n if (bindLen > 7 && checkAndUpdateBinding(view, def, 7, v7)) changed = true;\n if (bindLen > 8 && checkAndUpdateBinding(view, def, 8, v8)) changed = true;\n if (bindLen > 9 && checkAndUpdateBinding(view, def, 9, v9)) changed = true;\n\n if (changed) {\n const /** @type {?} */ data = asPureExpressionData(view, def.index);\n let /** @type {?} */ value: any;\n switch (def.flags & NodeFlags.Types) {\n case NodeFlags.TypePureArray:\n value = new Array(bindings.length);\n if (bindLen > 0) value[0] = v0;\n if (bindLen > 1) value[1] = v1;\n if (bindLen > 2) value[2] = v2;\n if (bindLen > 3) value[3] = v3;\n if (bindLen > 4) value[4] = v4;\n if (bindLen > 5) value[5] = v5;\n if (bindLen > 6) value[6] = v6;\n if (bindLen > 7) value[7] = v7;\n if (bindLen > 8) value[8] = v8;\n if (bindLen > 9) value[9] = v9;\n break;\n case NodeFlags.TypePureObject:\n value = {};\n if (bindLen > 0) value[ /** @type {?} */((bindings[0].name))] = v0;\n if (bindLen > 1) value[ /** @type {?} */((bindings[1].name))] = v1;\n if (bindLen > 2) value[ /** @type {?} */((bindings[2].name))] = v2;\n if (bindLen > 3) value[ /** @type {?} */((bindings[3].name))] = v3;\n if (bindLen > 4) value[ /** @type {?} */((bindings[4].name))] = v4;\n if (bindLen > 5) value[ /** @type {?} */((bindings[5].name))] = v5;\n if (bindLen > 6) value[ /** @type {?} */((bindings[6].name))] = v6;\n if (bindLen > 7) value[ /** @type {?} */((bindings[7].name))] = v7;\n if (bindLen > 8) value[ /** @type {?} */((bindings[8].name))] = v8;\n if (bindLen > 9) value[ /** @type {?} */((bindings[9].name))] = v9;\n break;\n case NodeFlags.TypePurePipe:\n const /** @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 */\nexport function checkAndUpdatePureExpressionDynamic(\n view: ViewData, def: NodeDef, values: any[]): boolean {\n const /** @type {?} */ bindings = def.bindings;\n let /** @type {?} */ changed = false;\n for (let /** @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 const /** @type {?} */ data = asPureExpressionData(view, def.index);\n let /** @type {?} */ value: any;\n switch (def.flags & NodeFlags.Types) {\n case NodeFlags.TypePureArray:\n value = values;\n break;\n case NodeFlags.TypePureObject:\n value = {};\n for (let /** @type {?} */ i = 0; i < values.length; i++) {\n value[ /** @type {?} */((bindings[i].name))] = values[i];\n }\n break;\n case NodeFlags.TypePurePipe:\n const /** @type {?} */ pipe = values[0];\n const /** @type {?} */ params = values.slice(1);\n value = ( /** @type {?} */((<any>pipe.transform)))(...params);\n break;\n }\n data.value = value;\n }\n return changed;\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\nimport {ChangeDetectorRef, SimpleChange, SimpleChanges, WrappedValue} from '../change_detection/change_detection';\nimport {Injector} from '../di';\nimport {ElementRef} from '../linker/element_ref';\nimport {TemplateRef} from '../linker/template_ref';\nimport {ViewContainerRef} from '../linker/view_container_ref';\nimport {Renderer as RendererV1, Renderer2} from '../render/api';\n\nimport {createChangeDetectorRef, createInjector, createRendererV1} from './refs';\nimport {BindingDef, BindingFlags, DepDef, DepFlags, NodeDef, NodeFlags, OutputDef, OutputType, ProviderData, QueryValueType, Services, ViewData, ViewFlags, ViewState, asElementData, asProviderData} from './types';\nimport {calcBindingFlags, checkBinding, dispatchEvent, isComponentView, splitMatchedQueriesDsl, tokenKey, viewParentEl} from './util';\n\nconst /** @type {?} */ RendererV1TokenKey = tokenKey(RendererV1);\nconst /** @type {?} */ Renderer2TokenKey = tokenKey(Renderer2);\nconst /** @type {?} */ ElementRefTokenKey = tokenKey(ElementRef);\nconst /** @type {?} */ ViewContainerRefTokenKey = tokenKey(ViewContainerRef);\nconst /** @type {?} */ TemplateRefTokenKey = tokenKey(TemplateRef);\nconst /** @type {?} */ ChangeDetectorRefTokenKey = tokenKey(ChangeDetectorRef);\nconst /** @type {?} */ InjectorRefTokenKey = tokenKey(Injector);\n\nconst /** @type {?} */ NOT_CREATED = new Object();\n/**\n * @param {?} flags\n * @param {?} matchedQueries\n * @param {?} childCount\n * @param {?} ctor\n * @param {?} deps\n * @param {?=} props\n * @param {?=} outputs\n * @return {?}\n */\nexport function directiveDef(\n flags: NodeFlags, matchedQueries: [string | number, QueryValueType][], childCount: number,\n ctor: any, deps: ([DepFlags, any] | any)[], props?: {[name: string]: [number, string]},\n outputs?: {[name: string]: string}): NodeDef {\n const /** @type {?} */ bindings: BindingDef[] = [];\n if (props) {\n for (let /** @type {?} */ prop in props) {\n const [bindingIndex, nonMinifiedName] = props[prop];\n bindings[bindingIndex] = {\n flags: BindingFlags.TypeProperty,\n name: prop, nonMinifiedName,\n ns: null,\n securityContext: null,\n suffix: null\n };\n }\n }\n const /** @type {?} */ outputDefs: OutputDef[] = [];\n if (outputs) {\n for (let /** @type {?} */ propName in outputs) {\n outputDefs.push(\n {type: OutputType.DirectiveOutput, propName, target: null, eventName: outputs[propName]});\n }\n }\n flags |= NodeFlags.TypeDirective;\n return _def(flags, matchedQueries, childCount, ctor, ctor, deps, bindings, outputDefs);\n}\n/**\n * @param {?} flags\n * @param {?} ctor\n * @param {?} deps\n * @return {?}\n */\nexport function pipeDef(flags: NodeFlags, ctor: any, deps: ([DepFlags, any] | any)[]): NodeDef {\n flags |= NodeFlags.TypePipe;\n return _def(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 */\nexport function providerDef(\n flags: NodeFlags, matchedQueries: [string | number, QueryValueType][], token: any, value: any,\n deps: ([DepFlags, any] | any)[]): NodeDef {\n return _def(flags, matchedQueries, 0, token, value, deps);\n}\n/**\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 */\nexport function _def(\n flags: NodeFlags, matchedQueriesDsl: [string | number, QueryValueType][] | null,\n childCount: number, token: any, value: any, deps: ([DepFlags, any] | any)[],\n bindings?: BindingDef[], outputs?: OutputDef[]): NodeDef {\n const {matchedQueries, references, matchedQueryIds} = splitMatchedQueriesDsl(matchedQueriesDsl);\n if (!outputs) {\n outputs = [];\n }\n if (!bindings) {\n bindings = [];\n }\n\n const /** @type {?} */ depDefs: DepDef[] = deps.map(value => {\n let /** @type {?} */ token: any;\n let /** @type {?} */ flags: DepFlags;\n if (Array.isArray(value)) {\n [flags, token] = value;\n } else {\n flags = DepFlags.None;\n token = value;\n }\n return {flags, token, tokenKey: tokenKey(token)};\n });\n\n return {\n // will bet set by the view definition\n index: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n flags,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0, matchedQueries, matchedQueryIds, references,\n ngContentIndex: -1, childCount, bindings,\n bindingFlags: calcBindingFlags(bindings), outputs,\n element: null,\n provider: {token, tokenKey: tokenKey(token), value, deps: depDefs},\n text: null,\n query: null,\n ngContent: null\n };\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nexport function createProviderInstance(view: ViewData, def: NodeDef): any {\n return def.flags & NodeFlags.LazyProvider ? NOT_CREATED : _createProviderInstance(view, def);\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nexport function createPipeInstance(view: ViewData, def: NodeDef): any {\n // deps are looked up from component.\n let /** @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 const /** @type {?} */ allowPrivateServices = true;\n // pipes are always eager and classes!\n return createClass( /** @type {?} */((\n compView.parent)), /** @type {?} */(( viewParentEl(compView))), allowPrivateServices, /** @type {?} */(( def.provider)).value, /** @type {?} */((\n def.provider)).deps);\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nexport function createDirectiveInstance(view: ViewData, def: NodeDef): any {\n // components can see other private services, other directives can't.\n const /** @type {?} */ allowPrivateServices = (def.flags & NodeFlags.Component) > 0;\n // directives are always eager and classes!\n const /** @type {?} */ instance = createClass(\n view, /** @type {?} */(( def.parent)), allowPrivateServices, /** @type {?} */(( def.provider)).value, /** @type {?} */(( def.provider)).deps);\n if (def.outputs.length) {\n for (let /** @type {?} */ i = 0; i < def.outputs.length; i++) {\n const /** @type {?} */ output = def.outputs[i];\n const /** @type {?} */ subscription = instance[ /** @type {?} */((output.propName))].subscribe(\n eventHandlerClosure(view, /** @type {?} */(( def.parent)).index, 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: ViewData, index: number, eventName: string) {\n return (event: any) => {\n try {\n return dispatchEvent(view, index, eventName, event);\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/**\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 */\nexport function checkAndUpdateDirectiveInline(\n view: ViewData, def: NodeDef, v0: any, v1: any, v2: any, v3: any, v4: any, v5: any, v6: any,\n v7: any, v8: any, v9: any): boolean {\n const /** @type {?} */ providerData = asProviderData(view, def.index);\n const /** @type {?} */ directive = providerData.instance;\n let /** @type {?} */ changed = false;\n let /** @type {?} */ changes: SimpleChanges = /** @type {?} */(( undefined));\n const /** @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 ((view.state & ViewState.FirstCheck) && (def.flags & NodeFlags.OnInit)) {\n directive.ngOnInit();\n }\n if (def.flags & NodeFlags.DoCheck) {\n directive.ngDoCheck();\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} values\n * @return {?}\n */\nexport function checkAndUpdateDirectiveDynamic(\n view: ViewData, def: NodeDef, values: any[]): boolean {\n const /** @type {?} */ providerData = asProviderData(view, def.index);\n const /** @type {?} */ directive = providerData.instance;\n let /** @type {?} */ changed = false;\n let /** @type {?} */ changes: SimpleChanges = /** @type {?} */(( undefined));\n for (let /** @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 ((view.state & ViewState.FirstCheck) && (def.flags & NodeFlags.OnInit)) {\n directive.ngOnInit();\n }\n if (def.flags & NodeFlags.DoCheck) {\n directive.ngDoCheck();\n }\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nfunction _createProviderInstance(view: ViewData, def: NodeDef): any {\n // private services can see other private services\n const /** @type {?} */ allowPrivateServices = (def.flags & NodeFlags.PrivateProvider) > 0;\n const /** @type {?} */ providerDef = def.provider;\n let /** @type {?} */ injectable: any;\n switch (def.flags & NodeFlags.Types) {\n case NodeFlags.TypeClassProvider:\n injectable = createClass(\n view, /** @type {?} */(( def.parent)), allowPrivateServices, /** @type {?} */(( providerDef)).value, /** @type {?} */(( providerDef)).deps);\n break;\n case NodeFlags.TypeFactoryProvider:\n injectable = callFactory(\n view, /** @type {?} */(( def.parent)), allowPrivateServices, /** @type {?} */(( providerDef)).value, /** @type {?} */(( providerDef)).deps);\n break;\n case NodeFlags.TypeUseExistingProvider:\n injectable = resolveDep(view, /** @type {?} */(( def.parent)), allowPrivateServices, /** @type {?} */(( providerDef)).deps[0]);\n break;\n case NodeFlags.TypeValueProvider:\n injectable = /** @type {?} */(( providerDef)).value;\n break;\n }\n return injectable;\n}\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} allowPrivateServices\n * @param {?} ctor\n * @param {?} deps\n * @return {?}\n */\nfunction createClass(\n view: ViewData, elDef: NodeDef, allowPrivateServices: boolean, ctor: any, deps: DepDef[]): any {\n const /** @type {?} */ len = deps.length;\n let /** @type {?} */ injectable: any;\n switch (len) {\n case 0:\n injectable = new ctor();\n break;\n case 1:\n injectable = new ctor(resolveDep(view, elDef, allowPrivateServices, deps[0]));\n break;\n case 2:\n injectable = new ctor(\n resolveDep(view, elDef, allowPrivateServices, deps[0]),\n resolveDep(view, elDef, allowPrivateServices, deps[1]));\n break;\n case 3:\n injectable = new ctor(\n resolveDep(view, elDef, allowPrivateServices, deps[0]),\n resolveDep(view, elDef, allowPrivateServices, deps[1]),\n resolveDep(view, elDef, allowPrivateServices, deps[2]));\n break;\n default:\n const /** @type {?} */ depValues = new Array(len);\n for (let /** @type {?} */ i = 0; i < len; i++) {\n depValues[i] = resolveDep(view, elDef, allowPrivateServices, deps[i]);\n }\n injectable = new ctor(...depValues);\n }\n return injectable;\n}\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} allowPrivateServices\n * @param {?} factory\n * @param {?} deps\n * @return {?}\n */\nfunction callFactory(\n view: ViewData, elDef: NodeDef, allowPrivateServices: boolean, factory: any,\n deps: DepDef[]): any {\n const /** @type {?} */ len = deps.length;\n let /** @type {?} */ injectable: any;\n switch (len) {\n case 0:\n injectable = factory();\n break;\n case 1:\n injectable = factory(resolveDep(view, elDef, allowPrivateServices, deps[0]));\n break;\n case 2:\n injectable = factory(\n resolveDep(view, elDef, allowPrivateServices, deps[0]),\n resolveDep(view, elDef, allowPrivateServices, deps[1]));\n break;\n case 3:\n injectable = factory(\n resolveDep(view, elDef, allowPrivateServices, deps[0]),\n resolveDep(view, elDef, allowPrivateServices, deps[1]),\n resolveDep(view, elDef, allowPrivateServices, deps[2]));\n break;\n default:\n const /** @type {?} */ depValues = Array(len);\n for (let /** @type {?} */ i = 0; i < len; i++) {\n depValues[i] = resolveDep(view, elDef, allowPrivateServices, deps[i]);\n }\n injectable = factory(...depValues);\n }\n return injectable;\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)\nexport const /** @type {?} */ 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 */\nexport function resolveDep(\n view: ViewData, elDef: NodeDef, allowPrivateServices: boolean, depDef: DepDef,\n notFoundValue: any = Injector.THROW_IF_NOT_FOUND): any {\n if (depDef.flags & DepFlags.Value) {\n return depDef.token;\n }\n const /** @type {?} */ startView = view;\n if (depDef.flags & DepFlags.Optional) {\n notFoundValue = null;\n }\n const /** @type {?} */ tokenKey = depDef.tokenKey;\n\n if (tokenKey === 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\n if (elDef && (depDef.flags & DepFlags.SkipSelf)) {\n allowPrivateServices = false;\n elDef = /** @type {?} */(( elDef.parent));\n }\n\n while (view) {\n if (elDef) {\n switch (tokenKey) {\n case RendererV1TokenKey: {\n const /** @type {?} */ compView = findCompView(view, elDef, allowPrivateServices);\n return createRendererV1(compView);\n }\n case Renderer2TokenKey: {\n const /** @type {?} */ compView = findCompView(view, elDef, allowPrivateServices);\n return compView.renderer;\n }\n case ElementRefTokenKey:\n return new ElementRef(asElementData(view, elDef.index).renderElement);\n case ViewContainerRefTokenKey:\n return asElementData(view, elDef.index).viewContainer;\n case TemplateRefTokenKey: {\n if ( /** @type {?} */((elDef.element)).template) {\n return asElementData(view, elDef.index).template;\n }\n break;\n }\n case ChangeDetectorRefTokenKey: {\n let /** @type {?} */ cdView = findCompView(view, elDef, allowPrivateServices);\n return createChangeDetectorRef(cdView);\n }\n case InjectorRefTokenKey:\n return createInjector(view, elDef);\n default:\n const /** @type {?} */ providerDef = /** @type {?} */((\n (allowPrivateServices ? /** @type {?} */(( elDef.element)).allProviders : /** @type {?} */((\n elDef.element)).publicProviders)))[tokenKey];\n if (providerDef) {\n const /** @type {?} */ providerData = asProviderData(view, providerDef.index);\n if (providerData.instance === NOT_CREATED) {\n providerData.instance = _createProviderInstance(view, providerDef);\n }\n return providerData.instance;\n }\n }\n }\n allowPrivateServices = isComponentView(view);\n elDef = /** @type {?} */(( viewParentEl(view)));\n view = /** @type {?} */(( view.parent));\n }\n\n const /** @type {?} */ value = startView.root.injector.get(depDef.token, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR);\n\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\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: ViewData, elDef: NodeDef, allowPrivateServices: boolean) {\n let /** @type {?} */ compView: ViewData;\n if (allowPrivateServices) {\n compView = asElementData(view, elDef.index).componentView;\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(\n view: ViewData, providerData: ProviderData, def: NodeDef, bindingIdx: number, value: any,\n changes: SimpleChanges): SimpleChanges {\n if (def.flags & NodeFlags.Component) {\n const /** @type {?} */ compView = asElementData(view, /** @type {?} */(( def.parent)).index).componentView;\n if (compView.def.flags & ViewFlags.OnPush) {\n compView.state |= ViewState.ChecksEnabled;\n }\n }\n const /** @type {?} */ binding = def.bindings[bindingIdx];\n const /** @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 & NodeFlags.OnChanges) {\n changes = changes || {};\n let /** @type {?} */ oldValue = view.oldValues[def.bindingIndex + bindingIdx];\n if (oldValue instanceof WrappedValue) {\n oldValue = oldValue.wrapped;\n }\n const /** @type {?} */ binding = def.bindings[bindingIdx];\n changes[ /** @type {?} */((binding.nonMinifiedName))] =\n new SimpleChange(oldValue, value, (view.state & ViewState.FirstCheck) !== 0);\n }\n view.oldValues[def.bindingIndex + bindingIdx] = value;\n return changes;\n}\n/**\n * @param {?} view\n * @param {?} lifecycles\n * @return {?}\n */\nexport function callLifecycleHooksChildrenFirst(view: ViewData, lifecycles: NodeFlags) {\n if (!(view.def.nodeFlags & lifecycles)) {\n return;\n }\n const /** @type {?} */ nodes = view.def.nodes;\n for (let /** @type {?} */ i = 0; i < nodes.length; i++) {\n const /** @type {?} */ nodeDef = nodes[i];\n let /** @type {?} */ parent = nodeDef.parent;\n if (!parent && nodeDef.flags & lifecycles) {\n // matching root node (e.g. a pipe)\n callProviderLifecycles(view, i, nodeDef.flags & lifecycles);\n }\n if ((nodeDef.childFlags & lifecycles) === 0) {\n // no child matches one of the lifecycles\n i += nodeDef.childCount;\n }\n while (parent && (parent.flags & NodeFlags.TypeElement) &&\n i === parent.index + parent.childCount) {\n // last child of an element\n if (parent.directChildFlags & lifecycles) {\n callElementProvidersLifecycles(view, parent, lifecycles);\n }\n parent = parent.parent;\n }\n }\n}\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} lifecycles\n * @return {?}\n */\nfunction callElementProvidersLifecycles(view: ViewData, elDef: NodeDef, lifecycles: NodeFlags) {\n for (let /** @type {?} */ i = elDef.index + 1; i <= elDef.index + elDef.childCount; i++) {\n const /** @type {?} */ nodeDef = view.def.nodes[i];\n if (nodeDef.flags & lifecycles) {\n callProviderLifecycles(view, i, nodeDef.flags & lifecycles);\n }\n // only visit direct children\n i += nodeDef.childCount;\n }\n}\n/**\n * @param {?} view\n * @param {?} index\n * @param {?} lifecycles\n * @return {?}\n */\nfunction callProviderLifecycles(view: ViewData, index: number, lifecycles: NodeFlags) {\n const /** @type {?} */ provider = asProviderData(view, index).instance;\n if (provider === NOT_CREATED) {\n return;\n }\n Services.setCurrentNode(view, index);\n if (lifecycles & NodeFlags.AfterContentInit) {\n provider.ngAfterContentInit();\n }\n if (lifecycles & NodeFlags.AfterContentChecked) {\n provider.ngAfterContentChecked();\n }\n if (lifecycles & NodeFlags.AfterViewInit) {\n provider.ngAfterViewInit();\n }\n if (lifecycles & NodeFlags.AfterViewChecked) {\n provider.ngAfterViewChecked();\n }\n if (lifecycles & NodeFlags.OnDestroy) {\n provider.ngOnDestroy();\n }\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\nimport {ApplicationRef} from '../application_ref';\nimport {ChangeDetectorRef} from '../change_detection/change_detection';\nimport {Injector} from '../di';\nimport {ComponentFactory, ComponentRef} from '../linker/component_factory';\nimport {ComponentFactoryBoundToModule} from '../linker/component_factory_resolver';\nimport {ElementRef} from '../linker/element_ref';\nimport {NgModuleRef} from '../linker/ng_module_factory';\nimport {TemplateRef} from '../linker/template_ref';\nimport {ViewContainerRef} from '../linker/view_container_ref';\nimport {EmbeddedViewRef, InternalViewRef, ViewRef} from '../linker/view_ref';\nimport {Renderer as RendererV1, Renderer2} from '../render/api';\nimport {Type} from '../type';\nimport {VERSION} from '../version';\n\nimport {DepFlags, ElementData, NodeDef, NodeFlags, Services, TemplateData, ViewContainerData, ViewData, ViewDefinitionFactory, ViewState, asElementData, asProviderData, asTextData} from './types';\nimport {markParentViewsForCheck, resolveViewDefinition, rootRenderNodes, splitNamespace, tokenKey, viewParentEl} from './util';\nimport {attachEmbeddedView, detachEmbeddedView, moveEmbeddedView, renderDetachView} from './view_attach';\n\nconst /** @type {?} */ 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 */\nexport function createComponentFactory(\n selector: string, componentType: Type<any>, viewDefFactory: ViewDefinitionFactory,\n inputs: {[propName: string]: string} | null, outputs: {[propName: string]: string},\n ngContentSelectors: string[]): ComponentFactory<any> {\n return new ComponentFactory_(\n selector, componentType, viewDefFactory, inputs, outputs, ngContentSelectors);\n}\n/**\n * @param {?} componentFactory\n * @return {?}\n */\nexport function getComponentViewDefinitionFactory(componentFactory: ComponentFactory<any>):\n ViewDefinitionFactory {\n return ( /** @type {?} */((componentFactory as ComponentFactory_))).viewDefFactory;\n}\nclass ComponentFactory_ extends ComponentFactory<any> {\n/**\n * \\@internal\n */\nviewDefFactory: ViewDefinitionFactory;\n/**\n * @param {?} selector\n * @param {?} componentType\n * @param {?} viewDefFactory\n * @param {?} _inputs\n * @param {?} _outputs\n * @param {?} ngContentSelectors\n */\nconstructor(\npublic selector: string,\npublic componentType: Type<any>,\n viewDefFactory: ViewDefinitionFactory,\nprivate _inputs: {[propName: string]: string}|null,\nprivate _outputs: {[propName: string]: string},\npublic ngContentSelectors: string[]) {\n // Attention: this ctor is called as top level function.\n // Putting any logic in here will destroy closure tree shaking!\n super();\n this.viewDefFactory = viewDefFactory;\n }\n/**\n * @return {?}\n */\nget inputs() {\n const /** @type {?} */ inputsArr: {propName: string, templateName: string}[] = [];\n const /** @type {?} */ inputs = /** @type {?} */(( this._inputs));\n for (let /** @type {?} */ propName in inputs) {\n const /** @type {?} */ templateName = inputs[propName];\n inputsArr.push({propName, templateName});\n }\n return inputsArr;\n }\n/**\n * @return {?}\n */\nget outputs() {\n const /** @type {?} */ outputsArr: {propName: string, templateName: string}[] = [];\n for (let /** @type {?} */ propName in this._outputs) {\n const /** @type {?} */ templateName = this._outputs[propName];\n outputsArr.push({propName, templateName});\n }\n return outputsArr;\n }\n/**\n * Creates a new component.\n * @param {?} injector\n * @param {?=} projectableNodes\n * @param {?=} rootSelectorOrNode\n * @param {?=} ngModule\n * @return {?}\n */\ncreate(\n injector: Injector, projectableNodes?: any[][], rootSelectorOrNode?: string|any,\n ngModule?: NgModuleRef<any>): ComponentRef<any> {\n if (!ngModule) {\n throw new Error('ngModule should be provided');\n }\n const /** @type {?} */ viewDef = resolveViewDefinition(this.viewDefFactory);\n const /** @type {?} */ componentNodeIndex = /** @type {?} */(( /** @type {?} */(( viewDef.nodes[0].element)).componentProvider)).index;\n const /** @type {?} */ view = Services.createRootView(\n injector, projectableNodes || [], rootSelectorOrNode, viewDef, ngModule, EMPTY_CONTEXT);\n const /** @type {?} */ component = asProviderData(view, componentNodeIndex).instance;\n if (rootSelectorOrNode) {\n view.renderer.setAttribute(asElementData(view, 0).renderElement, 'ng-version', VERSION.full);\n }\n\n return new ComponentRef_(view, new ViewRef_(view), component);\n }\n}\n\nfunction ComponentFactory__tsickle_Closure_declarations() {\n/**\n * \\@internal\n * @type {?}\n */\nComponentFactory_.prototype.viewDefFactory;\n/** @type {?} */\nComponentFactory_.prototype.selector;\n/** @type {?} */\nComponentFactory_.prototype.componentType;\n/** @type {?} */\nComponentFactory_.prototype._inputs;\n/** @type {?} */\nComponentFactory_.prototype._outputs;\n/** @type {?} */\nComponentFactory_.prototype.ngContentSelectors;\n}\n\nclass ComponentRef_ extends ComponentRef<any> {\nprivate _elDef: NodeDef;\n/**\n * @param {?} _view\n * @param {?} _viewRef\n * @param {?} _component\n */\nconstructor(private _view: ViewData,\nprivate _viewRef: ViewRef,\nprivate _component: any) {\n super();\n this._elDef = this._view.def.nodes[0];\n }\n/**\n * @return {?}\n */\nget location(): ElementRef {\n return new ElementRef(asElementData(this._view, this._elDef.index).renderElement);\n }\n/**\n * @return {?}\n */\nget injector(): Injector { return new Injector_(this._view, this._elDef); }\n/**\n * @return {?}\n */\nget instance(): any { return this._component; };\n/**\n * @return {?}\n */\nget hostView(): ViewRef { return this._viewRef; };\n/**\n * @return {?}\n */\nget changeDetectorRef(): ChangeDetectorRef { return this._viewRef; };\n/**\n * @return {?}\n */\nget componentType(): Type<any> { return /** @type {?} */(( <any>this._component.constructor)); }\n/**\n * @return {?}\n */\ndestroy(): void { this._viewRef.destroy(); }\n/**\n * @param {?} callback\n * @return {?}\n */\nonDestroy(callback: Function): void { this._viewRef.onDestroy(callback); }\n}\n\nfunction ComponentRef__tsickle_Closure_declarations() {\n/** @type {?} */\nComponentRef_.prototype._elDef;\n/** @type {?} */\nComponentRef_.prototype._view;\n/** @type {?} */\nComponentRef_.prototype._viewRef;\n/** @type {?} */\nComponentRef_.prototype._component;\n}\n\n/**\n * @param {?} view\n * @param {?} elDef\n * @param {?} elData\n * @return {?}\n */\nexport function createViewContainerData(\n view: ViewData, elDef: NodeDef, elData: ElementData): ViewContainerData {\n return new ViewContainerRef_(view, elDef, elData);\n}\nclass ViewContainerRef_ implements ViewContainerData {\n/**\n * \\@internal\n */\n_embeddedViews: ViewData[] = [];\n/**\n * @param {?} _view\n * @param {?} _elDef\n * @param {?} _data\n */\nconstructor(private _view: ViewData,\nprivate _elDef: NodeDef,\nprivate _data: ElementData) {}\n/**\n * @return {?}\n */\nget element(): ElementRef { return new ElementRef(this._data.renderElement); }\n/**\n * @return {?}\n */\nget injector(): Injector { return new Injector_(this._view, this._elDef); }\n/**\n * @return {?}\n */\nget parentInjector(): Injector {\n let /** @type {?} */ view = this._view;\n let /** @type {?} */ elDef = this._elDef.parent;\n while (!elDef && view) {\n elDef = viewParentEl(view);\n view = /** @type {?} */(( view.parent));\n }\n\n return view ? new Injector_(view, elDef) : new Injector_(this._view, null);\n }\n/**\n * @return {?}\n */\nclear(): void {\n const /** @type {?} */ len = this._embeddedViews.length;\n for (let /** @type {?} */ i = len - 1; i >= 0; i--) {\n const /** @type {?} */ view = /** @type {?} */(( detachEmbeddedView(this._data, i)));\n Services.destroyView(view);\n }\n }\n/**\n * @param {?} index\n * @return {?}\n */\nget(index: number): ViewRef|null {\n const /** @type {?} */ view = this._embeddedViews[index];\n if (view) {\n const /** @type {?} */ ref = new ViewRef_(view);\n ref.attachToViewContainerRef(this);\n return ref;\n }\n return null;\n }\n/**\n * @return {?}\n */\nget length(): number { return this._embeddedViews.length; };\n/**\n * @template C\n * @param {?} templateRef\n * @param {?=} context\n * @param {?=} index\n * @return {?}\n */\ncreateEmbeddedView<C>(templateRef: TemplateRef<C>, context?: C, index?: number):\n EmbeddedViewRef<C> {\n const /** @type {?} */ viewRef = templateRef.createEmbeddedView(context || /** @type {?} */(( <any>{})));\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 */\ncreateComponent<C>(\n componentFactory: ComponentFactory<C>, index?: number, injector?: Injector,\n projectableNodes?: any[][], ngModuleRef?: NgModuleRef<any>): ComponentRef<C> {\n const /** @type {?} */ contextInjector = injector || this.parentInjector;\n if (!ngModuleRef && !(componentFactory instanceof ComponentFactoryBoundToModule)) {\n ngModuleRef = contextInjector.get(NgModuleRef);\n }\n const /** @type {?} */ componentRef =\n 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 */\ninsert(viewRef: ViewRef, index?: number): ViewRef {\n const /** @type {?} */ viewRef_ = /** @type {?} */(( <ViewRef_>viewRef));\n const /** @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 */\nmove(viewRef: ViewRef_, currentIndex: number): ViewRef {\n const /** @type {?} */ previousIndex = this._embeddedViews.indexOf(viewRef._view);\n moveEmbeddedView(this._data, previousIndex, currentIndex);\n return viewRef;\n }\n/**\n * @param {?} viewRef\n * @return {?}\n */\nindexOf(viewRef: ViewRef): number {\n return this._embeddedViews.indexOf(( /** @type {?} */((<ViewRef_>viewRef)))._view);\n }\n/**\n * @param {?=} index\n * @return {?}\n */\nremove(index?: number): void {\n const /** @type {?} */ viewData = detachEmbeddedView(this._data, index);\n if (viewData) {\n Services.destroyView(viewData);\n }\n }\n/**\n * @param {?=} index\n * @return {?}\n */\ndetach(index?: number): ViewRef|null {\n const /** @type {?} */ view = detachEmbeddedView(this._data, index);\n return view ? new ViewRef_(view) : null;\n }\n}\n\nfunction ViewContainerRef__tsickle_Closure_declarations() {\n/**\n * \\@internal\n * @type {?}\n */\nViewContainerRef_.prototype._embeddedViews;\n/** @type {?} */\nViewContainerRef_.prototype._view;\n/** @type {?} */\nViewContainerRef_.prototype._elDef;\n/** @type {?} */\nViewContainerRef_.prototype._data;\n}\n\n/**\n * @param {?} view\n * @return {?}\n */\nexport function createChangeDetectorRef(view: ViewData): ChangeDetectorRef {\n return new ViewRef_(view);\n}\nexport class ViewRef_ implements EmbeddedViewRef<any>, InternalViewRef {\n/**\n * \\@internal\n */\n_view: ViewData;\nprivate _viewContainerRef: ViewContainerRef|null;\nprivate _appRef: ApplicationRef|null;\n/**\n * @param {?} _view\n */\nconstructor(_view: ViewData) {\n this._view = _view;\n this._viewContainerRef = null;\n this._appRef = null;\n }\n/**\n * @return {?}\n */\nget rootNodes(): any[] { return rootRenderNodes(this._view); }\n/**\n * @return {?}\n */\nget context() { return this._view.context; }\n/**\n * @return {?}\n */\nget destroyed(): boolean { return (this._view.state & ViewState.Destroyed) !== 0; }\n/**\n * @return {?}\n */\nmarkForCheck(): void { markParentViewsForCheck(this._view); }\n/**\n * @return {?}\n */\ndetach(): void { this._view.state &= ~ViewState.Attached; }\n/**\n * @return {?}\n */\ndetectChanges(): void { Services.checkAndUpdateView(this._view); }\n/**\n * @return {?}\n */\ncheckNoChanges(): void { Services.checkNoChangesView(this._view); }\n/**\n * @return {?}\n */\nreattach(): void { this._view.state |= ViewState.Attached; }\n/**\n * @param {?} callback\n * @return {?}\n */\nonDestroy(callback: Function) {\n if (!this._view.disposables) {\n this._view.disposables = [];\n }\n this._view.disposables.push( /** @type {?} */((<any>callback)));\n }\n/**\n * @return {?}\n */\ndestroy() {\n if (this._appRef) {\n this._appRef.detachView(this);\n } else if (this._viewContainerRef) {\n this._viewContainerRef.detach(this._viewContainerRef.indexOf(this));\n }\n Services.destroyView(this._view);\n }\n/**\n * @return {?}\n */\ndetachFromAppRef() {\n this._appRef = null;\n renderDetachView(this._view);\n Services.dirtyParentQueries(this._view);\n }\n/**\n * @param {?} appRef\n * @return {?}\n */\nattachToAppRef(appRef: ApplicationRef) {\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 */\nattachToViewContainerRef(vcRef: ViewContainerRef) {\n if (this._appRef) {\n throw new Error('This view is already attached directly to the ApplicationRef!');\n }\n this._viewContainerRef = vcRef;\n }\n}\n\nfunction ViewRef__tsickle_Closure_declarations() {\n/**\n * \\@internal\n * @type {?}\n */\nViewRef_.prototype._view;\n/** @type {?} */\nViewRef_.prototype._viewContainerRef;\n/** @type {?} */\nViewRef_.prototype._appRef;\n}\n\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nexport function createTemplateData(view: ViewData, def: NodeDef): TemplateData {\n return new TemplateRef_(view, def);\n}\nclass TemplateRef_ extends TemplateRef<any> implements TemplateData {\n/**\n * \\@internal\n */\n_projectedViews: ViewData[];\n/**\n * @param {?} _parentView\n * @param {?} _def\n */\nconstructor(private _parentView: ViewData,\nprivate _def: NodeDef) { super(); }\n/**\n * @param {?} context\n * @return {?}\n */\ncreateEmbeddedView(context: any): EmbeddedViewRef<any> {\n return new ViewRef_(Services.createEmbeddedView(this._parentView, this._def, context));\n }\n/**\n * @return {?}\n */\nget elementRef(): ElementRef {\n return new ElementRef(asElementData(this._parentView, this._def.index).renderElement);\n }\n}\n\nfunction TemplateRef__tsickle_Closure_declarations() {\n/**\n * \\@internal\n * @type {?}\n */\nTemplateRef_.prototype._projectedViews;\n/** @type {?} */\nTemplateRef_.prototype._parentView;\n/** @type {?} */\nTemplateRef_.prototype._def;\n}\n\n/**\n * @param {?} view\n * @param {?} elDef\n * @return {?}\n */\nexport function createInjector(view: ViewData, elDef: NodeDef): Injector {\n return new Injector_(view, elDef);\n}\nclass Injector_ implements Injector {\n/**\n * @param {?} view\n * @param {?} elDef\n */\nconstructor(private view: ViewData,\nprivate elDef: NodeDef|null) {}\n/**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\nget(token: any, notFoundValue: any = Injector.THROW_IF_NOT_FOUND): any {\n const /** @type {?} */ allowPrivateServices =\n this.elDef ? (this.elDef.flags & NodeFlags.ComponentView) !== 0 : false;\n return Services.resolveDep(\n this.view, this.elDef, allowPrivateServices,\n {flags: DepFlags.None, token, tokenKey: tokenKey(token)}, notFoundValue);\n }\n}\n\nfunction Injector__tsickle_Closure_declarations() {\n/** @type {?} */\nInjector_.prototype.view;\n/** @type {?} */\nInjector_.prototype.elDef;\n}\n\n/**\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nexport function nodeValue(view: ViewData, index: number): any {\n const /** @type {?} */ def = view.def.nodes[index];\n if (def.flags & NodeFlags.TypeElement) {\n const /** @type {?} */ elData = asElementData(view, def.index);\n return /** @type {?} */(( def.element)).template ? elData.template : elData.renderElement;\n } else if (def.flags & NodeFlags.TypeText) {\n return asTextData(view, def.index).renderText;\n } else if (def.flags & (NodeFlags.CatProvider | NodeFlags.TypePipe)) {\n return asProviderData(view, def.index).instance;\n }\n throw new Error(`Illegal state: read nodeValue for node index ${index}`);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function createRendererV1(view: ViewData): RendererV1 {\n return new RendererAdapter(view.renderer);\n}\nclass RendererAdapter implements RendererV1 {\n/**\n * @param {?} delegate\n */\nconstructor(private delegate: Renderer2) {}\n/**\n * @param {?} selectorOrNode\n * @return {?}\n */\nselectRootElement(selectorOrNode: string|Element): Element {\n return this.delegate.selectRootElement(selectorOrNode);\n }\n/**\n * @param {?} parent\n * @param {?} namespaceAndName\n * @return {?}\n */\ncreateElement(parent: Element|DocumentFragment, namespaceAndName: string): Element {\n const [ns, name] = splitNamespace(namespaceAndName);\n const /** @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 */\ncreateViewRoot(hostElement: Element): Element|DocumentFragment { return hostElement; }\n/**\n * @param {?} parentElement\n * @return {?}\n */\ncreateTemplateAnchor(parentElement: Element|DocumentFragment): Comment {\n const /** @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 */\ncreateText(parentElement: Element|DocumentFragment, value: string): any {\n const /** @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 */\nprojectNodes(parentElement: Element|DocumentFragment, nodes: Node[]) {\n for (let /** @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 */\nattachViewAfter(node: Node, viewRootNodes: Node[]) {\n const /** @type {?} */ parentElement = this.delegate.parentNode(node);\n const /** @type {?} */ nextSibling = this.delegate.nextSibling(node);\n for (let /** @type {?} */ i = 0; i < viewRootNodes.length; i++) {\n this.delegate.insertBefore(parentElement, viewRootNodes[i], nextSibling);\n }\n }\n/**\n * @param {?} viewRootNodes\n * @return {?}\n */\ndetachView(viewRootNodes: (Element|Text|Comment)[]) {\n for (let /** @type {?} */ i = 0; i < viewRootNodes.length; i++) {\n const /** @type {?} */ node = viewRootNodes[i];\n const /** @type {?} */ parentElement = this.delegate.parentNode(node);\n this.delegate.removeChild(parentElement, node);\n }\n }\n/**\n * @param {?} hostElement\n * @param {?} viewAllNodes\n * @return {?}\n */\ndestroyView(hostElement: Element|DocumentFragment, viewAllNodes: Node[]) {\n for (let /** @type {?} */ i = 0; i < viewAllNodes.length; i++) { /** @type {?} */((\n this.delegate.destroyNode))(viewAllNodes[i]);\n }\n }\n/**\n * @param {?} renderElement\n * @param {?} name\n * @param {?} callback\n * @return {?}\n */\nlisten(renderElement: any, name: string, callback: Function): Function {\n return this.delegate.listen(renderElement, name, /** @type {?} */(( <any>callback)));\n }\n/**\n * @param {?} target\n * @param {?} name\n * @param {?} callback\n * @return {?}\n */\nlistenGlobal(target: string, name: string, callback: Function): Function {\n return this.delegate.listen(target, name, /** @type {?} */(( <any>callback)));\n }\n/**\n * @param {?} renderElement\n * @param {?} propertyName\n * @param {?} propertyValue\n * @return {?}\n */\nsetElementProperty(\n renderElement: Element|DocumentFragment, propertyName: string, propertyValue: any): void {\n this.delegate.setProperty(renderElement, propertyName, propertyValue);\n }\n/**\n * @param {?} renderElement\n * @param {?} namespaceAndName\n * @param {?} attributeValue\n * @return {?}\n */\nsetElementAttribute(renderElement: Element, namespaceAndName: string, attributeValue: string):\n void {\n const [ns, name] = splitNamespace(namespaceAndName);\n if (attributeValue != null) {\n this.delegate.setAttribute(renderElement, name, attributeValue, ns);\n } else {\n this.delegate.removeAttribute(renderElement, name, ns);\n }\n }\n/**\n * @param {?} renderElement\n * @param {?} propertyName\n * @param {?} propertyValue\n * @return {?}\n */\nsetBindingDebugInfo(renderElement: Element, propertyName: string, propertyValue: string): void {}\n/**\n * @param {?} renderElement\n * @param {?} className\n * @param {?} isAdd\n * @return {?}\n */\nsetElementClass(renderElement: Element, className: string, isAdd: boolean): void {\n if (isAdd) {\n this.delegate.addClass(renderElement, className);\n } else {\n this.delegate.removeClass(renderElement, className);\n }\n }\n/**\n * @param {?} renderElement\n * @param {?} styleName\n * @param {?} styleValue\n * @return {?}\n */\nsetElementStyle(renderElement: HTMLElement, styleName: string, styleValue: string): void {\n if (styleValue != null) {\n this.delegate.setStyle(renderElement, styleName, styleValue);\n } else {\n this.delegate.removeStyle(renderElement, styleName);\n }\n }\n/**\n * @param {?} renderElement\n * @param {?} methodName\n * @param {?} args\n * @return {?}\n */\ninvokeElementMethod(renderElement: Element, methodName: string, args: any[]): void {\n ( /** @type {?} */((renderElement as any)))[methodName].apply(renderElement, args);\n }\n/**\n * @param {?} renderNode\n * @param {?} text\n * @return {?}\n */\nsetText(renderNode: Text, text: string): void { this.delegate.setValue(renderNode, text); }\n/**\n * @return {?}\n */\nanimate(): any { throw new Error('Renderer.animate is no longer supported!'); }\n}\n\nfunction RendererAdapter_tsickle_Closure_declarations() {\n/** @type {?} */\nRendererAdapter.prototype.delegate;\n}\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\nimport {ElementData, Services, ViewData} from './types';\nimport {RenderNodeAction, declaredViewContainer, renderNode, visitRootRenderNodes} from './util';\n/**\n * @param {?} parentView\n * @param {?} elementData\n * @param {?} viewIndex\n * @param {?} view\n * @return {?}\n */\nexport function attachEmbeddedView(\n parentView: ViewData, elementData: ElementData, viewIndex: number | undefined | null,\n view: ViewData) {\n let /** @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 const /** @type {?} */ dvcElementData = declaredViewContainer(view);\n if (dvcElementData && dvcElementData !== elementData) {\n let /** @type {?} */ projectedViews = dvcElementData.template._projectedViews;\n if (!projectedViews) {\n projectedViews = dvcElementData.template._projectedViews = [];\n }\n projectedViews.push(view);\n }\n\n Services.dirtyParentQueries(view);\n\n const /** @type {?} */ prevView = /** @type {?} */(( viewIndex)) > 0 ? embeddedViews[ /** @type {?} */((viewIndex)) - 1] : null;\n renderAttachEmbeddedView(elementData, prevView, view);\n}\n/**\n * @param {?} elementData\n * @param {?=} viewIndex\n * @return {?}\n */\nexport function detachEmbeddedView(elementData: ElementData, viewIndex?: number): ViewData|null {\n const /** @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 const /** @type {?} */ view = embeddedViews[viewIndex];\n view.viewContainerParent = null;\n removeFromArray(embeddedViews, viewIndex);\n\n const /** @type {?} */ dvcElementData = declaredViewContainer(view);\n if (dvcElementData && dvcElementData !== elementData) {\n const /** @type {?} */ projectedViews = dvcElementData.template._projectedViews;\n removeFromArray(projectedViews, projectedViews.indexOf(view));\n }\n\n Services.dirtyParentQueries(view);\n\n renderDetachView(view);\n\n return view;\n}\n/**\n * @param {?} elementData\n * @param {?} oldViewIndex\n * @param {?} newViewIndex\n * @return {?}\n */\nexport function moveEmbeddedView(\n elementData: ElementData, oldViewIndex: number, newViewIndex: number): ViewData {\n const /** @type {?} */ embeddedViews = /** @type {?} */(( elementData.viewContainer))._embeddedViews;\n const /** @type {?} */ view = embeddedViews[oldViewIndex];\n removeFromArray(embeddedViews, oldViewIndex);\n if (newViewIndex == null) {\n newViewIndex = embeddedViews.length;\n }\n addToArray(embeddedViews, newViewIndex, view);\n\n // Note: Don't need to change projectedViews as the order in there\n // as always invalid...\n\n Services.dirtyParentQueries(view);\n\n renderDetachView(view);\n const /** @type {?} */ prevView = newViewIndex > 0 ? embeddedViews[newViewIndex - 1] : null;\n renderAttachEmbeddedView(elementData, prevView, view);\n\n return view;\n}\n/**\n * @param {?} elementData\n * @param {?} prevView\n * @param {?} view\n * @return {?}\n */\nfunction renderAttachEmbeddedView(\n elementData: ElementData, prevView: ViewData | null, view: ViewData) {\n const /** @type {?} */ prevRenderNode = prevView ? renderNode(prevView, /** @type {?} */(( prevView.def.lastRenderRootNode))) :\n elementData.renderElement;\n const /** @type {?} */ parentNode = view.renderer.parentNode(prevRenderNode);\n const /** @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, RenderNodeAction.InsertBefore, parentNode, nextSibling, undefined);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function renderDetachView(view: ViewData) {\n visitRootRenderNodes(view, RenderNodeAction.RemoveChild, null, null, undefined);\n}\n/**\n * @param {?} arr\n * @param {?} index\n * @param {?} value\n * @return {?}\n */\nfunction addToArray(arr: any[], index: number, value: any) {\n // perf: array.push is faster than array.splice!\n if (index >= arr.length) {\n arr.push(value);\n } else {\n arr.splice(index, 0, value);\n }\n}\n/**\n * @param {?} arr\n * @param {?} index\n * @return {?}\n */\nfunction removeFromArray(arr: any[], index: number) {\n // perf: array.pop is faster than array.splice!\n if (index >= arr.length - 1) {\n arr.pop();\n } else {\n arr.splice(index, 1);\n }\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\nimport {NodeDef, NodeFlags, ViewData} from './types';\nimport {RenderNodeAction, getParentRenderElement, visitProjectedRenderNodes} from './util';\n/**\n * @param {?} ngContentIndex\n * @param {?} index\n * @return {?}\n */\nexport function ngContentDef(ngContentIndex: number, index: number): NodeDef {\n return {\n // will bet set by the view definition\n index: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n flags: NodeFlags.TypeNgContent,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0,\n matchedQueries: {},\n matchedQueryIds: 0,\n references: {}, 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}\n };\n}\n/**\n * @param {?} view\n * @param {?} renderHost\n * @param {?} def\n * @return {?}\n */\nexport function appendNgContent(view: ViewData, renderHost: any, def: NodeDef) {\n const /** @type {?} */ parentEl = getParentRenderElement(view, renderHost, def);\n if (!parentEl) {\n // Nothing to do if there is no parent element.\n return;\n }\n const /** @type {?} */ ngContentIndex = /** @type {?} */(( def.ngContent)).index;\n visitProjectedRenderNodes(\n view, ngContentIndex, RenderNodeAction.AppendChild, parentEl, null, undefined);\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\nimport {RendererType2} from '../render/api';\nimport {SecurityContext} from '../security';\n\nimport {BindingDef, BindingFlags, ElementData, ElementHandleEventFn, NodeDef, NodeFlags, OutputDef, OutputType, QueryValueType, ViewData, ViewDefinitionFactory, asElementData} from './types';\nimport {NOOP, calcBindingFlags, checkAndUpdateBinding, dispatchEvent, elementEventFullName, getParentRenderElement, resolveRendererType2, resolveViewDefinition, splitMatchedQueriesDsl, splitNamespace} from './util';\n/**\n * @param {?} flags\n * @param {?} matchedQueriesDsl\n * @param {?} ngContentIndex\n * @param {?} childCount\n * @param {?=} handleEvent\n * @param {?=} templateFactory\n * @return {?}\n */\nexport function anchorDef(\n flags: NodeFlags, matchedQueriesDsl: [string | number, QueryValueType][],\n ngContentIndex: number, childCount: number, handleEvent?: ElementHandleEventFn,\n templateFactory?: ViewDefinitionFactory): NodeDef {\n flags |= NodeFlags.TypeElement;\n const {matchedQueries, references, matchedQueryIds} = splitMatchedQueriesDsl(matchedQueriesDsl);\n const /** @type {?} */ template = templateFactory ? resolveViewDefinition(templateFactory) : null;\n\n return {\n // will bet set by the view definition\n index: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n flags,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0, matchedQueries, matchedQueryIds, references, ngContentIndex, childCount,\n bindings: [],\n bindingFlags: 0,\n outputs: [],\n element: {\n ns: null,\n name: null,\n attrs: null, 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 {?} 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 */\nexport function elementDef(\n flags: NodeFlags, matchedQueriesDsl: [string | number, QueryValueType][],\n ngContentIndex: number, childCount: number, namespaceAndName: string,\n fixedAttrs: [string, string][] = [],\n bindings?: [BindingFlags, string, string | SecurityContext][], outputs?: ([string, string])[],\n handleEvent?: ElementHandleEventFn, componentView?: ViewDefinitionFactory,\n componentRendererType?: RendererType2 | null): NodeDef {\n if (!handleEvent) {\n handleEvent = NOOP;\n }\n const {matchedQueries, references, matchedQueryIds} = splitMatchedQueriesDsl(matchedQueriesDsl);\n let /** @type {?} */ ns: string = /** @type {?} */(( null));\n let /** @type {?} */ name: string = /** @type {?} */(( null));\n if (namespaceAndName) {\n [ns, name] = splitNamespace(namespaceAndName);\n }\n bindings = bindings || [];\n const /** @type {?} */ bindingDefs: BindingDef[] = new Array(bindings.length);\n for (let /** @type {?} */ i = 0; i < bindings.length; i++) {\n const [bindingFlags, namespaceAndName, suffixOrSecurityContext] = bindings[i];\n\n const [ns, name] = splitNamespace(namespaceAndName);\n let /** @type {?} */ securityContext: SecurityContext = /** @type {?} */(( undefined));\n let /** @type {?} */ suffix: string = /** @type {?} */(( undefined));\n switch (bindingFlags & BindingFlags.Types) {\n case BindingFlags.TypeElementStyle:\n suffix = /** @type {?} */(( <string>suffixOrSecurityContext));\n break;\n case BindingFlags.TypeElementAttribute:\n case BindingFlags.TypeProperty:\n securityContext = /** @type {?} */(( <SecurityContext>suffixOrSecurityContext));\n break;\n }\n bindingDefs[i] =\n {flags: bindingFlags, ns, name, nonMinifiedName: name, securityContext, suffix};\n }\n outputs = outputs || [];\n const /** @type {?} */ outputDefs: OutputDef[] = new Array(outputs.length);\n for (let /** @type {?} */ i = 0; i < outputs.length; i++) {\n const [target, eventName] = outputs[i];\n outputDefs[i] = {\n type: OutputType.ElementOutput,\n target: /** @type {?} */(( <any>target)), eventName,\n propName: null\n };\n }\n fixedAttrs = fixedAttrs || [];\n const /** @type {?} */ attrs = /** @type {?} */(( <[string, string, string][]>fixedAttrs.map(([namespaceAndName, value]) => {\n const [ns, name] = splitNamespace(namespaceAndName);\n return [ns, name, value];\n })));\n componentRendererType = resolveRendererType2(componentRendererType);\n if (componentView) {\n flags |= NodeFlags.ComponentView;\n }\n flags |= NodeFlags.TypeElement;\n return {\n // will bet set by the view definition\n index: -1,\n parent: null,\n renderParent: null,\n bindingIndex: -1,\n outputIndex: -1,\n // regular values\n flags,\n childFlags: 0,\n directChildFlags: 0,\n childMatchedQueries: 0, matchedQueries, matchedQueryIds, references, ngContentIndex, childCount,\n bindings: bindingDefs,\n bindingFlags: calcBindingFlags(bindingDefs),\n outputs: outputDefs,\n element: {\n ns,\n name,\n 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}\n/**\n * @param {?} view\n * @param {?} renderHost\n * @param {?} def\n * @return {?}\n */\nexport function createElement(view: ViewData, renderHost: any, def: NodeDef): ElementData {\n const /** @type {?} */ elDef = /** @type {?} */(( def.element));\n const /** @type {?} */ rootSelectorOrNode = view.root.selectorOrNode;\n const /** @type {?} */ renderer = view.renderer;\n let /** @type {?} */ el: any;\n if (view.parent || !rootSelectorOrNode) {\n if (elDef.name) {\n el = renderer.createElement(elDef.name, elDef.ns);\n } else {\n el = renderer.createComment('');\n }\n const /** @type {?} */ parentEl = getParentRenderElement(view, renderHost, def);\n if (parentEl) {\n renderer.appendChild(parentEl, el);\n }\n } else {\n el = renderer.selectRootElement(rootSelectorOrNode);\n }\n if (elDef.attrs) {\n for (let /** @type {?} */ i = 0; i < elDef.attrs.length; i++) {\n const [ns, name, value] = elDef.attrs[i];\n renderer.setAttribute(el, name, value, ns);\n }\n }\n return el;\n}\n/**\n * @param {?} view\n * @param {?} compView\n * @param {?} def\n * @param {?} el\n * @return {?}\n */\nexport function listenToElementOutputs(view: ViewData, compView: ViewData, def: NodeDef, el: any) {\n for (let /** @type {?} */ i = 0; i < def.outputs.length; i++) {\n const /** @type {?} */ output = def.outputs[i];\n const /** @type {?} */ handleEventClosure = renderEventHandlerClosure(\n view, def.index, elementEventFullName(output.target, output.eventName));\n let /** @type {?} */ listenTarget: 'window'|'document'|'body'|'component'|null = output.target;\n let /** @type {?} */ listenerView = view;\n if (output.target === 'component') {\n listenTarget = null;\n listenerView = compView;\n }\n const /** @type {?} */ disposable = /** @type {?} */((\n <any>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: ViewData, index: number, eventName: string) {\n return (event: any) => {\n try {\n return dispatchEvent(view, index, eventName, event);\n } catch ( /** @type {?} */e) {\n // Attention: Don't rethrow, to keep in sync with directive events.\n view.root.errorHandler.handleError(e);\n }\n }\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 */\nexport function checkAndUpdateElementInline(\n view: ViewData, def: NodeDef, v0: any, v1: any, v2: any, v3: any, v4: any, v5: any, v6: any,\n v7: any, v8: any, v9: any): boolean {\n const /** @type {?} */ bindLen = def.bindings.length;\n let /** @type {?} */ changed = false;\n if (bindLen > 0 && checkAndUpdateElementValue(view, def, 0, v0)) changed = true;\n if (bindLen > 1 && checkAndUpdateElementValue(view, def, 1, v1)) changed = true;\n if (bindLen > 2 && checkAndUpdateElementValue(view, def, 2, v2)) changed = true;\n if (bindLen > 3 && checkAndUpdateElementValue(view, def, 3, v3)) changed = true;\n if (bindLen > 4 && checkAndUpdateElementValue(view, def, 4, v4)) changed = true;\n if (bindLen > 5 && checkAndUpdateElementValue(view, def, 5, v5)) changed = true;\n if (bindLen > 6 && checkAndUpdateElementValue(view, def, 6, v6)) changed = true;\n if (bindLen > 7 && checkAndUpdateElementValue(view, def, 7, v7)) changed = true;\n if (bindLen > 8 && checkAndUpdateElementValue(view, def, 8, v8)) changed = true;\n if (bindLen > 9 && checkAndUpdateElementValue(view, def, 9, v9)) changed = true;\n return changed;\n}\n/**\n * @param {?} view\n * @param {?} def\n * @param {?} values\n * @return {?}\n */\nexport function checkAndUpdateElementDynamic(view: ViewData, def: NodeDef, values: any[]): boolean {\n let /** @type {?} */ changed = false;\n for (let /** @type {?} */ i = 0; i < values.length; i++) {\n if (checkAndUpdateElementValue(view, def, i, values[i])) 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: ViewData, def: NodeDef, bindingIdx: number, value: any) {\n if (!checkAndUpdateBinding(view, def, bindingIdx, value)) {\n return false;\n }\n const /** @type {?} */ binding = def.bindings[bindingIdx];\n const /** @type {?} */ elData = asElementData(view, def.index);\n const /** @type {?} */ renderNode = elData.renderElement;\n const /** @type {?} */ name = /** @type {?} */(( binding.name));\n switch (binding.flags & BindingFlags.Types) {\n case BindingFlags.TypeElementAttribute:\n setElementAttribute(view, binding, renderNode, binding.ns, name, value);\n break;\n case BindingFlags.TypeElementClass:\n setElementClass(view, renderNode, name, value);\n break;\n case BindingFlags.TypeElementStyle:\n setElementStyle(view, binding, renderNode, name, value);\n break;\n case BindingFlags.TypeProperty:\n const /** @type {?} */ bindView = (def.flags & NodeFlags.ComponentView &&\n binding.flags & BindingFlags.SyntheticHostProperty) ?\n elData.componentView :\n view;\n setElementProperty(bindView, binding, renderNode, 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(\n view: ViewData, binding: BindingDef, renderNode: any, ns: string | null, name: string,\n value: any) {\n const /** @type {?} */ securityContext = binding.securityContext;\n let /** @type {?} */ renderValue = securityContext ? view.root.sanitizer.sanitize(securityContext, value) : value;\n renderValue = renderValue != null ? renderValue.toString() : null;\n const /** @type {?} */ renderer = view.renderer;\n if (value != null) {\n renderer.setAttribute(renderNode, name, renderValue, ns);\n } else {\n renderer.removeAttribute(renderNode, name, ns);\n }\n}\n/**\n * @param {?} view\n * @param {?} renderNode\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nfunction setElementClass(view: ViewData, renderNode: any, name: string, value: boolean) {\n const /** @type {?} */ renderer = view.renderer;\n if (value) {\n renderer.addClass(renderNode, name);\n } else {\n renderer.removeClass(renderNode, name);\n }\n}\n/**\n * @param {?} view\n * @param {?} binding\n * @param {?} renderNode\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nfunction setElementStyle(\n view: ViewData, binding: BindingDef, renderNode: any, name: string, value: any) {\n let /** @type {?} */ renderValue: string|null =\n view.root.sanitizer.sanitize(SecurityContext.STYLE, /** @type {?} */(( value as{} | string)));\n if (renderValue != null) {\n renderValue = renderValue.toString();\n const /** @type {?} */ unit = binding.suffix;\n if (unit != null) {\n renderValue = renderValue + unit;\n }\n } else {\n renderValue = null;\n }\n const /** @type {?} */ renderer = view.renderer;\n if (renderValue != null) {\n renderer.setStyle(renderNode, name, renderValue);\n } else {\n renderer.removeStyle(renderNode, name);\n }\n}\n/**\n * @param {?} view\n * @param {?} binding\n * @param {?} renderNode\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nfunction setElementProperty(\n view: ViewData, binding: BindingDef, renderNode: any, name: string, value: any) {\n const /** @type {?} */ securityContext = binding.securityContext;\n let /** @type {?} */ renderValue = securityContext ? view.root.sanitizer.sanitize(securityContext, value) : value;\n view.renderer.setProperty(renderNode, name, renderValue);\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\nimport {WrappedValue, devModeEqual} from '../change_detection/change_detection';\nimport {ViewEncapsulation} from '../metadata/view';\nimport {RendererType2} from '../render/api';\nimport {looseIdentical, stringify} from '../util';\n\nimport {expressionChangedAfterItHasBeenCheckedError} from './errors';\nimport {BindingDef, BindingFlags, ElementData, NodeDef, NodeFlags, QueryValueType, Services, ViewData, ViewDefinition, ViewDefinitionFactory, ViewFlags, ViewState, asElementData, asTextData} from './types';\n\nexport const /** @type {?} */ NOOP: any = () => {};\n\nconst /** @type {?} */ _tokenKeyCache = new Map<any, string>();\n/**\n * @param {?} token\n * @return {?}\n */\nexport function tokenKey(token: any): string {\n let /** @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 */\nexport function unwrapValue(view: ViewData, nodeIdx: number, bindingIdx: number, value: any): any {\n if (value instanceof WrappedValue) {\n value = value.wrapped;\n let /** @type {?} */ globalBindingIdx = view.def.nodes[nodeIdx].bindingIndex + bindingIdx;\n let /** @type {?} */ oldValue = view.oldValues[globalBindingIdx];\n if (oldValue instanceof WrappedValue) {\n oldValue = oldValue.wrapped;\n }\n view.oldValues[globalBindingIdx] = new WrappedValue(oldValue);\n }\n return value;\n}\n\nconst /** @type {?} */ UNDEFINED_RENDERER_TYPE_ID = '$$undefined';\nconst /** @type {?} */ EMPTY_RENDERER_TYPE_ID = '$$empty';\n/**\n * @param {?} values\n * @return {?}\n */\nexport function createRendererType2(values: {\n styles: (string | any[])[],\n encapsulation: ViewEncapsulation,\n data: {[kind: string]: any[]}\n}): RendererType2 {\n return {\n id: UNDEFINED_RENDERER_TYPE_ID,\n styles: values.styles,\n encapsulation: values.encapsulation,\n data: values.data\n };\n}\n\nlet /** @type {?} */ _renderCompCount = 0;\n/**\n * @param {?=} type\n * @return {?}\n */\nexport function resolveRendererType2(type?: RendererType2 | null): RendererType2|null {\n if (type && type.id === UNDEFINED_RENDERER_TYPE_ID) {\n // first time we see this RendererType2. Initialize it...\n const /** @type {?} */ isFilled =\n ((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 } 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 */\nexport function checkBinding(\n view: ViewData, def: NodeDef, bindingIdx: number, value: any): boolean {\n const /** @type {?} */ oldValues = view.oldValues;\n if ((view.state & ViewState.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 */\nexport function checkAndUpdateBinding(\n view: ViewData, def: NodeDef, bindingIdx: number, value: any): boolean {\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 */\nexport function checkBindingNoChanges(\n view: ViewData, def: NodeDef, bindingIdx: number, value: any) {\n const /** @type {?} */ oldValue = view.oldValues[def.bindingIndex + bindingIdx];\n if ((view.state & ViewState.BeforeFirstCheck) || !devModeEqual(oldValue, value)) {\n throw expressionChangedAfterItHasBeenCheckedError(\n Services.createDebugContext(view, def.index), oldValue, value,\n (view.state & ViewState.BeforeFirstCheck) !== 0);\n }\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function markParentViewsForCheck(view: ViewData) {\n let /** @type {?} */ currView: ViewData|null = view;\n while (currView) {\n if (currView.def.flags & ViewFlags.OnPush) {\n currView.state |= ViewState.ChecksEnabled;\n }\n currView = currView.viewContainerParent || currView.parent;\n }\n}\n/**\n * @param {?} view\n * @param {?} nodeIndex\n * @param {?} eventName\n * @param {?} event\n * @return {?}\n */\nexport function dispatchEvent(\n view: ViewData, nodeIndex: number, eventName: string, event: any): boolean {\n const /** @type {?} */ nodeDef = view.def.nodes[nodeIndex];\n const /** @type {?} */ startView =\n nodeDef.flags & NodeFlags.ComponentView ? asElementData(view, nodeIndex).componentView : view;\n markParentViewsForCheck(startView);\n return Services.handleEvent(view, nodeIndex, eventName, event);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function declaredViewContainer(view: ViewData): ElementData|null {\n if (view.parent) {\n const /** @type {?} */ parentView = view.parent;\n return asElementData(parentView, /** @type {?} */(( view.parentNodeDef)).index);\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 */\nexport function viewParentEl(view: ViewData): NodeDef|null {\n const /** @type {?} */ parentView = view.parent;\n if (parentView) {\n return /** @type {?} */(( view.parentNodeDef)).parent;\n } else {\n return null;\n }\n}\n/**\n * @param {?} view\n * @param {?} def\n * @return {?}\n */\nexport function renderNode(view: ViewData, def: NodeDef): any {\n switch (def.flags & NodeFlags.Types) {\n case NodeFlags.TypeElement:\n return asElementData(view, def.index).renderElement;\n case NodeFlags.TypeText:\n return asTextData(view, def.index).renderText;\n }\n}\n/**\n * @param {?} target\n * @param {?} name\n * @return {?}\n */\nexport function elementEventFullName(target: string | null, name: string): string {\n return target ? `${target}:${name}` : name;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function isComponentView(view: ViewData): boolean {\n return !!view.parent && !!( /** @type {?} */((view.parentNodeDef)).flags & NodeFlags.Component);\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function isEmbeddedView(view: ViewData): boolean {\n return !!view.parent && !( /** @type {?} */((view.parentNodeDef)).flags & NodeFlags.Component);\n}\n/**\n * @param {?} queryId\n * @return {?}\n */\nexport function filterQueryId(queryId: number): number {\n return 1 << (queryId % 32);\n}\n/**\n * @param {?} matchedQueriesDsl\n * @return {?}\n */\nexport function splitMatchedQueriesDsl(\n matchedQueriesDsl: [string | number, QueryValueType][] | null): {\n matchedQueries: {[queryId: string]: QueryValueType},\n references: {[refId: string]: QueryValueType},\n matchedQueryIds: number\n} {\n const /** @type {?} */ matchedQueries: {[queryId: string]: QueryValueType} = {};\n let /** @type {?} */ matchedQueryIds = 0;\n const /** @type {?} */ references: {[refId: string]: QueryValueType} = {};\n if (matchedQueriesDsl) {\n matchedQueriesDsl.forEach(([queryId, valueType]) => {\n if (typeof queryId === 'number') {\n matchedQueries[queryId] = valueType;\n matchedQueryIds |= filterQueryId(queryId);\n } else {\n references[queryId] = valueType;\n }\n });\n }\n return {matchedQueries, references, matchedQueryIds};\n}\n/**\n * @param {?} view\n * @param {?} renderHost\n * @param {?} def\n * @return {?}\n */\nexport function getParentRenderElement(view: ViewData, renderHost: any, def: NodeDef): any {\n let /** @type {?} */ renderParent = def.renderParent;\n if (renderParent) {\n if ((renderParent.flags & NodeFlags.TypeElement) === 0 ||\n (renderParent.flags & NodeFlags.ComponentView) === 0 ||\n ( /** @type {?} */((renderParent.element)).componentRendererType && /** @type {?} */(( /** @type {?} */((\n renderParent.element)).componentRendererType)).encapsulation ===\n 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)).index).renderElement;\n }\n } else {\n return renderHost;\n }\n}\n\nconst /** @type {?} */ VIEW_DEFINITION_CACHE = new WeakMap<any, ViewDefinition>();\n/**\n * @param {?} factory\n * @return {?}\n */\nexport function resolveViewDefinition(factory: ViewDefinitionFactory): ViewDefinition {\n let /** @type {?} */ value: ViewDefinition = /** @type {?} */(( VIEW_DEFINITION_CACHE.get(factory)));\n if (!value) {\n value = factory(() => NOOP);\n value.factory = factory;\n VIEW_DEFINITION_CACHE.set(factory, value);\n }\n return value;\n}\n/**\n * @param {?} view\n * @return {?}\n */\nexport function rootRenderNodes(view: ViewData): any[] {\n const /** @type {?} */ renderNodes: any[] = [];\n visitRootRenderNodes(view, RenderNodeAction.Collect, undefined, undefined, renderNodes);\n return renderNodes;\n}\n\nexport const enum RenderNodeAction {Collect, AppendChild, InsertBefore, RemoveChild}\n/**\n * @param {?} view\n * @param {?} action\n * @param {?} parentNode\n * @param {?} nextSibling\n * @param {?=} target\n * @return {?}\n */\nexport function visitRootRenderNodes(\n view: ViewData, action: RenderNodeAction, parentNode: any, nextSibling: any, target?: any[]) {\n // We need to re-compute the parent node in case the nodes have been moved around manually\n if (action === RenderNodeAction.RemoveChild) {\n parentNode = view.renderer.parentNode(renderNode(view, /** @type {?} */(( view.def.lastRenderRootNode))));\n }\n visitSiblingRenderNodes(\n 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 */\nexport function visitSiblingRenderNodes(\n view: ViewData, action: RenderNodeAction, startIndex: number, endIndex: number, parentNode: any,\n nextSibling: any, target?: any[]) {\n for (let /** @type {?} */ i = startIndex; i <= endIndex; i++) {\n const /** @type {?} */ nodeDef = view.def.nodes[i];\n if (nodeDef.flags & (NodeFlags.TypeElement | NodeFlags.TypeText | NodeFlags.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 */\nexport function visitProjectedRenderNodes(\n view: ViewData, ngContentIndex: number, action: RenderNodeAction, parentNode: any,\n nextSibling: any, target?: any[]) {\n let /** @type {?} */ compView: ViewData|null = view;\n while (compView && !isComponentView(compView)) {\n compView = compView.parent;\n }\n const /** @type {?} */ hostView = /** @type {?} */(( compView)).parent;\n const /** @type {?} */ hostElDef = viewParentEl( /** @type {?} */((compView)));\n const /** @type {?} */ startIndex = /** @type {?} */(( hostElDef)).index + 1;\n const /** @type {?} */ endIndex = /** @type {?} */(( hostElDef)).index + /** @type {?} */(( hostElDef)).childCount;\n for (let /** @type {?} */ i = startIndex; i <= endIndex; i++) {\n const /** @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 const /** @type {?} */ projectedNodes = view.root.projectableNodes[ngContentIndex];\n if (projectedNodes) {\n for (let /** @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(\n view: ViewData, nodeDef: NodeDef, action: RenderNodeAction, parentNode: any, nextSibling: any,\n target?: any[]) {\n if (nodeDef.flags & NodeFlags.TypeNgContent) {\n visitProjectedRenderNodes(\n view, /** @type {?} */(( nodeDef.ngContent)).index, action, parentNode, nextSibling, target);\n } else {\n const /** @type {?} */ rn = renderNode(view, nodeDef);\n if (action === RenderNodeAction.RemoveChild && (nodeDef.flags & NodeFlags.ComponentView) &&\n (nodeDef.bindingFlags & BindingFlags.CatSyntheticProperty)) {\n // Note: we might need to do both actions.\n if (nodeDef.bindingFlags & (BindingFlags.SyntheticProperty)) {\n execRenderNodeAction(view, rn, action, parentNode, nextSibling, target);\n }\n if (nodeDef.bindingFlags & (BindingFlags.SyntheticHostProperty)) {\n const /** @type {?} */ compView = asElementData(view, nodeDef.index).componentView;\n execRenderNodeAction(compView, rn, action, parentNode, nextSibling, target);\n }\n } else {\n execRenderNodeAction(view, rn, action, parentNode, nextSibling, target);\n }\n if (nodeDef.flags & NodeFlags.EmbeddedViews) {\n const /** @type {?} */ embeddedViews = /** @type {?} */(( asElementData(view, nodeDef.index).viewContainer))._embeddedViews;\n for (let /** @type {?} */ k = 0; k < embeddedViews.length; k++) {\n visitRootRenderNodes(embeddedViews[k], action, parentNode, nextSibling, target);\n }\n }\n if (nodeDef.flags & NodeFlags.TypeElement && ! /** @type {?} */((nodeDef.element)).name) {\n visitSiblingRenderNodes(\n view, action, nodeDef.index + 1, nodeDef.index + nodeDef.childCount, parentNode,\n 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(\n view: ViewData, renderNode: any, action: RenderNodeAction, parentNode: any, nextSibling: any,\n target?: any[]) {\n const /** @type {?} */ renderer = view.renderer;\n switch (action) {\n case RenderNodeAction.AppendChild:\n renderer.appendChild(parentNode, renderNode);\n break;\n case RenderNodeAction.InsertBefore:\n renderer.insertBefore(parentNode, renderNode, nextSibling);\n break;\n case RenderNodeAction.RemoveChild:\n renderer.removeChild(parentNode, renderNode);\n break;\n case RenderNodeAction.Collect: /** @type {?} */((\n target)).push(renderNode);\n break;\n }\n}\n\nconst /** @type {?} */ NS_PREFIX_RE = /^:([^:]+):(.+)$/;\n/**\n * @param {?} name\n * @return {?}\n */\nexport function splitNamespace(name: string): string[] {\n if (name[0] === ':') {\n const /** @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 */\nexport function calcBindingFlags(bindings: BindingDef[]): BindingFlags {\n let /** @type {?} */ flags = 0;\n for (let /** @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 */\nexport function interpolate(valueCount: number, constAndInterp: string[]): string {\n let /** @type {?} */ result = '';\n for (let /** @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 */\nexport function inlineInterpolate(\n valueCount: number, c0: string, a1: any, c1: string, a2?: any, c2?: string, a3?: any,\n c3?: string, a4?: any, c4?: string, a5?: any, c5?: string, a6?: any, c6?: string, a7?: any,\n c7?: string, a8?: any, c8?: string, a9?: any, c9?: string): string {\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: any): string {\n return v != null ? v.toString() : '';\n}\n\nexport const /** @type {?} */ EMPTY_ARRAY: any[] = [];\nexport const /** @type {?} */ EMPTY_MAP: {[key: string]: any} = {};\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\nimport {ERROR_DEBUG_CONTEXT, ERROR_LOGGER, getDebugContext} from '../errors';\nimport {DebugContext, ViewState} from './types';\n/**\n * @param {?} context\n * @param {?} oldValue\n * @param {?} currValue\n * @param {?} isFirstCheck\n * @return {?}\n */\nexport function expressionChangedAfterItHasBeenCheckedError(\n context: DebugContext, oldValue: any, currValue: any, isFirstCheck: boolean): Error {\n let /** @type {?} */ msg =\n `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 */\nexport function viewWrappedDebugError(err: any, context: DebugContext): Error {\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 */\nexport function viewDebugError(msg: string, context: DebugContext): Error {\n const /** @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: Error, context: DebugContext) {\n ( /** @type {?} */((err as any)))[ERROR_DEBUG_CONTEXT] = context;\n ( /** @type {?} */((err as any)))[ERROR_LOGGER] = context.logError.bind(context);\n}\n/**\n * @param {?} err\n * @return {?}\n */\nexport function isViewDebugError(err: Error): boolean {\n return !!getDebugContext(err);\n}\n/**\n * @param {?} action\n * @return {?}\n */\nexport function viewDestroyedError(action: string): Error {\n return new Error(`ViewDestroyedError: Attempt to use a destroyed view: ${action}`);\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\nimport {Injector} from '../di';\nimport {ErrorHandler} from '../error_handler';\nimport {NgModuleRef} from '../linker/ng_module_factory';\nimport {QueryList} from '../linker/query_list';\nimport {TemplateRef} from '../linker/template_ref';\nimport {ViewContainerRef} from '../linker/view_container_ref';\nimport {Renderer2, RendererFactory2, RendererType2} from '../render/api';\nimport {Sanitizer, SecurityContext} from '../security';\n\n// -------------------------------------\n// Defs\n// -------------------------------------\n\nexport interface ViewDefinition {\n factory: ViewDefinitionFactory|null;\n flags: ViewFlags;\n updateDirectives: ViewUpdateFn;\n updateRenderer: ViewUpdateFn;\n handleEvent: ViewHandleEventFn;\n /**\n * Order: Depth first.\n * Especially providers are before elements / anchors.\n */\n nodes: NodeDef[];\n /** aggregated NodeFlags for all nodes **/\n nodeFlags: NodeFlags;\n rootNodeFlags: NodeFlags;\n lastRenderRootNode: NodeDef|null;\n bindingCount: number;\n outputCount: number;\n /**\n * Binary or of all query ids that are matched by one of the nodes.\n * This includes query ids from templates as well.\n * Used as a bloom filter.\n */\n nodeMatchedQueries: number;\n}\n\n/**\n * Factory for ViewDefinitions.\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 */\nexport interface ViewDefinitionFactory { (logger: NodeLogger): ViewDefinition; }\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 */\nexport interface NodeLogger { (): () => void; }\n\nexport interface ViewUpdateFn { (check: NodeCheckFn, view: ViewData): void; }\n\n// helper functions to create an overloaded function type.\nexport interface NodeCheckFn {\n (view: ViewData, nodeIndex: number, argStyle: ArgumentType.Dynamic, values: any[]): any;\n\n (view: ViewData, nodeIndex: number, argStyle: ArgumentType.Inline, v0?: any, v1?: any, v2?: any,\n v3?: any, v4?: any, v5?: any, v6?: any, v7?: any, v8?: any, v9?: any): any;\n}\n\nexport const enum ArgumentType {Inline, Dynamic}\n\nexport interface ViewHandleEventFn {\n (view: ViewData, nodeIndex: number, eventName: string, event: any): boolean;\n}\n\n/**\n * Bitmask for ViewDefintion.flags.\n */\nexport const enum ViewFlags {\n None = 0,\n OnPush = 1 << 1,\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 */\nexport interface NodeDef {\n flags: NodeFlags;\n index: number;\n parent: NodeDef|null;\n renderParent: NodeDef|null;\n /** this is checked against NgContentDef.index to find matched nodes */\n ngContentIndex: number;\n /** number of transitive children */\n childCount: number;\n /** aggregated NodeFlags for all transitive children (does not include self) **/\n childFlags: NodeFlags;\n /** aggregated NodeFlags for all direct children (does not include self) **/\n directChildFlags: NodeFlags;\n\n bindingIndex: number;\n bindings: BindingDef[];\n bindingFlags: BindingFlags;\n outputIndex: number;\n outputs: OutputDef[];\n /**\n * references that the user placed on the element\n */\n references: {[refId: string]: QueryValueType};\n /**\n * ids and value types of all queries that are matched by this node.\n */\n matchedQueries: {[queryId: number]: QueryValueType};\n /** Binary or of all matched query ids of this node. */\n matchedQueryIds: number;\n /**\n * Binary or of all query ids that are matched by one of the children.\n * This includes query ids from templates as well.\n * Used as a bloom filter.\n */\n childMatchedQueries: number;\n element: ElementDef|null;\n provider: ProviderDef|null;\n text: TextDef|null;\n query: QueryDef|null;\n ngContent: NgContentDef|null;\n}\n\n/**\n * Bitmask for NodeDef.flags.\n * Naming convention:\n * - `Type...`: flags that are mutually exclusive\n * - `Cat...`: union of multiple `Type...` (short for category).\n */\nexport const enum NodeFlags {\n None = 0,\n TypeElement = 1 << 0,\n TypeText = 1 << 1,\n CatRenderNode = TypeElement | TypeText,\n TypeNgContent = 1 << 2,\n TypePipe = 1 << 3,\n TypePureArray = 1 << 4,\n TypePureObject = 1 << 5,\n TypePurePipe = 1 << 6,\n CatPureExpression = TypePureArray | TypePureObject | TypePurePipe,\n TypeValueProvider = 1 << 7,\n TypeClassProvider = 1 << 8,\n TypeFactoryProvider = 1 << 9,\n TypeUseExistingProvider = 1 << 10,\n LazyProvider = 1 << 11,\n PrivateProvider = 1 << 12,\n TypeDirective = 1 << 13,\n Component = 1 << 14,\n CatProvider = TypeValueProvider | TypeClassProvider | TypeFactoryProvider |\n TypeUseExistingProvider | TypeDirective,\n OnInit = 1 << 15,\n OnDestroy = 1 << 16,\n DoCheck = 1 << 17,\n OnChanges = 1 << 18,\n AfterContentInit = 1 << 19,\n AfterContentChecked = 1 << 20,\n AfterViewInit = 1 << 21,\n AfterViewChecked = 1 << 22,\n EmbeddedViews = 1 << 23,\n ComponentView = 1 << 24,\n TypeContentQuery = 1 << 25,\n TypeViewQuery = 1 << 26,\n StaticQuery = 1 << 27,\n DynamicQuery = 1 << 28,\n CatQuery = TypeContentQuery | TypeViewQuery,\n\n // mutually exclusive values...\n Types = CatRenderNode | TypeNgContent | TypePipe | CatPureExpression | CatProvider | CatQuery\n}\n\nexport interface BindingDef {\n flags: BindingFlags;\n ns: string|null;\n name: string|null;\n nonMinifiedName: string|null;\n securityContext: SecurityContext|null;\n suffix: string|null;\n}\n\nexport const enum BindingFlags {\n TypeElementAttribute = 1 << 0,\n TypeElementClass = 1 << 1,\n TypeElementStyle = 1 << 2,\n TypeProperty = 1 << 3,\n SyntheticProperty = 1 << 4,\n SyntheticHostProperty = 1 << 5,\n CatSyntheticProperty = SyntheticProperty | SyntheticHostProperty,\n\n // mutually exclusive values...\n Types = TypeElementAttribute | TypeElementClass | TypeElementStyle | TypeProperty\n}\n\nexport interface OutputDef {\n type: OutputType;\n target: 'window'|'document'|'body'|'component'|null;\n eventName: string;\n propName: string|null;\n}\n\nexport const enum OutputType {ElementOutput, DirectiveOutput}\n\nexport const enum QueryValueType {\n ElementRef,\n RenderElement,\n TemplateRef,\n ViewContainerRef,\n Provider\n}\n\nexport interface ElementDef {\n name: string|null;\n ns: string|null;\n /** ns, name, value */\n attrs: [string, string, string][]|null;\n template: ViewDefinition|null;\n componentProvider: NodeDef|null;\n componentRendererType: RendererType2|null;\n // closure to allow recursive components\n componentView: ViewDefinitionFactory|null;\n /**\n * visible public providers for DI in the view,\n * as see from this element. This does not include private providers.\n */\n publicProviders: {[tokenKey: string]: NodeDef}|null;\n /**\n * same as visiblePublicProviders, but also includes private providers\n * that are located on this element.\n */\n allProviders: {[tokenKey: string]: NodeDef}|null;\n handleEvent: ElementHandleEventFn|null;\n}\n\nexport interface ElementHandleEventFn { (view: ViewData, eventName: string, event: any): boolean; }\n\nexport interface ProviderDef {\n token: any;\n tokenKey: string;\n value: any;\n deps: DepDef[];\n}\n\nexport interface DepDef {\n flags: DepFlags;\n token: any;\n tokenKey: string;\n}\n\n/**\n * Bitmask for DI flags\n */\nexport const enum DepFlags {\n None = 0,\n SkipSelf = 1 << 0,\n Optional = 1 << 1,\n Value = 2 << 2,\n}\n\nexport interface TextDef { prefix: string; }\n\nexport interface QueryDef {\n id: number;\n // variant of the id that can be used to check against NodeDef.matchedQueryIds, ...\n filterId: number;\n bindings: QueryBindingDef[];\n}\n\nexport interface QueryBindingDef {\n propName: string;\n bindingType: QueryBindingType;\n}\n\nexport const enum QueryBindingType {First, All}\n\nexport interface NgContentDef {\n /**\n * this index is checked against NodeDef.ngContentIndex to find the nodes\n * that are matched by this ng-content.\n * Note that a NodeDef with an ng-content can be reprojected, i.e.\n * have a ngContentIndex on its own.\n */\n index: number;\n}\n\n// -------------------------------------\n// Data\n// -------------------------------------\n\n/**\n * View instance data.\n * Attention: Adding fields to this is performance sensitive!\n */\nexport interface ViewData {\n def: ViewDefinition;\n root: RootData;\n renderer: Renderer2;\n // index of component provider / anchor.\n parentNodeDef: NodeDef|null;\n parent: ViewData|null;\n viewContainerParent: ViewData|null;\n component: any;\n context: any;\n // Attention: Never loop over this, as this will\n // create a polymorphic usage site.\n // Instead: Always loop over ViewDefinition.nodes,\n // and call the right accessor (e.g. `elementData`) based on\n // the NodeType.\n nodes: {[key: number]: NodeData};\n state: ViewState;\n oldValues: any[];\n disposables: DisposableFn[]|null;\n}\n\n/**\n * Bitmask of states\n */\nexport const enum ViewState {\n BeforeFirstCheck = 1 << 0,\n FirstCheck = 1 << 1,\n Attached = 1 << 2,\n ChecksEnabled = 1 << 3,\n Destroyed = 1 << 4,\n\n CatDetectChanges = Attached | ChecksEnabled,\n CatInit = BeforeFirstCheck | CatDetectChanges\n}\n\nexport interface DisposableFn { (): void; }\n/**\n * Node instance data.\n * \n * We have a separate type per NodeType to save memory\n * (TextData | ElementData | ProviderData | PureExpressionData | QueryList<any>)\n * \n * To keep our code monomorphic,\n * we prohibit using `NodeData` directly but enforce the use of accessors (`asElementData`, ...).\n * This way, no usage site can get a `NodeData` from view.nodes and then use it for different\n * purposes.\n */\nexport class NodeData {\nprivate __brand: any; }\n\nfunction NodeData_tsickle_Closure_declarations() {\n/** @type {?} */\nNodeData.prototype.__brand;\n}\n\n\n/**\n * Data for an instantiated NodeType.Text.\n *\n * Attention: Adding fields to this is performance sensitive!\n */\nexport interface TextData { renderText: any; }\n/**\n * Accessor for view.nodes, enforcing that every usage site stays monomorphic.\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nexport function asTextData(view: ViewData, index: number): TextData {\n return /** @type {?} */(( <any>view.nodes[index]));\n}\n\n/**\n * Data for an instantiated NodeType.Element.\n *\n * Attention: Adding fields to this is performance sensitive!\n */\nexport interface ElementData {\n renderElement: any;\n componentView: ViewData;\n viewContainer: ViewContainerData|null;\n template: TemplateData;\n}\n\nexport interface ViewContainerData extends ViewContainerRef { _embeddedViews: ViewData[]; }\n\nexport interface TemplateData extends TemplateRef<any> {\n // views that have been created from the template\n // of this element,\n // but inserted into the embeddedViews of another element.\n // By default, this is undefined.\n _projectedViews: ViewData[];\n}\n/**\n * Accessor for view.nodes, enforcing that every usage site stays monomorphic.\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nexport function asElementData(view: ViewData, index: number): ElementData {\n return /** @type {?} */(( <any>view.nodes[index]));\n}\n\n/**\n * Data for an instantiated NodeType.Provider.\n *\n * Attention: Adding fields to this is performance sensitive!\n */\nexport interface ProviderData { instance: any; }\n/**\n * Accessor for view.nodes, enforcing that every usage site stays monomorphic.\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nexport function asProviderData(view: ViewData, index: number): ProviderData {\n return /** @type {?} */(( <any>view.nodes[index]));\n}\n\n/**\n * Data for an instantiated NodeType.PureExpression.\n *\n * Attention: Adding fields to this is performance sensitive!\n */\nexport interface PureExpressionData { value: any; }\n/**\n * Accessor for view.nodes, enforcing that every usage site stays monomorphic.\n * @param {?} view\n * @param {?} index\n * @return {?}\n */\nexport function asPureExpressionData(view: ViewData, index: number): PureExpressionData {\n return /** @type {?} */(( <any>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 */\nexport function asQueryList(view: ViewData, index: number): QueryList<any> {\n return /** @type {?} */(( <any>view.nodes[index]));\n}\n\nexport interface RootData {\n injector: Injector;\n ngModule: NgModuleRef<any>;\n projectableNodes: any[][];\n selectorOrNode: any;\n renderer: Renderer2;\n rendererFactory: RendererFactory2;\n errorHandler: ErrorHandler;\n sanitizer: Sanitizer;\n}\n/**\n * @abstract\n */\nexport abstract class DebugContext {\n/**\n * @abstract\n * @return {?}\n */\nview() {}\n/**\n * @abstract\n * @return {?}\n */\nnodeIndex() {}\n/**\n * @abstract\n * @return {?}\n */\ninjector() {}\n/**\n * @abstract\n * @return {?}\n */\ncomponent() {}\n/**\n * @abstract\n * @return {?}\n */\nproviderTokens() {}\n/**\n * @abstract\n * @return {?}\n */\nreferences() {}\n/**\n * @abstract\n * @return {?}\n */\ncontext() {}\n/**\n * @abstract\n * @return {?}\n */\ncomponentRenderElement() {}\n/**\n * @abstract\n * @return {?}\n */\nrenderNode() {}\n/**\n * @abstract\n * @param {?} console\n * @param {...?} values\n * @return {?}\n */\nlogError(console: Console, ...values: any[]) {}\n}\n\n// -------------------------------------\n// Other\n// -------------------------------------\n\nexport const enum CheckType {CheckAndUpdate, CheckNoChanges}\n\nexport interface Services {\n setCurrentNode(view: ViewData, nodeIndex: number): void;\n createRootView(\n injector: Injector, projectableNodes: any[][], rootSelectorOrNode: string|any,\n def: ViewDefinition, ngModule: NgModuleRef<any>, context?: any): ViewData;\n createEmbeddedView(parent: ViewData, anchorDef: NodeDef, context?: any): ViewData;\n checkAndUpdateView(view: ViewData): void;\n checkNoChangesView(view: ViewData): void;\n destroyView(view: ViewData): void;\n resolveDep(\n view: ViewData, elDef: NodeDef|null, allowPrivateServices: boolean, depDef: DepDef,\n notFoundValue?: any): any;\n createDebugContext(view: ViewData, nodeIndex: number): DebugContext;\n handleEvent: ViewHandleEventFn;\n updateDirectives: (view: ViewData, checkType: CheckType) => void;\n updateRenderer: (view: ViewData, checkType: CheckType) => void;\n dirtyParentQueries: (view: ViewData) => void;\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 */\nexport const /** @type {?} */ Services: Services = {\n setCurrentNode: /** @type {?} */(( undefined)),\n createRootView: /** @type {?} */(( undefined)),\n createEmbeddedView: /** @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","\nexport type SecurityContext = number;\nexport let SecurityContext: any = {};\nSecurityContext.NONE = 0;\nSecurityContext.HTML = 1;\nSecurityContext.STYLE = 2;\nSecurityContext.SCRIPT = 3;\nSecurityContext.URL = 4;\nSecurityContext.RESOURCE_URL = 5;\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/**\n * Sanitizer is used by the views to sanitize potentially dangerous values.\n * \n * \\@stable\n * @abstract\n */\nexport abstract class Sanitizer {\n/**\n * @abstract\n * @param {?} context\n * @param {?} value\n * @return {?}\n */\nsanitize(context: SecurityContext, value: {}|string|null) {}\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\nimport {InjectionToken} from '../di/injection_token';\n/**\n * \\@experimental i18n support is experimental.\n */\nexport const LOCALE_ID = new InjectionToken<string>('LocaleId');\n/**\n * \\@experimental i18n support is experimental.\n */\nexport const TRANSLATIONS = new InjectionToken<string>('Translations');\n/**\n * \\@experimental i18n support is experimental.\n */\nexport const TRANSLATIONS_FORMAT = new InjectionToken<string>('TranslationsFormat');\nexport type MissingTranslationStrategy = number;\nexport let MissingTranslationStrategy: any = {};\nMissingTranslationStrategy.Error = 0;\nMissingTranslationStrategy.Warning = 1;\nMissingTranslationStrategy.Ignore = 2;\nMissingTranslationStrategy[MissingTranslationStrategy.Error] = \"Error\";\nMissingTranslationStrategy[MissingTranslationStrategy.Warning] = \"Warning\";\nMissingTranslationStrategy[MissingTranslationStrategy.Ignore] = \"Ignore\";\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\nimport {PlatformRef, PlatformRef_, createPlatformFactory} from './application_ref';\nimport {PLATFORM_ID} from './application_tokens';\nimport {Console} from './console';\nimport {Provider} from './di';\nimport {Reflector, reflector} from './reflection/reflection';\nimport {ReflectorReader} from './reflection/reflector_reader';\nimport {TestabilityRegistry} from './testability/testability';\n/**\n * @return {?}\n */\nfunction _reflector(): Reflector {\n return reflector;\n}\n\nconst /** @type {?} */ _CORE_PLATFORM_PROVIDERS: Provider[] = [\n // Set a default platform name for platforms that don't set it explicitly.\n {provide: PLATFORM_ID, useValue: 'unknown'},\n PlatformRef_,\n {provide: PlatformRef, useExisting: PlatformRef_},\n {provide: Reflector, useFactory: _reflector, deps: []},\n {provide: ReflectorReader, useExisting: Reflector},\n TestabilityRegistry,\n Console,\n];\n/**\n * This platform has to be included in any other platform\n * \n * \\@experimental\n */\nexport const platformCore = createPlatformFactory(null, 'core', _CORE_PLATFORM_PROVIDERS);\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 * @module\n * @description\n * Change detection enables data binding in Angular.\n */\n\nexport {ChangeDetectionStrategy, ChangeDetectorRef, CollectionChangeRecord, DefaultIterableDiffer, IterableChangeRecord, IterableChanges, IterableDiffer, IterableDifferFactory, IterableDiffers, KeyValueChangeRecord, KeyValueChanges, KeyValueDiffer, KeyValueDifferFactory, KeyValueDiffers, NgIterable, PipeTransform, SimpleChange, SimpleChanges, TrackByFn, TrackByFunction, WrappedValue} from './change_detection/change_detection';\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\nimport {DefaultIterableDifferFactory} from './differs/default_iterable_differ';\nimport {DefaultKeyValueDifferFactory} from './differs/default_keyvalue_differ';\nimport {IterableDifferFactory, IterableDiffers} from './differs/iterable_differs';\nimport {KeyValueDifferFactory, KeyValueDiffers} from './differs/keyvalue_differs';\n\nexport {SimpleChanges} from '../metadata/lifecycle_hooks';\nexport {SimpleChange, ValueUnwrapper, WrappedValue, devModeEqual} from './change_detection_util';\nexport {ChangeDetectorRef} from './change_detector_ref';\nexport {ChangeDetectionStrategy, ChangeDetectorStatus, isDefaultChangeDetectionStrategy} from './constants';\nexport {DefaultIterableDifferFactory} from './differs/default_iterable_differ';\nexport {DefaultIterableDiffer} from './differs/default_iterable_differ';\nexport {DefaultKeyValueDifferFactory} from './differs/default_keyvalue_differ';\nexport {CollectionChangeRecord, IterableChangeRecord, IterableChanges, IterableDiffer, IterableDifferFactory, IterableDiffers, NgIterable, TrackByFn, TrackByFunction} from './differs/iterable_differs';\nexport {KeyValueChangeRecord, KeyValueChanges, KeyValueDiffer, KeyValueDifferFactory, KeyValueDiffers} from './differs/keyvalue_differs';\nexport {PipeTransform} from './pipe_transform';\n\n\n\n/**\n * Structural diffing for `Object`s and `Map`s.\n */\nconst /** @type {?} */ keyValDiff: KeyValueDifferFactory[] = [new DefaultKeyValueDifferFactory()];\n\n/**\n * Structural diffing for `Iterable` types such as `Array`s.\n */\nconst /** @type {?} */ iterableDiff: IterableDifferFactory[] = [new DefaultIterableDifferFactory()];\n\nexport const /** @type {?} */ defaultIterableDiffers = new IterableDiffers(iterableDiff);\n\nexport const /** @type {?} */ defaultKeyValueDiffers = new KeyValueDiffers(keyValDiff);\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\nimport {Optional, Provider, SkipSelf} from '../../di';\nimport {ChangeDetectorRef} from '../change_detector_ref';\n\n\n\n/**\n * A differ that tracks changes made to an object over time.\n *\n * @stable\n */\nexport interface KeyValueDiffer<K, V> {\n /**\n * Compute a difference between the previous state and the new `object` state.\n *\n * @param object containing the new value.\n * @returns an object describing the difference. The return value is only valid until the next\n * `diff()` invocation.\n */\n diff(object: Map<K, V>): KeyValueChanges<K, V>;\n\n /**\n * Compute a difference between the previous state and the new `object` state.\n *\n * @param object containing the new value.\n * @returns an object describing the difference. The return value is only valid until the next\n * `diff()` invocation.\n */\n diff(object: {[key: string]: V}): KeyValueChanges<string, V>;\n // TODO(TS2.1): diff<KP extends string>(this: KeyValueDiffer<KP, V>, object: Record<KP, V>):\n // KeyValueDiffer<KP, V>;\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 */\nexport interface KeyValueChanges<K, V> {\n /**\n * Iterate over all changes. `KeyValueChangeRecord` will contain information about changes\n * to each item.\n */\n forEachItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;\n\n /**\n * Iterate over changes in the order of original Map showing where the original items\n * have moved.\n */\n forEachPreviousItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;\n\n /**\n * Iterate over all keys for which values have changed.\n */\n forEachChangedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;\n\n /**\n * Iterate over all added items.\n */\n forEachAddedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;\n\n /**\n * Iterate over all removed items.\n */\n forEachRemovedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;\n}\n\n/**\n * Record representing the item change information.\n *\n * @stable\n */\nexport interface KeyValueChangeRecord<K, V> {\n /**\n * Current key in the Map.\n */\n readonly key: K;\n\n /**\n * Current value for the key or `null` if removed.\n */\n readonly currentValue: V|null;\n\n /**\n * Previous value for the key or `null` if added.\n */\n readonly previousValue: V|null;\n}\n\n/**\n * Provides a factory for {@link KeyValueDiffer}.\n *\n * @stable\n */\nexport interface KeyValueDifferFactory {\n /**\n * Test to see if the differ knows how to diff this kind of object.\n */\n supports(objects: any): boolean;\n\n /**\n * Create a `KeyValueDiffer`.\n */\n create<K, V>(): KeyValueDiffer<K, V>;\n\n /**\n * @deprecated v4.0.0 - ChangeDetectorRef is not used and is no longer a parameter\n */\n create<K, V>(_cdr?: ChangeDetectorRef): KeyValueDiffer<K, V>;\n}\n/**\n * A repository of different Map diffing strategies used by NgClass, NgStyle, and others.\n * \\@stable\n */\nexport class KeyValueDiffers {\n/**\n * @deprecated v4.0.0 - Should be private.\n */\nfactories: KeyValueDifferFactory[];\n/**\n * @param {?} factories\n */\nconstructor(factories: KeyValueDifferFactory[]) { this.factories = factories; }\n/**\n * @template S\n * @param {?} factories\n * @param {?=} parent\n * @return {?}\n */\nstatic create<S>(factories: KeyValueDifferFactory[], parent?: KeyValueDiffers): KeyValueDiffers {\n if (parent) {\n const /** @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 * @template S\n * @param {?} factories\n * @return {?}\n */\nstatic extend<S>(factories: KeyValueDifferFactory[]): Provider {\n return {\n provide: KeyValueDiffers,\n useFactory: (parent: KeyValueDiffers) => {\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 */\nfind(kv: any): KeyValueDifferFactory {\n const /** @type {?} */ factory = this.factories.find(f => f.supports(kv));\n if (factory) {\n return factory;\n }\n throw new Error(`Cannot find a differ supporting object '${kv}'`);\n }\n}\n\nfunction KeyValueDiffers_tsickle_Closure_declarations() {\n/**\n * @deprecated v4.0.0 - Should be private.\n * @type {?}\n */\nKeyValueDiffers.prototype.factories;\n}\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\nimport {Optional, Provider, SkipSelf} from '../../di';\nimport {ChangeDetectorRef} from '../change_detector_ref';\n\n/**\n * A type describing supported interable types.\n *\n * @stable\n */\nexport type NgIterable<T> = Array<T>| Iterable<T>;\n\n/**\n * A strategy for tracking changes over time to an iterable. Used by {@link NgFor} to\n * respond to changes in an iterable by effecting equivalent changes in the DOM.\n *\n * @stable\n */\nexport interface IterableDiffer<V> {\n /**\n * Compute a difference between the previous state and the new `object` state.\n *\n * @param object containing the new value.\n * @returns an object describing the difference. The return value is only valid until the next\n * `diff()` invocation.\n */\n diff(object: NgIterable<V>): IterableChanges<V>|null;\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 */\nexport interface IterableChanges<V> {\n /**\n * Iterate over all changes. `IterableChangeRecord` will contain information about changes\n * to each item.\n */\n forEachItem(fn: (record: IterableChangeRecord<V>) => void): void;\n\n /**\n * Iterate over a set of operations which when applied to the original `Iterable` will produce the\n * new `Iterable`.\n *\n * NOTE: These are not necessarily the actual operations which were applied to the original\n * `Iterable`, rather these are a set of computed operations which may not be the same as the\n * ones applied.\n *\n * @param record A change which needs to be applied\n * @param previousIndex The `IterableChangeRecord#previousIndex` of the `record` refers to the\n * original `Iterable` location, where as `previousIndex` refers to the transient location\n * of the item, after applying the operations up to this point.\n * @param currentIndex The `IterableChangeRecord#currentIndex` of the `record` refers to the\n * original `Iterable` location, where as `currentIndex` refers to the transient location\n * of the item, after applying the operations up to this point.\n */\n forEachOperation(\n fn: (record: IterableChangeRecord<V>, previousIndex: number, currentIndex: number) => void):\n void;\n\n /**\n * Iterate over changes in the order of original `Iterable` showing where the original items\n * have moved.\n */\n forEachPreviousItem(fn: (record: IterableChangeRecord<V>) => void): void;\n\n /** Iterate over all added items. */\n forEachAddedItem(fn: (record: IterableChangeRecord<V>) => void): void;\n\n /** Iterate over all moved items. */\n forEachMovedItem(fn: (record: IterableChangeRecord<V>) => void): void;\n\n /** Iterate over all removed items. */\n forEachRemovedItem(fn: (record: IterableChangeRecord<V>) => void): void;\n\n /** Iterate over all items which had their identity (as computed by the `trackByFn`) changed. */\n forEachIdentityChange(fn: (record: IterableChangeRecord<V>) => void): void;\n}\n\n/**\n * Record representing the item change information.\n *\n * @stable\n */\nexport interface IterableChangeRecord<V> {\n /** Current index of the item in `Iterable` or null if removed. */\n readonly currentIndex: number|null;\n\n /** Previous index of the item in `Iterable` or null if added. */\n readonly previousIndex: number|null;\n\n /** The item. */\n readonly item: V;\n\n /** Track by identity as computed by the `trackByFn`. */\n readonly trackById: any;\n}\n\n/**\n * @deprecated v4.0.0 - Use IterableChangeRecord instead.\n */\nexport interface CollectionChangeRecord<V> extends IterableChangeRecord<V> {}\n\n\n/**\n * Nolonger used.\n *\n * @deprecated v4.0.0 - Use TrackByFunction instead\n */\nexport interface TrackByFn { (index: number, item: any): any; }\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 */\nexport interface TrackByFunction<T> { (index: number, item: T): any; }\n\n/**\n * Provides a factory for {@link IterableDiffer}.\n *\n * @stable\n */\nexport interface IterableDifferFactory {\n supports(objects: any): boolean;\n create<V>(trackByFn?: TrackByFunction<V>): IterableDiffer<V>;\n\n /**\n * @deprecated v4.0.0 - ChangeDetectorRef is not used and is no longer a parameter\n */\n create<V>(_cdr?: ChangeDetectorRef|TrackByFunction<V>, trackByFn?: TrackByFunction<V>):\n IterableDiffer<V>;\n}\n/**\n * A repository of different iterable diffing strategies used by NgFor, NgClass, and others.\n * \\@stable\n */\nexport class IterableDiffers {\n/**\n * @deprecated v4.0.0 - Should be private\n */\nfactories: IterableDifferFactory[];\n/**\n * @param {?} factories\n */\nconstructor(factories: IterableDifferFactory[]) { this.factories = factories; }\n/**\n * @param {?} factories\n * @param {?=} parent\n * @return {?}\n */\nstatic create(factories: IterableDifferFactory[], parent?: IterableDiffers): IterableDiffers {\n if (parent != null) {\n const /** @type {?} */ copied = parent.factories.slice();\n factories = factories.concat(copied);\n return new IterableDiffers(factories);\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 * @param {?} factories\n * @return {?}\n */\nstatic extend(factories: IterableDifferFactory[]): Provider {\n return {\n provide: IterableDiffers,\n useFactory: (parent: IterableDiffers) => {\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 */\nfind(iterable: any): IterableDifferFactory {\n const /** @type {?} */ factory = this.factories.find(f => f.supports(iterable));\n if (factory != null) {\n return factory;\n } else {\n throw new Error(\n `Cannot find a differ supporting object '${iterable}' of type '${getTypeNameForDebugging(iterable)}'`);\n }\n }\n}\n\nfunction IterableDiffers_tsickle_Closure_declarations() {\n/**\n * @deprecated v4.0.0 - Should be private\n * @type {?}\n */\nIterableDiffers.prototype.factories;\n}\n\n/**\n * @param {?} type\n * @return {?}\n */\nexport function getTypeNameForDebugging(type: any): string {\n return type['name'] || typeof type;\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\nimport {looseIdentical, stringify} from '../../util';\nimport {isJsObject} from '../change_detection_util';\nimport {ChangeDetectorRef} from '../change_detector_ref';\nimport {KeyValueChangeRecord, KeyValueChanges, KeyValueDiffer, KeyValueDifferFactory} from './keyvalue_differs';\nexport class DefaultKeyValueDifferFactory<K, V> implements KeyValueDifferFactory {\nconstructor() {}\n/**\n * @param {?} obj\n * @return {?}\n */\nsupports(obj: any): boolean { return obj instanceof Map || isJsObject(obj); }\n\n create<K, V>(): DefaultKeyValueDiffer<K, V>;\n/**\n * @deprecated v4.0.0 - ChangeDetectorRef is not used and is no longer a parameter\n * @template K, V\n * @param {?=} cd\n * @return {?}\n */\ncreate<K, V>(cd?: ChangeDetectorRef): KeyValueDiffer<K, V> {\n return new DefaultKeyValueDiffer<K, V>();\n }\n}\nexport class DefaultKeyValueDiffer<K, V> implements KeyValueDiffer<K, V>, KeyValueChanges<K, V> {\nprivate _records = new Map<K, KeyValueChangeRecord_<K, V>>();\nprivate _mapHead: KeyValueChangeRecord_<K, V>|null = null;\nprivate _appendAfter: KeyValueChangeRecord_<K, V>|null = null;\nprivate _previousMapHead: KeyValueChangeRecord_<K, V>|null = null;\nprivate _changesHead: KeyValueChangeRecord_<K, V>|null = null;\nprivate _changesTail: KeyValueChangeRecord_<K, V>|null = null;\nprivate _additionsHead: KeyValueChangeRecord_<K, V>|null = null;\nprivate _additionsTail: KeyValueChangeRecord_<K, V>|null = null;\nprivate _removalsHead: KeyValueChangeRecord_<K, V>|null = null;\nprivate _removalsTail: KeyValueChangeRecord_<K, V>|null = null;\n/**\n * @return {?}\n */\nget isDirty(): boolean {\n return this._additionsHead !== null || this._changesHead !== null ||\n this._removalsHead !== null;\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachItem(fn: (r: KeyValueChangeRecord<K, V>) => void) {\n let /** @type {?} */ record: KeyValueChangeRecord_<K, V>|null;\n for (record = this._mapHead; record !== null; record = record._next) {\n fn(record);\n }\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachPreviousItem(fn: (r: KeyValueChangeRecord<K, V>) => void) {\n let /** @type {?} */ record: KeyValueChangeRecord_<K, V>|null;\n for (record = this._previousMapHead; record !== null; record = record._nextPrevious) {\n fn(record);\n }\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachChangedItem(fn: (r: KeyValueChangeRecord<K, V>) => void) {\n let /** @type {?} */ record: KeyValueChangeRecord_<K, V>|null;\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\n fn(record);\n }\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachAddedItem(fn: (r: KeyValueChangeRecord<K, V>) => void) {\n let /** @type {?} */ record: KeyValueChangeRecord_<K, V>|null;\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n fn(record);\n }\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachRemovedItem(fn: (r: KeyValueChangeRecord<K, V>) => void) {\n let /** @type {?} */ record: KeyValueChangeRecord_<K, V>|null;\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\n fn(record);\n }\n }\n/**\n * @param {?=} map\n * @return {?}\n */\ndiff(map?: Map<any, any>|{[k: string]: any}|null): any {\n if (!map) {\n map = new Map();\n } else if (!(map instanceof Map || isJsObject(map))) {\n throw new Error(\n `Error trying to diff '${stringify(map)}'. Only maps and objects are allowed`);\n }\n\n return this.check(map) ? this : null;\n }\n/**\n * @return {?}\n */\nonDestroy() {}\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 */\ncheck(map: Map<any, any>|{[k: string]: any}): boolean {\n this._reset();\n\n let /** @type {?} */ insertBefore = this._mapHead;\n this._appendAfter = null;\n\n this._forEach(map, (value: any, key: any) => {\n if (insertBefore && insertBefore.key === key) {\n this._maybeAddToChanges(insertBefore, value);\n this._appendAfter = insertBefore;\n insertBefore = insertBefore._next;\n } else {\n const /** @type {?} */ record = this._getOrCreateRecordForKey(key, value);\n insertBefore = this._insertBeforeOrAppend(insertBefore, record);\n }\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\n this._removalsHead = insertBefore;\n\n for (let /** @type {?} */ record: KeyValueChangeRecord_<K, V>|null = insertBefore; record !== null;\n 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\n // Make sure tails have no next records from previous runs\n if (this._changesTail) this._changesTail._nextChanged = null;\n if (this._additionsTail) this._additionsTail._nextAdded = null;\n\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 */\nprivate _insertBeforeOrAppend(\n before: KeyValueChangeRecord_<K, V>|null,\n record: KeyValueChangeRecord_<K, V>): KeyValueChangeRecord_<K, V>|null {\n if (before) {\n const /** @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\n this._appendAfter = before;\n return before;\n }\n\n if (this._appendAfter) {\n this._appendAfter._next = record;\n record._prev = this._appendAfter;\n } else {\n this._mapHead = record;\n }\n\n this._appendAfter = record;\n return null;\n }\n/**\n * @param {?} key\n * @param {?} value\n * @return {?}\n */\nprivate _getOrCreateRecordForKey(key: K, value: V): KeyValueChangeRecord_<K, V> {\n if (this._records.has(key)) {\n const /** @type {?} */ record = /** @type {?} */(( this._records.get(key)));\n this._maybeAddToChanges(record, value);\n const /** @type {?} */ prev = record._prev;\n const /** @type {?} */ next = record._next;\n if (prev) {\n prev._next = next;\n }\n if (next) {\n next._prev = prev;\n }\n record._next = null;\n record._prev = null;\n\n return record;\n }\n\n const /** @type {?} */ record = new KeyValueChangeRecord_<K, V>(key);\n this._records.set(key, record);\n record.currentValue = value;\n this._addToAdditions(record);\n return record;\n }\n/**\n * \\@internal\n * @return {?}\n */\n_reset() {\n if (this.isDirty) {\n let /** @type {?} */ record: KeyValueChangeRecord_<K, V>|null;\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\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\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 */\nprivate _maybeAddToChanges(record: KeyValueChangeRecord_<K, V>, newValue: any): void {\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 */\nprivate _addToAdditions(record: KeyValueChangeRecord_<K, V>) {\n if (this._additionsHead === null) {\n this._additionsHead = this._additionsTail = record;\n } else { /** @type {?} */((\n this._additionsTail))._nextAdded = record;\n this._additionsTail = record;\n }\n }\n/**\n * @param {?} record\n * @return {?}\n */\nprivate _addToChanges(record: KeyValueChangeRecord_<K, V>) {\n if (this._changesHead === null) {\n this._changesHead = this._changesTail = record;\n } else { /** @type {?} */((\n this._changesTail))._nextChanged = record;\n this._changesTail = record;\n }\n }\n/**\n * @return {?}\n */\ntoString(): string {\n const /** @type {?} */ items: string[] = [];\n const /** @type {?} */ previous: string[] = [];\n const /** @type {?} */ changes: string[] = [];\n const /** @type {?} */ additions: string[] = [];\n const /** @type {?} */ removals: string[] = [];\n\n this.forEachItem(r => items.push(stringify(r)));\n this.forEachPreviousItem(r => previous.push(stringify(r)));\n this.forEachChangedItem(r => changes.push(stringify(r)));\n this.forEachAddedItem(r => additions.push(stringify(r)));\n this.forEachRemovedItem(r => removals.push(stringify(r)));\n\n return 'map: ' + items.join(', ') + '\\n' +\n 'previous: ' + previous.join(', ') + '\\n' +\n 'additions: ' + additions.join(', ') + '\\n' +\n 'changes: ' + changes.join(', ') + '\\n' +\n 'removals: ' + removals.join(', ') + '\\n';\n }\n/**\n * \\@internal\n * @template K, V\n * @param {?} obj\n * @param {?} fn\n * @return {?}\n */\nprivate _forEach<K, V>(obj: Map<K, V>|{[k: string]: V}, fn: (v: V, k: any) => void) {\n if (obj instanceof Map) {\n obj.forEach(fn);\n } else {\n Object.keys(obj).forEach(k => fn(obj[k], k));\n }\n }\n}\n\nfunction DefaultKeyValueDiffer_tsickle_Closure_declarations() {\n/** @type {?} */\nDefaultKeyValueDiffer.prototype._records;\n/** @type {?} */\nDefaultKeyValueDiffer.prototype._mapHead;\n/** @type {?} */\nDefaultKeyValueDiffer.prototype._appendAfter;\n/** @type {?} */\nDefaultKeyValueDiffer.prototype._previousMapHead;\n/** @type {?} */\nDefaultKeyValueDiffer.prototype._changesHead;\n/** @type {?} */\nDefaultKeyValueDiffer.prototype._changesTail;\n/** @type {?} */\nDefaultKeyValueDiffer.prototype._additionsHead;\n/** @type {?} */\nDefaultKeyValueDiffer.prototype._additionsTail;\n/** @type {?} */\nDefaultKeyValueDiffer.prototype._removalsHead;\n/** @type {?} */\nDefaultKeyValueDiffer.prototype._removalsTail;\n}\n\n/**\n * \\@stable\n */\nclass KeyValueChangeRecord_<K, V> implements KeyValueChangeRecord<K, V> {\n previousValue: V|null = null;\n currentValue: V|null = null;\n/**\n * \\@internal\n */\n_nextPrevious: KeyValueChangeRecord_<K, V>|null = null;\n/**\n * \\@internal\n */\n_next: KeyValueChangeRecord_<K, V>|null = null;\n/**\n * \\@internal\n */\n_prev: KeyValueChangeRecord_<K, V>|null = null;\n/**\n * \\@internal\n */\n_nextAdded: KeyValueChangeRecord_<K, V>|null = null;\n/**\n * \\@internal\n */\n_nextRemoved: KeyValueChangeRecord_<K, V>|null = null;\n/**\n * \\@internal\n */\n_nextChanged: KeyValueChangeRecord_<K, V>|null = null;\n/**\n * @param {?} key\n */\nconstructor(public key: K) {}\n/**\n * @return {?}\n */\ntoString(): string {\n return looseIdentical(this.previousValue, this.currentValue) ?\n stringify(this.key) :\n (stringify(this.key) + '[' + stringify(this.previousValue) + '->' +\n stringify(this.currentValue) + ']');\n }\n}\n\nfunction KeyValueChangeRecord__tsickle_Closure_declarations() {\n/** @type {?} */\nKeyValueChangeRecord_.prototype.previousValue;\n/** @type {?} */\nKeyValueChangeRecord_.prototype.currentValue;\n/**\n * \\@internal\n * @type {?}\n */\nKeyValueChangeRecord_.prototype._nextPrevious;\n/**\n * \\@internal\n * @type {?}\n */\nKeyValueChangeRecord_.prototype._next;\n/**\n * \\@internal\n * @type {?}\n */\nKeyValueChangeRecord_.prototype._prev;\n/**\n * \\@internal\n * @type {?}\n */\nKeyValueChangeRecord_.prototype._nextAdded;\n/**\n * \\@internal\n * @type {?}\n */\nKeyValueChangeRecord_.prototype._nextRemoved;\n/**\n * \\@internal\n * @type {?}\n */\nKeyValueChangeRecord_.prototype._nextChanged;\n/** @type {?} */\nKeyValueChangeRecord_.prototype.key;\n}\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\nimport {looseIdentical, stringify} from '../../util';\nimport {isListLikeIterable, iterateListLike} from '../change_detection_util';\nimport {ChangeDetectorRef} from '../change_detector_ref';\n\nimport {IterableChangeRecord, IterableChanges, IterableDiffer, IterableDifferFactory, NgIterable, TrackByFunction} from './iterable_differs';\nexport class DefaultIterableDifferFactory implements IterableDifferFactory {\nconstructor() {}\n/**\n * @param {?} obj\n * @return {?}\n */\nsupports(obj: Object|null|undefined): boolean { return isListLikeIterable(obj); }\n\n create<V>(trackByFn?: TrackByFunction<V>): DefaultIterableDiffer<V>;\n/**\n * @deprecated v4.0.0 - ChangeDetectorRef is not used and is no longer a parameter\n * @template V\n * @param {?=} cdRefOrTrackBy\n * @param {?=} trackByFn\n * @return {?}\n */\ncreate<V>(cdRefOrTrackBy?: ChangeDetectorRef|TrackByFunction<V>, trackByFn?: TrackByFunction<V>):\n DefaultIterableDiffer<V> {\n return new DefaultIterableDiffer<V>(trackByFn || /** @type {?} */(( <TrackByFunction<any>>cdRefOrTrackBy)));\n }\n}\n\nconst /** @type {?} */ trackByIdentity = (index: number, item: any) => item;\n/**\n * @deprecated v4.0.0 - Should not be part of public API.\n */\nexport class DefaultIterableDiffer<V> implements IterableDiffer<V>, IterableChanges<V> {\nprivate _length: number = 0;\nprivate _collection: NgIterable<V>|null = null;\nprivate _linkedRecords: _DuplicateMap<V>|null = null;\nprivate _unlinkedRecords: _DuplicateMap<V>|null = null;\nprivate _previousItHead: IterableChangeRecord_<V>|null = null;\nprivate _itHead: IterableChangeRecord_<V>|null = null;\nprivate _itTail: IterableChangeRecord_<V>|null = null;\nprivate _additionsHead: IterableChangeRecord_<V>|null = null;\nprivate _additionsTail: IterableChangeRecord_<V>|null = null;\nprivate _movesHead: IterableChangeRecord_<V>|null = null;\nprivate _movesTail: IterableChangeRecord_<V>|null = null;\nprivate _removalsHead: IterableChangeRecord_<V>|null = null;\nprivate _removalsTail: IterableChangeRecord_<V>|null = null;\nprivate _identityChangesHead: IterableChangeRecord_<V>|null = null;\nprivate _identityChangesTail: IterableChangeRecord_<V>|null = null;\nprivate _trackByFn: TrackByFunction<V>\n/**\n * @param {?=} trackByFn\n */\nconstructor(trackByFn?: TrackByFunction<V>) {\n this._trackByFn = trackByFn || trackByIdentity;\n }\n/**\n * @return {?}\n */\nget collection() { return this._collection; }\n/**\n * @return {?}\n */\nget length(): number { return this._length; }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachItem(fn: (record: IterableChangeRecord_<V>) => void) {\n let /** @type {?} */ record: IterableChangeRecord_<V>|null;\n for (record = this._itHead; record !== null; record = record._next) {\n fn(record);\n }\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachOperation(\n fn: (item: IterableChangeRecord<V>, previousIndex: number|null, currentIndex: number|null) =>\n void) {\n let /** @type {?} */ nextIt = this._itHead;\n let /** @type {?} */ nextRemove = this._removalsHead;\n let /** @type {?} */ addRemoveOffset = 0;\n let /** @type {?} */ moveOffsets: number[]|null = null;\n while (nextIt || nextRemove) {\n // Figure out which is the next record to process\n // Order: remove, add, move\n const /** @type {?} */ record: IterableChangeRecord<V> = !nextRemove ||\n nextIt && /** @type {?} */((\n nextIt.currentIndex)) <\n getPreviousIndex(nextRemove, addRemoveOffset, moveOffsets) ? /** @type {?} */((\n nextIt)) :\n nextRemove;\n const /** @type {?} */ adjPreviousIndex = getPreviousIndex(record, addRemoveOffset, moveOffsets);\n const /** @type {?} */ currentIndex = record.currentIndex;\n\n // consume the item, and adjust the addRemoveOffset and update moveDistance if necessary\n if (record === nextRemove) {\n addRemoveOffset--;\n nextRemove = nextRemove._nextRemoved;\n } else {\n nextIt = /** @type {?} */(( nextIt))._next;\n if (record.previousIndex == null) {\n addRemoveOffset++;\n } else {\n // INVARIANT: currentIndex < previousIndex\n if (!moveOffsets) moveOffsets = [];\n const /** @type {?} */ localMovePreviousIndex = adjPreviousIndex - addRemoveOffset;\n const /** @type {?} */ localCurrentIndex = /** @type {?} */(( currentIndex)) - addRemoveOffset;\n if (localMovePreviousIndex != localCurrentIndex) {\n for (let /** @type {?} */ i = 0; i < localMovePreviousIndex; i++) {\n const /** @type {?} */ offset = i < moveOffsets.length ? moveOffsets[i] : (moveOffsets[i] = 0);\n const /** @type {?} */ index = offset + i;\n if (localCurrentIndex <= index && index < localMovePreviousIndex) {\n moveOffsets[i] = offset + 1;\n }\n }\n const /** @type {?} */ previousIndex = record.previousIndex;\n moveOffsets[previousIndex] = localCurrentIndex - localMovePreviousIndex;\n }\n }\n }\n\n if (adjPreviousIndex !== currentIndex) {\n fn(record, adjPreviousIndex, currentIndex);\n }\n }\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachPreviousItem(fn: (record: IterableChangeRecord_<V>) => void) {\n let /** @type {?} */ record: IterableChangeRecord_<V>|null;\n for (record = this._previousItHead; record !== null; record = record._nextPrevious) {\n fn(record);\n }\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachAddedItem(fn: (record: IterableChangeRecord_<V>) => void) {\n let /** @type {?} */ record: IterableChangeRecord_<V>|null;\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n fn(record);\n }\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachMovedItem(fn: (record: IterableChangeRecord_<V>) => void) {\n let /** @type {?} */ record: IterableChangeRecord_<V>|null;\n for (record = this._movesHead; record !== null; record = record._nextMoved) {\n fn(record);\n }\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachRemovedItem(fn: (record: IterableChangeRecord_<V>) => void) {\n let /** @type {?} */ record: IterableChangeRecord_<V>|null;\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\n fn(record);\n }\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nforEachIdentityChange(fn: (record: IterableChangeRecord_<V>) => void) {\n let /** @type {?} */ record: IterableChangeRecord_<V>|null;\n for (record = this._identityChangesHead; record !== null; record = record._nextIdentityChange) {\n fn(record);\n }\n }\n/**\n * @param {?} collection\n * @return {?}\n */\ndiff(collection: NgIterable<V>): DefaultIterableDiffer<V>|null {\n if (collection == null) collection = [];\n if (!isListLikeIterable(collection)) {\n throw new Error(\n `Error trying to diff '${stringify(collection)}'. Only arrays and iterables are allowed`);\n }\n\n if (this.check(collection)) {\n return this;\n } else {\n return null;\n }\n }\n/**\n * @return {?}\n */\nonDestroy() {}\n/**\n * @param {?} collection\n * @return {?}\n */\ncheck(collection: NgIterable<V>): boolean {\n this._reset();\n\n let /** @type {?} */ record: IterableChangeRecord_<V>|null = this._itHead;\n let /** @type {?} */ mayBeDirty: boolean = false;\n let /** @type {?} */ index: number;\n let /** @type {?} */ item: V;\n let /** @type {?} */ itemTrackBy: any;\n if (Array.isArray(collection)) {\n this._length = collection.length;\n\n for (let /** @type {?} */ index = 0; index < this._length; index++) {\n item = collection[index];\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 } 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)) this._addIdentityChange(record, item);\n }\n\n record = record._next;\n }\n } else {\n index = 0;\n iterateListLike(collection, (item: V) => {\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 } 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)) this._addIdentityChange(record, item);\n }\n record = record._next;\n index++;\n });\n this._length = index;\n }\n\n this._truncate(record);\n this._collection = collection;\n return this.isDirty;\n }\n/**\n * @return {?}\n */\nget isDirty(): boolean {\n return this._additionsHead !== null || this._movesHead !== null ||\n this._removalsHead !== null || this._identityChangesHead !== null;\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_reset() {\n if (this.isDirty) {\n let /** @type {?} */ record: IterableChangeRecord_<V>|null;\n let /** @type {?} */ nextRecord: IterableChangeRecord_<V>|null;\n\n for (record = this._previousItHead = this._itHead; record !== null; record = record._next) {\n record._nextPrevious = record._next;\n }\n\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n record.previousIndex = record.currentIndex;\n }\n this._additionsHead = this._additionsTail = null;\n\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\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 * @param {?} record\n * @param {?} item\n * @param {?} itemTrackBy\n * @param {?} index\n * @return {?}\n */\n_mismatch(record: IterableChangeRecord_<V>|null, item: V, itemTrackBy: any, index: number):\n IterableChangeRecord_<V> {\n // The previous record after which we will append the current one.\n let /** @type {?} */ previousRecord: IterableChangeRecord_<V>;\n\n if (record === null) {\n previousRecord = /** @type {?} */(( this._itTail));\n } else {\n previousRecord = /** @type {?} */(( record._prev));\n // Remove the record from the collection since we know it does not match the item.\n this._remove(record);\n }\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)) this._addIdentityChange(record, item);\n\n this._moveAfter(record, previousRecord, index);\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)) this._addIdentityChange(record, item);\n\n this._reinsertAfter(record, previousRecord, index);\n } else {\n // It is a new item: add it.\n record =\n this._addAfter(new IterableChangeRecord_<V>(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 * @param {?} record\n * @param {?} item\n * @param {?} itemTrackBy\n * @param {?} index\n * @return {?}\n */\n_verifyReinsertion(record: IterableChangeRecord_<V>, item: V, itemTrackBy: any, index: number):\n IterableChangeRecord_<V> {\n let /** @type {?} */ reinsertRecord: IterableChangeRecord_<V>|null =\n this._unlinkedRecords === null ? null : this._unlinkedRecords.get(itemTrackBy, null);\n if (reinsertRecord !== null) {\n record = this._reinsertAfter(reinsertRecord, /** @type {?} */(( record._prev)), index);\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 * @param {?} record\n * @return {?}\n */\n_truncate(record: IterableChangeRecord_<V>|null) {\n // Anything after that needs to be removed;\n while (record !== null) {\n const /** @type {?} */ nextRecord: IterableChangeRecord_<V>|null = record._next;\n this._addToRemovals(this._unlink(record));\n record = nextRecord;\n }\n if (this._unlinkedRecords !== null) {\n this._unlinkedRecords.clear();\n }\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/**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n_reinsertAfter(\n record: IterableChangeRecord_<V>, prevRecord: IterableChangeRecord_<V>,\n index: number): IterableChangeRecord_<V> {\n if (this._unlinkedRecords !== null) {\n this._unlinkedRecords.remove(record);\n }\n const /** @type {?} */ prev = record._prevRemoved;\n const /** @type {?} */ next = record._nextRemoved;\n\n if (prev === null) {\n this._removalsHead = next;\n } else {\n prev._nextRemoved = next;\n }\n if (next === null) {\n this._removalsTail = prev;\n } else {\n next._prevRemoved = prev;\n }\n\n this._insertAfter(record, prevRecord, index);\n this._addToMoves(record, index);\n return record;\n }\n/**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n_moveAfter(record: IterableChangeRecord_<V>, prevRecord: IterableChangeRecord_<V>, index: number):\n IterableChangeRecord_<V> {\n this._unlink(record);\n this._insertAfter(record, prevRecord, index);\n this._addToMoves(record, index);\n return record;\n }\n/**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n_addAfter(record: IterableChangeRecord_<V>, prevRecord: IterableChangeRecord_<V>, index: number):\n IterableChangeRecord_<V> {\n this._insertAfter(record, prevRecord, index);\n\n if (this._additionsTail === null) {\n // todo(vicb)\n // assert(this._additionsHead === null);\n this._additionsTail = this._additionsHead = record;\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/**\n * \\@internal\n * @param {?} record\n * @param {?} prevRecord\n * @param {?} index\n * @return {?}\n */\n_insertAfter(\n record: IterableChangeRecord_<V>, prevRecord: IterableChangeRecord_<V>,\n index: number): IterableChangeRecord_<V> {\n // todo(vicb)\n // assert(record != prevRecord);\n // assert(record._next === null);\n // assert(record._prev === null);\n\n const /** @type {?} */ next: IterableChangeRecord_<V>|null =\n 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 } else {\n next._prev = record;\n }\n if (prevRecord === null) {\n this._itHead = record;\n } else {\n prevRecord._next = record;\n }\n\n if (this._linkedRecords === null) {\n this._linkedRecords = new _DuplicateMap<V>();\n }\n this._linkedRecords.put(record);\n\n record.currentIndex = index;\n return record;\n }\n/**\n * \\@internal\n * @param {?} record\n * @return {?}\n */\n_remove(record: IterableChangeRecord_<V>): IterableChangeRecord_<V> {\n return this._addToRemovals(this._unlink(record));\n }\n/**\n * \\@internal\n * @param {?} record\n * @return {?}\n */\n_unlink(record: IterableChangeRecord_<V>): IterableChangeRecord_<V> {\n if (this._linkedRecords !== null) {\n this._linkedRecords.remove(record);\n }\n\n const /** @type {?} */ prev = record._prev;\n const /** @type {?} */ next = record._next;\n\n // todo(vicb)\n // assert((record._prev = null) === null);\n // assert((record._next = null) === null);\n\n if (prev === null) {\n this._itHead = next;\n } else {\n prev._next = next;\n }\n if (next === null) {\n this._itTail = prev;\n } else {\n next._prev = prev;\n }\n\n return record;\n }\n/**\n * \\@internal\n * @param {?} record\n * @param {?} toIndex\n * @return {?}\n */\n_addToMoves(record: IterableChangeRecord_<V>, toIndex: number): IterableChangeRecord_<V> {\n // todo(vicb)\n // assert(record._nextMoved === null);\n\n if (record.previousIndex === toIndex) {\n return record;\n }\n\n if (this._movesTail === null) {\n // todo(vicb)\n // assert(_movesHead === null);\n this._movesTail = this._movesHead = record;\n } else {\n // todo(vicb)\n // assert(_movesTail._nextMoved === null);\n this._movesTail = this._movesTail._nextMoved = record;\n }\n\n return record;\n }\n/**\n * @param {?} record\n * @return {?}\n */\nprivate _addToRemovals(record: IterableChangeRecord_<V>): IterableChangeRecord_<V> {\n if (this._unlinkedRecords === null) {\n this._unlinkedRecords = new _DuplicateMap<V>();\n }\n this._unlinkedRecords.put(record);\n record.currentIndex = null;\n record._nextRemoved = null;\n\n if (this._removalsTail === null) {\n // todo(vicb)\n // assert(_removalsHead === null);\n this._removalsTail = this._removalsHead = record;\n record._prevRemoved = null;\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/**\n * \\@internal\n * @param {?} record\n * @param {?} item\n * @return {?}\n */\n_addIdentityChange(record: IterableChangeRecord_<V>, item: V) {\n record.item = item;\n if (this._identityChangesTail === null) {\n this._identityChangesTail = this._identityChangesHead = record;\n } else {\n this._identityChangesTail = this._identityChangesTail._nextIdentityChange = record;\n }\n return record;\n }\n/**\n * @return {?}\n */\ntoString(): string {\n const /** @type {?} */ list: IterableChangeRecord_<V>[] = [];\n this.forEachItem((record: IterableChangeRecord_<V>) => list.push(record));\n\n const /** @type {?} */ previous: IterableChangeRecord_<V>[] = [];\n this.forEachPreviousItem((record: IterableChangeRecord_<V>) => previous.push(record));\n\n const /** @type {?} */ additions: IterableChangeRecord_<V>[] = [];\n this.forEachAddedItem((record: IterableChangeRecord_<V>) => additions.push(record));\n\n const /** @type {?} */ moves: IterableChangeRecord_<V>[] = [];\n this.forEachMovedItem((record: IterableChangeRecord_<V>) => moves.push(record));\n\n const /** @type {?} */ removals: IterableChangeRecord_<V>[] = [];\n this.forEachRemovedItem((record: IterableChangeRecord_<V>) => removals.push(record));\n\n const /** @type {?} */ identityChanges: IterableChangeRecord_<V>[] = [];\n this.forEachIdentityChange((record: IterableChangeRecord_<V>) => identityChanges.push(record));\n\n return 'collection: ' + list.join(', ') + '\\n' +\n 'previous: ' + previous.join(', ') + '\\n' +\n 'additions: ' + additions.join(', ') + '\\n' +\n 'moves: ' + moves.join(', ') + '\\n' +\n 'removals: ' + removals.join(', ') + '\\n' +\n 'identityChanges: ' + identityChanges.join(', ') + '\\n';\n }\n}\n\nfunction DefaultIterableDiffer_tsickle_Closure_declarations() {\n/** @type {?} */\nDefaultIterableDiffer.prototype._length;\n/** @type {?} */\nDefaultIterableDiffer.prototype._collection;\n/** @type {?} */\nDefaultIterableDiffer.prototype._linkedRecords;\n/** @type {?} */\nDefaultIterableDiffer.prototype._unlinkedRecords;\n/** @type {?} */\nDefaultIterableDiffer.prototype._previousItHead;\n/** @type {?} */\nDefaultIterableDiffer.prototype._itHead;\n/** @type {?} */\nDefaultIterableDiffer.prototype._itTail;\n/** @type {?} */\nDefaultIterableDiffer.prototype._additionsHead;\n/** @type {?} */\nDefaultIterableDiffer.prototype._additionsTail;\n/** @type {?} */\nDefaultIterableDiffer.prototype._movesHead;\n/** @type {?} */\nDefaultIterableDiffer.prototype._movesTail;\n/** @type {?} */\nDefaultIterableDiffer.prototype._removalsHead;\n/** @type {?} */\nDefaultIterableDiffer.prototype._removalsTail;\n/** @type {?} */\nDefaultIterableDiffer.prototype._identityChangesHead;\n/** @type {?} */\nDefaultIterableDiffer.prototype._identityChangesTail;\n/** @type {?} */\nDefaultIterableDiffer.prototype._trackByFn;\n}\n\n/**\n * \\@stable\n */\nexport class IterableChangeRecord_<V> implements IterableChangeRecord<V> {\n currentIndex: number|null = null;\n previousIndex: number|null = null;\n/**\n * \\@internal\n */\n_nextPrevious: IterableChangeRecord_<V>|null = null;\n/**\n * \\@internal\n */\n_prev: IterableChangeRecord_<V>|null = null;\n/**\n * \\@internal\n */\n_next: IterableChangeRecord_<V>|null = null;\n/**\n * \\@internal\n */\n_prevDup: IterableChangeRecord_<V>|null = null;\n/**\n * \\@internal\n */\n_nextDup: IterableChangeRecord_<V>|null = null;\n/**\n * \\@internal\n */\n_prevRemoved: IterableChangeRecord_<V>|null = null;\n/**\n * \\@internal\n */\n_nextRemoved: IterableChangeRecord_<V>|null = null;\n/**\n * \\@internal\n */\n_nextAdded: IterableChangeRecord_<V>|null = null;\n/**\n * \\@internal\n */\n_nextMoved: IterableChangeRecord_<V>|null = null;\n/**\n * \\@internal\n */\n_nextIdentityChange: IterableChangeRecord_<V>|null = null;\n/**\n * @param {?} item\n * @param {?} trackById\n */\nconstructor(public item: V,\npublic trackById: any) {}\n/**\n * @return {?}\n */\ntoString(): string {\n return this.previousIndex === this.currentIndex ? stringify(this.item) :\n stringify(this.item) + '[' +\n stringify(this.previousIndex) + '->' + stringify(this.currentIndex) + ']';\n }\n}\n\nfunction IterableChangeRecord__tsickle_Closure_declarations() {\n/** @type {?} */\nIterableChangeRecord_.prototype.currentIndex;\n/** @type {?} */\nIterableChangeRecord_.prototype.previousIndex;\n/**\n * \\@internal\n * @type {?}\n */\nIterableChangeRecord_.prototype._nextPrevious;\n/**\n * \\@internal\n * @type {?}\n */\nIterableChangeRecord_.prototype._prev;\n/**\n * \\@internal\n * @type {?}\n */\nIterableChangeRecord_.prototype._next;\n/**\n * \\@internal\n * @type {?}\n */\nIterableChangeRecord_.prototype._prevDup;\n/**\n * \\@internal\n * @type {?}\n */\nIterableChangeRecord_.prototype._nextDup;\n/**\n * \\@internal\n * @type {?}\n */\nIterableChangeRecord_.prototype._prevRemoved;\n/**\n * \\@internal\n * @type {?}\n */\nIterableChangeRecord_.prototype._nextRemoved;\n/**\n * \\@internal\n * @type {?}\n */\nIterableChangeRecord_.prototype._nextAdded;\n/**\n * \\@internal\n * @type {?}\n */\nIterableChangeRecord_.prototype._nextMoved;\n/**\n * \\@internal\n * @type {?}\n */\nIterableChangeRecord_.prototype._nextIdentityChange;\n/** @type {?} */\nIterableChangeRecord_.prototype.item;\n/** @type {?} */\nIterableChangeRecord_.prototype.trackById;\n}\n\nclass _DuplicateItemRecordList<V> {\n/**\n * \\@internal\n */\n_head: IterableChangeRecord_<V>|null = null;\n/**\n * \\@internal\n */\n_tail: IterableChangeRecord_<V>|null = null;\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 */\nadd(record: IterableChangeRecord_<V>): void {\n if (this._head === null) {\n this._head = this._tail = record;\n record._nextDup = null;\n record._prevDup = null;\n } else { /** @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/**\n * @param {?} trackById\n * @param {?} afterIndex\n * @return {?}\n */\nget(trackById: any, afterIndex: number|null): IterableChangeRecord_<V>|null {\n let /** @type {?} */ record: IterableChangeRecord_<V>|null;\n for (record = this._head; record !== null; record = record._nextDup) {\n if ((afterIndex === null || afterIndex < 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 * @param {?} record\n * @return {?}\n */\nremove(record: IterableChangeRecord_<V>): boolean {\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\n const /** @type {?} */ prev: IterableChangeRecord_<V>|null = record._prevDup;\n const /** @type {?} */ next: IterableChangeRecord_<V>|null = record._nextDup;\n if (prev === null) {\n this._head = next;\n } else {\n prev._nextDup = next;\n }\n if (next === null) {\n this._tail = prev;\n } else {\n next._prevDup = prev;\n }\n return this._head === null;\n }\n}\n\nfunction _DuplicateItemRecordList_tsickle_Closure_declarations() {\n/**\n * \\@internal\n * @type {?}\n */\n_DuplicateItemRecordList.prototype._head;\n/**\n * \\@internal\n * @type {?}\n */\n_DuplicateItemRecordList.prototype._tail;\n}\n\nclass _DuplicateMap<V> {\n map = new Map<any, _DuplicateItemRecordList<V>>();\n/**\n * @param {?} record\n * @return {?}\n */\nput(record: IterableChangeRecord_<V>) {\n const /** @type {?} */ key = record.trackById;\n\n let /** @type {?} */ duplicates = this.map.get(key);\n if (!duplicates) {\n duplicates = new _DuplicateItemRecordList<V>();\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 afterIndex 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 last `a` not the first or second.\n * @param {?} trackById\n * @param {?} afterIndex\n * @return {?}\n */\nget(trackById: any, afterIndex: number|null): IterableChangeRecord_<V>|null {\n const /** @type {?} */ key = trackById;\n const /** @type {?} */ recordList = this.map.get(key);\n return recordList ? recordList.get(trackById, afterIndex) : 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 * @param {?} record\n * @return {?}\n */\nremove(record: IterableChangeRecord_<V>): IterableChangeRecord_<V> {\n const /** @type {?} */ key = record.trackById;\n const /** @type {?} */ recordList: _DuplicateItemRecordList<V> = /** @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/**\n * @return {?}\n */\nget isEmpty(): boolean { return this.map.size === 0; }\n/**\n * @return {?}\n */\nclear() { this.map.clear(); }\n/**\n * @return {?}\n */\ntoString(): string { return '_DuplicateMap(' + stringify(this.map) + ')'; }\n}\n\nfunction _DuplicateMap_tsickle_Closure_declarations() {\n/** @type {?} */\n_DuplicateMap.prototype.map;\n}\n\n/**\n * @param {?} item\n * @param {?} addRemoveOffset\n * @param {?} moveOffsets\n * @return {?}\n */\nfunction getPreviousIndex(\n item: any, addRemoveOffset: number, moveOffsets: number[] | null): number {\n const /** @type {?} */ previousIndex = item.previousIndex;\n if (previousIndex === null) return previousIndex;\n let /** @type {?} */ moveOffset = 0;\n if (moveOffsets && previousIndex < moveOffsets.length) {\n moveOffset = moveOffsets[previousIndex];\n }\n return previousIndex + addRemoveOffset + moveOffset;\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\nimport {getSymbolIterator, looseIdentical} from '../util';\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nexport function devModeEqual(a: any, b: any): boolean {\n const /** @type {?} */ isListLikeIterableA = isListLikeIterable(a);\n const /** @type {?} */ isListLikeIterableB = isListLikeIterable(b);\n if (isListLikeIterableA && isListLikeIterableB) {\n return areIterablesEqual(a, b, devModeEqual);\n } else {\n const /** @type {?} */ isAObject = a && (typeof a === 'object' || typeof a === 'function');\n const /** @type {?} */ isBObject = b && (typeof b === 'object' || typeof b === 'function');\n if (!isListLikeIterableA && isAObject && !isListLikeIterableB && isBObject) {\n return true;\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\n * has not changed.\n * \n * The wrapped value will be unwrapped by change detection, and the unwrapped value will be 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 */\nexport class WrappedValue {\n/**\n * @param {?} wrapped\n */\nconstructor(public wrapped: any) {}\n/**\n * @param {?} value\n * @return {?}\n */\nstatic wrap(value: any): WrappedValue { return new WrappedValue(value); }\n}\n\nfunction WrappedValue_tsickle_Closure_declarations() {\n/** @type {?} */\nWrappedValue.prototype.wrapped;\n}\n\n/**\n * Helper class for unwrapping WrappedValue s\n */\nexport class ValueUnwrapper {\npublic hasWrappedValue = false;\n/**\n * @param {?} value\n * @return {?}\n */\nunwrap(value: any): any {\n if (value instanceof WrappedValue) {\n this.hasWrappedValue = true;\n return value.wrapped;\n }\n return value;\n }\n/**\n * @return {?}\n */\nreset() { this.hasWrappedValue = false; }\n}\n\nfunction ValueUnwrapper_tsickle_Closure_declarations() {\n/** @type {?} */\nValueUnwrapper.prototype.hasWrappedValue;\n}\n\n/**\n * Represents a basic change from a previous to a new value.\n * \\@stable\n */\nexport class SimpleChange {\n/**\n * @param {?} previousValue\n * @param {?} currentValue\n * @param {?} firstChange\n */\nconstructor(public previousValue: any,\npublic currentValue: any,\npublic firstChange: boolean) {}\n/**\n * Check whether the new value is the first value assigned.\n * @return {?}\n */\nisFirstChange(): boolean { return this.firstChange; }\n}\n\nfunction SimpleChange_tsickle_Closure_declarations() {\n/** @type {?} */\nSimpleChange.prototype.previousValue;\n/** @type {?} */\nSimpleChange.prototype.currentValue;\n/** @type {?} */\nSimpleChange.prototype.firstChange;\n}\n\n/**\n * @param {?} obj\n * @return {?}\n */\nexport function isListLikeIterable(obj: any): boolean {\n if (!isJsObject(obj)) return false;\n return Array.isArray(obj) ||\n (!(obj instanceof Map) && // 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 */\nexport function areIterablesEqual(\n a: any, b: any, comparator: (a: any, b: any) => boolean): boolean {\n const /** @type {?} */ iterator1 = a[getSymbolIterator()]();\n const /** @type {?} */ iterator2 = b[getSymbolIterator()]();\n\n while (true) {\n const /** @type {?} */ item1 = iterator1.next();\n const /** @type {?} */ item2 = iterator2.next();\n if (item1.done && item2.done) return true;\n if (item1.done || item2.done) return false;\n if (!comparator(item1.value, item2.value)) return false;\n }\n}\n/**\n * @param {?} obj\n * @param {?} fn\n * @return {?}\n */\nexport function iterateListLike(obj: any, fn: (p: any) => any) {\n if (Array.isArray(obj)) {\n for (let /** @type {?} */ i = 0; i < obj.length; i++) {\n fn(obj[i]);\n }\n } else {\n const /** @type {?} */ iterator = obj[getSymbolIterator()]();\n let /** @type {?} */ item: any;\n while (!((item = iterator.next()).done)) {\n fn(item.value);\n }\n }\n}\n/**\n * @param {?} o\n * @return {?}\n */\nexport function isJsObject(o: any): boolean {\n return o !== null && (typeof o === 'function' || typeof o === 'object');\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\nimport {Injector} from '../di';\nimport {DebugContext} from '../view/index';\nexport class EventListener {\n/**\n * @param {?} name\n * @param {?} callback\n */\nconstructor(public name: string,\npublic callback: Function){}; }\n\nfunction EventListener_tsickle_Closure_declarations() {\n/** @type {?} */\nEventListener.prototype.name;\n/** @type {?} */\nEventListener.prototype.callback;\n}\n\n/**\n * \\@experimental All debugging apis are currently experimental.\n */\nexport class DebugNode {\n nativeNode: any;\n listeners: EventListener[];\n parent: DebugElement|null;\n/**\n * @param {?} nativeNode\n * @param {?} parent\n * @param {?} _debugContext\n */\nconstructor(nativeNode: any, parent: DebugNode|null,\nprivate _debugContext: DebugContext) {\n this.nativeNode = nativeNode;\n if (parent && parent instanceof DebugElement) {\n parent.addChild(this);\n } else {\n this.parent = null;\n }\n this.listeners = [];\n }\n/**\n * @return {?}\n */\nget injector(): Injector { return this._debugContext.injector; }\n/**\n * @return {?}\n */\nget componentInstance(): any { return this._debugContext.component; }\n/**\n * @return {?}\n */\nget context(): any { return this._debugContext.context; }\n/**\n * @return {?}\n */\nget references(): {[key: string]: any} { return this._debugContext.references; }\n/**\n * @return {?}\n */\nget providerTokens(): any[] { return this._debugContext.providerTokens; }\n/**\n * @deprecated since v4\n * @return {?}\n */\nget source(): string { return 'Deprecated since v4'; }\n}\n\nfunction DebugNode_tsickle_Closure_declarations() {\n/** @type {?} */\nDebugNode.prototype.nativeNode;\n/** @type {?} */\nDebugNode.prototype.listeners;\n/** @type {?} */\nDebugNode.prototype.parent;\n/** @type {?} */\nDebugNode.prototype._debugContext;\n}\n\n/**\n * \\@experimental All debugging apis are currently experimental.\n */\nexport class DebugElement extends DebugNode {\n name: string;\n properties: {[key: string]: any};\n attributes: {[key: string]: string | null};\n classes: {[key: string]: boolean};\n styles: {[key: string]: string | null};\n childNodes: DebugNode[];\n nativeElement: any;\n/**\n * @param {?} nativeNode\n * @param {?} parent\n * @param {?} _debugContext\n */\nconstructor(nativeNode: any, parent: any, _debugContext: DebugContext) {\n super(nativeNode, parent, _debugContext);\n this.properties = {};\n this.attributes = {};\n this.classes = {};\n this.styles = {};\n this.childNodes = [];\n this.nativeElement = nativeNode;\n }\n/**\n * @param {?} child\n * @return {?}\n */\naddChild(child: DebugNode) {\n if (child) {\n this.childNodes.push(child);\n child.parent = this;\n }\n }\n/**\n * @param {?} child\n * @return {?}\n */\nremoveChild(child: DebugNode) {\n const /** @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 */\ninsertChildrenAfter(child: DebugNode, newChildren: DebugNode[]) {\n const /** @type {?} */ siblingIndex = this.childNodes.indexOf(child);\n if (siblingIndex !== -1) {\n this.childNodes.splice(siblingIndex + 1, 0, ...newChildren);\n newChildren.forEach(c => {\n if (c.parent) {\n c.parent.removeChild(c);\n }\n c.parent = this;\n });\n }\n }\n/**\n * @param {?} refChild\n * @param {?} newChild\n * @return {?}\n */\ninsertBefore(refChild: DebugNode, newChild: DebugNode): void {\n const /** @type {?} */ refIndex = this.childNodes.indexOf(refChild);\n if (refIndex === -1) {\n this.addChild(newChild);\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 */\nquery(predicate: Predicate<DebugElement>): DebugElement {\n const /** @type {?} */ results = this.queryAll(predicate);\n return results[0] || null;\n }\n/**\n * @param {?} predicate\n * @return {?}\n */\nqueryAll(predicate: Predicate<DebugElement>): DebugElement[] {\n const /** @type {?} */ matches: DebugElement[] = [];\n _queryElementChildren(this, predicate, matches);\n return matches;\n }\n/**\n * @param {?} predicate\n * @return {?}\n */\nqueryAllNodes(predicate: Predicate<DebugNode>): DebugNode[] {\n const /** @type {?} */ matches: DebugNode[] = [];\n _queryNodeChildren(this, predicate, matches);\n return matches;\n }\n/**\n * @return {?}\n */\nget children(): DebugElement[] {\n return /** @type {?} */(( this.childNodes.filter((node) => node instanceof DebugElement) as DebugElement[]));\n }\n/**\n * @param {?} eventName\n * @param {?} eventObj\n * @return {?}\n */\ntriggerEventHandler(eventName: string, eventObj: any) {\n this.listeners.forEach((listener) => {\n if (listener.name == eventName) {\n listener.callback(eventObj);\n }\n });\n }\n}\n\nfunction DebugElement_tsickle_Closure_declarations() {\n/** @type {?} */\nDebugElement.prototype.name;\n/** @type {?} */\nDebugElement.prototype.properties;\n/** @type {?} */\nDebugElement.prototype.attributes;\n/** @type {?} */\nDebugElement.prototype.classes;\n/** @type {?} */\nDebugElement.prototype.styles;\n/** @type {?} */\nDebugElement.prototype.childNodes;\n/** @type {?} */\nDebugElement.prototype.nativeElement;\n}\n\n/**\n * \\@experimental\n * @param {?} debugEls\n * @return {?}\n */\nexport function asNativeElements(debugEls: DebugElement[]): any {\n return debugEls.map((el) => el.nativeElement);\n}\n/**\n * @param {?} element\n * @param {?} predicate\n * @param {?} matches\n * @return {?}\n */\nfunction _queryElementChildren(\n element: DebugElement, predicate: Predicate<DebugElement>, matches: DebugElement[]) {\n element.childNodes.forEach(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(\n parentNode: DebugNode, predicate: Predicate<DebugNode>, matches: DebugNode[]) {\n if (parentNode instanceof DebugElement) {\n parentNode.childNodes.forEach(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\n// Need to keep the nodes in a global Map so that multiple angular apps are supported.\nconst /** @type {?} */ _nativeNodeToDebugNode = new Map<any, DebugNode>();\n/**\n * \\@experimental\n * @param {?} nativeNode\n * @return {?}\n */\nexport function getDebugNode(nativeNode: any): DebugNode|null {\n return _nativeNodeToDebugNode.get(nativeNode) || null;\n}\n/**\n * @return {?}\n */\nexport function getAllDebugNodes(): DebugNode[] {\n return Array.from(_nativeNodeToDebugNode.values());\n}\n/**\n * @param {?} node\n * @return {?}\n */\nexport function indexDebugNode(node: DebugNode) {\n _nativeNodeToDebugNode.set(node.nativeNode, node);\n}\n/**\n * @param {?} node\n * @return {?}\n */\nexport function removeDebugNodeFromIndex(node: DebugNode) {\n _nativeNodeToDebugNode.delete(node.nativeNode);\n}\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 */\nexport interface Predicate<T> { (value: T): boolean; }\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// Public API for compiler\nexport {COMPILER_OPTIONS, Compiler, CompilerFactory, CompilerOptions, ModuleWithComponentFactories} from './linker/compiler';\nexport {ComponentFactory, ComponentRef} from './linker/component_factory';\nexport {ComponentFactoryResolver} from './linker/component_factory_resolver';\nexport {ElementRef} from './linker/element_ref';\nexport {NgModuleFactory, NgModuleRef} from './linker/ng_module_factory';\nexport {NgModuleFactoryLoader, getModuleFactory} from './linker/ng_module_factory_loader';\nexport {QueryList} from './linker/query_list';\nexport {SystemJsNgModuleLoader, SystemJsNgModuleLoaderConfig} from './linker/system_js_ng_module_factory_loader';\nexport {TemplateRef} from './linker/template_ref';\nexport {ViewContainerRef} from './linker/view_container_ref';\nexport {EmbeddedViewRef, ViewRef} from './linker/view_ref';\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\nimport {ApplicationRef} from '../application_ref';\nimport {ChangeDetectorRef} from '../change_detection/change_detector_ref';\n/**\n * \\@stable\n * @abstract\n */\nexport abstract class ViewRef extends ChangeDetectorRef {\n/**\n * Destroys the view and all of the data structures associated with it.\n * @abstract\n * @return {?}\n */\ndestroy() {}\n/**\n * @abstract\n * @return {?}\n */\ndestroyed() {}\n/**\n * @abstract\n * @param {?} callback\n * @return {?}\n */\nonDestroy(callback: Function) {}\n}\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 */\nexport abstract class EmbeddedViewRef<C> extends ViewRef {\n/**\n * @abstract\n * @return {?}\n */\ncontext() {}\n/**\n * @abstract\n * @return {?}\n */\nrootNodes() {}\n}\n\nexport interface InternalViewRef extends ViewRef {\n detachFromAppRef(): void;\n attachToAppRef(appRef: ApplicationRef): void;\n}\n","\n/**\n * \\@stable\n * @abstract\n */\nexport abstract class ChangeDetectorRef {\n/**\n * Marks all {\\@link ChangeDetectionStrategy#OnPush} ancestors as to be checked.\n * \n * <!-- TODO: Add a link to a chapter on OnPush components -->\n * \n * ### Example ([live demo](http://plnkr.co/edit/GC512b?p=preview))\n * \n * ```typescript\n * \\@Component({ \n * selector: 'cmp',\n * changeDetection: ChangeDetectionStrategy.OnPush,\n * template: `Number of ticks: {{numberOfTicks}}`\n * })\n * class Cmp {\n * numberOfTicks = 0;\n * \n * constructor(ref: ChangeDetectorRef) {\n * setInterval(() => {\n * this.numberOfTicks ++\n * // the following is required, otherwise the view will not be updated\n * this.ref.markForCheck();\n * }, 1000);\n * }\n * }\n * \n * \\@Component({ \n * selector: 'app',\n * changeDetection: ChangeDetectionStrategy.OnPush,\n * template: `\n * <cmp><cmp>\n * `,\n * })\n * class App {\n * }\n * ```\n * @abstract\n * @return {?}\n */\nmarkForCheck() {}\n/**\n * Detaches the change detector from the change detector tree.\n * \n * The detached change detector will not be checked until it is reattached.\n * \n * This can also be used in combination with {\\@link ChangeDetectorRef#detectChanges} to implement\n * local change\n * detection checks.\n * \n * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->\n * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->\n * \n * ### Example\n * \n * The following example defines a component with a large list of readonly data.\n * Imagine the data changes constantly, many times per second. For performance reasons,\n * we want to check and update the list every five seconds. We can do that by detaching\n * the component's change detector and doing a local check every five seconds.\n * \n * ```typescript\n * class DataProvider {\n * // in a real application the returned data will be different every time\n * get data() {\n * return [1,2,3,4,5];\n * }\n * }\n * \n * \\@Component({ \n * selector: 'giant-list',\n * template: `\n * <li *ngFor=\"let d of dataProvider.data\">Data {{d}}</lig>\n * `,\n * })\n * class GiantList {\n * constructor(private ref: ChangeDetectorRef, private dataProvider:DataProvider) {\n * ref.detach();\n * setInterval(() => {\n * this.ref.detectChanges();\n * }, 5000);\n * }\n * }\n * \n * \\@Component({ \n * selector: 'app',\n * providers: [DataProvider],\n * template: `\n * <giant-list><giant-list>\n * `,\n * })\n * class App {\n * }\n * ```\n * @abstract\n * @return {?}\n */\ndetach() {}\n/**\n * Checks the change detector and its children.\n * \n * This can also be used in combination with {\\@link ChangeDetectorRef#detach} to implement local\n * change detection\n * checks.\n * \n * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->\n * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->\n * \n * ### Example\n * \n * The following example defines a component with a large list of readonly data.\n * Imagine, the data changes constantly, many times per second. For performance reasons,\n * we want to check and update the list every five seconds.\n * \n * We can do that by detaching the component's change detector and doing a local change detection\n * check\n * every five seconds.\n * \n * See {\\@link ChangeDetectorRef#detach} for more information.\n * @abstract\n * @return {?}\n */\ndetectChanges() {}\n/**\n * Checks the change detector and its children, and throws if any changes are detected.\n * \n * This is used in development mode to verify that running change detection doesn't introduce\n * other changes.\n * @abstract\n * @return {?}\n */\ncheckNoChanges() {}\n/**\n * Reattach the change detector to the change detector tree.\n * \n * This also marks OnPush ancestors as to be checked. This reattached change detector will be\n * checked during the next change detection run.\n * \n * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->\n * \n * ### Example ([live demo](http://plnkr.co/edit/aUhZha?p=preview))\n * \n * The following example creates a component displaying `live` data. The component will detach\n * its change detector from the main change detector tree when the component's live property\n * is set to false.\n * \n * ```typescript\n * class DataProvider {\n * data = 1;\n * \n * constructor() {\n * setInterval(() => {\n * this.data = this.data * 2;\n * }, 500);\n * }\n * }\n * \n * \\@Component({ \n * selector: 'live-data',\n * inputs: ['live'],\n * template: 'Data: {{dataProvider.data}}'\n * })\n * class LiveData {\n * constructor(private ref: ChangeDetectorRef, private dataProvider:DataProvider) {}\n * \n * set live(value) {\n * if (value)\n * this.ref.reattach();\n * else\n * this.ref.detach();\n * }\n * }\n * \n * \\@Component({ \n * selector: 'app',\n * providers: [DataProvider],\n * template: `\n * Live Update: <input type=\"checkbox\" [(ngModel)]=\"live\">\n * <live-data [live]=\"live\"><live-data>\n * `,\n * })\n * class App {\n * live = true;\n * }\n * ```\n * @abstract\n * @return {?}\n */\nreattach() {}\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\nimport {Injector} from '../di/injector';\nimport {ComponentFactory, ComponentRef} from './component_factory';\nimport {ElementRef} from './element_ref';\nimport {NgModuleRef} from './ng_module_factory';\nimport {TemplateRef} from './template_ref';\nimport {EmbeddedViewRef, ViewRef} from './view_ref';\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 */\nexport abstract class ViewContainerRef {\n/**\n * Anchor element that specifies the location of this container in the containing View.\n * <!-- TODO: rename to anchorElement -->\n * @abstract\n * @return {?}\n */\nelement() {}\n/**\n * @abstract\n * @return {?}\n */\ninjector() {}\n/**\n * @abstract\n * @return {?}\n */\nparentInjector() {}\n/**\n * Destroys all Views in this container.\n * @abstract\n * @return {?}\n */\nclear() {}\n/**\n * Returns the {\\@link ViewRef} for the View located in this container at the specified index.\n * @abstract\n * @param {?} index\n * @return {?}\n */\nget(index: number) {}\n/**\n * Returns the number of Views currently attached to this container.\n * @abstract\n * @return {?}\n */\nlength() {}\n/**\n * Instantiates an Embedded View based on the {\\@link TemplateRef `templateRef`} and inserts it\n * into this container at the specified `index`.\n * \n * If `index` is not specified, the new View will be inserted as the last View in the container.\n * \n * Returns the {\\@link ViewRef} for the newly created View.\n * @abstract\n * @template C\n * @param {?} templateRef\n * @param {?=} context\n * @param {?=} index\n * @return {?}\n */\ncreateEmbeddedView<C>(templateRef: TemplateRef<C>, context?: C, index?: number) {}\n/**\n * Instantiates a single {\\@link Component} and inserts its Host View into this container at the\n * specified `index`.\n * \n * The component is instantiated using its {\\@link ComponentFactory} which can be\n * obtained via {\\@link ComponentFactoryResolver#resolveComponentFactory}.\n * \n * If `index` is not specified, the new View will be inserted as the last View in the container.\n * \n * You can optionally specify the {\\@link Injector} that will be used as parent for the Component.\n * \n * Returns the {\\@link ComponentRef} of the Host View created for the newly instantiated Component.\n * @abstract\n * @template C\n * @param {?} componentFactory\n * @param {?=} index\n * @param {?=} injector\n * @param {?=} projectableNodes\n * @param {?=} ngModule\n * @return {?}\n */\ncreateComponent<C>(\n componentFactory: ComponentFactory<C>, index?: number, injector?: Injector,\n projectableNodes?: any[][], ngModule?: NgModuleRef<any>) {}\n/**\n * Inserts a View identified by a {\\@link ViewRef} into the container at the specified `index`.\n * \n * If `index` is not specified, the new View will be inserted as the last View in the container.\n * \n * Returns the inserted {\\@link ViewRef}.\n * @abstract\n * @param {?} viewRef\n * @param {?=} index\n * @return {?}\n */\ninsert(viewRef: ViewRef, index?: number) {}\n/**\n * Moves a View identified by a {\\@link ViewRef} into the container at the specified `index`.\n * \n * Returns the inserted {\\@link ViewRef}.\n * @abstract\n * @param {?} viewRef\n * @param {?} currentIndex\n * @return {?}\n */\nmove(viewRef: ViewRef, currentIndex: number) {}\n/**\n * Returns the index of the View, specified via {\\@link ViewRef}, within the current container or\n * `-1` if this container doesn't contain the View.\n * @abstract\n * @param {?} viewRef\n * @return {?}\n */\nindexOf(viewRef: ViewRef) {}\n/**\n * Destroys a View attached to this container at the specified `index`.\n * \n * If `index` is not specified, the last View in the container will be removed.\n * @abstract\n * @param {?=} index\n * @return {?}\n */\nremove(index?: number) {}\n/**\n * Use along with {\\@link #insert} to move a View within the current container.\n * \n * If the `index` param is omitted, the last {\\@link ViewRef} is detached.\n * @abstract\n * @param {?=} index\n * @return {?}\n */\ndetach(index?: number) {}\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\nimport {ElementRef} from './element_ref';\nimport {EmbeddedViewRef} from './view_ref';\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\n * {\\@link ViewContainerRef#createEmbeddedView}, which will create the View and attach it to the\n * View Container.\n * \\@stable\n * @abstract\n */\nexport abstract class TemplateRef<C> {\n/**\n * @abstract\n * @return {?}\n */\nelementRef() {}\n/**\n * @abstract\n * @param {?} context\n * @return {?}\n */\ncreateEmbeddedView(context: C) {}\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\nimport {Injectable, Optional} from '../di';\n\nimport {Compiler} from './compiler';\nimport {NgModuleFactory} from './ng_module_factory';\nimport {NgModuleFactoryLoader} from './ng_module_factory_loader';\n\nconst /** @type {?} */ _SEPARATOR = '#';\n\nconst /** @type {?} */ FACTORY_CLASS_SUFFIX = 'NgFactory';\n/**\n * Configuration for SystemJsNgModuleLoader.\n * token.\n * \n * \\@experimental\n * @abstract\n */\nexport abstract class SystemJsNgModuleLoaderConfig {\n /**\n * Prefix to add when computing the name of the factory module for a given module name.\n */\n factoryPathPrefix: string;\n\n /**\n * Suffix to add when computing the name of the factory module for a given module name.\n */\n factoryPathSuffix: string;\n}\n\nfunction SystemJsNgModuleLoaderConfig_tsickle_Closure_declarations() {\n/**\n * Prefix to add when computing the name of the factory module for a given module name.\n * @type {?}\n */\nSystemJsNgModuleLoaderConfig.prototype.factoryPathPrefix;\n/**\n * Suffix to add when computing the name of the factory module for a given module name.\n * @type {?}\n */\nSystemJsNgModuleLoaderConfig.prototype.factoryPathSuffix;\n}\n\n\nconst /** @type {?} */ DEFAULT_CONFIG: SystemJsNgModuleLoaderConfig = {\n factoryPathPrefix: '',\n factoryPathSuffix: '.ngfactory',\n};\n/**\n * NgModuleFactoryLoader that uses SystemJS to load NgModuleFactory\n * \\@experimental\n */\nexport class SystemJsNgModuleLoader implements NgModuleFactoryLoader {\nprivate _config: SystemJsNgModuleLoaderConfig;\n/**\n * @param {?} _compiler\n * @param {?=} config\n */\nconstructor(private _compiler: Compiler, config?: SystemJsNgModuleLoaderConfig) {\n this._config = config || DEFAULT_CONFIG;\n }\n/**\n * @param {?} path\n * @return {?}\n */\nload(path: string): Promise<NgModuleFactory<any>> {\n const /** @type {?} */ offlineMode = this._compiler instanceof Compiler;\n return offlineMode ? this.loadFactory(path) : this.loadAndCompile(path);\n }\n/**\n * @param {?} path\n * @return {?}\n */\nprivate loadAndCompile(path: string): Promise<NgModuleFactory<any>> {\n let [module, exportName] = path.split(_SEPARATOR);\n if (exportName === undefined) {\n exportName = 'default';\n }\n\n return System.import(module)\n .then((module: any) => module[exportName])\n .then((type: any) => checkNotEmpty(type, module, exportName))\n .then((type: any) => this._compiler.compileModuleAsync(type));\n }\n/**\n * @param {?} path\n * @return {?}\n */\nprivate loadFactory(path: string): Promise<NgModuleFactory<any>> {\n let [module, exportName] = path.split(_SEPARATOR);\n let /** @type {?} */ factoryClassSuffix = FACTORY_CLASS_SUFFIX;\n if (exportName === undefined) {\n exportName = 'default';\n factoryClassSuffix = '';\n }\n\n return System.import(this._config.factoryPathPrefix + module + this._config.factoryPathSuffix)\n .then((module: any) => module[exportName + factoryClassSuffix])\n .then((factory: any) => checkNotEmpty(factory, module, exportName));\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: Compiler, },\n{type: SystemJsNgModuleLoaderConfig, decorators: [{ type: Optional }, ]},\n];\n}\n\nfunction SystemJsNgModuleLoader_tsickle_Closure_declarations() {\n/** @type {?} */\nSystemJsNgModuleLoader.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nSystemJsNgModuleLoader.ctorParameters;\n/** @type {?} */\nSystemJsNgModuleLoader.prototype._config;\n/** @type {?} */\nSystemJsNgModuleLoader.prototype._compiler;\n}\n\n/**\n * @param {?} value\n * @param {?} modulePath\n * @param {?} exportName\n * @return {?}\n */\nfunction checkNotEmpty(value: any, modulePath: string, exportName: string): any {\n if (!value) {\n throw new Error(`Cannot find '${exportName}' in '${modulePath}'`);\n }\n return value;\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\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\nimport {Observable} from 'rxjs/Observable';\n\nimport {EventEmitter} from '../event_emitter';\nimport {getSymbolIterator} from '../util';\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 */\nexport class QueryList<T>/* implements Iterable<T> */ {\nprivate _dirty = true;\nprivate _results: Array<T> = [];\nprivate _emitter = new EventEmitter();\n/**\n * @return {?}\n */\nget changes(): Observable<any> { return this._emitter; }\n/**\n * @return {?}\n */\nget length(): number { return this._results.length; }\n/**\n * @return {?}\n */\nget first(): T { return this._results[0]; }\n/**\n * @return {?}\n */\nget last(): T { return this._results[this.length - 1]; }\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 */\nmap<U>(fn: (item: T, index: number, array: T[]) => U): U[] { 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 * @param {?} fn\n * @return {?}\n */\nfilter(fn: (item: T, index: number, array: T[]) => boolean): T[] {\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 * @param {?} fn\n * @return {?}\n */\nfind(fn: (item: T, index: number, array: T[]) => boolean): T|undefined {\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 * @template U\n * @param {?} fn\n * @param {?} init\n * @return {?}\n */\nreduce<U>(fn: (prevValue: U, curValue: T, curIndex: number, array: T[]) => U, init: U): U {\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 * @param {?} fn\n * @return {?}\n */\nforEach(fn: (item: T, index: number, array: T[]) => void): void { 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 * @param {?} fn\n * @return {?}\n */\nsome(fn: (value: T, index: number, array: T[]) => boolean): boolean {\n return this._results.some(fn);\n }\n/**\n * @return {?}\n */\ntoArray(): T[] { return this._results.slice(); }\n/**\n * @return {?}\n */\n[getSymbolIterator()](): Iterator<T> { return ( /** @type {?} */((this._results as any)))[getSymbolIterator()](); }\n/**\n * @return {?}\n */\ntoString(): string { return this._results.toString(); }\n/**\n * @param {?} res\n * @return {?}\n */\nreset(res: Array<T|any[]>): void {\n this._results = flatten(res);\n this._dirty = false;\n }\n/**\n * @return {?}\n */\nnotifyOnChanges(): void { this._emitter.emit(this); }\n/**\n * internal\n * @return {?}\n */\nsetDirty() { this._dirty = true; }\n/**\n * internal\n * @return {?}\n */\nget dirty() { return this._dirty; }\n}\n\nfunction QueryList_tsickle_Closure_declarations() {\n/** @type {?} */\nQueryList.prototype._dirty;\n/** @type {?} */\nQueryList.prototype._results;\n/** @type {?} */\nQueryList.prototype._emitter;\n}\n\n/**\n * @template T\n * @param {?} list\n * @return {?}\n */\nfunction flatten<T>(list: Array<T|T[]>): T[] {\n return list.reduce((flat: any[], item: T | T[]): T[] => {\n const /** @type {?} */ flatItem = Array.isArray(item) ? flatten(item) : item;\n return ( /** @type {?} */((<T[]>flat))).concat(flatItem);\n }, []);\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\nimport {NgModuleFactory} from './ng_module_factory';\n/**\n * Used to load ng module factories.\n * \\@stable\n * @abstract\n */\nexport abstract class NgModuleFactoryLoader {\n/**\n * @abstract\n * @param {?} path\n * @return {?}\n */\nload(path: string) {}\n}\n\nlet /** @type {?} */ moduleFactories = new Map<string, NgModuleFactory<any>>();\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 */\nexport function registerModuleFactory(id: string, factory: NgModuleFactory<any>) {\n const /** @type {?} */ existing = moduleFactories.get(id);\n if (existing) {\n throw new Error(`Duplicate module registered for ${id\n } - ${existing.moduleType.name} vs ${factory.moduleType.name}`);\n }\n moduleFactories.set(id, factory);\n}\n/**\n * @return {?}\n */\nexport function clearModulesForTest() {\n moduleFactories = new Map<string, NgModuleFactory<any>>();\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 */\nexport function getModuleFactory(id: string): NgModuleFactory<any> {\n const /** @type {?} */ factory = moduleFactories.get(id);\n if (!factory) throw new Error(`No module with ID ${id} loaded`);\n return factory;\n}\n","\nexport class ElementRef {\n/**\n * The underlying native element or `null` if direct access to native elements is not supported\n * (e.g. when the application runs in a web worker).\n * \n * <div class=\"callout is-critical\">\n * <header>Use with caution</header>\n * <p>\n * Use this API as the last resort when direct access to DOM is needed. Use templating and\n * data-binding provided by Angular instead. Alternatively you take a look at {\\@link Renderer}\n * which provides API that can safely be used even when direct access to native elements is not\n * supported.\n * </p>\n * <p>\n * Relying on direct DOM access creates tight coupling between your application and rendering\n * layers which will make it impossible to separate the two and deploy your application into a\n * web worker.\n * </p>\n * </div>\n * \\@stable\n */\npublic nativeElement: any;\n/**\n * @param {?} nativeElement\n */\nconstructor(nativeElement: any) { this.nativeElement = nativeElement; }\n}\n\nfunction ElementRef_tsickle_Closure_declarations() {\n/**\n * The underlying native element or `null` if direct access to native elements is not supported\n * (e.g. when the application runs in a web worker).\n * \n * <div class=\"callout is-critical\">\n * <header>Use with caution</header>\n * <p>\n * Use this API as the last resort when direct access to DOM is needed. Use templating and\n * data-binding provided by Angular instead. Alternatively you take a look at {\\@link Renderer}\n * which provides API that can safely be used even when direct access to native elements is not\n * supported.\n * </p>\n * <p>\n * Relying on direct DOM access creates tight coupling between your application and rendering\n * layers which will make it impossible to separate the two and deploy your application into a\n * web worker.\n * </p>\n * </div>\n * \\@stable\n * @type {?}\n */\nElementRef.prototype.nativeElement;\n}\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// Public API for render\nexport {RenderComponentType, Renderer, Renderer2, RendererFactory2, RendererStyleFlags2, RendererType2, RootRenderer} from './render/api';\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\nimport {InjectionToken, Injector} from '../di';\nimport {ViewEncapsulation} from '../metadata/view';\n/**\n * @deprecated Use `RendererType2` (and `Renderer2`) instead.\n */\nexport class RenderComponentType {\n/**\n * @param {?} id\n * @param {?} templateUrl\n * @param {?} slotCount\n * @param {?} encapsulation\n * @param {?} styles\n * @param {?} animations\n */\nconstructor(\npublic id: string,\npublic templateUrl: string,\npublic slotCount: number,\npublic encapsulation: ViewEncapsulation,\npublic styles: Array<string|any[]>,\npublic animations: any) {}\n}\n\nfunction RenderComponentType_tsickle_Closure_declarations() {\n/** @type {?} */\nRenderComponentType.prototype.id;\n/** @type {?} */\nRenderComponentType.prototype.templateUrl;\n/** @type {?} */\nRenderComponentType.prototype.slotCount;\n/** @type {?} */\nRenderComponentType.prototype.encapsulation;\n/** @type {?} */\nRenderComponentType.prototype.styles;\n/** @type {?} */\nRenderComponentType.prototype.animations;\n}\n\n/**\n * @deprecated Debug info is handeled internally in the view engine now.\n * @abstract\n */\nexport abstract class RenderDebugInfo {\n/**\n * @abstract\n * @return {?}\n */\ninjector() {}\n/**\n * @abstract\n * @return {?}\n */\ncomponent() {}\n/**\n * @abstract\n * @return {?}\n */\nproviderTokens() {}\n/**\n * @abstract\n * @return {?}\n */\nreferences() {}\n/**\n * @abstract\n * @return {?}\n */\ncontext() {}\n/**\n * @abstract\n * @return {?}\n */\nsource() {}\n}\n\n/**\n * @deprecated Use the `Renderer2` instead.\n */\nexport interface DirectRenderer {\n remove(node: any): void;\n appendChild(node: any, parent: any): void;\n insertBefore(node: any, refNode: any): void;\n nextSibling(node: any): any;\n parentElement(node: any): any;\n}\n/**\n * @deprecated Use the `Renderer2` instead.\n * @abstract\n */\nexport abstract class Renderer {\n/**\n * @abstract\n * @param {?} selectorOrNode\n * @param {?=} debugInfo\n * @return {?}\n */\nselectRootElement(selectorOrNode: string|any, debugInfo?: RenderDebugInfo) {}\n/**\n * @abstract\n * @param {?} parentElement\n * @param {?} name\n * @param {?=} debugInfo\n * @return {?}\n */\ncreateElement(parentElement: any, name: string, debugInfo?: RenderDebugInfo) {}\n/**\n * @abstract\n * @param {?} hostElement\n * @return {?}\n */\ncreateViewRoot(hostElement: any) {}\n/**\n * @abstract\n * @param {?} parentElement\n * @param {?=} debugInfo\n * @return {?}\n */\ncreateTemplateAnchor(parentElement: any, debugInfo?: RenderDebugInfo) {}\n/**\n * @abstract\n * @param {?} parentElement\n * @param {?} value\n * @param {?=} debugInfo\n * @return {?}\n */\ncreateText(parentElement: any, value: string, debugInfo?: RenderDebugInfo) {}\n/**\n * @abstract\n * @param {?} parentElement\n * @param {?} nodes\n * @return {?}\n */\nprojectNodes(parentElement: any, nodes: any[]) {}\n/**\n * @abstract\n * @param {?} node\n * @param {?} viewRootNodes\n * @return {?}\n */\nattachViewAfter(node: any, viewRootNodes: any[]) {}\n/**\n * @abstract\n * @param {?} viewRootNodes\n * @return {?}\n */\ndetachView(viewRootNodes: any[]) {}\n/**\n * @abstract\n * @param {?} hostElement\n * @param {?} viewAllNodes\n * @return {?}\n */\ndestroyView(hostElement: any, viewAllNodes: any[]) {}\n/**\n * @abstract\n * @param {?} renderElement\n * @param {?} name\n * @param {?} callback\n * @return {?}\n */\nlisten(renderElement: any, name: string, callback: Function) {}\n/**\n * @abstract\n * @param {?} target\n * @param {?} name\n * @param {?} callback\n * @return {?}\n */\nlistenGlobal(target: string, name: string, callback: Function) {}\n/**\n * @abstract\n * @param {?} renderElement\n * @param {?} propertyName\n * @param {?} propertyValue\n * @return {?}\n */\nsetElementProperty(renderElement: any, propertyName: string, propertyValue: any) {}\n/**\n * @abstract\n * @param {?} renderElement\n * @param {?} attributeName\n * @param {?} attributeValue\n * @return {?}\n */\nsetElementAttribute(renderElement: any, attributeName: string, attributeValue: string) {}\n/**\n * Used only in debug mode to serialize property changes to dom nodes as attributes.\n * @abstract\n * @param {?} renderElement\n * @param {?} propertyName\n * @param {?} propertyValue\n * @return {?}\n */\nsetBindingDebugInfo(renderElement: any, propertyName: string, propertyValue: string) {}\n/**\n * @abstract\n * @param {?} renderElement\n * @param {?} className\n * @param {?} isAdd\n * @return {?}\n */\nsetElementClass(renderElement: any, className: string, isAdd: boolean) {}\n/**\n * @abstract\n * @param {?} renderElement\n * @param {?} styleName\n * @param {?} styleValue\n * @return {?}\n */\nsetElementStyle(renderElement: any, styleName: string, styleValue: string) {}\n/**\n * @abstract\n * @param {?} renderElement\n * @param {?} methodName\n * @param {?=} args\n * @return {?}\n */\ninvokeElementMethod(renderElement: any, methodName: string, args?: any[]) {}\n/**\n * @abstract\n * @param {?} renderNode\n * @param {?} text\n * @return {?}\n */\nsetText(renderNode: any, text: string) {}\n/**\n * @abstract\n * @param {?} element\n * @param {?} startingStyles\n * @param {?} keyframes\n * @param {?} duration\n * @param {?} delay\n * @param {?} easing\n * @param {?=} previousPlayers\n * @return {?}\n */\nanimate(\n element: any, startingStyles: any, keyframes: any[], duration: number, delay: number,\n easing: string, previousPlayers?: any[]) {}\n}\n\nexport const /** @type {?} */ Renderer2Interceptor = new InjectionToken<Renderer2[]>('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 #setElementProperty} or {\\@link #setElementAttribute}\n * 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 */\nexport abstract class RootRenderer {\n/**\n * @abstract\n * @param {?} componentType\n * @return {?}\n */\nrenderComponent(componentType: RenderComponentType) {}\n}\n\n/**\n * @experimental\n */\nexport interface RendererType2 {\n id: string;\n encapsulation: ViewEncapsulation;\n styles: (string|any[])[];\n data: {[kind: string]: any};\n}\n/**\n * \\@experimental\n * @abstract\n */\nexport abstract class RendererFactory2 {\n/**\n * @abstract\n * @param {?} hostElement\n * @param {?} type\n * @return {?}\n */\ncreateRenderer(hostElement: any, type: RendererType2|null) {}\n}\nexport type RendererStyleFlags2 = number;\nexport let RendererStyleFlags2: any = {};\nRendererStyleFlags2.Important = 1;\nRendererStyleFlags2.DashCase = 2;\nRendererStyleFlags2[RendererStyleFlags2.Important] = \"Important\";\nRendererStyleFlags2[RendererStyleFlags2.DashCase] = \"DashCase\";\n\n/**\n * \\@experimental\n * @abstract\n */\nexport abstract class Renderer2 {\n/**\n * This field can be used to store arbitrary data on this renderer instance.\n * This is useful for renderers that delegate to other renderers.\n * @abstract\n * @return {?}\n */\ndata() {}\n/**\n * @abstract\n * @return {?}\n */\ndestroy() {}\n/**\n * @abstract\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\ncreateElement(name: string, namespace?: string|null) {}\n/**\n * @abstract\n * @param {?} value\n * @return {?}\n */\ncreateComment(value: string) {}\n/**\n * @abstract\n * @param {?} value\n * @return {?}\n */\ncreateText(value: string) {}\n /**\n * This property is allowed to be null / undefined,\n * in which case the view engine won't call it.\n * This is used as a performance optimization for production mode.\n */\n destroyNode: ((node: any) => void)|null;\n/**\n * @abstract\n * @param {?} parent\n * @param {?} newChild\n * @return {?}\n */\nappendChild(parent: any, newChild: any) {}\n/**\n * @abstract\n * @param {?} parent\n * @param {?} newChild\n * @param {?} refChild\n * @return {?}\n */\ninsertBefore(parent: any, newChild: any, refChild: any) {}\n/**\n * @abstract\n * @param {?} parent\n * @param {?} oldChild\n * @return {?}\n */\nremoveChild(parent: any, oldChild: any) {}\n/**\n * @abstract\n * @param {?} selectorOrNode\n * @return {?}\n */\nselectRootElement(selectorOrNode: string|any) {}\n/**\n * Attention: On WebWorkers, this will always return a value,\n * as we are asking for a result synchronously. I.e.\n * the caller can't rely on checking whether this is null or not.\n * @abstract\n * @param {?} node\n * @return {?}\n */\nparentNode(node: any) {}\n/**\n * Attention: On WebWorkers, this will always return a value,\n * as we are asking for a result synchronously. I.e.\n * the caller can't rely on checking whether this is null or not.\n * @abstract\n * @param {?} node\n * @return {?}\n */\nnextSibling(node: any) {}\n/**\n * @abstract\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @param {?=} namespace\n * @return {?}\n */\nsetAttribute(el: any, name: string, value: string, namespace?: string|null) {}\n/**\n * @abstract\n * @param {?} el\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\nremoveAttribute(el: any, name: string, namespace?: string|null) {}\n/**\n * @abstract\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\naddClass(el: any, name: string) {}\n/**\n * @abstract\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\nremoveClass(el: any, name: string) {}\n/**\n * @abstract\n * @param {?} el\n * @param {?} style\n * @param {?} value\n * @param {?=} flags\n * @return {?}\n */\nsetStyle(el: any, style: string, value: any, flags?: RendererStyleFlags2) {}\n/**\n * @abstract\n * @param {?} el\n * @param {?} style\n * @param {?=} flags\n * @return {?}\n */\nremoveStyle(el: any, style: string, flags?: RendererStyleFlags2) {}\n/**\n * @abstract\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nsetProperty(el: any, name: string, value: any) {}\n/**\n * @abstract\n * @param {?} node\n * @param {?} value\n * @return {?}\n */\nsetValue(node: any, value: string) {}\n/**\n * @abstract\n * @param {?} target\n * @param {?} eventName\n * @param {?} callback\n * @return {?}\n */\nlisten(\n target: 'window'|'document'|'body'|any, eventName: string,\n callback: (event: any) => boolean | void) {}\n}\n\nfunction Renderer2_tsickle_Closure_declarations() {\n/**\n * This property is allowed to be null / undefined,\n * in which case the view engine won't call it.\n * This is used as a performance optimization for production mode.\n * @type {?}\n */\nRenderer2.prototype.destroyNode;\n}\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// Public API for Zone\nexport {NgZone} from './zone/ng_zone';\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\nimport {Observable} from 'rxjs/Observable';\nimport {Observer} from 'rxjs/Observer';\nimport {Subscription} from 'rxjs/Subscription';\nimport {merge} from 'rxjs/observable/merge';\nimport {share} from 'rxjs/operator/share';\n\nimport {ErrorHandler} from '../src/error_handler';\nimport {scheduleMicroTask, stringify} from '../src/util';\nimport {isPromise} from '../src/util/lang';\n\nimport {ApplicationInitStatus} from './application_init';\nimport {APP_BOOTSTRAP_LISTENER, PLATFORM_INITIALIZER} from './application_tokens';\nimport {Console} from './console';\nimport {Injectable, InjectionToken, Injector, Provider, ReflectiveInjector} from './di';\nimport {CompilerFactory, CompilerOptions} from './linker/compiler';\nimport {ComponentFactory, ComponentRef} from './linker/component_factory';\nimport {ComponentFactoryBoundToModule, ComponentFactoryResolver} from './linker/component_factory_resolver';\nimport {NgModuleFactory, NgModuleInjector, NgModuleRef} from './linker/ng_module_factory';\nimport {InternalViewRef, ViewRef} from './linker/view_ref';\nimport {WtfScopeFn, wtfCreateScope, wtfLeave} from './profile/profile';\nimport {Testability, TestabilityRegistry} from './testability/testability';\nimport {Type} from './type';\nimport {NgZone} from './zone/ng_zone';\n\nlet /** @type {?} */ _devMode: boolean = true;\nlet /** @type {?} */ _runModeLocked: boolean = false;\nlet /** @type {?} */ _platform: PlatformRef;\n\nexport const /** @type {?} */ ALLOW_MULTIPLE_PLATFORMS = new InjectionToken<boolean>('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 */\nexport function enableProdMode(): void {\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 */\nexport function isDevMode(): boolean {\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 */\nexport class NgProbeToken {\n/**\n * @param {?} name\n * @param {?} token\n */\nconstructor(public name: string,\npublic token: any) {}\n}\n\nfunction NgProbeToken_tsickle_Closure_declarations() {\n/** @type {?} */\nNgProbeToken.prototype.name;\n/** @type {?} */\nNgProbeToken.prototype.token;\n}\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 */\nexport function createPlatform(injector: Injector): PlatformRef {\n if (_platform && !_platform.destroyed &&\n !_platform.injector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {\n throw new Error(\n 'There can be only one platform. Destroy the previous one to create a new one.');\n }\n _platform = injector.get(PlatformRef);\n const /** @type {?} */ inits = injector.get(PLATFORM_INITIALIZER, null);\n if (inits) inits.forEach((init: any) => 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 */\nexport function createPlatformFactory(\n parentPlatformFactory: ((extraProviders?: Provider[]) => PlatformRef) | null, name: string,\n providers: Provider[] = []): (extraProviders?: Provider[]) => PlatformRef {\n const /** @type {?} */ marker = new InjectionToken(`Platform: ${name}`);\n return (extraProviders: Provider[] = []) => {\n let /** @type {?} */ platform = getPlatform();\n if (!platform || platform.injector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {\n if (parentPlatformFactory) {\n parentPlatformFactory(\n providers.concat(extraProviders).concat({provide: marker, useValue: true}));\n } else {\n createPlatform(ReflectiveInjector.resolveAndCreate(\n providers.concat(extraProviders).concat({provide: marker, useValue: true})));\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 */\nexport function assertPlatform(requiredToken: any): PlatformRef {\n const /** @type {?} */ platform = getPlatform();\n\n if (!platform) {\n throw new Error('No platform exists!');\n }\n\n if (!platform.injector.get(requiredToken, null)) {\n throw new Error(\n 'A platform with a different configuration has been created. Please destroy it first.');\n }\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 */\nexport function destroyPlatform(): void {\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 */\nexport function getPlatform(): PlatformRef|null {\n return _platform && !_platform.destroyed ? _platform : null;\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 * @abstract\n */\nexport abstract class PlatformRef {\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 * @abstract\n * @template M\n * @param {?} moduleFactory\n * @return {?}\n */\nbootstrapModuleFactory<M>(moduleFactory: NgModuleFactory<M>) {}\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 * @abstract\n * @template M\n * @param {?} moduleType\n * @param {?=} compilerOptions\n * @return {?}\n */\nbootstrapModule<M>(\n moduleType: Type<M>,\n compilerOptions?: CompilerOptions|CompilerOptions[]) {}\n/**\n * Register a listener to be called when the platform is disposed.\n * @abstract\n * @param {?} callback\n * @return {?}\n */\nonDestroy(callback: () => void) {}\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 * @abstract\n * @return {?}\n */\ninjector() {}\n/**\n * Destroy the Angular platform and all Angular applications on the page.\n * @abstract\n * @return {?}\n */\ndestroy() {}\n/**\n * @abstract\n * @return {?}\n */\ndestroyed() {}\n}\n/**\n * @param {?} errorHandler\n * @param {?} callback\n * @return {?}\n */\nfunction _callAndReportToErrorHandler(errorHandler: ErrorHandler, callback: () => any): any {\n try {\n const /** @type {?} */ result = callback();\n if (isPromise(result)) {\n return result.catch((e: any) => {\n errorHandler.handleError(e);\n // rethrow as the exception handler might not do it\n throw e;\n });\n }\n\n return result;\n } catch ( /** @type {?} */e) {\n errorHandler.handleError(e);\n // rethrow as the exception handler might not do it\n throw e;\n }\n}\n/**\n * workaround https://github.com/angular/tsickle/issues/350\n * @suppress {checkTypes}\n */\nexport class PlatformRef_ extends PlatformRef {\nprivate _modules: NgModuleRef<any>[] = [];\nprivate _destroyListeners: Function[] = [];\nprivate _destroyed: boolean = false;\n/**\n * @param {?} _injector\n */\nconstructor(private _injector: Injector) { super(); }\n/**\n * @param {?} callback\n * @return {?}\n */\nonDestroy(callback: () => void): void { this._destroyListeners.push(callback); }\n/**\n * @return {?}\n */\nget injector(): Injector { return this._injector; }\n/**\n * @return {?}\n */\nget destroyed() { return this._destroyed; }\n/**\n * @return {?}\n */\ndestroy() {\n if (this._destroyed) {\n throw new Error('The platform has already been destroyed!');\n }\n this._modules.slice().forEach(module => module.destroy());\n this._destroyListeners.forEach(listener => listener());\n this._destroyed = true;\n }\n/**\n * @template M\n * @param {?} moduleFactory\n * @return {?}\n */\nbootstrapModuleFactory<M>(moduleFactory: NgModuleFactory<M>): Promise<NgModuleRef<M>> {\n return this._bootstrapModuleFactoryWithZone(moduleFactory);\n }\n/**\n * @template M\n * @param {?} moduleFactory\n * @param {?=} ngZone\n * @return {?}\n */\nprivate _bootstrapModuleFactoryWithZone<M>(moduleFactory: NgModuleFactory<M>, ngZone?: NgZone):\n Promise<NgModuleRef<M>> {\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 if (!ngZone) ngZone = new NgZone({enableLongStackTrace: isDevMode()});\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(() => {\n const /** @type {?} */ ngZoneInjector =\n ReflectiveInjector.resolveAndCreate([{provide: NgZone, useValue: ngZone}], this.injector);\n const /** @type {?} */ moduleRef = /** @type {?} */(( <NgModuleInjector<M>>moduleFactory.create(ngZoneInjector)));\n const /** @type {?} */ exceptionHandler: ErrorHandler = moduleRef.injector.get(ErrorHandler, null);\n if (!exceptionHandler) {\n throw new Error('No ErrorHandler. Is platform module (BrowserModule) included?');\n }\n moduleRef.onDestroy(() => remove(this._modules, moduleRef)); /** @type {?} */((\n ngZone)).onError.subscribe({next: (error: any) => { exceptionHandler.handleError(error); }});\n return _callAndReportToErrorHandler(exceptionHandler, () => {\n const /** @type {?} */ initStatus: ApplicationInitStatus = moduleRef.injector.get(ApplicationInitStatus);\n return initStatus.donePromise.then(() => {\n this._moduleDoBootstrap(moduleRef);\n return moduleRef;\n });\n });\n });\n }\n/**\n * @template M\n * @param {?} moduleType\n * @param {?=} compilerOptions\n * @return {?}\n */\nbootstrapModule<M>(moduleType: Type<M>, compilerOptions: CompilerOptions|CompilerOptions[] = []):\n Promise<NgModuleRef<M>> {\n return this._bootstrapModuleWithZone(moduleType, compilerOptions);\n }\n/**\n * @template M\n * @param {?} moduleType\n * @param {?=} compilerOptions\n * @param {?=} ngZone\n * @return {?}\n */\nprivate _bootstrapModuleWithZone<M>(\n moduleType: Type<M>, compilerOptions: CompilerOptions|CompilerOptions[] = [],\n ngZone?: NgZone): Promise<NgModuleRef<M>> {\n const /** @type {?} */ compilerFactory: CompilerFactory = this.injector.get(CompilerFactory);\n const /** @type {?} */ compiler = compilerFactory.createCompiler(\n Array.isArray(compilerOptions) ? compilerOptions : [compilerOptions]);\n\n return compiler.compileModuleAsync(moduleType)\n .then((moduleFactory) => this._bootstrapModuleFactoryWithZone(moduleFactory, ngZone));\n }\n/**\n * @param {?} moduleRef\n * @return {?}\n */\nprivate _moduleDoBootstrap(moduleRef: NgModuleInjector<any>): void {\n const /** @type {?} */ appRef = moduleRef.injector.get(ApplicationRef);\n if (moduleRef.bootstrapFactories.length > 0) {\n moduleRef.bootstrapFactories.forEach(f => appRef.bootstrap(f));\n } else if (moduleRef.instance.ngDoBootstrap) {\n moduleRef.instance.ngDoBootstrap(appRef);\n } else {\n throw new Error(\n `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 }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: Injector, },\n];\n}\n\nfunction PlatformRef__tsickle_Closure_declarations() {\n/** @type {?} */\nPlatformRef_.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nPlatformRef_.ctorParameters;\n/** @type {?} */\nPlatformRef_.prototype._modules;\n/** @type {?} */\nPlatformRef_.prototype._destroyListeners;\n/** @type {?} */\nPlatformRef_.prototype._destroyed;\n/** @type {?} */\nPlatformRef_.prototype._injector;\n}\n\n/**\n * A reference to an Angular application running on a page.\n * \n * \\@stable\n * @abstract\n */\nexport abstract class ApplicationRef {\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 * ### Example\n * {\\@example core/ts/platform/platform.ts region='longform'}\n * @abstract\n * @template C\n * @param {?} componentFactory\n * @return {?}\n */\nbootstrap<C>(componentFactory: ComponentFactory<C>|Type<C>) {}\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 * @abstract\n * @return {?}\n */\ntick() {}\n/**\n * Get a list of component types registered to this application.\n * This list is populated even before the component is created.\n * @abstract\n * @return {?}\n */\ncomponentTypes() {}\n/**\n * Get a list of components registered to this application.\n * @abstract\n * @return {?}\n */\ncomponents() {}\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 * @abstract\n * @param {?} view\n * @return {?}\n */\nattachView(view: ViewRef) {}\n/**\n * Detaches a view from dirty checking again.\n * @abstract\n * @param {?} view\n * @return {?}\n */\ndetachView(view: ViewRef) {}\n/**\n * Returns the number of attached views.\n * @abstract\n * @return {?}\n */\nviewCount() {}\n/**\n * Returns an Observable that indicates when the application is stable or unstable.\n * @abstract\n * @return {?}\n */\nisStable() {}\n}\n/**\n * workaround https://github.com/angular/tsickle/issues/350\n * @suppress {checkTypes}\n */\nexport class ApplicationRef_ extends ApplicationRef {\n/**\n * \\@internal\n */\nstatic _tickScope: WtfScopeFn = wtfCreateScope('ApplicationRef#tick()');\nprivate _bootstrapListeners: ((compRef: ComponentRef<any>) => void)[] = [];\nprivate _rootComponents: ComponentRef<any>[] = [];\nprivate _rootComponentTypes: Type<any>[] = [];\nprivate _views: InternalViewRef[] = [];\nprivate _runningTick: boolean = false;\nprivate _enforceNoNewChanges: boolean = false;\nprivate _isStable: Observable<boolean>;\nprivate _stable = true;\n/**\n * @param {?} _zone\n * @param {?} _console\n * @param {?} _injector\n * @param {?} _exceptionHandler\n * @param {?} _componentFactoryResolver\n * @param {?} _initStatus\n */\nconstructor(\nprivate _zone: NgZone,\nprivate _console: Console,\nprivate _injector: Injector,\nprivate _exceptionHandler: ErrorHandler,\nprivate _componentFactoryResolver: ComponentFactoryResolver,\nprivate _initStatus: ApplicationInitStatus) {\n super();\n this._enforceNoNewChanges = isDevMode();\n\n this._zone.onMicrotaskEmpty.subscribe(\n {next: () => { this._zone.run(() => { this.tick(); }); }});\n\n const isCurrentlyStable = new Observable<boolean>((observer: Observer<boolean>) => {\n this._stable = this._zone.isStable && !this._zone.hasPendingMacrotasks &&\n !this._zone.hasPendingMicrotasks;\n this._zone.runOutsideAngular(() => {\n observer.next(this._stable);\n observer.complete();\n });\n });\n\n const isStable = new Observable<boolean>((observer: Observer<boolean>) => {\n const stableSub: Subscription = this._zone.onStable.subscribe(() => {\n NgZone.assertNotInAngularZone();\n\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(() => {\n if (!this._stable && !this._zone.hasPendingMacrotasks &&\n !this._zone.hasPendingMicrotasks) {\n this._stable = true;\n observer.next(true);\n }\n });\n });\n\n const unstableSub: Subscription = this._zone.onUnstable.subscribe(() => {\n NgZone.assertInAngularZone();\n if (this._stable) {\n this._stable = false;\n this._zone.runOutsideAngular(() => { observer.next(false); });\n }\n });\n\n return () => {\n stableSub.unsubscribe();\n unstableSub.unsubscribe();\n };\n });\n\n this._isStable = merge(isCurrentlyStable, share.call(isStable));\n }\n/**\n * @param {?} viewRef\n * @return {?}\n */\nattachView(viewRef: ViewRef): void {\n const /** @type {?} */ view = ( /** @type {?} */((viewRef as InternalViewRef)));\n this._views.push(view);\n view.attachToAppRef(this);\n }\n/**\n * @param {?} viewRef\n * @return {?}\n */\ndetachView(viewRef: ViewRef): void {\n const /** @type {?} */ view = ( /** @type {?} */((viewRef as InternalViewRef)));\n remove(this._views, view);\n view.detachFromAppRef();\n }\n/**\n * @template C\n * @param {?} componentOrFactory\n * @return {?}\n */\nbootstrap<C>(componentOrFactory: ComponentFactory<C>|Type<C>): ComponentRef<C> {\n if (!this._initStatus.done) {\n throw new Error(\n 'Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.');\n }\n let /** @type {?} */ componentFactory: ComponentFactory<C>;\n if (componentOrFactory instanceof ComponentFactory) {\n componentFactory = componentOrFactory;\n } else {\n componentFactory = /** @type {?} */((\n this._componentFactoryResolver.resolveComponentFactory(componentOrFactory)));\n }\n this._rootComponentTypes.push(componentFactory.componentType);\n\n // Create a factory associated with the current module if it's not bound to some other\n const /** @type {?} */ ngModule = componentFactory instanceof ComponentFactoryBoundToModule ?\n null :\n this._injector.get(NgModuleRef);\n const /** @type {?} */ compRef = componentFactory.create(Injector.NULL, [], componentFactory.selector, ngModule);\n\n compRef.onDestroy(() => { this._unloadComponent(compRef); });\n const /** @type {?} */ testability = compRef.injector.get(Testability, null);\n if (testability) {\n compRef.injector.get(TestabilityRegistry)\n .registerApplication(compRef.location.nativeElement, testability);\n }\n\n this._loadComponent(compRef);\n if (isDevMode()) {\n this._console.log(\n `Angular is running in the development mode. Call enableProdMode() to enable the production mode.`);\n }\n return compRef;\n }\n/**\n * @param {?} componentRef\n * @return {?}\n */\nprivate _loadComponent(componentRef: ComponentRef<any>): void {\n this.attachView(componentRef.hostView);\n this.tick();\n this._rootComponents.push(componentRef);\n // Get the listeners lazily to prevent DI cycles.\n const /** @type {?} */ listeners =\n this._injector.get(APP_BOOTSTRAP_LISTENER, []).concat(this._bootstrapListeners);\n listeners.forEach((listener) => listener(componentRef));\n }\n/**\n * @param {?} componentRef\n * @return {?}\n */\nprivate _unloadComponent(componentRef: ComponentRef<any>): void {\n this.detachView(componentRef.hostView);\n remove(this._rootComponents, componentRef);\n }\n/**\n * @return {?}\n */\ntick(): void {\n if (this._runningTick) {\n throw new Error('ApplicationRef.tick is called recursively');\n }\n\n const /** @type {?} */ scope = ApplicationRef_._tickScope();\n try {\n this._runningTick = true;\n this._views.forEach((view) => view.detectChanges());\n if (this._enforceNoNewChanges) {\n this._views.forEach((view) => view.checkNoChanges());\n }\n } catch ( /** @type {?} */e) {\n // Attention: Don't rethrow as it could cancel subscriptions to Observables!\n this._exceptionHandler.handleError(e);\n } finally {\n this._runningTick = false;\n wtfLeave(scope);\n }\n }\n/**\n * @return {?}\n */\nngOnDestroy() {\n // TODO(alxhub): Dispose of the NgZone.\n this._views.slice().forEach((view) => view.destroy());\n }\n/**\n * @return {?}\n */\nget viewCount() { return this._views.length; }\n/**\n * @return {?}\n */\nget componentTypes(): Type<any>[] { return this._rootComponentTypes; }\n/**\n * @return {?}\n */\nget components(): ComponentRef<any>[] { return this._rootComponents; }\n/**\n * @return {?}\n */\nget isStable(): Observable<boolean> { return this._isStable; }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: NgZone, },\n{type: Console, },\n{type: Injector, },\n{type: ErrorHandler, },\n{type: ComponentFactoryResolver, },\n{type: ApplicationInitStatus, },\n];\n}\n\nfunction ApplicationRef__tsickle_Closure_declarations() {\n/**\n * \\@internal\n * @type {?}\n */\nApplicationRef_._tickScope;\n/** @type {?} */\nApplicationRef_.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nApplicationRef_.ctorParameters;\n/** @type {?} */\nApplicationRef_.prototype._bootstrapListeners;\n/** @type {?} */\nApplicationRef_.prototype._rootComponents;\n/** @type {?} */\nApplicationRef_.prototype._rootComponentTypes;\n/** @type {?} */\nApplicationRef_.prototype._views;\n/** @type {?} */\nApplicationRef_.prototype._runningTick;\n/** @type {?} */\nApplicationRef_.prototype._enforceNoNewChanges;\n/** @type {?} */\nApplicationRef_.prototype._isStable;\n/** @type {?} */\nApplicationRef_.prototype._stable;\n/** @type {?} */\nApplicationRef_.prototype._zone;\n/** @type {?} */\nApplicationRef_.prototype._console;\n/** @type {?} */\nApplicationRef_.prototype._injector;\n/** @type {?} */\nApplicationRef_.prototype._exceptionHandler;\n/** @type {?} */\nApplicationRef_.prototype._componentFactoryResolver;\n/** @type {?} */\nApplicationRef_.prototype._initStatus;\n}\n\n/**\n * @template T\n * @param {?} list\n * @param {?} el\n * @return {?}\n */\nfunction remove<T>(list: T[], el: T): void {\n const /** @type {?} */ index = list.indexOf(el);\n if (index > -1) {\n list.splice(index, 1);\n }\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\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\nimport {Injectable} from '../di';\nimport {scheduleMicroTask} from '../util';\nimport {NgZone} from '../zone/ng_zone';\n\n/**\n * Testability API.\n * `declare` keyword causes tsickle to generate externs, so these methods are\n * not renamed by Closure Compiler.\n * @experimental\n */\nexport declare interface PublicTestability {\n isStable(): boolean;\n whenStable(callback: Function): void;\n findProviders(using: any, provider: string, exactMatch: boolean): any[];\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 */\nexport class Testability implements PublicTestability {\n/**\n * \\@internal\n */\n_pendingCount: number = 0;\n/**\n * \\@internal\n */\n_isZoneStable: boolean = 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_didWork: boolean = false;\n/**\n * \\@internal\n */\n_callbacks: Function[] = [];\n/**\n * @param {?} _ngZone\n */\nconstructor(private _ngZone: NgZone) { this._watchAngularEvents(); }\n/**\n * \\@internal\n * @return {?}\n */\n_watchAngularEvents(): void {\n this._ngZone.onUnstable.subscribe({\n next: () => {\n this._didWork = true;\n this._isZoneStable = false;\n }\n });\n\n this._ngZone.runOutsideAngular(() => {\n this._ngZone.onStable.subscribe({\n next: () => {\n NgZone.assertNotInAngularZone();\n scheduleMicroTask(() => {\n this._isZoneStable = true;\n this._runCallbacksIfReady();\n });\n }\n });\n });\n }\n/**\n * @return {?}\n */\nincreasePendingRequestCount(): number {\n this._pendingCount += 1;\n this._didWork = true;\n return this._pendingCount;\n }\n/**\n * @return {?}\n */\ndecreasePendingRequestCount(): number {\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 * @return {?}\n */\nisStable(): boolean {\n return this._isZoneStable && this._pendingCount == 0 && !this._ngZone.hasPendingMacrotasks;\n }\n/**\n * \\@internal\n * @return {?}\n */\n_runCallbacksIfReady(): void {\n if (this.isStable()) {\n // Schedules the call backs in a new frame so that it is always async.\n scheduleMicroTask(() => {\n while (this._callbacks.length !== 0) {\n ( /** @type {?} */((this._callbacks.pop())))(this._didWork);\n }\n this._didWork = false;\n });\n } else {\n // Not Ready\n this._didWork = true;\n }\n }\n/**\n * @param {?} callback\n * @return {?}\n */\nwhenStable(callback: Function): void {\n this._callbacks.push(callback);\n this._runCallbacksIfReady();\n }\n/**\n * @return {?}\n */\ngetPendingRequestCount(): number { return this._pendingCount; }\n/**\n * @deprecated use findProviders\n * @param {?} using\n * @param {?} provider\n * @param {?} exactMatch\n * @return {?}\n */\nfindBindings(using: any, provider: string, exactMatch: boolean): any[] {\n // TODO(juliemr): implement.\n return [];\n }\n/**\n * @param {?} using\n * @param {?} provider\n * @param {?} exactMatch\n * @return {?}\n */\nfindProviders(using: any, provider: string, exactMatch: boolean): any[] {\n // TODO(juliemr): implement.\n return [];\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: NgZone, },\n];\n}\n\nfunction Testability_tsickle_Closure_declarations() {\n/** @type {?} */\nTestability.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nTestability.ctorParameters;\n/**\n * \\@internal\n * @type {?}\n */\nTestability.prototype._pendingCount;\n/**\n * \\@internal\n * @type {?}\n */\nTestability.prototype._isZoneStable;\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 * @type {?}\n */\nTestability.prototype._didWork;\n/**\n * \\@internal\n * @type {?}\n */\nTestability.prototype._callbacks;\n/** @type {?} */\nTestability.prototype._ngZone;\n}\n\n/**\n * A global registry of {\\@link Testability} instances for specific elements.\n * \\@experimental\n */\nexport class TestabilityRegistry {\n/**\n * \\@internal\n */\n_applications = new Map<any, Testability>();\nconstructor() { _testabilityGetter.addToWindow(this); }\n/**\n * @param {?} token\n * @param {?} testability\n * @return {?}\n */\nregisterApplication(token: any, testability: Testability) {\n this._applications.set(token, testability);\n }\n/**\n * @param {?} elem\n * @return {?}\n */\ngetTestability(elem: any): Testability|null { return this._applications.get(elem) || null; }\n/**\n * @return {?}\n */\ngetAllTestabilities(): Testability[] { return Array.from(this._applications.values()); }\n/**\n * @return {?}\n */\ngetAllRootElements(): any[] { return Array.from(this._applications.keys()); }\n/**\n * @param {?} elem\n * @param {?=} findInAncestors\n * @return {?}\n */\nfindTestabilityInTree(elem: Node, findInAncestors: boolean = true): Testability|null {\n return _testabilityGetter.findTestabilityInTree(this, elem, findInAncestors);\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction TestabilityRegistry_tsickle_Closure_declarations() {\n/** @type {?} */\nTestabilityRegistry.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nTestabilityRegistry.ctorParameters;\n/**\n * \\@internal\n * @type {?}\n */\nTestabilityRegistry.prototype._applications;\n}\n\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 */\nexport interface GetTestability {\n addToWindow(registry: TestabilityRegistry): void;\n findTestabilityInTree(registry: TestabilityRegistry, elem: any, findInAncestors: boolean):\n Testability|null;\n}\nclass _NoopGetTestability implements GetTestability {\n/**\n * @param {?} registry\n * @return {?}\n */\naddToWindow(registry: TestabilityRegistry): void {}\n/**\n * @param {?} registry\n * @param {?} elem\n * @param {?} findInAncestors\n * @return {?}\n */\nfindTestabilityInTree(registry: TestabilityRegistry, elem: any, findInAncestors: boolean):\n Testability|null {\n return null;\n }\n}\n/**\n * Set the {\\@link GetTestability} implementation used by the Angular testing framework.\n * \\@experimental\n * @param {?} getter\n * @return {?}\n */\nexport function setTestabilityGetter(getter: GetTestability): void {\n _testabilityGetter = getter;\n}\n\nlet /** @type {?} */ _testabilityGetter: GetTestability = new _NoopGetTestability();\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\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\nimport {EventEmitter} from '../event_emitter';\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 * _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 */\nexport class NgZone {\nprivate outer: Zone;\nprivate inner: Zone;\nprivate _hasPendingMicrotasks: boolean = false;\nprivate _hasPendingMacrotasks: boolean = false;\nprivate _isStable = true;\nprivate _nesting: number = 0;\nprivate _onUnstable: EventEmitter<any> = new EventEmitter(false);\nprivate _onMicrotaskEmpty: EventEmitter<any> = new EventEmitter(false);\nprivate _onStable: EventEmitter<any> = new EventEmitter(false);\nprivate _onErrorEvents: EventEmitter<any> = new EventEmitter(false);\n/**\n * @param {?} __0\n */\nconstructor({enableLongStackTrace = false}) {\n if (typeof Zone == 'undefined') {\n throw new Error('Angular requires Zone.js prolyfill.');\n }\n\n Zone.assertZonePatched();\n\n this.outer = this.inner = Zone.current;\n\n if ((Zone as any)['wtfZoneSpec']) {\n this.inner = this.inner.fork((Zone as any)['wtfZoneSpec']);\n }\n\n if (enableLongStackTrace && (Zone as any)['longStackTraceZoneSpec']) {\n this.inner = this.inner.fork((Zone as any)['longStackTraceZoneSpec']);\n }\n\n this.forkInnerZoneWithAngularBehavior();\n }\n/**\n * @return {?}\n */\nstatic isInAngularZone(): boolean { return Zone.current.get('isAngularZone') === true; }\n/**\n * @return {?}\n */\nstatic assertInAngularZone(): void {\n if (!NgZone.isInAngularZone()) {\n throw new Error('Expected to be in Angular Zone, but it is not!');\n }\n }\n/**\n * @return {?}\n */\nstatic assertNotInAngularZone(): void {\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 * @param {?} fn\n * @return {?}\n */\nrun(fn: () => any): any { return this.inner.run(fn); }\n/**\n * Same as `run`, except that synchronous errors are caught and forwarded via `onError` and not\n * rethrown.\n * @param {?} fn\n * @return {?}\n */\nrunGuarded(fn: () => any): any { return this.inner.runGuarded(fn); }\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 * @param {?} fn\n * @return {?}\n */\nrunOutsideAngular(fn: () => any): any { return this.outer.run(fn); }\n/**\n * Notifies when code enters Angular Zone. This gets fired first on VM Turn.\n * @return {?}\n */\nget onUnstable(): EventEmitter<any> { return this._onUnstable; }\n/**\n * Notifies when there is no more microtasks enqueue 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 * @return {?}\n */\nget onMicrotaskEmpty(): EventEmitter<any> { return this._onMicrotaskEmpty; }\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 * @return {?}\n */\nget onStable(): EventEmitter<any> { return this._onStable; }\n/**\n * Notify that an error has been delivered.\n * @return {?}\n */\nget onError(): EventEmitter<any> { return this._onErrorEvents; }\n/**\n * Whether there are no outstanding microtasks or macrotasks.\n * @return {?}\n */\nget isStable(): boolean { return this._isStable; }\n/**\n * @return {?}\n */\nget hasPendingMicrotasks(): boolean { return this._hasPendingMicrotasks; }\n/**\n * @return {?}\n */\nget hasPendingMacrotasks(): boolean { return this._hasPendingMacrotasks; }\n/**\n * @return {?}\n */\nprivate checkStable() {\n if (this._nesting == 0 && !this._hasPendingMicrotasks && !this._isStable) {\n try {\n this._nesting++;\n this._onMicrotaskEmpty.emit(null);\n } finally {\n this._nesting--;\n if (!this._hasPendingMicrotasks) {\n try {\n this.runOutsideAngular(() => this._onStable.emit(null));\n } finally {\n this._isStable = true;\n }\n }\n }\n }\n }\n/**\n * @return {?}\n */\nprivate forkInnerZoneWithAngularBehavior() {\n this.inner = this.inner.fork({\n name: 'angular',\n properties: /** @type {?} */(( <any>{'isAngularZone': true})),\n onInvokeTask: (delegate: ZoneDelegate, current: Zone, target: Zone, task: Task,\n applyThis: any, applyArgs: any): any => {\n try {\n this.onEnter();\n return delegate.invokeTask(target, task, applyThis, applyArgs);\n } finally {\n this.onLeave();\n }\n },\n\n\n onInvoke: (delegate: ZoneDelegate, current: Zone, target: Zone, callback: Function,\n applyThis: any, applyArgs: any[], source: string): any => {\n try {\n this.onEnter();\n return delegate.invoke(target, callback, applyThis, applyArgs, source);\n } finally {\n this.onLeave();\n }\n },\n\n onHasTask:\n (delegate: ZoneDelegate, current: Zone, target: Zone, hasTaskState: 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 this.setHasMicrotask(hasTaskState.microTask);\n } else if (hasTaskState.change == 'macroTask') {\n this.setHasMacrotask(hasTaskState.macroTask);\n }\n }\n },\n\n onHandleError: (delegate: ZoneDelegate, current: Zone, target: Zone, error: any): boolean => {\n delegate.handleError(target, error);\n this.triggerError(error);\n return false;\n }\n });\n }\n/**\n * @return {?}\n */\nprivate onEnter() {\n this._nesting++;\n if (this._isStable) {\n this._isStable = false;\n this._onUnstable.emit(null);\n }\n }\n/**\n * @return {?}\n */\nprivate onLeave() {\n this._nesting--;\n this.checkStable();\n }\n/**\n * @param {?} hasMicrotasks\n * @return {?}\n */\nprivate setHasMicrotask(hasMicrotasks: boolean) {\n this._hasPendingMicrotasks = hasMicrotasks;\n this.checkStable();\n }\n/**\n * @param {?} hasMacrotasks\n * @return {?}\n */\nprivate setHasMacrotask(hasMacrotasks: boolean) { this._hasPendingMacrotasks = hasMacrotasks; }\n/**\n * @param {?} error\n * @return {?}\n */\nprivate triggerError(error: any) { this._onErrorEvents.emit(error); }\n}\n\nfunction NgZone_tsickle_Closure_declarations() {\n/** @type {?} */\nNgZone.prototype.outer;\n/** @type {?} */\nNgZone.prototype.inner;\n/** @type {?} */\nNgZone.prototype._hasPendingMicrotasks;\n/** @type {?} */\nNgZone.prototype._hasPendingMacrotasks;\n/** @type {?} */\nNgZone.prototype._isStable;\n/** @type {?} */\nNgZone.prototype._nesting;\n/** @type {?} */\nNgZone.prototype._onUnstable;\n/** @type {?} */\nNgZone.prototype._onMicrotaskEmpty;\n/** @type {?} */\nNgZone.prototype._onStable;\n/** @type {?} */\nNgZone.prototype._onErrorEvents;\n}\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\nimport {Subject} from 'rxjs/Subject';\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 */\nexport class EventEmitter<T> extends Subject<T> {\n // TODO: mark this as internal once all the facades are gone\n // we can't mark it as internal now because EventEmitter exported via @angular/core would not\n // contain this property making it incompatible with all the code that uses EventEmitter via\n // facades, which are local to the code and do not have this property stripped.\n // tslint:disable-next-line\n __isAsync: boolean;\n/**\n * Creates an instance of [EventEmitter], which depending on [isAsync],\n * delivers events synchronously or asynchronously.\n * @param {?=} isAsync\n */\nconstructor(isAsync: boolean = false) {\n super();\n this.__isAsync = isAsync;\n }\n/**\n * @param {?=} value\n * @return {?}\n */\nemit(value?: T) { super.next(value); }\n/**\n * @param {?=} generatorOrNext\n * @param {?=} error\n * @param {?=} complete\n * @return {?}\n */\nsubscribe(generatorOrNext?: any, error?: any, complete?: any): any {\n let /** @type {?} */ schedulerFn: (t: any) => any;\n let /** @type {?} */ errorFn = (err: any): any => null;\n let /** @type {?} */ completeFn = (): any => null;\n\n if (generatorOrNext && typeof generatorOrNext === 'object') {\n schedulerFn = this.__isAsync ? (value: any) => {\n setTimeout(() => generatorOrNext.next(value));\n } : (value: any) => { generatorOrNext.next(value); };\n\n if (generatorOrNext.error) {\n errorFn = this.__isAsync ? (err) => { setTimeout(() => generatorOrNext.error(err)); } :\n (err) => { generatorOrNext.error(err); };\n }\n\n if (generatorOrNext.complete) {\n completeFn = this.__isAsync ? () => { setTimeout(() => generatorOrNext.complete()); } :\n () => { generatorOrNext.complete(); };\n }\n } else {\n schedulerFn = this.__isAsync ? (value: any) => { setTimeout(() => generatorOrNext(value)); } :\n (value: any) => { generatorOrNext(value); };\n\n if (error) {\n errorFn =\n this.__isAsync ? (err) => { setTimeout(() => error(err)); } : (err) => { error(err); };\n }\n\n if (complete) {\n completeFn =\n this.__isAsync ? () => { setTimeout(() => complete()); } : () => { complete(); };\n }\n }\n\n return super.subscribe(schedulerFn, errorFn, completeFn);\n }\n}\n\nfunction EventEmitter_tsickle_Closure_declarations() {\n/** @type {?} */\nEventEmitter.prototype.__isAsync;\n}\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\nimport {WtfScopeFn, createScope, detectWTF, endTimeRange, leave, startTimeRange} from './wtf_impl';\n\nexport {WtfScopeFn} from './wtf_impl';\n\n\n/**\n * True if WTF is enabled.\n */\nexport const /** @type {?} */ wtfEnabled = detectWTF();\n/**\n * @param {?=} arg0\n * @param {?=} arg1\n * @return {?}\n */\nfunction noopScope(arg0?: any, arg1?: any): any {\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 */\nexport const wtfCreateScope: (signature: string, flags?: any) => WtfScopeFn =\n wtfEnabled ? createScope : (signature: string, flags?: any) => 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 */\nexport const wtfLeave: <T>(scope: any, returnValue?: T) => T =\n wtfEnabled ? leave : (s: any, r?: any) => 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 */\nexport const wtfStartTimeRange: (rangeType: string, action: string) => any =\n wtfEnabled ? startTimeRange : (rangeType: string, action: string) => 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 */\nexport const wtfEndTimeRange: (range: any) => void = wtfEnabled ? endTimeRange : (r: any) => null;\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\nimport {global} from '../util';\n\n/**\n * A scope function for the Web Tracing Framework (WTF).\n *\n * @experimental\n */\nexport interface WtfScopeFn { (arg0?: any, arg1?: any): any; }\n\ninterface WTF {\n trace: Trace;\n}\n\ninterface Trace {\n events: Events;\n leaveScope(scope: Scope, returnValue: any): any /** TODO #9100 */;\n beginTimeRange(rangeType: string, action: string): Range;\n endTimeRange(range: Range): any /** TODO #9100 */;\n}\n\nexport interface Range {}\n\ninterface Events {\n createScope(signature: string, flags: any): Scope;\n}\n\nexport interface Scope { (...args: any[] /** TODO #9100 */): any; }\n\nlet /** @type {?} */ trace: Trace;\nlet /** @type {?} */ events: Events;\n/**\n * @return {?}\n */\nexport function detectWTF(): boolean {\n const /** @type {?} */ wtf: WTF = ( /** @type {?} */((global as any)) /** 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 */\nexport function createScope(signature: string, flags: any = null): any {\n return events.createScope(signature, flags);\n}\n\nexport function leave<T>(scope: Scope): void;\nexport function leave<T>(scope: Scope, returnValue?: T): T;\n/**\n * @template T\n * @param {?} scope\n * @param {?=} returnValue\n * @return {?}\n */\nexport function leave<T>(scope: Scope, returnValue?: any): any {\n trace.leaveScope(scope, returnValue);\n return returnValue;\n}\n/**\n * @param {?} rangeType\n * @param {?} action\n * @return {?}\n */\nexport function startTimeRange(rangeType: string, action: string): Range {\n return trace.beginTimeRange(rangeType, action);\n}\n/**\n * @param {?} range\n * @return {?}\n */\nexport function endTimeRange(range: Range): void {\n trace.endTimeRange(range);\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\nimport {Injector, THROW_IF_NOT_FOUND} from '../di/injector';\nimport {Type} from '../type';\nimport {stringify} from '../util';\n\nimport {ComponentFactory} from './component_factory';\nimport {CodegenComponentFactoryResolver, ComponentFactoryBoundToModule, ComponentFactoryResolver} from './component_factory_resolver';\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 */\nexport abstract class NgModuleRef<T> {\n/**\n * The injector that contains all of the providers of the NgModule.\n * @abstract\n * @return {?}\n */\ninjector() {}\n/**\n * The ComponentFactoryResolver to get hold of the ComponentFactories\n * declared in the `entryComponents` property of the module.\n * @abstract\n * @return {?}\n */\ncomponentFactoryResolver() {}\n/**\n * The NgModule instance.\n * @abstract\n * @return {?}\n */\ninstance() {}\n/**\n * Destroys the module instance and all of the data structures associated with it.\n * @abstract\n * @return {?}\n */\ndestroy() {}\n/**\n * Allows to register a callback that will be called when the module is destroyed.\n * @abstract\n * @param {?} callback\n * @return {?}\n */\nonDestroy(callback: () => void) {}\n}\n/**\n * \\@experimental\n */\nexport class NgModuleFactory<T> {\n/**\n * @param {?} _injectorClass\n * @param {?} _moduleType\n */\nconstructor(\nprivate _injectorClass: {new (parentInjector: Injector): NgModuleInjector<T>},\nprivate _moduleType: Type<T>) {}\n/**\n * @return {?}\n */\nget moduleType(): Type<T> { return this._moduleType; }\n/**\n * @param {?} parentInjector\n * @return {?}\n */\ncreate(parentInjector: Injector|null): NgModuleRef<T> {\n const /** @type {?} */ instance = new this._injectorClass(parentInjector || Injector.NULL);\n instance.create();\n return instance;\n }\n}\n\nfunction NgModuleFactory_tsickle_Closure_declarations() {\n/** @type {?} */\nNgModuleFactory.prototype._injectorClass;\n/** @type {?} */\nNgModuleFactory.prototype._moduleType;\n}\n\n\nconst /** @type {?} */ _UNDEFINED = new Object();\n/**\n * @abstract\n */\nexport abstract class NgModuleInjector<T> implements Injector, NgModuleRef<T> {\n bootstrapFactories: ComponentFactory<any>[];\n instance: T;\nprivate _destroyListeners: (() => void)[] = [];\nprivate _destroyed: boolean = false;\nprivate _cmpFactoryResolver: CodegenComponentFactoryResolver;\n/**\n * @param {?} parent\n * @param {?} factories\n * @param {?} bootstrapFactories\n */\nconstructor(\npublic parent: Injector, factories: ComponentFactory<any>[],\n bootstrapFactories: ComponentFactory<any>[]) {\n this.bootstrapFactories =\n bootstrapFactories.map(f => new ComponentFactoryBoundToModule(f, this));\n this._cmpFactoryResolver = new CodegenComponentFactoryResolver(\n factories, parent.get(ComponentFactoryResolver, ComponentFactoryResolver.NULL), this);\n }\n/**\n * @return {?}\n */\ncreate() { this.instance = this.createInternal(); }\n/**\n * @abstract\n * @return {?}\n */\ncreateInternal() {}\n/**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\nget(token: any, notFoundValue: any = THROW_IF_NOT_FOUND): any {\n if (token === Injector || token === NgModuleRef) {\n return this;\n }\n\n if (token === ComponentFactoryResolver) {\n return this._cmpFactoryResolver;\n }\n\n const /** @type {?} */ result = this.getInternal(token, _UNDEFINED);\n return result === _UNDEFINED ? this.parent.get(token, notFoundValue) : result;\n }\n/**\n * @abstract\n * @param {?} token\n * @param {?} notFoundValue\n * @return {?}\n */\ngetInternal(token: any, notFoundValue: any) {}\n/**\n * @return {?}\n */\nget injector(): Injector { return this; }\n/**\n * @return {?}\n */\nget componentFactoryResolver(): ComponentFactoryResolver { return this._cmpFactoryResolver; }\n/**\n * @return {?}\n */\ndestroy(): void {\n if (this._destroyed) {\n throw new Error(\n `The ng module ${stringify(this.instance.constructor)} has already been destroyed.`);\n }\n this._destroyed = true;\n this.destroyInternal();\n this._destroyListeners.forEach((listener) => listener());\n }\n/**\n * @param {?} callback\n * @return {?}\n */\nonDestroy(callback: () => void): void { this._destroyListeners.push(callback); }\n/**\n * @abstract\n * @return {?}\n */\ndestroyInternal() {}\n}\n\nfunction NgModuleInjector_tsickle_Closure_declarations() {\n/** @type {?} */\nNgModuleInjector.prototype.bootstrapFactories;\n/** @type {?} */\nNgModuleInjector.prototype.instance;\n/** @type {?} */\nNgModuleInjector.prototype._destroyListeners;\n/** @type {?} */\nNgModuleInjector.prototype._destroyed;\n/** @type {?} */\nNgModuleInjector.prototype._cmpFactoryResolver;\n/** @type {?} */\nNgModuleInjector.prototype.parent;\n}\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\nimport {Injector} from '../di/injector';\nimport {Type} from '../type';\nimport {stringify} from '../util';\n\nimport {ComponentFactory, ComponentRef} from './component_factory';\nimport {NgModuleRef} from './ng_module_factory';\n/**\n * @param {?} component\n * @return {?}\n */\nexport function noComponentFactoryError(component: Function) {\n const /** @type {?} */ error = Error(\n `No component factory found for ${stringify(component)}. Did you add it to @NgModule.entryComponents?`);\n ( /** @type {?} */((error as any)))[ERROR_COMPONENT] = component;\n return error;\n}\n\nconst /** @type {?} */ ERROR_COMPONENT = 'ngComponent';\n/**\n * @param {?} error\n * @return {?}\n */\nexport function getComponent(error: Error): Type<any> {\n return ( /** @type {?} */((error as any)))[ERROR_COMPONENT];\n}\nclass _NullComponentFactoryResolver implements ComponentFactoryResolver {\n/**\n * @template T\n * @param {?} component\n * @return {?}\n */\nresolveComponentFactory<T>(component: {new (...args: any[]): T}): ComponentFactory<T> {\n throw noComponentFactoryError(component);\n }\n}\n/**\n * \\@stable\n * @abstract\n */\nexport abstract class ComponentFactoryResolver {\n static NULL: ComponentFactoryResolver = new _NullComponentFactoryResolver();\n/**\n * @abstract\n * @template T\n * @param {?} component\n * @return {?}\n */\nresolveComponentFactory<T>(component: Type<T>) {}\n}\n\nfunction ComponentFactoryResolver_tsickle_Closure_declarations() {\n/** @type {?} */\nComponentFactoryResolver.NULL;\n}\n\nexport class CodegenComponentFactoryResolver implements ComponentFactoryResolver {\nprivate _factories = new Map<any, ComponentFactory<any>>();\n/**\n * @param {?} factories\n * @param {?} _parent\n * @param {?} _ngModule\n */\nconstructor(\n factories: ComponentFactory<any>[],\nprivate _parent: ComponentFactoryResolver,\nprivate _ngModule: NgModuleRef<any>) {\n for (let i = 0; i < factories.length; i++) {\n const factory = factories[i];\n this._factories.set(factory.componentType, factory);\n }\n }\n/**\n * @template T\n * @param {?} component\n * @return {?}\n */\nresolveComponentFactory<T>(component: {new (...args: any[]): T}): ComponentFactory<T> {\n let /** @type {?} */ factory = this._factories.get(component) || this._parent.resolveComponentFactory(component);\n\n return new ComponentFactoryBoundToModule(factory, this._ngModule);\n }\n}\n\nfunction CodegenComponentFactoryResolver_tsickle_Closure_declarations() {\n/** @type {?} */\nCodegenComponentFactoryResolver.prototype._factories;\n/** @type {?} */\nCodegenComponentFactoryResolver.prototype._parent;\n/** @type {?} */\nCodegenComponentFactoryResolver.prototype._ngModule;\n}\n\nexport class ComponentFactoryBoundToModule<C> extends ComponentFactory<C> {\n/**\n * @param {?} factory\n * @param {?} ngModule\n */\nconstructor(private factory: ComponentFactory<C>,\nprivate ngModule: NgModuleRef<any>) { super(); }\n/**\n * @return {?}\n */\nget selector() { return this.factory.selector; }\n/**\n * @return {?}\n */\nget componentType() { return this.factory.componentType; }\n/**\n * @return {?}\n */\nget ngContentSelectors() { return this.factory.ngContentSelectors; }\n/**\n * @return {?}\n */\nget inputs() { return this.factory.inputs; }\n/**\n * @return {?}\n */\nget outputs() { return this.factory.outputs; }\n/**\n * @param {?} injector\n * @param {?=} projectableNodes\n * @param {?=} rootSelectorOrNode\n * @param {?=} ngModule\n * @return {?}\n */\ncreate(\n injector: Injector, projectableNodes?: any[][], rootSelectorOrNode?: string|any,\n ngModule?: NgModuleRef<any>): ComponentRef<C> {\n return this.factory.create(\n injector, projectableNodes, rootSelectorOrNode, ngModule || this.ngModule);\n }\n}\n\nfunction ComponentFactoryBoundToModule_tsickle_Closure_declarations() {\n/** @type {?} */\nComponentFactoryBoundToModule.prototype.factory;\n/** @type {?} */\nComponentFactoryBoundToModule.prototype.ngModule;\n}\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\nimport {ChangeDetectorRef} from '../change_detection/change_detection';\nimport {Injector} from '../di/injector';\nimport {Type} from '../type';\n\nimport {ElementRef} from './element_ref';\nimport {NgModuleRef} from './ng_module_factory';\nimport {ViewRef} from './view_ref';\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 */\nexport abstract class ComponentRef<C> {\n/**\n * Location of the Host Element of this Component Instance.\n * @abstract\n * @return {?}\n */\nlocation() {}\n/**\n * The injector on which the component instance exists.\n * @abstract\n * @return {?}\n */\ninjector() {}\n/**\n * The instance of the Component.\n * @abstract\n * @return {?}\n */\ninstance() {}\n/**\n * The {\\@link ViewRef} of the Host View of this Component instance.\n * @abstract\n * @return {?}\n */\nhostView() {}\n/**\n * The {\\@link ChangeDetectorRef} of the Component instance.\n * @abstract\n * @return {?}\n */\nchangeDetectorRef() {}\n/**\n * The component type.\n * @abstract\n * @return {?}\n */\ncomponentType() {}\n/**\n * Destroys the component instance and all of the data structures associated with it.\n * @abstract\n * @return {?}\n */\ndestroy() {}\n/**\n * Allows to register a callback that will be called when the component is destroyed.\n * @abstract\n * @param {?} callback\n * @return {?}\n */\nonDestroy(callback: Function) {}\n}\n/**\n * \\@stable\n * @abstract\n */\nexport abstract class ComponentFactory<C> {\n/**\n * @abstract\n * @return {?}\n */\nselector() {}\n/**\n * @abstract\n * @return {?}\n */\ncomponentType() {}\n/**\n * selector for all <ng-content> elements in the component.\n * @abstract\n * @return {?}\n */\nngContentSelectors() {}\n/**\n * the inputs of the component.\n * @abstract\n * @return {?}\n */\ninputs() {}\n/**\n * the outputs of the component.\n * @abstract\n * @return {?}\n */\noutputs() {}\n/**\n * Creates a new component.\n * @abstract\n * @param {?} injector\n * @param {?=} projectableNodes\n * @param {?=} rootSelectorOrNode\n * @param {?=} ngModule\n * @return {?}\n */\ncreate(\n injector: Injector, projectableNodes?: any[][], rootSelectorOrNode?: string|any,\n ngModule?: NgModuleRef<any>) {}\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\nimport {Injectable, InjectionToken} from '../di';\nimport {MissingTranslationStrategy} from '../i18n/tokens';\nimport {ViewEncapsulation} from '../metadata';\nimport {Type} from '../type';\n\nimport {ComponentFactory} from './component_factory';\nimport {NgModuleFactory} from './ng_module_factory';\n/**\n * Combination of NgModuleFactory and ComponentFactorys.\n * \n * \\@experimental\n */\nexport class ModuleWithComponentFactories<T> {\n/**\n * @param {?} ngModuleFactory\n * @param {?} componentFactories\n */\nconstructor(\npublic ngModuleFactory: NgModuleFactory<T>,\npublic componentFactories: ComponentFactory<any>[]) {}\n}\n\nfunction ModuleWithComponentFactories_tsickle_Closure_declarations() {\n/** @type {?} */\nModuleWithComponentFactories.prototype.ngModuleFactory;\n/** @type {?} */\nModuleWithComponentFactories.prototype.componentFactories;\n}\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 */\nexport class Compiler {\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 */\ncompileModuleSync<T>(moduleType: Type<T>): NgModuleFactory<T> { throw _throwError(); }\n/**\n * Compiles the given NgModule and all of its components\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\ncompileModuleAsync<T>(moduleType: Type<T>): Promise<NgModuleFactory<T>> { throw _throwError(); }\n/**\n * Same as {\\@link #compileModuleSync} but also creates ComponentFactories for all components.\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\ncompileModuleAndAllComponentsSync<T>(moduleType: Type<T>): ModuleWithComponentFactories<T> {\n throw _throwError();\n }\n/**\n * Same as {\\@link #compileModuleAsync} but also creates ComponentFactories for all components.\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\ncompileModuleAndAllComponentsAsync<T>(moduleType: Type<T>):\n Promise<ModuleWithComponentFactories<T>> {\n throw _throwError();\n }\n/**\n * Exposes the CSS-style selectors that have been used in `ngContent` directives within\n * the template of the given component.\n * This is used by the `upgrade` library to compile the appropriate transclude content\n * in the AngularJS wrapper component.\n * \n * @deprecated since v4. Use ComponentFactory.ngContentSelectors instead.\n * @param {?} component\n * @return {?}\n */\ngetNgContentSelectors(component: Type<any>): string[] { throw _throwError(); }\n/**\n * Clears all caches.\n * @return {?}\n */\nclearCache(): void {}\n/**\n * Clears the cache for the given component/ngModule.\n * @param {?} type\n * @return {?}\n */\nclearCacheFor(type: Type<any>) {}\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction Compiler_tsickle_Closure_declarations() {\n/** @type {?} */\nCompiler.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nCompiler.ctorParameters;\n}\n\n\n/**\n * Options for creating a compiler\n *\n * @experimental\n */\nexport type CompilerOptions = {\n /**\n * @deprecated since v4 this option has no effect anymore.\n */\n useDebug?: boolean,\n useJit?: boolean,\n defaultEncapsulation?: ViewEncapsulation,\n providers?: any[],\n missingTranslation?: MissingTranslationStrategy,\n // Whether to support the `<template>` tag and the `template` attribute to define angular\n // templates. They have been deprecated in 4.x, `<ng-template>` should be used instead.\n enableLegacyTemplate?: boolean,\n};\n/**\n * Token to provide CompilerOptions in the platform injector.\n * \n * \\@experimental\n */\nexport const COMPILER_OPTIONS = new InjectionToken<CompilerOptions[]>('compilerOptions');\n/**\n * A factory for creating a Compiler\n * \n * \\@experimental\n * @abstract\n */\nexport abstract class CompilerFactory {\n/**\n * @abstract\n * @param {?=} options\n * @return {?}\n */\ncreateCompiler(options?: CompilerOptions[]) {}\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\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\nimport {Injectable} from './di';\nexport class Console {\n/**\n * @param {?} message\n * @return {?}\n */\nlog(message: string): void {\n // tslint:disable-next-line:no-console\n console.log(message);\n }\n/**\n * @param {?} message\n * @return {?}\n */\nwarn(message: string): void {\n // tslint:disable-next-line:no-console\n console.warn(message);\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction Console_tsickle_Closure_declarations() {\n/** @type {?} */\nConsole.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nConsole.ctorParameters;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\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\nimport {InjectionToken} from './di';\nimport {ComponentRef} from './linker/component_factory';\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} 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 */\nexport const APP_ID = new InjectionToken<string>('AppId');\n/**\n * @return {?}\n */\nexport function _appIdRandomProviderFactory() {\n return `${_randomChar()}${_randomChar()}${_randomChar()}`;\n}\n/**\n * Providers that will generate a random APP_ID_TOKEN.\n * \\@experimental\n */\nexport const APP_ID_RANDOM_PROVIDER = {\n provide: APP_ID,\n useFactory: _appIdRandomProviderFactory,\n deps: <any[]>[],\n};\n/**\n * @return {?}\n */\nfunction _randomChar(): string {\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 */\nexport const PLATFORM_INITIALIZER = new InjectionToken<Array<() => void>>('Platform Initializer');\n/**\n * A token that indicates an opaque platform id.\n * \\@experimental\n */\nexport const PLATFORM_ID = new InjectionToken<Object>('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 */\nexport const APP_BOOTSTRAP_LISTENER =\n new InjectionToken<Array<(compRef: ComponentRef<any>) => void>>('appBootstrapListener');\n/**\n * A token which indicates the root directory of the application\n * \\@experimental\n */\nexport const PACKAGE_ROOT_URL = new InjectionToken<string>('Application Packages Root URL');\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\nimport {isPromise} from '../src/util/lang';\n\nimport {Inject, Injectable, InjectionToken, Optional} from './di';\n/**\n * A function that will be executed when an application is initialized.\n * \\@experimental\n */\nexport const APP_INITIALIZER = new InjectionToken<Array<() => void>>('Application Initializer');\n/**\n * A class that reflects the state of running {\\@link APP_INITIALIZER}s.\n * \n * \\@experimental\n */\nexport class ApplicationInitStatus {\nprivate _donePromise: Promise<any>;\nprivate _done = false;\n/**\n * @param {?} appInits\n */\nconstructor( appInits: (() => any)[]) {\n const asyncInitPromises: Promise<any>[] = [];\n if (appInits) {\n for (let i = 0; i < appInits.length; i++) {\n const initResult = appInits[i]();\n if (isPromise(initResult)) {\n asyncInitPromises.push(initResult);\n }\n }\n }\n this._donePromise = Promise.all(asyncInitPromises).then(() => { this._done = true; });\n if (asyncInitPromises.length === 0) {\n this._done = true;\n }\n }\n/**\n * @return {?}\n */\nget done(): boolean { return this._done; }\n/**\n * @return {?}\n */\nget donePromise(): Promise<any> { return this._donePromise; }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: Array, decorators: [{ type: Inject, args: [APP_INITIALIZER, ] }, { type: Optional }, ]},\n];\n}\n\nfunction ApplicationInitStatus_tsickle_Closure_declarations() {\n/** @type {?} */\nApplicationInitStatus.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nApplicationInitStatus.ctorParameters;\n/** @type {?} */\nApplicationInitStatus.prototype._donePromise;\n/** @type {?} */\nApplicationInitStatus.prototype._done;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\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\nimport {Observable} from 'rxjs/Observable';\n/**\n * Determine if the argument is shaped like a Promise\n * @param {?} obj\n * @return {?}\n */\nexport function isPromise(obj: any): obj is Promise<any> {\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 */\nexport function isObservable(obj: any | Observable<any>): obj is Observable<any> {\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 * @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 * @module\n * @description\n * The `di` module provides dependency injection container services.\n */\n\nexport {InjectDecorator,Inject,OptionalDecorator,Optional,InjectableDecorator,Injectable,SelfDecorator,Self,SkipSelfDecorator,SkipSelf,HostDecorator,Host} from './di/metadata';\n\nexport {forwardRef, resolveForwardRef, ForwardRefFn} from './di/forward_ref';\n\nexport {Injector} from './di/injector';\nexport {ReflectiveInjector} from './di/reflective_injector';\nexport {Provider, TypeProvider, ValueProvider, ClassProvider, ExistingProvider, FactoryProvider} from './di/provider';\nexport {ResolvedReflectiveFactory, ResolvedReflectiveProvider} from './di/reflective_provider';\nexport {ReflectiveKey} from './di/reflective_key';\nexport {InjectionToken, OpaqueToken} from './di/injection_token';\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\nimport {Injector, THROW_IF_NOT_FOUND} from './injector';\nimport {Self, SkipSelf} from './metadata';\nimport {Provider} from './provider';\nimport {cyclicDependencyError, instantiationError, noProviderError, outOfBoundsError} from './reflective_errors';\nimport {ReflectiveKey} from './reflective_key';\nimport {ReflectiveDependency, ResolvedReflectiveFactory, ResolvedReflectiveProvider, resolveReflectiveProviders} from './reflective_provider';\n\n// Threshold for the dynamic version\nconst /** @type {?} */ 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 * \\@stable\n * @abstract\n */\nexport abstract class ReflectiveInjector implements Injector {\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} for more info.\n * @param {?} providers\n * @return {?}\n */\nstatic resolve(providers: Provider[]): ResolvedReflectiveProvider[] {\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 Injector#resolve} and {\\@link Injector#fromResolvedProviders}.\n * @param {?} providers\n * @param {?=} parent\n * @return {?}\n */\nstatic resolveAndCreate(providers: Provider[], parent?: Injector): ReflectiveInjector {\n const /** @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 * @param {?} providers\n * @param {?=} parent\n * @return {?}\n */\nstatic fromResolvedProviders(providers: ResolvedReflectiveProvider[], parent?: Injector):\n ReflectiveInjector {\n return new ReflectiveInjector_(providers, parent);\n }\n/**\n * Parent of this injector.\n * \n * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.\n * -->\n * \n * ### Example ([live demo](http://plnkr.co/edit/eosMGo?p=preview))\n * \n * ```typescript\n * var parent = ReflectiveInjector.resolveAndCreate([]);\n * var child = parent.resolveAndCreateChild([]);\n * expect(child.parent).toBe(parent);\n * ```\n * @abstract\n * @return {?}\n */\nparent() {}\n/**\n * Resolves an array of providers and creates a child injector from those providers.\n * \n * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.\n * -->\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/opB3T4?p=preview))\n * \n * ```typescript\n * class ParentProvider {}\n * class ChildProvider {}\n * \n * var parent = ReflectiveInjector.resolveAndCreate([ParentProvider]);\n * var child = parent.resolveAndCreateChild([ChildProvider]);\n * \n * expect(child.get(ParentProvider) instanceof ParentProvider).toBe(true);\n * expect(child.get(ChildProvider) instanceof ChildProvider).toBe(true);\n * expect(child.get(ParentProvider)).toBe(parent.get(ParentProvider));\n * ```\n * \n * This function is slower than the corresponding `createChildFromResolved`\n * because it needs to resolve the passed-in providers first.\n * See {\\@link Injector#resolve} and {\\@link Injector#createChildFromResolved}.\n * @abstract\n * @param {?} providers\n * @return {?}\n */\nresolveAndCreateChild(providers: Provider[]) {}\n/**\n * Creates a child injector from previously resolved providers.\n * \n * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.\n * -->\n * \n * This API is the recommended way to construct injectors in performance-sensitive parts.\n * \n * ### Example ([live demo](http://plnkr.co/edit/VhyfjN?p=preview))\n * \n * ```typescript\n * class ParentProvider {}\n * class ChildProvider {}\n * \n * var parentProviders = ReflectiveInjector.resolve([ParentProvider]);\n * var childProviders = ReflectiveInjector.resolve([ChildProvider]);\n * \n * var parent = ReflectiveInjector.fromResolvedProviders(parentProviders);\n * var child = parent.createChildFromResolved(childProviders);\n * \n * expect(child.get(ParentProvider) instanceof ParentProvider).toBe(true);\n * expect(child.get(ChildProvider) instanceof ChildProvider).toBe(true);\n * expect(child.get(ParentProvider)).toBe(parent.get(ParentProvider));\n * ```\n * @abstract\n * @param {?} providers\n * @return {?}\n */\ncreateChildFromResolved(providers: ResolvedReflectiveProvider[]) {}\n/**\n * Resolves a provider and instantiates an object in the context of the injector.\n * \n * The created object does not get cached by the injector.\n * \n * ### Example ([live demo](http://plnkr.co/edit/yvVXoB?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([Engine]);\n * \n * var car = injector.resolveAndInstantiate(Car);\n * expect(car.engine).toBe(injector.get(Engine));\n * expect(car).not.toBe(injector.resolveAndInstantiate(Car));\n * ```\n * @abstract\n * @param {?} provider\n * @return {?}\n */\nresolveAndInstantiate(provider: Provider) {}\n/**\n * Instantiates an object using a resolved provider in the context of the injector.\n * \n * The created object does not get cached by the injector.\n * \n * ### Example ([live demo](http://plnkr.co/edit/ptCImQ?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([Engine]);\n * var carProvider = ReflectiveInjector.resolve([Car])[0];\n * var car = injector.instantiateResolved(carProvider);\n * expect(car.engine).toBe(injector.get(Engine));\n * expect(car).not.toBe(injector.instantiateResolved(carProvider));\n * ```\n * @abstract\n * @param {?} provider\n * @return {?}\n */\ninstantiateResolved(provider: ResolvedReflectiveProvider) {}\n/**\n * @abstract\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\nget(token: any, notFoundValue?: any) {}\n}\nexport class ReflectiveInjector_ implements ReflectiveInjector {\n/**\n * \\@internal\n */\n_constructionCounter: number = 0;\n/**\n * \\@internal\n */\npublic _providers: ResolvedReflectiveProvider[];\n/**\n * \\@internal\n */\npublic _parent: Injector|null;\n\n keyIds: number[];\n objs: any[];\n/**\n * Private\n * @param {?} _providers\n * @param {?=} _parent\n */\nconstructor(_providers: ResolvedReflectiveProvider[], _parent?: Injector) {\n this._providers = _providers;\n this._parent = _parent || null;\n\n const len = _providers.length;\n\n this.keyIds = new Array(len);\n this.objs = new Array(len);\n\n for (let 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 */\nget(token: any, notFoundValue: any = THROW_IF_NOT_FOUND): any {\n return this._getByKey(ReflectiveKey.get(token), null, notFoundValue);\n }\n/**\n * @return {?}\n */\nget parent(): Injector|null { return this._parent; }\n/**\n * @param {?} providers\n * @return {?}\n */\nresolveAndCreateChild(providers: Provider[]): ReflectiveInjector {\n const /** @type {?} */ ResolvedReflectiveProviders = ReflectiveInjector.resolve(providers);\n return this.createChildFromResolved(ResolvedReflectiveProviders);\n }\n/**\n * @param {?} providers\n * @return {?}\n */\ncreateChildFromResolved(providers: ResolvedReflectiveProvider[]): ReflectiveInjector {\n const /** @type {?} */ inj = new ReflectiveInjector_(providers);\n inj._parent = this;\n return inj;\n }\n/**\n * @param {?} provider\n * @return {?}\n */\nresolveAndInstantiate(provider: Provider): any {\n return this.instantiateResolved(ReflectiveInjector.resolve([provider])[0]);\n }\n/**\n * @param {?} provider\n * @return {?}\n */\ninstantiateResolved(provider: ResolvedReflectiveProvider): any {\n return this._instantiateProvider(provider);\n }\n/**\n * @param {?} index\n * @return {?}\n */\ngetProviderAtIndex(index: number): ResolvedReflectiveProvider {\n if (index < 0 || index >= this._providers.length) {\n throw outOfBoundsError(index);\n }\n return this._providers[index];\n }\n/**\n * \\@internal\n * @param {?} provider\n * @return {?}\n */\n_new(provider: ResolvedReflectiveProvider): any {\n if (this._constructionCounter++ > this._getMaxNumberOfObjects()) {\n throw cyclicDependencyError(this, provider.key);\n }\n return this._instantiateProvider(provider);\n }\n/**\n * @return {?}\n */\nprivate _getMaxNumberOfObjects(): number { return this.objs.length; }\n/**\n * @param {?} provider\n * @return {?}\n */\nprivate _instantiateProvider(provider: ResolvedReflectiveProvider): any {\n if (provider.multiProvider) {\n const /** @type {?} */ res = new Array(provider.resolvedFactories.length);\n for (let /** @type {?} */ i = 0; i < provider.resolvedFactories.length; ++i) {\n res[i] = this._instantiate(provider, provider.resolvedFactories[i]);\n }\n return res;\n } else {\n return this._instantiate(provider, provider.resolvedFactories[0]);\n }\n }\n/**\n * @param {?} provider\n * @param {?} ResolvedReflectiveFactory\n * @return {?}\n */\nprivate _instantiate(\n provider: ResolvedReflectiveProvider,\n ResolvedReflectiveFactory: ResolvedReflectiveFactory): any {\n const /** @type {?} */ factory = ResolvedReflectiveFactory.factory;\n\n let /** @type {?} */ deps: any[];\n try {\n deps =\n ResolvedReflectiveFactory.dependencies.map(dep => this._getByReflectiveDependency(dep));\n } catch ( /** @type {?} */e) {\n if (e.addKey) {\n e.addKey(this, provider.key);\n }\n throw e;\n }\n\n let /** @type {?} */ obj: any;\n try {\n obj = factory(...deps);\n } catch ( /** @type {?} */e) {\n throw instantiationError(this, e, e.stack, provider.key);\n }\n\n return obj;\n }\n/**\n * @param {?} dep\n * @return {?}\n */\nprivate _getByReflectiveDependency(dep: ReflectiveDependency): any {\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 */\nprivate _getByKey(key: ReflectiveKey, visibility: Self|SkipSelf|null, notFoundValue: any): any {\n if (key === INJECTOR_KEY) {\n return this;\n }\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 */\nprivate _getObjByKeyId(keyId: number): any {\n for (let /** @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\n return this.objs[i];\n }\n }\n\n return UNDEFINED;\n }\n/**\n * \\@internal\n * @param {?} key\n * @param {?} notFoundValue\n * @return {?}\n */\n_throwOrNull(key: ReflectiveKey, notFoundValue: any): any {\n if (notFoundValue !== THROW_IF_NOT_FOUND) {\n return notFoundValue;\n } else {\n throw noProviderError(this, key);\n }\n }\n/**\n * \\@internal\n * @param {?} key\n * @param {?} notFoundValue\n * @return {?}\n */\n_getByKeySelf(key: ReflectiveKey, notFoundValue: any): any {\n const /** @type {?} */ obj = this._getObjByKeyId(key.id);\n return (obj !== UNDEFINED) ? obj : this._throwOrNull(key, notFoundValue);\n }\n/**\n * \\@internal\n * @param {?} key\n * @param {?} notFoundValue\n * @param {?} visibility\n * @return {?}\n */\n_getByKeyDefault(key: ReflectiveKey, notFoundValue: any, visibility: Self|SkipSelf|null): any {\n let /** @type {?} */ inj: Injector|null;\n\n if (visibility instanceof SkipSelf) {\n inj = this._parent;\n } else {\n inj = this;\n }\n\n while (inj instanceof ReflectiveInjector_) {\n const /** @type {?} */ inj_ = /** @type {?} */(( <ReflectiveInjector_>inj));\n const /** @type {?} */ obj = inj_._getObjByKeyId(key.id);\n if (obj !== UNDEFINED) return obj;\n inj = inj_._parent;\n }\n if (inj !== null) {\n return inj.get(key.token, notFoundValue);\n } else {\n return this._throwOrNull(key, notFoundValue);\n }\n }\n/**\n * @return {?}\n */\nget displayName(): string {\n const /** @type {?} */ providers =\n _mapProviders(this, (b: ResolvedReflectiveProvider) => ' \"' + b.key.displayName + '\" ')\n .join(', ');\n return `ReflectiveInjector(providers: [${providers}])`;\n }\n/**\n * @return {?}\n */\ntoString(): string { return this.displayName; }\n}\n\nfunction ReflectiveInjector__tsickle_Closure_declarations() {\n/**\n * \\@internal\n * @type {?}\n */\nReflectiveInjector_.prototype._constructionCounter;\n/**\n * \\@internal\n * @type {?}\n */\nReflectiveInjector_.prototype._providers;\n/**\n * \\@internal\n * @type {?}\n */\nReflectiveInjector_.prototype._parent;\n/** @type {?} */\nReflectiveInjector_.prototype.keyIds;\n/** @type {?} */\nReflectiveInjector_.prototype.objs;\n}\n\n\nconst /** @type {?} */ INJECTOR_KEY = ReflectiveKey.get(Injector);\n/**\n * @param {?} injector\n * @param {?} fn\n * @return {?}\n */\nfunction _mapProviders(injector: ReflectiveInjector_, fn: Function): any[] {\n const /** @type {?} */ res: any[] = new Array(injector._providers.length);\n for (let /** @type {?} */ i = 0; i < injector._providers.length; ++i) {\n res[i] = fn(injector.getProviderAtIndex(i));\n }\n return res;\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\nimport {reflector} from '../reflection/reflection';\nimport {Type} from '../type';\n\nimport {resolveForwardRef} from './forward_ref';\nimport {InjectionToken} from './injection_token';\nimport {Inject, Optional, Self, SkipSelf} from './metadata';\nimport {ClassProvider, ExistingProvider, FactoryProvider, Provider, TypeProvider, ValueProvider} from './provider';\nimport {invalidProviderError, mixingMultiProvidersWithRegularProvidersError, noAnnotationError} from './reflective_errors';\nimport {ReflectiveKey} from './reflective_key';\n\n\ninterface NormalizedProvider extends TypeProvider, ValueProvider, ClassProvider, ExistingProvider,\n FactoryProvider {}\n/**\n * `Dependency` is used by the framework to extend DI.\n * This is internal to Angular and should not be used directly.\n */\nexport class ReflectiveDependency {\n/**\n * @param {?} key\n * @param {?} optional\n * @param {?} visibility\n */\nconstructor(\npublic key: ReflectiveKey,\npublic optional: boolean,\npublic visibility: Self|SkipSelf|null) {}\n/**\n * @param {?} key\n * @return {?}\n */\nstatic fromKey(key: ReflectiveKey): ReflectiveDependency {\n return new ReflectiveDependency(key, false, null);\n }\n}\n\nfunction ReflectiveDependency_tsickle_Closure_declarations() {\n/** @type {?} */\nReflectiveDependency.prototype.key;\n/** @type {?} */\nReflectiveDependency.prototype.optional;\n/** @type {?} */\nReflectiveDependency.prototype.visibility;\n}\n\n\nconst /** @type {?} */ _EMPTY_LIST: any[] = [];\n\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 */\nexport interface ResolvedReflectiveProvider {\n /**\n * A key, usually a `Type<any>`.\n */\n key: ReflectiveKey;\n\n /**\n * Factory function which can return an instance of an object represented by a key.\n */\n resolvedFactories: ResolvedReflectiveFactory[];\n\n /**\n * Indicates if the provider is a multi-provider or a regular provider.\n */\n multiProvider: boolean;\n}\nexport class ResolvedReflectiveProvider_ implements ResolvedReflectiveProvider {\n/**\n * @param {?} key\n * @param {?} resolvedFactories\n * @param {?} multiProvider\n */\nconstructor(\npublic key: ReflectiveKey,\npublic resolvedFactories: ResolvedReflectiveFactory[],\npublic multiProvider: boolean) {}\n/**\n * @return {?}\n */\nget resolvedFactory(): ResolvedReflectiveFactory { return this.resolvedFactories[0]; }\n}\n\nfunction ResolvedReflectiveProvider__tsickle_Closure_declarations() {\n/** @type {?} */\nResolvedReflectiveProvider_.prototype.key;\n/** @type {?} */\nResolvedReflectiveProvider_.prototype.resolvedFactories;\n/** @type {?} */\nResolvedReflectiveProvider_.prototype.multiProvider;\n}\n\n/**\n * An internal resolved representation of a factory function created by resolving {\\@link\n * Provider}.\n * \\@experimental\n */\nexport class ResolvedReflectiveFactory {\n/**\n * @param {?} factory\n * @param {?} dependencies\n */\nconstructor(\npublic factory: Function,\npublic dependencies: ReflectiveDependency[]) {}\n}\n\nfunction ResolvedReflectiveFactory_tsickle_Closure_declarations() {\n/**\n * Factory function which can return an instance of an object represented by a key.\n * @type {?}\n */\nResolvedReflectiveFactory.prototype.factory;\n/**\n * Arguments (dependencies) to the `factory` function.\n * @type {?}\n */\nResolvedReflectiveFactory.prototype.dependencies;\n}\n\n/**\n * Resolve a single provider.\n * @param {?} provider\n * @return {?}\n */\nfunction resolveReflectiveFactory(provider: NormalizedProvider): ResolvedReflectiveFactory {\n let /** @type {?} */ factoryFn: Function;\n let /** @type {?} */ resolvedDeps: ReflectiveDependency[];\n if (provider.useClass) {\n const /** @type {?} */ useClass = resolveForwardRef(provider.useClass);\n factoryFn = reflector.factory(useClass);\n resolvedDeps = _dependenciesFor(useClass);\n } else if (provider.useExisting) {\n factoryFn = (aliasInstance: any) => aliasInstance;\n resolvedDeps = [ReflectiveDependency.fromKey(ReflectiveKey.get(provider.useExisting))];\n } else if (provider.useFactory) {\n factoryFn = provider.useFactory;\n resolvedDeps = constructDependencies(provider.useFactory, provider.deps);\n } else {\n factoryFn = () => 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: NormalizedProvider): ResolvedReflectiveProvider {\n return new ResolvedReflectiveProvider_(\n ReflectiveKey.get(provider.provide), [resolveReflectiveFactory(provider)],\n provider.multi || false);\n}\n/**\n * Resolve a list of Providers.\n * @param {?} providers\n * @return {?}\n */\nexport function resolveReflectiveProviders(providers: Provider[]): ResolvedReflectiveProvider[] {\n const /** @type {?} */ normalized = _normalizeProviders(providers, []);\n const /** @type {?} */ resolved = normalized.map(resolveReflectiveProvider);\n const /** @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 */\nexport function mergeResolvedReflectiveProviders(\n providers: ResolvedReflectiveProvider[],\n normalizedProvidersMap: Map<number, ResolvedReflectiveProvider>):\n Map<number, ResolvedReflectiveProvider> {\n for (let /** @type {?} */ i = 0; i < providers.length; i++) {\n const /** @type {?} */ provider = providers[i];\n const /** @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 (let /** @type {?} */ j = 0; j < provider.resolvedFactories.length; j++) {\n existing.resolvedFactories.push(provider.resolvedFactories[j]);\n }\n } else {\n normalizedProvidersMap.set(provider.key.id, provider);\n }\n } else {\n let /** @type {?} */ resolvedProvider: ResolvedReflectiveProvider;\n if (provider.multiProvider) {\n resolvedProvider = new ResolvedReflectiveProvider_(\n provider.key, provider.resolvedFactories.slice(), provider.multiProvider);\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: Provider[], res: Provider[]): Provider[] {\n providers.forEach(b => {\n if (b instanceof Type) {\n res.push({provide: b, useClass: b});\n\n } else if (b && typeof b == 'object' && ( /** @type {?} */((b as any))).provide !== undefined) {\n res.push( /** @type {?} */((b as NormalizedProvider)));\n\n } else if (b instanceof Array) {\n _normalizeProviders(b, res);\n\n } else {\n throw invalidProviderError(b);\n }\n });\n\n return res;\n}\n/**\n * @param {?} typeOrFunc\n * @param {?=} dependencies\n * @return {?}\n */\nexport function constructDependencies(\n typeOrFunc: any, dependencies?: any[]): ReflectiveDependency[] {\n if (!dependencies) {\n return _dependenciesFor(typeOrFunc);\n } else {\n const /** @type {?} */ params: any[][] = dependencies.map(t => [t]);\n return dependencies.map(t => _extractToken(typeOrFunc, t, params));\n }\n}\n/**\n * @param {?} typeOrFunc\n * @return {?}\n */\nfunction _dependenciesFor(typeOrFunc: any): ReflectiveDependency[] {\n const /** @type {?} */ params = reflector.parameters(typeOrFunc);\n\n if (!params) return [];\n if (params.some(p => p == null)) {\n throw noAnnotationError(typeOrFunc, params);\n }\n return params.map(p => _extractToken(typeOrFunc, p, params));\n}\n/**\n * @param {?} typeOrFunc\n * @param {?} metadata\n * @param {?} params\n * @return {?}\n */\nfunction _extractToken(\n typeOrFunc: any, metadata: any[] | any, params: any[][]): ReflectiveDependency {\n let /** @type {?} */ token: any = null;\n let /** @type {?} */ optional = false;\n\n if (!Array.isArray(metadata)) {\n if (metadata instanceof Inject) {\n return _createDependency(metadata['token'], optional, null);\n } else {\n return _createDependency(metadata, optional, null);\n }\n }\n\n let /** @type {?} */ visibility: Self|SkipSelf|null = null;\n\n for (let /** @type {?} */ i = 0; i < metadata.length; ++i) {\n const /** @type {?} */ paramMetadata = metadata[i];\n\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 } else if (paramMetadata instanceof InjectionToken) {\n token = paramMetadata;\n }\n }\n\n token = resolveForwardRef(token);\n\n if (token != null) {\n return _createDependency(token, optional, visibility);\n } else {\n throw noAnnotationError(typeOrFunc, params);\n }\n}\n/**\n * @param {?} token\n * @param {?} optional\n * @param {?} visibility\n * @return {?}\n */\nfunction _createDependency(\n token: any, optional: boolean, visibility: Self | SkipSelf | null): ReflectiveDependency {\n return new ReflectiveDependency(ReflectiveKey.get(token), optional, visibility);\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\nimport {ReflectionCapabilities} from './reflection_capabilities';\nimport {Reflector} from './reflector';\n\nexport {Reflector} from './reflector';\n\n/**\n * The {@link Reflector} used internally in Angular to access metadata\n * about symbols.\n */\nexport const /** @type {?} */ reflector = new Reflector(new ReflectionCapabilities());\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\nimport {Type} from '../type';\nimport {PlatformReflectionCapabilities} from './platform_reflection_capabilities';\nimport {ReflectorReader} from './reflector_reader';\nimport {GetterFn, MethodFn, SetterFn} from './types';\n\nexport {PlatformReflectionCapabilities} from './platform_reflection_capabilities';\nexport {GetterFn, MethodFn, SetterFn} from './types';\n/**\n * Provides access to reflection data about symbols. Used internally by Angular\n * to power dependency injection and compilation.\n */\nexport class Reflector extends ReflectorReader {\n/**\n * @param {?} reflectionCapabilities\n */\nconstructor(public reflectionCapabilities: PlatformReflectionCapabilities) { super(); }\n/**\n * @param {?} caps\n * @return {?}\n */\nupdateCapabilities(caps: PlatformReflectionCapabilities) { this.reflectionCapabilities = caps; }\n/**\n * @param {?} type\n * @return {?}\n */\nfactory(type: Type<any>): Function { return this.reflectionCapabilities.factory(type); }\n/**\n * @param {?} typeOrFunc\n * @return {?}\n */\nparameters(typeOrFunc: Type<any>): any[][] {\n return this.reflectionCapabilities.parameters(typeOrFunc);\n }\n/**\n * @param {?} typeOrFunc\n * @return {?}\n */\nannotations(typeOrFunc: Type<any>): any[] {\n return this.reflectionCapabilities.annotations(typeOrFunc);\n }\n/**\n * @param {?} typeOrFunc\n * @return {?}\n */\npropMetadata(typeOrFunc: Type<any>): {[key: string]: any[]} {\n return this.reflectionCapabilities.propMetadata(typeOrFunc);\n }\n/**\n * @param {?} type\n * @param {?} lcProperty\n * @return {?}\n */\nhasLifecycleHook(type: any, lcProperty: string): boolean {\n return this.reflectionCapabilities.hasLifecycleHook(type, lcProperty);\n }\n/**\n * @param {?} name\n * @return {?}\n */\ngetter(name: string): GetterFn { return this.reflectionCapabilities.getter(name); }\n/**\n * @param {?} name\n * @return {?}\n */\nsetter(name: string): SetterFn { return this.reflectionCapabilities.setter(name); }\n/**\n * @param {?} name\n * @return {?}\n */\nmethod(name: string): MethodFn { return this.reflectionCapabilities.method(name); }\n/**\n * @param {?} type\n * @return {?}\n */\nimportUri(type: any): string { return this.reflectionCapabilities.importUri(type); }\n/**\n * @param {?} type\n * @return {?}\n */\nresourceUri(type: any): string { return this.reflectionCapabilities.resourceUri(type); }\n/**\n * @param {?} name\n * @param {?} moduleUrl\n * @param {?} members\n * @param {?} runtime\n * @return {?}\n */\nresolveIdentifier(name: string, moduleUrl: string, members: string[]|null, runtime: any): any {\n return this.reflectionCapabilities.resolveIdentifier(name, moduleUrl, members, runtime);\n }\n/**\n * @param {?} identifier\n * @param {?} name\n * @return {?}\n */\nresolveEnum(identifier: any, name: string): any {\n return this.reflectionCapabilities.resolveEnum(identifier, name);\n }\n}\n\nfunction Reflector_tsickle_Closure_declarations() {\n/** @type {?} */\nReflector.prototype.reflectionCapabilities;\n}\n\n","\n/**\n * Provides read-only access to reflection data about symbols. Used internally by Angular\n * to power dependency injection and compilation.\n * @abstract\n */\nexport abstract class ReflectorReader {\n/**\n * @abstract\n * @param {?} typeOrFunc\n * @return {?}\n */\nparameters(typeOrFunc: /*Type*/ any) {}\n/**\n * @abstract\n * @param {?} typeOrFunc\n * @return {?}\n */\nannotations(typeOrFunc: /*Type*/ any) {}\n/**\n * @abstract\n * @param {?} typeOrFunc\n * @return {?}\n */\npropMetadata(typeOrFunc: /*Type*/ any) {}\n/**\n * @abstract\n * @param {?} typeOrFunc\n * @return {?}\n */\nimportUri(typeOrFunc: /*Type*/ any) {}\n/**\n * @abstract\n * @param {?} typeOrFunc\n * @return {?}\n */\nresourceUri(typeOrFunc: /*Type*/ any) {}\n/**\n * @abstract\n * @param {?} name\n * @param {?} moduleUrl\n * @param {?} members\n * @param {?} runtime\n * @return {?}\n */\nresolveIdentifier(name: string, moduleUrl: string, members: string[], runtime: any) {}\n/**\n * @abstract\n * @param {?} identifier\n * @param {?} name\n * @return {?}\n */\nresolveEnum(identifier: any, name: string) {}\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\nimport {Type, isType} from '../type';\nimport {global, stringify} from '../util';\nimport {PlatformReflectionCapabilities} from './platform_reflection_capabilities';\nimport {GetterFn, MethodFn, SetterFn} from './types';\n\n/**\n * Attention: This regex has to hold even if the code is minified!\n */\nexport const /** @type {?} */ DELEGATE_CTOR = /^function\\s+\\S+\\(\\)\\s*{[\\s\\S]+\\.apply\\(this,\\s*arguments\\)/;\nexport class ReflectionCapabilities implements PlatformReflectionCapabilities {\nprivate _reflect: any;\n/**\n * @param {?=} reflect\n */\nconstructor(reflect?: any) { this._reflect = reflect || global['Reflect']; }\n/**\n * @return {?}\n */\nisReflectionEnabled(): boolean { return true; }\n/**\n * @template T\n * @param {?} t\n * @return {?}\n */\nfactory<T>(t: Type<T>): (args: any[]) => T { return (...args: any[]) => new t(...args); }\n/**\n * \\@internal\n * @param {?} paramTypes\n * @param {?} paramAnnotations\n * @return {?}\n */\n_zipTypesAndAnnotations(paramTypes: any[], paramAnnotations: any[]): any[][] {\n let /** @type {?} */ result: any[][];\n\n if (typeof paramTypes === 'undefined') {\n result = new Array(paramAnnotations.length);\n } else {\n result = new Array(paramTypes.length);\n }\n\n for (let /** @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 } else if (paramTypes[i] != Object) {\n result[i] = [paramTypes[i]];\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 */\nprivate _ownParameters(type: Type<any>, parentCtor: any): any[][]|null {\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\n // Prefer the direct API.\n if (( /** @type {?} */((<any>type))).parameters && ( /** @type {?} */((<any>type))).parameters !== parentCtor.parameters) {\n return ( /** @type {?} */((<any>type))).parameters;\n }\n\n // API of tsickle for lowering decorators to properties on the class.\n const /** @type {?} */ tsickleCtorParams = ( /** @type {?} */((<any>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 const /** @type {?} */ ctorParameters =\n typeof tsickleCtorParams === 'function' ? tsickleCtorParams() : tsickleCtorParams;\n const /** @type {?} */ paramTypes = ctorParameters.map((ctorParam: any) => ctorParam && ctorParam.type);\n const /** @type {?} */ paramAnnotations = ctorParameters.map(\n (ctorParam: any) =>\n ctorParam && convertTsickleDecoratorIntoMetadata(ctorParam.decorators));\n return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);\n }\n\n // API for metadata created by invoking the decorators.\n if (this._reflect != null && this._reflect.getOwnMetadata != null) {\n const /** @type {?} */ paramAnnotations = this._reflect.getOwnMetadata('parameters', type);\n const /** @type {?} */ paramTypes = this._reflect.getOwnMetadata('design:paramtypes', type);\n if (paramTypes || paramAnnotations) {\n return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);\n }\n }\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 {?} */((<any>type.length)))).fill(undefined);\n }\n/**\n * @param {?} type\n * @return {?}\n */\nparameters(type: Type<any>): any[][] {\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 const /** @type {?} */ parentCtor = getParentCtor(type);\n let /** @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 */\nprivate _ownAnnotations(typeOrFunc: Type<any>, parentCtor: any): any[]|null {\n // Prefer the direct API.\n if (( /** @type {?} */((<any>typeOrFunc))).annotations && ( /** @type {?} */((<any>typeOrFunc))).annotations !== parentCtor.annotations) {\n let /** @type {?} */ annotations = ( /** @type {?} */((<any>typeOrFunc))).annotations;\n if (typeof annotations === 'function' && annotations.annotations) {\n annotations = annotations.annotations;\n }\n return annotations;\n }\n\n // API of tsickle for lowering decorators to properties on the class.\n if (( /** @type {?} */((<any>typeOrFunc))).decorators && ( /** @type {?} */((<any>typeOrFunc))).decorators !== parentCtor.decorators) {\n return convertTsickleDecoratorIntoMetadata(( /** @type {?} */((<any>typeOrFunc))).decorators);\n }\n\n // API for metadata created by invoking the decorators.\n if (this._reflect && this._reflect.getOwnMetadata) {\n return this._reflect.getOwnMetadata('annotations', typeOrFunc);\n }\n return null;\n }\n/**\n * @param {?} typeOrFunc\n * @return {?}\n */\nannotations(typeOrFunc: Type<any>): any[] {\n if (!isType(typeOrFunc)) {\n return [];\n }\n const /** @type {?} */ parentCtor = getParentCtor(typeOrFunc);\n const /** @type {?} */ ownAnnotations = this._ownAnnotations(typeOrFunc, parentCtor) || [];\n const /** @type {?} */ parentAnnotations = parentCtor !== Object ? this.annotations(parentCtor) : [];\n return parentAnnotations.concat(ownAnnotations);\n }\n/**\n * @param {?} typeOrFunc\n * @param {?} parentCtor\n * @return {?}\n */\nprivate _ownPropMetadata(typeOrFunc: any, parentCtor: any): {[key: string]: any[]}|null {\n // Prefer the direct API.\n if (( /** @type {?} */((<any>typeOrFunc))).propMetadata &&\n ( /** @type {?} */((<any>typeOrFunc))).propMetadata !== parentCtor.propMetadata) {\n let /** @type {?} */ propMetadata = ( /** @type {?} */((<any>typeOrFunc))).propMetadata;\n if (typeof propMetadata === 'function' && propMetadata.propMetadata) {\n propMetadata = propMetadata.propMetadata;\n }\n return propMetadata;\n }\n\n // API of tsickle for lowering decorators to properties on the class.\n if (( /** @type {?} */((<any>typeOrFunc))).propDecorators &&\n ( /** @type {?} */((<any>typeOrFunc))).propDecorators !== parentCtor.propDecorators) {\n const /** @type {?} */ propDecorators = ( /** @type {?} */((<any>typeOrFunc))).propDecorators;\n const /** @type {?} */ propMetadata = /** @type {?} */(( <{[key: string]: any[]}>{}));\n Object.keys(propDecorators).forEach(prop => {\n propMetadata[prop] = convertTsickleDecoratorIntoMetadata(propDecorators[prop]);\n });\n return propMetadata;\n }\n\n // API for metadata created by invoking the decorators.\n if (this._reflect && this._reflect.getOwnMetadata) {\n return this._reflect.getOwnMetadata('propMetadata', typeOrFunc);\n }\n return null;\n }\n/**\n * @param {?} typeOrFunc\n * @return {?}\n */\npropMetadata(typeOrFunc: any): {[key: string]: any[]} {\n if (!isType(typeOrFunc)) {\n return {};\n }\n const /** @type {?} */ parentCtor = getParentCtor(typeOrFunc);\n const /** @type {?} */ propMetadata: {[key: string]: any[]} = {};\n if (parentCtor !== Object) {\n const /** @type {?} */ parentPropMetadata = this.propMetadata(parentCtor);\n Object.keys(parentPropMetadata).forEach((propName) => {\n propMetadata[propName] = parentPropMetadata[propName];\n });\n }\n const /** @type {?} */ ownPropMetadata = this._ownPropMetadata(typeOrFunc, parentCtor);\n if (ownPropMetadata) {\n Object.keys(ownPropMetadata).forEach((propName) => {\n const /** @type {?} */ decorators: any[] = [];\n if (propMetadata.hasOwnProperty(propName)) {\n decorators.push(...propMetadata[propName]);\n }\n decorators.push(...ownPropMetadata[propName]);\n propMetadata[propName] = decorators;\n });\n }\n return propMetadata;\n }\n/**\n * @param {?} type\n * @param {?} lcProperty\n * @return {?}\n */\nhasLifecycleHook(type: any, lcProperty: string): boolean {\n return type instanceof Type && lcProperty in type.prototype;\n }\n/**\n * @param {?} name\n * @return {?}\n */\ngetter(name: string): GetterFn { return /** @type {?} */(( <GetterFn>new Function('o', 'return o.' + name + ';'))); }\n/**\n * @param {?} name\n * @return {?}\n */\nsetter(name: string): SetterFn {\n return /** @type {?} */(( <SetterFn>new Function('o', 'v', 'return o.' + name + ' = v;')));\n }\n/**\n * @param {?} name\n * @return {?}\n */\nmethod(name: string): MethodFn {\n const /** @type {?} */ functionBody = `if (!o.${name}) throw new Error('\"${name}\" is undefined');\n return o.${name}.apply(o, args);`;\n return /** @type {?} */(( <MethodFn>new Function('o', 'args', functionBody)));\n }\n/**\n * @param {?} type\n * @return {?}\n */\nimportUri(type: any): string {\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 */\nresourceUri(type: any): string { return `./${stringify(type)}`; }\n/**\n * @param {?} name\n * @param {?} moduleUrl\n * @param {?} members\n * @param {?} runtime\n * @return {?}\n */\nresolveIdentifier(name: string, moduleUrl: string, members: string[], runtime: any): any {\n return runtime;\n }\n/**\n * @param {?} enumIdentifier\n * @param {?} name\n * @return {?}\n */\nresolveEnum(enumIdentifier: any, name: string): any { return enumIdentifier[name]; }\n}\n\nfunction ReflectionCapabilities_tsickle_Closure_declarations() {\n/** @type {?} */\nReflectionCapabilities.prototype._reflect;\n}\n\n/**\n * @param {?} decoratorInvocations\n * @return {?}\n */\nfunction convertTsickleDecoratorIntoMetadata(decoratorInvocations: any[]): any[] {\n if (!decoratorInvocations) {\n return [];\n }\n return decoratorInvocations.map(decoratorInvocation => {\n const /** @type {?} */ decoratorType = decoratorInvocation.type;\n const /** @type {?} */ annotationCls = decoratorType.annotationCls;\n const /** @type {?} */ annotationArgs = decoratorInvocation.args ? decoratorInvocation.args : [];\n return new annotationCls(...annotationArgs);\n });\n}\n/**\n * @param {?} ctor\n * @return {?}\n */\nfunction getParentCtor(ctor: Function): Type<any> {\n const /** @type {?} */ parentProto = Object.getPrototypeOf(ctor.prototype);\n const /** @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 * \\@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 */\nexport const Type = Function;\n/**\n * @param {?} v\n * @return {?}\n */\nexport function isType(v: any): v is Type<any> {\n return typeof v === 'function';\n}\n\nexport interface Type<T> extends Function { new (...args: any[]): T; }\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\nimport {stringify} from '../util';\nimport {resolveForwardRef} from './forward_ref';\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 * \\@experimental\n */\nexport class ReflectiveKey {\n/**\n * Private\n * @param {?} token\n * @param {?} id\n */\nconstructor(public token: Object,\npublic id: number) {\n if (!token) {\n throw new Error('Token must be defined!');\n }\n }\n/**\n * Returns a stringified token.\n * @return {?}\n */\nget displayName(): string { return stringify(this.token); }\n/**\n * Retrieves a `Key` for a token.\n * @param {?} token\n * @return {?}\n */\nstatic get(token: Object): ReflectiveKey {\n return _globalKeyRegistry.get(resolveForwardRef(token));\n }\n/**\n * @return {?} the number of keys registered in the system.\n */\nstatic get numberOfKeys(): number { return _globalKeyRegistry.numberOfKeys; }\n}\n\nfunction ReflectiveKey_tsickle_Closure_declarations() {\n/** @type {?} */\nReflectiveKey.prototype.token;\n/** @type {?} */\nReflectiveKey.prototype.id;\n}\n\n/**\n * \\@internal\n */\nexport class KeyRegistry {\nprivate _allKeys = new Map<Object, ReflectiveKey>();\n/**\n * @param {?} token\n * @return {?}\n */\nget(token: Object): ReflectiveKey {\n if (token instanceof ReflectiveKey) return token;\n\n if (this._allKeys.has(token)) {\n return /** @type {?} */(( this._allKeys.get(token)));\n }\n\n const /** @type {?} */ newKey = new ReflectiveKey(token, ReflectiveKey.numberOfKeys);\n this._allKeys.set(token, newKey);\n return newKey;\n }\n/**\n * @return {?}\n */\nget numberOfKeys(): number { return this._allKeys.size; }\n}\n\nfunction KeyRegistry_tsickle_Closure_declarations() {\n/** @type {?} */\nKeyRegistry.prototype._allKeys;\n}\n\n\nconst /** @type {?} */ _globalKeyRegistry = new KeyRegistry();\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\nimport {wrappedError} from '../error_handler';\nimport {ERROR_ORIGINAL_ERROR, getOriginalError} from '../errors';\nimport {Type} from '../type';\nimport {stringify} from '../util';\n\nimport {ReflectiveInjector} from './reflective_injector';\nimport {ReflectiveKey} from './reflective_key';\n/**\n * @param {?} keys\n * @return {?}\n */\nfunction findFirstClosedCycle(keys: any[]): any[] {\n const /** @type {?} */ res: any[] = [];\n for (let /** @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: any[]): string {\n if (keys.length > 1) {\n const /** @type {?} */ reversed = findFirstClosedCycle(keys.slice().reverse());\n const /** @type {?} */ tokenStrs = reversed.map(k => stringify(k.token));\n return ' (' + tokenStrs.join(' -> ') + ')';\n }\n\n return '';\n}\n\nexport interface InjectionError extends Error {\n keys: ReflectiveKey[];\n injectors: ReflectiveInjector[];\n constructResolvingMessage: (this: InjectionError) => string;\n addKey(injector: ReflectiveInjector, key: ReflectiveKey): void;\n}\n/**\n * @param {?} injector\n * @param {?} key\n * @param {?} constructResolvingMessage\n * @param {?=} originalError\n * @return {?}\n */\nfunction injectionError(\n injector: ReflectiveInjector, key: ReflectiveKey,\n constructResolvingMessage: (this: InjectionError) => string,\n originalError?: Error): InjectionError {\n const /** @type {?} */ error = /** @type {?} */(( (originalError ? wrappedError('', originalError) : Error()) as InjectionError));\n error.addKey = addKey;\n error.keys = [key];\n error.injectors = [injector];\n error.constructResolvingMessage = constructResolvingMessage;\n error.message = error.constructResolvingMessage();\n ( /** @type {?} */((error as any)))[ERROR_ORIGINAL_ERROR] = originalError;\n return error;\n}\n/**\n * @this {?}\n * @param {?} injector\n * @param {?} key\n * @return {?}\n */\nfunction addKey(this: InjectionError, injector: ReflectiveInjector, key: ReflectiveKey): void {\n this.injectors.push(injector);\n this.keys.push(key);\n this.message = this.constructResolvingMessage();\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 */\nexport function noProviderError(injector: ReflectiveInjector, key: ReflectiveKey): InjectionError {\n return injectionError(injector, key, function(this: InjectionError) {\n const /** @type {?} */ first = stringify(this.keys[0].token);\n return `No provider for ${first}!${constructResolvingPath(this.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 */\nexport function cyclicDependencyError(\n injector: ReflectiveInjector, key: ReflectiveKey): InjectionError {\n return injectionError(injector, key, function(this: InjectionError) {\n return `Cannot instantiate cyclic dependency!${constructResolvingPath(this.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 */\nexport function instantiationError(\n injector: ReflectiveInjector, originalException: any, originalStack: any,\n key: ReflectiveKey): InjectionError {\n return injectionError(injector, key, function(this: InjectionError) {\n const /** @type {?} */ first = stringify(this.keys[0].token);\n return `${getOriginalError(this).message}: Error during instantiation of ${first}!${constructResolvingPath(this.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 */\nexport function invalidProviderError(provider: any) {\n return Error(\n `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 */\nexport function noAnnotationError(typeOrFunc: Type<any>| Function, params: any[][]): Error {\n const /** @type {?} */ signature: string[] = [];\n for (let /** @type {?} */ i = 0, /** @type {?} */ ii = params.length; i < ii; i++) {\n const /** @type {?} */ parameter = params[i];\n if (!parameter || parameter.length == 0) {\n signature.push('?');\n } else {\n signature.push(parameter.map(stringify).join(' '));\n }\n }\n return Error(\n '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 */\nexport function outOfBoundsError(index: number) {\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 */\nexport function mixingMultiProvidersWithRegularProvidersError(\n provider1: any, provider2: any): Error {\n return Error(`Cannot mix multi providers and regular providers, got: ${provider1} ${provider2}`);\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\nimport {ERROR_ORIGINAL_ERROR, getDebugContext, getErrorLogger, getOriginalError} from './errors';\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 */\nexport class ErrorHandler {\n/**\n * \\@internal\n */\n_console: Console = console;\n/**\n * @param {?=} deprecatedParameter\n */\nconstructor(\n /**\n * @deprecated since v4.0 parameter no longer has an effect, as ErrorHandler will never\n * rethrow.\n */\n deprecatedParameter?: boolean) {}\n/**\n * @param {?} error\n * @return {?}\n */\nhandleError(error: any): void {\n const /** @type {?} */ originalError = this._findOriginalError(error);\n const /** @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 const /** @type {?} */ errorLogger = getErrorLogger(error);\n\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/**\n * \\@internal\n * @param {?} error\n * @return {?}\n */\n_findContext(error: any): any {\n if (error) {\n return getDebugContext(error) ? getDebugContext(error) :\n this._findContext(getOriginalError(error));\n }\n\n return null;\n }\n/**\n * \\@internal\n * @param {?} error\n * @return {?}\n */\n_findOriginalError(error: Error): any {\n let /** @type {?} */ e = getOriginalError(error);\n while (e && getOriginalError(e)) {\n e = getOriginalError(e);\n }\n\n return e;\n }\n}\n\nfunction ErrorHandler_tsickle_Closure_declarations() {\n/**\n * \\@internal\n * @type {?}\n */\nErrorHandler.prototype._console;\n}\n\n/**\n * @param {?} message\n * @param {?} originalError\n * @return {?}\n */\nexport function wrappedError(message: string, originalError: any): Error {\n const /** @type {?} */ msg =\n `${message} caused by: ${originalError instanceof Error ? originalError.message: originalError }`;\n const /** @type {?} */ error = Error(msg);\n ( /** @type {?} */((error as any)))[ERROR_ORIGINAL_ERROR] = originalError;\n return error;\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\nimport {DebugContext} from './view/index';\n\nexport const /** @type {?} */ ERROR_TYPE = 'ngType';\nexport const /** @type {?} */ ERROR_COMPONENT_TYPE = 'ngComponentType';\nexport const /** @type {?} */ ERROR_DEBUG_CONTEXT = 'ngDebugContext';\nexport const /** @type {?} */ ERROR_ORIGINAL_ERROR = 'ngOriginalError';\nexport const /** @type {?} */ ERROR_LOGGER = 'ngErrorLogger';\n/**\n * @param {?} error\n * @return {?}\n */\nexport function getType(error: Error): Function {\n return ( /** @type {?} */((error as any)))[ERROR_TYPE];\n}\n/**\n * @param {?} error\n * @return {?}\n */\nexport function getDebugContext(error: Error): DebugContext {\n return ( /** @type {?} */((error as any)))[ERROR_DEBUG_CONTEXT];\n}\n/**\n * @param {?} error\n * @return {?}\n */\nexport function getOriginalError(error: Error): Error {\n return ( /** @type {?} */((error as any)))[ERROR_ORIGINAL_ERROR];\n}\n/**\n * @param {?} error\n * @return {?}\n */\nexport function getErrorLogger(error: Error): (console: Console, ...values: any[]) => void {\n return ( /** @type {?} */((error as any)))[ERROR_LOGGER] || defaultErrorLogger;\n}\n/**\n * @param {?} console\n * @param {...?} values\n * @return {?}\n */\nfunction defaultErrorLogger(console: Console, ...values: any[]) {\n ( /** @type {?} */((<any>console.error)))(...values);\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\nimport {Type} from '../type';\nimport {stringify} from '../util';\n\nimport {InjectionToken} from './injection_token';\n\nconst /** @type {?} */ _THROW_IF_NOT_FOUND = new Object();\nexport const /** @type {?} */ THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;\nclass _NullInjector implements Injector {\n/**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\nget(token: any, notFoundValue: any = _THROW_IF_NOT_FOUND): any {\n if (notFoundValue === _THROW_IF_NOT_FOUND) {\n throw new Error(`No provider for ${stringify(token)}!`);\n }\n return notFoundValue;\n }\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 */\nexport abstract class Injector {\n static THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;\n static NULL: Injector = new _NullInjector();\n/**\n * Retrieves an instance from the injector based on the provided token.\n * If not found:\n * - Throws an error if no `notFoundValue` that is not equal to\n * Injector.THROW_IF_NOT_FOUND is given\n * - Returns the `notFoundValue` otherwise\n * @abstract\n * @template T\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\nget<T>(token: Type<T>|InjectionToken<T>, notFoundValue?: T) {}\n/**\n * @deprecated from v4.0.0 use Type<T> or InjectionToken<T>\n * @suppress {duplicate}\n * @abstract\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\nget(token: any, notFoundValue?: any) {}\n}\n\nfunction Injector_tsickle_Closure_declarations() {\n/** @type {?} */\nInjector.THROW_IF_NOT_FOUND;\n/** @type {?} */\nInjector.NULL;\n}\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\nimport {Type} from '../type';\nimport {stringify} from '../util';\n\n\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 */\nexport interface ForwardRefFn { (): any; }\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 */\nexport function forwardRef(forwardRefFn: ForwardRefFn): Type<any> {\n ( /** @type {?} */((<any>forwardRefFn))).__forward_ref__ = forwardRef;\n ( /** @type {?} */((<any>forwardRefFn))).toString = function() { return stringify(this()); };\n return ( /** @type {?} */((<Type<any>> /** @type {?} */((<any>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 */\nexport function resolveForwardRef(type: any): any {\n if (typeof type === 'function' && type.hasOwnProperty('__forward_ref__') &&\n type.__forward_ref__ === forwardRef) {\n return ( /** @type {?} */((<ForwardRefFn>type)))();\n } else {\n return type;\n }\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\nimport {makeDecorator, makeParamDecorator} from '../util/decorators';\n\n\n/**\n * Type of the Inject decorator / constructor function.\n *\n * @stable\n */\nexport interface InjectDecorator {\n /**\n * @whatItDoes A parameter decorator that specifies a dependency.\n * @howToUse\n * ```\n * @Injectable()\n * class Car {\n * constructor(@Inject(\"MyEngine\") public engine:Engine) {}\n * }\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/metadata_spec.ts region='Inject'}\n *\n * When `@Inject()` is not present, {@link Injector} will use the type annotation of the\n * parameter.\n *\n * ### Example\n *\n * {@example core/di/ts/metadata_spec.ts region='InjectWithoutDecorator'}\n *\n * @stable\n */\n (token: any): any;\n new (token: any): Inject;\n}\n\n/**\n * Type of the Inject metadata.\n *\n * @stable\n */\nexport interface Inject { token: any; }\n/**\n * Inject decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const Inject: InjectDecorator = makeParamDecorator('Inject', [['token', undefined]]);\n\n\n/**\n * Type of the Optional decorator / constructor function.\n *\n * @stable\n */\nexport interface OptionalDecorator {\n /**\n * @whatItDoes A parameter metadata that marks a dependency as optional.\n * {@link Injector} provides `null` if the dependency is not found.\n * @howToUse\n * ```\n * @Injectable()\n * class Car {\n * constructor(@Optional() public engine:Engine) {}\n * }\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/metadata_spec.ts region='Optional'}\n *\n * @stable\n */\n (): any;\n new (): Optional;\n}\n\n/**\n * Type of the Optional metadata.\n *\n * @stable\n */\nexport interface Optional {}\n/**\n * Optional decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const Optional: OptionalDecorator = makeParamDecorator('Optional', []);\n\n/**\n * Type of the Injectable decorator / constructor function.\n *\n * @stable\n */\nexport interface InjectableDecorator {\n /**\n * @whatItDoes A marker metadata that marks a class as available to {@link Injector} for creation.\n * @howToUse\n * ```\n * @Injectable()\n * class Car {}\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/metadata_spec.ts region='Injectable'}\n *\n * {@link Injector} will throw {@link NoAnnotationError} when trying to instantiate a class that\n * does not have `@Injectable` marker, as shown in the example below.\n *\n * {@example core/di/ts/metadata_spec.ts region='InjectableThrows'}\n *\n * @stable\n */\n (): any;\n new (): Injectable;\n}\n\n/**\n * Type of the Injectable metadata.\n *\n * @stable\n */\nexport interface Injectable {}\n/**\n * Injectable decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const Injectable: InjectableDecorator = <InjectableDecorator>makeDecorator('Injectable', []);\n\n/**\n * Type of the Self decorator / constructor function.\n *\n * @stable\n */\nexport interface SelfDecorator {\n /**\n * @whatItDoes Specifies that an {@link Injector} should retrieve a dependency only from itself.\n * @howToUse\n * ```\n * @Injectable()\n * class Car {\n * constructor(@Self() public engine:Engine) {}\n * }\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/metadata_spec.ts region='Self'}\n *\n * @stable\n */\n (): any;\n new (): Self;\n}\n\n/**\n * Type of the Self metadata.\n *\n * @stable\n */\nexport interface Self {}\n/**\n * Self decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const Self: SelfDecorator = makeParamDecorator('Self', []);\n\n\n/**\n * Type of the SkipSelf decorator / constructor function.\n *\n * @stable\n */\nexport interface SkipSelfDecorator {\n /**\n * @whatItDoes Specifies that the dependency resolution should start from the parent injector.\n * @howToUse\n * ```\n * @Injectable()\n * class Car {\n * constructor(@SkipSelf() public engine:Engine) {}\n * }\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/metadata_spec.ts region='SkipSelf'}\n *\n * @stable\n */\n (): any;\n new (): SkipSelf;\n}\n\n/**\n * Type of the SkipSelf metadata.\n *\n * @stable\n */\nexport interface SkipSelf {}\n/**\n * SkipSelf decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const SkipSelf: SkipSelfDecorator = makeParamDecorator('SkipSelf', []);\n\n/**\n * Type of the Host decorator / constructor function.\n *\n * @stable\n */\nexport interface HostDecorator {\n /**\n * @whatItDoes Specifies that an injector should retrieve a dependency from any injector until\n * reaching the host element of the current component.\n * @howToUse\n * ```\n * @Injectable()\n * class Car {\n * constructor(@Host() public engine:Engine) {}\n * }\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/metadata_spec.ts region='Host'}\n *\n * @stable\n */\n (): any;\n new (): Host;\n}\n\n/**\n * Type of the Host metadata.\n *\n * @stable\n */\nexport interface Host {}\n/**\n * Host decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const Host: HostDecorator = makeParamDecorator('Host', []);\n","\n/**\n * \\@whatItDoes Represents the version of Angular\n * \n * \\@stable\n */\nexport class Version {\n/**\n * @param {?} full\n */\nconstructor(public full: string) {}\n/**\n * @return {?}\n */\nget major(): string { return this.full.split('.')[0]; }\n/**\n * @return {?}\n */\nget minor(): string { return this.full.split('.')[1]; }\n/**\n * @return {?}\n */\nget patch(): string { return this.full.split('.').slice(2).join('.'); }\n}\n\nfunction Version_tsickle_Closure_declarations() {\n/** @type {?} */\nVersion.prototype.full;\n}\n\n/**\n * \\@stable\n */\nexport const VERSION = new Version('4.1.1');\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 * This indirection is needed to free up Component, etc symbols in the public API\n * to be used by the decorator versions of these annotations.\n */\n\n\nimport {Attribute, ContentChild, ContentChildren, Query, ViewChild, ViewChildren} from './metadata/di';\nimport {Component, Directive, HostBinding, HostListener, Input, Output, Pipe} from './metadata/directives';\nimport {ModuleWithProviders, NgModule, SchemaMetadata} from './metadata/ng_module';\nimport {ViewEncapsulation} from './metadata/view';\n\nexport {ANALYZE_FOR_ENTRY_COMPONENTS, Attribute, ContentChild, ContentChildDecorator, ContentChildren, ContentChildrenDecorator, Query, ViewChild, ViewChildDecorator, ViewChildren, ViewChildrenDecorator} from './metadata/di';\nexport {Component, ComponentDecorator, Directive, DirectiveDecorator, HostBinding, HostListener, Input, Output, Pipe} from './metadata/directives';\nexport {AfterContentChecked, AfterContentInit, AfterViewChecked, AfterViewInit, DoCheck, OnChanges, OnDestroy, OnInit} from './metadata/lifecycle_hooks';\nexport {CUSTOM_ELEMENTS_SCHEMA, ModuleWithProviders, NO_ERRORS_SCHEMA, NgModule, SchemaMetadata} from './metadata/ng_module';\nexport {ViewEncapsulation} from './metadata/view';\n","\nexport type ViewEncapsulation = number;\nexport let ViewEncapsulation: any = {};\nViewEncapsulation.Emulated = 0;\nViewEncapsulation.Native = 1;\nViewEncapsulation.None = 2;\nViewEncapsulation[ViewEncapsulation.Emulated] = \"Emulated\";\nViewEncapsulation[ViewEncapsulation.Native] = \"Native\";\nViewEncapsulation[ViewEncapsulation.None] = \"None\";\n\n/**\n * Metadata properties available for configuring Views.\n * \n * For details on the `\\@Component` annotation, see {\\@link Component}.\n * \n * ### Example\n * \n * ```\n * \\@Component({ \n * selector: 'greet',\n * template: 'Hello {{name}}!',\n * })\n * class Greet {\n * name: string;\n * \n * constructor() {\n * this.name = 'World';\n * }\n * }\n * ```\n * \n * @deprecated Use Component instead.\n * \n * {\\@link Component}\n */\nexport class ViewMetadata {\n /** {@link Component.templateUrl} */\n templateUrl: string|undefined;\n /** {@link Component.template} */\n template: string|undefined;\n /** {@link Component.stylesUrl} */\n styleUrls: string[]|undefined;\n /** {@link Component.styles} */\n styles: string[]|undefined;\n /** {@link Component.encapsulation} */\n encapsulation: ViewEncapsulation|undefined;\n /** {@link Component.animation} */\n animations: any[]|undefined;\n /** {@link Component.interpolation} */\n interpolation: [string, string]|undefined;\n/**\n * @param {?=} __0\n */\nconstructor(\n {templateUrl, template, encapsulation, styles, styleUrls, animations, interpolation}: {\n templateUrl?: string,\n template?: string,\n encapsulation?: ViewEncapsulation,\n styles?: string[],\n styleUrls?: string[],\n animations?: any[],\n interpolation?: [string, string]\n } = {}) {\n this.templateUrl = templateUrl;\n this.template = template;\n this.styleUrls = styleUrls;\n this.styles = styles;\n this.encapsulation = encapsulation;\n this.animations = animations;\n this.interpolation = interpolation;\n }\n}\n\nfunction ViewMetadata_tsickle_Closure_declarations() {\n/**\n * {\\@link Component.templateUrl}\n * @type {?}\n */\nViewMetadata.prototype.templateUrl;\n/**\n * {\\@link Component.template}\n * @type {?}\n */\nViewMetadata.prototype.template;\n/**\n * {\\@link Component.stylesUrl}\n * @type {?}\n */\nViewMetadata.prototype.styleUrls;\n/**\n * {\\@link Component.styles}\n * @type {?}\n */\nViewMetadata.prototype.styles;\n/**\n * {\\@link Component.encapsulation}\n * @type {?}\n */\nViewMetadata.prototype.encapsulation;\n/**\n * {\\@link Component.animation}\n * @type {?}\n */\nViewMetadata.prototype.animations;\n/**\n * {\\@link Component.interpolation}\n * @type {?}\n */\nViewMetadata.prototype.interpolation;\n}\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\nimport {Provider} from '../di';\nimport {Type} from '../type';\nimport {TypeDecorator, makeDecorator} from '../util/decorators';\n\n/**\n * A wrapper around a module that also includes the providers.\n *\n * @stable\n */\nexport interface ModuleWithProviders {\n ngModule: Type<any>;\n providers?: Provider[];\n}\n\n/**\n * Interface for schema definitions in @NgModules.\n *\n * @experimental\n */\nexport interface SchemaMetadata { name: string; }\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 */\nexport const CUSTOM_ELEMENTS_SCHEMA: SchemaMetadata = {\n name: 'custom-elements'\n};\n/**\n * Defines a schema that will allow any property on any element.\n * \n * \\@experimental\n */\nexport const NO_ERRORS_SCHEMA: SchemaMetadata = {\n name: 'no-errors-schema'\n};\n\n\n/**\n * Type of the NgModule decorator / constructor function.\n *\n * @stable\n */\nexport interface NgModuleDecorator {\n /**\n * Defines an NgModule.\n */\n (obj?: NgModule): TypeDecorator;\n new (obj?: NgModule): NgModule;\n}\n\n/**\n * Type of the NgModule metadata.\n *\n * @stable\n */\nexport interface NgModule {\n /**\n * Defines the set of injectable objects that are available in the injector\n * of this module.\n *\n * ## Simple Example\n *\n * Here is an example of a class that can be injected:\n *\n * ```\n * class Greeter {\n * greet(name:string) {\n * return 'Hello ' + name + '!';\n * }\n * }\n *\n * @NgModule({\n * providers: [\n * Greeter\n * ]\n * })\n * class HelloWorld {\n * greeter:Greeter;\n *\n * constructor(greeter:Greeter) {\n * this.greeter = greeter;\n * }\n * }\n * ```\n */\n providers?: Provider[];\n\n /**\n * Specifies a list of directives/pipes that belong to this module.\n *\n * ### Example\n *\n * ```javascript\n * @NgModule({\n * declarations: [NgFor]\n * })\n * class CommonModule {\n * }\n * ```\n */\n declarations?: Array<Type<any>|any[]>;\n\n /**\n * Specifies a list of modules whose exported directives/pipes\n * should be available to templates in this module.\n * This can also contain {@link ModuleWithProviders}.\n *\n * ### Example\n *\n * ```javascript\n * @NgModule({\n * imports: [CommonModule]\n * })\n * class MainModule {\n * }\n * ```\n */\n imports?: Array<Type<any>|ModuleWithProviders|any[]>;\n\n /**\n * Specifies a list of directives/pipes/modules that can be used within the template\n * of any component that is part of an Angular module\n * that imports this Angular module.\n *\n * ### Example\n *\n * ```javascript\n * @NgModule({\n * exports: [NgFor]\n * })\n * class CommonModule {\n * }\n * ```\n */\n exports?: Array<Type<any>|any[]>;\n\n /**\n * Specifies a list of components that should be compiled when this module is defined.\n * For each component listed here, Angular will create a {@link ComponentFactory}\n * and store it in the {@link ComponentFactoryResolver}.\n */\n entryComponents?: Array<Type<any>|any[]>;\n\n /**\n * Defines the components that should be bootstrapped when\n * this module is bootstrapped. The components listed here\n * will automatically be added to `entryComponents`.\n */\n bootstrap?: Array<Type<any>|any[]>;\n\n /**\n * Elements and properties that are not Angular components nor directives have to be declared in\n * the schema.\n *\n * Available schemas:\n * - `NO_ERRORS_SCHEMA`: any elements and properties are allowed,\n * - `CUSTOM_ELEMENTS_SCHEMA`: any custom elements (tag name has \"-\") with any properties are\n * allowed.\n *\n * @security When using one of `NO_ERRORS_SCHEMA` or `CUSTOM_ELEMENTS_SCHEMA` we're trusting that\n * allowed elements (and its properties) securely escape inputs.\n */\n schemas?: Array<SchemaMetadata|any[]>;\n\n /**\n * An opaque ID for this module, e.g. a name or a path. Used to identify modules in\n * `getModuleFactory`. If left `undefined`, the `NgModule` will not be registered with\n * `getModuleFactory`.\n */\n id?: string;\n}\n/**\n * NgModule decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const NgModule: NgModuleDecorator = <NgModuleDecorator>makeDecorator('NgModule', {\n providers: undefined,\n declarations: undefined,\n imports: undefined,\n exports: undefined,\n entryComponents: undefined,\n bootstrap: undefined,\n schemas: undefined,\n id: undefined,\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\nimport {ChangeDetectionStrategy} from '../change_detection/constants';\nimport {Provider} from '../di';\nimport {Type} from '../type';\nimport {TypeDecorator, makeDecorator, makePropDecorator} from '../util/decorators';\n\nimport {ViewEncapsulation} from './view';\n\n\n/**\n * Type of the Directive decorator / constructor function.\n *\n * @stable\n */\nexport interface DirectiveDecorator {\n /**\n * @whatItDoes Marks a class as an Angular directive and collects directive configuration\n * metadata.\n *\n * @howToUse\n *\n * ```\n * import {Directive} from '@angular/core';\n *\n * @Directive({\n * selector: 'my-directive',\n * })\n * export class MyDirective {\n * }\n * ```\n *\n * @description\n *\n * Directive decorator allows you to mark a class as an Angular directive and provide additional\n * metadata that determines how the directive should be processed, instantiated and used at\n * runtime.\n *\n * Directives allow you to attach behavior to elements in the DOM..\n *\n * A directive must belong to an NgModule in order for it to be usable\n * by another directive, component, or application. To specify that a directive is a member of an\n * NgModule,\n * you should list it in the `declarations` field of that NgModule.\n *\n * In addition to the metadata configuration specified via the Directive decorator,\n * directives can control their runtime behavior by implementing various Life-Cycle hooks.\n *\n * **Metadata Properties:**\n *\n * * **exportAs** - name under which the component instance is exported in a template\n * * **host** - map of class property to host element bindings for events, properties and\n * attributes\n * * **inputs** - list of class property names to data-bind as component inputs\n * * **outputs** - list of class property names that expose output events that others can\n * subscribe to\n * * **providers** - list of providers available to this component and its children\n * * **queries** - configure queries that can be injected into the component\n * * **selector** - css selector that identifies this component in a template\n *\n * @stable\n * @Annotation\n */\n (obj: Directive): TypeDecorator;\n\n /**\n * See the {@link Directive} decorator.\n */\n new (obj: Directive): Directive;\n}\n\nexport interface Directive {\n /**\n * The CSS selector that triggers the instantiation of a directive.\n *\n * Angular only allows directives to trigger on CSS selectors that do not cross element\n * boundaries.\n *\n * `selector` may be declared as one of the following:\n *\n * - `element-name`: select by element name.\n * - `.class`: select by class name.\n * - `[attribute]`: select by attribute name.\n * - `[attribute=value]`: select by attribute name and value.\n * - `:not(sub_selector)`: select only if the element does not match the `sub_selector`.\n * - `selector1, selector2`: select if either `selector1` or `selector2` matches.\n *\n *\n * ### Example\n *\n * Suppose we have a directive with an `input[type=text]` selector.\n *\n * And the following HTML:\n *\n * ```html\n * <form>\n * <input type=\"text\">\n * <input type=\"radio\">\n * <form>\n * ```\n *\n * The directive would only be instantiated on the `<input type=\"text\">` element.\n *\n */\n selector?: string;\n\n /**\n * Enumerates the set of data-bound input properties for a directive\n *\n * Angular automatically updates input properties during change detection.\n *\n * The `inputs` property defines a set of `directiveProperty` to `bindingProperty`\n * configuration:\n *\n * - `directiveProperty` specifies the component property where the value is written.\n * - `bindingProperty` specifies the DOM property where the value is read from.\n *\n * When `bindingProperty` is not provided, it is assumed to be equal to `directiveProperty`.\n *\n * ### Example ([live demo](http://plnkr.co/edit/ivhfXY?p=preview))\n *\n * The following example creates a component with two data-bound properties.\n *\n * ```typescript\n * @Component({\n * selector: 'bank-account',\n * inputs: ['bankName', 'id: account-id'],\n * template: `\n * Bank Name: {{bankName}}\n * Account Id: {{id}}\n * `\n * })\n * class BankAccount {\n * bankName: string;\n * id: string;\n *\n * // this property is not bound, and won't be automatically updated by Angular\n * normalizedBankName: string;\n * }\n *\n * @Component({\n * selector: 'app',\n * template: `\n * <bank-account bank-name=\"RBC\" account-id=\"4747\"></bank-account>\n * `\n * })\n * class App {}\n * ```\n *\n */\n inputs?: string[];\n\n /**\n * Enumerates the set of event-bound output properties.\n *\n * When an output property emits an event, an event handler attached to that event\n * the template is invoked.\n *\n * The `outputs` property defines a set of `directiveProperty` to `bindingProperty`\n * configuration:\n *\n * - `directiveProperty` specifies the component property that emits events.\n * - `bindingProperty` specifies the DOM property the event handler is attached to.\n *\n * ### Example ([live demo](http://plnkr.co/edit/d5CNq7?p=preview))\n *\n * ```typescript\n * @Directive({\n * selector: 'interval-dir',\n * outputs: ['everySecond', 'five5Secs: everyFiveSeconds']\n * })\n * class IntervalDir {\n * everySecond = new EventEmitter();\n * five5Secs = new EventEmitter();\n *\n * constructor() {\n * setInterval(() => this.everySecond.emit(\"event\"), 1000);\n * setInterval(() => this.five5Secs.emit(\"event\"), 5000);\n * }\n * }\n *\n * @Component({\n * selector: 'app',\n * template: `\n * <interval-dir (everySecond)=\"everySecond()\" (everyFiveSeconds)=\"everyFiveSeconds()\">\n * </interval-dir>\n * `\n * })\n * class App {\n * everySecond() { console.log('second'); }\n * everyFiveSeconds() { console.log('five seconds'); }\n * }\n * ```\n *\n */\n outputs?: string[];\n\n /**\n * Specify the events, actions, properties and attributes related to the host element.\n *\n * ## Host Listeners\n *\n * Specifies which DOM events a directive listens to via a set of `(event)` to `method`\n * key-value pairs:\n *\n * - `event`: the DOM event that the directive listens to.\n * - `statement`: the statement to execute when the event occurs.\n * If the evaluation of the statement returns `false`, then `preventDefault`is applied on the DOM\n * event.\n *\n * To listen to global events, a target must be added to the event name.\n * The target can be `window`, `document` or `body`.\n *\n * When writing a directive event binding, you can also refer to the $event local variable.\n *\n * ### Example ([live demo](http://plnkr.co/edit/DlA5KU?p=preview))\n *\n * The following example declares a directive that attaches a click listener to the button and\n * counts clicks.\n *\n * ```typescript\n * @Directive({\n * selector: 'button[counting]',\n * host: {\n * '(click)': 'onClick($event.target)'\n * }\n * })\n * class CountClicks {\n * numberOfClicks = 0;\n *\n * onClick(btn) {\n * console.log(\"button\", btn, \"number of clicks:\", this.numberOfClicks++);\n * }\n * }\n *\n * @Component({\n * selector: 'app',\n * template: `<button counting>Increment</button>`\n * })\n * class App {}\n * ```\n *\n * ## Host Property Bindings\n *\n * Specifies which DOM properties a directive updates.\n *\n * Angular automatically checks host property bindings during change detection.\n * If a binding changes, it will update the host element of the directive.\n *\n * ### Example ([live demo](http://plnkr.co/edit/gNg0ED?p=preview))\n *\n * The following example creates a directive that sets the `valid` and `invalid` classes\n * on the DOM element that has ngModel directive on it.\n *\n * ```typescript\n * @Directive({\n * selector: '[ngModel]',\n * host: {\n * '[class.valid]': 'valid',\n * '[class.invalid]': 'invalid'\n * }\n * })\n * class NgModelStatus {\n * constructor(public control:NgModel) {}\n * get valid { return this.control.valid; }\n * get invalid { return this.control.invalid; }\n * }\n *\n * @Component({\n * selector: 'app',\n * template: `<input [(ngModel)]=\"prop\">`\n * })\n * class App {\n * prop;\n * }\n * ```\n *\n * ## Attributes\n *\n * Specifies static attributes that should be propagated to a host element.\n *\n * ### Example\n *\n * In this example using `my-button` directive (ex.: `<div my-button></div>`) on a host element\n * (here: `<div>` ) will ensure that this element will get the \"button\" role.\n *\n * ```typescript\n * @Directive({\n * selector: '[my-button]',\n * host: {\n * 'role': 'button'\n * }\n * })\n * class MyButton {\n * }\n * ```\n */\n host?: {[key: string]: string};\n\n /**\n * Defines the set of injectable objects that are visible to a Directive and its light DOM\n * children.\n *\n * ## Simple Example\n *\n * Here is an example of a class that can be injected:\n *\n * ```\n * class Greeter {\n * greet(name:string) {\n * return 'Hello ' + name + '!';\n * }\n * }\n *\n * @Directive({\n * selector: 'greet',\n * providers: [\n * Greeter\n * ]\n * })\n * class HelloWorld {\n * greeter:Greeter;\n *\n * constructor(greeter:Greeter) {\n * this.greeter = greeter;\n * }\n * }\n * ```\n */\n providers?: Provider[];\n\n /**\n * Defines the name that can be used in the template to assign this directive to a variable.\n *\n * ## Simple Example\n *\n * ```\n * @Directive({\n * selector: 'child-dir',\n * exportAs: 'child'\n * })\n * class ChildDir {\n * }\n *\n * @Component({\n * selector: 'main',\n * template: `<child-dir #c=\"child\"></child-dir>`\n * })\n * class MainComponent {\n * }\n *\n * ```\n */\n exportAs?: string;\n\n /**\n * Configures the queries that will be injected into the directive.\n *\n * Content queries are set before the `ngAfterContentInit` callback is called.\n * View queries are set before the `ngAfterViewInit` callback is called.\n *\n * ### Example\n *\n * ```\n * @Component({\n * selector: 'someDir',\n * queries: {\n * contentChildren: new ContentChildren(ChildDirective),\n * viewChildren: new ViewChildren(ChildDirective)\n * },\n * template: '<child-directive></child-directive>'\n * })\n * class SomeDir {\n * contentChildren: QueryList<ChildDirective>,\n * viewChildren: QueryList<ChildDirective>\n *\n * ngAfterContentInit() {\n * // contentChildren is set\n * }\n *\n * ngAfterViewInit() {\n * // viewChildren is set\n * }\n * }\n * ```\n */\n queries?: {[key: string]: any};\n}\n/**\n * Directive decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const Directive: DirectiveDecorator = <DirectiveDecorator>makeDecorator('Directive', {\n selector: undefined,\n inputs: undefined,\n outputs: undefined,\n host: undefined,\n providers: undefined,\n exportAs: undefined,\n queries: undefined\n});\n\n/**\n * Type of the Component decorator / constructor function.\n *\n * @stable\n */\nexport interface ComponentDecorator {\n /**\n * @whatItDoes Marks a class as an Angular component and collects component configuration\n * metadata.\n *\n * @howToUse\n *\n * {@example core/ts/metadata/metadata.ts region='component'}\n *\n * @description\n * Component decorator allows you to mark a class as an Angular component and provide additional\n * metadata that determines how the component should be processed, instantiated and used at\n * runtime.\n *\n * Components are the most basic building block of an UI in an Angular application.\n * An Angular application is a tree of Angular components.\n * Angular components are a subset of directives. Unlike directives, components always have\n * a template and only one component can be instantiated per an element in a template.\n *\n * A component must belong to an NgModule in order for it to be usable\n * by another component or application. To specify that a component is a member of an NgModule,\n * you should list it in the `declarations` field of that NgModule.\n *\n * In addition to the metadata configuration specified via the Component decorator,\n * components can control their runtime behavior by implementing various Life-Cycle hooks.\n *\n * **Metadata Properties:**\n *\n * * **animations** - list of animations of this component\n * * **changeDetection** - change detection strategy used by this component\n * * **encapsulation** - style encapsulation strategy used by this component\n * * **entryComponents** - list of components that are dynamically inserted into the view of this\n * component\n * * **exportAs** - name under which the component instance is exported in a template\n * * **host** - map of class property to host element bindings for events, properties and\n * attributes\n * * **inputs** - list of class property names to data-bind as component inputs\n * * **interpolation** - custom interpolation markers used in this component's template\n * * **moduleId** - ES/CommonJS module id of the file in which this component is defined\n * * **outputs** - list of class property names that expose output events that others can\n * subscribe to\n * * **providers** - list of providers available to this component and its children\n * * **queries** - configure queries that can be injected into the component\n * * **selector** - css selector that identifies this component in a template\n * * **styleUrls** - list of urls to stylesheets to be applied to this component's view\n * * **styles** - inline-defined styles to be applied to this component's view\n * * **template** - inline-defined template for the view\n * * **templateUrl** - url to an external file containing a template for the view\n * * **viewProviders** - list of providers available to this component and its view children\n *\n * ### Example\n *\n * {@example core/ts/metadata/metadata.ts region='component'}\n *\n * @stable\n * @Annotation\n */\n (obj: Component): TypeDecorator;\n /**\n * See the {@link Component} decorator.\n */\n new (obj: Component): Component;\n}\n\n/**\n * Type of the Component metadata.\n *\n * @stable\n */\nexport interface Component extends Directive {\n /**\n * Defines the used change detection strategy.\n *\n * When a component is instantiated, Angular creates a change detector, which is responsible for\n * propagating the component's bindings.\n *\n * The `changeDetection` property defines, whether the change detection will be checked every time\n * or only when the component tells it to do so.\n */\n changeDetection?: ChangeDetectionStrategy;\n\n /**\n * Defines the set of injectable objects that are visible to its view DOM children.\n *\n * ## Simple Example\n *\n * Here is an example of a class that can be injected:\n *\n * ```\n * class Greeter {\n * greet(name:string) {\n * return 'Hello ' + name + '!';\n * }\n * }\n *\n * @Directive({\n * selector: 'needs-greeter'\n * })\n * class NeedsGreeter {\n * greeter:Greeter;\n *\n * constructor(greeter:Greeter) {\n * this.greeter = greeter;\n * }\n * }\n *\n * @Component({\n * selector: 'greet',\n * viewProviders: [\n * Greeter\n * ],\n * template: `<needs-greeter></needs-greeter>`\n * })\n * class HelloWorld {\n * }\n *\n * ```\n */\n viewProviders?: Provider[];\n\n /**\n * The module id of the module that contains the component.\n * Needed to be able to resolve relative urls for templates and styles.\n * In CommonJS, this can always be set to `module.id`, similarly SystemJS exposes `__moduleName`\n * variable within each module.\n *\n *\n * ## Simple Example\n *\n * ```\n * @Directive({\n * selector: 'someDir',\n * moduleId: module.id\n * })\n * class SomeDir {\n * }\n *\n * ```\n */\n moduleId?: string;\n\n /**\n * Specifies a template URL for an Angular component.\n *\n *Only one of `templateUrl` or `template` can be defined per View.\n */\n templateUrl?: string;\n\n /**\n * Specifies an inline template for an Angular component.\n *\n * Only one of `templateUrl` or `template` can be defined per Component.\n */\n template?: string;\n\n /**\n * Specifies stylesheet URLs for an Angular component.\n */\n styleUrls?: string[];\n\n /**\n * Specifies inline stylesheets for an Angular component.\n */\n styles?: string[];\n\n /**\n * Animations are defined on components via an animation-like DSL. This DSL approach to describing\n * animations allows for a flexibility that both benefits developers and the framework.\n *\n * Animations work by listening on state changes that occur on an element within\n * the template. When a state change occurs, Angular can then take advantage and animate the\n * arc in between. This works similar to how CSS transitions work, however, by having a\n * programmatic DSL, animations are not limited to environments that are DOM-specific.\n * (Angular can also perform optimizations behind the scenes to make animations more performant.)\n *\n * For animations to be available for use, animation state changes are placed within\n * {@link trigger animation triggers} which are housed inside of the `animations` annotation\n * metadata. Within a trigger both {@link state state} and {@link transition transition} entries\n * can be placed.\n *\n * ```typescript\n * @Component({\n * selector: 'animation-cmp',\n * templateUrl: 'animation-cmp.html',\n * animations: [\n * // this here is our animation trigger that\n * // will contain our state change animations.\n * trigger('myTriggerName', [\n * // the styles defined for the `on` and `off`\n * // states declared below are persisted on the\n * // element once the animation completes.\n * state('on', style({ opacity: 1 }),\n * state('off', style({ opacity: 0 }),\n *\n * // this here is our animation that kicks off when\n * // this state change jump is true\n * transition('on => off', [\n * animate(\"1s\")\n * ])\n * ])\n * ]\n * })\n * ```\n *\n * As depicted in the code above, a group of related animation states are all contained within\n * an animation `trigger` (the code example above called the trigger `myTriggerName`).\n * When a trigger is created then it can be bound onto an element within the component's\n * template via a property prefixed by an `@` symbol followed by trigger name and an expression\n * that\n * is used to determine the state value for that trigger.\n *\n * ```html\n * <!-- animation-cmp.html -->\n * <div @myTriggerName=\"expression\">...</div>\n * ```\n *\n * For state changes to be executed, the `expression` value must change value from its existing\n * value\n * to something that we have set an animation to animate on (in the example above we are listening\n * to a change of state between `on` and `off`). The `expression` value attached to the trigger\n * must be something that can be evaluated with the template/component context.\n *\n * ### DSL Animation Functions\n *\n * Please visit each of the animation DSL functions listed below to gain a better understanding\n * of how and why they are used for crafting animations in Angular:\n *\n * - {@link trigger trigger()}\n * - {@link state state()}\n * - {@link transition transition()}\n * - {@link group group()}\n * - {@link sequence sequence()}\n * - {@link style style()}\n * - {@link animate animate()}\n * - {@link keyframes keyframes()}\n */\n animations?: any[];\n\n /**\n * Specifies how the template and the styles should be encapsulated:\n * - {@link ViewEncapsulation#Native `ViewEncapsulation.Native`} to use shadow roots - only works\n * if natively available on the platform,\n * - {@link ViewEncapsulation#Emulated `ViewEncapsulation.Emulated`} to use shimmed CSS that\n * emulates the native behavior,\n * - {@link ViewEncapsulation#None `ViewEncapsulation.None`} to use global CSS without any\n * encapsulation.\n *\n * When no `encapsulation` is defined for the component, the default value from the\n * {@link CompilerOptions} is used. The default is `ViewEncapsulation.Emulated`}. Provide a new\n * `CompilerOptions` to override this value.\n *\n * If the encapsulation is set to `ViewEncapsulation.Emulated` and the component has no `styles`\n * nor `styleUrls` the encapsulation will automatically be switched to `ViewEncapsulation.None`.\n */\n encapsulation?: ViewEncapsulation;\n\n /**\n * Overrides the default encapsulation start and end delimiters (respectively `{{` and `}}`)\n */\n interpolation?: [string, string];\n\n /**\n * Defines the components that should be compiled as well when\n * this component is defined. For each components listed here,\n * Angular will create a {@link ComponentFactory} and store it in the\n * {@link ComponentFactoryResolver}.\n */\n entryComponents?: Array<Type<any>|any[]>;\n}\n/**\n * Component decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const Component: ComponentDecorator = <ComponentDecorator>makeDecorator(\n 'Component', {\n selector: undefined,\n inputs: undefined,\n outputs: undefined,\n host: undefined,\n exportAs: undefined,\n moduleId: undefined,\n providers: undefined,\n viewProviders: undefined,\n changeDetection: ChangeDetectionStrategy.Default,\n queries: undefined,\n templateUrl: undefined,\n template: undefined,\n styleUrls: undefined,\n styles: undefined,\n animations: undefined,\n encapsulation: undefined,\n interpolation: undefined,\n entryComponents: undefined\n },\n Directive);\n\n/**\n * Type of the Pipe decorator / constructor function.\n *\n * @stable\n */\nexport interface PipeDecorator {\n /**\n * Declare reusable pipe function.\n *\n * A \"pure\" pipe is only re-evaluated when either the input or any of the arguments change.\n *\n * When not specified, pipes default to being pure.\n */\n (obj: Pipe): TypeDecorator;\n\n /**\n * See the {@link Pipe} decorator.\n */\n new (obj: Pipe): Pipe;\n}\n\n/**\n * Type of the Pipe metadata.\n *\n * @stable\n */\nexport interface Pipe {\n name: string;\n pure?: boolean;\n}\n/**\n * Pipe decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const Pipe: PipeDecorator = <PipeDecorator>makeDecorator('Pipe', {\n name: undefined,\n pure: true,\n});\n\n\n/**\n * Type of the Input decorator / constructor function.\n *\n * @stable\n */\nexport interface InputDecorator {\n /**\n * Declares a data-bound input property.\n *\n * Angular automatically updates data-bound properties during change detection.\n *\n * `Input` takes an optional parameter that specifies the name\n * used when instantiating a component in the template. When not provided,\n * the name of the decorated property is used.\n *\n * ### Example\n *\n * The following example creates a component with two input properties.\n *\n * ```typescript\n * @Component({\n * selector: 'bank-account',\n * template: `\n * Bank Name: {{bankName}}\n * Account Id: {{id}}\n * `\n * })\n * class BankAccount {\n * @Input() bankName: string;\n * @Input('account-id') id: string;\n *\n * // this property is not bound, and won't be automatically updated by Angular\n * normalizedBankName: string;\n * }\n *\n * @Component({\n * selector: 'app',\n * template: `\n * <bank-account bank-name=\"RBC\" account-id=\"4747\"></bank-account>\n * `\n * })\n *\n * class App {}\n * ```\n * @stable\n */\n (bindingPropertyName?: string): any;\n new (bindingPropertyName?: string): any;\n}\n\n/**\n * Type of the Input metadata.\n *\n * @stable\n */\nexport interface Input {\n /**\n * Name used when instantiating a component in the template.\n */\n bindingPropertyName?: string;\n}\n/**\n * Input decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const Input: InputDecorator =\n makePropDecorator('Input', [['bindingPropertyName', undefined]]);\n\n/**\n * Type of the Output decorator / constructor function.\n *\n * @stable\n */\nexport interface OutputDecorator {\n /**\n * Declares an event-bound output property.\n *\n * When an output property emits an event, an event handler attached to that event\n * the template is invoked.\n *\n * `Output` takes an optional parameter that specifies the name\n * used when instantiating a component in the template. When not provided,\n * the name of the decorated property is used.\n *\n * ### Example\n *\n * ```typescript\n * @Directive({\n * selector: 'interval-dir',\n * })\n * class IntervalDir {\n * @Output() everySecond = new EventEmitter();\n * @Output('everyFiveSeconds') five5Secs = new EventEmitter();\n *\n * constructor() {\n * setInterval(() => this.everySecond.emit(\"event\"), 1000);\n * setInterval(() => this.five5Secs.emit(\"event\"), 5000);\n * }\n * }\n *\n * @Component({\n * selector: 'app',\n * template: `\n * <interval-dir (everySecond)=\"everySecond()\" (everyFiveSeconds)=\"everyFiveSeconds()\">\n * </interval-dir>\n * `\n * })\n * class App {\n * everySecond() { console.log('second'); }\n * everyFiveSeconds() { console.log('five seconds'); }\n * }\n * ```\n * @stable\n */\n (bindingPropertyName?: string): any;\n new (bindingPropertyName?: string): any;\n}\n\n/**\n * Type of the Output metadata.\n *\n * @stable\n */\nexport interface Output { bindingPropertyName?: string; }\n/**\n * Output decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const Output: OutputDecorator =\n makePropDecorator('Output', [['bindingPropertyName', undefined]]);\n\n\n/**\n * Type of the HostBinding decorator / constructor function.\n *\n * @stable\n */\nexport interface HostBindingDecorator {\n /**\n * Declares a host property binding.\n *\n * Angular automatically checks host property bindings during change detection.\n * If a binding changes, it will update the host element of the directive.\n *\n * `HostBinding` takes an optional parameter that specifies the property\n * name of the host element that will be updated. When not provided,\n * the class property name is used.\n *\n * ### Example\n *\n * The following example creates a directive that sets the `valid` and `invalid` classes\n * on the DOM element that has ngModel directive on it.\n *\n * ```typescript\n * @Directive({selector: '[ngModel]'})\n * class NgModelStatus {\n * constructor(public control:NgModel) {}\n * @HostBinding('class.valid') get valid() { return this.control.valid; }\n * @HostBinding('class.invalid') get invalid() { return this.control.invalid; }\n * }\n *\n * @Component({\n * selector: 'app',\n * template: `<input [(ngModel)]=\"prop\">`,\n * })\n * class App {\n * prop;\n * }\n * ```\n * @stable\n */\n (hostPropertyName?: string): any;\n new (hostPropertyName?: string): any;\n}\n\n/**\n * Type of the HostBinding metadata.\n *\n * @stable\n */\nexport interface HostBinding { hostPropertyName?: string; }\n/**\n * HostBinding decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const HostBinding: HostBindingDecorator =\n makePropDecorator('HostBinding', [['hostPropertyName', undefined]]);\n\n\n/**\n * Type of the HostListener decorator / constructor function.\n *\n * @stable\n */\nexport interface HostListenerDecorator {\n /**\n * Declares a host listener.\n *\n * Angular will invoke the decorated method when the host element emits the specified event.\n *\n * If the decorated method returns `false`, then `preventDefault` is applied on the DOM event.\n *\n * ### Example\n *\n * The following example declares a directive that attaches a click listener to the button and\n * counts clicks.\n *\n * ```typescript\n * @Directive({selector: 'button[counting]'})\n * class CountClicks {\n * numberOfClicks = 0;\n *\n * @HostListener('click', ['$event.target'])\n * onClick(btn) {\n * console.log('button', btn, 'number of clicks:', this.numberOfClicks++);\n * }\n * }\n *\n * @Component({\n * selector: 'app',\n * template: '<button counting>Increment</button>',\n * })\n * class App {}\n * ```\n * @stable\n * @Annotation\n */\n (eventName: string, args?: string[]): any;\n new (eventName: string, args?: string[]): any;\n}\n\n/**\n * Type of the HostListener metadata.\n *\n * @stable\n */\nexport interface HostListener {\n eventName?: string;\n args?: string[];\n}\n/**\n * HostListener decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const HostListener: HostListenerDecorator =\n makePropDecorator('HostListener', [['eventName', undefined], ['args', []]]);\n","\nexport type ChangeDetectionStrategy = number;\nexport let ChangeDetectionStrategy: any = {};\nChangeDetectionStrategy.OnPush = 0;\nChangeDetectionStrategy.Default = 1;\nChangeDetectionStrategy[ChangeDetectionStrategy.OnPush] = \"OnPush\";\nChangeDetectionStrategy[ChangeDetectionStrategy.Default] = \"Default\";\n\nexport type ChangeDetectorStatus = number;\nexport let ChangeDetectorStatus: any = {};\nChangeDetectorStatus.CheckOnce = 0;\nChangeDetectorStatus.Checked = 1;\nChangeDetectorStatus.CheckAlways = 2;\nChangeDetectorStatus.Detached = 3;\nChangeDetectorStatus.Errored = 4;\nChangeDetectorStatus.Destroyed = 5;\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/**\n * @param {?} changeDetectionStrategy\n * @return {?}\n */\nexport function isDefaultChangeDetectionStrategy(changeDetectionStrategy: ChangeDetectionStrategy):\n boolean {\n return changeDetectionStrategy == null ||\n changeDetectionStrategy === ChangeDetectionStrategy.Default;\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\nimport {InjectionToken} from '../di/injection_token';\nimport {Type} from '../type';\nimport {makeParamDecorator, makePropDecorator} from '../util/decorators';\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 */\nexport const ANALYZE_FOR_ENTRY_COMPONENTS = new InjectionToken<any>('AnalyzeForEntryComponents');\n\n/**\n * Type of the Attribute decorator / constructor function.\n *\n * @stable\n */\nexport interface AttributeDecorator {\n /**\n * Specifies that a constant attribute value should be injected.\n *\n * The directive can inject constant string literals of host element attributes.\n *\n * ### Example\n *\n * Suppose we have an `<input>` element and want to know its `type`.\n *\n * ```html\n * <input type=\"text\">\n * ```\n *\n * A decorator can inject string literal `text` like so:\n *\n * {@example core/ts/metadata/metadata.ts region='attributeMetadata'}\n *\n * ### Example as TypeScript Decorator\n *\n * {@example core/ts/metadata/metadata.ts region='attributeFactory'}\n *\n * ### Example as ES5 DSL\n *\n * ```\n * var MyComponent = ng\n * .Component({...})\n * .Class({\n * constructor: [new ng.Attribute('title'), function(title) {\n * ...\n * }]\n * })\n * ```\n *\n * ### Example as ES5 annotation\n *\n * ```\n * var MyComponent = function(title) {\n * ...\n * };\n *\n * MyComponent.annotations = [\n * new ng.Component({...})\n * ]\n * MyComponent.parameters = [\n * [new ng.Attribute('title')]\n * ]\n * ```\n *\n * @stable\n */\n (name: string): any;\n new (name: string): Attribute;\n}\n\n\n/**\n * Type of the Attribute metadata.\n */\nexport interface Attribute { attributeName?: string; }\n/**\n * Attribute decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const Attribute: AttributeDecorator =\n makeParamDecorator('Attribute', [['attributeName', undefined]]);\n\n/**\n * Type of the Query metadata.\n *\n * @stable\n */\nexport interface Query {\n descendants: boolean;\n first: boolean;\n read: any;\n isViewQuery: boolean;\n selector: any;\n}\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 */\nexport abstract class Query {}\n\n/**\n * Type of the ContentChildren decorator / constructor function.\n *\n * See {@link ContentChildren}.\n *\n * @stable\n */\nexport interface ContentChildrenDecorator {\n /**\n * @whatItDoes Configures a content query.\n *\n * @howToUse\n *\n * {@example core/di/ts/contentChildren/content_children_howto.ts region='HowTo'}\n *\n * @description\n *\n * You can use ContentChildren to get the {@link QueryList} of elements or directives from the\n * content DOM. Any time a child element is added, removed, or moved, the query list will be\n * updated,\n * and the changes observable of the query list will emit a new value.\n *\n * Content queries are set before the `ngAfterContentInit` callback is called.\n *\n * **Metadata Properties**:\n *\n * * **selector** - the directive type or the name used for querying.\n * * **descendants** - include only direct children or all descendants.\n * * **read** - read a different token from the queried elements.\n *\n * Let's look at an example:\n *\n * {@example core/di/ts/contentChildren/content_children_example.ts region='Component'}\n *\n * **npm package**: `@angular/core`\n *\n * @stable\n * @Annotation\n */\n (selector: Type<any>|Function|string,\n {descendants, read}?: {descendants?: boolean, read?: any}): any;\n new (\n selector: Type<any>|Function|string,\n {descendants, read}?: {descendants?: boolean, read?: any}): Query;\n}\n\n/**\n * Type of the ContentChildren metadata.\n *\n * @stable\n * @Annotation\n */\nexport type ContentChildren = Query;\n/**\n * ContentChildren decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const ContentChildren: ContentChildrenDecorator =\n <ContentChildrenDecorator>makePropDecorator(\n 'ContentChildren',\n [\n ['selector', undefined], {\n first: false,\n isViewQuery: false,\n descendants: false,\n read: undefined,\n }\n ],\n Query);\n\n/**\n * Type of the ContentChild decorator / constructor function.\n *\n *\n * @stable\n */\nexport interface ContentChildDecorator {\n /**\n * @whatItDoes Configures a content query.\n *\n * @howToUse\n *\n * {@example core/di/ts/contentChild/content_child_howto.ts region='HowTo'}\n *\n * @description\n *\n * You can use ContentChild to get the first element or the directive matching the selector from\n * the content DOM. If the content DOM changes, and a new child matches the selector,\n * the property will be updated.\n *\n * Content queries are set before the `ngAfterContentInit` callback is called.\n *\n * **Metadata Properties**:\n *\n * * **selector** - the directive type or the name used for querying.\n * * **read** - read a different token from the queried element.\n *\n * Let's look at an example:\n *\n * {@example core/di/ts/contentChild/content_child_example.ts region='Component'}\n *\n * **npm package**: `@angular/core`\n *\n * @stable\n * @Annotation\n */\n (selector: Type<any>|Function|string, {read}?: {read?: any}): any;\n new (selector: Type<any>|Function|string, {read}?: {read?: any}): ContentChild;\n}\n\n/**\n * Type of the ContentChild metadata.\n *\n * See {@link ContentChild}.\n *\n * @stable\n */\nexport type ContentChild = Query;\n/**\n * ContentChild decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const ContentChild: ContentChildDecorator = makePropDecorator(\n 'ContentChild',\n [\n ['selector', undefined], {\n first: true,\n isViewQuery: false,\n descendants: true,\n read: undefined,\n }\n ],\n Query);\n\n/**\n * Type of the ViewChildren decorator / constructor function.\n *\n * See {@link ViewChildren}.\n *\n * @stable\n */\nexport interface ViewChildrenDecorator {\n /**\n * @whatItDoes Configures a view query.\n *\n * @howToUse\n *\n * {@example core/di/ts/viewChildren/view_children_howto.ts region='HowTo'}\n *\n * @description\n *\n * You can use ViewChildren to get the {@link QueryList} of elements or directives from the\n * view DOM. Any time a child element is added, removed, or moved, the query list will be updated,\n * and the changes observable of the query list will emit a new value.\n *\n * View queries are set before the `ngAfterViewInit` callback is called.\n *\n * **Metadata Properties**:\n *\n * * **selector** - the directive type or the name used for querying.\n * * **read** - read a different token from the queried elements.\n *\n * Let's look at an example:\n *\n * {@example core/di/ts/viewChildren/view_children_example.ts region='Component'}\n *\n * **npm package**: `@angular/core`\n *\n * @stable\n * @Annotation\n */\n (selector: Type<any>|Function|string, {read}?: {read?: any}): any;\n new (selector: Type<any>|Function|string, {read}?: {read?: any}): ViewChildren;\n}\n\n/**\n * Type of the ViewChildren metadata.\n *\n * @stable\n */\nexport type ViewChildren = Query;\n/**\n * ViewChildren decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const ViewChildren: ViewChildrenDecorator = makePropDecorator(\n 'ViewChildren',\n [\n ['selector', undefined], {\n first: false,\n isViewQuery: true,\n descendants: true,\n read: undefined,\n }\n ],\n Query);\n\n/**\n * Type of the ViewChild decorator / constructor function.\n *\n * See {@link ViewChild}\n *\n * @stable\n */\nexport interface ViewChildDecorator {\n /**\n * @whatItDoes Configures a view query.\n *\n * @howToUse\n *\n * {@example core/di/ts/viewChild/view_child_howto.ts region='HowTo'}\n *\n * @description\n *\n * You can use ViewChild to get the first element or the directive matching the selector from the\n * view DOM. If the view DOM changes, and a new child matches the selector,\n * the property will be updated.\n *\n * View queries are set before the `ngAfterViewInit` callback is called.\n *\n * **Metadata Properties**:\n *\n * * **selector** - the directive type or the name used for querying.\n * * **read** - read a different token from the queried elements.\n *\n * {@example core/di/ts/viewChild/view_child_example.ts region='Component'}\n *\n * **npm package**: `@angular/core`\n *\n * @stable\n * @Annotation\n */\n (selector: Type<any>|Function|string, {read}?: {read?: any}): any;\n new (selector: Type<any>|Function|string, {read}?: {read?: any}): ViewChild;\n}\n\n/**\n * Type of the ViewChild metadata.\n *\n * @stable\n */\nexport type ViewChild = Query;\n/**\n * ViewChild decorator and metadata.\n * \n * \\@stable\n * \\@Annotation\n */\nexport const ViewChild: ViewChildDecorator = makePropDecorator(\n 'ViewChild',\n [\n ['selector', undefined], {\n first: true,\n isViewQuery: true,\n descendants: true,\n read: undefined,\n }\n ],\n Query);\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\nimport {Type} from '../type';\nimport {global, stringify} from '../util';\n\nlet /** @type {?} */ _nextClassId = 0;\nconst /** @type {?} */ Reflect = global['Reflect'];\n\n/**\n * Declares the interface to be used with {@link Class}.\n *\n * @stable\n */\nexport type ClassDefinition = {\n /**\n * Optional argument for specifying the superclass.\n */\n extends?: Type<any>;\n\n /**\n * Required constructor function for a class.\n *\n * The function may be optionally wrapped in an `Array`, in which case additional parameter\n * annotations may be specified.\n * The number of arguments and the number of parameter annotations must match.\n *\n * See {@link Class} for example of usage.\n */\n constructor: Function | any[];\n} &\n{\n /**\n * Other methods on the class. Note that values should have type 'Function' but TS requires\n * all properties to have a narrower type than the index signature.\n */\n [x: string]: Type<any>|Function|any[];\n};\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 * DSL syntax:\n *\n * ```\n * var MyClass = ng\n * .Component({...})\n * .Class({...});\n * ```\n *\n * ES7 syntax:\n *\n * ```\n * @ng.Component({...})\n * class MyClass {...}\n * ```\n * @stable\n */\nexport interface TypeDecorator {\n /**\n * Invoke as ES7 decorator.\n */\n <T extends Type<any>>(type: T): T;\n\n // Make TypeDecorator assignable to built-in ParameterDecorator type.\n // ParameterDecorator is declared in lib.d.ts as a `declare type`\n // so we cannot declare this interface as a subtype.\n // see https://github.com/angular/angular/issues/3379#issuecomment-126169417\n (target: Object, propertyKey?: string|symbol, parameterIndex?: number): void;\n\n /**\n * Storage for the accumulated annotations so far used by the DSL syntax.\n *\n * Used by {@link Class} to annotate the generated class.\n */\n annotations: any[];\n\n /**\n * Generate a class from the definition and annotate it with {@link TypeDecorator#annotations}.\n */\n Class(obj: ClassDefinition): Type<any>;\n}\n/**\n * @param {?} annotation\n * @return {?}\n */\nfunction extractAnnotation(annotation: any): any {\n if (typeof annotation === 'function' && annotation.hasOwnProperty('annotation')) {\n // it is a decorator, extract annotation\n annotation = annotation.annotation;\n }\n return annotation;\n}\n/**\n * @param {?} fnOrArray\n * @param {?} key\n * @return {?}\n */\nfunction applyParams(fnOrArray: Function | any[] | undefined, key: string): Function {\n if (fnOrArray === Object || fnOrArray === String || fnOrArray === Function ||\n fnOrArray === Number || fnOrArray === Array) {\n throw new Error(`Can not use native ${stringify(fnOrArray)} as constructor`);\n }\n\n if (typeof fnOrArray === 'function') {\n return fnOrArray;\n }\n\n if (Array.isArray(fnOrArray)) {\n const /** @type {?} */ annotations: any[] = /** @type {?} */(( fnOrArray as any[]));\n const /** @type {?} */ annoLength = annotations.length - 1;\n const /** @type {?} */ fn: Function = fnOrArray[annoLength];\n if (typeof fn !== 'function') {\n throw new Error(\n `Last position of Class method array must be Function in key ${key} was '${stringify(fn)}'`);\n }\n if (annoLength != fn.length) {\n throw new Error(\n `Number of annotations (${annoLength}) does not match number of arguments (${fn.length}) in the function: ${stringify(fn)}`);\n }\n const /** @type {?} */ paramsAnnotations: any[][] = [];\n for (let /** @type {?} */ i = 0, /** @type {?} */ ii = annotations.length - 1; i < ii; i++) {\n const /** @type {?} */ paramAnnotations: any[] = [];\n paramsAnnotations.push(paramAnnotations);\n const /** @type {?} */ annotation = annotations[i];\n if (Array.isArray(annotation)) {\n for (let /** @type {?} */ j = 0; j < annotation.length; j++) {\n paramAnnotations.push(extractAnnotation(annotation[j]));\n }\n } else if (typeof annotation === 'function') {\n paramAnnotations.push(extractAnnotation(annotation));\n } else {\n paramAnnotations.push(annotation);\n }\n }\n Reflect.defineMetadata('parameters', paramsAnnotations, fn);\n return fn;\n }\n\n throw new Error(\n `Only Function or Array is supported in Class definition for key '${key}' is '${stringify(fnOrArray)}'`);\n}\n/**\n * Provides a way for expressing ES6 classes with parameter annotations in ES5.\n * \n * ## Basic Example\n * \n * ```\n * var Greeter = ng.Class({\n * constructor: function(name) {\n * this.name = name;\n * },\n * \n * greet: function() {\n * alert('Hello ' + this.name + '!');\n * }\n * });\n * ```\n * \n * is equivalent to ES6:\n * \n * ```\n * class Greeter {\n * constructor(name) {\n * this.name = name;\n * }\n * \n * greet() {\n * alert('Hello ' + this.name + '!');\n * }\n * }\n * ```\n * \n * or equivalent to ES5:\n * \n * ```\n * var Greeter = function (name) {\n * this.name = name;\n * }\n * \n * Greeter.prototype.greet = function () {\n * alert('Hello ' + this.name + '!');\n * }\n * ```\n * \n * ### Example with parameter annotations\n * \n * ```\n * var MyService = ng.Class({\n * constructor: [String, [new Optional(), Service], function(name, myService) {\n * ...\n * }]\n * });\n * ```\n * \n * is equivalent to ES6:\n * \n * ```\n * class MyService {\n * constructor(name: string, \\@Optional() myService: Service) {\n * ...\n * }\n * }\n * ```\n * \n * ### Example with inheritance\n * \n * ```\n * var Shape = ng.Class({\n * constructor: (color) {\n * this.color = color;\n * }\n * });\n * \n * var Square = ng.Class({\n * extends: Shape,\n * constructor: function(color, size) {\n * Shape.call(this, color);\n * this.size = size;\n * }\n * });\n * ```\n * @suppress {globalThis}\n * \\@stable\n * @param {?} clsDef\n * @return {?}\n */\nexport function Class(clsDef: ClassDefinition): Type<any> {\n const /** @type {?} */ constructor = applyParams(\n clsDef.hasOwnProperty('constructor') ? clsDef.constructor : undefined, 'constructor');\n\n let /** @type {?} */ proto = constructor.prototype;\n\n if (clsDef.hasOwnProperty('extends')) {\n if (typeof clsDef.extends === 'function') {\n ( /** @type {?} */((<Function>constructor))).prototype = proto =\n Object.create(( /** @type {?} */((<Function>clsDef.extends))).prototype);\n } else {\n throw new Error(\n `Class definition 'extends' property must be a constructor function was: ${stringify(clsDef.extends)}`);\n }\n }\n\n for (const /** @type {?} */ key in clsDef) {\n if (key !== 'extends' && key !== 'prototype' && clsDef.hasOwnProperty(key)) {\n proto[key] = applyParams(clsDef[key], key);\n }\n }\n\n if (this && this.annotations instanceof Array) {\n Reflect.defineMetadata('annotations', this.annotations, constructor);\n }\n\n const /** @type {?} */ constructorName = constructor['name'];\n if (!constructorName || constructorName === 'constructor') {\n ( /** @type {?} */((constructor as any)))['overriddenName'] = `class${_nextClassId++}`;\n }\n\n return /** @type {?} */(( <Type<any>>constructor));\n}\n/**\n * @suppress {globalThis}\n * @param {?} name\n * @param {?} props\n * @param {?=} parentClass\n * @param {?=} chainFn\n * @return {?}\n */\nexport function makeDecorator(\n name: string, props: {[name: string]: any}, parentClass?: any,\n chainFn?: (fn: Function) => void): (...args: any[]) => (cls: any) => any {\n const /** @type {?} */ metaCtor = makeMetadataCtor([props]);\n/**\n * @param {?} objOrType\n * @return {?}\n */\nfunction DecoratorFactory(objOrType: any): (cls: any) => any {\n if (!(Reflect && Reflect.getOwnMetadata)) {\n throw 'reflect-metadata shim is required when using class decorators';\n }\n\n if (this instanceof DecoratorFactory) {\n metaCtor.call(this, objOrType);\n return this;\n }\n\n const /** @type {?} */ annotationInstance = new ( /** @type {?} */((<any>DecoratorFactory)))(objOrType);\n const /** @type {?} */ chainAnnotation =\n typeof this === 'function' && Array.isArray(this.annotations) ? this.annotations : [];\n chainAnnotation.push(annotationInstance);\n const /** @type {?} */ TypeDecorator: TypeDecorator = /** @type {?} */(( <TypeDecorator>function TypeDecorator(cls: Type<any>) {\n const /** @type {?} */ annotations = Reflect.getOwnMetadata('annotations', cls) || [];\n annotations.push(annotationInstance);\n Reflect.defineMetadata('annotations', annotations, cls);\n return cls;\n }));\n TypeDecorator.annotations = chainAnnotation;\n TypeDecorator.Class = Class;\n if (chainFn) chainFn(TypeDecorator);\n return TypeDecorator;\n }\n\n if (parentClass) {\n DecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n\n DecoratorFactory.prototype.toString = () => `@${name}`;\n ( /** @type {?} */((<any>DecoratorFactory))).annotationCls = DecoratorFactory;\n return DecoratorFactory;\n}\n/**\n * @param {?} props\n * @return {?}\n */\nfunction makeMetadataCtor(props: ([string, any] | {[key: string]: any})[]): any {\n return function ctor(...args: any[]) {\n props.forEach((prop, i) => {\n const /** @type {?} */ argVal = args[i];\n if (Array.isArray(prop)) {\n // plain parameter\n this[prop[0]] = argVal === undefined ? prop[1] : argVal;\n } else {\n for (const /** @type {?} */ propName in prop) {\n this[propName] =\n argVal && argVal.hasOwnProperty(propName) ? argVal[propName] : prop[propName];\n }\n }\n });\n };\n}\n/**\n * @param {?} name\n * @param {?} props\n * @param {?=} parentClass\n * @return {?}\n */\nexport function makeParamDecorator(\n name: string, props: ([string, any] | {[name: string]: any})[], parentClass?: any): any {\n const /** @type {?} */ metaCtor = makeMetadataCtor(props);\n/**\n * @param {...?} args\n * @return {?}\n */\nfunction ParamDecoratorFactory(...args: any[]): any {\n if (this instanceof ParamDecoratorFactory) {\n metaCtor.apply(this, args);\n return this;\n }\n const /** @type {?} */ annotationInstance = new ( /** @type {?} */((<any>ParamDecoratorFactory)))(...args);\n\n ( /** @type {?} */((<any>ParamDecorator))).annotation = annotationInstance;\n return ParamDecorator;\n/**\n * @param {?} cls\n * @param {?} unusedKey\n * @param {?} index\n * @return {?}\n */\nfunction ParamDecorator(cls: any, unusedKey: any, index: number): any {\n const /** @type {?} */ parameters: (any[] | null)[] = Reflect.getOwnMetadata('parameters', cls) || [];\n\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\n parameters[index] = parameters[index] || []; /** @type {?} */((\n parameters[index])).push(annotationInstance);\n\n Reflect.defineMetadata('parameters', parameters, cls);\n return cls;\n }\n }\n if (parentClass) {\n ParamDecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n ParamDecoratorFactory.prototype.toString = () => `@${name}`;\n ( /** @type {?} */((<any>ParamDecoratorFactory))).annotationCls = ParamDecoratorFactory;\n return ParamDecoratorFactory;\n}\n/**\n * @param {?} name\n * @param {?} props\n * @param {?=} parentClass\n * @return {?}\n */\nexport function makePropDecorator(\n name: string, props: ([string, any] | {[key: string]: any})[], parentClass?: any): any {\n const /** @type {?} */ metaCtor = makeMetadataCtor(props);\n/**\n * @param {...?} args\n * @return {?}\n */\nfunction PropDecoratorFactory(...args: any[]): any {\n if (this instanceof PropDecoratorFactory) {\n metaCtor.apply(this, args);\n return this;\n }\n\n const /** @type {?} */ decoratorInstance = new ( /** @type {?} */((<any>PropDecoratorFactory)))(...args);\n\n return function PropDecorator(target: any, name: string) {\n const /** @type {?} */ meta = Reflect.getOwnMetadata('propMetadata', target.constructor) || {};\n meta[name] = meta.hasOwnProperty(name) && meta[name] || [];\n meta[name].unshift(decoratorInstance);\n Reflect.defineMetadata('propMetadata', meta, target.constructor);\n };\n }\n\n if (parentClass) {\n PropDecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n\n PropDecoratorFactory.prototype.toString = () => `@${name}`;\n ( /** @type {?} */((<any>PropDecoratorFactory))).annotationCls = PropDecoratorFactory;\n return PropDecoratorFactory;\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// TODO(jteplitz602): Load WorkerGlobalScope from lib.webworker.d.ts file #3492\ndeclare var WorkerGlobalScope: any /** TODO #9100 */;\n// CommonJS / Node have global context exposed as \"global\" variable.\n// We don't want to include the whole node.d.ts this this compilation unit so we'll just fake\n// the global \"global\" var for now.\ndeclare var global: any /** TODO #9100 */;\nconst /** @type {?} */ __window = typeof window !== 'undefined' && window;\nconst /** @type {?} */ __self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' &&\n self instanceof WorkerGlobalScope && self;\nconst /** @type {?} */ __global = typeof global !== 'undefined' && global;\nconst /** @type {?} */ _global: {[name: string]: any} = __window || __global || __self;\nexport {_global as global};\n\n// When Symbol.iterator doesn't exist, retrieves the key used in es6-shim\ndeclare const Symbol: any;\nlet /** @type {?} */ _symbolIterator: any = null;\n/**\n * @return {?}\n */\nexport function getSymbolIterator(): string|symbol {\n if (!_symbolIterator) {\n const /** @type {?} */ Symbol = _global['Symbol'];\n if (Symbol && Symbol.iterator) {\n _symbolIterator = Symbol.iterator;\n } else {\n // es6-shim specific logic\n const /** @type {?} */ keys = Object.getOwnPropertyNames(Map.prototype);\n for (let /** @type {?} */ i = 0; i < keys.length; ++i) {\n const /** @type {?} */ key = keys[i];\n if (key !== 'entries' && key !== 'size' &&\n ( /** @type {?} */((Map as any))).prototype[key] === Map.prototype['entries']) {\n _symbolIterator = key;\n }\n }\n }\n }\n return _symbolIterator;\n}\n/**\n * @param {?} fn\n * @return {?}\n */\nexport function scheduleMicroTask(fn: Function) {\n Zone.current.scheduleMicroTask('scheduleMicrotask', fn);\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nexport function looseIdentical(a: any, b: any): boolean {\n return a === b || typeof a === 'number' && typeof b === 'number' && isNaN(a) && isNaN(b);\n}\n/**\n * @param {?} token\n * @return {?}\n */\nexport function stringify(token: any): string {\n if (typeof token === 'string') {\n return token;\n }\n\n if (token == null) {\n return '' + token;\n }\n\n if (token.overriddenName) {\n return `${token.overriddenName}`;\n }\n\n if (token.name) {\n return `${token.name}`;\n }\n\n const /** @type {?} */ res = token.toString();\n\n if (res == null) {\n return '' + res;\n }\n\n const /** @type {?} */ newLineIndex = res.indexOf('\\n');\n return newLineIndex === -1 ? res : res.substring(0, newLineIndex);\n}\n","\n/**\n * Creates a token that can be used in a DI Provider.\n * \n * ### Example ([live demo](http://plnkr.co/edit/Ys9ezXpj2Mnoy3Uc8KBp?p=preview))\n * \n * ```typescript\n * var t = new OpaqueToken(\"value\");\n * \n * var injector = Injector.resolveAndCreate([\n * {provide: t, useValue: \"bindingValue\"}\n * ]);\n * \n * expect(injector.get(t)).toEqual(\"bindingValue\");\n * ```\n * \n * Using an `OpaqueToken` is preferable to using strings as tokens because of possible collisions\n * caused by multiple providers using the same string as two different tokens.\n * \n * Using an `OpaqueToken` is preferable to using an `Object` as tokens because it provides better\n * error messages.\n * @deprecated since v4.0.0 because it does not support type information, use `InjectionToken<?>`\n * instead.\n */\nexport class OpaqueToken {\n/**\n * @param {?} _desc\n */\nconstructor(protected _desc: string) {}\n/**\n * @return {?}\n */\ntoString(): string { return `Token ${this._desc}`; }\n}\n\nfunction OpaqueToken_tsickle_Closure_declarations() {\n/** @type {?} */\nOpaqueToken.prototype._desc;\n}\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 */\nexport class InjectionToken<T> extends OpaqueToken {\nprivate _differentiate_from_OpaqueToken_structurally: any;\n/**\n * @param {?} desc\n */\nconstructor(desc: string) { super(desc); }\n/**\n * @return {?}\n */\ntoString(): string { return `InjectionToken ${this._desc}`; }\n}\n\nfunction InjectionToken_tsickle_Closure_declarations() {\n/** @type {?} */\nInjectionToken.prototype._differentiate_from_OpaqueToken_structurally;\n}\n\n"],"names":["_transition","transition","_keyframes","keyframes","_state","state","_style","style","_sequence","sequence","_group","group","_animate","animate","_trigger","trigger","AUTO_STYLE","viewDef","anchorDef","renderNode","tokenKey","RendererV1","createScope","global","ResolvedReflectiveFactory"],"mappings":";;;;;AoFCA;;;;;;;;;;;;;;;;;;;;;;;AAuBA,AAAA,MAAA,WAAA,CAAA;;;;IAIA,WAAA,CAIwB,KAAO,EAJ/B;QAIwB,IAAxB,CAAA,KAAwB,GAAA,KAAA,CAAO;KAAO;;;;IAAtC,QAEG,GAFH,EAEuB,OAAO,CAF9B,MAAA,EAE8B,IAAU,CAAI,KAAC,CAF7C,CAEkD,CAAE,EAAC;CADpD;AAED,AAKA;;;;;;;;;;;;;;;;;;;;;;AAsBA,AAAA,MAAA,cAHC,SAAA,WAAA,CAGD;;;;IAKA,WAAA,CAJG,IAAiB,EAIpB,EAJ2B,KAAA,CAAA,IAAA,CAAA,CAAA,EAAA;;;;IAQ3B,QANG,GAMH,EANuB,OAAO,CAM9B,eAAA,EAN8B,IAAmB,CAAI,KAAC,CAMtD,CAN2D,CAAE,EAAC;CAO7D,AAED,AAGC;;AD7ED;;;;;;;AAcA,MAAM,QAAA,GAAW,OAAO,MAAA,KAAW,WAAA,IAAe,MAAA,CAAO;AACzD,MAAM,MAAA,GAAS,OAAO,IAAA,KAAS,WAAA,IAAe,OAAO,iBAAA,KAAsB,WAAA;IACvE,IAAI,YAAY,iBAAA,IAAqB,IAAA,CAAK;AAC9C,MAAM,QAAA,GAAW,OAAO,MAAA,KAAW,WAAA,IAAe,MAAA,CAAO;AACzD,MAAM,OAAA,GAAiC,QAAA,IAAY,QAAA,IAAY,MAAA,CAAO;AACtE,AAIA,IAAI,eAAA,GAAuB,IAAA,CAAK;;;;AAIhC,AAAA,SAAA,iBAAA,GAAA;IACE,IAAI,CAHC,eAAC,EAAgB;QAIpB,uBAHM,MAAA,GAAS,OAAA,CAAQ,QAAC,CAAQ,CAAC;QAIjC,IAAI,MAHC,IAAS,MAAA,CAAO,QAAC,EAAS;YAI7B,eAAe,GAHG,MAAA,CAAO,QAAC,CAAQ;SAInC;aAHM;;YAKL,uBAHM,IAAA,GAAO,MAAA,CAAO,mBAAC,CAAmB,GAAC,CAAG,SAAC,CAAS,CAAC;YAIvD,KAAK,qBAHI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,MAAC,EAAO,EAAA,CAAG,EAAE;gBAIpC,uBAHM,GAAA,GAAM,IAAA,CAAK,CAAC,CAAC,CAAC;gBAIpB,IAAI,GAHC,KAAO,SAAA,IAAa,GAAA,KAAQ,MAAA;oBAI7B,EAAoB,GAHZ,GAAK,SAAC,CAAS,GAAC,CAAG,KAAK,GAAA,CAAI,SAAC,CAAS,SAAC,CAAS,EAAE;oBAI5D,eAAe,GAHG,GAAA,CAAI;iBAIvB;aACF;SACF;KACF;IACD,OAHO,eAAA,CAAgB;CAIxB;;;;;AAKD,AAAA,SAAA,iBAAA,CANC,EAAA,EAMD;IACE,IAAI,CANC,OAAC,CAAO,iBAAC,CAAiB,mBAAC,EAAoB,EAAA,CAAG,CAAC;CAOzD;;;;;;AAMD,AAAA,SAAA,cAAA,CATC,CAAA,EAAA,CAAA,EASD;IACE,OATO,CAAA,KAAM,CAAA,IAAK,OAAO,CAAA,KAAM,QAAA,IAAY,OAAO,CAAA,KAAM,QAAA,IAAY,KAAA,CAAM,CAAC,CAAC,IAAI,KAAA,CAAM,CAAC,CAAC,CAAC;CAU1F;;;;;AAKD,AAAA,SAAA,SAAA,CAZC,KAAA,EAYD;IACE,IAAI,OAZO,KAAA,KAAU,QAAA,EAAU;QAa7B,OAZO,KAAA,CAAM;KAad;IAED,IAAI,KAZC,IAAQ,IAAA,EAAM;QAajB,OAZO,EAAA,GAAK,KAAA,CAAM;KAanB;IAED,IAAI,KAZC,CAAK,cAAC,EAAe;QAaxB,OAZO,CAYX,EAZW,KAAI,CAAK,cAAC,CAYrB,CAZmC,CAAE;KAalC;IAED,IAAI,KAZC,CAAK,IAAC,EAAK;QAad,OAZO,CAYX,EAZW,KAAI,CAAK,IAAC,CAYrB,CAZyB,CAAE;KAaxB;IAED,uBAZM,GAAA,GAAM,KAAA,CAAM,QAAC,EAAQ,CAAE;IAc7B,IAAI,GAZC,IAAM,IAAA,EAAM;QAaf,OAZO,EAAA,GAAK,GAAA,CAAI;KAajB;IAED,uBAZM,YAAA,GAAe,GAAA,CAAI,OAAC,CAAO,IAAC,CAAI,CAAC;IAavC,OAZO,YAAA,KAAiB,CAAA,CAAE,GAAG,GAAA,GAAM,GAAA,CAAI,SAAC,CAAS,CAAC,EAAE,YAAA,CAAa,CAAC;CAanE;;AD1FD;;;;;;;AAUA,AAEA,IADI,YAAA,GAAe,CAAA,CAAE;AAErB,MADM,OAAA,GAAUuB,OAAA,CAAO,SAAC,CAAS,CAAC;;;;;AAkFlC,SAAA,iBAAA,CAJC,UAAA,EAID;IACE,IAAI,OAJO,UAAA,KAAe,UAAA,IAAc,UAAA,CAAW,cAAC,CAAc,YAAC,CAAY,EAAE;;QAM/E,UAAU,GAJG,UAAA,CAAW,UAAC,CAAU;KAKpC;IACD,OAJO,UAAA,CAAW;CAKnB;;;;;;AAMD,SAAA,WAAA,CARC,SAAA,EAAA,GAAA,EAQD;IACE,IAAI,SARC,KAAa,MAAA,IAAU,SAAA,KAAc,MAAA,IAAU,SAAA,KAAc,QAAA;QAS9D,SAAS,KARK,MAAA,IAAU,SAAA,KAAc,KAAA,EAAO;QAS/C,MARM,IAAI,KAAA,CAAM,CAQpB,mBAAA,EARqB,SAAsB,CAAS,SAAC,CAAS,CAQ9D,eAAA,CAR+D,CAAiB,CAAC;KAS9E;IAED,IAAI,OARO,SAAA,KAAc,UAAA,EAAY;QASnC,OARO,SAAA,CAAU;KASlB;IAED,IAAI,KARC,CAAK,OAAC,CAAO,SAAC,CAAS,EAAE;QAS5B,uBARM,WAAA,IAAqB,SAAiB,CAAA,CAAE;QAS9C,uBARM,UAAA,GAAa,WAAA,CAAY,MAAC,GAAQ,CAAA,CAAE;QAS1C,uBARM,EAAA,GAAe,SAAA,CAAU,UAAC,CAAU,CAAC;QAS3C,IAAI,OARO,EAAA,KAAO,UAAA,EAAY;YAS5B,MARM,IAAI,KAAA,CASN,CADV,4DAAA,EACyE,GARC,CAO1E,MAAA,EAP6E,SAAS,CAAS,EAAC,CAAE,CAOlG,CAAA,CAPmG,CAAG,CAAC;SASlG;QACD,IAAI,UARC,IAAa,EAAA,CAAG,MAAC,EAAO;YAS3B,MARM,IAAI,KAAA,CASN,CADV,uBAAA,EACoC,UARC,CAOrC,sCAAA,EAP+C,EAAyC,CAAE,MAAC,CAO3F,mBAAA,EAPiG,SAAsB,CAAS,EAAC,CAAE,CAOnI,CAPoI,CAAE,CAAC;SASlI;QACD,uBARM,iBAAA,GAA6B,EAAA,CAAG;QAStC,KAAK,qBARI,CAAA,GAAI,CAAA,mBAAG,EAAA,GAAK,WAAA,CAAY,MAAC,GAAQ,CAAA,EAAG,CAAA,GAAI,EAAA,EAAI,CAAA,EAAE,EAAG;YASxD,uBARM,gBAAA,GAA0B,EAAA,CAAG;YASnC,iBAAiB,CARC,IAAC,CAAI,gBAAC,CAAgB,CAAC;YASzC,uBARM,UAAA,GAAa,WAAA,CAAY,CAAC,CAAC,CAAC;YASlC,IAAI,KARC,CAAK,OAAC,CAAO,UAAC,CAAU,EAAE;gBAS7B,KAAK,qBARI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,CAAW,MAAC,EAAO,CAAA,EAAE,EAAG;oBAS1C,gBAAgB,CARC,IAAC,CAAI,iBAAC,CAAiB,UAAC,CAAU,CAAC,CAAC,CAAC,CAAC,CAAC;iBASzD;aACF;iBARM,IAAA,OAAW,UAAA,KAAe,UAAA,EAAY;gBAS3C,gBAAgB,CARC,IAAC,CAAI,iBAAC,CAAiB,UAAC,CAAU,CAAC,CAAC;aAStD;iBARM;gBASL,gBAAgB,CARC,IAAC,CAAI,UAAC,CAAU,CAAC;aASnC;SACF;QACD,OAAO,CARC,cAAC,CAAc,YAAC,EAAa,iBAAA,EAAmB,EAAA,CAAG,CAAC;QAS5D,OARO,EAAA,CAAG;KASX;IAED,MARM,IAAI,KAAA,CASN,CADN,iEAAA,EAC0E,GARC,CAO3E,MAAA,EAP8E,SAAS,CAAS,SAAC,CAAS,CAO1G,CAAA,CAP2G,CAAG,CAAC;CAS9G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsFD,AAAA,SAAA,KAAA,CATC,MAAA,EASD;IACE,uBATM,WAAA,GAAc,WAAA,CAUhB,MAAM,CATC,cAAC,CAAc,aAAC,CAAa,GAAG,MAAA,CAAO,WAAC,GAAa,SAAA,EAAW,aAAA,CAAc,CAAC;IAW1F,qBATI,KAAA,GAAQ,WAAA,CAAY,SAAC,CAAS;IAWlC,IAAI,MATC,CAAM,cAAC,CAAc,SAAC,CAAS,EAAE;QAUpC,IAAI,OATO,MAAA,CAAO,OAAC,KAAW,UAAA,EAAY;YAUxC,EATW,WAAC,GAAY,SAAC,GAAW,KAAA;gBAUhC,MAAM,CATC,MAAC,CAAM,EAAW,MAAC,CAAM,OAAC,GAAQ,SAAC,CAAS,CAAC;SAUzD;aATM;YAUL,MATM,IAAI,KAAA,CAUN,CADV,wEAAA,EACqF,SATC,CAAS,MAAC,CAAM,OAAC,CAAO,CAQ9G,CAR+G,CAAE,CAAC;SAU7G;KACF;IAED,KAAK,uBATM,GAAA,IAAO,MAAA,EAAQ;QAUxB,IAAI,GATC,KAAO,SAAA,IAAa,GAAA,KAAQ,WAAA,IAAe,MAAA,CAAO,cAAC,CAAc,GAAC,CAAG,EAAE;YAU1E,KAAK,CATC,GAAC,CAAG,GAAG,WAAA,CAAY,MAAC,CAAM,GAAC,CAAG,EAAE,GAAA,CAAI,CAAC;SAU5C;KACF;IAED,IAAI,IATC,IAAO,IAAA,CAAK,WAAC,YAAsB,KAAA,EAAO;QAU7C,OAAO,CATC,cAAC,CAAc,aAAC,EAAc,IAAA,CAAK,WAAC,EAAY,WAAA,CAAY,CAAC;KAUtE;IAED,uBATM,eAAA,GAAkB,WAAA,CAAY,MAAC,CAAM,CAAC;IAU5C,IAAI,CATC,eAAC,IAAkB,eAAA,KAAoB,aAAA,EAAe;QAUzD,EAAoB,WATJ,GAAK,gBAAC,CAAgB,GAAG,CAS7C,KAAA,EAT6C,YAAS,EAAY,CASlE,CAToE,CAAE;KAUnE;IAED,QATkB,WAAC,EAAW;CAU/B;;;;;;;;;AASD,AAAA,SAAA,aAAA,CACI,IAAY,EAAE,KAA4B,EAAE,WAAiB,EAC7D,OAAgC,EAFpC;IAGE,uBAbM,QAAA,GAAW,gBAAA,CAAiB,CAAC,KAAC,CAAK,CAAC,CAAC;;;;;IAkB7C,SAAA,gBAAA,CAhBG,SAAA,EAgBH;QACI,IAAI,EAhBE,OAAC,IAAU,OAAA,CAAQ,cAAC,CAAc,EAAE;YAiBxC,MAhBM,+DAAA,CAAgE;SAiBvE;QAED,IAAI,IAhBC,YAAe,gBAAA,EAAkB;YAiBpC,QAAQ,CAhBC,IAAC,CAAI,IAAC,EAAK,SAAA,CAAU,CAAC;YAiB/B,OAhBO,IAAA,CAAK;SAiBb;QAED,uBAhBM,kBAAA,GAAqB,MAAU,gBAAC,GAAiB,SAAC,CAAS,CAAC;QAiBlE,uBAhBM,eAAA,GAiBF,OAhBO,IAAA,KAAS,UAAA,IAAc,KAAA,CAAM,OAAC,CAAO,IAAC,CAAI,WAAC,CAAW,GAAG,IAAA,CAAK,WAAC,GAAa,EAAA,CAAG;QAiB1F,eAAe,CAhBC,IAAC,CAAI,kBAAC,CAAkB,CAAC;QAiBzC,uBAhBM,aAAA,IAA8C,SAgBxD,aAAA,CAhB+E,GAAc,EAgB7F;YACM,uBAhBM,WAAA,GAAc,OAAA,CAAQ,cAAC,CAAc,aAAC,EAAc,GAAA,CAAI,IAAI,EAAA,CAAG;YAiBrE,WAAW,CAhBC,IAAC,CAAI,kBAAC,CAAkB,CAAC;YAiBrC,OAAO,CAhBC,cAAC,CAAc,aAAC,EAAc,WAAA,EAAa,GAAA,CAAI,CAAC;YAiBxD,OAhBO,GAAA,CAAI;SAiBX,CAAC,CAhBD;QAiBF,aAAa,CAhBC,WAAC,GAAa,eAAA,CAAgB;QAiB5C,aAAa,CAhBC,KAAC,GAAO,KAAA,CAAM;QAiB5B,IAAI,OAhBC;YAAQ,OAAA,CAAQ,aAAC,CAAa,CAAC;QAiBpC,OAhBO,aAAA,CAAc;KAiBtB;IAED,IAAI,WAhBC,EAAY;QAiBf,gBAAgB,CAhBC,SAAC,GAAW,MAAA,CAAO,MAAC,CAAM,WAAC,CAAW,SAAC,CAAS,CAAC;KAiBnE;IAED,gBAAgB,CAhBC,SAAC,CAAS,QAAC,GAAU,MAAM,CAgB9C,CAAA,EAhB8C,IAAK,CAgBnD,CAhBuD,CAAE;IAiBvD,EAhBM,gBAAC,GAAiB,aAAC,GAAe,gBAAA,CAAiB;IAiBzD,OAhBO,gBAAA,CAAiB;CAiBzB;;;;;AAKD,SAAA,gBAAA,CAnBC,KAAA,EAmBD;IACE,OAnBO,SAmBT,IAAA,CAnBuB,GAAC,IAAY,EAmBpC;QACI,KAAK,CAnBC,OAAC,CAAO,CAAC,IAAC,EAAK,CAAA,KAmBzB;YACM,uBAnBM,MAAA,GAAS,IAAA,CAAK,CAAC,CAAC,CAAC;YAoBvB,IAAI,KAnBC,CAAK,OAAC,CAAO,IAAC,CAAI,EAAE;;gBAqBvB,IAAI,CAnBC,IAAC,CAAI,CAAC,CAAC,CAAC,GAAG,MAAA,KAAW,SAAA,GAAY,IAAA,CAAK,CAAC,CAAC,GAAG,MAAA,CAAO;aAoBzD;iBAnBM;gBAoBL,KAAK,uBAnBM,QAAA,IAAY,IAAA,EAAM;oBAoB3B,IAAI,CAnBC,QAAC,CAAQ;wBAoBV,MAAM,IAnBI,MAAA,CAAO,cAAC,CAAc,QAAC,CAAQ,GAAG,MAAA,CAAO,QAAC,CAAQ,GAAG,IAAA,CAAK,QAAC,CAAQ,CAAC;iBAoBnF;aACF;SACF,CAnBC,CAAC;KAoBJ,CAnBC;CAoBH;;;;;;;AAOD,AAAA,SAAA,kBAAA,CACI,IAAY,EAAE,KAAgD,EAAE,WAAiB,EADrF;IAEE,uBAxBM,QAAA,GAAW,gBAAA,CAAiB,KAAC,CAAK,CAAC;;;;;IA6B3C,SAAA,qBAAA,CA5BG,GAAA,IAAA,EA4BH;QACI,IAAI,IA5BC,YAAe,qBAAA,EAAuB;YA6BzC,QAAQ,CA5BC,KAAC,CAAK,IAAC,EAAK,IAAA,CAAK,CAAC;YA6B3B,OA5BO,IAAA,CAAK;SA6Bb;QACD,uBA5BM,kBAAA,GAAqB,MAAU,qBAAC,GAAsB,GAAC,IAAG,CAAI,CAAC;QA8BrE,EA5BM,cAAC,GAAe,UAAC,GAAY,kBAAA,CAAmB;QA6BtD,OA5BO,cAAA,CAAe;;;;;;;QAmC1B,SAAA,cAAA,CAjCK,GAAA,EAAA,SAAA,EAAA,KAAA,EAiCL;YACM,uBAjCM,UAAA,GAA+B,OAAA,CAAQ,cAAC,CAAc,YAAC,EAAa,GAAA,CAAI,IAAI,EAAA,CAAG;;;YAqCrF,OAAO,UAjCC,CAAU,MAAC,IAAS,KAAA,EAAO;gBAkCjC,UAAU,CAjCC,IAAC,CAAI,IAAC,CAAI,CAAC;aAkCvB;YAED,UAAU,CAjCC,KAAC,CAAK,GAAG,UAAA,CAAW,KAAC,CAAK,IAAI,EAAA,CAAG;YAAA,EAkC5C,UAAU,CAjCC,KAAC,CAAK,GAAG,IAAC,CAAI,kBAAC,CAAkB,CAAC;YAmC7C,OAAO,CAjCC,cAAC,CAAc,YAAC,EAAa,UAAA,EAAY,GAAA,CAAI,CAAC;YAkCtD,OAjCO,GAAA,CAAI;SAkCZ;KACF;IACD,IAAI,WAjCC,EAAY;QAkCf,qBAAqB,CAjCC,SAAC,GAAW,MAAA,CAAO,MAAC,CAAM,WAAC,CAAW,SAAC,CAAS,CAAC;KAkCxE;IACD,qBAAqB,CAjCC,SAAC,CAAS,QAAC,GAAU,MAAM,CAiCnD,CAAA,EAjCmD,IAAK,CAiCxD,CAjC4D,CAAE;IAkC5D,EAjCM,qBAAC,GAAsB,aAAC,GAAe,qBAAA,CAAsB;IAkCnE,OAjCO,qBAAA,CAAsB;CAkC9B;;;;;;;AAOD,AAAA,SAAA,iBAAA,CACI,IAAY,EAAE,KAA+C,EAAE,WAAiB,EADpF;IAEE,uBAtCM,QAAA,GAAW,gBAAA,CAAiB,KAAC,CAAK,CAAC;;;;;IA2C3C,SAAA,oBAAA,CAzCG,GAAA,IAAA,EAyCH;QACI,IAAI,IAzCC,YAAe,oBAAA,EAAsB;YA0CxC,QAAQ,CAzCC,KAAC,CAAK,IAAC,EAAK,IAAA,CAAK,CAAC;YA0C3B,OAzCO,IAAA,CAAK;SA0Cb;QAED,uBAzCM,iBAAA,GAAoB,MAAU,oBAAC,GAAqB,GAAC,IAAG,CAAI,CAAC;QA2CnE,OAzCO,SAyCX,aAAA,CAzCkC,MAAQ,EAAK,IAAM,EAyCrD;YACM,uBAzCM,IAAA,GAAO,OAAA,CAAQ,cAAC,CAAc,cAAC,EAAe,MAAA,CAAO,WAAC,CAAW,IAAI,EAAA,CAAG;YA0C9E,IAAI,CAzCC,IAAC,CAAI,GAAG,IAAA,CAAK,cAAC,CAAc,IAAC,CAAI,IAAI,IAAA,CAAK,IAAC,CAAI,IAAI,EAAA,CAAG;YA0C3D,IAAI,CAzCC,IAAC,CAAI,CAAC,OAAC,CAAO,iBAAC,CAAiB,CAAC;YA0CtC,OAAO,CAzCC,cAAC,CAAc,cAAC,EAAe,IAAA,EAAM,MAAA,CAAO,WAAC,CAAW,CAAC;SA0ClE,CAzCC;KA0CH;IAED,IAAI,WAzCC,EAAY;QA0Cf,oBAAoB,CAzCC,SAAC,GAAW,MAAA,CAAO,MAAC,CAAM,WAAC,CAAW,SAAC,CAAS,CAAC;KA0CvE;IAED,oBAAoB,CAzCC,SAAC,CAAS,QAAC,GAAU,MAAM,CAyClD,CAAA,EAzCkD,IAAK,CAyCvD,CAzC2D,CAAE;IA0C3D,EAzCM,oBAAC,GAAqB,aAAC,GAAe,oBAAA,CAAqB;IA0CjE,OAzCO,oBAAA,CAAqB;CA0C7B;;ADzaD;;;;;;;AASA,AAEA,AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,AAAC,MAAA,4BAAA,GAAA,IAAA,cAAA,CAAA,2BAAA,CAAA,CAAA;;;;;;;AAyED,AACC,MAAA,SAAA,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;AAuBpE,AAAA,MAAA,KAAA,CAAA;CAC8B;;;;;;;AA4D9B,AAEC,MAAA,eAAA,GAD6B,iBAAiB,CACvC,iBAAiB,EACjB;IACE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE;QACvB,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,KAAK;QAClB,IAAI,EAAE,SAAS;KAChB;CACF,EACD,KAAK,CAAC,CAAC;;;;;;;AAwDf,AAGC,MAAA,YAAA,GAAA,iBAAA,CAFG,cAAc,EACd;IACE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE;QACvB,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,IAAI;QACjB,IAAI,EAAE,SAAS;KAChB;CACF,EACD,KAAK,CAAC,CAAC;;;;;;;AAuDX,AAIC,MAAA,YAAA,GAAA,iBAAA,CAHG,cAAc,EACd;IACE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE;QACvB,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,IAAI,EAAE,SAAS;KAChB;CACF,EACD,KAAK,CAAC,CAAC;;;;;;;AAqDX,AAKC,MAAA,SAAA,GAAA,iBAAA,CAJG,WAAW,EACX;IACE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE;QACvB,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,IAAI,EAAE,SAAS;KAChB;CACF,EACD,KAAK,CAAC,CAAC;;ADvZJ,IAAI,uBAAuB,GAAQ,EAAE,CAAC;AAC7C,uBAAuB,CAAC,MAAM,GAAG,CAAC,CAAC;AACnC,uBAAuB,CAAC,OAAO,GAAG,CAAC,CAAC;AACpC,uBAAuB,CAAC,uBAAuB,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;AACnE,uBAAuB,CAAC,uBAAuB,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;AAGrE,AAAO,IAAI,oBAAoB,GAAQ,EAAE,CAAC;AAC1C,oBAAoB,CAAC,SAAS,GAAG,CAAC,CAAC;AACnC,oBAAoB,CAAC,OAAO,GAAG,CAAC,CAAC;AACjC,oBAAoB,CAAC,WAAW,GAAG,CAAC,CAAC;AACrC,oBAAoB,CAAC,QAAQ,GAAG,CAAC,CAAC;AAClC,oBAAoB,CAAC,OAAO,GAAG,CAAC,CAAC;AACjC,oBAAoB,CAAC,SAAS,GAAG,CAAC,CAAC;AACnC,oBAAoB,CAAC,oBAAoB,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;AACnE,oBAAoB,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;AAC/D,oBAAoB,CAAC,oBAAoB,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC;AACvE,oBAAoB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;AACjE,oBAAoB,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;AAC/D,oBAAoB,CAAC,oBAAoB,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;;;;;AAMnE,AAAA,SAAA,gCAAA,CAwCC,uBAAA,EAxCD;IAEE,OAwCO,uBAAA,IAA2B,IAAA;QAvC9B,uBAAuB,KAwCK,uBAAA,CAAwB,OAAC,CAAO;CAvCjE;;AD/BD;;;;;;;AASA,AAGA,AA+XA;;;;;;AAMA,AAAC,MAAA,SAAA,GAAA,aAAA,CAAA,WAAA,EAAA;IACC,QAAQ,EAAE,SAAS;IACnB,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS;CACnB,CAAC,CAAC;;;;;;;AA0RH,AACC,MAAA,SAAA,GAAA,aAAA,CAAG,WAAW,EAAE;IACX,QAAQ,EAAE,SAAS;IACnB,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,SAAS,EAAE,SAAS;IACpB,aAAa,EAAE,SAAS;IACxB,eAAe,EAAE,uBAAuB,CAAC,OAAO;IAChD,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,SAAS;IACtB,QAAQ,EAAE,SAAS;IACnB,SAAS,EAAE,SAAS;IACpB,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE,SAAS;IACrB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,eAAe,EAAE,SAAS;CAC3B,EACD,SAAS,CAAC,CAAC;;;;;;;AAsCf,AAEC,MAAA,IAAA,GAAA,aAAA,CAAA,MAAA,EAAA;IADC,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,IAAI;CACX,CAAC,CAAC;;;;;;;AAsEH,AAGC,MAAA,KAAA,GAFG,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;;;;;;;AAgErE,AAIC,MAAA,MAAA,GAHG,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;;;;;;;AA0DtE,AAKC,MAAA,WAAA,GAJG,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;;;;;;;AA4DxE,AAMC,MAAA,YAAA,GALG,iBAAiB,CAAC,cAAc,EAAE,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;;ADj/BhF;;;;;;;AAWA,AAkBA;;;;;;;;AAQA,AAAC,MAAA,sBAAA,GAAA;IACC,IAAI,EAAE,iBAAiB;CACxB,CAAC;;;;;;AAMF,AACC,MAAA,gBAAA,GAAA;IAAC,IAAI,EAAE,kBAAkB;CACzB,CAAC;;;;;;;AA+IF,AAEC,MAAA,QAAA,GAAA,aAAA,CAAA,UAAA,EAAA;IADC,SAAS,EAAE,SAAS;IACpB,YAAY,EAAE,SAAS;IACvB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,eAAe,EAAE,SAAS;IAC1B,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,SAAS;IAClB,EAAE,EAAE,SAAS;CACd,CAAC,CAAC;;ADrMI,IAAI,iBAAiB,GAAQ,EAAE,CAAC;AACvC,iBAAiB,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC/B,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7B,iBAAiB,CAAC,IAAI,GAAG,CAAC,CAAC;AAC3B,iBAAiB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;AAC3D,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;AACvD,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BnD,AAAA,MAAA,YAAA,CAAA;;;;IAkBA,WAAA,CACM,EAAC,WAyBC,EAAY,QAAA,EAAU,aAAA,EAAe,MAAA,EAAQ,SAAA,EAAW,UAAA,EAAY,aAAA,EA1B5E,GAkCU,EAAA,EAlCV;QAUI,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;KACpC;CACF,AAED,AAoCC;;AD7GD;;;;;;GAMG,AAaH,AACA,AAEA,AACA,AAD0B;;ADrB1B;;;;;AAKA,AAAA,MAAA,OAAA,CAAA;;;;IAIA,WAAA,CAIqB,IAAM,EAJ3B;QAIqB,IAArB,CAAA,IAAqB,GAAA,IAAA,CAAM;KAAO;;;;IAAlC,IAEG,KAAA,GAFH,EAEwB,OAAO,IAAA,CAAK,IAAC,CAAI,KAAC,CAAK,GAAC,CAAG,CAAC,CAAC,CAAC,CAAC,EAAC;;;;IAExD,IAAG,KAAA,GAAH,EAAwB,OAAO,IAAA,CAAK,IAAC,CAAI,KAAC,CAAK,GAAC,CAAG,CAAC,CAAC,CAAC,CAAC,EAAC;;;;IAIxD,IAFG,KAAA,GAEH,EAFwB,OAAO,IAAA,CAAK,IAAC,CAAI,KAAC,CAAK,GAAC,CAAG,CAAC,KAAC,CAAK,CAAC,CAAC,CAAC,IAAC,CAAI,GAAC,CAAG,CAAC,EAAC;CAGvE;AAED,AAKA;;;AAGA,AAPC,MAAA,OAAA,GAAA,IAAA,OAAA,CAAA,mBAAA,CAAA,CAAA;;AD1BD;;;;;;;AASA,AA6CA;;;;;;AAMA,AAAC,MAAA,MAAA,GAAA,kBAAA,CAAA,QAAA,EAAA,CAAA,CAAA,OAAA,EAAA,SAAA,CAAA,CAAA,CAAA,CAAA;;;;;;;AA6CD,AACC,MAAA,QAAA,GAAA,kBAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA;;;;;;;AA6CD,AAEC,MAAA,UAAA,GAAA,aAAA,CAAA,YAAA,EAAA,EAAA,CAAA,CAAA;;;;;;;AAyCD,AAGC,MAAA,IAAA,GAAA,kBAAA,CAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;;;;;AAyCD,AAIC,MAAA,QAAA,GAAA,kBAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA;;;;;;;AAwCD,AAKC,MAAA,IAAA,GAAA,kBAAA,CAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;AD/RD;;;;;;;AAUA,AAaA;;;;;;;;;;;;;;AAcA,AAAA,SAAA,UAAA,CAFC,YAAA,EAED;IACE,EAFM,YAAC,GAAa,eAAC,GAAiB,UAAA,CAAW;IAGjD,EAFM,YAAC,GAAa,QAAC,GAAU,YAEjC,EAF8C,OAAO,SAAA,CAAU,IAAC,EAAI,CAAE,CAAC,EAAC,CAAE;IAGxE,UAFwB,YAAC,IAAa;CAGvC;;;;;;;;;;;;;;;AAeD,AAAA,SAAA,iBAAA,CAHC,IAAA,EAGD;IACE,IAAI,OAHO,IAAA,KAAS,UAAA,IAAc,IAAA,CAAK,cAAC,CAAc,iBAAC,CAAiB;QAIpE,IAAI,CAHC,eAAC,KAAmB,UAAA,EAAY;QAIvC,OAHO,EAAe,IAAC,IAAK,CAAE;KAI/B;SAHM;QAIL,OAHO,IAAA,CAAK;KAIb;CACF;;AD/DD;;;;;;;AAUA,AAIA,MADM,mBAAA,GAAsB,IAAI,MAAA,EAAO,CAAE;AAEzC,AADO,MAAM,kBAAA,GAAqB,mBAAA,CAAoB;AAEtD,MAAA,aAAA,CAAA;;;;;;IAMA,GALG,CAAA,KAAA,EAAA,aAKH,GALG,mBAAA,EAKH;QACI,IAAI,aALC,KAAiB,mBAAA,EAAqB;YAMzC,MALM,IAAI,KAAA,CAAM,CAKtB,gBAAA,EALuB,SAAmB,CAAS,KAAC,CAAK,CAKzD,CAAA,CAL0D,CAAG,CAAC;SAMzD;QACD,OALO,aAAA,CAAc;KAMtB;CACF;;;;;;;;;;;;;;;;;;;;;;AAsBD,AAAA,MAAA,QAAA,CAAA;;;;;;;;;;;;;IAeA,GATY,CAAA,KAAA,EAAA,aAAA,EASZ,GATY;;;;;;;;;IAkBZ,GAbY,CAAA,KAAA,EAAA,aAAA,EAaZ,GAbY;;AAfH,QAAT,CAAA,kBAAS,GAAqB,mBAAA,CAAoB;AACzC,QAAT,CAAA,IAAS,GAAiB,IAAI,aAAA,EAAc,CAAE,AA8B9C,AAKC;;ADlFD;;;;;;;AAWA,AADO,AAA4B;AAEnC,AADO,MAAM,oBAAA,GAAuB,iBAAA,CAAkB;AAEtD,AADO,MAAM,mBAAA,GAAsB,gBAAA,CAAiB;AAEpD,AADO,MAAM,oBAAA,GAAuB,iBAAA,CAAkB;AAEtD,AADO,MAAM,YAAA,GAAe,eAAA,CAAgB;;;;;AAM5C,AAAA,AAEC;;;;;AAKD,AAAA,SAAA,eAAA,CANC,KAAA,EAMD;IACE,OANO,EAAA,KAAU,GAAK,mBAAC,CAAmB,CAAC;CAO5C;;;;;AAKD,AAAA,SAAA,gBAAA,CATC,KAAA,EASD;IACE,OATO,EAAA,KAAU,GAAK,oBAAC,CAAoB,CAAC;CAU7C;;;;;AAKD,AAAA,SAAA,cAAA,CAZC,KAAA,EAYD;IACE,OAZO,EAAA,KAAU,GAAK,YAAC,CAAY,IAAI,kBAAA,CAAmB;CAa3D;;;;;;AAMD,SAAA,kBAAA,CAfC,OAAA,EAAA,GAAA,MAAA,EAeD;IACE,EAfM,OAAC,CAAO,KAAC,GAAM,GAAC,MAAG,CAAM,CAAC;CAgBjC;;ADnDD;;;;;;;AASA,AACA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,AAAA,MAAA,YAAA,CAAA;;;;IAQA,WAAA;;;;;QAKM,mBAAsB,EAA5B;;;;QATA,IAAA,CAAA,QAEG,GAAA,OAAA,CAAA;KAOiC;;;;;IAKpC,WAHG,CAAA,KAAA,EAGH;QACI,uBAHM,aAAA,GAAgB,IAAA,CAAK,kBAAC,CAAkB,KAAC,CAAK,CAAC;QAIrD,uBAHM,OAAA,GAAU,IAAA,CAAK,YAAC,CAAY,KAAC,CAAK,CAAC;;;QAMzC,uBAHM,WAAA,GAAc,cAAA,CAAe,KAAC,CAAK,CAAC;QAK1C,WAAW,CAHC,IAAC,CAAI,QAAC,EAAS,CAG/B,KAAA,CAH+B,EAAS,KAAA,CAAM,CAAC;QAI3C,IAAI,aAHC,EAAc;YAIjB,WAAW,CAHC,IAAC,CAAI,QAAC,EAAS,CAGjC,cAAA,CAHiC,EAAkB,aAAA,CAAc,CAAC;SAI7D;QACD,IAAI,OAHC,EAAQ;YAIX,WAAW,CAHC,IAAC,CAAI,QAAC,EAAS,eAAA,EAAiB,OAAA,CAAQ,CAAC;SAItD;KACF;;;;;;IAMH,YANG,CAAA,KAAA,EAMH;QACI,IAAI,KANC,EAAM;YAOT,OANO,eAAA,CAAgB,KAAC,CAAK,GAAG,eAAA,CAAgB,KAAC,CAAK;gBAOtB,IAAI,CANC,YAAC,CAAY,gBAAC,CAAgB,KAAC,CAAK,CAAC,CAAC;SAO5E;QAED,OANO,IAAA,CAAK;KAOb;;;;;;IAMH,kBATG,CAAA,KAAA,EASH;QACI,qBATI,CAAA,GAAI,gBAAA,CAAiB,KAAC,CAAK,CAAC;QAUhC,OAAO,CATC,IAAI,gBAAA,CAAiB,CAAC,CAAC,EAAE;YAU/B,CAAC,GATG,gBAAA,CAAiB,CAAC,CAAC,CAAC;SAUzB;QAED,OATO,CAAA,CAAE;KAUV;CACF;AAED,AAQA;;;;;AAKA,AAAA,SAAA,YAAA,CAtBC,OAAA,EAAA,aAAA,EAsBD;IACE,uBAtBM,GAAA,GAuBF,CADN,EACS,OAtBC,CAqBV,YAAA,EArBiB,aAAe,YAAwB,KAAA,GAAQ,aAAA,CAAc,OAAC,GAAQ,aAAc,CAqBrG,CArBqG,CAAG;IAuBtG,uBAtBM,KAAA,GAAQ,KAAA,CAAM,GAAC,CAAG,CAAC;IAuBzB,EAAoB,KAtBV,GAAK,oBAAC,CAAoB,GAAG,aAAA,CAAc;IAuBrD,OAtBO,KAAA,CAAM;CAuBd;;ADpHD;;;;;;;AASA,AACA,AAEA,AAIA;;;;AAIA,SAAA,oBAAA,CAJC,IAAA,EAID;IACE,uBAJM,GAAA,GAAa,EAAA,CAAG;IAKtB,KAAK,qBAJI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,MAAC,EAAO,EAAA,CAAG,EAAE;QAKpC,IAAI,GAJC,CAAG,OAAC,CAAO,IAAC,CAAI,CAAC,CAAC,CAAC,GAAG,CAAA,CAAE,EAAE;YAK7B,GAAG,CAJC,IAAC,CAAI,IAAC,CAAI,CAAC,CAAC,CAAC,CAAC;YAKlB,OAJO,GAAA,CAAI;SAKZ;QACD,GAAG,CAJC,IAAC,CAAI,IAAC,CAAI,CAAC,CAAC,CAAC,CAAC;KAKnB;IACD,OAJO,GAAA,CAAI;CAKZ;;;;;AAKD,SAAA,sBAAA,CAPC,IAAA,EAOD;IACE,IAAI,IAPC,CAAI,MAAC,GAAQ,CAAA,EAAG;QAQnB,uBAPM,QAAA,GAAW,oBAAA,CAAqB,IAAC,CAAI,KAAC,EAAK,CAAE,OAAC,EAAO,CAAE,CAAC;QAQ9D,uBAPM,SAAA,GAAY,QAAA,CAAS,GAAC,CAAG,CAAC,IAAI,SAAA,CAAU,CAAC,CAAC,KAAC,CAAK,CAAC,CAAC;QAQxD,OAPO,IAAA,GAAO,SAAA,CAAU,IAAC,CAAI,MAAC,CAAM,GAAG,GAAA,CAAI;KAQ5C;IAED,OAPO,EAAA,CAAG;CAQX;;;;;;;;AAeD,SAAA,cAAA,CACI,QAA4B,EAAE,GAAkB,EAChD,yBAA2D,EAC3D,aAAqB,EAHzB;IAIE,uBAbM,KAAA,KAAQ,aAAE,GAAe,YAAA,CAAa,EAAC,EAAG,aAAA,CAAc,GAAG,KAAA,EAAM,EAAM,CAAe;IAc5F,KAAK,CAbC,MAAC,GAAQ,MAAA,CAAO;IActB,KAAK,CAbC,IAAC,GAAM,CAAA,GAAE,CAAG,CAAC;IAcnB,KAAK,CAbC,SAAC,GAAW,CAAA,QAAE,CAAQ,CAAC;IAc7B,KAAK,CAbC,yBAAC,GAA2B,yBAAA,CAA0B;IAc5D,KAAK,CAbC,OAAC,GAAS,KAAA,CAAM,yBAAC,EAAyB,CAAE;IAclD,EAAoB,KAbV,GAAK,oBAAC,CAAoB,GAAG,aAAA,CAAc;IAcrD,OAbO,KAAA,CAAM;CAcd;;;;;;;AAOD,SAAA,MAAA,CAlBC,QAAA,EAAA,GAAA,EAkBD;IACE,IAAI,CAlBC,SAAC,CAAS,IAAC,CAAI,QAAC,CAAQ,CAAC;IAmB9B,IAAI,CAlBC,IAAC,CAAI,IAAC,CAAI,GAAC,CAAG,CAAC;IAmBpB,IAAI,CAlBC,OAAC,GAAS,IAAA,CAAK,yBAAC,EAAyB,CAAE;CAmBjD;;;;;;;;;;;;;;;;;;AAkBD,AAAA,SAAA,eAAA,CApBC,QAAA,EAAA,GAAA,EAoBD;IACE,OApBO,cAAA,CAAe,QAAC,EAAS,GAAA,EAAK,YAoBvC;QACI,uBApBM,KAAA,GAAQ,SAAA,CAAU,IAAC,CAAI,IAAC,CAAI,CAAC,CAAC,CAAC,KAAC,CAAK,CAAC;QAqB5C,OApBO,CAoBX,gBAAA,EApBW,KAAoB,CAoB/B,CAAA,EApBoC,sBAAI,CAAsB,IAAC,CAAI,IAAC,CAAI,CAoBxE,CApByE,CAAE;KAqBxE,CApBC,CAAC;CAqBJ;;;;;;;;;;;;;;;;;;;;AAoBD,AAAA,SAAA,qBAAA,CACI,QAA4B,EAAE,GAAkB,EADpD;IAEE,OAtBO,cAAA,CAAe,QAAC,EAAS,GAAA,EAAK,YAsBvC;QACI,OAtBO,CAsBX,qCAAA,EAtBW,sBAAyC,CAAsB,IAAC,CAAI,IAAC,CAAI,CAsBpF,CAtBqF,CAAE;KAuBpF,CAtBC,CAAC;CAuBJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BD,AAAA,SAAA,kBAAA,CACI,QAA4B,EAAE,iBAAsB,EAAE,aAAkB,EACxE,GAAkB,EAFtB;IAGE,OAzBO,cAAA,CAAe,QAAC,EAAS,GAAA,EAAK,YAyBvC;QACI,uBAzBM,KAAA,GAAQ,SAAA,CAAU,IAAC,CAAI,IAAC,CAAI,CAAC,CAAC,CAAC,KAAC,CAAK,CAAC;QA0B5C,OAzBO,CAyBX,EAzBW,gBAAI,CAAgB,IAAC,CAAI,CAAC,OAAC,CAyBtC,gCAAA,EAzB6C,KAAmC,CAyBhF,CAAA,EAzBqF,sBAAI,CAAsB,IAAC,CAAI,IAAC,CAAI,CAyBzH,CAAA,CAzB0H,CAAG;KA0B1H,EAzBE,iBAAA,CAAkB,CAAC;CA0BvB;;;;;;;;;;;;;AAaD,AAAA,SAAA,oBAAA,CA1BC,QAAA,EA0BD;IACE,OA1BO,KAAA,CA2BH,CADN,yEAAA,EACkF,QA1BC,CAyBnF,CAzB2F,CAAE,CAAC;CA2B7F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCD,AAAA,SAAA,iBAAA,CA5BC,UAAA,EAAA,MAAA,EA4BD;IACE,uBA5BM,SAAA,GAAsB,EAAA,CAAG;IA6B/B,KAAK,qBA5BI,CAAA,GAAI,CAAA,mBAAG,EAAA,GAAK,MAAA,CAAO,MAAC,EAAO,CAAA,GAAI,EAAA,EAAI,CAAA,EAAE,EAAG;QA6B/C,uBA5BM,SAAA,GAAY,MAAA,CAAO,CAAC,CAAC,CAAC;QA6B5B,IAAI,CA5BC,SAAC,IAAY,SAAA,CAAU,MAAC,IAAS,CAAA,EAAG;YA6BvC,SAAS,CA5BC,IAAC,CAAI,GAAC,CAAG,CAAC;SA6BrB;aA5BM;YA6BL,SAAS,CA5BC,IAAC,CAAI,SAAC,CAAS,GAAC,CAAG,SAAC,CAAS,CAAC,IAAC,CAAI,GAAC,CAAG,CAAC,CAAC;SA6BpD;KACF;IACD,OA5BO,KAAA,CA6BH,sCAAsC,GA5BG,SAAA,CAAU,UAAC,CAAU,GAAG,KAAA;QA6BjE,SAAS,CA5BC,IAAC,CAAI,IAAC,CAAI,GAAG,KAAA;QA6BvB,wGAAwG;QACxG,SAAS,CA5BC,UAAC,CAAU,GAAG,kCAAA,CAAmC,CAAC;CA6BjE;;;;;;;;;;;;;;;;;AAiBD,AAAA,SAAA,gBAAA,CA7BC,KAAA,EA6BD;IACE,OA7BO,KAAA,CAAM,CA6Bf,MAAA,EA7BgB,KAAS,CA6BzB,kBAAA,CA7B8B,CAAoB,CAAC;CA8BlD;;;;;;;;;;;;;;;;AAgBD,AAAA,SAAA,6CAAA,CACI,SAAc,EAAE,SAAc,EADlC;IAEE,OA9BO,KAAA,CAAM,CA8Bf,uDAAA,EA9BgB,SAA0D,CA8B1E,CAAA,EA9BmF,SAAI,CA8BvF,CA9BgG,CAAE,CAAC;CA+BlG;;AD7QD;;;;;;;AASA,AACA,AACA;;;;;;;;;;;;;;;;AAgBA,AAAA,MAAA,aAAA,CAAA;;;;;;IAMA,WAAA,CADqB,KAAO,EAAe,EAAI,EAC/C;QADqB,IAArB,CAAA,KAAqB,GAAA,KAAA,CAAO;QAAe,IAA3C,CAAA,EAA2C,GAAA,EAAA,CAAI;QAG3C,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;SAC3C;KACF;;;;;IAKH,IAFG,WAAA,GAEH,EAF8B,OAAO,SAAA,CAAU,IAAC,CAAI,KAAC,CAAK,CAAC,EAAC;;;;;;IAQ5D,OAHG,GAAA,CAAA,KAAA,EAGH;QACI,OAHO,kBAAA,CAAmB,GAAC,CAAG,iBAAC,CAAiB,KAAC,CAAK,CAAC,CAAC;KAIzD;;;;IAIH,WAFG,YAAA,GAEH,EAFsC,OAAO,kBAAA,CAAmB,YAAC,CAAY,EAAC;CAG7E;AAED,AAOA;;;AAGA,AAAA,MAAA,WAAA,CAAA;IAAA,WAAA,GAAA;QARU,IAAV,CAAA,QAAU,GAAW,IAAI,GAAA,EAA0B,CAAG;KA6BrD;;;;;IAfD,GAZG,CAAA,KAAA,EAYH;QACI,IAAI,KAZC,YAAgB,aAAA;YAAe,OAAO,KAAA,CAAM;QAcjD,IAAI,IAZC,CAAI,QAAC,CAAQ,GAAC,CAAG,KAAC,CAAK,EAAE;YAa5B,SAZO,IAAA,CAAK,QAAC,CAAQ,GAAC,CAAG,KAAC,CAAK,GAAG;SAanC;QAED,uBAZM,MAAA,GAAS,IAAI,aAAA,CAAc,KAAC,EAAM,aAAA,CAAc,YAAC,CAAY,CAAC;QAapE,IAAI,CAZC,QAAC,CAAQ,GAAC,CAAG,KAAC,EAAM,MAAA,CAAO,CAAC;QAajC,OAZO,MAAA,CAAO;KAaf;;;;IAIH,IAdG,YAAA,GAcH,EAd+B,OAAO,IAAA,CAAK,QAAC,CAAQ,IAAC,CAAI,EAAC;CAezD;AAED,AAMA,MApBM,kBAAA,GAAqB,IAAI,WAAA,EAAY,CAAE;;AD5E7C;;;;;;;;;;AAUA,AAOC,MAAA,IAAA,GAAA,QAAA,CAAA;;;;;AAFD,AAAA,SAAA,MAAA,CAIC,CAAA,EAJD;IACE,OAIO,OAAO,CAAA,KAAM,UAAA,CAAW;CAHhC;;ADlBD;;;;;;;AASA,AACA,AAIA;;;AAGA,AADO,MAAM,aAAA,GAAgB,4DAAA,CAA6D;AAE1F,AAAA,MAAA,sBAAA,CAAA;;;;IAKA,WAAA,CAFG,OAAqB,EAExB,EAF4B,IAAA,CAAA,QAAA,GAAA,OAAA,IAAAA,OAAA,CAAA,SAAA,CAAA,CAAA,EAAA;;;;IAM5B,mBAJG,GAIH,EAJmC,OAAO,IAAA,CAAK,EAAC;;;;;;IAUhD,OARG,CAAA,CAAA,EAQH,EAR+C,OAAO,CAAA,GAAE,IAAY,KAAM,IAAI,CAAA,CAAE,GAAC,IAAG,CAAI,CAAC,EAAC;;;;;;;IAe1F,uBAZG,CAAA,UAAA,EAAA,gBAAA,EAYH;QACI,qBAZI,MAAc,CAAE;QAcpB,IAAI,OAZO,UAAA,KAAe,WAAA,EAAa;YAarC,MAAM,GAZG,IAAI,KAAA,CAAM,gBAAC,CAAgB,MAAC,CAAM,CAAC;SAa7C;aAZM;YAaL,MAAM,GAZG,IAAI,KAAA,CAAM,UAAC,CAAU,MAAC,CAAM,CAAC;SAavC;QAED,KAAK,qBAZI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,MAAC,EAAO,CAAA,EAAE,EAAG;;;;YAgBtC,IAAI,OAZO,UAAA,KAAe,WAAA,EAAa;gBAarC,MAAM,CAZC,CAAC,CAAC,GAAG,EAAA,CAAG;aAahB;iBAZM,IAAA,UAAK,CAAU,CAAC,CAAC,IAAI,MAAA,EAAQ;gBAalC,MAAM,CAZC,CAAC,CAAC,GAAG,CAAA,UAAE,CAAU,CAAC,CAAC,CAAC,CAAC;aAa7B;iBAZM;gBAaL,MAAM,CAZC,CAAC,CAAC,GAAG,EAAA,CAAG;aAahB;YACD,IAAI,gBAZC,IAAmB,gBAAA,CAAiB,CAAC,CAAC,IAAI,IAAA,EAAM;gBAanD,MAAM,CAZC,CAAC,CAAC,GAAG,MAAA,CAAO,CAAC,CAAC,CAAC,MAAC,CAAM,gBAAC,CAAgB,CAAC,CAAC,CAAC,CAAC;aAanD;SACF;QACD,OAZO,MAAA,CAAO;KAaf;;;;;;IAVA,cAAA,CAAA,IAAA,EAAA,UAAA,EAAH;;;;;;;;QAwBI,IAAI,aAhBC,CAAa,IAAC,CAAI,IAAC,CAAI,QAAC,EAAQ,CAAE,EAAE;YAiBvC,OAhBO,IAAA,CAAK;SAiBb;;QAGD,IAAI,EAhBM,IAAC,GAAK,UAAC,IAAa,EAAM,IAAC,GAAK,UAAC,KAAc,UAAA,CAAW,UAAC,EAAW;YAiB9E,OAhBO,EAAM,IAAC,GAAK,UAAC,CAAU;SAiB/B;;QAGD,uBAhBM,iBAAA,GAAoB,EAAM,IAAC,GAAK,cAAC,CAAc;QAiBrD,IAAI,iBAhBC,IAAoB,iBAAA,KAAsB,UAAA,CAAW,cAAC,EAAe;;;YAmBxE,uBAhBM,cAAA,GAiBF,OAhBO,iBAAA,KAAsB,UAAA,GAAa,iBAAA,EAAkB,GAAI,iBAAA,CAAkB;YAiBtF,uBAhBM,UAAA,GAAa,cAAA,CAAe,GAAC,CAAG,CAAC,SAAW,KAAQ,SAAA,IAAa,SAAA,CAAU,IAAC,CAAI,CAAC;YAiBvF,uBAhBM,gBAAA,GAAmB,cAAA,CAAe,GAAC,CAiBrC,CAAC,SAhBW,KAiBR,SAAS,IAhBI,mCAAA,CAAoC,SAAC,CAAS,UAAC,CAAU,CAAC,CAAC;YAiBhF,OAhBO,IAAA,CAAK,uBAAC,CAAuB,UAAC,EAAW,gBAAA,CAAiB,CAAC;SAiBnE;;QAGD,IAAI,IAhBC,CAAI,QAAC,IAAW,IAAA,IAAQ,IAAA,CAAK,QAAC,CAAQ,cAAC,IAAiB,IAAA,EAAM;YAiBjE,uBAhBM,gBAAA,GAAmB,IAAA,CAAK,QAAC,CAAQ,cAAC,CAAc,YAAC,EAAa,IAAA,CAAK,CAAC;YAiB1E,uBAhBM,UAAA,GAAa,IAAA,CAAK,QAAC,CAAQ,cAAC,CAAc,mBAAC,EAAoB,IAAA,CAAK,CAAC;YAiB3E,IAAI,UAhBC,IAAa,gBAAA,EAAkB;gBAiBlC,OAhBO,IAAA,CAAK,uBAAC,CAAuB,UAAC,EAAW,gBAAA,CAAiB,CAAC;aAiBnE;SACF;;;;;QAMD,OAhBO,IAAI,KAAA,GAAY,IAAC,CAAI,MAAC,GAAO,CAAC,IAAC,CAAI,SAAC,CAAS,CAAC;KAiBtD;;;;;IAKH,UAnBG,CAAA,IAAA,EAmBH;;;QAGI,IAAI,CAnBC,MAAC,CAAM,IAAC,CAAI,EAAE;YAoBjB,OAnBO,EAAA,CAAG;SAoBX;QACD,uBAnBM,UAAA,GAAa,aAAA,CAAc,IAAC,CAAI,CAAC;QAoBvC,qBAnBI,UAAA,GAAa,IAAA,CAAK,cAAC,CAAc,IAAC,EAAK,UAAA,CAAW,CAAC;QAoBvD,IAAI,CAnBC,UAAC,IAAa,UAAA,KAAe,MAAA,EAAQ;YAoBxC,UAAU,GAnBG,IAAA,CAAK,UAAC,CAAU,UAAC,CAAU,CAAC;SAoB1C;QACD,OAnBO,UAAA,IAAc,EAAA,CAAG;KAoBzB;;;;;;IAjBA,eAAA,CAAA,UAAA,EAAA,UAAA,EAAH;;QAyBI,IAAI,EAvBM,UAAC,GAAW,WAAC,IAAc,EAAM,UAAC,GAAW,WAAC,KAAe,UAAA,CAAW,WAAC,EAAY;YAwB7F,qBAvBI,WAAA,GAAc,EAAM,UAAC,GAAW,WAAC,CAAW;YAwBhD,IAAI,OAvBO,WAAA,KAAgB,UAAA,IAAc,WAAA,CAAY,WAAC,EAAY;gBAwBhE,WAAW,GAvBG,WAAA,CAAY,WAAC,CAAW;aAwBvC;YACD,OAvBO,WAAA,CAAY;SAwBpB;;QAGD,IAAI,EAvBM,UAAC,GAAW,UAAC,IAAa,EAAM,UAAC,GAAW,UAAC,KAAc,UAAA,CAAW,UAAC,EAAW;YAwB1F,OAvBO,mCAAA,CAAoC,EAAM,UAAC,GAAW,UAAC,CAAU,CAAC;SAwB1E;;QAGD,IAAI,IAvBC,CAAI,QAAC,IAAW,IAAA,CAAK,QAAC,CAAQ,cAAC,EAAe;YAwBjD,OAvBO,IAAA,CAAK,QAAC,CAAQ,cAAC,CAAc,aAAC,EAAc,UAAA,CAAW,CAAC;SAwBhE;QACD,OAvBO,IAAA,CAAK;KAwBb;;;;;IAKH,WA1BG,CAAA,UAAA,EA0BH;QACI,IAAI,CA1BC,MAAC,CAAM,UAAC,CAAU,EAAE;YA2BvB,OA1BO,EAAA,CAAG;SA2BX;QACD,uBA1BM,UAAA,GAAa,aAAA,CAAc,UAAC,CAAU,CAAC;QA2B7C,uBA1BM,cAAA,GAAiB,IAAA,CAAK,eAAC,CAAe,UAAC,EAAW,UAAA,CAAW,IAAI,EAAA,CAAG;QA2B1E,uBA1BM,iBAAA,GAAoB,UAAA,KAAe,MAAA,GAAS,IAAA,CAAK,WAAC,CAAW,UAAC,CAAU,GAAG,EAAA,CAAG;QA2BpF,OA1BO,iBAAA,CAAkB,MAAC,CAAM,cAAC,CAAc,CAAC;KA2BjD;;;;;;IAxBA,gBAAA,CAAA,UAAA,EAAA,UAAA,EAAH;;QAgCI,IAAI,EA9BM,UAAC,GAAW,YAAC;YA+BnB,EA9BM,UAAC,GAAW,YAAC,KAAgB,UAAA,CAAW,YAAC,EAAa;YA+B9D,qBA9BI,YAAA,GAAe,EAAM,UAAC,GAAW,YAAC,CAAY;YA+BlD,IAAI,OA9BO,YAAA,KAAiB,UAAA,IAAc,YAAA,CAAa,YAAC,EAAa;gBA+BnE,YAAY,GA9BG,YAAA,CAAa,YAAC,CAAY;aA+B1C;YACD,OA9BO,YAAA,CAAa;SA+BrB;;QAGD,IAAI,EA9BM,UAAC,GAAW,cAAC;YA+BnB,EA9BM,UAAC,GAAW,cAAC,KAAkB,UAAA,CAAW,cAAC,EAAe;YA+BlE,uBA9BM,cAAA,GAAiB,EAAM,UAAC,GAAW,cAAC,CAAc;YA+BxD,uBA9BM,YAAA,IAAuC,EAAC,CAAA,CAAE;YA+BhD,MAAM,CA9BC,IAAC,CAAI,cAAC,CAAc,CAAC,OAAC,CAAO,IAAC,IA8B3C;gBACQ,YAAY,CA9BC,IAAC,CAAI,GAAG,mCAAA,CAAoC,cAAC,CAAc,IAAC,CAAI,CAAC,CAAC;aA+BhF,CA9BC,CAAC;YA+BH,OA9BO,YAAA,CAAa;SA+BrB;;QAGD,IAAI,IA9BC,CAAI,QAAC,IAAW,IAAA,CAAK,QAAC,CAAQ,cAAC,EAAe;YA+BjD,OA9BO,IAAA,CAAK,QAAC,CAAQ,cAAC,CAAc,cAAC,EAAe,UAAA,CAAW,CAAC;SA+BjE;QACD,OA9BO,IAAA,CAAK;KA+Bb;;;;;IAKH,YAjCG,CAAA,UAAA,EAiCH;QACI,IAAI,CAjCC,MAAC,CAAM,UAAC,CAAU,EAAE;YAkCvB,OAjCO,EAAA,CAAG;SAkCX;QACD,uBAjCM,UAAA,GAAa,aAAA,CAAc,UAAC,CAAU,CAAC;QAkC7C,uBAjCM,YAAA,GAAuC,EAAA,CAAG;QAkChD,IAAI,UAjCC,KAAc,MAAA,EAAQ;YAkCzB,uBAjCM,kBAAA,GAAqB,IAAA,CAAK,YAAC,CAAY,UAAC,CAAU,CAAC;YAkCzD,MAAM,CAjCC,IAAC,CAAI,kBAAC,CAAkB,CAAC,OAAC,CAAO,CAAC,QAAC,KAiChD;gBACQ,YAAY,CAjCC,QAAC,CAAQ,GAAG,kBAAA,CAAmB,QAAC,CAAQ,CAAC;aAkCvD,CAjCC,CAAC;SAkCJ;QACD,uBAjCM,eAAA,GAAkB,IAAA,CAAK,gBAAC,CAAgB,UAAC,EAAW,UAAA,CAAW,CAAC;QAkCtE,IAAI,eAjCC,EAAgB;YAkCnB,MAAM,CAjCC,IAAC,CAAI,eAAC,CAAe,CAAC,OAAC,CAAO,CAAC,QAAC,KAiC7C;gBACQ,uBAjCM,UAAA,GAAoB,EAAA,CAAG;gBAkC7B,IAAI,YAjCC,CAAY,cAAC,CAAc,QAAC,CAAQ,EAAE;oBAkCzC,UAAU,CAjCC,IAAC,CAAI,GAAC,YAAG,CAAY,QAAC,CAAQ,CAAC,CAAC;iBAkC5C;gBACD,UAAU,CAjCC,IAAC,CAAI,GAAC,eAAG,CAAe,QAAC,CAAQ,CAAC,CAAC;gBAkC9C,YAAY,CAjCC,QAAC,CAAQ,GAAG,UAAA,CAAW;aAkCrC,CAjCC,CAAC;SAkCJ;QACD,OAjCO,YAAA,CAAa;KAkCrB;;;;;;IAMH,gBArCG,CAAA,IAAA,EAAA,UAAA,EAqCH;QACI,OArCO,IAAA,YAAgB,IAAA,IAAQ,UAAA,IAAc,IAAA,CAAK,SAAC,CAAS;KAsC7D;;;;;IAKH,MAxCG,CAAA,IAAA,EAwCH,EAxCmC,QAAiB,IAAI,QAAA,CAAS,GAAC,EAAI,WAAA,GAAc,IAAA,GAAO,GAAA,CAAI,EAAC,EAAC;;;;;IA6CjG,MA3CG,CAAA,IAAA,EA2CH;QACI,QA3CiB,IAAI,QAAA,CAAS,GAAC,EAAI,GAAA,EAAK,WAAA,GAAc,IAAA,GAAO,OAAA,CAAQ,EAAC;KA4CvE;;;;;IAKH,MA9CG,CAAA,IAAA,EA8CH;QACI,uBA9CM,YAAA,GAAe,CA8CzB,OAAA,EA9CyB,IAAW,CA8CpC,oBAAA,EA9CwC,IAAuB,CA8C/D;iBACA,EAAmB,IA9CC,CA8CpB,gBAAA,CA9CwB,CAAkB;QA+CtC,QA9CiB,IAAI,QAAA,CAAS,GAAC,EAAI,MAAA,EAAQ,YAAA,CAAa,EAAC;KA+C1D;;;;;IAKH,SAhDG,CAAA,IAAA,EAgDH;;QAEI,IAAI,OAhDO,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,UAAC,CAAU,EAAE;YAiDhD,OAhDO,IAAA,CAAK,UAAC,CAAU,CAAC;SAiDzB;;QAED,OAhDO,CAgDX,EAAA,EAhDW,SAAM,CAAS,IAAC,CAAI,CAgD/B,CAhDgC,CAAE;KAiD/B;;;;;IAKH,WAnDG,CAAA,IAAA,EAmDH,EAnDmC,OAAO,CAmD1C,EAAA,EAnD0C,SAAM,CAAS,IAAC,CAAI,CAmD9D,CAnD+D,CAAE,EAAC;;;;;;;;IA2DlE,iBAzDG,CAAA,IAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,EAyDH;QACI,OAzDO,OAAA,CAAQ;KA0DhB;;;;;;IAMH,WA9DG,CAAA,cAAA,EAAA,IAAA,EA8DH,EA9DwD,OAAO,cAAA,CAAe,IAAC,CAAI,CAAC,EAAC;CA+DpF;AAED,AAKA;;;;AAIA,SAAA,mCAAA,CAvEC,oBAAA,EAuED;IACE,IAAI,CAvEC,oBAAC,EAAqB;QAwEzB,OAvEO,EAAA,CAAG;KAwEX;IACD,OAvEO,oBAAA,CAAqB,GAAC,CAAG,mBAAC,IAuEnC;QACI,uBAvEM,aAAA,GAAgB,mBAAA,CAAoB,IAAC,CAAI;QAwE/C,uBAvEM,aAAA,GAAgB,aAAA,CAAc,aAAC,CAAa;QAwElD,uBAvEM,cAAA,GAAiB,mBAAA,CAAoB,IAAC,GAAM,mBAAA,CAAoB,IAAC,GAAM,EAAA,CAAG;QAwEhF,OAvEO,IAAI,aAAA,CAAc,GAAC,cAAG,CAAc,CAAC;KAwE7C,CAvEC,CAAC;CAwEJ;;;;;AAKD,SAAA,aAAA,CA1EC,IAAA,EA0ED;IACE,uBA1EM,WAAA,GAAc,MAAA,CAAO,cAAC,CAAc,IAAC,CAAI,SAAC,CAAS,CAAC;IA2E1D,uBA1EM,UAAA,GAAa,WAAA,GAAc,WAAA,CAAY,WAAC,GAAa,IAAA,CAAK;;;IA6EhE,OA1EO,UAAA,IAAc,MAAA,CAAO;CA2E7B;;ADxUD;;;;;AAKA,AAAA,MAAA,eAAA,CAAA;;;;;;IAMA,UACY,CAAA,UAAA,EADZ,GACY;;;;;;IAKZ,WAJY,CAAA,UAAA,EAIZ,GAJY;;;;;;IAUZ,YATY,CAAA,UAAA,EASZ,GATY;;;;;;IAeZ,SAdY,CAAA,UAAA,EAcZ,GAdY;;;;;;IAoBZ,WAnBY,CAAA,UAAA,EAmBZ,GAnBY;;;;;;;;;IA4BZ,iBA3BY,CAAA,IAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,EA2BZ,GA3BY;;;;;;;IAkCZ,WAjCY,CAAA,UAAA,EAAA,IAAA,EAiCZ,GAjCY;CAkCX;;ADrDD;;;;;;;AAWA,AAKA;;;;AAIA,AAAA,MAAA,SAAC,SAAA,eAAA,CAAD;;;;IAIA,WAAA,CAHqB,sBAAwB,EAG7C;QAH4E,KAAA,EAAA,CAAA;QAAvD,IAArB,CAAA,sBAAqB,GAAA,sBAAA,CAAwB;KAA+B;;;;;IAQ5E,kBANG,CAAA,IAAA,EAMH,EAN6D,IAAA,CAAK,sBAAC,GAAwB,IAAA,CAAK,EAAC;;;;;IAWjG,OATG,CAAA,IAAA,EASH,EATuC,OAAO,IAAA,CAAK,sBAAC,CAAsB,OAAC,CAAO,IAAC,CAAI,CAAC,EAAC;;;;;IAczF,UAZG,CAAA,UAAA,EAYH;QACI,OAZO,IAAA,CAAK,sBAAC,CAAsB,UAAC,CAAU,UAAC,CAAU,CAAC;KAa3D;;;;;IAKH,WAfG,CAAA,UAAA,EAeH;QACI,OAfO,IAAA,CAAK,sBAAC,CAAsB,WAAC,CAAW,UAAC,CAAU,CAAC;KAgB5D;;;;;IAKH,YAlBG,CAAA,UAAA,EAkBH;QACI,OAlBO,IAAA,CAAK,sBAAC,CAAsB,YAAC,CAAY,UAAC,CAAU,CAAC;KAmB7D;;;;;;IAMH,gBAtBG,CAAA,IAAA,EAAA,UAAA,EAsBH;QACI,OAtBO,IAAA,CAAK,sBAAC,CAAsB,gBAAC,CAAgB,IAAC,EAAK,UAAA,CAAW,CAAC;KAuBvE;;;;;IAKH,MAzBG,CAAA,IAAA,EAyBH,EAzBmC,OAAO,IAAA,CAAK,sBAAC,CAAsB,MAAC,CAAM,IAAC,CAAI,CAAC,EAAC;;;;;IA8BpF,MA5BG,CAAA,IAAA,EA4BH,EA5BmC,OAAO,IAAA,CAAK,sBAAC,CAAsB,MAAC,CAAM,IAAC,CAAI,CAAC,EAAC;;;;;IAiCpF,MA/BG,CAAA,IAAA,EA+BH,EA/BmC,OAAO,IAAA,CAAK,sBAAC,CAAsB,MAAC,CAAM,IAAC,CAAI,CAAC,EAAC;;;;;IAoCpF,SAlCG,CAAA,IAAA,EAkCH,EAlCiC,OAAO,IAAA,CAAK,sBAAC,CAAsB,SAAC,CAAS,IAAC,CAAI,CAAC,EAAC;;;;;IAuCrF,WArCG,CAAA,IAAA,EAqCH,EArCmC,OAAO,IAAA,CAAK,sBAAC,CAAsB,WAAC,CAAW,IAAC,CAAI,CAAC,EAAC;;;;;;;;IA6CzF,iBA3CG,CAAA,IAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,EA2CH;QACI,OA3CO,IAAA,CAAK,sBAAC,CAAsB,iBAAC,CAAiB,IAAC,EAAK,SAAA,EAAW,OAAA,EAAS,OAAA,CAAQ,CAAC;KA4CzF;;;;;;IAMH,WA/CG,CAAA,UAAA,EAAA,IAAA,EA+CH;QACI,OA/CO,IAAA,CAAK,sBAAC,CAAsB,WAAC,CAAW,UAAC,EAAW,IAAA,CAAK,CAAC;KAgDlE;CACF,AAED,AAGC;;ADhHD;;;;;;;AASA,AACA,AAEA,AAEA;;;;AAIA,AADO,MAAM,SAAA,GAAY,IAAI,SAAA,CAAU,IAAI,sBAAA,EAAuB,CAAE,CAAC;;ADjBrE;;;;;;;AASA,AACA,AAEA,AACA,AACA,AAEA,AACA,AAKA;;;;AAIA,AAAA,MAAA,oBAAA,CAAA;;;;;;IAMA,WAAA,CAJa,GAAK,EAAsB,QAAU,EAAgB,UAA2B,EAI7F;QAJa,IAAb,CAAA,GAAa,GAAA,GAAA,CAAK;QAAsB,IAAxC,CAAA,QAAwC,GAAA,QAAA,CAAU;QAAgB,IAAlE,CAAA,UAAkE,GAAA,UAAA,CAA2B;KAAI;;;;;IAYjG,OAVG,OAAA,CAAA,GAAA,EAUH;QACI,OAVO,IAAI,oBAAA,CAAqB,GAAC,EAAI,KAAA,EAAO,IAAA,CAAK,CAAC;KAWnD;CACF;AAED,AAUA,MApBM,WAAA,GAAqB,EAAA,CAAG;AAwD9B,AAAA,MAAA,2BAAA,CAAA;;;;;;IAMA,WAAA,CAvBa,GAAK,EAAsB,iBAA6C,EACxE,aAAe,EAsB5B;QAvBa,IAAb,CAAA,GAAa,GAAA,GAAA,CAAK;QAAsB,IAAxC,CAAA,iBAAwC,GAAA,iBAAA,CAA6C;QACxE,IAAb,CAAA,aAAa,GAAA,aAAA,CAAe;KAAQ;;;;IA6BpC,IA3BG,eAAA,GA2BH,EA3BqD,OAAO,IAAA,CAAK,iBAAC,CAAiB,CAAC,CAAC,CAAC,EAAC;CA4BtF;AAED,AASA;;;;;AAKA,AAAA,MAAA,yBAAA,CAAA;;;;;IAKA,WAAA,CApCa,OAAS,EAKT,YAAmC,EA+BhD;QApCa,IAAb,CAAA,OAAa,GAAA,OAAA,CAAS;QAKT,IAAb,CAAA,YAAa,GAAA,YAAA,CAAmC;KAAE;CAkCjD;AAED,AAaA;;;;;AAKA,SAAA,wBAAA,CA/CC,QAAA,EA+CD;IACE,qBA/CI,SAAW,CAAS;IAgDxB,qBA/CI,YAAmC,CAAE;IAgDzC,IAAI,QA/CC,CAAQ,QAAC,EAAS;QAgDrB,uBA/CM,QAAA,GAAW,iBAAA,CAAkB,QAAC,CAAQ,QAAC,CAAQ,CAAC;QAgDtD,SAAS,GA/CG,SAAA,CAAU,OAAC,CAAO,QAAC,CAAQ,CAAC;QAgDxC,YAAY,GA/CG,gBAAA,CAAiB,QAAC,CAAQ,CAAC;KAgD3C;SA/CM,IAAA,QAAK,CAAQ,WAAC,EAAY;QAgD/B,SAAS,GA/CG,CAAA,aAAgB,KAAQ,aAAA,CAAc;QAgDlD,YAAY,GA/CG,CAAA,oBAAE,CAAoB,OAAC,CAAO,aAAC,CAAa,GAAC,CAAG,QAAC,CAAQ,WAAC,CAAW,CAAC,CAAC,CAAC;KAgDxF;SA/CM,IAAA,QAAK,CAAQ,UAAC,EAAW;QAgD9B,SAAS,GA/CG,QAAA,CAAS,UAAC,CAAU;QAgDhC,YAAY,GA/CG,qBAAA,CAAsB,QAAC,CAAQ,UAAC,EAAW,QAAA,CAAS,IAAC,CAAI,CAAC;KAgD1E;SA/CM;QAgDL,SAAS,GA/CG,MAAM,QAAA,CAAS,QAAC,CAAQ;QAgDpC,YAAY,GA/CG,WAAA,CAAY;KAgD5B;IACD,OA/CO,IAAI,yBAAA,CAA0B,SAAC,EAAU,YAAA,CAAa,CAAC;CAgD/D;;;;;;;;;AASD,SAAA,yBAAA,CAhDC,QAAA,EAgDD;IACE,OAhDO,IAAI,2BAAA,CAiDP,aAAa,CAhDC,GAAC,CAAG,QAAC,CAAQ,OAAC,CAAO,EAAE,CAAA,wBAAE,CAAwB,QAAC,CAAQ,CAAC,EAiDzE,QAAQ,CAhDC,KAAC,IAAQ,KAAA,CAAM,CAAC;CAiD9B;;;;;;AAMD,AAAA,SAAA,0BAAA,CAjDC,SAAA,EAiDD;IACE,uBAjDM,UAAA,GAAa,mBAAA,CAAoB,SAAC,EAAU,EAAA,CAAG,CAAC;IAkDtD,uBAjDM,QAAA,GAAW,UAAA,CAAW,GAAC,CAAG,yBAAC,CAAyB,CAAC;IAkD3D,uBAjDM,mBAAA,GAAsB,gCAAA,CAAiC,QAAC,EAAS,IAAI,GAAA,EAAI,CAAE,CAAC;IAkDlF,OAjDO,KAAA,CAAM,IAAC,CAAI,mBAAC,CAAmB,MAAC,EAAM,CAAE,CAAC;CAkDjD;;;;;;;;;AASD,AAAA,SAAA,gCAAA,CACI,SAAuC,EACvC,sBAA+D,EAFnE;IAIE,KAAK,qBAnDI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,MAAC,EAAO,CAAA,EAAE,EAAG;QAoDzC,uBAnDM,QAAA,GAAW,SAAA,CAAU,CAAC,CAAC,CAAC;QAoD9B,uBAnDM,QAAA,GAAW,sBAAA,CAAuB,GAAC,CAAG,QAAC,CAAQ,GAAC,CAAG,EAAC,CAAE,CAAC;QAoD7D,IAAI,QAnDC,EAAS;YAoDZ,IAAI,QAnDC,CAAQ,aAAC,KAAiB,QAAA,CAAS,aAAC,EAAc;gBAoDrD,MAnDM,6CAAA,CAA8C,QAAC,EAAS,QAAA,CAAS,CAAC;aAoDzE;YACD,IAAI,QAnDC,CAAQ,aAAC,EAAc;gBAoD1B,KAAK,qBAnDI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,iBAAC,CAAiB,MAAC,EAAO,CAAA,EAAE,EAAG;oBAoD1D,QAAQ,CAnDC,iBAAC,CAAiB,IAAC,CAAI,QAAC,CAAQ,iBAAC,CAAiB,CAAC,CAAC,CAAC,CAAC;iBAoDhE;aACF;iBAnDM;gBAoDL,sBAAsB,CAnDC,GAAC,CAAG,QAAC,CAAQ,GAAC,CAAG,EAAC,EAAG,QAAA,CAAS,CAAC;aAoDvD;SACF;aAnDM;YAoDL,qBAnDI,gBAAkB,CAA2B;YAoDjD,IAAI,QAnDC,CAAQ,aAAC,EAAc;gBAoD1B,gBAAgB,GAnDG,IAAI,2BAAA,CAoDnB,QAAQ,CAnDC,GAAC,EAAI,QAAA,CAAS,iBAAC,CAAiB,KAAC,EAAK,EAAG,QAAA,CAAS,aAAC,CAAa,CAAC;aAoD/E;iBAnDM;gBAoDL,gBAAgB,GAnDG,QAAA,CAAS;aAoD7B;YACD,sBAAsB,CAnDC,GAAC,CAAG,QAAC,CAAQ,GAAC,CAAG,EAAC,EAAG,gBAAA,CAAiB,CAAC;SAoD/D;KACF;IACD,OAnDO,sBAAA,CAAuB;CAoD/B;;;;;;AAMD,SAAA,mBAAA,CAvDC,SAAA,EAAA,GAAA,EAuDD;IACE,SAAS,CAvDC,OAAC,CAAO,CAAC,IAuDrB;QACI,IAAI,CAvDC,YAAY,IAAA,EAAM;YAwDrB,GAAG,CAvDC,IAAC,CAAI,EAAC,OAAC,EAAQ,CAAA,EAAG,QAAA,EAAU,CAAA,EAAE,CAAC,CAAC;SAyDrC;aAvDM,IAAA,CAAK,IAAI,OAAO,CAAA,IAAK,QAAA,IAAY,EAAA,CAAM,GAAK,OAAC,KAAW,SAAA,EAAW;YAwDxE,GAAG,CAvDC,IAAC,mBAAI,CAAK,EAAmB,CAAC;SAyDnC;aAvDM,IAAA,CAAK,YAAY,KAAA,EAAO;YAwD7B,mBAAmB,CAvDC,CAAC,EAAE,GAAA,CAAI,CAAC;SAyD7B;aAvDM;YAwDL,MAvDM,oBAAA,CAAqB,CAAC,CAAC,CAAC;SAwD/B;KACF,CAvDC,CAAC;IAyDH,OAvDO,GAAA,CAAI;CAwDZ;;;;;;AAMD,AAAA,SAAA,qBAAA,CACI,UAAe,EAAE,YAAoB,EADzC;IAEE,IAAI,CA3DC,YAAC,EAAa;QA4DjB,OA3DO,gBAAA,CAAiB,UAAC,CAAU,CAAC;KA4DrC;SA3DM;QA4DL,uBA3DM,MAAA,GAAkB,YAAA,CAAa,GAAC,CAAG,CAAC,IAAI,CAAA,CAAE,CAAC,CAAC,CAAC;QA4DnD,OA3DO,YAAA,CAAa,GAAC,CAAG,CAAC,IAAI,aAAA,CAAc,UAAC,EAAW,CAAA,EAAG,MAAA,CAAO,CAAC,CAAC;KA4DpE;CACF;;;;;AAKD,SAAA,gBAAA,CA9DC,UAAA,EA8DD;IACE,uBA9DM,MAAA,GAAS,SAAA,CAAU,UAAC,CAAU,UAAC,CAAU,CAAC;IAgEhD,IAAI,CA9DC,MAAC;QAAO,OAAO,EAAA,CAAG;IA+DvB,IAAI,MA9DC,CAAM,IAAC,CAAI,CAAC,IAAI,CAAA,IAAK,IAAA,CAAK,EAAE;QA+D/B,MA9DM,iBAAA,CAAkB,UAAC,EAAW,MAAA,CAAO,CAAC;KA+D7C;IACD,OA9DO,MAAA,CAAO,GAAC,CAAG,CAAC,IAAI,aAAA,CAAc,UAAC,EAAW,CAAA,EAAG,MAAA,CAAO,CAAC,CAAC;CA+D9D;;;;;;;AAOD,SAAA,aAAA,CACI,UAAe,EAAE,QAAqB,EAAE,MAAe,EAD3D;IAEE,qBAnEI,KAAA,GAAa,IAAA,CAAK;IAoEtB,qBAnEI,QAAA,GAAW,KAAA,CAAM;IAqErB,IAAI,CAnEC,KAAC,CAAK,OAAC,CAAO,QAAC,CAAQ,EAAE;QAoE5B,IAAI,QAnEC,YAAmB,MAAA,EAAQ;YAoE9B,OAnEO,iBAAA,CAAkB,QAAC,CAAQ,OAAC,CAAO,EAAE,QAAA,EAAU,IAAA,CAAK,CAAC;SAoE7D;aAnEM;YAoEL,OAnEO,iBAAA,CAAkB,QAAC,EAAS,QAAA,EAAU,IAAA,CAAK,CAAC;SAoEpD;KACF;IAED,qBAnEI,UAAA,GAAiC,IAAA,CAAK;IAqE1C,KAAK,qBAnEI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,MAAC,EAAO,EAAA,CAAG,EAAE;QAoExC,uBAnEM,aAAA,GAAgB,QAAA,CAAS,CAAC,CAAC,CAAC;QAqElC,IAAI,aAnEC,YAAwB,IAAA,EAAM;YAoEjC,KAAK,GAnEG,aAAA,CAAc;SAqEvB;aAnEM,IAAA,aAAK,YAAwB,MAAA,EAAQ;YAoE1C,KAAK,GAnEG,aAAA,CAAc,OAAC,CAAO,CAAC;SAqEhC;aAnEM,IAAA,aAAK,YAAwB,QAAA,EAAU;YAoE5C,QAAQ,GAnEG,IAAA,CAAK;SAqEjB;aAnEM,IAAA,aAAK,YAAwB,IAAA,IAAQ,aAAA,YAAyB,QAAA,EAAU;YAoE7E,UAAU,GAnEG,aAAA,CAAc;SAoE5B;aAnEM,IAAA,aAAK,YAAwB,cAAA,EAAgB;YAoElD,KAAK,GAnEG,aAAA,CAAc;SAoEvB;KACF;IAED,KAAK,GAnEG,iBAAA,CAAkB,KAAC,CAAK,CAAC;IAqEjC,IAAI,KAnEC,IAAQ,IAAA,EAAM;QAoEjB,OAnEO,iBAAA,CAAkB,KAAC,EAAM,QAAA,EAAU,UAAA,CAAW,CAAC;KAoEvD;SAnEM;QAoEL,MAnEM,iBAAA,CAAkB,UAAC,EAAW,MAAA,CAAO,CAAC;KAoE7C;CACF;;;;;;;AAOD,SAAA,iBAAA,CACI,KAAU,EAAE,QAAiB,EAAE,UAAkC,EADrE;IAEE,OAxEO,IAAI,oBAAA,CAAqB,aAAC,CAAa,GAAC,CAAG,KAAC,CAAK,EAAE,QAAA,EAAU,UAAA,CAAW,CAAC;CAyEjF;;ADlVD;;;;;;;AASA,AACA,AAEA,AACA,AACA,AAEA;AACA,MADM,SAAA,GAAY,IAAI,MAAA,EAAO,CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsC/B,AAAA,MAAA,kBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoCA,OAHG,OAAA,CAAA,SAAA,EAGH;QACI,OAHO,0BAAA,CAA2B,SAAC,CAAS,CAAC;KAI9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8BH,OALG,gBAAA,CAAA,SAAA,EAAA,MAAA,EAKH;QACI,uBALM,2BAAA,GAA8B,kBAAA,CAAmB,OAAC,CAAO,SAAC,CAAS,CAAC;QAM1E,OALO,kBAAA,CAAmB,qBAAC,CAAqB,2BAAC,EAA4B,MAAA,CAAO,CAAC;KAMtF;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2BH,OAPG,qBAAA,CAAA,SAAA,EAAA,MAAA,EAOH;QAEI,OAPO,IAAI,mBAAA,CAAoB,SAAC,EAAU,MAAA,CAAO,CAAC;KAQnD;;;;;;;;;;;;;;;;;IAiBH,MAPgB,GAOhB,GAPgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsChB,qBATY,CAAA,SAAA,EASZ,GATY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsCZ,uBAXY,CAAA,SAAA,EAWZ,GAXY;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuCZ,qBAbY,CAAA,QAAA,EAaZ,GAbY;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyCZ,mBAfY,CAAA,QAAA,EAeZ,GAfY;;;;;;;IAsBZ,GApBY,CAAA,KAAA,EAAA,aAAA,EAoBZ,GApBY;CAqBX;AACD,AAAA,MAAA,mBAAA,CAAA;;;;;;IAqBA,WAAA,CA3BG,UAAkD,EAAG,OAAU,EA2BlE;;;;QAjBA,IAAA,CAAA,oBArBG,GAAA,CAAA,CAAA;QAuCC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC;QAE/B,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC;QAE9B,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;QAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;SAC1B;KACF;;;;;;IAMH,GA/BG,CAAA,KAAA,EAAA,aA+BH,GA/BG,kBAAA,EA+BH;QACI,OA/BO,IAAA,CAAK,SAAC,CAAS,aAAC,CAAa,GAAC,CAAG,KAAC,CAAK,EAAE,IAAA,EAAM,aAAA,CAAc,CAAC;KAgCtE;;;;IAIH,IAjCG,MAAA,GAiCH,EAjCgC,OAAO,IAAA,CAAK,OAAC,CAAO,EAAC;;;;;IAsCrD,qBApCG,CAAA,SAAA,EAoCH;QACI,uBApCM,2BAAA,GAA8B,kBAAA,CAAmB,OAAC,CAAO,SAAC,CAAS,CAAC;QAqC1E,OApCO,IAAA,CAAK,uBAAC,CAAuB,2BAAC,CAA2B,CAAC;KAqClE;;;;;IAKH,uBAvCG,CAAA,SAAA,EAuCH;QACI,uBAvCM,GAAA,GAAM,IAAI,mBAAA,CAAoB,SAAC,CAAS,CAAC;QAwC/C,GAAG,CAvCC,OAAC,GAAS,IAAA,CAAK;QAwCnB,OAvCO,GAAA,CAAI;KAwCZ;;;;;IAKH,qBA1CG,CAAA,QAAA,EA0CH;QACI,OA1CO,IAAA,CAAK,mBAAC,CAAmB,kBAAC,CAAkB,OAAC,CAAO,CAAC,QAAC,CAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KA2C5E;;;;;IAKH,mBA7CG,CAAA,QAAA,EA6CH;QACI,OA7CO,IAAA,CAAK,oBAAC,CAAoB,QAAC,CAAQ,CAAC;KA8C5C;;;;;IAKH,kBAhDG,CAAA,KAAA,EAgDH;QACI,IAAI,KAhDC,GAAO,CAAA,IAAK,KAAA,IAAS,IAAA,CAAK,UAAC,CAAU,MAAC,EAAO;YAiDhD,MAhDM,gBAAA,CAAiB,KAAC,CAAK,CAAC;SAiD/B;QACD,OAhDO,IAAA,CAAK,UAAC,CAAU,KAAC,CAAK,CAAC;KAiD/B;;;;;;IAMH,IAnDG,CAAA,QAAA,EAmDH;QACI,IAAI,IAnDC,CAAI,oBAAC,EAAoB,GAAI,IAAA,CAAK,sBAAC,EAAsB,EAAG;YAoD/D,MAnDM,qBAAA,CAAsB,IAAC,EAAK,QAAA,CAAS,GAAC,CAAG,CAAC;SAoDjD;QACD,OAnDO,IAAA,CAAK,oBAAC,CAAoB,QAAC,CAAQ,CAAC;KAoD5C;;;;IAjDA,sBAAA,GAAH,EAA6C,OAAO,IAAA,CAAK,IAAC,CAAI,MAAC,CAAM,EAAC;;;;;IAEnE,oBAAA,CAAA,QAAA,EAAH;QAyDI,IAAI,QAxDC,CAAQ,aAAC,EAAc;YAyD1B,uBAxDM,GAAA,GAAM,IAAI,KAAA,CAAM,QAAC,CAAQ,iBAAC,CAAiB,MAAC,CAAM,CAAC;YAyDzD,KAAK,qBAxDI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,iBAAC,CAAiB,MAAC,EAAO,EAAA,CAAG,EAAE;gBAyD1D,GAAG,CAxDC,CAAC,CAAC,GAAG,IAAA,CAAK,YAAC,CAAY,QAAC,EAAS,QAAA,CAAS,iBAAC,CAAiB,CAAC,CAAC,CAAC,CAAC;aAyDrE;YACD,OAxDO,GAAA,CAAI;SAyDZ;aAxDM;YAyDL,OAxDO,IAAA,CAAK,YAAC,CAAY,QAAC,EAAS,QAAA,CAAS,iBAAC,CAAiB,CAAC,CAAC,CAAC,CAAC;SAyDnE;KACF;;;;;;IAtDA,YAAA,CA6DG,QAAoC,EACpCC,4BAAoD,EA9D1D;QA+DI,uBA5DM,OAAA,GAAUA,4BAAA,CAA0B,OAAC,CAAO;QA8DlD,qBA5DI,IAAU,CAAE;QA6DhB,IA5DI;YA6DF,IAAI;gBACAA,4BAAyB,CA5DC,YAAC,CAAY,GAAC,CAAG,GAAC,IAAM,IAAA,CAAK,0BAAC,CAA0B,GAAC,CAAG,CAAC,CAAC;SA6D7F;QA5DC,OAAA,CAAQ,EAAE;YA6DV,IAAI,CA5DC,CAAC,MAAC,EAAO;gBA6DZ,CAAC,CA5DC,MAAC,CAAM,IAAC,EAAK,QAAA,CAAS,GAAC,CAAG,CAAC;aA6D9B;YACD,MA5DM,CAAA,CAAE;SA6DT;QAED,qBA5DI,GAAK,CAAI;QA6Db,IA5DI;YA6DF,GAAG,GA5DG,OAAA,CAAQ,GAAC,IAAG,CAAI,CAAC;SA6DxB;QA5DC,OAAA,CAAQ,EAAE;YA6DV,MA5DM,kBAAA,CAAmB,IAAC,EAAK,CAAA,EAAG,CAAA,CAAE,KAAC,EAAM,QAAA,CAAS,GAAC,CAAG,CAAC;SA6D1D;QAED,OA5DO,GAAA,CAAI;KA6DZ;;;;;IA1DA,0BAAA,CAAA,GAAA,EAAH;QAgEI,OA/DO,IAAA,CAAK,SAAC,CAAS,GAAC,CAAG,GAAC,EAAI,GAAA,CAAI,UAAC,EAAW,GAAA,CAAI,QAAC,GAAU,IAAA,GAAO,kBAAA,CAAmB,CAAC;KAgE1F;;;;;;;IA7DA,SAAA,CAAA,GAAA,EAAA,UAAA,EAAA,aAAA,EAAH;QAqEI,IAAI,GApEC,KAAO,YAAA,EAAc;YAqExB,OApEO,IAAA,CAAK;SAqEb;QAED,IAAI,UApEC,YAAqB,IAAA,EAAM;YAqE9B,OApEO,IAAA,CAAK,aAAC,CAAa,GAAC,EAAI,aAAA,CAAc,CAAC;SAsE/C;aApEM;YAqEL,OApEO,IAAA,CAAK,gBAAC,CAAgB,GAAC,EAAI,aAAA,EAAe,UAAA,CAAW,CAAC;SAqE9D;KACF;;;;;IAlEA,cAAA,CAAA,KAAA,EAAH;QAwEI,KAAK,qBAvEI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,MAAC,CAAM,MAAC,EAAO,CAAA,EAAE,EAAG;YAwE3C,IAAI,IAvEC,CAAI,MAAC,CAAM,CAAC,CAAC,KAAK,KAAA,EAAO;gBAwE5B,IAAI,IAvEC,CAAI,IAAC,CAAI,CAAC,CAAC,KAAK,SAAA,EAAW;oBAwE9B,IAAI,CAvEC,IAAC,CAAI,CAAC,CAAC,GAAG,IAAA,CAAK,IAAC,CAAI,IAAC,CAAI,UAAC,CAAU,CAAC,CAAC,CAAC,CAAC;iBAwE9C;gBAED,OAvEO,IAAA,CAAK,IAAC,CAAI,CAAC,CAAC,CAAC;aAwErB;SACF;QAED,OAvEO,SAAA,CAAU;KAwElB;;;;;;;IAOH,YA3EG,CAAA,GAAA,EAAA,aAAA,EA2EH;QACI,IAAI,aA3EC,KAAiB,kBAAA,EAAoB;YA4ExC,OA3EO,aAAA,CAAc;SA4EtB;aA3EM;YA4EL,MA3EM,eAAA,CAAgB,IAAC,EAAK,GAAA,CAAI,CAAC;SA4ElC;KACF;;;;;;;IAOH,aA/EG,CAAA,GAAA,EAAA,aAAA,EA+EH;QACI,uBA/EM,GAAA,GAAM,IAAA,CAAK,cAAC,CAAc,GAAC,CAAG,EAAC,CAAE,CAAC;QAgFxC,OA/EO,CAAA,GAAE,KAAO,SAAA,IAAa,GAAA,GAAM,IAAA,CAAK,YAAC,CAAY,GAAC,EAAI,aAAA,CAAc,CAAC;KAgF1E;;;;;;;;IAQH,gBApFG,CAAA,GAAA,EAAA,aAAA,EAAA,UAAA,EAoFH;QACI,qBApFI,GAAe,CAAI;QAsFvB,IAAI,UApFC,YAAqB,QAAA,EAAU;YAqFlC,GAAG,GApFG,IAAA,CAAK,OAAC,CAAO;SAqFpB;aApFM;YAqFL,GAAG,GApFG,IAAA,CAAK;SAqFZ;QAED,OAAO,GApFC,YAAc,mBAAA,EAAqB;YAqFzC,uBApFM,IAAA,IAA4B,GAAC,CAAA,CAAG;YAqFtC,uBApFM,GAAA,GAAM,IAAA,CAAK,cAAC,CAAc,GAAC,CAAG,EAAC,CAAE,CAAC;YAqFxC,IAAI,GApFC,KAAO,SAAA;gBAAW,OAAO,GAAA,CAAI;YAqFlC,GAAG,GApFG,IAAA,CAAK,OAAC,CAAO;SAqFpB;QACD,IAAI,GApFC,KAAO,IAAA,EAAM;YAqFhB,OApFO,GAAA,CAAI,GAAC,CAAG,GAAC,CAAG,KAAC,EAAM,aAAA,CAAc,CAAC;SAqF1C;aApFM;YAqFL,OApFO,IAAA,CAAK,YAAC,CAAY,GAAC,EAAI,aAAA,CAAc,CAAC;SAqF9C;KACF;;;;IAIH,IAtFG,WAAA,GAsFH;QACI,uBAtFM,SAAA,GAuFF,aAAa,CAtFC,IAAC,EAAK,CAAA,CAAI,KAA+B,IAAA,GAAO,CAAA,CAAE,GAAC,CAAG,WAAC,GAAa,IAAA,CAAK;aAuFlF,IAtFC,CAAI,IAAC,CAAI,CAAC;QAuFpB,OAtFO,CAsFX,+BAAA,EAtFW,SAAmC,CAsF9C,EAAA,CAtFuD,CAAI;KAuFxD;;;;IAIH,QAxFG,GAwFH,EAxFuB,OAAO,IAAA,CAAK,WAAC,CAAW,EAAC;CAyF/C;AAED,AAuBA,MA/GM,YAAA,GAAe,aAAA,CAAc,GAAC,CAAG,QAAC,CAAQ,CAAC;;;;;;AAqHjD,SAAA,aAAA,CAnHC,QAAA,EAAA,EAAA,EAmHD;IACE,uBAnHM,GAAA,GAAa,IAAI,KAAA,CAAM,QAAC,CAAQ,UAAC,CAAU,MAAC,CAAM,CAAC;IAoHzD,KAAK,qBAnHI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,UAAC,CAAU,MAAC,EAAO,EAAA,CAAG,EAAE;QAoHnD,GAAG,CAnHC,CAAC,CAAC,GAAG,EAAA,CAAG,QAAC,CAAQ,kBAAC,CAAkB,CAAC,CAAC,CAAC,CAAC;KAoH7C;IACD,OAnHO,GAAA,CAAI;CAoHZ;;AD5kBD;;;;;;;;;;;GAYG,AAEH,AAEA,AAEA,AACA,AAEA,AACA,AACA,AAAoC;;ADvBpC;;;;;;;;;;;;AAeA,AAAA,SAAA,SAAA,CAFC,GAAA,EAED;;;IAGE,OAFO,CAAA,CAAE,GAAC,IAAM,OAAO,GAAA,CAAI,IAAC,KAAQ,UAAA,CAAW;CAGhD;;;;;;AAMD,AAAA,SAAA,YAAA,CAHC,GAAA,EAGD;;IAEE,OAHO,CAAA,CAAE,GAAC,IAAM,OAAO,GAAA,CAAI,SAAC,KAAa,UAAA,CAAW;CAIrD;;AD5BD;;;;;;;AASA,AAEA,AACA;;;;AAIA,AACC,MAAA,eAAA,GAAA,IAAA,cAAA,CAAA,yBAAA,CAAA,CAAA;;;;;;AAKD,AAAA,MAAA,qBAAA,CAAA;;;;IAMA,WAAA,CACe,QAAuB,EADtC;QADU,IAAV,CAAA,KAAU,GAAQ,KAAA,CAAM;QAEpB,MAAM,iBAAiB,GAAmB,EAAE,CAAC;QAC7C,IAAI,QAAQ,EAAE;YACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjC,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE;oBACzB,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBACpC;aACF;SACF;QACD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,MAA5D,EAAoE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACtF,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;YAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;SACnB;KACF;;;;IAIH,IADG,IAAA,GACH,EADwB,OAAO,IAAA,CAAK,KAAC,CAAK,EAAC;;;;IAK3C,IAHG,WAAA,GAGH,EAHoC,OAAO,IAAA,CAAK,YAAC,CAAY,EAAC;;AACvD,qBAAP,CAAA,UAAO,GAAoC;IAI3C,EAHE,IAAA,EAAM,UAAA,EAAW;CAIlB,CAHC;;;;AAED,qBAAD,CAAA,cAAC,GAAA,MAAA;IAMD,EAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,eAAe,EAAG,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAG,EAAC;CAC7F,CAAC,AAGF,AAYC;;AD1ED;;;;;;;AASA,AAEA;;;;;;;;;;AAUA,AACC,MAAA,MAAA,GAAA,IAAA,cAAA,CAAA,OAAA,CAAA,CAAA;;;;AAGD,AAAA,SAAA,2BAAA,GAAA;IACE,OADO,CACT,EADS,WAAI,EAAW,CACxB,EAD0B,WAAG,EAAW,CACxC,EAD0C,WAAG,EAAW,CACxD,CAD0D,CAAE;CAE3D;;;;;AAKD,AAAC,MAAA,sBAAA,GAAA;IACC,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,2BAA2B;IACvC,IAAI,EAAS,EAAE;CAChB,CAAC;;;;AAIF,SAAA,WAAA,GAAA;IACE,OAFO,MAAA,CAAO,YAAC,CAAY,EAAC,GAAI,IAAA,CAAK,KAAC,CAAK,IAAC,CAAI,MAAC,EAAM,GAAI,EAAA,CAAG,CAAC,CAAC;CAGjE;;;;;AAKD,AADC,MAAA,oBAAA,GAAA,IAAA,cAAA,CAAA,sBAAA,CAAA,CAAA;;;;;AAMD,AAAC,MAAA,WAAA,GAAA,IAAA,cAAA,CAAA,aAAA,CAAA,CAAA;;;;;;;;;AASD,AACC,MAAA,sBAAA,GAAG,IAAI,cAAc,CAA8C,sBAAsB,CAAC,CAAC;;;;;AAK5F,AAEC,MAAA,gBAAA,GAAA,IAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;;ADrED;;;;;;;AASA,AACA,AAAA,MAAA,OAAA,CAAA;;;;;IAKA,GAHG,CAAA,OAAA,EAGH;;QAEI,OAAO,CAHC,GAAC,CAAG,OAAC,CAAO,CAAC;KAItB;;;;;IAKH,IANG,CAAA,OAAA,EAMH;;QAEI,OAAO,CANC,IAAC,CAAI,OAAC,CAAO,CAAC;KAOvB;;AALI,OAAP,CAAA,UAAO,GAAoC;IAO3C,EANE,IAAA,EAAM,UAAA,EAAW;CAOlB,CANC;;;;AAED,OAAD,CAAA,cAAC,GAAA,MAAA,EASA,CAAC,AAGF,AAQC;;AD7CD;;;;;;;AASA,AAOA;;;;;AAKA,AAAA,MAAA,4BAAA,CAAA;;;;;IAKA,WAAA,CAHa,eAAmC,EACnC,kBAA0C,EAEvD;QAHa,IAAb,CAAA,eAAa,GAAA,eAAA,CAAmC;QACnC,IAAb,CAAA,kBAAa,GAAA,kBAAA,CAA0C;KAAE;CAKxD;AAED,AAOA;;;AAGA,SAAA,WAAA,GAAA;IACE,MAbM,IAAI,KAAA,CAAM,CAalB,8BAAA,CAbmB,CAAgC,CAAC;CAcnD;;;;;;;;;;;AAWD,AAAA,MAAA,QAAA,CAAA;;;;;;;;IAQA,iBAdG,CAAA,UAAA,EAcH,EAdkE,MAAM,WAAA,EAAY,CAAE,EAAC;;;;;;;IAqBvF,kBAhBG,CAAA,UAAA,EAgBH,EAhB4E,MAAM,WAAA,EAAY,CAAE,EAAC;;;;;;;IAuBjG,iCAlBG,CAAA,UAAA,EAkBH;QACI,MAlBM,WAAA,EAAY,CAAE;KAmBrB;;;;;;;IAOH,kCApBG,CAAA,UAAA,EAoBH;QAEI,MApBM,WAAA,EAAY,CAAE;KAqBrB;;;;;;;;;;;IAWH,qBArBG,CAAA,SAAA,EAqBH,EArB0D,MAAM,WAAA,EAAY,CAAE,EAAC;;;;;IA0B/E,UArBG,GAqBH,GArBqB;;;;;;IA2BrB,aAtBG,CAAA,IAAA,EAsBH,GAtBiC;;AAC1B,QAAP,CAAA,UAAO,GAAoC;IAuB3C,EAtBE,IAAA,EAAM,UAAA,EAAW;CAuBlB,CAtBC;;;;AAED,QAAD,CAAA,cAAC,GAAA,MAAA,EAyBA,CAAC;AAGF,AA6BA;;;;;AAKA,AAlCC,MAAA,gBAAA,GAAA,IAAA,cAAA,CAAA,iBAAA,CAAA,CAAA;;;;;;;AAyCD,AAAA,MAAA,eAAA,CAAA;;;;;;IAMA,cAvCY,CAAA,OAAA,EAuCZ,GAvCY;CAwCX;;ADzKD;;;;;;;;;;;;;;;;AAyBA,AAAA,MAAA,YAAA,CAAA;;;;;;IAMA,QAHgB,GAGhB,GAHgB;;;;;;IAShB,QAJgB,GAIhB,GAJgB;;;;;;IAUhB,QALgB,GAKhB,GALgB;;;;;;IAWhB,QANgB,GAMhB,GANgB;;;;;;IAYhB,iBAPgB,GAOhB,GAPgB;;;;;;IAahB,aARgB,GAQhB,GARgB;;;;;;IAchB,OATY,GASZ,GATY;;;;;;;IAgBZ,SAXY,CAAA,QAAA,EAWZ,GAXY;CAYX;;;;;AAKD,AAAA,MAAA,gBAAA,CAAA;;;;;IAKA,QAfgB,GAehB,GAfgB;;;;;IAoBhB,aAnBgB,GAmBhB,GAnBgB;;;;;;IAyBhB,kBArBgB,GAqBhB,GArBgB;;;;;;IA2BhB,MAvBgB,GAuBhB,GAvBgB;;;;;;IA6BhB,OAzBgB,GAyBhB,GAzBgB;;;;;;;;;;IAmChB,MA/BY,CAgCN,QAAkB,EAAE,gBAA0B,EAAE,kBAA+B,EAC/E,QAA2B,EAFjC,GAEqC;CACpC;;ADzHD;;;;;;;AAWA,AAEA,AAEA;;;;AAIA,AAAA,SAAA,uBAAA,CAJC,SAAA,EAID;IACE,uBAJM,KAAA,GAAQ,KAAA,CAKV,CADN,+BAAA,EACwC,SAJC,CAAS,SAAC,CAAS,CAG5D,8CAAA,CAH6D,CAAgD,CAAC;IAK5G,EAAoB,KAJV,GAAK,eAAC,CAAe,GAAG,SAAA,CAAU;IAK5C,OAJO,KAAA,CAAM;CAKd;AAED,MAJM,eAAA,GAAkB,aAAA,CAAc;;;;;AAStC,AAAA,AAEC;AACD,MAAA,6BAAA,CAAA;;;;;;IAMA,uBAVG,CAAA,SAAA,EAUH;QACI,MAVM,uBAAA,CAAwB,SAAC,CAAS,CAAC;KAW1C;CACF;;;;;AAKD,AAAA,MAAA,wBAAA,CAAA;;;;;;;IAQA,uBAhBY,CAAA,SAAA,EAgBZ,GAhBY;;AADH,wBAAT,CAAA,IAAS,GAAiC,IAAI,6BAAA,EAA8B,CAAE;AAoB9E,AAKA,AAAA,MAAA,+BAAA,CAAA;;;;;;IAOA,WAAA,CACM,SAzBiC,EAAW,OAAS,EAC7C,SAA2B,EAuBzC;QAxBkD,IAAlD,CAAA,OAAkD,GAAA,OAAA,CAAS;QAC7C,IAAd,CAAA,SAAc,GAAA,SAAA,CAA2B;QAJ/B,IAAV,CAAA,UAAU,GAAa,IAAI,GAAA,EAA+B,CAAG;QA+BzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;SACrD;KACF;;;;;;IAMH,uBA9BG,CAAA,SAAA,EA8BH;QACI,qBA9BI,OAAA,GAAU,IAAA,CAAK,UAAC,CAAU,GAAC,CAAG,SAAC,CAAS,IAAI,IAAA,CAAK,OAAC,CAAO,uBAAC,CAAuB,SAAC,CAAS,CAAC;QAgChG,OA9BO,IAAI,6BAAA,CAA8B,OAAC,EAAQ,IAAA,CAAK,SAAC,CAAS,CAAC;KA+BnE;CACF;AAED,AASA,AAAA,MAAA,6BAvCC,SAAA,gBAAA,CAuCD;;;;;IAKA,WAAA,CA3CsB,OAA4B,EAAU,QAA0B,EA2CtF;QA3CuF,KAAA,EAAA,CAAA;QAAjE,IAAtB,CAAA,OAAsB,GAAA,OAAA,CAA4B;QAAU,IAA5D,CAAA,QAA4D,GAAA,QAAA,CAA0B;KAAC;;;;IAgDvF,IA9CG,QAAA,GA8CH,EA9CmB,OAAO,IAAA,CAAK,OAAC,CAAO,QAAC,CAAQ,EAAC;;;;IAkDjD,IAjDG,aAAA,GAiDH,EAjDwB,OAAO,IAAA,CAAK,OAAC,CAAO,aAAC,CAAa,EAAC;;;;IAqD3D,IApDG,kBAAA,GAoDH,EApD6B,OAAO,IAAA,CAAK,OAAC,CAAO,kBAAC,CAAkB,EAAC;;;;IAwDrE,IAvDG,MAAA,GAuDH,EAvDiB,OAAO,IAAA,CAAK,OAAC,CAAO,MAAC,CAAM,EAAC;;;;IA2D7C,IA1DG,OAAA,GA0DH,EA1DkB,OAAO,IAAA,CAAK,OAAC,CAAO,OAAC,CAAO,EAAC;;;;;;;;IAkE/C,MAhEG,CAiEG,QAAkB,EAAE,gBAA0B,EAAE,kBAA+B,EAC/E,QAA2B,EAFjC;QAGI,OAhEO,IAAA,CAAK,OAAC,CAAO,MAAC,CAiEjB,QAAQ,EAhEE,gBAAA,EAAkB,kBAAA,EAAoB,QAAA,IAAY,IAAA,CAAK,QAAC,CAAQ,CAAC;KAiEhF;CACF,AAED,AAKC;;ADpJD;;;;;;;AASA,AAEA,AAGA,AACA;;;;;;;;;AASA,AAAA,MAAA,WAAA,CAAA;;;;;;IAMA,QAFgB,GAEhB,GAFgB;;;;;;;IAShB,wBAHgB,GAGhB,GAHgB;;;;;;IAShB,QAJgB,GAIhB,GAJgB;;;;;;IAUhB,OALY,GAKZ,GALY;;;;;;;IAYZ,SAPY,CAAA,QAAA,EAOZ,GAPY;CAQX;;;;AAID,AAAA,MAAA,eAAA,CAAA;;;;;IAKA,WAAA,CATc,cAAqE,EACrE,WAAoB,EAQlC;QATc,IAAd,CAAA,cAAc,GAAA,cAAA,CAAqE;QACrE,IAAd,CAAA,WAAc,GAAA,WAAA,CAAoB;KAAC;;;;IAcnC,IAZG,UAAA,GAYH,EAZ8B,OAAO,IAAA,CAAK,WAAC,CAAW,EAAC;;;;;IAiBvD,MAfG,CAAA,cAAA,EAeH;QACI,uBAfM,QAAA,GAAW,IAAI,IAAA,CAAK,cAAC,CAAc,cAAC,IAAiB,QAAA,CAAS,IAAC,CAAI,CAAC;QAgB1E,QAAQ,CAfC,MAAC,EAAM,CAAE;QAgBlB,OAfO,QAAA,CAAS;KAgBjB;CACF;AAED,AAQA,MAvBM,UAAA,GAAa,IAAI,MAAA,EAAO,CAAE;;;;AA2BhC,AAAA,MAAA,gBAAA,CAAA;;;;;;IAWA,WAAA,CA3Ba,MAAQ,EAAU,SAAiC,EA6B1D,kBA5B0C,EA0BhD;QA3Ba,IAAb,CAAA,MAAa,GAAA,MAAA,CAAQ;QALX,IAAV,CAAA,iBAAU,GAAoC,EAAA,CAAG;QACvC,IAAV,CAAA,UAAU,GAAsB,KAAA,CAAM;QAkClC,IAAI,CAAC,kBAAkB;YACnB,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,6BAA6B,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,mBAAmB,GAAG,IAAI,+BAA+B,CAC1D,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;KAC3F;;;;IAIH,MA9BG,GA8BH,EA9Ba,IAAA,CAAK,QAAC,GAAU,IAAA,CAAK,cAAC,EAAc,CAAE,EAAC;;;;;IAmCpD,cAjCY,GAiCZ,GAjCY;;;;;;IAuCZ,GArCG,CAAA,KAAA,EAAA,aAqCH,GArCG,kBAAA,EAqCH;QACI,IAAI,KArCC,KAAS,QAAA,IAAY,KAAA,KAAU,WAAA,EAAa;YAsC/C,OArCO,IAAA,CAAK;SAsCb;QAED,IAAI,KArCC,KAAS,wBAAA,EAA0B;YAsCtC,OArCO,IAAA,CAAK,mBAAC,CAAmB;SAsCjC;QAED,uBArCM,MAAA,GAAS,IAAA,CAAK,WAAC,CAAW,KAAC,EAAM,UAAA,CAAW,CAAC;QAsCnD,OArCO,MAAA,KAAW,UAAA,GAAa,IAAA,CAAK,MAAC,CAAM,GAAC,CAAG,KAAC,EAAM,aAAA,CAAc,GAAG,MAAA,CAAO;KAsC/E;;;;;;;IAOH,WA1CY,CAAA,KAAA,EAAA,aAAA,EA0CZ,GA1CY;;;;IA8CZ,IA5CG,QAAA,GA4CH,EA5C6B,OAAO,IAAA,CAAK,EAAC;;;;IAgD1C,IA9CG,wBAAA,GA8CH,EA9C6D,OAAO,IAAA,CAAK,mBAAC,CAAmB,EAAC;;;;IAkD9F,OAhDG,GAgDH;QACI,IAAI,IAhDC,CAAI,UAAC,EAAW;YAiDnB,MAhDM,IAAI,KAAA,CAiDN,CADV,cAAA,EAC2B,SAhDC,CAAS,IAAC,CAAI,QAAC,CAAQ,WAAC,CAAW,CA+C/D,4BAAA,CA/CgE,CAA8B,CAAC;SAiD1F;QACD,IAAI,CAhDC,UAAC,GAAY,IAAA,CAAK;QAiDvB,IAAI,CAhDC,eAAC,EAAe,CAAE;QAiDvB,IAAI,CAhDC,iBAAC,CAAiB,OAAC,CAAO,CAAC,QAAC,KAAY,QAAA,EAAS,CAAE,CAAC;KAiD1D;;;;;IAKH,SAnDG,CAAA,QAAA,EAmDH,EAnD0C,IAAA,CAAK,iBAAC,CAAiB,IAAC,CAAI,QAAC,CAAQ,CAAC,EAAC;;;;;IAwDjF,eAtDY,GAsDZ,GAtDY;CAuDX,AAED,AAaC;;ADjMD;;;;;;;AASA,AA4BA,IADI,KAAO,CAAM;AAEjB,IADI,MAAQ,CAAO;;;;AAKnB,AAAA,SAAA,SAAA,GAAA;IACE,uBAHM,GAAA,GAAW,EAAAD,OAAW,qBAAuB,KAAC,CAAK,CAAC;IAI1D,IAAI,GAHC,EAAI;QAIP,KAAK,GAHG,GAAA,CAAI,OAAC,CAAO,CAAC;QAIrB,IAAI,KAHC,EAAM;YAIT,MAAM,GAHG,KAAA,CAAM,QAAC,CAAQ,CAAC;YAIzB,OAHO,IAAA,CAAK;SAIb;KACF;IACD,OAHO,KAAA,CAAM;CAId;;;;;;AAMD,AAAA,SAAAD,aAAA,CAPC,SAAA,EAAA,KAOD,GAPC,IAAA,EAOD;IACE,OAPO,MAAA,CAAO,WAAC,CAAW,SAAC,EAAU,KAAA,CAAM,CAAC;CAQ7C;;;;;;;AAUD,AAAA,SAAA,KAAA,CAbC,KAAA,EAAA,WAAA,EAaD;IACE,KAAK,CAbC,UAAC,CAAU,KAAC,EAAM,WAAA,CAAY,CAAC;IAcrC,OAbO,WAAA,CAAY;CAcpB;;;;;;AAMD,AAAA,SAAA,cAAA,CAjBC,SAAA,EAAA,MAAA,EAiBD;IACE,OAjBO,KAAA,CAAM,cAAC,CAAc,SAAC,EAAU,MAAA,CAAO,CAAC;CAkBhD;;;;;AAKD,AAAA,SAAA,YAAA,CApBC,KAAA,EAoBD;IACE,KAAK,CApBC,YAAC,CAAY,KAAC,CAAK,CAAC;CAqB3B;;ADxFD;;;;;;;AASA,AAKA;;;AAGA,AADO,MAAM,UAAA,GAAa,SAAA,EAAU,CAAE;;;;;;AAOtC,SAAA,SAAA,CALC,IAAA,EAAA,IAAA,EAKD;IACE,OALO,IAAA,CAAK;CAMb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BD,AAJC,MAAA,cAAA,GAKG,UAAU,GAAGA,aAAW,GAAG,CAAC,SAAiB,EAAE,KAAW,KAAK,SAAS,CAAC;;;;;;;;;;AAU7E,AAHC,MAAA,QAAA,GAIG,UAAU,GAAG,KAAK,GAAG,CAAC,CAAM,EAAE,CAAO,KAAK,CAAC,CAAC;;;;;;;;;;;;;;AAchD,AAFC,MAAA,iBAAA,GAGG,UAAU,GAAG,cAAc,GAAG,CAAC,SAAiB,EAAE,MAAc,KAAK,IAAI,CAAC;;;;;;;AAO9E,AADC,MAAA,eAAA,GAAA,UAAA,GAAA,YAAA,GAAA,CAAA,CAAA,KAAA,IAAA,CAAA;;ADzFD;;;;;;;AASA,AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,AAAA,MAAA,YAAC,SAAA,OAAA,CAAD;;;;;;IAYA,WAAA,CAAG,OAAH,GAAiC,KAAA,EAAjC;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;KAC1B;;;;;IAKH,IAHG,CAAA,KAAA,EAGH,EAHoB,KAAA,CAAM,IAAC,CAAI,KAAC,CAAK,CAAC,EAAC;;;;;;;IAUvC,SARG,CAAA,eAAA,EAAA,KAAA,EAAA,QAAA,EAQH;QACI,qBARI,WAAyB,CAAI;QASjC,qBARI,OAAA,GAAU,CAAA,GAAM,KAAa,IAAA,CAAK;QAStC,qBARI,UAAA,GAAa,MAAW,IAAA,CAAK;QAUjC,IAAI,eARC,IAAkB,OAAO,eAAA,KAAoB,QAAA,EAAU;YAS1D,WAAW,GARG,IAAA,CAAK,SAAC,GAAW,CAAA,KAAQ,KAQ7C;gBACQ,UAAU,CARC,MAAM,eAAA,CAAgB,IAAC,CAAI,KAAC,CAAK,CAAC,CAAC;aAS/C,GARG,CAAA,KAAQ,KAQlB,EAR4B,eAAA,CAAgB,IAAC,CAAI,KAAC,CAAK,CAAC,EAAC,CAAE;YAUrD,IAAI,eARC,CAAe,KAAC,EAAM;gBASzB,OAAO,GARG,IAAA,CAAK,SAAC,GAAW,CAAA,GAAE,KAQrC,EAR8C,UAAA,CAAW,MAAM,eAAA,CAAgB,KAAC,CAAK,GAAC,CAAG,CAAC,CAAC,EAAC;oBASzD,CAAC,GARC,KAQrC,EAR8C,eAAA,CAAgB,KAAC,CAAK,GAAC,CAAG,CAAC,EAAC,CAAE;aASrE;YAED,IAAI,eARC,CAAe,QAAC,EAAS;gBAS5B,UAAU,GARG,IAAA,CAAK,SAAC,GAAW,MAQtC,EAR8C,UAAA,CAAW,MAAM,eAAA,CAAgB,QAAC,EAAQ,CAAE,CAAC,EAAC;oBAStD,MAAtC,EAR8C,eAAA,CAAgB,QAAC,EAAQ,CAAE,EAAC,CAAE;aASrE;SACF;aARM;YASL,WAAW,GARG,IAAA,CAAK,SAAC,GAAW,CAAA,KAAQ,KAQ7C,EARuD,UAAA,CAAW,MAAM,eAAA,CAAgB,KAAC,CAAK,CAAC,CAAC,EAAC;gBAS5D,CAAC,KARO,KAQ7C,EARuD,eAAA,CAAgB,KAAC,CAAK,CAAC,EAAC,CAAE;YAU3E,IAAI,KARC,EAAM;gBAST,OAAO;oBACH,IAAI,CARC,SAAC,GAAW,CAAA,GAAE,KAQ/B,EARwC,UAAA,CAAW,MAAM,KAAA,CAAM,GAAC,CAAG,CAAC,CAAC,EAAC,GAAI,CAAA,GAAE,KAQ5E,EARqF,KAAA,CAAM,GAAC,CAAG,CAAC,EAAC,CAAE;aAS5F;YAED,IAAI,QARC,EAAS;gBASZ,UAAU;oBACN,IAAI,CARC,SAAC,GAAW,MAQ7B,EARqC,UAAA,CAAW,MAAM,QAAA,EAAS,CAAE,CAAC,EAAC,GAAI,MAQvE,EAR+E,QAAA,EAAS,CAAE,EAAC,CAAE;aAStF;SACF;QAED,OARO,KAAA,CAAM,SAAC,CAAS,WAAC,EAAY,OAAA,EAAS,UAAA,CAAW,CAAC;KAS1D;CACF,AAED,AAGC;;AD7HD;;;;;;;AASA,AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwEA,AAAA,MAAA,MAAA,CAAA;;;;IAcA,WAAA,CAAG,EAAY,oBAAC,GAAsB,KAAA,EAAM,EAA5C;QAVU,IAAV,CAAA,qBAAU,GAAiC,KAAA,CAAM;QACvC,IAAV,CAAA,qBAAU,GAAiC,KAAA,CAAM;QAEvC,IAAV,CAAA,SAAU,GAAY,IAAA,CAAK;QACjB,IAAV,CAAA,QAAU,GAAmB,CAAA,CAAE;QACrB,IAAV,CAAA,WAAU,GAAiC,IAAI,YAAA,CAAa,KAAC,CAAK,CAAC;QACzD,IAAV,CAAA,iBAAU,GAAuC,IAAI,YAAA,CAAa,KAAC,CAAK,CAAC;QAC/D,IAAV,CAAA,SAAU,GAA+B,IAAI,YAAA,CAAa,KAAC,CAAK,CAAC;QACvD,IAAV,CAAA,cAAU,GAAoC,IAAI,YAAA,CAAa,KAAC,CAAK,CAAC;QAGlE,IAAI,OAAO,IAAI,IAAI,WAAW,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;SACxD;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;QAEvC,IAAK,IAAY,CAAC,aAAa,CAAC,EAAE;YAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAE,IAAY,CAAC,aAAa,CAAC,CAAC,CAAC;SAC5D;QAED,IAAI,oBAAoB,IAAK,IAAY,CAAC,wBAAwB,CAAC,EAAE;YACnE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAE,IAAY,CAAC,wBAAwB,CAAC,CAAC,CAAC;SACvE;QAED,IAAI,CAAC,gCAAgC,EAAE,CAAC;KACzC;;;;IAIH,OAFG,eAAA,GAEH,EAFsC,OAAO,IAAA,CAAK,OAAC,CAAO,GAAC,CAAG,eAAC,CAAe,KAAK,IAAA,CAAK,EAAC;;;;IAMzF,OAJG,mBAAA,GAIH;QACI,IAAI,CAJC,MAAC,CAAM,eAAC,EAAe,EAAG;YAK7B,MAJM,IAAI,KAAA,CAAM,gDAAC,CAAgD,CAAC;SAKnE;KACF;;;;IAIH,OAPG,sBAAA,GAOH;QACI,IAAI,MAPC,CAAM,eAAC,EAAe,EAAG;YAQ5B,MAPM,IAAI,KAAA,CAAM,gDAAC,CAAgD,CAAC;SAQnE;KACF;;;;;;;;;;;;;;;IAeH,GARG,CAAA,EAAA,EAQH,EAR4B,OAAO,IAAA,CAAK,KAAC,CAAK,GAAC,CAAG,EAAC,CAAE,CAAC,EAAC;;;;;;;IAevD,UATG,CAAA,EAAA,EASH,EATmC,OAAO,IAAA,CAAK,KAAC,CAAK,UAAC,CAAU,EAAC,CAAE,CAAC,EAAC;;;;;;;;;;;;;;;;IAyBrE,iBAVG,CAAA,EAAA,EAUH,EAV0C,OAAO,IAAA,CAAK,KAAC,CAAK,GAAC,CAAG,EAAC,CAAE,CAAC,EAAC;;;;;IAerE,IAVG,UAAA,GAUH,EAVwC,OAAO,IAAA,CAAK,WAAC,CAAW,EAAC;;;;;;;IAiBjE,IAVG,gBAAA,GAUH,EAV8C,OAAO,IAAA,CAAK,iBAAC,CAAiB,EAAC;;;;;;;IAiB7E,IAVG,QAAA,GAUH,EAVsC,OAAO,IAAA,CAAK,SAAC,CAAS,EAAC;;;;;IAe7D,IAVG,OAAA,GAUH,EAVqC,OAAO,IAAA,CAAK,cAAC,CAAc,EAAC;;;;;IAejE,IAVG,QAAA,GAUH,EAV4B,OAAO,IAAA,CAAK,SAAC,CAAS,EAAC;;;;IAcnD,IAZG,oBAAA,GAYH,EAZwC,OAAO,IAAA,CAAK,qBAAC,CAAqB,EAAC;;;;IAgB3E,IAdG,oBAAA,GAcH,EAdwC,OAAO,IAAA,CAAK,qBAAC,CAAqB,EAAC;;;;IAExE,WAAA,GAAH;QAiBI,IAAI,IAhBC,CAAI,QAAC,IAAW,CAAA,IAAK,CAAA,IAAE,CAAI,qBAAC,IAAwB,CAAA,IAAE,CAAI,SAAC,EAAU;YAiBxE,IAhBI;gBAiBF,IAAI,CAhBC,QAAC,EAAQ,CAAE;gBAiBhB,IAAI,CAhBC,iBAAC,CAAiB,IAAC,CAAI,IAAC,CAAI,CAAC;aAiBnC;oBAhBS;gBAiBR,IAAI,CAhBC,QAAC,EAAQ,CAAE;gBAiBhB,IAAI,CAhBC,IAAC,CAAI,qBAAC,EAAsB;oBAiB/B,IAhBI;wBAiBF,IAAI,CAhBC,iBAAC,CAAiB,MAAM,IAAA,CAAK,SAAC,CAAS,IAAC,CAAI,IAAC,CAAI,CAAC,CAAC;qBAiBzD;4BAhBS;wBAiBR,IAAI,CAhBC,SAAC,GAAW,IAAA,CAAK;qBAiBvB;iBACF;aACF;SACF;KACF;;;;IAdA,gCAAA,GAAH;QAmBI,IAAI,CAlBC,KAAC,GAAO,IAAA,CAAK,KAAC,CAAK,IAAC,CAAI;YAmB3B,IAAI,EAlBE,SAAA;YAmBN,UAAU,oBAlBO,EAAC,eAAC,EAAgB,IAAA,EAAK,CAAA;YAmBxC,YAAY,EAlBE,CAAA,QAAW,EAAc,OAAS,EAAM,MAAQ,EAAM,IAAM,EAmB3D,SAlBW,EAAK,SAAW,KAiBhD;gBAEQ,IAlBI;oBAmBF,IAAI,CAlBC,OAAC,EAAO,CAAE;oBAmBf,OAlBO,QAAA,CAAS,UAAC,CAAU,MAAC,EAAO,IAAA,EAAM,SAAA,EAAW,SAAA,CAAU,CAAC;iBAmBhE;wBAlBS;oBAmBR,IAAI,CAlBC,OAAC,EAAO,CAAE;iBAmBhB;aACF;YAGD,QAAQ,EAlBE,CAAA,QAAW,EAAc,OAAS,EAAM,MAAQ,EAAM,QAAU,EAmB/D,SAlBW,EAAK,SAAe,EAAG,MAAQ,KAiB3D;gBAEQ,IAlBI;oBAmBF,IAAI,CAlBC,OAAC,EAAO,CAAE;oBAmBf,OAlBO,QAAA,CAAS,MAAC,CAAM,MAAC,EAAO,QAAA,EAAU,SAAA,EAAW,SAAA,EAAW,MAAA,CAAO,CAAC;iBAmBxE;wBAlBS;oBAmBR,IAAI,CAlBC,OAAC,EAAO,CAAE;iBAmBhB;aACF;YAED,SAAS,EACL,CAAC,QAlBU,EAAc,OAAS,EAAM,MAAQ,EAAM,YAAc,KAiB9E;gBAEY,QAAQ,CAlBC,OAAC,CAAO,MAAC,EAAO,YAAA,CAAa,CAAC;gBAmBvC,IAAI,OAlBC,KAAW,MAAA,EAAQ;;;oBAqBtB,IAAI,YAlBC,CAAY,MAAC,IAAS,WAAA,EAAa;wBAmBtC,IAAI,CAlBC,eAAC,CAAe,YAAC,CAAY,SAAC,CAAS,CAAC;qBAmB9C;yBAlBM,IAAA,YAAK,CAAY,MAAC,IAAS,WAAA,EAAa;wBAmB7C,IAAI,CAlBC,eAAC,CAAe,YAAC,CAAY,SAAC,CAAS,CAAC;qBAmB9C;iBACF;aACF;YAEL,aAAa,EAlBE,CAAA,QAAW,EAAc,OAAS,EAAM,MAAQ,EAAM,KAAO,KAkBlF;gBACQ,QAAQ,CAlBC,WAAC,CAAW,MAAC,EAAO,KAAA,CAAM,CAAC;gBAmBpC,IAAI,CAlBC,YAAC,CAAY,KAAC,CAAK,CAAC;gBAmBzB,OAlBO,KAAA,CAAM;aAmBd;SACF,CAlBC,CAAC;KAmBJ;;;;IAhBA,OAAA,GAAH;QAqBI,IAAI,CApBC,QAAC,EAAQ,CAAE;QAqBhB,IAAI,IApBC,CAAI,SAAC,EAAU;YAqBlB,IAAI,CApBC,SAAC,GAAW,KAAA,CAAM;YAqBvB,IAAI,CApBC,WAAC,CAAW,IAAC,CAAI,IAAC,CAAI,CAAC;SAqB7B;KACF;;;;IAlBA,OAAA,GAAH;QAuBI,IAAI,CAtBC,QAAC,EAAQ,CAAE;QAuBhB,IAAI,CAtBC,WAAC,EAAW,CAAE;KAuBpB;;;;;IApBA,eAAA,CAAA,aAAA,EAAH;QA0BI,IAAI,CAzBC,qBAAC,GAAuB,aAAA,CAAc;QA0B3C,IAAI,CAzBC,WAAC,EAAW,CAAE;KA0BpB;;;;;IAvBA,eAAA,CAAA,aAAA,EAAH,EAAoD,IAAA,CAAK,qBAAC,GAAuB,aAAA,CAAc,EAAC;;;;;IAE7F,YAAA,CAAA,KAAA,EAAH,EAAqC,IAAA,CAAK,cAAC,CAAc,IAAC,CAAI,KAAC,CAAK,CAAC,EAAC;CAgCrE,AAED,AAqBC;;ADjVD;;;;;;;AASA,AACA,AACA,AAaA;;;;;;AAMA,AAAA,MAAA,WAAA,CAAA;;;;IAuBA,WAAA,CARsB,OAAS,EAQ/B;QARsB,IAAtB,CAAA,OAAsB,GAAA,OAAA,CAAS;;;;QAX/B,IAAA,CAAA,aADG,GAAA,CAAA,CAAA;;;;QAKH,IAAA,CAAA,aAHG,GAAA,IAAA,CAAA;;;;;;;QAUH,IAAA,CAAA,QAHG,GAAA,KAAA,CAAA;;;;QAOH,IAAA,CAAA,UALG,GAAA,EAAA,CAAA;QACmC,IAAA,CAAA,mBAAA,EAAA,CAAA;KAAA;;;;;IAatC,mBAVG,GAUH;QACI,IAAI,CAVC,OAAC,CAAO,UAAC,CAAU,SAAC,CAAS;YAWhC,IAAI,EAVE,MAUZ;gBACQ,IAAI,CAVC,QAAC,GAAU,IAAA,CAAK;gBAWrB,IAAI,CAVC,aAAC,GAAe,KAAA,CAAM;aAW5B;SACF,CAVC,CAAC;QAYH,IAAI,CAVC,OAAC,CAAO,iBAAC,CAAiB,MAUnC;YACM,IAAI,CAVC,OAAC,CAAO,QAAC,CAAQ,SAAC,CAAS;gBAW9B,IAAI,EAVE,MAUd;oBACU,MAAM,CAVC,sBAAC,EAAsB,CAAE;oBAWhC,iBAAiB,CAVC,MAU5B;wBACY,IAAI,CAVC,aAAC,GAAe,IAAA,CAAK;wBAW1B,IAAI,CAVC,oBAAC,EAAoB,CAAE;qBAW7B,CAVC,CAAC;iBAWJ;aACF,CAVC,CAAC;SAWJ,CAVC,CAAC;KAWJ;;;;IAIH,2BAZG,GAYH;QACI,IAAI,CAZC,aAAC,IAAgB,CAAA,CAAE;QAaxB,IAAI,CAZC,QAAC,GAAU,IAAA,CAAK;QAarB,OAZO,IAAA,CAAK,aAAC,CAAa;KAa3B;;;;IAIH,2BAdG,GAcH;QACI,IAAI,CAdC,aAAC,IAAgB,CAAA,CAAE;QAexB,IAAI,IAdC,CAAI,aAAC,GAAe,CAAA,EAAG;YAe1B,MAdM,IAAI,KAAA,CAAM,mCAAC,CAAmC,CAAC;SAetD;QACD,IAAI,CAdC,oBAAC,EAAoB,CAAE;QAe5B,OAdO,IAAA,CAAK,aAAC,CAAa;KAe3B;;;;IAIH,QAhBG,GAgBH;QACI,OAhBO,IAAA,CAAK,aAAC,IAAgB,IAAA,CAAK,aAAC,IAAgB,CAAA,IAAK,CAAA,IAAE,CAAI,OAAC,CAAO,oBAAC,CAAoB;KAiB5F;;;;;IAKH,oBAlBG,GAkBH;QACI,IAAI,IAlBC,CAAI,QAAC,EAAQ,EAAG;;YAoBnB,iBAAiB,CAlBC,MAkBxB;gBACQ,OAAO,IAlBC,CAAI,UAAC,CAAU,MAAC,KAAU,CAAA,EAAG;oBAmBnC,GAAoB,IAlBlB,CAAI,UAAC,CAAU,GAAC,EAAG,IAAK,IAAC,CAAI,QAAC,CAAQ,CAAC;iBAmB1C;gBACD,IAAI,CAlBC,QAAC,GAAU,KAAA,CAAM;aAmBvB,CAlBC,CAAC;SAmBJ;aAlBM;;YAoBL,IAAI,CAlBC,QAAC,GAAU,IAAA,CAAK;SAmBtB;KACF;;;;;IAKH,UArBG,CAAA,QAAA,EAqBH;QACI,IAAI,CArBC,UAAC,CAAU,IAAC,CAAI,QAAC,CAAQ,CAAC;QAsB/B,IAAI,CArBC,oBAAC,EAAoB,CAAE;KAsB7B;;;;IAIH,sBAvBG,GAuBH,EAvBqC,OAAO,IAAA,CAAK,aAAC,CAAa,EAAC;;;;;;;;IA+BhE,YA5BG,CAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EA4BH;;QAEI,OA5BO,EAAA,CAAG;KA6BX;;;;;;;IAOH,aAjCG,CAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAiCH;;QAEI,OAjCO,EAAA,CAAG;KAkCX;;AAhCI,WAAP,CAAA,UAAO,GAAoC;IAkC3C,EAjCE,IAAA,EAAM,UAAA,EAAW;CAkClB,CAjCC;;;;AAED,WAAD,CAAA,cAAC,GAAA,MAAA;IAoCD,EAAC,IAAI,EAAE,MAAM,GAAG;CACf,CAAC;AAGF,AAmCA;;;;AAIA,AAAA,MAAA,mBAAA,CAAA;IAKA,WAAA,GAAA;;;;QADA,IAAA,CAAA,aAvEG,GAAA,IAAA,GAAA,EAAA,CAAA;QAEA,kBAAA,CAAA,WAAA,CAAA,IAAA,CAAA,CAAA;KAAA;;;;;;IA4EH,mBA1EG,CAAA,KAAA,EAAA,WAAA,EA0EH;QACI,IAAI,CA1EC,aAAC,CAAa,GAAC,CAAG,KAAC,EAAM,WAAA,CAAY,CAAC;KA2E5C;;;;;IAKH,cA7EG,CAAA,IAAA,EA6EH,EA7EgD,OAAO,IAAA,CAAK,aAAC,CAAa,GAAC,CAAG,IAAC,CAAI,IAAI,IAAA,CAAK,EAAC;;;;IAiF7F,mBA/EG,GA+EH,EA/EyC,OAAO,KAAA,CAAM,IAAC,CAAI,IAAC,CAAI,aAAC,CAAa,MAAC,EAAM,CAAE,CAAC,EAAC;;;;IAmFzF,kBAjFG,GAiFH,EAjFgC,OAAO,KAAA,CAAM,IAAC,CAAI,IAAC,CAAI,aAAC,CAAa,IAAC,EAAI,CAAE,CAAC,EAAC;;;;;;IAuF9E,qBArFG,CAAA,IAAA,EAAA,eAqFH,GArFG,IAAA,EAqFH;QACI,OArFO,kBAAA,CAAmB,qBAAC,CAAqB,IAAC,EAAK,IAAA,EAAM,eAAA,CAAgB,CAAC;KAsF9E;;AApFI,mBAAP,CAAA,UAAO,GAAoC;IAsF3C,EArFE,IAAA,EAAM,UAAA,EAAW;CAsFlB,CArFC;;;;AAED,mBAAD,CAAA,cAAC,GAAA,MAAA,EAwFA,CAAC;AAGF,AA4BA,MAAA,mBAAA,CAAA;;;;;IAKA,WA1GG,CAAA,QAAA,EA0GH,GA1GmD;;;;;;;IAiHnD,qBAhHG,CAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAgHH;QAEI,OAhHO,IAAA,CAAK;KAiHb;CACF;;;;;;;AAOD,AAAA,SAAA,oBAAA,CAjHC,MAAA,EAiHD;IACE,kBAAkB,GA9HG,MAAA,CAAO;CA+H7B;AAED,IA9HI,kBAAA,GAAqC,IAAI,mBAAA,EAAoB,CAAE;;ADlLnE;;;;;;;AASA,AAGA,AACA,AAEA,AACA,AACA,AAEA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AAEA,AACA,AAEA,AAEA,IADI,QAAA,GAAoB,IAAA,CAAK;AAE7B,IADI,cAAA,GAA0B,KAAA,CAAM;AAEpC,IADI,SAAW,CAAY;AAG3B,AADO,MAAM,wBAAA,GAA2B,IAAI,cAAA,CAAuB,oBAAE,CAAoB,CAAC;;;;;;;;;;;;AAa1F,AAAA,SAAA,cAAA,GAAA;IACE,IAAI,cADC,EAAe;QAElB,MADM,IAAI,KAAA,CAAM,+CAAC,CAA+C,CAAC;KAElE;IACD,QAAA,GADW,KAAA,CAAM;CAElB;;;;;;;;;;AAUD,AAAA,SAAA,SAAA,GAAA;IACE,cAAO,GADU,IAAA,CAAK;IAEtB,OADO,QAAA,CAAS;CAEjB;;;;;;AAMD,AAAA,MAAA,YAAA,CAAA;;;;;IAKA,WAAA,CAJqB,IAAM,EAAe,KAAO,EAIjD;QAJqB,IAArB,CAAA,IAAqB,GAAA,IAAA,CAAM;QAAe,IAA1C,CAAA,KAA0C,GAAA,KAAA,CAAO;KAAI;CAMpD;AAED,AAOA;;;;;;;;AAQA,AAAA,SAAA,cAAA,CAdC,QAAA,EAcD;IACE,IAAI,SAdC,IAAY,CAAA,SAAE,CAAS,SAAC;QAezB,CAAC,SAdC,CAAS,QAAC,CAAQ,GAAC,CAAG,wBAAC,EAAyB,KAAA,CAAM,EAAE;QAe5D,MAdM,IAAI,KAAA,CAeN,+EAA+E,CAdC,CAAC;KAetF;IACD,SAAM,GAdM,QAAA,CAAS,GAAC,CAAG,WAAC,CAAW,CAAC;IAetC,uBAdM,KAAA,GAAQ,QAAA,CAAS,GAAC,CAAG,oBAAC,EAAqB,IAAA,CAAK,CAAC;IAevD,IAAI,KAdC;QAAM,KAAA,CAAM,OAAC,CAAO,CAAC,IAAM,KAAQ,IAAA,EAAK,CAAE,CAAC;IAehD,OAdO,SAAA,CAAU;CAelB;;;;;;;;;;AAUD,AAAA,SAAA,qBAAA,CACI,qBAA4E,EAAE,IAAY,EAC1F,SAFJ,GAE4B,EAAE,EAF9B;IAGE,uBAjBM,MAAA,GAAS,IAAI,cAAA,CAAe,CAiBpC,UAAA,EAjBqC,IAAa,CAiBlD,CAjBsD,CAAE,CAAC;IAkBvD,OAjBO,CAAA,cAiBT,GAjBuC,EAAA,KAiBvC;QACI,qBAjBI,QAAA,GAAW,WAAA,EAAY,CAAE;QAkB7B,IAAI,CAjBC,QAAC,IAAW,QAAA,CAAS,QAAC,CAAQ,GAAC,CAAG,wBAAC,EAAyB,KAAA,CAAM,EAAE;YAkBvE,IAAC,qBAjBI,EAAsB;gBAkBzB,qBAAW,CACP,SAAS,CAjBC,MAAC,CAAM,cAAC,CAAc,CAAC,MAAC,CAAM,EAAC,OAAC,EAAQ,MAAA,EAAQ,QAAA,EAAU,IAAA,EAAK,CAAC,CAAC,CAAC;aAkBjF;iBAjBM;gBAkBL,cAAa,CAjBE,kBAAC,CAAkB,gBAAC,CAkBvC,SAAA,CAjBkB,MAAC,CAAM,cAAC,CAAc,CAAC,MAAC,CAAM,EAAC,OAAC,EAAQ,MAAA,EAAQ,QAAA,EAAU,IAAA,EAAK,CAAC,CAAC,CAAC,CAAC;aAkBlF;SACF;QACD,OAjBO,cAAA,CAAe,MAAC,CAAM,CAAC;KAkB/B,CAjBC;CAkBH;;;;;;;;AAQD,AAAA,SAAA,cAAA,CAlBC,aAAA,EAkBD;IACE,uBAlBM,QAAA,GAAW,WAAA,EAAY,CAAE;IAoB/B,IAAI,CAlBC,QAAC,EAAS;QAmBb,MAlBM,IAAI,KAAA,CAAM,qBAAC,CAAqB,CAAC;KAmBxC;IAED,IAAI,CAlBC,QAAC,CAAQ,QAAC,CAAQ,GAAC,CAAG,aAAC,EAAc,IAAA,CAAK,EAAE;QAmB/C,MAlBM,IAAI,KAAA,CAmBN,sFAAsF,CAlBC,CAAC;KAmB7F;IAED,OAlBO,QAAA,CAAS;CAmBjB;;;;;;;AAOD,AAAA,SAAA,eAAA,GAAA;IACE,IAAI,SAlBC,IAAY,CAAA,SAAE,CAAS,SAAC,EAAU;QAmBrC,SAAS,CAlBC,OAAC,EAAO,CAAE;KAmBrB;CACF;;;;;;;AAOD,AAAA,SAAA,WAAA,GAAA;IACE,OAlBO,SAAA,IAAa,CAAA,SAAE,CAAS,SAAC,GAAW,SAAA,GAAY,IAAA,CAAK;CAmB7D;;;;;;;;;;;;AAYD,AAAA,MAAA,WAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4BA,sBAtBY,CAAA,aAAA,EAsBZ,GAtBY;;;;;;;;;;;;;;;;;;;;;IA2CZ,eA1BY,CA2BN,UAAe,EACf,eAA+B,EAFrC,GAEqC;;;;;;;IAOrC,SA5BY,CAAA,QAAA,EA4BZ,GA5BY;;;;;;;IAmCZ,QA7BgB,GA6BhB,GA7BgB;;;;;;IAmChB,OA9BY,GA8BZ,GA9BY;;;;;IAmCZ,SAjCgB,GAiChB,GAjCgB;CAkCf;;;;;;AAMD,SAAA,4BAAA,CArCC,YAAA,EAAA,QAAA,EAqCD;IACE,IArCI;QAsCF,uBArCM,MAAA,GAAS,QAAA,EAAS,CAAE;QAsC1B,IAAI,SArCC,CAAS,MAAC,CAAM,EAAE;YAsCrB,OArCO,MAAA,CAAO,KAAC,CAAK,CAAC,CAAG,KAqC9B;gBACQ,YAAY,CArCC,WAAC,CAAW,CAAC,CAAC,CAAC;;gBAuC5B,MArCM,CAAA,CAAE;aAsCT,CArCC,CAAC;SAsCJ;QAED,OArCO,MAAA,CAAO;KAsCf;IArCC,OAAA,CAAQ,EAAE;QAsCV,YAAY,CArCC,WAAC,CAAW,CAAC,CAAC,CAAC;;QAuC5B,MArCM,CAAA,CAAE;KAsCT;CACF;;;;;AAKD,AAAA,MAAA,YAnCC,SAAA,WAAA,CAmCD;;;;IAOA,WAAA,CArCsB,SAAW,EAqCjC;QArC0C,KAAA,EAAA,CAAA;QAApB,IAAtB,CAAA,SAAsB,GAAA,SAAA,CAAW;QAJvB,IAAV,CAAA,QAAU,GAA+B,EAAA,CAAG;QAClC,IAAV,CAAA,iBAAU,GAAgC,EAAA,CAAG;QACnC,IAAV,CAAA,UAAU,GAAsB,KAAA,CAAM;KAEI;;;;;IA0C1C,SAxCG,CAAA,QAAA,EAwCH,EAxC0C,IAAA,CAAK,iBAAC,CAAiB,IAAC,CAAI,QAAC,CAAQ,CAAC,EAAC;;;;IA4CjF,IA1CG,QAAA,GA0CH,EA1C6B,OAAO,IAAA,CAAK,SAAC,CAAS,EAAC;;;;IA8CpD,IA5CG,SAAA,GA4CH,EA5CoB,OAAO,IAAA,CAAK,UAAC,CAAU,EAAC;;;;IAgD5C,OA9CG,GA8CH;QACI,IAAI,IA9CC,CAAI,UAAC,EAAW;YA+CnB,MA9CM,IAAI,KAAA,CAAM,0CAAC,CAA0C,CAAC;SA+C7D;QACD,IAAI,CA9CC,QAAC,CAAQ,KAAC,EAAK,CAAE,OAAC,CAAO,MAAC,IAAS,MAAA,CAAO,OAAC,EAAO,CAAE,CAAC;QA+C1D,IAAI,CA9CC,iBAAC,CAAiB,OAAC,CAAO,QAAC,IAAW,QAAA,EAAS,CAAE,CAAC;QA+CvD,IAAI,CA9CC,UAAC,GAAY,IAAA,CAAK;KA+CxB;;;;;;IAMH,sBAlDG,CAAA,aAAA,EAkDH;QACI,OAlDO,IAAA,CAAK,+BAAC,CAA+B,aAAC,CAAa,CAAC;KAmD5D;;;;;;;IAhDA,+BAAA,CAAA,aAAA,EAAA,MAAA,EAAH;;;;;QA6DI,IAAI,CAvDC,MAAC;YAAO,MAAA,GAAS,IAAI,MAAA,CAAO,EAAC,oBAAC,EAAqB,SAAA,EAAU,EAAE,CAAC,CAAC;;;QA0DtE,OAvDO,MAAA,CAAO,GAAC,CAAG,MAuDtB;YACM,uBAvDM,cAAA,GAwDF,kBAAkB,CAvDC,gBAAC,CAAgB,CAAC,EAAC,OAAC,EAAQ,MAAA,EAAQ,QAAA,EAAU,MAAA,EAAO,CAAC,EAAE,IAAA,CAAK,QAAC,CAAQ,CAAC;YAwD9F,uBAvDM,SAAA,IAAiC,aAAC,CAAa,MAAC,CAAM,cAAC,CAAc,CAAA,CAAC;YAwD5E,uBAvDM,gBAAA,GAAiC,SAAA,CAAU,QAAC,CAAQ,GAAC,CAAG,YAAC,EAAa,IAAA,CAAK,CAAC;YAwDlF,IAAI,CAvDC,gBAAC,EAAiB;gBAwDrB,MAvDM,IAAI,KAAA,CAAM,+DAAC,CAA+D,CAAC;aAwDlF;YACD,SAAS,CAvDC,SAAC,CAAS,MAAM,MAAA,CAAO,IAAC,CAAI,QAAC,EAAS,SAAA,CAAU,CAAC,CAAC;YAAA,EAwD5D,MAAM,GAvDG,OAAC,CAAO,SAAC,CAAS,EAAC,IAAC,EAAK,CAAA,KAAQ,KADhD,EAC0D,gBAAA,CAAiB,WAAC,CAAW,KAAC,CAAK,CAAC,EAAC,EAAE,CAAC,CAAC;YAwD7F,OAvDO,4BAAA,CAA6B,gBAAC,EAAiB,MAuD5D;gBACQ,uBAvDM,UAAA,GAAoC,SAAA,CAAU,QAAC,CAAQ,GAAC,CAAG,qBAAC,CAAqB,CAAC;gBAwDxF,OAvDO,UAAA,CAAW,WAAC,CAAW,IAAC,CAAI,MAuD3C;oBACU,IAAI,CAvDC,kBAAC,CAAkB,SAAC,CAAS,CAAC;oBAwDnC,OAvDO,SAAA,CAAU;iBAwDlB,CAvDC,CAAC;aAwDJ,CAvDC,CAAC;SAwDJ,CAvDC,CAAC;KAwDJ;;;;;;;IAOH,eA5DG,CAAA,UAAA,EAAA,eA4DH,GA5DG,EAAA,EA4DH;QAEI,OA5DO,IAAA,CAAK,wBAAC,CAAwB,UAAC,EAAW,eAAA,CAAgB,CAAC;KA6DnE;;;;;;;;IA1DA,wBAAA,CAmEG,UAAmB,EAAE,eAnE3B,GAmEgF,EAAE,EAC5E,MAAe,EApErB;QAqEI,uBAlEM,eAAA,GAAmC,IAAA,CAAK,QAAC,CAAQ,GAAC,CAAG,eAAC,CAAe,CAAC;QAmE5E,uBAlEM,QAAA,GAAW,eAAA,CAAgB,cAAC,CAmE9B,KAAK,CAlEC,OAAC,CAAO,eAAC,CAAe,GAAG,eAAA,GAAkB,CAAA,eAAE,CAAe,CAAC,CAAC;QAoE1E,OAlEO,QAAA,CAAS,kBAAC,CAAkB,UAAC,CAAU;aAmEzC,IAlEC,CAAI,CAAC,aAAC,KAAiB,IAAA,CAAK,+BAAC,CAA+B,aAAC,EAAc,MAAA,CAAO,CAAC,CAAC;KAmE3F;;;;;IAhEA,kBAAA,CAAA,SAAA,EAAH;QAsEI,uBArEM,MAAA,GAAS,SAAA,CAAU,QAAC,CAAQ,GAAC,CAAG,cAAC,CAAc,CAAC;QAsEtD,IAAI,SArEC,CAAS,kBAAC,CAAkB,MAAC,GAAQ,CAAA,EAAG;YAsE3C,SAAS,CArEC,kBAAC,CAAkB,OAAC,CAAO,CAAC,IAAI,MAAA,CAAO,SAAC,CAAS,CAAC,CAAC,CAAC,CAAC;SAsEhE;aArEM,IAAA,SAAK,CAAS,QAAC,CAAQ,aAAC,EAAc;YAsE3C,SAAS,CArEC,QAAC,CAAQ,aAAC,CAAa,MAAC,CAAM,CAAC;SAsE1C;aArEM;YAsEL,MArEM,IAAI,KAAA,CAsEN,CADV,WAAA,EACwB,SArEC,CAAS,SAAC,CAAS,QAAC,CAAQ,WAAC,CAAW,CAoEjE,0GAAA,CApEkE;gBAsExD,CAAV,2BAAA,CAAuC,CArEC,CAAC;SAsEpC;QACD,IAAI,CArEC,QAAC,CAAQ,IAAC,CAAI,SAAC,CAAS,CAAC;KAsE/B;;AApEI,YAAP,CAAA,UAAO,GAAoC;IAsE3C,EArEE,IAAA,EAAM,UAAA,EAAW;CAsElB,CArEC;;;;AAED,YAAD,CAAA,cAAC,GAAA,MAAA;IAwED,EAAC,IAAI,EAAE,QAAQ,GAAG;CACjB,CAAC;AAGF,AAkBA;;;;;;AAMA,AAAA,MAAA,cAAA,CAAA;;;;;;;;;;;;;;;;;IAiBA,SA9FY,CAAA,gBAAA,EA8FZ,GA9FY;;;;;;;;;;;;;IA2GZ,IA/FY,GA+FZ,GA/FY;;;;;;;IAsGZ,cAhGgB,GAgGhB,GAhGgB;;;;;;IAsGhB,UAjGgB,GAiGhB,GAjGgB;;;;;;;;;IA0GhB,UAnGY,CAAA,IAAA,EAmGZ,GAnGY;;;;;;;IA0GZ,UArGY,CAAA,IAAA,EAqGZ,GArGY;;;;;;IA2GZ,SAtGgB,GAsGhB,GAtGgB;;;;;;IA4GhB,QAvGgB,GAuGhB,GAvGgB;CAwGf;;;;;AAKD,AAAA,MAAA,eArGC,SAAA,cAAA,CAqGD;;;;;;;;;IAqBA,WAAA,CA5Gc,KAAO,EAAgB,QAAU,EAAiB,SAAW,EAC7D,iBAAmB,EACnB,yBAA2B,EAC3B,WAAa,EAyG3B;QAOI,KAAK,EAAE,CAAC;QAnHE,IAAd,CAAA,KAAc,GAAA,KAAA,CAAO;QAAgB,IAArC,CAAA,QAAqC,GAAA,QAAA,CAAU;QAAiB,IAAhE,CAAA,SAAgE,GAAA,SAAA,CAAW;QAC7D,IAAd,CAAA,iBAAc,GAAA,iBAAA,CAAmB;QACnB,IAAd,CAAA,yBAAc,GAAA,yBAAA,CAA2B;QAC3B,IAAd,CAAA,WAAc,GAAA,WAAA,CAAa;QAbjB,IAAV,CAAA,mBAAU,GAAgE,EAAA,CAAG;QACnE,IAAV,CAAA,eAAU,GAAuC,EAAA,CAAG;QAC1C,IAAV,CAAA,mBAAU,GAAmC,EAAA,CAAG;QACtC,IAAV,CAAA,MAAU,GAA4B,EAAA,CAAG;QAC/B,IAAV,CAAA,YAAU,GAAwB,KAAA,CAAM;QAC9B,IAAV,CAAA,oBAAU,GAAgC,KAAA,CAAM;QAEtC,IAAV,CAAA,OAAU,GAAU,IAAA,CAAK;QAuHrB,IAAI,CAAC,oBAAoB,GAAG,SAAS,EAAE,CAAC;QAExC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CACjC,EAAC,IAAI,EAAE,MADf,EACuB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MADtC,EAC8C,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC;QAE/D,MAAM,iBAAiB,GAAG,IAAI,UAAU,CAAU,CAAC,QAA2B,KAAlF;YACM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB;gBAClE,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAnC;gBACQ,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5B,QAAQ,CAAC,QAAQ,EAAE,CAAC;aACrB,CAAC,CAAC;SACJ,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAU,CAAC,QAA2B,KAAzE;YACM,MAAM,SAAS,GAAiB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,MAApE;gBACQ,MAAM,CAAC,sBAAsB,EAAE,CAAC;;;gBAIhC,iBAAiB,CAAC,MAA1B;oBACU,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB;wBACjD,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;wBACpC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;wBACpB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACrB;iBACF,CAAC,CAAC;aACJ,CAAC,CAAC;YAEH,MAAM,WAAW,GAAiB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,MAAxE;gBACQ,MAAM,CAAC,mBAAmB,EAAE,CAAC;gBAC7B,IAAI,IAAI,CAAC,OAAO,EAAE;oBAChB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACrB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAvC,EAA+C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;iBAC/D;aACF,CAAC,CAAC;YAEH,OAAO,MAAb;gBACQ,SAAS,CAAC,WAAW,EAAE,CAAC;gBACxB,WAAW,CAAC,WAAW,EAAE,CAAC;aAC3B,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;KACjE;;;;;IAKH,UAlHG,CAAA,OAAA,EAkHH;QACI,uBAlHM,IAAA,KAAO,OAAY,EAAgB,CAAC;QAmH1C,IAAI,CAlHC,MAAC,CAAM,IAAC,CAAI,IAAC,CAAI,CAAC;QAmHvB,IAAI,CAlHC,cAAC,CAAc,IAAC,CAAI,CAAC;KAmH3B;;;;;IAKH,UArHG,CAAA,OAAA,EAqHH;QACI,uBArHM,IAAA,KAAO,OAAY,EAAgB,CAAC;QAsH1C,MAAM,CArHC,IAAC,CAAI,MAAC,EAAO,IAAA,CAAK,CAAC;QAsH1B,IAAI,CArHC,gBAAC,EAAgB,CAAE;KAsHzB;;;;;;IAMH,SAzHG,CAAA,kBAAA,EAyHH;QACI,IAAI,CAzHC,IAAC,CAAI,WAAC,CAAW,IAAC,EAAK;YA0H1B,MAzHM,IAAI,KAAA,CA0HN,+IAA+I,CAzHC,CAAC;SA0HtJ;QACD,qBAzHI,gBAAqC,CAAC;QA0H1C,IAAI,kBAzHC,YAA6B,gBAAA,EAAkB;YA0HlD,gBAAgB,GAzHG,kBAAA,CAAmB;SA0HvC;aAzHM;YA0HL,gBAAgB,KACZ,IAAI,CAzHC,yBAAC,CAAyB,uBAAC,CAAuB,kBAAC,CAAkB,EAAA,CAAG;SA0HlF;QACD,IAAI,CAzHC,mBAAC,CAAmB,IAAC,CAAI,gBAAC,CAAgB,aAAC,CAAa,CAAC;;QA4H9D,uBAzHM,QAAA,GAAW,gBAAA,YAA4B,6BAAA;YA0HzC,IAAI;YACJ,IAAI,CAzHC,SAAC,CAAS,GAAC,CAAG,WAAC,CAAW,CAAC;QA0HpC,uBAzHM,OAAA,GAAU,gBAAA,CAAiB,MAAC,CAAM,QAAC,CAAQ,IAAC,EAAK,EAAA,EAAI,gBAAA,CAAiB,QAAC,EAAS,QAAA,CAAS,CAAC;QA2HhG,OAAO,CAzHC,SAAC,CAAS,MAyHtB,EAzH8B,IAAA,CAAK,gBAAC,CAAgB,OAAC,CAAO,CAAC,EAAC,CAAE,CAAC;QA0H7D,uBAzHM,WAAA,GAAc,OAAA,CAAQ,QAAC,CAAQ,GAAC,CAAG,WAAC,EAAY,IAAA,CAAK,CAAC;QA0H5D,IAAI,WAzHC,EAAY;YA0Hf,OAAO,CAzHC,QAAC,CAAQ,GAAC,CAAG,mBAAC,CAAmB;iBA0HpC,mBAzHC,CAAmB,OAAC,CAAO,QAAC,CAAQ,aAAC,EAAc,WAAA,CAAY,CAAC;SA0HvE;QAED,IAAI,CAzHC,cAAC,CAAc,OAAC,CAAO,CAAC;QA0H7B,IAAI,SAzHC,EAAS,EAAG;YA0Hf,IAAI,CAzHC,QAAC,CAAQ,GAAC,CA0HX,CADV,gGAAA,CAC4G,CAzHC,CAAC;SA0HzG;QACD,OAzHO,OAAA,CAAQ;KA0HhB;;;;;IAvHA,cAAA,CAAA,YAAA,EAAH;QA6HI,IAAI,CA5HC,UAAC,CAAU,YAAC,CAAY,QAAC,CAAQ,CAAC;QA6HvC,IAAI,CA5HC,IAAC,EAAI,CAAE;QA6HZ,IAAI,CA5HC,eAAC,CAAe,IAAC,CAAI,YAAC,CAAY,CAAC;;QA8HxC,uBA5HM,SAAA,GA6HF,IAAI,CA5HC,SAAC,CAAS,GAAC,CAAG,sBAAC,EAAuB,EAAA,CAAG,CAAC,MAAC,CAAM,IAAC,CAAI,mBAAC,CAAmB,CAAC;QA6HpF,SAAS,CA5HC,OAAC,CAAO,CAAC,QAAC,KAAY,QAAA,CAAS,YAAC,CAAY,CAAC,CAAC;KA6HzD;;;;;IA1HA,gBAAA,CAAA,YAAA,EAAH;QAgII,IAAI,CA/HC,UAAC,CAAU,YAAC,CAAY,QAAC,CAAQ,CAAC;QAgIvC,MAAM,CA/HC,IAAC,CAAI,eAAC,EAAgB,YAAA,CAAa,CAAC;KAgI5C;;;;IAIH,IAjIG,GAiIH;QACI,IAAI,IAjIC,CAAI,YAAC,EAAa;YAkIrB,MAjIM,IAAI,KAAA,CAAM,2CAAC,CAA2C,CAAC;SAkI9D;QAED,uBAjIM,KAAA,GAAQ,eAAA,CAAgB,UAAC,EAAU,CAAE;QAkI3C,IAjII;YAkIF,IAAI,CAjIC,YAAC,GAAc,IAAA,CAAK;YAkIzB,IAAI,CAjIC,MAAC,CAAM,OAAC,CAAO,CAAC,IAAC,KAAQ,IAAA,CAAK,aAAC,EAAa,CAAE,CAAC;YAkIpD,IAAI,IAjIC,CAAI,oBAAC,EAAqB;gBAkI7B,IAAI,CAjIC,MAAC,CAAM,OAAC,CAAO,CAAC,IAAC,KAAQ,IAAA,CAAK,cAAC,EAAc,CAAE,CAAC;aAkItD;SACF;QAjIC,OAAA,CAAQ,EAAE;;YAmIV,IAAI,CAjIC,iBAAC,CAAiB,WAAC,CAAW,CAAC,CAAC,CAAC;SAkIvC;gBAjIS;YAkIR,IAAI,CAjIC,YAAC,GAAc,KAAA,CAAM;YAkI1B,QAAQ,CAjIC,KAAC,CAAK,CAAC;SAkIjB;KACF;;;;IAIH,WAnIG,GAmIH;;QAEI,IAAI,CAnIC,MAAC,CAAM,KAAC,EAAK,CAAE,OAAC,CAAO,CAAC,IAAC,KAAQ,IAAA,CAAK,OAAC,EAAO,CAAE,CAAC;KAoIvD;;;;IAIH,IArIG,SAAA,GAqIH,EArIoB,OAAO,IAAA,CAAK,MAAC,CAAM,MAAC,CAAM,EAAC;;;;IAyI/C,IAvIG,cAAA,GAuIH,EAvIsC,OAAO,IAAA,CAAK,mBAAC,CAAmB,EAAC;;;;IA2IvE,IAzIG,UAAA,GAyIH,EAzI0C,OAAO,IAAA,CAAK,eAAC,CAAe,EAAC;;;;IA6IvE,IA3IG,QAAA,GA2IH,EA3IwC,OAAO,IAAA,CAAK,SAAC,CAAS,EAAC;;;;;AA7J5D,eAAH,CAAA,UAAG,GAAA,cAAA,CAAA,uBAAA,CAAA,CAAA;AA8JI,eAAP,CAAA,UAAO,GAAoC;IA4I3C,EA3IE,IAAA,EAAM,UAAA,EAAW;CA4IlB,CA3IC;;;;AAED,eAAD,CAAA,cAAC,GAAA,MAAA;IA8ID,EAAC,IAAI,EAAE,MAAM,GAAG;IAChB,EAAC,IAAI,EAAE,OAAO,GAAG;IACjB,EAAC,IAAI,EAAE,QAAQ,GAAG;IAClB,EAAC,IAAI,EAAE,YAAY,GAAG;IACtB,EAAC,IAAI,EAAE,wBAAwB,GAAG;IAClC,EAAC,IAAI,EAAE,qBAAqB,GAAG;CAC9B,CAAC;AAGF,AA2CA;;;;;;AAMA,SAAA,MAAA,CA9LC,IAAA,EAAA,EAAA,EA8LD;IACE,uBAjNM,KAAA,GAAQ,IAAA,CAAK,OAAC,CAAO,EAAC,CAAE,CAAC;IAkN/B,IAAI,KAjNC,GAAO,CAAA,CAAE,EAAE;QAkNd,IAAI,CAjNC,MAAC,CAAM,KAAC,EAAM,CAAA,CAAE,CAAC;KAkNvB;CACF;;ADtxBD;;;;;;;sBAQsB,AACtB,AAAe;;ADTf;;;;;;;AASA,AAEA;;;AAGA,AAAA,MAAA,mBAAA,CAAA;;;;;;;;;IASA,WAAA,CAPa,EAAI,EAAe,WAAa,EAAe,SAAW,EAC1D,aAAe,EAA0B,MAA2B,EACpE,UAAY,EAKzB;QAPa,IAAb,CAAA,EAAa,GAAA,EAAA,CAAI;QAAe,IAAhC,CAAA,WAAgC,GAAA,WAAA,CAAa;QAAe,IAA5D,CAAA,SAA4D,GAAA,SAAA,CAAW;QAC1D,IAAb,CAAA,aAAa,GAAA,aAAA,CAAe;QAA0B,IAAtD,CAAA,MAAsD,GAAA,MAAA,CAA2B;QACpE,IAAb,CAAA,UAAa,GAAA,UAAA,CAAY;KAAI;CAY5B;AAED,AAeA;;;;AAIA,AAAA,MAAA,eAAA,CAAA;;;;;IAKA,QA/BgB,GA+BhB,GA/BgB;;;;;IAoChB,SAnCgB,GAmChB,GAnCgB;;;;;IAwChB,cAvCgB,GAuChB,GAvCgB;;;;;IA4ChB,UA3CgB,GA2ChB,GA3CgB;;;;;IAgDhB,OA/CgB,GA+ChB,GA/CgB;;;;;IAoDhB,MAnDgB,GAmDhB,GAnDgB;CAoDf;;;;;AAgBD,AAAA,MAAA,QAAA,CAAA;;;;;;;IAOA,iBAzDY,CAAA,cAAA,EAAA,SAAA,EAyDZ,GAzDY;;;;;;;;IAiEZ,aA/DY,CAAA,aAAA,EAAA,IAAA,EAAA,SAAA,EA+DZ,GA/DY;;;;;;IAqEZ,cAnEY,CAAA,WAAA,EAmEZ,GAnEY;;;;;;;IA0EZ,oBAxEY,CAAA,aAAA,EAAA,SAAA,EAwEZ,GAxEY;;;;;;;;IAgFZ,UA9EY,CAAA,aAAA,EAAA,KAAA,EAAA,SAAA,EA8EZ,GA9EY;;;;;;;IAqFZ,YAnFY,CAAA,aAAA,EAAA,KAAA,EAmFZ,GAnFY;;;;;;;IA0FZ,eAxFY,CAAA,IAAA,EAAA,aAAA,EAwFZ,GAxFY;;;;;;IA8FZ,UA5FY,CAAA,aAAA,EA4FZ,GA5FY;;;;;;;IAmGZ,WAjGY,CAAA,WAAA,EAAA,YAAA,EAiGZ,GAjGY;;;;;;;;IAyGZ,MAvGY,CAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAuGZ,GAvGY;;;;;;;;IA+GZ,YA7GY,CAAA,MAAA,EAAA,IAAA,EAAA,QAAA,EA6GZ,GA7GY;;;;;;;;IAqHZ,kBAnHY,CAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAmHZ,GAnHY;;;;;;;;IA2HZ,mBAzHY,CAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAyHZ,GAzHY;;;;;;;;;IAkIZ,mBA5HY,CAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EA4HZ,GA5HY;;;;;;;;IAoIZ,eAjIY,CAAA,aAAA,EAAA,SAAA,EAAA,KAAA,EAiIZ,GAjIY;;;;;;;;IAyIZ,eAvIY,CAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAuIZ,GAvIY;;;;;;;;IA+IZ,mBA7IY,CAAA,aAAA,EAAA,UAAA,EAAA,IAAA,EA6IZ,GA7IY;;;;;;;IAoJZ,OAlJY,CAAA,UAAA,EAAA,IAAA,EAkJZ,GAlJY;;;;;;;;;;;;IA8JZ,OA5JY,CA6JN,OAAY,EAAE,cAAmB,EAAE,SAAgB,EAAE,QAAgB,EAAE,KAAa,EACpF,MAAc,EAAE,eAAuB,EAF7C,GAEiD;CAChD;AAED,AA5JO,MAAM,oBAAA,GAAuB,IAAI,cAAA,CAA2B,sBAAE,CAAsB,CAAC;;;;;;;;;;;;;;;;AA4K5F,AAAA,MAAA,YAAA,CAAA;;;;;;IAMA,eAjKY,CAAA,aAAA,EAiKZ,GAjKY;CAkKX;;;;;AAeD,AAAA,MAAA,gBAAA,CAAA;;;;;;;IAOA,cAvKY,CAAA,WAAA,EAAA,IAAA,EAuKZ,GAvKY;CAwKX;AAED,AAAO,IAAI,mBAAmB,GAAQ,EAAE,CAAC;AACzC,mBAAmB,CAAC,SAAS,GAAG,CAAC,CAAC;AAClC,mBAAmB,CAAC,QAAQ,GAAG,CAAC,CAAC;AACjC,mBAAmB,CAAC,mBAAmB,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;AACjE,mBAAmB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;;;;;AAM/D,AAAA,MAAA,SAAA,CAAA;;;;;;;IAOA,IAxKgB,GAwKhB,GAxKgB;;;;;IA6KhB,OA3KY,GA2KZ,GA3KY;;;;;;;IAkLZ,aAjLY,CAAA,IAAA,EAAA,SAAA,EAiLZ,GAjLY;;;;;;IAuLZ,aAtLY,CAAA,KAAA,EAsLZ,GAtLY;;;;;;IA4LZ,UA3LY,CAAA,KAAA,EA2LZ,GA3LY;;;;;;;IAwMZ,WAjMY,CAAA,MAAA,EAAA,QAAA,EAiMZ,GAjMY;;;;;;;;IAyMZ,YAxMY,CAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAwMZ,GAxMY;;;;;;;IA+MZ,WA9MY,CAAA,MAAA,EAAA,QAAA,EA8MZ,GA9MY;;;;;;IAoNZ,iBAnNY,CAAA,cAAA,EAmNZ,GAnNY;;;;;;;;;IA4NZ,UAtNY,CAAA,IAAA,EAsNZ,GAtNY;;;;;;;;;IA+NZ,WAzNY,CAAA,IAAA,EAyNZ,GAzNY;;;;;;;;;IAkOZ,YAjOY,CAAA,EAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAiOZ,GAjOY;;;;;;;;IAyOZ,eAxOY,CAAA,EAAA,EAAA,IAAA,EAAA,SAAA,EAwOZ,GAxOY;;;;;;;IA+OZ,QA9OY,CAAA,EAAA,EAAA,IAAA,EA8OZ,GA9OY;;;;;;;IAqPZ,WApPY,CAAA,EAAA,EAAA,IAAA,EAoPZ,GApPY;;;;;;;;;IA6PZ,QA5PY,CAAA,EAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EA4PZ,GA5PY;;;;;;;;IAoQZ,WAnQY,CAAA,EAAA,EAAA,KAAA,EAAA,KAAA,EAmQZ,GAnQY;;;;;;;;IA2QZ,WA1QY,CAAA,EAAA,EAAA,IAAA,EAAA,KAAA,EA0QZ,GA1QY;;;;;;;IAiRZ,QAhRY,CAAA,IAAA,EAAA,KAAA,EAgRZ,GAhRY;;;;;;;;IAwRZ,MAvRY,CAwRN,MAAsC,EAAE,SAAiB,EACzD,QAAwC,EAF9C,GAEkD;CACjD,AAED,AAQC;;AD3dD;;;;;;;wBAQwB,AACxB,AAAqH;;ADRrH,MAAA,UAAA,CAAA;;;;IAyBA,WAAA,CAoBG,aAA0B,EApB7B,EAoBiC,IAAA,CAAA,aAAA,GAAA,aAAA,CAAA,EAAA;CAnBhC,AAED,AAuBC;;ADpDD;;;;;;;;;;;;AAeA,AAAA,MAAA,qBAAA,CAAA;;;;;;IAMA,IANY,CAAA,IAAA,EAMZ,GANY;CAOX;AAED,IANI,eAAA,GAAkB,IAAI,GAAA,EAAiC,CAAG;;;;;;;;AAc9D,AAAA,SAAA,qBAAA,CARC,EAAA,EAAA,OAAA,EAQD;IACE,uBARM,QAAA,GAAW,eAAA,CAAgB,GAAC,CAAG,EAAC,CAAE,CAAC;IASzC,IAAI,QARC,EAAS;QASZ,MARM,IAAI,KAAA,CAAM,CAQpB,gCAAA,EARqB,EASD,CADpB,GAAA,EAC0B,QARC,CAAQ,UAAC,CAAU,IAAC,CAO/C,IAAA,EAPmD,OAAO,CAAO,UAAC,CAAU,IAAC,CAO7E,CAPiF,CAAE,CAAC;KASjF;IACD,eAAe,CARC,GAAC,CAAG,EAAC,EAAG,OAAA,CAAQ,CAAC;CASlC;;;;AAID,AAAA,AAEC;;;;;;;;;AASD,AAAA,SAAA,gBAAA,CAXC,EAAA,EAWD;IACE,uBAXM,OAAA,GAAU,eAAA,CAAgB,GAAC,CAAG,EAAC,CAAE,CAAC;IAYxC,IAAI,CAXC,OAAC;QAAQ,MAAM,IAAI,KAAA,CAAM,CAAhC,kBAAA,EAAiC,EAAqB,CAAtD,OAAA,CAAwD,CAAS,CAAC;IAYhE,OAXO,OAAA,CAAQ;CAYhB;;AD1DD;;;;;;;AAWA,AACA,AACA;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,AAAA,MAAA,SAAA,CAAA;IAAA,WAAA,GAAA;QAEU,IAAV,CAAA,MAAU,GAAS,IAAA,CAAK;QACd,IAAV,CAAA,QAAU,GAAqB,EAAA,CAAG;QACxB,IAAV,CAAA,QAAU,GAAW,IAAI,YAAA,EAAa,CAAE;KAuGvC;;;;IApGD,IADG,OAAA,GACH,EADmC,OAAO,IAAA,CAAK,QAAC,CAAQ,EAAC;;;;IAKzD,IAJG,MAAA,GAIH,EAJyB,OAAO,IAAA,CAAK,QAAC,CAAQ,MAAC,CAAM,EAAC;;;;IAQtD,IAPG,KAAA,GAOH,EAPmB,OAAO,IAAA,CAAK,QAAC,CAAQ,CAAC,CAAC,CAAC,EAAC;;;;IAW5C,IAVG,IAAA,GAUH,EAVkB,OAAO,IAAA,CAAK,QAAC,CAAQ,IAAC,CAAI,MAAC,GAAQ,CAAA,CAAE,CAAC,EAAC;;;;;;;;IAkBzD,GAZG,CAAA,EAAA,EAYH,EAZ+D,OAAO,IAAA,CAAK,QAAC,CAAQ,GAAC,CAAG,EAAC,CAAE,CAAC,EAAC;;;;;;;IAmB7F,MAbG,CAAA,EAAA,EAaH;QACI,OAbO,IAAA,CAAK,QAAC,CAAQ,MAAC,CAAM,EAAC,CAAE,CAAC;KAcjC;;;;;;;IAOH,IAdG,CAAA,EAAA,EAcH;QACI,OAdO,IAAA,CAAK,QAAC,CAAQ,IAAC,CAAI,EAAC,CAAE,CAAC;KAe/B;;;;;;;;;IASH,MAjBG,CAAA,EAAA,EAAA,IAAA,EAiBH;QACI,OAjBO,IAAA,CAAK,QAAC,CAAQ,MAAC,CAAM,EAAC,EAAG,IAAA,CAAK,CAAC;KAkBvC;;;;;;;IAOH,OAlBG,CAAA,EAAA,EAkBH,EAlBoE,IAAA,CAAK,QAAC,CAAQ,OAAC,CAAO,EAAC,CAAE,CAAC,EAAC;;;;;;;IAyB/F,IAnBG,CAAA,EAAA,EAmBH;QACI,OAnBO,IAAA,CAAK,QAAC,CAAQ,IAAC,CAAI,EAAC,CAAE,CAAC;KAoB/B;;;;IAIH,OArBG,GAqBH,EArBmB,OAAO,IAAA,CAAK,QAAC,CAAQ,KAAC,EAAK,CAAE,EAAC;;;;IAyBjD,CAvBG,iBAAA,EAAA,CAAA,GAuBH,EAvByC,OAAO,EAAA,IAAE,CAAI,QAAY,GAAK,iBAAC,EAAiB,CAAE,EAAC,CAAE,EAAC;;;;IA2B/F,QAzBG,GAyBH,EAzBuB,OAAO,IAAA,CAAK,QAAC,CAAQ,QAAC,EAAQ,CAAE,EAAC;;;;;IA8BxD,KA5BG,CAAA,GAAA,EA4BH;QACI,IAAI,CA5BC,QAAC,GAAU,OAAA,CAAQ,GAAC,CAAG,CAAC;QA6B7B,IAAI,CA5BC,MAAC,GAAQ,KAAA,CAAM;KA6BrB;;;;IAIH,eA9BG,GA8BH,EA9B4B,IAAA,CAAK,QAAC,CAAQ,IAAC,CAAI,IAAC,CAAI,CAAC,EAAC;;;;;IAmCtD,QAhCG,GAgCH,EAhCe,IAAA,CAAK,MAAC,GAAQ,IAAA,CAAK,EAAC;;;;;IAqCnC,IAlCG,KAAA,GAkCH,EAlCgB,OAAO,IAAA,CAAK,MAAC,CAAM,EAAC;CAmCnC;AAED,AASA;;;;;AAKA,SAAA,OAAA,CAhDC,IAAA,EAgDD;IACE,OAhDO,IAAA,CAAK,MAAC,CAAM,CAAC,IAAU,EAAG,IAAY,KAgD/C;QACI,uBAhDM,QAAA,GAAW,KAAA,CAAM,OAAC,CAAO,IAAC,CAAI,GAAG,OAAA,CAAQ,IAAC,CAAI,GAAG,IAAA,CAAK;QAiD5D,OAhDO,EAAM,IAAC,GAAK,MAAC,CAAM,QAAC,CAAQ,CAAC;KAiDrC,EAhDE,EAAA,CAAG,CAAC;CAiDR;;ADrKD;;;;;;;AAUA,AAEA,AAIA,MADM,UAAA,GAAa,GAAA,CAAI;AAGvB,MADM,oBAAA,GAAuB,WAAA,CAAY;;;;;;;;AASzC,AAAA,MAAA,4BAAA,CAAA;CAUC;AAED,AAcA,MAfM,cAAA,GAA+C;IAgBnD,iBAAiB,EAfE,EAAA;IAgBnB,iBAAiB,EAfE,YAAA;CAgBpB,CAfC;;;;;AAoBF,AAAA,MAAA,sBAAA,CAAA;;;;;IAMA,WAAA,CAhBsB,SAAW,EAAU,MAAU,EAgBrD;QAhBsB,IAAtB,CAAA,SAAsB,GAAA,SAAA,CAAW;QAiB7B,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,cAAc,CAAC;KACzC;;;;;IAKH,IAnBG,CAAA,IAAA,EAmBH;QACI,uBAnBM,WAAA,GAAc,IAAA,CAAK,SAAC,YAAoB,QAAA,CAAS;QAoBvD,OAnBO,WAAA,GAAc,IAAA,CAAK,WAAC,CAAW,IAAC,CAAI,GAAG,IAAA,CAAK,cAAC,CAAc,IAAC,CAAI,CAAC;KAoBzE;;;;;IAjBA,cAAA,CAAA,IAAA,EAAH;QAuBI,IAtBI,CAAA,MAAE,EAAO,UAAA,CAAW,GAAG,IAAA,CAAK,KAAC,CAAK,UAAC,CAAU,CAAC;QAuBlD,IAAI,UAtBC,KAAc,SAAA,EAAW;YAuB5B,UAAU,GAtBG,SAAA,CAAU;SAuBxB;QAED,OAtBO,MAAA,CAAO,MAAC,CAAM,MAAC,CAAM;aAuBvB,IAtBC,CAAI,CAAC,MAAQ,KAAQ,MAAA,CAAO,UAAC,CAAU,CAAC;aAuBzC,IAtBC,CAAI,CAAC,IAAM,KAAQ,aAAA,CAAc,IAAC,EAAK,MAAA,EAAQ,UAAA,CAAW,CAAC;aAuB5D,IAtBC,CAAI,CAAC,IAAM,KAAQ,IAAA,CAAK,SAAC,CAAS,kBAAC,CAAkB,IAAC,CAAI,CAAC,CAAC;KAepE;;;;;IAZC,WAAA,CAAA,IAAA,EAAH;QA0BI,IAzBI,CAAA,MAAE,EAAO,UAAA,CAAW,GAAG,IAAA,CAAK,KAAC,CAAK,UAAC,CAAU,CAAC;QAkBpD,qBAjBM,kBAAA,GAAqB,oBAAA,CAAqB;QA0B9C,IAAI,UAzBC,KAAc,SAAA,EAAW;YA0B5B,UAAU,GAzBG,SAAA,CAAU;YA0BvB,kBAAkB,GAzBG,EAAA,CAAG;SA0BzB;QAED,OAzBO,MAAA,CAAO,MAAC,CAAM,IAAC,CAAI,OAAC,CAAO,iBAAC,GAAmB,MAAA,GAAS,IAAA,CAAK,OAAC,CAAO,iBAAC,CAAiB;aA0BzF,IAzBC,CAAI,CAAC,MAAQ,KAAQ,MAAA,CAAO,UAAC,GAAY,kBAAA,CAAmB,CAAC;aA0B9D,IAzBC,CAAI,CAAC,OAAS,KAAQ,aAAA,CAAc,OAAC,EAAQ,MAAA,EAAQ,UAAA,CAAW,CAAC,CAAC;KA0BzE;;AAxBI,sBAAP,CAAA,UAAO,GAAoC;IA0B3C,EAzBE,IAAA,EAAM,UAAA,EAAW;CA0BlB,CAzBC;;;;AAED,sBAAD,CAAA,cAAC,GAAA,MAAA;IA4BD,EAAC,IAAI,EAAE,QAAQ,GAAG;IAClB,EAAC,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAG,EAAC;CACvE,CAAC;AAGF,AAcA;;;;;;AAMA,SAAA,aAAA,CA/CC,KAAA,EAAA,UAAA,EAAA,UAAA,EA+CD;IACE,IAAI,CAvDC,KAAC,EAAM;QAwDV,MAvDM,IAAI,KAAA,CAAM,CAuDpB,aAAA,EAvDqB,UAAgB,CAuDrC,MAAA,EAvD+C,UAAS,CAuDxD,CAAA,CAvDkE,CAAG,CAAC;KAwDnE;IACD,OAvDO,KAAA,CAAM;CAwDd;;ADjJD;;;;;;;;;;;;;;;;;;;;;AAyBA,AAAA,MAAA,WAAA,CAAA;;;;;IAKA,UAQgB,GARhB,GAQgB;;;;;;IAFhB,kBAIY,CAAA,OAAA,EAJZ,GAIY;CAHX;;ADrCD;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,AAAA,MAAA,gBAAA,CAAA;;;;;;;IAOA,OAFgB,GAEhB,GAFgB;;;;;IAOhB,QALgB,GAKhB,GALgB;;;;;IAUhB,cARgB,GAQhB,GARgB;;;;;;IAchB,KATY,GASZ,GATY;;;;;;;IAgBZ,GAXY,CAAA,KAAA,EAWZ,GAXY;;;;;;IAiBZ,MAZgB,GAYhB,GAZgB;;;;;;;;;;;;;;;IA2BhB,kBAjBY,CAAA,WAAA,EAAA,OAAA,EAAA,KAAA,EAiBZ,GAjBY;;;;;;;;;;;;;;;;;;;;;;IAuCZ,eAvBY,CAwBN,gBAAqC,EAAE,KAAc,EAAE,QAAmB,EAC1E,gBAA0B,EAAE,QAA2B,EAF7D,GAEiE;;;;;;;;;;;;IAYjE,MA1BY,CAAA,OAAA,EAAA,KAAA,EA0BZ,GA1BY;;;;;;;;;;IAoCZ,IA7BY,CAAA,OAAA,EAAA,YAAA,EA6BZ,GA7BY;;;;;;;;IAqCZ,OA/BY,CAAA,OAAA,EA+BZ,GA/BY;;;;;;;;;IAwCZ,MAjCY,CAAA,KAAA,EAiCZ,GAjCY;;;;;;;;;IA0CZ,MAnCY,CAAA,KAAA,EAmCZ,GAnCY;CAoCX;;AD7JD;;;;AAIA,AAAA,MAAA,iBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuCA,YAIY,GAJZ,GAIY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoDZ,MAGY,GAHZ,GAGY;;;;;;;;;;;;;;;;;;;;;;;;;IAsBZ,aAEY,GAFZ,GAEY;;;;;;;;;IAOZ,cACY,GADZ,GACY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwDZ,QAAY,GAAZ,GAAY;CACX;;ADhMD;;;;;;;AAUA,AACA;;;;AAIA,AAAA,MAAA,OAAC,SAAA,iBAAA,CAAD;;;;;;IAMA,OAFY,GAEZ,GAFY;;;;;IAOZ,SALgB,GAKhB,GALgB;;;;;;IAWhB,SATY,CAAA,QAAA,EASZ,GATY;CAUX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDD,AAAA,MAAA,eATC,SAAA,OAAA,CASD;;;;;IAKA,OAbgB,GAahB,GAbgB;;;;;IAkBhB,SAhBgB,GAgBhB,GAhBgB;CAiBf;;ADpGD;;;;;;;0BAQ0B,AAC1B,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AAAiC;;ADnBjC;;;;;;;AAWA,AAAA,MAAA,aAAA,CAAA;;;;;IAKA,WAAA,CALgD,IAAM,EAAe,QAAU,EAK/E;QALgD,IAAhD,CAAA,IAAgD,GAAA,IAAA,CAAM;QAAe,IAArE,CAAA,QAAqE,GAAA,QAAA,CAAU;KAAS;;CAAI;AAQ5F,AAOA;;;AAGA,AAAA,MAAA,SAAA,CAAA;;;;;;IASA,WAAA,CAjBG,UAAuB,EAAK,MAAmB,EAAa,aAAe,EAiB9E;QAjB+D,IAA/D,CAAA,aAA+D,GAAA,aAAA,CAAe;QAmB1E,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,MAAM,IAAI,MAAM,YAAY,YAAY,EAAE;YAC5C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACvB;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;QACD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;;;;IAIH,IApBG,QAAA,GAoBH,EApB6B,OAAO,IAAA,CAAK,aAAC,CAAa,QAAC,CAAQ,EAAC;;;;IAwBjE,IAtBG,iBAAA,GAsBH,EAtBiC,OAAO,IAAA,CAAK,aAAC,CAAa,SAAC,CAAS,EAAC;;;;IA0BtE,IAxBG,OAAA,GAwBH,EAxBuB,OAAO,IAAA,CAAK,aAAC,CAAa,OAAC,CAAO,EAAC;;;;IA4B1D,IA1BG,UAAA,GA0BH,EA1B2C,OAAO,IAAA,CAAK,aAAC,CAAa,UAAC,CAAU,EAAC;;;;IA8BjF,IA5BG,cAAA,GA4BH,EA5BgC,OAAO,IAAA,CAAK,aAAC,CAAa,cAAC,CAAc,EAAC;;;;;IAiC1E,IA5BG,MAAA,GA4BH,EA5ByB,OAAO,qBAAA,CAAsB,EAAC;CA6BtD;AAED,AAWA;;;AAGA,AAAA,MAAA,YAvCC,SAAA,SAAA,CAuCD;;;;;;IAaA,WAAA,CA3CG,UAAuB,EAAK,MAAQ,EAAK,aAAe,EA2C3D;QACI,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;KACjC;;;;;IAKH,QA9CG,CAAA,KAAA,EA8CH;QACI,IAAI,KA9CC,EAAM;YA+CT,IAAI,CA9CC,UAAC,CAAU,IAAC,CAAI,KAAC,CAAK,CAAC;YA+C5B,KAAK,CA9CC,MAAC,GAAQ,IAAA,CAAK;SA+CrB;KACF;;;;;IAKH,WAjDG,CAAA,KAAA,EAiDH;QACI,uBAjDM,UAAA,GAAa,IAAA,CAAK,UAAC,CAAU,OAAC,CAAO,KAAC,CAAK,CAAC;QAkDlD,IAAI,UAjDC,KAAc,CAAA,CAAE,EAAE;YAkDrB,KAAK,CAjDC,MAAC,GAAQ,IAAA,CAAK;YAkDpB,IAAI,CAjDC,UAAC,CAAU,MAAC,CAAM,UAAC,EAAW,CAAA,CAAE,CAAC;SAkDvC;KACF;;;;;;IAMH,mBArDG,CAAA,KAAA,EAAA,WAAA,EAqDH;QACI,uBArDM,YAAA,GAAe,IAAA,CAAK,UAAC,CAAU,OAAC,CAAO,KAAC,CAAK,CAAC;QAsDpD,IAAI,YArDC,KAAgB,CAAA,CAAE,EAAE;YAsDvB,IAAI,CArDC,UAAC,CAAU,MAAC,CAAM,YAAC,GAAc,CAAA,EAAG,CAAA,EAAG,GAAA,WAAI,CAAW,CAAC;YAsD5D,WAAW,CArDC,OAAC,CAAO,CAAC,IAqD3B;gBACQ,IAAI,CArDC,CAAC,MAAC,EAAO;oBAsDZ,CAAC,CArDC,MAAC,CAAM,WAAC,CAAW,CAAC,CAAC,CAAC;iBAsDzB;gBACD,CAAC,CArDC,MAAC,GAAQ,IAAA,CAAK;aAsDjB,CArDC,CAAC;SAsDJ;KACF;;;;;;IAMH,YAzDG,CAAA,QAAA,EAAA,QAAA,EAyDH;QACI,uBAzDM,QAAA,GAAW,IAAA,CAAK,UAAC,CAAU,OAAC,CAAO,QAAC,CAAQ,CAAC;QA0DnD,IAAI,QAzDC,KAAY,CAAA,CAAE,EAAE;YA0DnB,IAAI,CAzDC,QAAC,CAAQ,QAAC,CAAQ,CAAC;SA0DzB;aAzDM;YA0DL,IAAI,QAzDC,CAAQ,MAAC,EAAO;gBA0DnB,QAAQ,CAzDC,MAAC,CAAM,WAAC,CAAW,QAAC,CAAQ,CAAC;aA0DvC;YACD,QAAQ,CAzDC,MAAC,GAAQ,IAAA,CAAK;YA0DvB,IAAI,CAzDC,UAAC,CAAU,MAAC,CAAM,QAAC,EAAS,CAAA,EAAG,QAAA,CAAS,CAAC;SA0D/C;KACF;;;;;IAKH,KA5DG,CAAA,SAAA,EA4DH;QACI,uBA5DM,OAAA,GAAU,IAAA,CAAK,QAAC,CAAQ,SAAC,CAAS,CAAC;QA6DzC,OA5DO,OAAA,CAAQ,CAAC,CAAC,IAAI,IAAA,CAAK;KA6D3B;;;;;IAKH,QA/DG,CAAA,SAAA,EA+DH;QACI,uBA/DM,OAAA,GAA0B,EAAA,CAAG;QAgEnC,qBAAqB,CA/DC,IAAC,EAAK,SAAA,EAAW,OAAA,CAAQ,CAAC;QAgEhD,OA/DO,OAAA,CAAQ;KAgEhB;;;;;IAKH,aAlEG,CAAA,SAAA,EAkEH;QACI,uBAlEM,OAAA,GAAuB,EAAA,CAAG;QAmEhC,kBAAkB,CAlEC,IAAC,EAAK,SAAA,EAAW,OAAA,CAAQ,CAAC;QAmE7C,OAlEO,OAAA,CAAQ;KAmEhB;;;;IAIH,IApEG,QAAA,GAoEH;QACI,QApEO,IAAA,CAAK,UAAC,CAAU,MAAC,CAAM,CAAC,IAAC,KAAQ,IAAA,YAAgB,YAAA,CAA8B,EAAE;KAqEzF;;;;;;IAMH,mBAxEG,CAAA,SAAA,EAAA,QAAA,EAwEH;QACI,IAAI,CAxEC,SAAC,CAAS,OAAC,CAAO,CAAC,QAAC,KAwE7B;YACM,IAAI,QAxEC,CAAQ,IAAC,IAAO,SAAA,EAAW;gBAyE9B,QAAQ,CAxEC,QAAC,CAAQ,QAAC,CAAQ,CAAC;aAyE7B;SACF,CAxEC,CAAC;KAyEJ;CACF;AAED,AAiBA;;;;;AAKA,AAAA,SAAA,gBAAA,CA3FC,QAAA,EA2FD;IACE,OA3FO,QAAA,CAAS,GAAC,CAAG,CAAC,EAAC,KAAM,EAAA,CAAG,aAAC,CAAa,CAAC;CA4F/C;;;;;;;AAOD,SAAA,qBAAA,CACI,OAAqB,EAAE,SAAkC,EAAE,OAAuB,EADtF;IAEE,OAAO,CAhGC,UAAC,CAAU,OAAC,CAAO,IAAC,IAgG9B;QACI,IAAI,IAhGC,YAAe,YAAA,EAAc;YAiGhC,IAAI,SAhGC,CAAS,IAAC,CAAI,EAAE;gBAiGnB,OAAO,CAhGC,IAAC,CAAI,IAAC,CAAI,CAAC;aAiGpB;YACD,qBAAqB,CAhGC,IAAC,EAAK,SAAA,EAAW,OAAA,CAAQ,CAAC;SAiGjD;KACF,CAhGC,CAAC;CAiGJ;;;;;;;AAOD,SAAA,kBAAA,CACI,UAAqB,EAAE,SAA+B,EAAE,OAAoB,EADhF;IAEE,IAAI,UArGC,YAAqB,YAAA,EAAc;QAsGtC,UAAU,CArGC,UAAC,CAAU,OAAC,CAAO,IAAC,IAqGnC;YACM,IAAI,SArGC,CAAS,IAAC,CAAI,EAAE;gBAsGnB,OAAO,CArGC,IAAC,CAAI,IAAC,CAAI,CAAC;aAsGpB;YACD,IAAI,IArGC,YAAe,YAAA,EAAc;gBAsGhC,kBAAkB,CArGC,IAAC,EAAK,SAAA,EAAW,OAAA,CAAQ,CAAC;aAsG9C;SACF,CArGC,CAAC;KAsGJ;CACF;;AAGD,MArGM,sBAAA,GAAyB,IAAI,GAAA,EAAmB,CAAG;;;;;;AA2GzD,AAAA,SAAA,YAAA,CAtGC,UAAA,EAsGD;IACE,OAtGO,sBAAA,CAAuB,GAAC,CAAG,UAAC,CAAU,IAAI,IAAA,CAAK;CAuGvD;;;;AAID,AAAA,AAEC;;;;;AAKD,AAAA,SAAA,cAAA,CA3GC,IAAA,EA2GD;IACE,sBAAsB,CA3GC,GAAC,CAAG,IAAC,CAAI,UAAC,EAAW,IAAA,CAAK,CAAC;CA4GnD;;;;;AAKD,AAAA,SAAA,wBAAA,CA9GC,IAAA,EA8GD;IACE,sBAAsB,CA9GC,MAAC,CAAM,IAAC,CAAI,UAAC,CAAU,CAAC;CA+GhD;;AD/SD;;;;;;;AASA,AACA;;;;;AAKA,AAAA,SAAA,YAAA,CALC,CAAA,EAAA,CAAA,EAKD;IACE,uBALM,mBAAA,GAAsB,kBAAA,CAAmB,CAAC,CAAC,CAAC;IAMlD,uBALM,mBAAA,GAAsB,kBAAA,CAAmB,CAAC,CAAC,CAAC;IAMlD,IAAI,mBALC,IAAsB,mBAAA,EAAqB;QAM9C,OALO,iBAAA,CAAkB,CAAC,EAAE,CAAA,EAAG,YAAA,CAAa,CAAC;KAM9C;SALM;QAML,uBALM,SAAA,GAAY,CAAA,KAAK,OAAQ,CAAA,KAAM,QAAA,IAAY,OAAO,CAAA,KAAM,UAAA,CAAW,CAAC;QAM1E,uBALM,SAAA,GAAY,CAAA,KAAK,OAAQ,CAAA,KAAM,QAAA,IAAY,OAAO,CAAA,KAAM,UAAA,CAAW,CAAC;QAM1E,IAAI,CALC,mBAAC,IAAsB,SAAA,IAAa,CAAA,mBAAE,IAAsB,SAAA,EAAW;YAM1E,OALO,IAAA,CAAK;SAMb;aALM;YAML,OALO,cAAA,CAAe,CAAC,EAAE,CAAA,CAAE,CAAC;SAM7B;KACF;CACF;;;;;;;;;;;;;;;;;;;;AAoBD,AAAA,MAAA,YAAA,CAAA;;;;IAIA,WAAA,CAPqB,OAAS,EAO9B;QAPqB,IAArB,CAAA,OAAqB,GAAA,OAAA,CAAS;KAAI;;;;;IAYlC,OAVG,IAAA,CAAA,KAAA,EAUH,EAV0C,OAAO,IAAI,YAAA,CAAa,KAAC,CAAK,CAAC,EAAC;CAWzE;AAED,AAKA;;;AAGA,AAAA,MAAA,cAAA,CAAA;IAAA,WAAA,GAAA;QAdS,IAAT,CAAA,eAAS,GAAkB,KAAA,CAAM;KA+BhC;;;;;IAXD,MAlBG,CAAA,KAAA,EAkBH;QACI,IAAI,KAlBC,YAAgB,YAAA,EAAc;YAmBjC,IAAI,CAlBC,eAAC,GAAiB,IAAA,CAAK;YAmB5B,OAlBO,KAAA,CAAM,OAAC,CAAO;SAmBtB;QACD,OAlBO,KAAA,CAAM;KAmBd;;;;IAIH,KApBG,GAoBH,EApBY,IAAA,CAAK,eAAC,GAAiB,KAAA,CAAM,EAAC;CAqBzC;AAED,AAKA;;;;AAIA,AAAA,MAAA,YAAA,CAAA;;;;;;IAMA,WAAA,CA9BqB,aAAe,EAAY,YAAc,EAAY,WAAa,EA8BvF;QA9BqB,IAArB,CAAA,aAAqB,GAAA,aAAA,CAAe;QAAY,IAAhD,CAAA,YAAgD,GAAA,YAAA,CAAc;QAAY,IAA1E,CAAA,WAA0E,GAAA,WAAA,CAAa;KAAQ;;;;;IAqC/F,aAhCG,GAgCH,EAhC6B,OAAO,IAAA,CAAK,WAAC,CAAW,EAAC;CAiCrD;AAED,AASA;;;;AAIA,AAAA,SAAA,kBAAA,CA7CC,GAAA,EA6CD;IACE,IAAI,CA7CC,UAAC,CAAU,GAAC,CAAG;QAAE,OAAO,KAAA,CAAM;IA8CnC,OA7CO,KAAA,CAAM,OAAC,CAAO,GAAC,CAAG;SA8CpB,EA7CE,GAAC,YAAc,GAAA,CAAI;YA8CrB,iBAAiB,EA7CC,IAAK,GAAA,CAAI,CAAC;CA8ClC;;;;;;;AAOD,AAAA,SAAA,iBAAA,CACI,CAAM,EAAE,CAAM,EAAE,UAAuC,EAD3D;IAEE,uBAlDM,SAAA,GAAY,CAAA,CAAE,iBAAC,EAAiB,CAAE,EAAC,CAAE;IAmD3C,uBAlDM,SAAA,GAAY,CAAA,CAAE,iBAAC,EAAiB,CAAE,EAAC,CAAE;IAoD3C,OAAO,IAlDC,EAAK;QAmDX,uBAlDM,KAAA,GAAQ,SAAA,CAAU,IAAC,EAAI,CAAE;QAmD/B,uBAlDM,KAAA,GAAQ,SAAA,CAAU,IAAC,EAAI,CAAE;QAmD/B,IAAI,KAlDC,CAAK,IAAC,IAAO,KAAA,CAAM,IAAC;YAAK,OAAO,IAAA,CAAK;QAmD1C,IAAI,KAlDC,CAAK,IAAC,IAAO,KAAA,CAAM,IAAC;YAAK,OAAO,KAAA,CAAM;QAmD3C,IAAI,CAlDC,UAAC,CAAU,KAAC,CAAK,KAAC,EAAM,KAAA,CAAM,KAAC,CAAK;YAAE,OAAO,KAAA,CAAM;KAmDzD;CACF;;;;;;AAMD,AAAA,SAAA,eAAA,CAtDC,GAAA,EAAA,EAAA,EAsDD;IACE,IAAI,KAtDC,CAAK,OAAC,CAAO,GAAC,CAAG,EAAE;QAuDtB,KAAK,qBAtDI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,MAAC,EAAO,CAAA,EAAE,EAAG;YAuDnC,EAAE,CAtDC,GAAC,CAAG,CAAC,CAAC,CAAC,CAAC;SAuDZ;KACF;SAtDM;QAuDL,uBAtDM,QAAA,GAAW,GAAA,CAAI,iBAAC,EAAiB,CAAE,EAAC,CAAE;QAuD5C,qBAtDI,IAAM,CAAI;QAuDd,OAAO,EAtDE,CAAC,IAAC,GAAM,QAAA,CAAS,IAAC,EAAI,EAAG,IAAC,CAAI,EAAE;YAuDvC,EAAE,CAtDC,IAAC,CAAI,KAAC,CAAK,CAAC;SAuDhB;KACF;CACF;;;;;AAKD,AAAA,SAAA,UAAA,CAzDC,CAAA,EAyDD;IACE,OAzDO,CAAA,KAAM,IAAA,KAAQ,OAAQ,CAAA,KAAM,UAAA,IAAc,OAAO,CAAA,KAAM,QAAA,CAAS,CAAC;CA0DzE;;AD/KD;;;;;;;AASA,AACA,AAIA,AAAA,MAAA,4BAAA,CAAA;IACA,WAAA,GAAA,GACG;;;;;IAIH,QAHG,CAAA,GAAA,EAGH,EAHkD,OAAO,kBAAA,CAAmB,GAAC,CAAG,CAAC,EAAC;;;;;;;;IAalF,MANG,CAAA,cAAA,EAAA,SAAA,EAMH;QAEI,OANO,IAAI,qBAAA,CAAwB,SAAE,KAAkC,cAAC,CAAA,CAAc,CAAC;KAOxF;CACF;AAED,MANM,eAAA,GAAkB,CAAA,KAAQ,EAAQ,IAAM,KAAQ,IAAA,CAAK;;;;AAU3D,AAAA,MAAA,qBAAA,CAAA;;;;IAoBA,WAAA,CAJG,SAAyC,EAI5C;QAxBU,IAAV,CAAA,OAAU,GAAkB,CAAA,CAAE;QACpB,IAAV,CAAA,WAAU,GAAkC,IAAA,CAAK;QAEvC,IAAV,CAAA,cAAU,GAAwC,IAAA,CAAK;QAE7C,IAAV,CAAA,gBAAU,GAA0C,IAAA,CAAK;QAC/C,IAAV,CAAA,eAAU,GAAiD,IAAA,CAAK;QACtD,IAAV,CAAA,OAAU,GAAyC,IAAA,CAAK;QAC9C,IAAV,CAAA,OAAU,GAAyC,IAAA,CAAK;QAC9C,IAAV,CAAA,cAAU,GAAgD,IAAA,CAAK;QACrD,IAAV,CAAA,cAAU,GAAgD,IAAA,CAAK;QACrD,IAAV,CAAA,UAAU,GAA4C,IAAA,CAAK;QACjD,IAAV,CAAA,UAAU,GAA4C,IAAA,CAAK;QACjD,IAAV,CAAA,aAAU,GAA+C,IAAA,CAAK;QACpD,IAAV,CAAA,aAAU,GAA+C,IAAA,CAAK;QAEpD,IAAV,CAAA,oBAAU,GAAsD,IAAA,CAAK;QAC3D,IAAV,CAAA,oBAAU,GAAsD,IAAA,CAAK;QAQjE,IAAI,CAAC,UAAU,GAAG,SAAS,IAAI,eAAe,CAAC;KAChD;;;;IAIH,IANG,UAAA,GAMH,EANqB,OAAO,IAAA,CAAK,WAAC,CAAW,EAAC;;;;IAU9C,IARG,MAAA,GAQH,EARyB,OAAO,IAAA,CAAK,OAAC,CAAO,EAAC;;;;;IAa9C,WAXG,CAAA,EAAA,EAWH;QACI,qBAXI,MAAkC,CAAI;QAY1C,KAAK,MAXC,GAAQ,IAAA,CAAK,OAAC,EAAQ,MAAA,KAAW,IAAA,EAAM,MAAA,GAAS,MAAA,CAAO,KAAC,EAAM;YAYlE,EAAE,CAXC,MAAC,CAAM,CAAC;SAYZ;KACF;;;;;IAKH,gBAdG,CAeG,EACQ,EAFd;QAGI,qBAdI,MAAA,GAAS,IAAA,CAAK,OAAC,CAAO;QAe1B,qBAdI,UAAA,GAAa,IAAA,CAAK,aAAC,CAAa;QAepC,qBAdI,eAAA,GAAkB,CAAA,CAAE;QAexB,qBAdI,WAAA,GAA6B,IAAA,CAAK;QAetC,OAAO,MAdC,IAAS,UAAA,EAAY;;;YAiB3B,uBAdM,MAAA,GAAkC,CAAA,UAAE;gBAelC,MAAM,IAdC,EAeH,MAAM,CAdC,YAAC;oBAeJ,gBAAgB,CAdC,UAAC,EAAW,eAAA,EAAiB,WAAA,CAAY,KAetE,MAAM;gBACN,UAAU,CAdC;YAef,uBAdM,gBAAA,GAAmB,gBAAA,CAAiB,MAAC,EAAO,eAAA,EAAiB,WAAA,CAAY,CAAC;YAehF,uBAdM,YAAA,GAAe,MAAA,CAAO,YAAC,CAAY;;YAiBzC,IAAI,MAdC,KAAU,UAAA,EAAY;gBAezB,eAAe,EAdC,CAAE;gBAelB,UAAU,GAdG,UAAA,CAAW,YAAC,CAAY;aAetC;iBAdM;gBAeL,MAAM,GAdC,EAAE,MAAA,GAAS,KAAC,CAAK;gBAexB,IAAI,MAdC,CAAM,aAAC,IAAgB,IAAA,EAAM;oBAehC,eAAe,EAdC,CAAE;iBAenB;qBAdM;;oBAgBL,IAAI,CAdC,WAAC;wBAAY,WAAA,GAAc,EAAA,CAAG;oBAenC,uBAdM,sBAAA,GAAyB,gBAAA,GAAmB,eAAA,CAAgB;oBAelE,uBAdM,iBAAA,GAAkB,EAAE,YAAA,KAAiB,eAAA,CAAgB;oBAe3D,IAAI,sBAdC,IAAyB,iBAAA,EAAmB;wBAe/C,KAAK,qBAdI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,sBAAA,EAAwB,CAAA,EAAE,EAAG;4BAe/C,uBAdM,MAAA,GAAS,CAAA,GAAI,WAAA,CAAY,MAAC,GAAQ,WAAA,CAAY,CAAC,CAAC,IAAG,WAAE,CAAW,CAAC,CAAC,GAAG,CAAA,CAAE,CAAC;4BAe9E,uBAdM,KAAA,GAAQ,MAAA,GAAS,CAAA,CAAE;4BAezB,IAAI,iBAdC,IAAoB,KAAA,IAAS,KAAA,GAAQ,sBAAA,EAAwB;gCAehE,WAAW,CAdC,CAAC,CAAC,GAAG,MAAA,GAAS,CAAA,CAAE;6BAe7B;yBACF;wBACD,uBAdM,aAAA,GAAgB,MAAA,CAAO,aAAC,CAAa;wBAe3C,WAAW,CAdC,aAAC,CAAa,GAAG,iBAAA,GAAoB,sBAAA,CAAuB;qBAezE;iBACF;aACF;YAED,IAAI,gBAdC,KAAoB,YAAA,EAAc;gBAerC,EAAE,CAdC,MAAC,EAAO,gBAAA,EAAkB,YAAA,CAAa,CAAC;aAe5C;SACF;KACF;;;;;IAKH,mBAjBG,CAAA,EAAA,EAiBH;QACI,qBAjBI,MAAkC,CAAI;QAkB1C,KAAK,MAjBC,GAAQ,IAAA,CAAK,eAAC,EAAgB,MAAA,KAAW,IAAA,EAAM,MAAA,GAAS,MAAA,CAAO,aAAC,EAAc;YAkBlF,EAAE,CAjBC,MAAC,CAAM,CAAC;SAkBZ;KACF;;;;;IAKH,gBApBG,CAAA,EAAA,EAoBH;QACI,qBApBI,MAAkC,CAAI;QAqB1C,KAAK,MApBC,GAAQ,IAAA,CAAK,cAAC,EAAe,MAAA,KAAW,IAAA,EAAM,MAAA,GAAS,MAAA,CAAO,UAAC,EAAW;YAqB9E,EAAE,CApBC,MAAC,CAAM,CAAC;SAqBZ;KACF;;;;;IAKH,gBAvBG,CAAA,EAAA,EAuBH;QACI,qBAvBI,MAAkC,CAAI;QAwB1C,KAAK,MAvBC,GAAQ,IAAA,CAAK,UAAC,EAAW,MAAA,KAAW,IAAA,EAAM,MAAA,GAAS,MAAA,CAAO,UAAC,EAAW;YAwB1E,EAAE,CAvBC,MAAC,CAAM,CAAC;SAwBZ;KACF;;;;;IAKH,kBA1BG,CAAA,EAAA,EA0BH;QACI,qBA1BI,MAAkC,CAAI;QA2B1C,KAAK,MA1BC,GAAQ,IAAA,CAAK,aAAC,EAAc,MAAA,KAAW,IAAA,EAAM,MAAA,GAAS,MAAA,CAAO,YAAC,EAAa;YA2B/E,EAAE,CA1BC,MAAC,CAAM,CAAC;SA2BZ;KACF;;;;;IAKH,qBA7BG,CAAA,EAAA,EA6BH;QACI,qBA7BI,MAAkC,CAAI;QA8B1C,KAAK,MA7BC,GAAQ,IAAA,CAAK,oBAAC,EAAqB,MAAA,KAAW,IAAA,EAAM,MAAA,GAAS,MAAA,CAAO,mBAAC,EAAoB;YA8B7F,EAAE,CA7BC,MAAC,CAAM,CAAC;SA8BZ;KACF;;;;;IAKH,IAhCG,CAAA,UAAA,EAgCH;QACI,IAAI,UAhCC,IAAa,IAAA;YAAM,UAAA,GAAa,EAAA,CAAG;QAiCxC,IAAI,CAhCC,kBAAC,CAAkB,UAAC,CAAU,EAAE;YAiCnC,MAhCM,IAAI,KAAA,CAiCN,CADV,sBAAA,EACmC,SAhCC,CAAS,UAAC,CAAU,CA+BxD,wCAAA,CA/ByD,CAA0C,CAAC;SAiC/F;QAED,IAAI,IAhCC,CAAI,KAAC,CAAK,UAAC,CAAU,EAAE;YAiC1B,OAhCO,IAAA,CAAK;SAiCb;aAhCM;YAiCL,OAhCO,IAAA,CAAK;SAiCb;KACF;;;;IAIH,SAlCG,GAkCH,GAlCc;;;;;IAuCd,KApCG,CAAA,UAAA,EAoCH;QACI,IAAI,CApCC,MAAC,EAAM,CAAE;QAsCd,qBApCI,MAAA,GAAwC,IAAA,CAAK,OAAC,CAAO;QAqCzD,qBApCI,UAAA,GAAsB,KAAA,CAAM;QAqChC,qBApCI,KAAO,CAAO;QAqClB,qBApCI,IAAM,CAAE;QAqCZ,qBApCI,WAAa,CAAI;QAqCrB,IAAI,KApCC,CAAK,OAAC,CAAO,UAAC,CAAU,EAAE;YAqC7B,IAAI,CApCC,OAAC,GAAS,UAAA,CAAW,MAAC,CAAM;YAsCjC,KAAK,qBApCI,KAAA,GAAQ,CAAA,EAAG,KAAA,GAAQ,IAAA,CAAK,OAAC,EAAQ,KAAA,EAAM,EAAG;gBAqCjD,IAAI,GApCG,UAAA,CAAW,KAAC,CAAK,CAAC;gBAqCzB,WAAW,GApCG,IAAA,CAAK,UAAC,CAAU,KAAC,EAAM,IAAA,CAAK,CAAC;gBAqC3C,IAAI,MApCC,KAAU,IAAA,IAAQ,CAAA,cAAE,CAAc,MAAC,CAAM,SAAC,EAAU,WAAA,CAAY,EAAE;oBAqCrE,MAAM,GApCG,IAAA,CAAK,SAAC,CAAS,MAAC,EAAO,IAAA,EAAM,WAAA,EAAa,KAAA,CAAM,CAAC;oBAqC1D,UAAU,GApCG,IAAA,CAAK;iBAqCnB;qBApCM;oBAqCL,IAAI,UApCC,EAAW;;wBAsCd,MAAM,GApCG,IAAA,CAAK,kBAAC,CAAkB,MAAC,EAAO,IAAA,EAAM,WAAA,EAAa,KAAA,CAAM,CAAC;qBAqCpE;oBACD,IAAI,CApCC,cAAC,CAAc,MAAC,CAAM,IAAC,EAAK,IAAA,CAAK;wBAAE,IAAA,CAAK,kBAAC,CAAkB,MAAC,EAAO,IAAA,CAAK,CAAC;iBAqC/E;gBAED,MAAM,GApCG,MAAA,CAAO,KAAC,CAAK;aAqCvB;SACF;aApCM;YAqCL,KAAK,GApCG,CAAA,CAAE;YAqCV,eAAe,CApCC,UAAC,EAAW,CAAA,IAAO,KAoCzC;gBACQ,WAAW,GApCG,IAAA,CAAK,UAAC,CAAU,KAAC,EAAM,IAAA,CAAK,CAAC;gBAqC3C,IAAI,MApCC,KAAU,IAAA,IAAQ,CAAA,cAAE,CAAc,MAAC,CAAM,SAAC,EAAU,WAAA,CAAY,EAAE;oBAqCrE,MAAM,GApCG,IAAA,CAAK,SAAC,CAAS,MAAC,EAAO,IAAA,EAAM,WAAA,EAAa,KAAA,CAAM,CAAC;oBAqC1D,UAAU,GApCG,IAAA,CAAK;iBAqCnB;qBApCM;oBAqCL,IAAI,UApCC,EAAW;;wBAsCd,MAAM,GApCG,IAAA,CAAK,kBAAC,CAAkB,MAAC,EAAO,IAAA,EAAM,WAAA,EAAa,KAAA,CAAM,CAAC;qBAqCpE;oBACD,IAAI,CApCC,cAAC,CAAc,MAAC,CAAM,IAAC,EAAK,IAAA,CAAK;wBAAE,IAAA,CAAK,kBAAC,CAAkB,MAAC,EAAO,IAAA,CAAK,CAAC;iBAqC/E;gBACD,MAAM,GApCG,MAAA,CAAO,KAAC,CAAK;gBAqCtB,KAAK,EApCC,CAAE;aAqCT,CApCC,CAAC;YAqCH,IAAI,CApCC,OAAC,GAAS,KAAA,CAAM;SAqCtB;QAED,IAAI,CApCC,SAAC,CAAS,MAAC,CAAM,CAAC;QAqCvB,IAAI,CApCC,WAAC,GAAa,UAAA,CAAW;QAqC9B,OApCO,IAAA,CAAK,OAAC,CAAO;KAqCrB;;;;IAIH,IAnCG,OAAA,GAmCH;QACI,OAnCO,IAAA,CAAK,cAAC,KAAkB,IAAA,IAAQ,IAAA,CAAK,UAAC,KAAc,IAAA;YAoCvD,IAAI,CAnCC,aAAC,KAAiB,IAAA,IAAQ,IAAA,CAAK,oBAAC,KAAwB,IAAA,CAAK;KAoCvE;;;;;;;;;;IAUH,MAnCG,GAmCH;QACI,IAAI,IAnCC,CAAI,OAAC,EAAQ;YAoChB,qBAnCI,MAAkC,CAAI;YAoC1C,qBAnCI,UAAsC,CAAI;YAqC9C,KAAK,MAnCC,GAAQ,IAAA,CAAK,eAAC,GAAiB,IAAA,CAAK,OAAC,EAAQ,MAAA,KAAW,IAAA,EAAM,MAAA,GAAS,MAAA,CAAO,KAAC,EAAM;gBAoCzF,MAAM,CAnCC,aAAC,GAAe,MAAA,CAAO,KAAC,CAAK;aAoCrC;YAED,KAAK,MAnCC,GAAQ,IAAA,CAAK,cAAC,EAAe,MAAA,KAAW,IAAA,EAAM,MAAA,GAAS,MAAA,CAAO,UAAC,EAAW;gBAoC9E,MAAM,CAnCC,aAAC,GAAe,MAAA,CAAO,YAAC,CAAY;aAoC5C;YACD,IAAI,CAnCC,cAAC,GAAgB,IAAA,CAAK,cAAC,GAAgB,IAAA,CAAK;YAqCjD,KAAK,MAnCC,GAAQ,IAAA,CAAK,UAAC,EAAW,MAAA,KAAW,IAAA,EAAM,MAAA,GAAS,UAAA,EAAY;gBAoCnE,MAAM,CAnCC,aAAC,GAAe,MAAA,CAAO,YAAC,CAAY;gBAoC3C,UAAU,GAnCG,MAAA,CAAO,UAAC,CAAU;aAoChC;YACD,IAAI,CAnCC,UAAC,GAAY,IAAA,CAAK,UAAC,GAAY,IAAA,CAAK;YAoCzC,IAAI,CAnCC,aAAC,GAAe,IAAA,CAAK,aAAC,GAAe,IAAA,CAAK;YAoC/C,IAAI,CAnCC,oBAAC,GAAsB,IAAA,CAAK,oBAAC,GAAsB,IAAA,CAAK;SAuC9D;KACF;;;;;;;;;;;;;;;;IAgBH,SAvCG,CAAA,MAAA,EAAA,IAAA,EAAA,WAAA,EAAA,KAAA,EAuCH;;QAGI,qBAvCI,cAAwC,CAAC;QAyC7C,IAAI,MAvCC,KAAU,IAAA,EAAM;YAwCnB,cAAc,KAvCG,IAAA,CAAK,OAAC,EAAA,CAAS;SAwCjC;aAvCM;YAwCL,cAAc,KAvCG,MAAA,CAAO,KAAC,EAAA,CAAO;;YAyChC,IAAI,CAvCC,OAAC,CAAO,MAAC,CAAM,CAAC;SAwCtB;;QAGD,MAAM,GAvCG,IAAA,CAAK,cAAC,KAAkB,IAAA,GAAO,IAAA,GAAO,IAAA,CAAK,cAAC,CAAc,GAAC,CAAG,WAAC,EAAY,KAAA,CAAM,CAAC;QAwC3F,IAAI,MAvCC,KAAU,IAAA,EAAM;;;YA0CnB,IAAI,CAvCC,cAAC,CAAc,MAAC,CAAM,IAAC,EAAK,IAAA,CAAK;gBAAE,IAAA,CAAK,kBAAC,CAAkB,MAAC,EAAO,IAAA,CAAK,CAAC;YAyC9E,IAAI,CAvCC,UAAC,CAAU,MAAC,EAAO,cAAA,EAAgB,KAAA,CAAM,CAAC;SAwChD;aAvCM;;YAyCL,MAAM,GAvCG,IAAA,CAAK,gBAAC,KAAoB,IAAA,GAAO,IAAA,GAAO,IAAA,CAAK,gBAAC,CAAgB,GAAC,CAAG,WAAC,EAAY,IAAA,CAAK,CAAC;YAwC9F,IAAI,MAvCC,KAAU,IAAA,EAAM;;;gBA0CnB,IAAI,CAvCC,cAAC,CAAc,MAAC,CAAM,IAAC,EAAK,IAAA,CAAK;oBAAE,IAAA,CAAK,kBAAC,CAAkB,MAAC,EAAO,IAAA,CAAK,CAAC;gBAyC9E,IAAI,CAvCC,cAAC,CAAc,MAAC,EAAO,cAAA,EAAgB,KAAA,CAAM,CAAC;aAwCpD;iBAvCM;;gBAyCL,MAAM;oBACF,IAAI,CAvCC,SAAC,CAAS,IAAI,qBAAA,CAAwB,IAAE,EAAK,WAAA,CAAY,EAAE,cAAA,EAAgB,KAAA,CAAM,CAAC;aAwC5F;SACF;QACD,OAvCO,MAAA,CAAO;KAwCf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiCH,kBA3CG,CAAA,MAAA,EAAA,IAAA,EAAA,WAAA,EAAA,KAAA,EA2CH;QAEI,qBA3CI,cAAA,GA4CA,IAAI,CA3CC,gBAAC,KAAoB,IAAA,GAAO,IAAA,GAAO,IAAA,CAAK,gBAAC,CAAgB,GAAC,CAAG,WAAC,EAAY,IAAA,CAAK,CAAC;QA4CzF,IAAI,cA3CC,KAAkB,IAAA,EAAM;YA4C3B,MAAM,GA3CG,IAAA,CAAK,cAAC,CAAc,cAAC,qBAAe,MAAA,CAAO,KAAC,IAAQ,KAAA,CAAM,CAAC;SA4CrE;aA3CM,IAAA,MAAK,CAAM,YAAC,IAAe,KAAA,EAAO;YA4CvC,MAAM,CA3CC,YAAC,GAAc,KAAA,CAAM;YA4C5B,IAAI,CA3CC,WAAC,CAAW,MAAC,EAAO,KAAA,CAAM,CAAC;SA4CjC;QACD,OA3CO,MAAA,CAAO;KA4Cf;;;;;;;;;;IAUH,SA5CG,CAAA,MAAA,EA4CH;;QAEI,OAAO,MA5CC,KAAU,IAAA,EAAM;YA6CtB,uBA5CM,UAAA,GAA4C,MAAA,CAAO,KAAC,CAAK;YA6C/D,IAAI,CA5CC,cAAC,CAAc,IAAC,CAAI,OAAC,CAAO,MAAC,CAAM,CAAC,CAAC;YA6C1C,MAAM,GA5CG,UAAA,CAAW;SA6CrB;QACD,IAAI,IA5CC,CAAI,gBAAC,KAAoB,IAAA,EAAM;YA6ClC,IAAI,CA5CC,gBAAC,CAAgB,KAAC,EAAK,CAAE;SA6C/B;QAED,IAAI,IA5CC,CAAI,cAAC,KAAkB,IAAA,EAAM;YA6ChC,IAAI,CA5CC,cAAC,CAAc,UAAC,GAAY,IAAA,CAAK;SA6CvC;QACD,IAAI,IA5CC,CAAI,UAAC,KAAc,IAAA,EAAM;YA6C5B,IAAI,CA5CC,UAAC,CAAU,UAAC,GAAY,IAAA,CAAK;SA6CnC;QACD,IAAI,IA5CC,CAAI,OAAC,KAAW,IAAA,EAAM;YA6CzB,IAAI,CA5CC,OAAC,CAAO,KAAC,GAAO,IAAA,CAAK;SA6C3B;QACD,IAAI,IA5CC,CAAI,aAAC,KAAiB,IAAA,EAAM;YA6C/B,IAAI,CA5CC,aAAC,CAAa,YAAC,GAAc,IAAA,CAAK;SA6CxC;QACD,IAAI,IA5CC,CAAI,oBAAC,KAAwB,IAAA,EAAM;YA6CtC,IAAI,CA5CC,oBAAC,CAAoB,mBAAC,GAAqB,IAAA,CAAK;SA6CtD;KACF;;;;;;;;IAQH,cAjDG,CAkDG,MAAgC,EAAE,UAAoC,EACtE,KAAa,EAFnB;QAGI,IAAI,IAjDC,CAAI,gBAAC,KAAoB,IAAA,EAAM;YAkDlC,IAAI,CAjDC,gBAAC,CAAgB,MAAC,CAAM,MAAC,CAAM,CAAC;SAkDtC;QACD,uBAjDM,IAAA,GAAO,MAAA,CAAO,YAAC,CAAY;QAkDjC,uBAjDM,IAAA,GAAO,MAAA,CAAO,YAAC,CAAY;QAmDjC,IAAI,IAjDC,KAAQ,IAAA,EAAM;YAkDjB,IAAI,CAjDC,aAAC,GAAe,IAAA,CAAK;SAkD3B;aAjDM;YAkDL,IAAI,CAjDC,YAAC,GAAc,IAAA,CAAK;SAkD1B;QACD,IAAI,IAjDC,KAAQ,IAAA,EAAM;YAkDjB,IAAI,CAjDC,aAAC,GAAe,IAAA,CAAK;SAkD3B;aAjDM;YAkDL,IAAI,CAjDC,YAAC,GAAc,IAAA,CAAK;SAkD1B;QAED,IAAI,CAjDC,YAAC,CAAY,MAAC,EAAO,UAAA,EAAY,KAAA,CAAM,CAAC;QAkD7C,IAAI,CAjDC,WAAC,CAAW,MAAC,EAAO,KAAA,CAAM,CAAC;QAkDhC,OAjDO,MAAA,CAAO;KAkDf;;;;;;;;IAQH,UAtDG,CAAA,MAAA,EAAA,UAAA,EAAA,KAAA,EAsDH;QAEI,IAAI,CAtDC,OAAC,CAAO,MAAC,CAAM,CAAC;QAuDrB,IAAI,CAtDC,YAAC,CAAY,MAAC,EAAO,UAAA,EAAY,KAAA,CAAM,CAAC;QAuD7C,IAAI,CAtDC,WAAC,CAAW,MAAC,EAAO,KAAA,CAAM,CAAC;QAuDhC,OAtDO,MAAA,CAAO;KAuDf;;;;;;;;IAQH,SA3DG,CAAA,MAAA,EAAA,UAAA,EAAA,KAAA,EA2DH;QAEI,IAAI,CA3DC,YAAC,CAAY,MAAC,EAAO,UAAA,EAAY,KAAA,CAAM,CAAC;QA6D7C,IAAI,IA3DC,CAAI,cAAC,KAAkB,IAAA,EAAM;;;YA8DhC,IAAI,CA3DC,cAAC,GAAgB,IAAA,CAAK,cAAC,GAAgB,MAAA,CAAO;SA4DpD;aA3DM;;;;YA+DL,IAAI,CA3DC,cAAC,GAAgB,IAAA,CAAK,cAAC,CAAc,UAAC,GAAY,MAAA,CAAO;SA4D/D;QACD,OA3DO,MAAA,CAAO;KA4Df;;;;;;;;IAQH,YAhEG,CAiEG,MAAgC,EAAE,UAAoC,EACtE,KAAa,EAFnB;;;;;QAQI,uBAhEM,IAAA,GAiEF,UAAU,KAhEK,IAAA,GAAO,IAAA,CAAK,OAAC,GAAS,UAAA,CAAW,KAAC,CAAK;;;;QAoE1D,MAAM,CAhEC,KAAC,GAAO,IAAA,CAAK;QAiEpB,MAAM,CAhEC,KAAC,GAAO,UAAA,CAAW;QAiE1B,IAAI,IAhEC,KAAQ,IAAA,EAAM;YAiEjB,IAAI,CAhEC,OAAC,GAAS,MAAA,CAAO;SAiEvB;aAhEM;YAiEL,IAAI,CAhEC,KAAC,GAAO,MAAA,CAAO;SAiErB;QACD,IAAI,UAhEC,KAAc,IAAA,EAAM;YAiEvB,IAAI,CAhEC,OAAC,GAAS,MAAA,CAAO;SAiEvB;aAhEM;YAiEL,UAAU,CAhEC,KAAC,GAAO,MAAA,CAAO;SAiE3B;QAED,IAAI,IAhEC,CAAI,cAAC,KAAkB,IAAA,EAAM;YAiEhC,IAAI,CAhEC,cAAC,GAAgB,IAAI,aAAA,EAAgB,CAAG;SAiE9C;QACD,IAAI,CAhEC,cAAC,CAAc,GAAC,CAAG,MAAC,CAAM,CAAC;QAkEhC,MAAM,CAhEC,YAAC,GAAc,KAAA,CAAM;QAiE5B,OAhEO,MAAA,CAAO;KAiEf;;;;;;IAMH,OAnEG,CAAA,MAAA,EAmEH;QACI,OAnEO,IAAA,CAAK,cAAC,CAAc,IAAC,CAAI,OAAC,CAAO,MAAC,CAAM,CAAC,CAAC;KAoElD;;;;;;IAMH,OAtEG,CAAA,MAAA,EAsEH;QACI,IAAI,IAtEC,CAAI,cAAC,KAAkB,IAAA,EAAM;YAuEhC,IAAI,CAtEC,cAAC,CAAc,MAAC,CAAM,MAAC,CAAM,CAAC;SAuEpC;QAED,uBAtEM,IAAA,GAAO,MAAA,CAAO,KAAC,CAAK;QAuE1B,uBAtEM,IAAA,GAAO,MAAA,CAAO,KAAC,CAAK;;;;QA4E1B,IAAI,IAtEC,KAAQ,IAAA,EAAM;YAuEjB,IAAI,CAtEC,OAAC,GAAS,IAAA,CAAK;SAuErB;aAtEM;YAuEL,IAAI,CAtEC,KAAC,GAAO,IAAA,CAAK;SAuEnB;QACD,IAAI,IAtEC,KAAQ,IAAA,EAAM;YAuEjB,IAAI,CAtEC,OAAC,GAAS,IAAA,CAAK;SAuErB;aAtEM;YAuEL,IAAI,CAtEC,KAAC,GAAO,IAAA,CAAK;SAuEnB;QAED,OAtEO,MAAA,CAAO;KAuEf;;;;;;;IAOH,WA1EG,CAAA,MAAA,EAAA,OAAA,EA0EH;;;QAII,IAAI,MA1EC,CAAM,aAAC,KAAiB,OAAA,EAAS;YA2EpC,OA1EO,MAAA,CAAO;SA2Ef;QAED,IAAI,IA1EC,CAAI,UAAC,KAAc,IAAA,EAAM;;;YA6E5B,IAAI,CA1EC,UAAC,GAAY,IAAA,CAAK,UAAC,GAAY,MAAA,CAAO;SA2E5C;aA1EM;;;YA6EL,IAAI,CA1EC,UAAC,GAAY,IAAA,CAAK,UAAC,CAAU,UAAC,GAAY,MAAA,CAAO;SA2EvD;QAED,OA1EO,MAAA,CAAO;KA2Ef;;;;;IAxEA,cAAA,CAAA,MAAA,EAAH;QA8EI,IAAI,IA7EC,CAAI,gBAAC,KAAoB,IAAA,EAAM;YA8ElC,IAAI,CA7EC,gBAAC,GAAkB,IAAI,aAAA,EAAgB,CAAG;SA8EhD;QACD,IAAI,CA7EC,gBAAC,CAAgB,GAAC,CAAG,MAAC,CAAM,CAAC;QA8ElC,MAAM,CA7EC,YAAC,GAAc,IAAA,CAAK;QA8E3B,MAAM,CA7EC,YAAC,GAAc,IAAA,CAAK;QA+E3B,IAAI,IA7EC,CAAI,aAAC,KAAiB,IAAA,EAAM;;;YAgF/B,IAAI,CA7EC,aAAC,GAAe,IAAA,CAAK,aAAC,GAAe,MAAA,CAAO;YA8EjD,MAAM,CA7EC,YAAC,GAAc,IAAA,CAAK;SA8E5B;aA7EM;;;;YAiFL,MAAM,CA7EC,YAAC,GAAc,IAAA,CAAK,aAAC,CAAa;YA8EzC,IAAI,CA7EC,aAAC,GAAe,IAAA,CAAK,aAAC,CAAa,YAAC,GAAc,MAAA,CAAO;SA8E/D;QACD,OA7EO,MAAA,CAAO;KA8Ef;;;;;;;IAOH,kBAjFG,CAAA,MAAA,EAAA,IAAA,EAiFH;QACI,MAAM,CAjFC,IAAC,GAAM,IAAA,CAAK;QAkFnB,IAAI,IAjFC,CAAI,oBAAC,KAAwB,IAAA,EAAM;YAkFtC,IAAI,CAjFC,oBAAC,GAAsB,IAAA,CAAK,oBAAC,GAAsB,MAAA,CAAO;SAkFhE;aAjFM;YAkFL,IAAI,CAjFC,oBAAC,GAAsB,IAAA,CAAK,oBAAC,CAAoB,mBAAC,GAAqB,MAAA,CAAO;SAkFpF;QACD,OAjFO,MAAA,CAAO;KAkFf;;;;IAIH,QAlFG,GAkFH;QACI,uBAlFM,IAAA,GAAmC,EAAA,CAAG;QAmF5C,IAAI,CAlFC,WAAC,CAAW,CAAC,MAAgC,KAAK,IAAA,CAAK,IAAC,CAAI,MAAC,CAAM,CAAC,CAAC;QAoF1E,uBAlFM,QAAA,GAAuC,EAAA,CAAG;QAmFhD,IAAI,CAlFC,mBAAC,CAAmB,CAAC,MAAgC,KAAK,QAAA,CAAS,IAAC,CAAI,MAAC,CAAM,CAAC,CAAC;QAoFtF,uBAlFM,SAAA,GAAwC,EAAA,CAAG;QAmFjD,IAAI,CAlFC,gBAAC,CAAgB,CAAC,MAAgC,KAAK,SAAA,CAAU,IAAC,CAAI,MAAC,CAAM,CAAC,CAAC;QAoFpF,uBAlFM,KAAA,GAAoC,EAAA,CAAG;QAmF7C,IAAI,CAlFC,gBAAC,CAAgB,CAAC,MAAgC,KAAK,KAAA,CAAM,IAAC,CAAI,MAAC,CAAM,CAAC,CAAC;QAoFhF,uBAlFM,QAAA,GAAuC,EAAA,CAAG;QAmFhD,IAAI,CAlFC,kBAAC,CAAkB,CAAC,MAAgC,KAAK,QAAA,CAAS,IAAC,CAAI,MAAC,CAAM,CAAC,CAAC;QAoFrF,uBAlFM,eAAA,GAA8C,EAAA,CAAG;QAmFvD,IAAI,CAlFC,qBAAC,CAAqB,CAAC,MAAgC,KAAK,eAAA,CAAgB,IAAC,CAAI,MAAC,CAAM,CAAC,CAAC;QAoF/F,OAlFO,cAAA,GAAiB,IAAA,CAAK,IAAC,CAAI,IAAC,CAAI,GAAG,IAAA;YAmFtC,YAAY,GAlFG,QAAA,CAAS,IAAC,CAAI,IAAC,CAAI,GAAG,IAAA;YAmFrC,aAAa,GAlFG,SAAA,CAAU,IAAC,CAAI,IAAC,CAAI,GAAG,IAAA;YAmFvC,SAAS,GAlFG,KAAA,CAAM,IAAC,CAAI,IAAC,CAAI,GAAG,IAAA;YAmF/B,YAAY,GAlFG,QAAA,CAAS,IAAC,CAAI,IAAC,CAAI,GAAG,IAAA;YAmFrC,mBAAmB,GAlFG,eAAA,CAAgB,IAAC,CAAI,IAAC,CAAI,GAAG,IAAA,CAAK;KAmF7D;CACF;AAED,AAmCA;;;AAGA,AAAA,MAAA,qBAAA,CAAA;;;;;IA+CA,WAAA,CA1IqB,IAAM,EAAU,SAAW,EA0IhD;QA1IqB,IAArB,CAAA,IAAqB,GAAA,IAAA,CAAM;QAAU,IAArC,CAAA,SAAqC,GAAA,SAAA,CAAW;QA4F9C,IAAF,CAAA,YAAc,GArHgB,IAAA,CAAK;QAsHjC,IAAF,CAAA,aAAe,GArHgB,IAAA,CAAK;;;;QAyHpC,IAAA,CAAA,aAtHG,GAAA,IAAA,CAAA;;;;QA0HH,IAAA,CAAA,KAxHG,GAAA,IAAA,CAAA;;;;QA4HH,IAAA,CAAA,KA1HG,GAAA,IAAA,CAAA;;;;QA8HH,IAAA,CAAA,QA5HG,GAAA,IAAA,CAAA;;;;QAgIH,IAAA,CAAA,QA9HG,GAAA,IAAA,CAAA;;;;QAkIH,IAAA,CAAA,YAhIG,GAAA,IAAA,CAAA;;;;QAoIH,IAAA,CAAA,YAlIG,GAAA,IAAA,CAAA;;;;QAsIH,IAAA,CAAA,UApIG,GAAA,IAAA,CAAA;;;;QAwIH,IAAA,CAAA,UAtIG,GAAA,IAAA,CAAA;;;;QA0IH,IAAA,CAAA,mBAxIG,GAAA,IAAA,CAAA;KAGiD;;;;IA+IpD,QA7IG,GA6IH;QACI,OA7IO,IAAA,CAAK,aAAC,KAAiB,IAAA,CAAK,YAAC,GAAc,SAAA,CAAU,IAAC,CAAI,IAAC,CAAI;YA8IpB,SAAS,CA7IC,IAAC,CAAI,IAAC,CAAI,GAAG,GAAA;gBA8IjE,SAAS,CA7IC,IAAC,CAAI,aAAC,CAAa,GAAG,IAAA,GAAO,SAAA,CAAU,IAAC,CAAI,YAAC,CAAY,GAAG,GAAA,CAAI;KA8InF;CACF;AAED,AA6DA,MAAA,wBAAA,CAAA;IAAA,WAAA,GAAA;;;;QAIA,IAAA,CAAA,KA3MG,GAAA,IAAA,CAAA;;;;QA+MH,IAAA,CAAA,KA7MG,GAAA,IAAA,CAAA;KAkRF;;;;;;;;IA7DD,GA9MG,CAAA,MAAA,EA8MH;QACI,IAAI,IA9MC,CAAI,KAAC,KAAS,IAAA,EAAM;YA+MvB,IAAI,CA9MC,KAAC,GAAO,IAAA,CAAK,KAAC,GAAO,MAAA,CAAO;YA+MjC,MAAM,CA9MC,QAAC,GAAU,IAAA,CAAK;YA+MvB,MAAM,CA9MC,QAAC,GAAU,IAAA,CAAK;SA+MxB;aA9MM;YAAA;;;;YAkNL,IAAI,CA9MC,KAAC,GAAO,QAAC,GAAU,MAAA,CAAO;YA+M/B,MAAM,CA9MC,QAAC,GAAU,IAAA,CAAK,KAAC,CAAK;YA+M7B,MAAM,CA9MC,QAAC,GAAU,IAAA,CAAK;YA+MvB,IAAI,CA9MC,KAAC,GAAO,MAAA,CAAO;SA+MrB;KACF;;;;;;IAMH,GAhNG,CAAA,SAAA,EAAA,UAAA,EAgNH;QACI,qBAhNI,MAAkC,CAAI;QAiN1C,KAAK,MAhNC,GAAQ,IAAA,CAAK,KAAC,EAAM,MAAA,KAAW,IAAA,EAAM,MAAA,GAAS,MAAA,CAAO,QAAC,EAAS;YAiNnE,IAAI,CAhNC,UAAC,KAAc,IAAA,IAAQ,UAAA,GAAa,MAAA,CAAO,YAAC;gBAiN7C,cAAc,CAhNC,MAAC,CAAM,SAAC,EAAU,SAAA,CAAU,EAAE;gBAiN/C,OAhNO,MAAA,CAAO;aAiNf;SACF;QACD,OAhNO,IAAA,CAAK;KAiNb;;;;;;;;IAQH,MAjNG,CAAA,MAAA,EAiNH;;;;;;;;;QAUI,uBAjNM,IAAA,GAAsC,MAAA,CAAO,QAAC,CAAQ;QAkN5D,uBAjNM,IAAA,GAAsC,MAAA,CAAO,QAAC,CAAQ;QAkN5D,IAAI,IAjNC,KAAQ,IAAA,EAAM;YAkNjB,IAAI,CAjNC,KAAC,GAAO,IAAA,CAAK;SAkNnB;aAjNM;YAkNL,IAAI,CAjNC,QAAC,GAAU,IAAA,CAAK;SAkNtB;QACD,IAAI,IAjNC,KAAQ,IAAA,EAAM;YAkNjB,IAAI,CAjNC,KAAC,GAAO,IAAA,CAAK;SAkNnB;aAjNM;YAkNL,IAAI,CAjNC,QAAC,GAAU,IAAA,CAAK;SAkNtB;QACD,OAjNO,IAAA,CAAK,KAAC,KAAS,IAAA,CAAK;KAkN5B;CACF;AAED,AAaA,MAAA,aAAA,CAAA;IAAA,WAAA,GAAA;QACE,IAAF,CAAA,GAAK,GA9NG,IAAI,GAAA,EAAqC,CAAG;KAwRnD;;;;;IArDD,GAjOG,CAAA,MAAA,EAiOH;QACI,uBAjOM,GAAA,GAAM,MAAA,CAAO,SAAC,CAAS;QAmO7B,qBAjOI,UAAA,GAAa,IAAA,CAAK,GAAC,CAAG,GAAC,CAAG,GAAC,CAAG,CAAC;QAkOnC,IAAI,CAjOC,UAAC,EAAW;YAkOf,UAAU,GAjOG,IAAI,wBAAA,EAA2B,CAAG;YAkO/C,IAAI,CAjOC,GAAC,CAAG,GAAC,CAAG,GAAC,EAAI,UAAA,CAAW,CAAC;SAkO/B;QACD,UAAU,CAjOC,GAAC,CAAG,MAAC,CAAM,CAAC;KAkOxB;;;;;;;;;;;IAWH,GAnOG,CAAA,SAAA,EAAA,UAAA,EAmOH;QACI,uBAnOM,GAAA,GAAM,SAAA,CAAU;QAoOtB,uBAnOM,UAAA,GAAa,IAAA,CAAK,GAAC,CAAG,GAAC,CAAG,GAAC,CAAG,CAAC;QAoOrC,OAnOO,UAAA,GAAa,UAAA,CAAW,GAAC,CAAG,SAAC,EAAU,UAAA,CAAW,GAAG,IAAA,CAAK;KAoOlE;;;;;;;;IAQH,MApOG,CAAA,MAAA,EAoOH;QACI,uBApOM,GAAA,GAAM,MAAA,CAAO,SAAC,CAAS;QAqO7B,uBApOM,UAAA,KAA0C,IAAA,CAAK,GAAC,CAAG,GAAC,CAAG,GAAC,CAAG,EAAA,CAAG;;QAsOpE,IAAI,UApOC,CAAU,MAAC,CAAM,MAAC,CAAM,EAAE;YAqO7B,IAAI,CApOC,GAAC,CAAG,MAAC,CAAM,GAAC,CAAG,CAAC;SAqOtB;QACD,OApOO,MAAA,CAAO;KAqOf;;;;IAIH,IAtOG,OAAA,GAsOH,EAtO2B,OAAO,IAAA,CAAK,GAAC,CAAG,IAAC,KAAQ,CAAA,CAAE,EAAC;;;;IA0OvD,KAxOG,GAwOH,EAxOY,IAAA,CAAK,GAAC,CAAG,KAAC,EAAK,CAAE,EAAC;;;;IA4O9B,QA1OG,GA0OH,EA1OuB,OAAO,gBAAA,GAAmB,SAAA,CAAU,IAAC,CAAI,GAAC,CAAG,GAAG,GAAA,CAAI,EAAC;CA2O3E;AAED,AAKA;;;;;;AAMA,SAAA,gBAAA,CACI,IAAS,EAAE,eAAuB,EAAE,WAA4B,EADpE;IAEE,uBArPM,aAAA,GAAgB,IAAA,CAAK,aAAC,CAAa;IAsPzC,IAAI,aArPC,KAAiB,IAAA;QAAM,OAAO,aAAA,CAAc;IAsPjD,qBArPI,UAAA,GAAa,CAAA,CAAE;IAsPnB,IAAI,WArPC,IAAc,aAAA,GAAgB,WAAA,CAAY,MAAC,EAAO;QAsPrD,UAAU,GArPG,WAAA,CAAY,aAAC,CAAa,CAAC;KAsPzC;IACD,OArPO,aAAA,GAAgB,eAAA,GAAkB,UAAA,CAAW;CAsPrD;;ADr/BD;;;;;;;AASA,AACA,AAGA,AAAA,MAAA,4BAAA,CAAA;IACA,WAAA,GAAA,GACG;;;;;IAIH,QAHG,CAAA,GAAA,EAGH,EAHgC,OAAO,GAAA,YAAe,GAAA,IAAO,UAAA,CAAW,GAAC,CAAG,CAAC,EAAC;;;;;;;IAY9E,MALG,CAAA,EAAA,EAKH;QACI,OALO,IAAI,qBAAA,EAA2B,CAAG;KAM1C;CACF;AACD,AAAA,MAAA,qBAAA,CAAA;IAAA,WAAA,GAAA;QAHU,IAAV,CAAA,QAAU,GAAW,IAAI,GAAA,EAAmC,CAAG;QACrD,IAAV,CAAA,QAAU,GAA6C,IAAA,CAAK;QAElD,IAAV,CAAA,YAAU,GAAiD,IAAA,CAAK;QACtD,IAAV,CAAA,gBAAU,GAAqD,IAAA,CAAK;QAC1D,IAAV,CAAA,YAAU,GAAiD,IAAA,CAAK;QACtD,IAAV,CAAA,YAAU,GAAiD,IAAA,CAAK;QACtD,IAAV,CAAA,cAAU,GAAmD,IAAA,CAAK;QACxD,IAAV,CAAA,cAAU,GAAmD,IAAA,CAAK;QACxD,IAAV,CAAA,aAAU,GAAkD,IAAA,CAAK;QACvD,IAAV,CAAA,aAAU,GAAkD,IAAA,CAAK;KA0ShE;;;;IAnSD,IALG,OAAA,GAKH;QACI,OALO,IAAA,CAAK,cAAC,KAAkB,IAAA,IAAQ,IAAA,CAAK,YAAC,KAAgB,IAAA;YAMzD,IAAI,CALC,aAAC,KAAiB,IAAA,CAAK;KAMjC;;;;;IAKH,WARG,CAAA,EAAA,EAQH;QACI,qBARI,MAAqC,CAAI;QAS7C,KAAK,MARC,GAAQ,IAAA,CAAK,QAAC,EAAS,MAAA,KAAW,IAAA,EAAM,MAAA,GAAS,MAAA,CAAO,KAAC,EAAM;YASnE,EAAE,CARC,MAAC,CAAM,CAAC;SASZ;KACF;;;;;IAKH,mBAXG,CAAA,EAAA,EAWH;QACI,qBAXI,MAAqC,CAAI;QAY7C,KAAK,MAXC,GAAQ,IAAA,CAAK,gBAAC,EAAiB,MAAA,KAAW,IAAA,EAAM,MAAA,GAAS,MAAA,CAAO,aAAC,EAAc;YAYnF,EAAE,CAXC,MAAC,CAAM,CAAC;SAYZ;KACF;;;;;IAKH,kBAdG,CAAA,EAAA,EAcH;QACI,qBAdI,MAAqC,CAAI;QAe7C,KAAK,MAdC,GAAQ,IAAA,CAAK,YAAC,EAAa,MAAA,KAAW,IAAA,EAAM,MAAA,GAAS,MAAA,CAAO,YAAC,EAAa;YAe9E,EAAE,CAdC,MAAC,CAAM,CAAC;SAeZ;KACF;;;;;IAKH,gBAjBG,CAAA,EAAA,EAiBH;QACI,qBAjBI,MAAqC,CAAI;QAkB7C,KAAK,MAjBC,GAAQ,IAAA,CAAK,cAAC,EAAe,MAAA,KAAW,IAAA,EAAM,MAAA,GAAS,MAAA,CAAO,UAAC,EAAW;YAkB9E,EAAE,CAjBC,MAAC,CAAM,CAAC;SAkBZ;KACF;;;;;IAKH,kBApBG,CAAA,EAAA,EAoBH;QACI,qBApBI,MAAqC,CAAI;QAqB7C,KAAK,MApBC,GAAQ,IAAA,CAAK,aAAC,EAAc,MAAA,KAAW,IAAA,EAAM,MAAA,GAAS,MAAA,CAAO,YAAC,EAAa;YAqB/E,EAAE,CApBC,MAAC,CAAM,CAAC;SAqBZ;KACF;;;;;IAKH,IAvBG,CAAA,GAAA,EAuBH;QACI,IAAI,CAvBC,GAAC,EAAI;YAwBR,GAAG,GAvBG,IAAI,GAAA,EAAI,CAAE;SAwBjB;aAvBM,IAAA,EAAM,GAAC,YAAc,GAAA,IAAO,UAAA,CAAW,GAAC,CAAG,CAAC,EAAE;YAwBnD,MAvBM,IAAI,KAAA,CAwBN,CADV,sBAAA,EACmC,SAvBC,CAAS,GAAC,CAAG,CAsBjD,oCAAA,CAtBkD,CAAsC,CAAC;SAwBpF;QAED,OAvBO,IAAA,CAAK,KAAC,CAAK,GAAC,CAAG,GAAG,IAAA,GAAO,IAAA,CAAK;KAwBtC;;;;IAIH,SAzBG,GAyBH,GAzBc;;;;;;;IAgCd,KA1BG,CAAA,GAAA,EA0BH;QACI,IAAI,CA1BC,MAAC,EAAM,CAAE;QA4Bd,qBA1BI,YAAA,GAAe,IAAA,CAAK,QAAC,CAAQ;QA2BjC,IAAI,CA1BC,YAAC,GAAc,IAAA,CAAK;QA4BzB,IAAI,CA1BC,QAAC,CAAQ,GAAC,EAAI,CAAA,KAAQ,EAAK,GAAK,KA0BzC;YACM,IAAI,YA1BC,IAAe,YAAA,CAAa,GAAC,KAAO,GAAA,EAAK;gBA2B5C,IAAI,CA1BC,kBAAC,CAAkB,YAAC,EAAa,KAAA,CAAM,CAAC;gBA2B7C,IAAI,CA1BC,YAAC,GAAc,YAAA,CAAa;gBA2BjC,YAAY,GA1BG,YAAA,CAAa,KAAC,CAAK;aA2BnC;iBA1BM;gBA2BL,uBA1BM,MAAA,GAAS,IAAA,CAAK,wBAAC,CAAwB,GAAC,EAAI,KAAA,CAAM,CAAC;gBA2BzD,YAAY,GA1BG,IAAA,CAAK,qBAAC,CAAqB,YAAC,EAAa,MAAA,CAAO,CAAC;aA2BjE;SACF,CA1BC,CAAC;;QA6BH,IAAI,YA1BC,EAAa;YA2BhB,IAAI,YA1BC,CAAY,KAAC,EAAM;gBA2BtB,YAAY,CA1BC,KAAC,CAAK,KAAC,GAAO,IAAA,CAAK;aA2BjC;YAED,IAAI,CA1BC,aAAC,GAAe,YAAA,CAAa;YA4BlC,KAAK,qBA1BI,MAAA,GAA2C,YAAA,EAAc,MAAA,KAAW,IAAA,EA2BxE,MAAM,GA1BG,MAAA,CAAO,YAAC,EAAa;gBA2BjC,IAAI,MA1BC,KAAU,IAAA,CAAK,QAAC,EAAS;oBA2B5B,IAAI,CA1BC,QAAC,GAAU,IAAA,CAAK;iBA2BtB;gBACD,IAAI,CA1BC,QAAC,CAAQ,MAAC,CAAM,MAAC,CAAM,GAAC,CAAG,CAAC;gBA2BjC,MAAM,CA1BC,YAAC,GAAc,MAAA,CAAO,KAAC,CAAK;gBA2BnC,MAAM,CA1BC,aAAC,GAAe,MAAA,CAAO,YAAC,CAAY;gBA2B3C,MAAM,CA1BC,YAAC,GAAc,IAAA,CAAK;gBA2B3B,MAAM,CA1BC,KAAC,GAAO,IAAA,CAAK;gBA2BpB,MAAM,CA1BC,KAAC,GAAO,IAAA,CAAK;aA2BrB;SACF;;QAGD,IAAI,IA1BC,CAAI,YAAC;YAAa,IAAA,CAAK,YAAC,CAAY,YAAC,GAAc,IAAA,CAAK;QA2B7D,IAAI,IA1BC,CAAI,cAAC;YAAe,IAAA,CAAK,cAAC,CAAc,UAAC,GAAY,IAAA,CAAK;QA4B/D,OA1BO,IAAA,CAAK,OAAC,CAAO;KA2BrB;;;;;;;;;;;;IAhBA,qBAAA,CA6BG,MAAwC,EACxC,MAAmC,EA9BzC;QA+BI,IAAI,MA5BC,EAAO;YA6BV,uBA5BM,IAAA,GAAO,MAAA,CAAO,KAAC,CAAK;YA6B1B,MAAM,CA5BC,KAAC,GAAO,MAAA,CAAO;YA6BtB,MAAM,CA5BC,KAAC,GAAO,IAAA,CAAK;YA6BpB,MAAM,CA5BC,KAAC,GAAO,MAAA,CAAO;YA6BtB,IAAI,IA5BC,EAAK;gBA6BR,IAAI,CA5BC,KAAC,GAAO,MAAA,CAAO;aA6BrB;YACD,IAAI,MA5BC,KAAU,IAAA,CAAK,QAAC,EAAS;gBA6B5B,IAAI,CA5BC,QAAC,GAAU,MAAA,CAAO;aA6BxB;YAED,IAAI,CA5BC,YAAC,GAAc,MAAA,CAAO;YA6B3B,OA5BO,MAAA,CAAO;SA6Bf;QAED,IAAI,IA5BC,CAAI,YAAC,EAAa;YA6BrB,IAAI,CA5BC,YAAC,CAAY,KAAC,GAAO,MAAA,CAAO;YA6BjC,MAAM,CA5BC,KAAC,GAAO,IAAA,CAAK,YAAC,CAAY;SA6BlC;aA5BM;YA6BL,IAAI,CA5BC,QAAC,GAAU,MAAA,CAAO;SA6BxB;QAED,IAAI,CA5BC,YAAC,GAAc,MAAA,CAAO;QA6B3B,OA5BO,IAAA,CAAK;KA6Bb;;;;;;IA1BA,wBAAA,CAAA,GAAA,EAAA,KAAA,EAAH;QAiCI,IAAI,IAhCC,CAAI,QAAC,CAAQ,GAAC,CAAG,GAAC,CAAG,EAAE;YAiC1B,uBAhCM,MAAA,KAAS,IAAA,CAAK,QAAC,CAAQ,GAAC,CAAG,GAAC,CAAG,EAAA,CAAG;YAiCxC,IAAI,CAhCC,kBAAC,CAAkB,MAAC,EAAO,KAAA,CAAM,CAAC;YAiCvC,uBAhCM,IAAA,GAAO,MAAA,CAAO,KAAC,CAAK;YAiC1B,uBAhCM,IAAA,GAAO,MAAA,CAAO,KAAC,CAAK;YAiC1B,IAAI,IAhCC,EAAK;gBAiCR,IAAI,CAhCC,KAAC,GAAO,IAAA,CAAK;aAiCnB;YACD,IAAI,IAhCC,EAAK;gBAiCR,IAAI,CAhCC,KAAC,GAAO,IAAA,CAAK;aAiCnB;YACD,MAAM,CAhCC,KAAC,GAAO,IAAA,CAAK;YAiCpB,MAAM,CAhCC,KAAC,GAAO,IAAA,CAAK;YAkCpB,OAhCO,MAAA,CAAO;SAiCf;QAED,uBAhCM,MAAA,GAAS,IAAI,qBAAA,CAA2B,GAAE,CAAG,CAAC;QAiCpD,IAAI,CAhCC,QAAC,CAAQ,GAAC,CAAG,GAAC,EAAI,MAAA,CAAO,CAAC;QAiC/B,MAAM,CAhCC,YAAC,GAAc,KAAA,CAAM;QAiC5B,IAAI,CAhCC,eAAC,CAAe,MAAC,CAAM,CAAC;QAiC7B,OAhCO,MAAA,CAAO;KAiCf;;;;;IAKH,MAlCG,GAkCH;QACI,IAAI,IAlCC,CAAI,OAAC,EAAQ;YAmChB,qBAlCI,MAAqC,CAAI;;YAoC7C,IAAI,CAlCC,gBAAC,GAAkB,IAAA,CAAK,QAAC,CAAQ;YAmCtC,KAAK,MAlCC,GAAQ,IAAA,CAAK,gBAAC,EAAiB,MAAA,KAAW,IAAA,EAAM,MAAA,GAAS,MAAA,CAAO,KAAC,EAAM;gBAmC3E,MAAM,CAlCC,aAAC,GAAe,MAAA,CAAO,KAAC,CAAK;aAmCrC;;;YAID,KAAK,MAlCC,GAAQ,IAAA,CAAK,YAAC,EAAa,MAAA,KAAW,IAAA,EAAM,MAAA,GAAS,MAAA,CAAO,YAAC,EAAa;gBAmC9E,MAAM,CAlCC,aAAC,GAAe,MAAA,CAAO,YAAC,CAAY;aAmC5C;YACD,KAAK,MAlCC,GAAQ,IAAA,CAAK,cAAC,EAAe,MAAA,IAAU,IAAA,EAAM,MAAA,GAAS,MAAA,CAAO,UAAC,EAAW;gBAmC7E,MAAM,CAlCC,aAAC,GAAe,MAAA,CAAO,YAAC,CAAY;aAmC5C;YAED,IAAI,CAlCC,YAAC,GAAc,IAAA,CAAK,YAAC,GAAc,IAAA,CAAK;YAmC7C,IAAI,CAlCC,cAAC,GAAgB,IAAA,CAAK,cAAC,GAAgB,IAAA,CAAK;YAmCjD,IAAI,CAlCC,aAAC,GAAe,IAAA,CAAK;SAmC3B;KACF;;;;;;IA/BA,kBAAA,CAAA,MAAA,EAAA,QAAA,EAAH;QAsCI,IAAI,CArCC,cAAC,CAAc,QAAC,EAAS,MAAA,CAAO,YAAC,CAAY,EAAE;YAsClD,MAAM,CArCC,aAAC,GAAe,MAAA,CAAO,YAAC,CAAY;YAsC3C,MAAM,CArCC,YAAC,GAAc,QAAA,CAAS;YAsC/B,IAAI,CArCC,aAAC,CAAa,MAAC,CAAM,CAAC;SAsC5B;KACF;;;;;IAnCA,eAAA,CAAA,MAAA,EAAH;QAyCI,IAAI,IAxCC,CAAI,cAAC,KAAkB,IAAA,EAAM;YAyChC,IAAI,CAxCC,cAAC,GAAgB,IAAA,CAAK,cAAC,GAAgB,MAAA,CAAO;SAyCpD;aAxCM;YAAA,EAyCL,IAAI,CAxCC,cAAC,GAAgB,UAAC,GAAY,MAAA,CAAO;YAyC1C,IAAI,CAxCC,cAAC,GAAgB,MAAA,CAAO;SAyC9B;KACF;;;;;IAtCA,aAAA,CAAA,MAAA,EAAH;QA4CI,IAAI,IA3CC,CAAI,YAAC,KAAgB,IAAA,EAAM;YA4C9B,IAAI,CA3CC,YAAC,GAAc,IAAA,CAAK,YAAC,GAAc,MAAA,CAAO;SA4ChD;aA3CM;YAAA,EA4CL,IAAI,CA3CC,YAAC,GAAc,YAAC,GAAc,MAAA,CAAO;YA4C1C,IAAI,CA3CC,YAAC,GAAc,MAAA,CAAO;SA4C5B;KACF;;;;IAIH,QA7CG,GA6CH;QACI,uBA7CM,KAAA,GAAkB,EAAA,CAAG;QA8C3B,uBA7CM,QAAA,GAAqB,EAAA,CAAG;QA8C9B,uBA7CM,OAAA,GAAoB,EAAA,CAAG;QA8C7B,uBA7CM,SAAA,GAAsB,EAAA,CAAG;QA8C/B,uBA7CM,QAAA,GAAqB,EAAA,CAAG;QA+C9B,IAAI,CA7CC,WAAC,CAAW,CAAC,IAAI,KAAA,CAAM,IAAC,CAAI,SAAC,CAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QA8ChD,IAAI,CA7CC,mBAAC,CAAmB,CAAC,IAAI,QAAA,CAAS,IAAC,CAAI,SAAC,CAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QA8C3D,IAAI,CA7CC,kBAAC,CAAkB,CAAC,IAAI,OAAA,CAAQ,IAAC,CAAI,SAAC,CAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QA8CzD,IAAI,CA7CC,gBAAC,CAAgB,CAAC,IAAI,SAAA,CAAU,IAAC,CAAI,SAAC,CAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QA8CzD,IAAI,CA7CC,kBAAC,CAAkB,CAAC,IAAI,QAAA,CAAS,IAAC,CAAI,SAAC,CAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QA+C1D,OA7CO,OAAA,GAAU,KAAA,CAAM,IAAC,CAAI,IAAC,CAAI,GAAG,IAAA;YA8ChC,YAAY,GA7CG,QAAA,CAAS,IAAC,CAAI,IAAC,CAAI,GAAG,IAAA;YA8CrC,aAAa,GA7CG,SAAA,CAAU,IAAC,CAAI,IAAC,CAAI,GAAG,IAAA;YA8CvC,WAAW,GA7CG,OAAA,CAAQ,IAAC,CAAI,IAAC,CAAI,GAAG,IAAA;YA8CnC,YAAY,GA7CG,QAAA,CAAS,IAAC,CAAI,IAAC,CAAI,GAAG,IAAA,CAAK;KA8C/C;;;;;;;;IA1CA,QAAA,CAAA,GAAA,EAAA,EAAA,EAAH;QAmDI,IAAI,GAlDC,YAAc,GAAA,EAAK;YAmDtB,GAAG,CAlDC,OAAC,CAAO,EAAC,CAAE,CAAC;SAmDjB;aAlDM;YAmDL,MAAM,CAlDC,IAAC,CAAI,GAAC,CAAG,CAAC,OAAC,CAAO,CAAC,IAAI,EAAA,CAAG,GAAC,CAAG,CAAC,CAAC,EAAE,CAAA,CAAE,CAAC,CAAC;SAmD9C;KACF;CACF;AAED,AAuBA;;;AAGA,MAAA,qBAAA,CAAA;;;;IA8BA,WAAA,CArFqB,GAAK,EAqF1B;QArFqB,IAArB,CAAA,GAAqB,GAAA,GAAA,CAAK;QAwDxB,IAAF,CAAA,aAAe,GAxEW,IAAA,CAAK;QAyE7B,IAAF,CAAA,YAAc,GAxEW,IAAA,CAAK;;;;QA4E9B,IAAA,CAAA,aAzEG,GAAA,IAAA,CAAA;;;;QA6EH,IAAA,CAAA,KA3EG,GAAA,IAAA,CAAA;;;;QA+EH,IAAA,CAAA,KA7EG,GAAA,IAAA,CAAA;;;;QAiFH,IAAA,CAAA,UA/EG,GAAA,IAAA,CAAA;;;;QAmFH,IAAA,CAAA,YAjFG,GAAA,IAAA,CAAA;;;;QAqFH,IAAA,CAAA,YAnFG,GAAA,IAAA,CAAA;KAEyB;;;;IAyF5B,QAvFG,GAuFH;QACI,OAvFO,cAAA,CAAe,IAAC,CAAI,aAAC,EAAc,IAAA,CAAK,YAAC,CAAY;YAwFxD,SAAS,CAvFC,IAAC,CAAI,GAAC,CAAG;aAwFlB,SAvFC,CAAS,IAAC,CAAI,GAAC,CAAG,GAAG,GAAA,GAAM,SAAA,CAAU,IAAC,CAAI,aAAC,CAAa,GAAG,IAAA;gBAwF5D,SAAS,CAvFC,IAAC,CAAI,YAAC,CAAY,GAAG,GAAA,CAAI,CAAC;KAwF1C;CACF,AAED,AAqCC;;AD5bD;;;;;;;AASA,AAsIA;;;;AAIA,AAAA,MAAA,eAAA,CAAA;;;;IAQA,WAAA,CAHG,SAA4C,EAG/C,EAHiD,IAAA,CAAA,SAAA,GAAA,SAAA,CAAA,EAAA;;;;;;IASjD,OAPG,MAAA,CAAA,SAAA,EAAA,MAAA,EAOH;QACI,IAAI,MAPC,IAAS,IAAA,EAAM;YAQlB,uBAPM,MAAA,GAAS,MAAA,CAAO,SAAC,CAAS,KAAC,EAAK,CAAE;YAQxC,SAAS,GAPG,SAAA,CAAU,MAAC,CAAM,MAAC,CAAM,CAAC;YAQrC,OAPO,IAAI,eAAA,CAAgB,SAAC,CAAS,CAAC;SAQvC;aAPM;YAQL,OAPO,IAAI,eAAA,CAAgB,SAAC,CAAS,CAAC;SAQvC;KACF;;;;;;;;;;;;;;;;;;;;;;IAsBH,OARG,MAAA,CAAA,SAAA,EAQH;QACI,OARO;YASL,OAAO,EARE,eAAA;YAST,UAAU,EARE,CAAA,MAAS,KAQ3B;gBACQ,IAAI,CARC,MAAC,EAAO;;;;oBAYX,MARM,IAAI,KAAA,CAAM,yDAAC,CAAyD,CAAC;iBAS5E;gBACD,OARO,eAAA,CAAgB,MAAC,CAAM,SAAC,EAAU,MAAA,CAAO,CAAC;aASlD;;YAED,IAAI,EARE,CAAA,CAAE,eAAC,EAAgB,IAAI,QAAA,EAAS,EAAG,IAAI,QAAA,EAAS,CAAE,CAAC;SAS1D,CARC;KASH;;;;;IAKH,IAXG,CAAA,QAAA,EAWH;QACI,uBAXM,OAAA,GAAU,IAAA,CAAK,SAAC,CAAS,IAAC,CAAI,CAAC,IAAI,CAAA,CAAE,QAAC,CAAQ,QAAC,CAAQ,CAAC,CAAC;QAY/D,IAAI,OAXC,IAAU,IAAA,EAAM;YAYnB,OAXO,OAAA,CAAQ;SAYhB;aAXM;YAYL,MAXM,IAAI,KAAA,CAYN,CADV,wCAAA,EACqD,QAXC,CAUtD,WAAA,EAV8D,uBAAc,CAAuB,QAAC,CAAQ,CAU5G,CAAA,CAV6G,CAAG,CAAC;SAY5G;KACF;CACF;AAED,AAQA;;;;AAIA,AAAA,SAAA,uBAAA,CAvBC,IAAA,EAuBD;IACE,OAvBO,IAAA,CAAK,MAAC,CAAM,IAAI,OAAO,IAAA,CAAK;CAwBpC;;AD5OD;;;;;;;AASA,AA8GA;;;;AAIA,AAAA,MAAA,eAAA,CAAA;;;;IAQA,WAAA,CAFG,SAA4C,EAE/C,EAFiD,IAAA,CAAA,SAAA,GAAA,SAAA,CAAA,EAAA;;;;;;;IASjD,OAPG,MAAA,CAAA,SAAA,EAAA,MAAA,EAOH;QACI,IAAI,MAPC,EAAO;YAQV,uBAPM,MAAA,GAAS,MAAA,CAAO,SAAC,CAAS,KAAC,EAAK,CAAE;YAQxC,SAAS,GAPG,SAAA,CAAU,MAAC,CAAM,MAAC,CAAM,CAAC;SAQtC;QACD,OAPO,IAAI,eAAA,CAAgB,SAAC,CAAS,CAAC;KAQvC;;;;;;;;;;;;;;;;;;;;;;;IAuBH,OATG,MAAA,CAAA,SAAA,EASH;QACI,OATO;YAUL,OAAO,EATE,eAAA;YAUT,UAAU,EATE,CAAA,MAAS,KAS3B;gBACQ,IAAI,CATC,MAAC,EAAO;;;oBAYX,MATM,IAAI,KAAA,CAAM,yDAAC,CAAyD,CAAC;iBAU5E;gBACD,OATO,eAAA,CAAgB,MAAC,CAAM,SAAC,EAAU,MAAA,CAAO,CAAC;aAUlD;;YAED,IAAI,EATE,CAAA,CAAE,eAAC,EAAgB,IAAI,QAAA,EAAS,EAAG,IAAI,QAAA,EAAS,CAAE,CAAC;SAU1D,CATC;KAUH;;;;;IAKH,IAZG,CAAA,EAAA,EAYH;QACI,uBAZM,OAAA,GAAU,IAAA,CAAK,SAAC,CAAS,IAAC,CAAI,CAAC,IAAI,CAAA,CAAE,QAAC,CAAQ,EAAC,CAAE,CAAC,CAAC;QAazD,IAAI,OAZC,EAAQ;YAaX,OAZO,OAAA,CAAQ;SAahB;QACD,MAZM,IAAI,KAAA,CAAM,CAYpB,wCAAA,EAZqB,EAA2C,CAYhE,CAAA,CAZkE,CAAG,CAAC;KAanE;CACF,AAED,AAMC;;ADzMD;;;;;;;AASA,AACA,AACA,AACA,AAGA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AAKA;;;AAGA,MADM,UAAA,GAAsC,CAAA,IAAK,4BAAA,EAA6B,CAAE,CAAC;;;;AAMjF,MADM,YAAA,GAAwC,CAAA,IAAK,4BAAA,EAA6B,CAAE,CAAC;AAGnF,AADO,MAAM,sBAAA,GAAyB,IAAI,eAAA,CAAgB,YAAC,CAAY,CAAC;AAGxE,AADO,MAAM,sBAAA,GAAyB,IAAI,eAAA,CAAgB,UAAC,CAAU,CAAC;;ADtCtE;;;;;;;;;;;GAYG,AAEH,AAAkY;;ADdlY;;;;;;;AASA,AACA,AACA,AAEA,AACA,AACA,AACA;;;AAGA,SAAA,UAAA,GAAA;IACE,OAHO,SAAA,CAAU;CAIlB;AAED,MAHM,wBAAA,GAAuC;;IAK3C,EAAC,OAHC,EAAQ,WAAA,EAAa,QAAA,EAAU,SAAA,EAAU;IAI3C,YAAY;IACZ,EAAC,OAHC,EAAQ,WAAA,EAAa,WAAA,EAAa,YAAA,EAAa;IAIjD,EAAC,OAHC,EAAQ,SAAA,EAAW,UAAA,EAAY,UAAA,EAAY,IAAA,EAAM,EAAA,EAAG;IAItD,EAAC,OAHC,EAAQ,eAAA,EAAiB,WAAA,EAAa,SAAA,EAAU;IAIlD,mBAAmB;IACnB,OAAO;CACR,CAHC;;;;;;AASF,AAFC,MAAA,YAAA,GAAA,qBAAA,CAAA,IAAA,EAAA,MAAA,EAAA,wBAAA,CAAA,CAAA;;ADpCD;;;;;;;AASA,AACA;;;AAGA,AAAC,MAAA,SAAA,GAAA,IAAA,cAAA,CAAA,UAAA,CAAA,CAAA;;;;AAID,AACC,MAAA,YAAA,GAAA,IAAA,cAAA,CAAA,cAAA,CAAA,CAAA;;;;AAGD,AAEC,MAAA,mBAAA,GAAA,IAAA,cAAA,CAAA,oBAAA,CAAA,CAAA;AAAD,AAAO,IAAI,0BAA0B,GAAQ,EAAE,CAAC;AAChD,0BAA0B,CAAC,KAAK,GAAG,CAAC,CAAC;AACrC,0BAA0B,CAAC,OAAO,GAAG,CAAC,CAAC;AACvC,0BAA0B,CAAC,MAAM,GAAG,CAAC,CAAC;AACtC,0BAA0B,CAAC,0BAA0B,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;AACvE,0BAA0B,CAAC,0BAA0B,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;AAC3E,0BAA0B,CAAC,0BAA0B,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;;AD3BlE,IAAI,eAAe,GAAQ,EAAE,CAAC;AACrC,eAAe,CAAC,IAAI,GAAG,CAAC,CAAC;AACzB,eAAe,CAAC,IAAI,GAAG,CAAC,CAAC;AACzB,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC;AAC1B,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3B,eAAe,CAAC,GAAG,GAAG,CAAC,CAAC;AACxB,eAAe,CAAC,YAAY,GAAG,CAAC,CAAC;AACjC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAC/C,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAC/C,eAAe,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;AACjD,eAAe,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;AACnD,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC7C,eAAe,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,cAAc,CAAC;;;;;;;AAQ/D,AAAA,MAAA,SAAA,CAAA;;;;;;;IAOA,QAGY,CAAA,OAAA,EAAA,KAAA,EAHZ,GAGY;CAFX;;AD9BD;;;;;;;;;;;;;;;;;;AA6VA,AAAA,AAA8C;AAG9C,AAYA;;;;;;AAMA,AAAA,SAAA,UAAA,CATC,IAAA,EAAA,KAAA,EASD;IACE,QATY,IAAC,CAAI,KAAC,CAAK,KAAC,CAAK,EAAC;CAU/B;;;;;;;AA6BD,AAAA,SAAA,aAAA,CAXC,IAAA,EAAA,KAAA,EAWD;IACE,QAXY,IAAC,CAAI,KAAC,CAAK,KAAC,CAAK,EAAC;CAY/B;;;;;;;AAcD,AAAA,SAAA,cAAA,CAbC,IAAA,EAAA,KAAA,EAaD;IACE,QAbY,IAAC,CAAI,KAAC,CAAK,KAAC,CAAK,EAAC;CAc/B;;;;;;;AAcD,AAAA,SAAA,oBAAA,CAfC,IAAA,EAAA,KAAA,EAeD;IACE,QAfY,IAAC,CAAI,KAAC,CAAK,KAAC,CAAK,EAAC;CAgB/B;;;;;;;AAOD,AAAA,SAAA,WAAA,CAjBC,IAAA,EAAA,KAAA,EAiBD;IACE,QAjBY,IAAC,CAAI,KAAC,CAAK,KAAC,CAAK,EAAC;CAkB/B;;;;AAeD,AAAA,MAAA,YAAA,CAAA;;;;;IAKA,IAvBgB,GAuBhB,GAvBgB;;;;;IA4BhB,SA3BgB,GA2BhB,GA3BgB;;;;;IAgChB,QA/BgB,GA+BhB,GA/BgB;;;;;IAoChB,SAnCgB,GAmChB,GAnCgB;;;;;IAwChB,cAvCgB,GAuChB,GAvCgB;;;;;IA4ChB,UA3CgB,GA2ChB,GA3CgB;;;;;IAgDhB,OA/CgB,GA+ChB,GA/CgB;;;;;IAoDhB,sBAnDgB,GAmDhB,GAnDgB;;;;;IAwDhB,UAvDgB,GAuDhB,GAvDgB;;;;;;;IA8DhB,QA7DY,CAAA,OAAA,EAAA,GAAA,MAAA,EA6DZ,GA7DY;CA8DX;;;;;AA+BD,AA7DO,MAAM,QAAA,GAAqB;IA8DhC,cAAc,qBA7DE,SAAA,EAAA;IA8DhB,cAAc,qBA7DE,SAAA,EAAA;IA8DhB,kBAAkB,qBA7DE,SAAA,EAAA;IA8DpB,kBAAkB,qBA7DE,SAAA,EAAA;IA8DpB,kBAAkB,qBA7DE,SAAA,EAAA;IA8DpB,WAAW,qBA7DE,SAAA,EAAA;IA8Db,UAAU,qBA7DE,SAAA,EAAA;IA8DZ,kBAAkB,qBA7DE,SAAA,EAAA;IA8DpB,WAAW,qBA7DE,SAAA,EAAA;IA8Db,gBAAgB,qBA7DE,SAAA,EAAA;IA8DlB,cAAc,qBA7DE,SAAA,EAAA;IA8DhB,kBAAkB,qBA7DE,SAAA,EAAA;CA8DrB,CA7DC;;AD/eF;;;;;;;AASA,AAEA;;;;;;;AAOA,AAAA,SAAA,2CAAA,CACI,OAAqB,EAAE,QAAa,EAAE,SAAc,EAAE,YAAqB,EAD/E;IAEE,qBAPI,GAAA,GAQA,CADN,2GAAA,EACoH,QAPC,CAMrH,mBAAA,EAN6H,SAAsB,CAMnJ,EAAA,CAN4J,CAAI;IAQ9J,IAAI,YAPC,EAAa;QAQhB,GAAG;YACC,CAAR,mGAAA,CAA6G;gBACrG,CAAR,iDAAA,CAA2D,CAPC;KAQzD;IACD,OAPO,cAAA,CAAe,GAAC,EAAI,OAAA,CAAQ,CAAC;CAQrC;;;;;;AAMD,AAAA,SAAA,qBAAA,CAXC,GAAA,EAAA,OAAA,EAWD;IACE,IAAI,EAXE,GAAC,YAAc,KAAA,CAAM,EAAE;;;QAc3B,GAAG,GAXG,IAAI,KAAA,CAAM,GAAC,CAAG,QAAC,EAAQ,CAAE,CAAC;KAYjC;IACD,gBAAgB,CAXC,GAAC,EAAI,OAAA,CAAQ,CAAC;IAY/B,OAXO,GAAA,CAAI;CAYZ;;;;;;AAMD,AAAA,SAAA,cAAA,CAfC,GAAA,EAAA,OAAA,EAeD;IACE,uBAfM,GAAA,GAAM,IAAI,KAAA,CAAM,GAAC,CAAG,CAAC;IAgB3B,gBAAgB,CAfC,GAAC,EAAI,OAAA,CAAQ,CAAC;IAgB/B,OAfO,GAAA,CAAI;CAgBZ;;;;;;AAMD,SAAA,gBAAA,CAnBC,GAAA,EAAA,OAAA,EAmBD;IACE,EAAoB,GAnBZ,GAAK,mBAAC,CAAmB,GAAG,OAAA,CAAQ;IAoB5C,EAAoB,GAnBZ,GAAK,YAAC,CAAY,GAAG,OAAA,CAAQ,QAAC,CAAQ,IAAC,CAAI,OAAC,CAAO,CAAC;CAoB7D;;;;;AAKD,AAAA,SAAA,gBAAA,CAtBC,GAAA,EAsBD;IACE,OAtBO,CAAA,CAAE,eAAC,CAAe,GAAC,CAAG,CAAC;CAuB/B;;;;;AAKD,AAAA,SAAA,kBAAA,CAzBC,MAAA,EAyBD;IACE,OAzBO,IAAI,KAAA,CAAM,CAyBnB,qDAAA,EAzBoB,MAAwD,CAyB5E,CAzBkF,CAAE,CAAC;CA0BpF;;AD3ED;;;;;;;AASA,AACA,AAEA,AAEA,AACA,AAEA,AADO,MAAM,IAAA,GAAY,MACzB,GAD+B,CAAG;AAGlC,MADM,cAAA,GAAiB,IAAI,GAAA,EAAgB,CAAG;;;;;AAM9C,AAAA,SAAA,QAAA,CAJC,KAAA,EAID;IACE,qBAJI,GAAA,GAAM,cAAA,CAAe,GAAC,CAAG,KAAC,CAAK,CAAC;IAKpC,IAAI,CAJC,GAAC,EAAI;QAKR,GAAG,GAJG,SAAA,CAAU,KAAC,CAAK,GAAG,GAAA,GAAM,cAAA,CAAe,IAAC,CAAI;QAKnD,cAAc,CAJC,GAAC,CAAG,KAAC,EAAM,GAAA,CAAI,CAAC;KAKhC;IACD,OAJO,GAAA,CAAI;CAKZ;;;;;;;;AAQD,AAAA,SAAA,WAAA,CAVC,IAAA,EAAA,OAAA,EAAA,UAAA,EAAA,KAAA,EAUD;IACE,IAAI,KAVC,YAAgB,YAAA,EAAc;QAWjC,KAAK,GAVG,KAAA,CAAM,OAAC,CAAO;QAWtB,qBAVI,gBAAA,GAAmB,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,OAAC,CAAO,CAAC,YAAC,GAAc,UAAA,CAAW;QAWzE,qBAVI,QAAA,GAAW,IAAA,CAAK,SAAC,CAAS,gBAAC,CAAgB,CAAC;QAWhD,IAAI,QAVC,YAAmB,YAAA,EAAc;YAWpC,QAAQ,GAVG,QAAA,CAAS,OAAC,CAAO;SAW7B;QACD,IAAI,CAVC,SAAC,CAAS,gBAAC,CAAgB,GAAG,IAAI,YAAA,CAAa,QAAC,CAAQ,CAAC;KAW/D;IACD,OAVO,KAAA,CAAM;CAWd;AAED,MAVM,0BAAA,GAA6B,aAAA,CAAc;AAWjD,MAVM,sBAAA,GAAyB,SAAA,CAAU;;;;;AAezC,AAAA,SAAA,mBAAA,CAXC,MAeA,EAJD;IAKE,OAXO;QAYL,EAAE,EAXE,0BAAA;QAYJ,MAAM,EAXE,MAAA,CAAO,MAAC;QAYhB,aAAa,EAXE,MAAA,CAAO,aAAC;QAYvB,IAAI,EAXE,MAAA,CAAO,IAAC;KAYf,CAXC;CAYH;AAED,IAXI,gBAAA,GAAmB,CAAA,CAAE;;;;;AAgBzB,AAAA,SAAA,oBAAA,CAdC,IAAA,EAcD;IACE,IAAI,IAdC,IAAO,IAAA,CAAK,EAAC,KAAM,0BAAA,EAA4B;;QAgBlD,uBAdM,QAAA,IAeD,CAdC,IAAC,CAAI,aAAC,IAAgB,IAAA,IAAQ,IAAA,CAAK,aAAC,KAAiB,iBAAA,CAAkB,IAAC;YAezE,IAAI,CAdC,MAAC,CAAM,MAAC,IAAS,MAAA,CAAO,IAAC,CAAI,IAAC,CAAI,IAAC,CAAI,CAAC,MAAC,CAAM,CAAC;QAe1D,IAAI,QAdC,EAAS;YAeZ,IAAI,CAdC,EAAC,GAAI,CAchB,CAAA,EAdgB,gBAAK,EAAgB,CAcrC,CAduC,CAAE;SAepC;aAdM;YAeL,IAAI,CAdC,EAAC,GAAI,sBAAA,CAAuB;SAelC;KACF;IACD,IAAI,IAdC,IAAO,IAAA,CAAK,EAAC,KAAM,sBAAA,EAAwB;QAe9C,IAAI,GAdG,IAAA,CAAK;KAeb;IACD,OAdO,IAAA,IAAQ,IAAA,CAAK;CAerB;;;;;;;;AAQD,AAAA,SAAA,YAAA,CACI,IAAc,EAAE,GAAY,EAAE,UAAkB,EAAE,KAAU,EADhE;IAEE,uBApBM,SAAA,GAAY,IAAA,CAAK,SAAC,CAAS;IAqBjC,IAAI,CApBC,IAAC,CAAI,KAAC,GAAO,CAoBpB;QACM,CAAC,cApBC,CAAc,SAAC,CAAS,GAAC,CAAG,YAAC,GAAc,UAAA,CAAW,EAAE,KAAA,CAAM,EAAE;QAqBpE,OApBO,IAAA,CAAK;KAqBb;IACD,OApBO,KAAA,CAAM;CAqBd;;;;;;;;AAQD,AAAA,SAAA,qBAAA,CACI,IAAc,EAAE,GAAY,EAAE,UAAkB,EAAE,KAAU,EADhE;IAEE,IAAI,YA1BC,CAAY,IAAC,EAAK,GAAA,EAAK,UAAA,EAAY,KAAA,CAAM,EAAE;QA2B9C,IAAI,CA1BC,SAAC,CAAS,GAAC,CAAG,YAAC,GAAc,UAAA,CAAW,GAAG,KAAA,CAAM;QA2BtD,OA1BO,IAAA,CAAK;KA2Bb;IACD,OA1BO,KAAA,CAAM;CA2Bd;;;;;;;;AAQD,AAAA,SAAA,qBAAA,CACI,IAAc,EAAE,GAAY,EAAE,UAAkB,EAAE,KAAU,EADhE;IAEE,uBAhCM,QAAA,GAAW,IAAA,CAAK,SAAC,CAAS,GAAC,CAAG,YAAC,GAAc,UAAA,CAAW,CAAC;IAiC/D,IAAI,CAhCC,IAAC,CAAI,KAAC,GAAO,CAgCpB,4BAhCmD,CAAA,YAAE,CAAY,QAAC,EAAS,KAAA,CAAM,EAAE;QAiC/E,MAhCM,2CAAA,CAiCF,QAAQ,CAhCC,kBAAC,CAAkB,IAAC,EAAK,GAAA,CAAI,KAAC,CAAK,EAAE,QAAA,EAAU,KAAA,EAiCxD,CAAC,IAhCC,CAAI,KAAC,GAAO,CA8BtB,6BA9BsD,CAAA,CAAE,CAAC;KAiCtD;CACF;;;;;AAKD,AAAA,SAAA,uBAAA,CAnCC,IAAA,EAmCD;IACE,qBAnCI,QAAA,GAA0B,IAAA,CAAK;IAoCnC,OAAO,QAnCC,EAAS;QAoCf,IAAI,QAnCC,CAAQ,GAAC,CAAG,KAAC,GAAO,CAmC7B,eAnC+C;YAoCzC,QAAQ,CAnCC,KAAC,IAAQ,CAmCxB,qBAnCgD;SAoC3C;QACD,QAAQ,GAnCG,QAAA,CAAS,mBAAC,IAAsB,QAAA,CAAS,MAAC,CAAM;KAoC5D;CACF;;;;;;;;AAQD,AAAA,SAAA,aAAA,CACI,IAAc,EAAE,SAAiB,EAAE,SAAiB,EAAE,KAAU,EADpE;IAEE,uBAzCM,OAAA,GAAU,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,SAAC,CAAS,CAAC;IA0C1C,uBAzCM,SAAA,GA0CF,OAAO,CAzCC,KAAC,GAAO,QAwCtB,uBAxCgD,aAAA,CAAc,IAAC,EAAK,SAAA,CAAU,CAAC,aAAC,GAAe,IAAA,CAAK;IA0ClG,uBAAuB,CAzCC,SAAC,CAAS,CAAC;IA0CnC,OAzCO,QAAA,CAAS,WAAC,CAAW,IAAC,EAAK,SAAA,EAAW,SAAA,EAAW,KAAA,CAAM,CAAC;CA0ChE;;;;;AAKD,AAAA,SAAA,qBAAA,CA5CC,IAAA,EA4CD;IACE,IAAI,IA5CC,CAAI,MAAC,EAAO;QA6Cf,uBA5CM,UAAA,GAAa,IAAA,CAAK,MAAC,CAAM;QA6C/B,OA5CO,aAAA,CAAc,UAAC,mBAAU,EAAC,IAAA,CAAK,aAAC,GAAe,KAAC,CAAK,CAAC;KA6C9D;IACD,OA5CO,IAAA,CAAK;CA6Cb;;;;;;;;AAQD,AAAA,SAAA,YAAA,CA7CC,IAAA,EA6CD;IACE,uBA7CM,UAAA,GAAa,IAAA,CAAK,MAAC,CAAM;IA8C/B,IAAI,UA7CC,EAAW;QA8Cd,OAAuB,EA7ChB,IAAA,CAAK,aAAC,GAAe,MAAC,CAAM;KA8CpC;SA7CM;QA8CL,OA7CO,IAAA,CAAK;KA8Cb;CACF;;;;;;AAMD,AAAA,SAAA,UAAA,CAjDC,IAAA,EAAA,GAAA,EAiDD;IACE,QAAQ,GAjDC,CAAG,KAAC,GAAO,SAiDtB;QACI,KAjDK,CAiDT;YACM,OAjDO,aAAA,CAAc,IAAC,EAAK,GAAA,CAAI,KAAC,CAAK,CAAC,aAAC,CAAa;QAkDtD,KAjDK,CAiDT;YACM,OAjDO,UAAA,CAAW,IAAC,EAAK,GAAA,CAAI,KAAC,CAAK,CAAC,UAAC,CAAU;KAkDjD;CACF;;;;;;AAMD,AAAA,SAAA,oBAAA,CArDC,MAAA,EAAA,IAAA,EAqDD;IACE,OArDO,MAAA,GAAS,CAqDlB,EArDkB,MAAI,CAqDtB,CAAA,EArD4B,IAAI,CAqDhC,CArDoC,GAAI,IAAA,CAAK;CAsD5C;;;;;AAKD,AAAA,SAAA,eAAA,CAxDC,IAAA,EAwDD;IACE,OAxDO,CAAA,CAAE,IAAC,CAAI,MAAC,IAAS,CAAA,EAAG,EAAA,IAAC,CAAI,aAAC,GAAe,KAAC,GAAO,KAwD1D,iBAxD8E,CAAC;CAyD9E;;;;;AAKD,AAAA,SAAA,cAAA,CA3DC,IAAA,EA2DD;IACE,OA3DO,CAAA,CAAE,IAAC,CAAI,MAAC,IAAS,EAAE,EAAA,IAAC,CAAI,aAAC,GAAe,KAAC,GAAO,KA2DzD,iBA3D6E,CAAC;CA4D7E;;;;;AAKD,AAAA,SAAA,aAAA,CA9DC,OAAA,EA8DD;IACE,OA9DO,CAAA,KAAK,OAAE,GAAS,EAAA,CAAG,CAAC;CA+D5B;;;;;AAKD,AAAA,SAAA,sBAAA,CACI,iBAA6D,EADjE;IAME,uBAjEM,cAAA,GAAsD,EAAA,CAAG;IAkE/D,qBAjEI,eAAA,GAAkB,CAAA,CAAE;IAkExB,uBAjEM,UAAA,GAAgD,EAAA,CAAG;IAkEzD,IAAI,iBAjEC,EAAkB;QAkErB,iBAAiB,CAjEC,OAAC,CAAO,CAAC,CAAC,OAAC,EAAQ,SAAA,CAAU,KAiEnD;YACM,IAAI,OAjEO,OAAA,KAAY,QAAA,EAAU;gBAkE/B,cAAc,CAjEC,OAAC,CAAO,GAAG,SAAA,CAAU;gBAkEpC,eAAe,IAjEI,aAAA,CAAc,OAAC,CAAO,CAAC;aAkE3C;iBAjEM;gBAkEL,UAAU,CAjEC,OAAC,CAAO,GAAG,SAAA,CAAU;aAkEjC;SACF,CAjEC,CAAC;KAkEJ;IACD,OAjEO,EAAA,cAAE,EAAe,UAAA,EAAY,eAAA,EAAgB,CAAC;CAkEtD;;;;;;;AAOD,AAAA,SAAA,sBAAA,CAtEC,IAAA,EAAA,UAAA,EAAA,GAAA,EAsED;IACE,qBAtEI,YAAA,GAAe,GAAA,CAAI,YAAC,CAAY;IAuEpC,IAAI,YAtEC,EAAa;QAuEhB,IAAI,CAtEC,YAAC,CAAY,KAAC,GAAO,CAsE9B,wBAtEyD,CAAA;YAuEjD,CAAC,YAtEC,CAAY,KAAC,GAAO,QAsE9B,0BAtE2D,CAAA;aAuEjC,EAAE,YAtElB,CAAY,OAAC,GAAS,qBAAC,IAAqB,EAAA,EAuE7C,YAAY,CAtEC,OAAC,GAAS,qBAAC,GAAuB,aAAC;gBAuE5C,iBAAiB,CAtEC,MAAC,CAAM,EAAE;;;YAyElC,OAtEO,aAAA,CAAc,IAAC,mBAAI,EAAC,GAAA,CAAI,YAAC,GAAc,KAAC,CAAK,CAAC,aAAC,CAAa;SAuEpE;KACF;SAtEM;QAuEL,OAtEO,UAAA,CAAW;KAuEnB;CACF;AAED,MAtEM,qBAAA,GAAwB,IAAI,OAAA,EAA4B,CAAG;;;;;AA2EjE,AAAA,SAAA,qBAAA,CAzEC,OAAA,EAyED;IACE,qBAzEI,KAAA,KAAwB,qBAAA,CAAsB,GAAC,CAAG,OAAC,CAAO,EAAA,CAAG;IA0EjE,IAAI,CAzEC,KAAC,EAAM;QA0EV,KAAK,GAzEG,OAAA,CAAQ,MAAM,IAAA,CAAK,CAAC;QA0E5B,KAAK,CAzEC,OAAC,GAAS,OAAA,CAAQ;QA0ExB,qBAAqB,CAzEC,GAAC,CAAG,OAAC,EAAQ,KAAA,CAAM,CAAC;KA0E3C;IACD,OAzEO,KAAA,CAAM;CA0Ed;;;;;AAKD,AAAA,SAAA,eAAA,CA5EC,IAAA,EA4ED;IACE,uBA5EM,WAAA,GAAqB,EAAA,CAAG;IA6E9B,oBAAoB,CA5EC,IAAC,EAAK,CA4E7B,gBA5EuD,SAAA,EAAW,SAAA,EAAW,WAAA,CAAY,CAAC;IA6ExF,OA5EO,WAAA,CAAY;CA6EpB;;;;;;;;;AAWD,AAAA,SAAA,oBAAA,CACI,IAAc,EAAE,MAAwB,EAAE,UAAe,EAAE,WAAgB,EAAE,MAAc,EAD/F;;IAGE,IAAI,MAnFC,KAAU,CAmFjB,oBAnF+C;QAoF3C,UAAU,GAnFG,IAAA,CAAK,QAAC,CAAQ,UAAC,CAAU,UAAC,CAAU,IAAC,qBAAK,IAAA,CAAK,GAAC,CAAG,kBAAC,GAAoB,CAAC,CAAC;KAoFxF;IACD,uBAAuB,CACnB,IAAI,EAnFE,MAAA,EAAQ,CAAA,EAAG,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,MAAC,GAAQ,CAAA,EAAG,UAAA,EAAY,WAAA,EAAa,MAAA,CAAO,CAAC;CAoFlF;;;;;;;;;;;AAWD,AAAA,SAAA,uBAAA,CACI,IAAc,EAAE,MAAwB,EAAE,UAAkB,EAAE,QAAgB,EAAE,UAAe,EAC/F,WAAgB,EAAE,MAAc,EAFpC;IAGE,KAAK,qBA5FI,CAAA,GAAI,UAAA,EAAY,CAAA,IAAK,QAAA,EAAU,CAAA,EAAE,EAAG;QA6F3C,uBA5FM,OAAA,GAAU,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,CAAC,CAAC,CAAC;QA6FlC,IAAI,OA5FC,CAAO,KAAC,IAAO,CA4FxB,qBA5FiD,CA4FjD,kBA5FsE,CA4FtE,qBA5F8F,EAAE;YA6F1F,eAAe,CA5FC,IAAC,EAAK,OAAA,EAAS,MAAA,EAAQ,UAAA,EAAY,WAAA,EAAa,MAAA,CAAO,CAAC;SA6FzE;;QAED,CAAC,IA5FI,OAAA,CAAQ,UAAC,CAAU;KA6FzB;CACF;;;;;;;;;;AAUD,AAAA,SAAA,yBAAA,CACI,IAAc,EAAE,cAAsB,EAAE,MAAwB,EAAE,UAAe,EACjF,WAAgB,EAAE,MAAc,EAFpC;IAGE,qBApGI,QAAA,GAA0B,IAAA,CAAK;IAqGnC,OAAO,QApGC,IAAW,CAAA,eAAE,CAAe,QAAC,CAAQ,EAAE;QAqG7C,QAAQ,GApGG,QAAA,CAAS,MAAC,CAAM;KAqG5B;IACD,uBApGM,QAAA,GAAS,EAAE,QAAA,GAAW,MAAC,CAAM;IAqGnC,uBApGM,SAAA,GAAY,YAAA,oBAAa,QAAC,GAAU,CAAC;IAqG3C,uBApGM,UAAA,GAAW,EAAE,SAAA,GAAY,KAAC,GAAO,CAAA,CAAE;IAqGzC,uBApGM,QAAA,GAAS,EAAE,SAAA,GAAY,KAAC,GAAK,EAAE,SAAA,GAAY,UAAC,CAAU;IAqG5D,KAAK,qBApGI,CAAA,GAAI,UAAA,EAAY,CAAA,IAAK,QAAA,EAAU,CAAA,EAAE,EAAG;QAqG3C,uBApGM,OAAA,GAAQ,EAAE,QAAA,GAAW,GAAC,CAAG,KAAC,CAAK,CAAC,CAAC,CAAC;QAqGxC,IAAI,OApGC,CAAO,cAAC,KAAkB,cAAA,EAAgB;YAqG7C,eAAe,oBApGC,QAAC,IAAW,OAAA,EAAS,MAAA,EAAQ,UAAA,EAAY,WAAA,EAAa,MAAA,CAAO,CAAC;SAqG/E;;QAED,CAAC,IApGI,OAAA,CAAQ,UAAC,CAAU;KAqGzB;IACD,IAAI,CApGC,EAAA,QAAC,GAAU,MAAC,EAAO;;QAsGtB,uBApGM,cAAA,GAAiB,IAAA,CAAK,IAAC,CAAI,gBAAC,CAAgB,cAAC,CAAc,CAAC;QAqGlE,IAAI,cApGC,EAAe;YAqGlB,KAAK,qBApGI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,cAAA,CAAe,MAAC,EAAO,CAAA,EAAE,EAAG;gBAqG9C,oBAAoB,CApGC,IAAC,EAAK,cAAA,CAAe,CAAC,CAAC,EAAE,MAAA,EAAQ,UAAA,EAAY,WAAA,EAAa,MAAA,CAAO,CAAC;aAqGxF;SACF;KACF;CACF;;;;;;;;;;AAUD,SAAA,eAAA,CACI,IAAc,EAAE,OAAgB,EAAE,MAAwB,EAAE,UAAe,EAAE,WAAgB,EAC7F,MAAc,EAFlB;IAGE,IAAI,OA5GC,CAAO,KAAC,GAAO,CA4GtB,sBA5G+C;QA6G3C,yBAAyB,CACrB,IAAI,mBA5GC,EAAC,OAAA,CAAQ,SAAC,GAAW,KAAC,EAAM,MAAA,EAAQ,UAAA,EAAY,WAAA,EAAa,MAAA,CAAO,CAAC;KA6G/E;SA5GM;QA6GL,uBA5GM,EAAA,GAAK,UAAA,CAAW,IAAC,EAAK,OAAA,CAAQ,CAAC;QA6GrC,IAAI,MA5GC,KAAU,CA4GnB,uBA5GmD,OAAE,CAAO,KAAC,GAAO,QA4GpE,qBA5G4F;aA6GnF,OA5GC,CAAO,YAAC,GAAc,EA4GhC,4BA5GkE,EAAE;;YA8G9D,IAAI,OA5GC,CAAO,YAAC,IAAc,EA4GjC,yBA5GiE,EAAE;gBA6G3D,oBAAoB,CA5GC,IAAC,EAAK,EAAA,EAAI,MAAA,EAAQ,UAAA,EAAY,WAAA,EAAa,MAAA,CAAO,CAAC;aA6GzE;YACD,IAAI,OA5GC,CAAO,YAAC,IAAc,EA4GjC,6BA5GqE,EAAE;gBA6G/D,uBA5GM,QAAA,GAAW,aAAA,CAAc,IAAC,EAAK,OAAA,CAAQ,KAAC,CAAK,CAAC,aAAC,CAAa;gBA6GlE,oBAAoB,CA5GC,QAAC,EAAS,EAAA,EAAI,MAAA,EAAQ,UAAA,EAAY,WAAA,EAAa,MAAA,CAAO,CAAC;aA6G7E;SACF;aA5GM;YA6GL,oBAAoB,CA5GC,IAAC,EAAK,EAAA,EAAI,MAAA,EAAQ,UAAA,EAAY,WAAA,EAAa,MAAA,CAAO,CAAC;SA6GzE;QACD,IAAI,OA5GC,CAAO,KAAC,GAAO,OA4GxB,sBA5GiD;YA6G3C,uBA5GM,aAAA,GAAc,EAAE,aAAA,CAAc,IAAC,EAAK,OAAA,CAAQ,KAAC,CAAK,CAAC,aAAC,GAAe,cAAC,CAAc;YA6GxF,KAAK,qBA5GI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,aAAA,CAAc,MAAC,EAAO,CAAA,EAAE,EAAG;gBA6G7C,oBAAoB,CA5GC,aAAC,CAAa,CAAC,CAAC,EAAE,MAAA,EAAQ,UAAA,EAAY,WAAA,EAAa,MAAA,CAAO,CAAC;aA6GjF;SACF;QACD,IAAI,OA5GC,CAAO,KAAC,GAAO,CA4GxB,sBA5GiD,CAAA,EAAA,OAAE,CAAO,OAAC,GAAS,IAAC,EAAK;YA6GpE,uBAAuB,CACnB,IAAI,EA5GE,MAAA,EAAQ,OAAA,CAAQ,KAAC,GAAO,CAAA,EAAG,OAAA,CAAQ,KAAC,GAAO,OAAA,CAAQ,UAAC,EAAW,UAAA,EA6GrE,WAAW,EA5GE,MAAA,CAAO,CAAC;SA6G1B;KACF;CACF;;;;;;;;;;AAUD,SAAA,oBAAA,CACI,IAAc,EAAE,UAAe,EAAE,MAAwB,EAAE,UAAe,EAAE,WAAgB,EAC5F,MAAc,EAFlB;IAGE,uBApHM,QAAA,GAAW,IAAA,CAAK,QAAC,CAAQ;IAqH/B,QAAQ,MApHC;QAqHP,KApHK,CAoHT;YACM,QAAQ,CApHC,WAAC,CAAW,UAAC,EAAW,UAAA,CAAW,CAAC;YAqH7C,MAAM;QACR,KApHK,CAoHT;YACM,QAAQ,CApHC,YAAC,CAAY,UAAC,EAAW,UAAA,EAAY,WAAA,CAAY,CAAC;YAqH3D,MAAM;QACR,KApHK,CAoHT;YACM,QAAQ,CApHC,WAAC,CAAW,UAAC,EAAW,UAAA,CAAW,CAAC;YAqH7C,MAAM;QACR,KApHK,CAoHT;YApHkC,EAqH5B,MAAM,GApHG,IAAC,CAAI,UAAC,CAAU,CAAC;YAqH1B,MAAM;KACT;CACF;AAED,MApHM,YAAA,GAAe,iBAAA,CAAkB;;;;;AAyHvC,AAAA,SAAA,cAAA,CAvHC,IAAA,EAuHD;IACE,IAAI,IAvHC,CAAI,CAAC,CAAC,KAAK,GAAA,EAAK;QAwHnB,uBAvHM,KAAA,KAAQ,IAAA,CAAK,KAAC,CAAK,YAAC,CAAY,EAAA,CAAG;QAwHzC,OAvHO,CAAA,KAAE,CAAK,CAAC,CAAC,EAAE,KAAA,CAAM,CAAC,CAAC,CAAC,CAAC;KAwH7B;IACD,OAvHO,CAAA,EAAE,EAAG,IAAA,CAAK,CAAC;CAwHnB;;;;;AAKD,AAAA,SAAA,gBAAA,CA1HC,QAAA,EA0HD;IACE,qBA1HI,KAAA,GAAQ,CAAA,CAAE;IA2Hd,KAAK,qBA1HI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,MAAC,EAAO,CAAA,EAAE,EAAG;QA2HxC,KAAK,IA1HI,QAAA,CAAS,CAAC,CAAC,CAAC,KAAC,CAAK;KA2H5B;IACD,OA1HO,KAAA,CAAM;CA2Hd;;;;;;AAMD,AAAA,SAAA,WAAA,CA9HC,UAAA,EAAA,cAAA,EA8HD;IACE,qBA9HI,MAAA,GAAS,EAAA,CAAG;IA+HhB,KAAK,qBA9HI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,GAAa,CAAA,EAAG,CAAA,GAAI,CAAA,GAAI,CAAA,EAAG;QA+H7C,MAAM,GA9HG,MAAA,GAAS,cAAA,CAAe,CAAC,CAAC,GAAG,iBAAA,CAAkB,cAAC,CAAc,CAAC,GAAG,CAAA,CAAE,CAAC,CAAC;KA+HhF;IACD,OA9HO,MAAA,GAAS,cAAA,CAAe,UAAC,GAAY,CAAA,CAAE,CAAC;CA+HhD;;;;;;;;;;;;;;;;;;;;;;;;AAwBD,AAAA,SAAA,iBAAA,CACI,UAAkB,EAAE,EAAU,EAAE,EAAO,EAAE,EAAU,EAAE,EAAQ,EAAE,EAAW,EAAE,EAAQ,EACpF,EAAW,EAAE,EAAQ,EAAE,EAAW,EAAE,EAAQ,EAAE,EAAW,EAAE,EAAQ,EAAE,EAAW,EAAE,EAAQ,EAC1F,EAAW,EAAE,EAAQ,EAAE,EAAW,EAAE,EAAQ,EAAE,EAAW,EAH7D;IAIE,QAAQ,UApJC;QAqJP,KApJK,CAAA;YAqJH,OApJO,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,CAAG;QAqJzC,KApJK,CAAA;YAqJH,OApJO,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,CAAG;QAqJtE,KApJK,CAAA;YAqJH,OApJO,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE;gBAqJvF,EAAE,CApJC;QAqJT,KApJK,CAAA;YAqJH,OApJO,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE;gBAqJvF,EAAE,GApJG,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,CAAG;QAqJtC,KApJK,CAAA;YAqJH,OApJO,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE;gBAqJvF,EAAE,GApJG,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,CAAG;QAqJnE,KApJK,CAAA;YAqJH,OApJO,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE;gBAqJvF,EAAE,GApJG,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,CAAG;QAqJhG,KApJK,CAAA;YAqJH,OApJO,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE;gBAqJvF,EAAE,GApJG,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE;gBAqJpF,EAAE,GApJG,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,CAAG;QAqJtC,KApJK,CAAA;YAqJH,OApJO,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE;gBAqJvF,EAAE,GApJG,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE;gBAqJpF,EAAE,GApJG,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,CAAG;QAqJnE,KApJK,CAAA;YAqJH,OApJO,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE;gBAqJvF,EAAE,GApJG,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE;gBAqJpF,EAAE,GApJG,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,GAAK,iBAAA,CAAkB,EAAC,CAAE,GAAG,EAAA,CAAG;QAqJhG;YACE,MApJM,IAAI,KAAA,CAAM,CAoJtB,wCAAA,CApJuB,CAA0C,CAAC;KAqJ/D;CACF;;;;;AAKD,SAAA,iBAAA,CAvJC,CAAA,EAuJD;IACE,OAvJO,CAAA,IAAK,IAAA,GAAO,CAAA,CAAE,QAAC,EAAQ,GAAI,EAAA,CAAG;CAwJtC;AAED,AAvJO,MAAM,WAAA,GAAqB,EAAA,CAAG;AAwJrC,AAvJO,MAAM,SAAA,GAAkC,EAAA,CAAG;;AD3ZlD;;;;;;;AAUA,AAEA,AACA,AACA;;;;;;;;;AASA,AAAA,SAAA,SAAA,CACI,KAAgB,EAAE,iBAAsD,EACxE,cAAsB,EAAE,UAAkB,EAAE,WAAkC,EAC9E,eAAuC,EAH3C;IAIE,KAAK,IATI,CASX,mBATiC;IAU/B,MATM,EAAA,cAAE,EAAe,UAAA,EAAY,eAAA,EAAgB,GAAG,sBAAA,CAAuB,iBAAC,CAAiB,CAAC;IAUhG,uBATM,QAAA,GAAW,eAAA,GAAkB,qBAAA,CAAsB,eAAC,CAAe,GAAG,IAAA,CAAK;IAWjF,OATO;;QAWL,KAAK,EATE,CAAA,CAAE;QAUT,MAAM,EATE,IAAA;QAUR,YAAY,EATE,IAAA;QAUd,YAAY,EATE,CAAA,CAAE;QAUhB,WAAW,EATE,CAAA,CAAE;;QAWf,KAAK;QACL,UAAU,EATE,CAAA;QAUZ,gBAAgB,EATE,CAAA;QAUlB,mBAAmB,EATE,CAAA,EAAG,cAAA,EAAgB,eAAA,EAAiB,UAAA,EAAY,cAAA,EAAgB,UAAA;QAUrF,QAAQ,EATE,EAAA;QAUV,YAAY,EATE,CAAA;QAUd,OAAO,EATE,EAAA;QAUT,OAAO,EATE;YAUP,EAAE,EATE,IAAA;YAUJ,IAAI,EATE,IAAA;YAUN,KAAK,EATE,IAAA,EAAM,QAAA;YAUb,iBAAiB,EATE,IAAA;YAUnB,aAAa,EATE,IAAA;YAUf,qBAAqB,EATE,IAAA;YAUvB,eAAe,EATE,IAAA;YAUjB,YAAY,EATE,IAAA;YAUd,WAAW,EATE,WAAA,IAAe,IAAA;SAU7B;QACD,QAAQ,EATE,IAAA;QAUV,IAAI,EATE,IAAA;QAUN,KAAK,EATE,IAAA;QAUP,SAAS,EATE,IAAA;KAUZ,CATC;CAUH;;;;;;;;;;;;;;;AAeD,AAAA,SAAA,UAAA,CACI,KAAgB,EAAE,iBAAsD,EACxE,cAAsB,EAAE,UAAkB,EAAE,gBAAwB,EACpE,UAHJ,GAGqC,EAAE,EACnC,QAA6D,EAAE,OAA8B,EAC7F,WAAkC,EAAE,aAAqC,EACzE,qBAA4C,EANhD;IAOE,IAAI,CAtBC,WAAC,EAAY;QAuBhB,WAAW,GAtBG,IAAA,CAAK;KAuBpB;IACD,MAtBM,EAAA,cAAE,EAAe,UAAA,EAAY,eAAA,EAAgB,GAAG,sBAAA,CAAuB,iBAAC,CAAiB,CAAC;IAuBhG,qBAtBI,EAAA,KAAa,IAAA,EAAA,CAAO;IAuBxB,qBAtBI,IAAA,KAAe,IAAA,EAAA,CAAO;IAuB1B,IAAI,gBAtBC,EAAiB;QAuBpB,CAAC,EAtBC,EAAG,IAAA,CAAK,GAAG,cAAA,CAAe,gBAAC,CAAgB,CAAC;KAuB/C;IACD,QAAQ,GAtBG,QAAA,IAAY,EAAA,CAAG;IAuB1B,uBAtBM,WAAA,GAA4B,IAAI,KAAA,CAAM,QAAC,CAAQ,MAAC,CAAM,CAAC;IAuB7D,KAAK,qBAtBI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,MAAC,EAAO,CAAA,EAAE,EAAG;QAuBxC,MAtBM,CAAA,YAAE,EAAa,gBAAA,EAAkB,uBAAA,CAAwB,GAAG,QAAA,CAAS,CAAC,CAAC,CAAC;QAwB9E,MAtBM,CAAA,EAAE,EAAG,IAAA,CAAK,GAAG,cAAA,CAAe,gBAAC,CAAgB,CAAC;QAuBpD,qBAtBI,eAAA,KAAmC,SAAA,EAAA,CAAY;QAuBnD,qBAtBI,MAAA,KAAiB,SAAA,EAAA,CAAY;QAuBjC,QAAQ,YAtBC,GAAc,EAsB3B;YACM,KAtBK,CAsBX;gBACQ,MAAM,IAtBW,uBAAC,CAAA,CAAuB;gBAuBzC,MAAM;YACR,KAtBK,CAsBX,4BAtB6C;YAuBvC,KAtBK,CAsBX;gBACQ,eAAe,IAtBoB,uBAAC,CAAA,CAAuB;gBAuB3D,MAAM;SACT;QACD,WAAW,CAtBC,CAAC,CAAC;YAuBV,EAAC,KAtBC,EAAM,YAAA,EAAc,EAAA,EAAI,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,eAAA,EAAiB,MAAA,EAAO,CAAC;KAuBrF;IACD,OAAO,GAtBG,OAAA,IAAW,EAAA,CAAG;IAuBxB,uBAtBM,UAAA,GAA0B,IAAI,KAAA,CAAM,OAAC,CAAO,MAAC,CAAM,CAAC;IAuB1D,KAAK,qBAtBI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,MAAC,EAAO,CAAA,EAAE,EAAG;QAuBvC,MAtBM,CAAA,MAAE,EAAO,SAAA,CAAU,GAAG,OAAA,CAAQ,CAAC,CAAC,CAAC;QAuBvC,UAAU,CAtBC,CAAC,CAAC,GAAG;YAuBd,IAAI,EAtBE,CAsBZ;YACM,MAAM,oBAtBO,MAAC,CAAA,EAAO,SAAA;YAuBrB,QAAQ,EAtBE,IAAA;SAuBX,CAtBC;KAuBH;IACD,UAAU,GAtBG,UAAA,IAAc,EAAA,CAAG;IAuB9B,uBAtBM,KAAA,IAAoC,UAAC,CAAU,GAAC,CAAG,CAAC,CAAC,gBAAC,EAAiB,KAAA,CAAM,KAsBrF;QACI,MAtBM,CAAA,EAAE,EAAG,IAAA,CAAK,GAAG,cAAA,CAAe,gBAAC,CAAgB,CAAC;QAuBpD,OAtBO,CAAA,EAAE,EAAG,IAAA,EAAM,KAAA,CAAM,CAAC;KAuB1B,CAtBC,CAAA,CAAC;IAuBH,qBAAqB,GAtBG,oBAAA,CAAqB,qBAAC,CAAqB,CAAC;IAuBpE,IAAI,aAtBC,EAAc;QAuBjB,KAAK,IAtBI,QAsBb,qBAtBqC;KAuBlC;IACD,KAAK,IAtBI,CAsBX,mBAtBiC;IAuB/B,OAtBO;;QAwBL,KAAK,EAtBE,CAAA,CAAE;QAuBT,MAAM,EAtBE,IAAA;QAuBR,YAAY,EAtBE,IAAA;QAuBd,YAAY,EAtBE,CAAA,CAAE;QAuBhB,WAAW,EAtBE,CAAA,CAAE;;QAwBf,KAAK;QACL,UAAU,EAtBE,CAAA;QAuBZ,gBAAgB,EAtBE,CAAA;QAuBlB,mBAAmB,EAtBE,CAAA,EAAG,cAAA,EAAgB,eAAA,EAAiB,UAAA,EAAY,cAAA,EAAgB,UAAA;QAuBrF,QAAQ,EAtBE,WAAA;QAuBV,YAAY,EAtBE,gBAAA,CAAiB,WAAC,CAAW;QAuB3C,OAAO,EAtBE,UAAA;QAuBT,OAAO,EAtBE;YAuBP,EAAE;YACF,IAAI;YACJ,KAAK;YACL,QAAQ,EAtBE,IAAA;;YAwBV,iBAAiB,EAtBE,IAAA;YAuBnB,aAAa,EAtBE,aAAA,IAAiB,IAAA;YAuBhC,qBAAqB,EAtBE,qBAAA;YAuBvB,eAAe,EAtBE,IAAA;YAuBjB,YAAY,EAtBE,IAAA;YAuBd,WAAW,EAtBE,WAAA,IAAe,IAAA;SAuB7B;QACD,QAAQ,EAtBE,IAAA;QAuBV,IAAI,EAtBE,IAAA;QAuBN,KAAK,EAtBE,IAAA;QAuBP,SAAS,EAtBE,IAAA;KAuBZ,CAtBC;CAuBH;;;;;;;AAOD,AAAA,SAAA,aAAA,CA3BC,IAAA,EAAA,UAAA,EAAA,GAAA,EA2BD;IACE,uBA3BM,KAAA,KAAQ,GAAA,CAAI,OAAC,EAAA,CAAS;IA4B5B,uBA3BM,kBAAA,GAAqB,IAAA,CAAK,IAAC,CAAI,cAAC,CAAc;IA4BpD,uBA3BM,QAAA,GAAW,IAAA,CAAK,QAAC,CAAQ;IA4B/B,qBA3BI,EAAI,CAAI;IA4BZ,IAAI,IA3BC,CAAI,MAAC,IAAS,CAAA,kBAAE,EAAmB;QA4BtC,IAAI,KA3BC,CAAK,IAAC,EAAK;YA4Bd,EAAE,GA3BG,QAAA,CAAS,aAAC,CAAa,KAAC,CAAK,IAAC,EAAK,KAAA,CAAM,EAAC,CAAE,CAAC;SA4BnD;aA3BM;YA4BL,EAAE,GA3BG,QAAA,CAAS,aAAC,CAAa,EAAC,CAAE,CAAC;SA4BjC;QACD,uBA3BM,QAAA,GAAW,sBAAA,CAAuB,IAAC,EAAK,UAAA,EAAY,GAAA,CAAI,CAAC;QA4B/D,IAAI,QA3BC,EAAS;YA4BZ,QAAQ,CA3BC,WAAC,CAAW,QAAC,EAAS,EAAA,CAAG,CAAC;SA4BpC;KACF;SA3BM;QA4BL,EAAE,GA3BG,QAAA,CAAS,iBAAC,CAAiB,kBAAC,CAAkB,CAAC;KA4BrD;IACD,IAAI,KA3BC,CAAK,KAAC,EAAM;QA4Bf,KAAK,qBA3BI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,KAAC,CAAK,MAAC,EAAO,CAAA,EAAE,EAAG;YA4B3C,MA3BM,CAAA,EAAE,EAAG,IAAA,EAAM,KAAA,CAAM,GAAG,KAAA,CAAM,KAAC,CAAK,CAAC,CAAC,CAAC;YA4BzC,QAAQ,CA3BC,YAAC,CAAY,EAAC,EAAG,IAAA,EAAM,KAAA,EAAO,EAAA,CAAG,CAAC;SA4B5C;KACF;IACD,OA3BO,EAAA,CAAG;CA4BX;;;;;;;;AAQD,AAAA,SAAA,sBAAA,CAjCC,IAAA,EAAA,QAAA,EAAA,GAAA,EAAA,EAAA,EAiCD;IACE,KAAK,qBAjCI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,OAAC,CAAO,MAAC,EAAO,CAAA,EAAE,EAAG;QAkC3C,uBAjCM,MAAA,GAAS,GAAA,CAAI,OAAC,CAAO,CAAC,CAAC,CAAC;QAkC9B,uBAjCM,kBAAA,GAAqB,yBAAA,CAkCvB,IAAI,EAjCE,GAAA,CAAI,KAAC,EAAM,oBAAA,CAAqB,MAAC,CAAM,MAAC,EAAO,MAAA,CAAO,SAAC,CAAS,CAAC,CAAC;QAkC5E,qBAjCI,YAAA,GAA4D,MAAA,CAAO,MAAC,CAAM;QAkC9E,qBAjCI,YAAA,GAAe,IAAA,CAAK;QAkCxB,IAAI,MAjCC,CAAM,MAAC,KAAU,WAAA,EAAa;YAkCjC,YAAY,GAjCG,IAAA,CAAK;YAkCpB,YAAY,GAjCG,QAAA,CAAS;SAkCzB;QACD,uBAjCM,UAAA,IACG,YAAC,CAAY,QAAC,CAAQ,MAAC,CAAM,YAAC,IAAe,EAAA,EAAI,MAAA,CAAO,SAAC,EAAU,kBAAA,CAAmB,CAAA,CAAC;QAAA,EAkChG,IAAI,CAjCC,WAAC,GAAa,GAAC,CAAG,WAAC,GAAa,CAAA,CAAE,GAAG,UAAA,CAAW;KAkCtD;CACF;;;;;;;AAOD,SAAA,yBAAA,CAtCC,IAAA,EAAA,KAAA,EAAA,SAAA,EAsCD;IACE,OAtCO,CAAA,KAAQ,KAsCjB;QACI,IAtCI;YAuCF,OAtCO,aAAA,CAAc,IAAC,EAAK,KAAA,EAAO,SAAA,EAAW,KAAA,CAAM,CAAC;SAuCrD;QAtCC,OAAA,CAAQ,EAAE;;YAwCV,IAAI,CAtCC,IAAC,CAAI,YAAC,CAAY,WAAC,CAAW,CAAC,CAAC,CAAC;SAuCvC;KACF,CAAA;CACF;;;;;;;;;;;;;;;;AAgBD,AAAA,SAAA,2BAAA,CACI,IAAc,EAAE,GAAY,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAC3F,EAAO,EAAE,EAAO,EAAE,EAAO,EAF7B;IAGE,uBAnDM,OAAA,GAAU,GAAA,CAAI,QAAC,CAAQ,MAAC,CAAM;IAoDpC,qBAnDI,OAAA,GAAU,KAAA,CAAM;IAoDpB,IAAI,OAnDC,GAAS,CAAA,IAAK,0BAAA,CAA2B,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAoDhF,IAAI,OAnDC,GAAS,CAAA,IAAK,0BAAA,CAA2B,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAoDhF,IAAI,OAnDC,GAAS,CAAA,IAAK,0BAAA,CAA2B,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAoDhF,IAAI,OAnDC,GAAS,CAAA,IAAK,0BAAA,CAA2B,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAoDhF,IAAI,OAnDC,GAAS,CAAA,IAAK,0BAAA,CAA2B,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAoDhF,IAAI,OAnDC,GAAS,CAAA,IAAK,0BAAA,CAA2B,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAoDhF,IAAI,OAnDC,GAAS,CAAA,IAAK,0BAAA,CAA2B,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAoDhF,IAAI,OAnDC,GAAS,CAAA,IAAK,0BAAA,CAA2B,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAoDhF,IAAI,OAnDC,GAAS,CAAA,IAAK,0BAAA,CAA2B,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAoDhF,IAAI,OAnDC,GAAS,CAAA,IAAK,0BAAA,CAA2B,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAoDhF,OAnDO,OAAA,CAAQ;CAoDhB;;;;;;;AAOD,AAAA,SAAA,4BAAA,CAxDC,IAAA,EAAA,GAAA,EAAA,MAAA,EAwDD;IACE,qBAxDI,OAAA,GAAU,KAAA,CAAM;IAyDpB,KAAK,qBAxDI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,MAAC,EAAO,CAAA,EAAE,EAAG;QAyDtC,IAAI,0BAxDC,CAA0B,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,MAAA,CAAO,CAAC,CAAC,CAAC;YAAE,OAAA,GAAU,IAAA,CAAK;KAyDzE;IACD,OAxDO,OAAA,CAAQ;CAyDhB;;;;;;;;AAQD,SAAA,0BAAA,CA9DC,IAAA,EAAA,GAAA,EAAA,UAAA,EAAA,KAAA,EA8DD;IACE,IAAI,CA9DC,qBAAC,CAAqB,IAAC,EAAK,GAAA,EAAK,UAAA,EAAY,KAAA,CAAM,EAAE;QA+DxD,OA9DO,KAAA,CAAM;KA+Dd;IACD,uBA9DM,OAAA,GAAU,GAAA,CAAI,QAAC,CAAQ,UAAC,CAAU,CAAC;IA+DzC,uBA9DM,MAAA,GAAS,aAAA,CAAc,IAAC,EAAK,GAAA,CAAI,KAAC,CAAK,CAAC;IA+D9C,uBA9DMH,aAAA,GAAa,MAAA,CAAO,aAAC,CAAa;IA+DxC,uBA9DM,IAAA,KAAO,OAAA,CAAQ,IAAC,EAAA,CAAM;IA+D5B,QAAQ,OA9DC,CAAO,KAAC,GAAO,EA8D1B;QACI,KA9DK,CA8DT;YACM,mBAAmB,CA9DC,IAAC,EAAK,OAAA,EAASA,aAAA,EAAY,OAAA,CAAQ,EAAC,EAAG,IAAA,EAAM,KAAA,CAAM,CAAC;YA+DxE,MAAM;QACR,KA9DK,CA8DT;YACM,eAAe,CA9DC,IAAC,EAAKA,aAAA,EAAY,IAAA,EAAM,KAAA,CAAM,CAAC;YA+D/C,MAAM;QACR,KA9DK,CA8DT;YACM,eAAe,CA9DC,IAAC,EAAK,OAAA,EAASA,aAAA,EAAY,IAAA,EAAM,KAAA,CAAM,CAAC;YA+DxD,MAAM;QACR,KA9DK,CA8DT;YACM,uBA9DM,QAAA,GAAW,CAAA,GAAE,CAAG,KAAC,GAAO,QA8DpC;gBACwB,OAAO,CA9DC,KAAC,GAAO,EA8DxC;gBACU,MAAM,CA9DC,aAAC;gBA+DR,IAAI,CA9DC;YA+DT,kBAAkB,CA9DC,QAAC,EAAS,OAAA,EAASA,aAAA,EAAY,IAAA,EAAM,KAAA,CAAM,CAAC;YA+D/D,MAAM;KACT;IACD,OA9DO,IAAA,CAAK;CA+Db;;;;;;;;;;AAUD,SAAA,mBAAA,CACI,IAAc,EAAE,OAAmB,EAAEA,aAAe,EAAE,EAAiB,EAAE,IAAY,EACrF,KAAU,EAFd;IAGE,uBAtEM,eAAA,GAAkB,OAAA,CAAQ,eAAC,CAAe;IAuEhD,qBAtEI,WAAA,GAAc,eAAA,GAAkB,IAAA,CAAK,IAAC,CAAI,SAAC,CAAS,QAAC,CAAQ,eAAC,EAAgB,KAAA,CAAM,GAAG,KAAA,CAAM;IAuEjG,WAAW,GAtEG,WAAA,IAAe,IAAA,GAAO,WAAA,CAAY,QAAC,EAAQ,GAAI,IAAA,CAAK;IAuElE,uBAtEM,QAAA,GAAW,IAAA,CAAK,QAAC,CAAQ;IAuE/B,IAAI,KAtEC,IAAQ,IAAA,EAAM;QAuEjB,QAAQ,CAtEC,YAAC,CAAYA,aAAC,EAAW,IAAA,EAAM,WAAA,EAAa,EAAA,CAAG,CAAC;KAuE1D;SAtEM;QAuEL,QAAQ,CAtEC,eAAC,CAAeA,aAAC,EAAW,IAAA,EAAM,EAAA,CAAG,CAAC;KAuEhD;CACF;;;;;;;;AAQD,SAAA,eAAA,CA5EC,IAAA,EAAAA,aAAA,EAAA,IAAA,EAAA,KAAA,EA4ED;IACE,uBA5EM,QAAA,GAAW,IAAA,CAAK,QAAC,CAAQ;IA6E/B,IAAI,KA5EC,EAAM;QA6ET,QAAQ,CA5EC,QAAC,CAAQA,aAAC,EAAW,IAAA,CAAK,CAAC;KA6ErC;SA5EM;QA6EL,QAAQ,CA5EC,WAAC,CAAWA,aAAC,EAAW,IAAA,CAAK,CAAC;KA6ExC;CACF;;;;;;;;;AASD,SAAA,eAAA,CACI,IAAc,EAAE,OAAmB,EAAEA,aAAe,EAAE,IAAY,EAAE,KAAU,EADlF;IAEE,qBAnFI,WAAA,GAoFA,IAAI,CAnFC,IAAC,CAAI,SAAC,CAAS,QAAC,CAAQ,eAAC,CAAe,KAAC,oBAAM,KAAa,EAAO,CAAC;IAoF7E,IAAI,WAnFC,IAAc,IAAA,EAAM;QAoFvB,WAAW,GAnFG,WAAA,CAAY,QAAC,EAAQ,CAAE;QAoFrC,uBAnFM,IAAA,GAAO,OAAA,CAAQ,MAAC,CAAM;QAoF5B,IAAI,IAnFC,IAAO,IAAA,EAAM;YAoFhB,WAAW,GAnFG,WAAA,GAAc,IAAA,CAAK;SAoFlC;KACF;SAnFM;QAoFL,WAAW,GAnFG,IAAA,CAAK;KAoFpB;IACD,uBAnFM,QAAA,GAAW,IAAA,CAAK,QAAC,CAAQ;IAoF/B,IAAI,WAnFC,IAAc,IAAA,EAAM;QAoFvB,QAAQ,CAnFC,QAAC,CAAQA,aAAC,EAAW,IAAA,EAAM,WAAA,CAAY,CAAC;KAoFlD;SAnFM;QAoFL,QAAQ,CAnFC,WAAC,CAAWA,aAAC,EAAW,IAAA,CAAK,CAAC;KAoFxC;CACF;;;;;;;;;AASD,SAAA,kBAAA,CACI,IAAc,EAAE,OAAmB,EAAEA,aAAe,EAAE,IAAY,EAAE,KAAU,EADlF;IAEE,uBA1FM,eAAA,GAAkB,OAAA,CAAQ,eAAC,CAAe;IA2FhD,qBA1FI,WAAA,GAAc,eAAA,GAAkB,IAAA,CAAK,IAAC,CAAI,SAAC,CAAS,QAAC,CAAQ,eAAC,EAAgB,KAAA,CAAM,GAAG,KAAA,CAAM;IA2FjG,IAAI,CA1FC,QAAC,CAAQ,WAAC,CAAWA,aAAC,EAAW,IAAA,EAAM,WAAA,CAAY,CAAC;CA2F1D;;AD5YD;;;;;;;AAUA,AACA;;;;;AAKA,AAAA,SAAA,YAAA,CALC,cAAA,EAAA,KAAA,EAKD;IACE,OALO;;QAOL,KAAK,EALE,CAAA,CAAE;QAMT,MAAM,EALE,IAAA;QAMR,YAAY,EALE,IAAA;QAMd,YAAY,EALE,CAAA,CAAE;QAMhB,WAAW,EALE,CAAA,CAAE;;QAOf,KAAK,EALE,CAKX;QACI,UAAU,EALE,CAAA;QAMZ,gBAAgB,EALE,CAAA;QAMlB,mBAAmB,EALE,CAAA;QAMrB,cAAc,EALE,EAAA;QAMhB,eAAe,EALE,CAAA;QAMjB,UAAU,EALE,EAAA,EAAI,cAAA;QAMhB,UAAU,EALE,CAAA;QAMZ,QAAQ,EALE,EAAA;QAMV,YAAY,EALE,CAAA;QAMd,OAAO,EALE,EAAA;QAMT,OAAO,EALE,IAAA;QAMT,QAAQ,EALE,IAAA;QAMV,IAAI,EALE,IAAA;QAMN,KAAK,EALE,IAAA;QAMP,SAAS,EALE,EAAA,KAAE,EAAK;KAMnB,CALC;CAMH;;;;;;;AAOD,AAAA,SAAA,eAAA,CAVC,IAAA,EAAA,UAAA,EAAA,GAAA,EAUD;IACE,uBAVM,QAAA,GAAW,sBAAA,CAAuB,IAAC,EAAK,UAAA,EAAY,GAAA,CAAI,CAAC;IAW/D,IAAI,CAVC,QAAC,EAAS;;QAYb,OAAO;KACR;IACD,uBAVM,cAAA,GAAe,EAAE,GAAA,CAAI,SAAC,GAAW,KAAC,CAAK;IAW7C,yBAAyB,CACrB,IAAI,EAVE,cAAA,EAAgB,CAS5B,oBAT0D,QAAA,EAAU,IAAA,EAAM,SAAA,CAAU,CAAC;CAWpF;;AD1DD;;;;;;;AASA,AACA,AACA;;;;;;;AAOA,AAAA,SAAA,kBAAA,CACI,UAAoB,EAAE,WAAwB,EAAE,SAAoC,EACpF,IAAc,EAFlB;IAGE,qBAPI,aAAA,GAAc,EAAE,WAAA,CAAY,aAAC,GAAe,cAAC,CAAc;IAQ/D,IAAI,SAPC,KAAa,IAAA,IAAQ,SAAA,KAAc,SAAA,EAAW;QAQjD,SAAS,GAPG,aAAA,CAAc,MAAC,CAAM;KAQlC;IACD,IAAI,CAPC,mBAAC,GAAqB,UAAA,CAAW;IAQtC,UAAU,CAPC,aAAC,qBAAc,SAAA,IAAa,IAAA,CAAK,CAAC;IAQ7C,uBAPM,cAAA,GAAiB,qBAAA,CAAsB,IAAC,CAAI,CAAC;IAQnD,IAAI,cAPC,IAAiB,cAAA,KAAmB,WAAA,EAAa;QAQpD,qBAPI,cAAA,GAAiB,cAAA,CAAe,QAAC,CAAQ,eAAC,CAAe;QAQ7D,IAAI,CAPC,cAAC,EAAe;YAQnB,cAAc,GAPG,cAAA,CAAe,QAAC,CAAQ,eAAC,GAAiB,EAAA,CAAG;SAQ/D;QACD,cAAc,CAPC,IAAC,CAAI,IAAC,CAAI,CAAC;KAQ3B;IAED,QAAQ,CAPC,kBAAC,CAAkB,IAAC,CAAI,CAAC;IASlC,uBAPM,QAAA,GAAS,EAAE,SAAA,KAAc,CAAA,GAAI,aAAA,CAAc,EAAA,SAAC,KAAa,CAAA,CAAE,GAAG,IAAA,CAAK;IAQzE,wBAAwB,CAPC,WAAC,EAAY,QAAA,EAAU,IAAA,CAAK,CAAC;CAQvD;;;;;;AAMD,AAAA,SAAA,kBAAA,CAXC,WAAA,EAAA,SAAA,EAWD;IACE,uBAXM,aAAA,GAAc,EAAE,WAAA,CAAY,aAAC,GAAe,cAAC,CAAc;IAYjE,IAAI,SAXC,IAAY,IAAA,IAAQ,SAAA,IAAa,aAAA,CAAc,MAAC,EAAO;QAY1D,SAAS,GAXG,aAAA,CAAc,MAAC,GAAQ,CAAA,CAAE;KAYtC;IACD,IAAI,SAXC,GAAW,CAAA,EAAG;QAYjB,OAXO,IAAA,CAAK;KAYb;IACD,uBAXM,IAAA,GAAO,aAAA,CAAc,SAAC,CAAS,CAAC;IAYtC,IAAI,CAXC,mBAAC,GAAqB,IAAA,CAAK;IAYhC,eAAe,CAXC,aAAC,EAAc,SAAA,CAAU,CAAC;IAa1C,uBAXM,cAAA,GAAiB,qBAAA,CAAsB,IAAC,CAAI,CAAC;IAYnD,IAAI,cAXC,IAAiB,cAAA,KAAmB,WAAA,EAAa;QAYpD,uBAXM,cAAA,GAAiB,cAAA,CAAe,QAAC,CAAQ,eAAC,CAAe;QAY/D,eAAe,CAXC,cAAC,EAAe,cAAA,CAAe,OAAC,CAAO,IAAC,CAAI,CAAC,CAAC;KAY/D;IAED,QAAQ,CAXC,kBAAC,CAAkB,IAAC,CAAI,CAAC;IAalC,gBAAgB,CAXC,IAAC,CAAI,CAAC;IAavB,OAXO,IAAA,CAAK;CAYb;;;;;;;AAOD,AAAA,SAAA,gBAAA,CACI,WAAwB,EAAE,YAAoB,EAAE,YAAoB,EADxE;IAEE,uBAhBM,aAAA,GAAc,EAAE,WAAA,CAAY,aAAC,GAAe,cAAC,CAAc;IAiBjE,uBAhBM,IAAA,GAAO,aAAA,CAAc,YAAC,CAAY,CAAC;IAiBzC,eAAe,CAhBC,aAAC,EAAc,YAAA,CAAa,CAAC;IAiB7C,IAAI,YAhBC,IAAe,IAAA,EAAM;QAiBxB,YAAY,GAhBG,aAAA,CAAc,MAAC,CAAM;KAiBrC;IACD,UAAU,CAhBC,aAAC,EAAc,YAAA,EAAc,IAAA,CAAK,CAAC;;;IAqB9C,QAAQ,CAhBC,kBAAC,CAAkB,IAAC,CAAI,CAAC;IAkBlC,gBAAgB,CAhBC,IAAC,CAAI,CAAC;IAiBvB,uBAhBM,QAAA,GAAW,YAAA,GAAe,CAAA,GAAI,aAAA,CAAc,YAAC,GAAc,CAAA,CAAE,GAAG,IAAA,CAAK;IAiB3E,wBAAwB,CAhBC,WAAC,EAAY,QAAA,EAAU,IAAA,CAAK,CAAC;IAkBtD,OAhBO,IAAA,CAAK;CAiBb;;;;;;;AAOD,SAAA,wBAAA,CACI,WAAwB,EAAE,QAAyB,EAAE,IAAc,EADvE;IAEE,uBArBM,cAAA,GAAiB,QAAA,GAAW,UAAA,CAAW,QAAC,qBAAS,QAAA,CAAS,GAAC,CAAG,kBAAC,GAAoB;QAsBvD,WAAW,CArBC,aAAC,CAAa;IAsB5D,uBArBM,UAAA,GAAa,IAAA,CAAK,QAAC,CAAQ,UAAC,CAAU,cAAC,CAAc,CAAC;IAsB5D,uBArBM,WAAA,GAAc,IAAA,CAAK,QAAC,CAAQ,WAAC,CAAW,cAAC,CAAc,CAAC;;;IAwB9D,oBAAoB,CArBC,IAAC,EAAK,CAqB7B,qBArB4D,UAAA,EAAY,WAAA,EAAa,SAAA,CAAU,CAAC;CAsB/F;;;;;AAKD,AAAA,SAAA,gBAAA,CAxBC,IAAA,EAwBD;IACE,oBAAoB,CAxBC,IAAC,EAAK,CAwB7B,oBAxB2D,IAAA,EAAM,IAAA,EAAM,SAAA,CAAU,CAAC;CAyBjF;;;;;;;AAOD,SAAA,UAAA,CA7BC,GAAA,EAAA,KAAA,EAAA,KAAA,EA6BD;;IAEE,IAAI,KA7BC,IAAQ,GAAA,CAAI,MAAC,EAAO;QA8BvB,GAAG,CA7BC,IAAC,CAAI,KAAC,CAAK,CAAC;KA8BjB;SA7BM;QA8BL,GAAG,CA7BC,MAAC,CAAM,KAAC,EAAM,CAAA,EAAG,KAAA,CAAM,CAAC;KA8B7B;CACF;;;;;;AAMD,SAAA,eAAA,CAjCC,GAAA,EAAA,KAAA,EAiCD;;IAEE,IAAI,KAjCC,IAAQ,GAAA,CAAI,MAAC,GAAQ,CAAA,EAAG;QAkC3B,GAAG,CAjCC,GAAC,EAAG,CAAE;KAkCX;SAjCM;QAkCL,GAAG,CAjCC,MAAC,CAAM,KAAC,EAAM,CAAA,CAAE,CAAC;KAkCtB;CACF;;ADlJD;;;;;;;AAWA,AACA,AACA,AACA,AACA,AACA,AAKA,AAEA,AACA,AACA,AAEA,MADM,aAAA,GAAgB,IAAI,MAAA,EAAO,CAAE;;;;;;;;;;AAWnC,AAAA,SAAA,sBAAA,CACI,QAAgB,EAAE,aAAwB,EAAE,cAAqC,EACjF,MAA2C,EAAE,OAAqC,EAClF,kBAA4B,EAHhC;IAIE,OAPO,IAAI,iBAAA,CAQP,QAAQ,EAPE,aAAA,EAAe,cAAA,EAAgB,MAAA,EAAQ,OAAA,EAAS,kBAAA,CAAmB,CAAC;CAQnF;;;;;AAKD,AAAA,SAAA,iCAAA,CAVC,gBAAA,EAUD;IAEE,OAVO,EAAA,gBAAqB,GAAmB,cAAC,CAAc;CAW/D;AACD,MAAA,iBATC,SAAA,gBAAA,CASD;;;;;;;;;IAaA,WAAA,CAfa,QAAU,EAAe,aAAwB,EAkBxD,cAjBgB,EAA+B,OAAuC,EAC9E,QAAsC,EAAS,kBAA2B,EAaxF;;;QASI,KAAK,EAAE,CAAC;QAxBC,IAAb,CAAA,QAAa,GAAA,QAAA,CAAU;QAAe,IAAtC,CAAA,aAAsC,GAAA,aAAA,CAAwB;QACT,IAArD,CAAA,OAAqD,GAAA,OAAA,CAAuC;QAC9E,IAAd,CAAA,QAAc,GAAA,QAAA,CAAsC;QAAS,IAA7D,CAAA,kBAA6D,GAAA,kBAAA,CAA2B;QAuBpF,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;KACtC;;;;IAIH,IArBG,MAAA,GAqBH;QACI,uBArBM,SAAA,GAAwD,EAAA,CAAG;QAsBjE,uBArBM,MAAA,KAAS,IAAA,CAAK,OAAC,EAAA,CAAS;QAsB9B,KAAK,qBArBI,QAAA,IAAY,MAAA,EAAQ;YAsB3B,uBArBM,YAAA,GAAe,MAAA,CAAO,QAAC,CAAQ,CAAC;YAsBtC,SAAS,CArBC,IAAC,CAAI,EAAC,QAAC,EAAS,YAAA,EAAa,CAAC,CAAC;SAsB1C;QACD,OArBO,SAAA,CAAU;KAsBlB;;;;IAIH,IAvBG,OAAA,GAuBH;QACI,uBAvBM,UAAA,GAAyD,EAAA,CAAG;QAwBlE,KAAK,qBAvBI,QAAA,IAAY,IAAA,CAAK,QAAC,EAAS;YAwBlC,uBAvBM,YAAA,GAAe,IAAA,CAAK,QAAC,CAAQ,QAAC,CAAQ,CAAC;YAwB7C,UAAU,CAvBC,IAAC,CAAI,EAAC,QAAC,EAAS,YAAA,EAAa,CAAC,CAAC;SAwB3C;QACD,OAvBO,UAAA,CAAW;KAwBnB;;;;;;;;;IASH,MA3BG,CA4BG,QAAkB,EAAE,gBAA0B,EAAE,kBAA+B,EAC/E,QAA2B,EAFjC;QAGI,IAAI,CA3BC,QAAC,EAAS;YA4Bb,MA3BM,IAAI,KAAA,CAAM,6BAAC,CAA6B,CAAC;SA4BhD;QACD,uBA3BM,OAAA,GAAU,qBAAA,CAAsB,IAAC,CAAI,cAAC,CAAc,CAAC;QA4B3D,uBA3BM,kBAAA,GAAmB,EAAA,EAAE,OAAA,CAAQ,KAAC,CAAK,CAAC,CAAC,CAAC,OAAC,GAAS,iBAAC,GAAmB,KAAC,CAAK;QA4BhF,uBA3BM,IAAA,GAAO,QAAA,CAAS,cAAC,CA4BnB,QAAQ,EA3BE,gBAAA,IAAoB,EAAA,EAAI,kBAAA,EAAoB,OAAA,EAAS,QAAA,EAAU,aAAA,CAAc,CAAC;QA4B5F,uBA3BM,SAAA,GAAY,cAAA,CAAe,IAAC,EAAK,kBAAA,CAAmB,CAAC,QAAC,CAAQ;QA4BpE,IAAI,kBA3BC,EAAmB;YA4BtB,IAAI,CA3BC,QAAC,CAAQ,YAAC,CAAY,aAAC,CAAa,IAAC,EAAK,CAAA,CAAE,CAAC,aAAC,EAAc,YAAA,EAAc,OAAA,CAAQ,IAAC,CAAI,CAAC;SA4B9F;QAED,OA3BO,IAAI,aAAA,CAAc,IAAC,EAAK,IAAI,QAAA,CAAS,IAAC,CAAI,EAAE,SAAA,CAAU,CAAC;KA4B/D;CACF;AAED,AAkBA,MAAA,aA7CC,SAAA,YAAA,CA6CD;;;;;;IAOA,WAAA,CAlDsB,KAAO,EAAkB,QAAU,EAAiB,UAAY,EAkDtF;QAGI,KAAK,EAAE,CAAC;QArDU,IAAtB,CAAA,KAAsB,GAAA,KAAA,CAAO;QAAkB,IAA/C,CAAA,QAA+C,GAAA,QAAA,CAAU;QAAiB,IAA1E,CAAA,UAA0E,GAAA,UAAA,CAAY;QAsDlF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACvC;;;;IAIH,IAvDG,QAAA,GAuDH;QACI,OAvDO,IAAI,UAAA,CAAW,aAAC,CAAa,IAAC,CAAI,KAAC,EAAM,IAAA,CAAK,MAAC,CAAM,KAAC,CAAK,CAAC,aAAC,CAAa,CAAC;KAwDnF;;;;IAIH,IA1DG,QAAA,GA0DH,EA1D6B,OAAO,IAAI,SAAA,CAAU,IAAC,CAAI,KAAC,EAAM,IAAA,CAAK,MAAC,CAAM,CAAC,EAAC;;;;IA8D5E,IA7DG,QAAA,GA6DH,EA7DwB,OAAO,IAAA,CAAK,UAAC,CAAU,EAAC;;;;;IAiEhD,IAhEG,QAAA,GAgEH,EAhE4B,OAAO,IAAA,CAAK,QAAC,CAAQ,EAAC;;;;;IAoElD,IAnEG,iBAAA,GAmEH,EAnE+C,OAAO,IAAA,CAAK,QAAC,CAAQ,EAAC;;;;;IAuErE,IAtEG,aAAA,GAsEH,EAtEmC,QAAY,IAAC,CAAI,UAAC,CAAU,WAAC,EAAW,EAAC;;;;IA0E5E,OAxEG,GAwEH,EAxEoB,IAAA,CAAK,QAAC,CAAQ,OAAC,EAAO,CAAE,EAAC;;;;;IA6E7C,SA5EG,CAAA,QAAA,EA4EH,EA5EwC,IAAA,CAAK,QAAC,CAAQ,SAAC,CAAS,QAAC,CAAQ,CAAC,EAAC;CA6E1E;AAED,AAWA;;;;;;AAMA,AAAA,SAAA,uBAAA,CACI,IAAc,EAAE,KAAc,EAAE,MAAmB,EADvD;IAEE,OA7FO,IAAI,iBAAA,CAAkB,IAAC,EAAK,KAAA,EAAO,MAAA,CAAO,CAAC;CA8FnD;AACD,MAAA,iBAAA,CAAA;;;;;;IAUA,WAAA,CAjGsB,KAAO,EAAkB,MAAQ,EAAiB,KAAO,EAiG/E;QAjGsB,IAAtB,CAAA,KAAsB,GAAA,KAAA,CAAO;QAAkB,IAA/C,CAAA,MAA+C,GAAA,MAAA,CAAQ;QAAiB,IAAxE,CAAA,KAAwE,GAAA,KAAA,CAAO;;;;QA2F/E,IAAA,CAAA,cA5FG,GAAA,EAAA,CAAA;KACwF;;;;IAuG3F,IArGG,OAAA,GAqGH,EArG8B,OAAO,IAAI,UAAA,CAAW,IAAC,CAAI,KAAC,CAAK,aAAC,CAAa,CAAC,EAAC;;;;IAyG/E,IAvGG,QAAA,GAuGH,EAvG6B,OAAO,IAAI,SAAA,CAAU,IAAC,CAAI,KAAC,EAAM,IAAA,CAAK,MAAC,CAAM,CAAC,EAAC;;;;IA2G5E,IAzGG,cAAA,GAyGH;QACI,qBAzGI,IAAA,GAAO,IAAA,CAAK,KAAC,CAAK;QA0GtB,qBAzGI,KAAA,GAAQ,IAAA,CAAK,MAAC,CAAM,MAAC,CAAM;QA0G/B,OAAO,CAzGC,KAAC,IAAQ,IAAA,EAAM;YA0GrB,KAAK,GAzGG,YAAA,CAAa,IAAC,CAAI,CAAC;YA0G3B,IAAI,KAzGG,IAAA,CAAK,MAAC,EAAA,CAAQ;SA0GtB;QAED,OAzGO,IAAA,GAAO,IAAI,SAAA,CAAU,IAAC,EAAK,KAAA,CAAM,GAAG,IAAI,SAAA,CAAU,IAAC,CAAI,KAAC,EAAM,IAAA,CAAK,CAAC;KA0G5E;;;;IAIH,KA3GG,GA2GH;QACI,uBA3GM,GAAA,GAAM,IAAA,CAAK,cAAC,CAAc,MAAC,CAAM;QA4GvC,KAAK,qBA3GI,CAAA,GAAI,GAAA,GAAM,CAAA,EAAG,CAAA,IAAK,CAAA,EAAG,CAAA,EAAE,EAAG;YA4GjC,uBA3GM,IAAA,KAAO,kBAAA,CAAmB,IAAC,CAAI,KAAC,EAAM,CAAA,CAAE,EAAA,CAAG;YA4GjD,QAAQ,CA3GC,WAAC,CAAW,IAAC,CAAI,CAAC;SA4G5B;KACF;;;;;IAKH,GA9GG,CAAA,KAAA,EA8GH;QACI,uBA9GM,IAAA,GAAO,IAAA,CAAK,cAAC,CAAc,KAAC,CAAK,CAAC;QA+GxC,IAAI,IA9GC,EAAK;YA+GR,uBA9GM,GAAA,GAAM,IAAI,QAAA,CAAS,IAAC,CAAI,CAAC;YA+G/B,GAAG,CA9GC,wBAAC,CAAwB,IAAC,CAAI,CAAC;YA+GnC,OA9GO,GAAA,CAAI;SA+GZ;QACD,OA9GO,IAAA,CAAK;KA+Gb;;;;IAIH,IAhHG,MAAA,GAgHH,EAhHyB,OAAO,IAAA,CAAK,cAAC,CAAc,MAAC,CAAM,EAAC;;;;;;;;;IAwH5D,kBAtHG,CAAA,WAAA,EAAA,OAAA,EAAA,KAAA,EAsHH;QAEI,uBAtHM,OAAA,GAAU,WAAA,CAAY,kBAAC,CAAkB,OAAC,KAAe,EAAC,CAAA,CAAE,CAAC;QAuHnE,IAAI,CAtHC,MAAC,CAAM,OAAC,EAAQ,KAAA,CAAM,CAAC;QAuH5B,OAtHO,OAAA,CAAQ;KAuHhB;;;;;;;;;;IAUH,eA9HG,CA+HG,gBAAqC,EAAE,KAAc,EAAE,QAAmB,EAC1E,gBAA0B,EAAE,WAA8B,EAFhE;QAGI,uBA9HM,eAAA,GAAkB,QAAA,IAAY,IAAA,CAAK,cAAC,CAAc;QA+HxD,IAAI,CA9HC,WAAC,IAAc,EAAE,gBAAC,YAA2B,6BAAA,CAA8B,EAAE;YA+HhF,WAAW,GA9HG,eAAA,CAAgB,GAAC,CAAG,WAAC,CAAW,CAAC;SA+HhD;QACD,uBA9HM,YAAA,GA+HF,gBAAgB,CA9HC,MAAC,CAAM,eAAC,EAAgB,gBAAA,EAAkB,SAAA,EAAW,WAAA,CAAY,CAAC;QA+HvF,IAAI,CA9HC,MAAC,CAAM,YAAC,CAAY,QAAC,EAAS,KAAA,CAAM,CAAC;QA+H1C,OA9HO,YAAA,CAAa;KA+HrB;;;;;;IAMH,MAlIG,CAAA,OAAA,EAAA,KAAA,EAkIH;QACI,uBAlIM,QAAA,IAAqB,OAAC,CAAA,CAAO;QAmInC,uBAlIM,QAAA,GAAW,QAAA,CAAS,KAAC,CAAK;QAmIhC,kBAAkB,CAlIC,IAAC,CAAI,KAAC,EAAM,IAAA,CAAK,KAAC,EAAM,KAAA,EAAO,QAAA,CAAS,CAAC;QAmI5D,QAAQ,CAlIC,wBAAC,CAAwB,IAAC,CAAI,CAAC;QAmIxC,OAlIO,OAAA,CAAQ;KAmIhB;;;;;;IAMH,IAtIG,CAAA,OAAA,EAAA,YAAA,EAsIH;QACI,uBAtIM,aAAA,GAAgB,IAAA,CAAK,cAAC,CAAc,OAAC,CAAO,OAAC,CAAO,KAAC,CAAK,CAAC;QAuIjE,gBAAgB,CAtIC,IAAC,CAAI,KAAC,EAAM,aAAA,EAAe,YAAA,CAAa,CAAC;QAuI1D,OAtIO,OAAA,CAAQ;KAuIhB;;;;;IAKH,OAzIG,CAAA,OAAA,EAyIH;QACI,OAzIO,IAAA,CAAK,cAAC,CAAc,OAAC,CAAO,EAAW,OAAC,GAAQ,KAAC,CAAK,CAAC;KA0I/D;;;;;IAKH,MA5IG,CAAA,KAAA,EA4IH;QACI,uBA5IM,QAAA,GAAW,kBAAA,CAAmB,IAAC,CAAI,KAAC,EAAM,KAAA,CAAM,CAAC;QA6IvD,IAAI,QA5IC,EAAS;YA6IZ,QAAQ,CA5IC,WAAC,CAAW,QAAC,CAAQ,CAAC;SA6IhC;KACF;;;;;IAKH,MA/IG,CAAA,KAAA,EA+IH;QACI,uBA/IM,IAAA,GAAO,kBAAA,CAAmB,IAAC,CAAI,KAAC,EAAM,KAAA,CAAM,CAAC;QAgJnD,OA/IO,IAAA,GAAO,IAAI,QAAA,CAAS,IAAC,CAAI,GAAG,IAAA,CAAK;KAgJzC;CACF;AAED,AAcA;;;;AAIA,AAAA,SAAA,uBAAA,CAjKC,IAAA,EAiKD;IACE,OAjKO,IAAI,QAAA,CAAS,IAAC,CAAI,CAAC;CAkK3B;AACD,AAAA,MAAA,QAAA,CAAA;;;;IAUA,WAAA,CApKG,KAAkB,EAoKrB;QACI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACrB;;;;IAIH,IAtKG,SAAA,GAsKH,EAtK2B,OAAO,eAAA,CAAgB,IAAC,CAAI,KAAC,CAAK,CAAC,EAAC;;;;IA0K/D,IAxKG,OAAA,GAwKH,EAxKkB,OAAO,IAAA,CAAK,KAAC,CAAK,OAAC,CAAO,EAAC;;;;IA4K7C,IA1KG,SAAA,GA0KH,EA1K6B,OAAO,CAAA,IAAE,CAAI,KAAC,CAAK,KAAC,GAAO,EA0KxD,sBA1KiF,CAAA,CAAE,EAAC;;;;IA8KpF,YA5KG,GA4KH,EA5KyB,uBAAA,CAAwB,IAAC,CAAI,KAAC,CAAK,CAAC,EAAC;;;;IAgL9D,MA/KG,GA+KH,EA/KmB,IAAA,CAAK,KAAC,CAAK,KAAC,IAAQ,CAAA,CA+KvC,gBA/K2D,EAAC;;;;IAmL5D,aAlLG,GAkLH,EAlL0B,QAAA,CAAS,kBAAC,CAAkB,IAAC,CAAI,KAAC,CAAK,CAAC,EAAC;;;;IAsLnE,cArLG,GAqLH,EArL2B,QAAA,CAAS,kBAAC,CAAkB,IAAC,CAAI,KAAC,CAAK,CAAC,EAAC;;;;IAyLpE,QAvLG,GAuLH,EAvLqB,IAAA,CAAK,KAAC,CAAK,KAAC,IAAQ,CAuLzC,gBAvL4D,EAAC;;;;;IA4L7D,SA3LG,CAAA,QAAA,EA2LH;QACI,IAAI,CA3LC,IAAC,CAAI,KAAC,CAAK,WAAC,EAAY;YA4L3B,IAAI,CA3LC,KAAC,CAAK,WAAC,GAAa,EAAA,CAAG;SA4L7B;QACD,IAAI,CA3LC,KAAC,CAAK,WAAC,CAAW,IAAC,mBAAS,QAAC,EAAQ,CAAC;KA4L5C;;;;IAIH,OA7LG,GA6LH;QACI,IAAI,IA7LC,CAAI,OAAC,EAAQ;YA8LhB,IAAI,CA7LC,OAAC,CAAO,UAAC,CAAU,IAAC,CAAI,CAAC;SA8L/B;aA7LM,IAAA,IAAK,CAAI,iBAAC,EAAkB;YA8LjC,IAAI,CA7LC,iBAAC,CAAiB,MAAC,CAAM,IAAC,CAAI,iBAAC,CAAiB,OAAC,CAAO,IAAC,CAAI,CAAC,CAAC;SA8LrE;QACD,QAAQ,CA7LC,WAAC,CAAW,IAAC,CAAI,KAAC,CAAK,CAAC;KA8LlC;;;;IAIH,gBA/LG,GA+LH;QACI,IAAI,CA/LC,OAAC,GAAS,IAAA,CAAK;QAgMpB,gBAAgB,CA/LC,IAAC,CAAI,KAAC,CAAK,CAAC;QAgM7B,QAAQ,CA/LC,kBAAC,CAAkB,IAAC,CAAI,KAAC,CAAK,CAAC;KAgMzC;;;;;IAKH,cAlMG,CAAA,MAAA,EAkMH;QACI,IAAI,IAlMC,CAAI,iBAAC,EAAkB;YAmM1B,MAlMM,IAAI,KAAA,CAAM,mDAAC,CAAmD,CAAC;SAmMtE;QACD,IAAI,CAlMC,OAAC,GAAS,MAAA,CAAO;KAmMvB;;;;;IAKH,wBArMG,CAAA,KAAA,EAqMH;QACI,IAAI,IArMC,CAAI,OAAC,EAAQ;YAsMhB,MArMM,IAAI,KAAA,CAAM,+DAAC,CAA+D,CAAC;SAsMlF;QACD,IAAI,CArMC,iBAAC,GAAmB,KAAA,CAAM;KAsMhC;CACF;AAED,AAYA;;;;;AAKA,AAAA,SAAA,kBAAA,CAtNC,IAAA,EAAA,GAAA,EAsND;IACE,OAtNO,IAAI,YAAA,CAAa,IAAC,EAAK,GAAA,CAAI,CAAC;CAuNpC;AACD,MAAA,YArNC,SAAA,WAAA,CAqND;;;;;IASA,WAAA,CAxNsB,WAAa,EAAkB,IAAM,EAwN3D;QAxNmE,KAAA,EAAA,CAAA;QAA7C,IAAtB,CAAA,WAAsB,GAAA,WAAA,CAAa;QAAkB,IAArD,CAAA,IAAqD,GAAA,IAAA,CAAM;KAAQ;;;;;IA8NnE,kBA5NG,CAAA,OAAA,EA4NH;QACI,OA5NO,IAAI,QAAA,CAAS,QAAC,CAAQ,kBAAC,CAAkB,IAAC,CAAI,WAAC,EAAY,IAAA,CAAK,IAAC,EAAK,OAAA,CAAQ,CAAC,CAAC;KA6NxF;;;;IAIH,IA9NG,UAAA,GA8NH;QACI,OA9NO,IAAI,UAAA,CAAW,aAAC,CAAa,IAAC,CAAI,WAAC,EAAY,IAAA,CAAK,IAAC,CAAI,KAAC,CAAK,CAAC,aAAC,CAAa,CAAC;KA+NvF;CACF;AAED,AAYA;;;;;AAKA,AAAA,SAAA,cAAA,CA/OC,IAAA,EAAA,KAAA,EA+OD;IACE,OA/OO,IAAI,SAAA,CAAU,IAAC,EAAK,KAAA,CAAM,CAAC;CAgPnC;AACD,MAAA,SAAA,CAAA;;;;;IAKA,WAAA,CAlPsB,IAAM,EAAkB,KAAgB,EAkP9D;QAlPsB,IAAtB,CAAA,IAAsB,GAAA,IAAA,CAAM;QAAkB,IAA9C,CAAA,KAA8C,GAAA,KAAA,CAAgB;KAAI;;;;;;IAyPlE,GAxPG,CAAA,KAAA,EAAA,aAwPH,GAxPG,QAAA,CAAA,kBAAA,EAwPH;QACI,uBAxPM,oBAAA,GAyPF,IAAI,CAxPC,KAAC,GAAO,CAAA,IAAE,CAAI,KAAC,CAAK,KAAC,GAAO,QAuPzC,0BAvPsE,CAAA,GAAI,KAAA,CAAM;QAyP5E,OAxPO,QAAA,CAAS,UAAC,CAyPb,IAAI,CAxPC,IAAC,EAAK,IAAA,CAAK,KAAC,EAAM,oBAAA,EAyPvB,EAAC,KAxPC,EAAM,CAsPhB,aAtP+B,KAAA,EAAO,QAAA,EAAU,QAAA,CAAS,KAAC,CAAK,EAAC,EAAE,aAAA,CAAc,CAAC;KAyP9E;CACF;AAED,AAOA;;;;;AAKA,AAAA,SAAA,SAAA,CApQC,IAAA,EAAA,KAAA,EAoQD;IACE,uBApQM,GAAA,GAAM,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,KAAC,CAAK,CAAC;IAqQlC,IAAI,GApQC,CAAG,KAAC,GAAO,CAoQlB,oBApQyC;QAqQrC,uBApQM,MAAA,GAAS,aAAA,CAAc,IAAC,EAAK,GAAA,CAAI,KAAC,CAAK,CAAC;QAqQ9C,OAAuB,EApQhB,GAAA,CAAI,OAAC,GAAS,QAAC,GAAU,MAAA,CAAO,QAAC,GAAU,MAAA,CAAO,aAAC,CAAa;KAqQxE;SApQM,IAAA,GAAK,CAAG,KAAC,GAAO,CAAzB,iBAA6C;QAqQzC,OApQO,UAAA,CAAW,IAAC,EAAK,GAAA,CAAI,KAAC,CAAK,CAAC,UAAC,CAAU;KAqQ/C;SApQM,IAAA,GAAK,CAAG,KAAC,IAAO,KAAzB,qBAAkD,CAAlD,gBAAqE,EAAE;QAqQnE,OApQO,cAAA,CAAe,IAAC,EAAK,GAAA,CAAI,KAAC,CAAK,CAAC,QAAC,CAAQ;KAqQjD;IACD,MApQM,IAAI,KAAA,CAAM,CAoQlB,6CAAA,EApQmB,KAAgD,CAoQnE,CApQwE,CAAE,CAAC;CAqQ1E;;;;;AAKD,AAAA,SAAA,gBAAA,CAvQC,IAAA,EAuQD;IACE,OAvQO,IAAI,eAAA,CAAgB,IAAC,CAAI,QAAC,CAAQ,CAAC;CAwQ3C;AACD,MAAA,eAAA,CAAA;;;;IAIA,WAAA,CAzQsB,QAAU,EAyQhC;QAzQsB,IAAtB,CAAA,QAAsB,GAAA,QAAA,CAAU;KAAU;;;;;IA8Q1C,iBA7QG,CAAA,cAAA,EA6QH;QACI,OA7QO,IAAA,CAAK,QAAC,CAAQ,iBAAC,CAAiB,cAAC,CAAc,CAAC;KA8QxD;;;;;;IAMH,aAjRG,CAAA,MAAA,EAAA,gBAAA,EAiRH;QACI,MAjRM,CAAA,EAAE,EAAG,IAAA,CAAK,GAAG,cAAA,CAAe,gBAAC,CAAgB,CAAC;QAkRpD,uBAjRM,EAAA,GAAK,IAAA,CAAK,QAAC,CAAQ,aAAC,CAAa,IAAC,EAAK,EAAA,CAAG,CAAC;QAkRjD,IAAI,MAjRC,EAAO;YAkRV,IAAI,CAjRC,QAAC,CAAQ,WAAC,CAAW,MAAC,EAAO,EAAA,CAAG,CAAC;SAkRvC;QACD,OAjRO,EAAA,CAAG;KAkRX;;;;;IAKH,cApRG,CAAA,WAAA,EAoRH,EApRmE,OAAO,WAAA,CAAY,EAAC;;;;;IAyRvF,oBAvRG,CAAA,aAAA,EAuRH;QACI,uBAvRM,OAAA,GAAU,IAAA,CAAK,QAAC,CAAQ,aAAC,CAAa,EAAC,CAAE,CAAC;QAwRhD,IAAI,aAvRC,EAAc;YAwRjB,IAAI,CAvRC,QAAC,CAAQ,WAAC,CAAW,aAAC,EAAc,OAAA,CAAQ,CAAC;SAwRnD;QACD,OAvRO,OAAA,CAAQ;KAwRhB;;;;;;IAMH,UA3RG,CAAA,aAAA,EAAA,KAAA,EA2RH;QACI,uBA3RM,IAAA,GAAO,IAAA,CAAK,QAAC,CAAQ,UAAC,CAAU,KAAC,CAAK,CAAC;QA4R7C,IAAI,aA3RC,EAAc;YA4RjB,IAAI,CA3RC,QAAC,CAAQ,WAAC,CAAW,aAAC,EAAc,IAAA,CAAK,CAAC;SA4RhD;QACD,OA3RO,IAAA,CAAK;KA4Rb;;;;;;IAMH,YA/RG,CAAA,aAAA,EAAA,KAAA,EA+RH;QACI,KAAK,qBA/RI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAC,EAAO,CAAA,EAAE,EAAG;YAgSrC,IAAI,CA/RC,QAAC,CAAQ,WAAC,CAAW,aAAC,EAAc,KAAA,CAAM,CAAC,CAAC,CAAC,CAAC;SAgSpD;KACF;;;;;;IAMH,eAnSG,CAAA,IAAA,EAAA,aAAA,EAmSH;QACI,uBAnSM,aAAA,GAAgB,IAAA,CAAK,QAAC,CAAQ,UAAC,CAAU,IAAC,CAAI,CAAC;QAoSrD,uBAnSM,WAAA,GAAc,IAAA,CAAK,QAAC,CAAQ,WAAC,CAAW,IAAC,CAAI,CAAC;QAoSpD,KAAK,qBAnSI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,aAAA,CAAc,MAAC,EAAO,CAAA,EAAE,EAAG;YAoS7C,IAAI,CAnSC,QAAC,CAAQ,YAAC,CAAY,aAAC,EAAc,aAAA,CAAc,CAAC,CAAC,EAAE,WAAA,CAAY,CAAC;SAoS1E;KACF;;;;;IAKH,UAtSG,CAAA,aAAA,EAsSH;QACI,KAAK,qBAtSI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,aAAA,CAAc,MAAC,EAAO,CAAA,EAAE,EAAG;YAuS7C,uBAtSM,IAAA,GAAO,aAAA,CAAc,CAAC,CAAC,CAAC;YAuS9B,uBAtSM,aAAA,GAAgB,IAAA,CAAK,QAAC,CAAQ,UAAC,CAAU,IAAC,CAAI,CAAC;YAuSrD,IAAI,CAtSC,QAAC,CAAQ,WAAC,CAAW,aAAC,EAAc,IAAA,CAAK,CAAC;SAuShD;KACF;;;;;;IAMH,WA1SG,CAAA,WAAA,EAAA,YAAA,EA0SH;QACI,KAAK,qBA1SI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,YAAA,CAAa,MAAC,EAAO,CAAA,EAAE,EAAG;YAAA,EA2S5C,IAAI,CA1SC,QAAC,CAAQ,WAAC,GAAa,YAAC,CAAY,CAAC,CAAC,CAAC,CAAC;SA2S9C;KACF;;;;;;;IAOH,MA/SG,CAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EA+SH;QACI,OA/SO,IAAA,CAAK,QAAC,CAAQ,MAAC,CAAM,aAAC,EAAc,IAAA,oBAAW,QAAC,EAAQ,CAAC;KAgTjE;;;;;;;IAOH,YApTG,CAAA,MAAA,EAAA,IAAA,EAAA,QAAA,EAoTH;QACI,OApTO,IAAA,CAAK,QAAC,CAAQ,MAAC,CAAM,MAAC,EAAO,IAAA,oBAAW,QAAC,EAAQ,CAAC;KAqT1D;;;;;;;IAOH,kBAzTG,CA0TG,aAAuC,EAAE,YAAoB,EAAE,aAAkB,EADvF;QAEI,IAAI,CAzTC,QAAC,CAAQ,WAAC,CAAW,aAAC,EAAc,YAAA,EAAc,aAAA,CAAc,CAAC;KA0TvE;;;;;;;IAOH,mBA9TG,CAAA,aAAA,EAAA,gBAAA,EAAA,cAAA,EA8TH;QAEI,MA9TM,CAAA,EAAE,EAAG,IAAA,CAAK,GAAG,cAAA,CAAe,gBAAC,CAAgB,CAAC;QA+TpD,IAAI,cA9TC,IAAiB,IAAA,EAAM;YA+T1B,IAAI,CA9TC,QAAC,CAAQ,YAAC,CAAY,aAAC,EAAc,IAAA,EAAM,cAAA,EAAgB,EAAA,CAAG,CAAC;SA+TrE;aA9TM;YA+TL,IAAI,CA9TC,QAAC,CAAQ,eAAC,CAAe,aAAC,EAAc,IAAA,EAAM,EAAA,CAAG,CAAC;SA+TxD;KACF;;;;;;;IAOH,mBAnUG,CAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAmUH,GAnUiG;;;;;;;IA0UjG,eAxUG,CAAA,aAAA,EAAA,SAAA,EAAA,KAAA,EAwUH;QACI,IAAI,KAxUC,EAAM;YAyUT,IAAI,CAxUC,QAAC,CAAQ,QAAC,CAAQ,aAAC,EAAc,SAAA,CAAU,CAAC;SAyUlD;aAxUM;YAyUL,IAAI,CAxUC,QAAC,CAAQ,WAAC,CAAW,aAAC,EAAc,SAAA,CAAU,CAAC;SAyUrD;KACF;;;;;;;IAOH,eA7UG,CAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EA6UH;QACI,IAAI,UA7UC,IAAa,IAAA,EAAM;YA8UtB,IAAI,CA7UC,QAAC,CAAQ,QAAC,CAAQ,aAAC,EAAc,SAAA,EAAW,UAAA,CAAW,CAAC;SA8U9D;aA7UM;YA8UL,IAAI,CA7UC,QAAC,CAAQ,WAAC,CAAW,aAAC,EAAc,SAAA,CAAU,CAAC;SA8UrD;KACF;;;;;;;IAOH,mBAlVG,CAAA,aAAA,EAAA,UAAA,EAAA,IAAA,EAkVH;QACI,EAAoB,aAlVF,GAAK,UAAC,CAAU,CAAC,KAAC,CAAK,aAAC,EAAc,IAAA,CAAK,CAAC;KAmV/D;;;;;;IAMH,OAtVG,CAAAA,aAAA,EAAA,IAAA,EAsVH,EAtVkD,IAAA,CAAK,QAAC,CAAQ,QAAC,CAAQA,aAAC,EAAW,IAAA,CAAK,CAAC,EAAC;;;;IA0V5F,OAxVG,GAwVH,EAxVmB,MAAM,IAAI,KAAA,CAAM,0CAAC,CAA0C,CAAC,EAAC;CAyV/E,AAED,AAGC;;ADzxBD;;;;;;;AASA,AACA,AACA,AACA,AACA,AACA,AAEA,AACA,AACA,AAEA,MADM,kBAAA,GAAqB,QAAA,CAASE,QAAC,CAAU,CAAC;AAEhD,MADM,iBAAA,GAAoB,QAAA,CAAS,SAAC,CAAS,CAAC;AAE9C,MADM,kBAAA,GAAqB,QAAA,CAAS,UAAC,CAAU,CAAC;AAEhD,MADM,wBAAA,GAA2B,QAAA,CAAS,gBAAC,CAAgB,CAAC;AAE5D,MADM,mBAAA,GAAsB,QAAA,CAAS,WAAC,CAAW,CAAC;AAElD,MADM,yBAAA,GAA4B,QAAA,CAAS,iBAAC,CAAiB,CAAC;AAE9D,MADM,mBAAA,GAAsB,QAAA,CAAS,QAAC,CAAQ,CAAC;AAG/C,MADM,WAAA,GAAc,IAAI,MAAA,EAAO,CAAE;;;;;;;;;;;AAYjC,AAAA,SAAA,YAAA,CACI,KAAgB,EAAE,cAAmD,EAAE,UAAkB,EACzF,IAAS,EAAE,IAA+B,EAAE,KAA0C,EACtF,OAAkC,EAHtC;IAIE,uBAVM,QAAA,GAAyB,EAAA,CAAG;IAWlC,IAAI,KAVC,EAAM;QAWT,KAAK,qBAVI,IAAA,IAAQ,KAAA,EAAO;YAWtB,MAVM,CAAA,YAAE,EAAa,eAAA,CAAgB,GAAG,KAAA,CAAM,IAAC,CAAI,CAAC;YAWpD,QAAQ,CAVC,YAAC,CAAY,GAAG;gBAWvB,KAAK,EAVE,CAUf;gBACQ,IAAI,EAVE,IAAA,EAAM,eAAA;gBAWZ,EAAE,EAVE,IAAA;gBAWJ,eAAe,EAVE,IAAA;gBAWjB,MAAM,EAVE,IAAA;aAWT,CAVC;SAWH;KACF;IACD,uBAVM,UAAA,GAA0B,EAAA,CAAG;IAWnC,IAAI,OAVC,EAAQ;QAWX,KAAK,qBAVI,QAAA,IAAY,OAAA,EAAS;YAW5B,UAAU,CAVC,IAAC,CAWR,EAAC,IAVC,EAAK,CASjB,wBAT6C,QAAA,EAAU,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,OAAA,CAAQ,QAAC,CAAQ,EAAC,CAAC,CAAC;SAW/F;KACF;IACD,KAAK,IAVI,IAUX,qBAVmC;IAWjC,OAVO,IAAA,CAAK,KAAC,EAAM,cAAA,EAAgB,UAAA,EAAY,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,UAAA,CAAW,CAAC;CAWxF;;;;;;;AAOD,AAAA,SAAA,OAAA,CAfC,KAAA,EAAA,IAAA,EAAA,IAAA,EAeD;IACE,KAAK,IAfI,CAeX,gBAf8B;IAgB5B,OAfO,IAAA,CAAK,KAAC,EAAM,IAAA,EAAM,CAAA,EAAG,IAAA,EAAM,IAAA,EAAM,IAAA,CAAK,CAAC;CAgB/C;;;;;;;;;AASD,AAAA,SAAA,WAAA,CACI,KAAgB,EAAE,cAAmD,EAAE,KAAU,EAAE,KAAU,EAC7F,IAA+B,EAFnC;IAGE,OAtBO,IAAA,CAAK,KAAC,EAAM,cAAA,EAAgB,CAAA,EAAG,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,CAAC;CAuB3D;;;;;;;;;;;;AAYD,AAAA,SAAA,IAAA,CACI,KAAgB,EAAE,iBAA6D,EAC/E,UAAkB,EAAE,KAAU,EAAE,KAAU,EAAE,IAA+B,EAC3E,QAAuB,EAAE,OAAqB,EAHlD;IAIE,MAhCM,EAAA,cAAE,EAAe,UAAA,EAAY,eAAA,EAAgB,GAAG,sBAAA,CAAuB,iBAAC,CAAiB,CAAC;IAiChG,IAAI,CAhCC,OAAC,EAAQ;QAiCZ,OAAO,GAhCG,EAAA,CAAG;KAiCd;IACD,IAAI,CAhCC,QAAC,EAAS;QAiCb,QAAQ,GAhCG,EAAA,CAAG;KAiCf;IAED,uBAhCM,OAAA,GAAoB,IAAA,CAAK,GAAC,CAAG,KAAC,IAgCtC;QACI,qBAhCI,KAAO,CAAI;QAiCf,qBAhCI,KAAO,CAAS;QAiCpB,IAAI,KAhCC,CAAK,OAAC,CAAO,KAAC,CAAK,EAAE;YAiCxB,CAAC,KAhCC,EAAM,KAAA,CAAM,GAAG,KAAA,CAAM;SAiCxB;aAhCM;YAiCL,KAAK,GAhCG,CAgCd,YAhC4B;YAiCtB,KAAK,GAhCG,KAAA,CAAM;SAiCf;QACD,OAhCO,EAAA,KAAE,EAAM,KAAA,EAAO,QAAA,EAAU,QAAA,CAAS,KAAC,CAAK,EAAC,CAAC;KAiClD,CAhCC,CAAC;IAkCH,OAhCO;;QAkCL,KAAK,EAhCE,CAAA,CAAE;QAiCT,MAAM,EAhCE,IAAA;QAiCR,YAAY,EAhCE,IAAA;QAiCd,YAAY,EAhCE,CAAA,CAAE;QAiChB,WAAW,EAhCE,CAAA,CAAE;;QAkCf,KAAK;QACL,UAAU,EAhCE,CAAA;QAiCZ,gBAAgB,EAhCE,CAAA;QAiClB,mBAAmB,EAhCE,CAAA,EAAG,cAAA,EAAgB,eAAA,EAAiB,UAAA;QAiCzD,cAAc,EAhCE,CAAA,CAAE,EAAE,UAAA,EAAY,QAAA;QAiChC,YAAY,EAhCE,gBAAA,CAAiB,QAAC,CAAQ,EAAE,OAAA;QAiC1C,OAAO,EAhCE,IAAA;QAiCT,QAAQ,EAhCE,EAAA,KAAE,EAAM,QAAA,EAAU,QAAA,CAAS,KAAC,CAAK,EAAE,KAAA,EAAO,IAAA,EAAM,OAAA,EAAQ;QAiClE,IAAI,EAhCE,IAAA;QAiCN,KAAK,EAhCE,IAAA;QAiCP,SAAS,EAhCE,IAAA;KAiCZ,CAhCC;CAiCH;;;;;;AAMD,AAAA,SAAA,sBAAA,CApCC,IAAA,EAAA,GAAA,EAoCD;IACE,OApCO,GAAA,CAAI,KAAC,GAAO,IAoCrB,sBApC8C,WAAA,GAAc,uBAAA,CAAwB,IAAC,EAAK,GAAA,CAAI,CAAC;CAqC9F;;;;;;AAMD,AAAA,SAAA,kBAAA,CAxCC,IAAA,EAAA,GAAA,EAwCD;;IAEE,qBAxCI,QAAA,GAAW,IAAA,CAAK;IAyCpB,OAAO,QAxCC,CAAQ,MAAC,IAAS,CAAA,eAAE,CAAe,QAAC,CAAQ,EAAE;QAyCpD,QAAQ,GAxCG,QAAA,CAAS,MAAC,CAAM;KAyC5B;;IAED,uBAxCM,oBAAA,GAAuB,IAAA,CAAK;;IA0ClC,OAxCO,WAAA,oBAyCH,QAAQ,CAxCC,MAAC,uBAAS,YAAA,CAAa,QAAC,CAAQ,IAAI,oBAAA,mBAAqB,EAAC,GAAA,CAAI,QAAC,GAAU,KAAC,mBAAK,EAyCxF,GAAG,CAxCC,QAAC,GAAU,IAAC,CAAI,CAAC;CAyC1B;;;;;;AAMD,AAAA,SAAA,uBAAA,CA5CC,IAAA,EAAA,GAAA,EA4CD;;IAEE,uBA5CM,oBAAA,GAAuB,CAAA,GAAE,CAAG,KAAC,GAAO,KA4C5C,oBA5CmE,CAAA,CAAE;;IA8CnE,uBA5CM,QAAA,GAAW,WAAA,CA6Cb,IAAI,qBA5CE,GAAA,CAAI,MAAC,IAAS,oBAAA,mBAAqB,EAAC,GAAA,CAAI,QAAC,GAAU,KAAC,mBAAK,EAAC,GAAA,CAAI,QAAC,GAAU,IAAC,CAAI,CAAC;IA6CzF,IAAI,GA5CC,CAAG,OAAC,CAAO,MAAC,EAAO;QA6CtB,KAAK,qBA5CI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,OAAC,CAAO,MAAC,EAAO,CAAA,EAAE,EAAG;YA6C3C,uBA5CM,MAAA,GAAS,GAAA,CAAI,OAAC,CAAO,CAAC,CAAC,CAAC;YA6C9B,uBA5CM,YAAA,GAAe,QAAA,GAAS,MAAC,CAAM,QAAC,GAAU,CAAC,SAAC,CA6C9C,mBAAmB,CA5CC,IAAC,mBAAI,EAAC,GAAA,CAAI,MAAC,GAAQ,KAAC,EAAM,MAAA,CAAO,SAAC,CAAS,CAAC,CAAC;YAAA,EA6CrE,IAAI,CA5CC,WAAC,GAAa,GAAC,CAAG,WAAC,GAAa,CAAA,CAAE,GAAG,YAAA,CAAa,WAAC,CAAW,IAAC,CAAI,YAAC,CAAY,CAAC;SA6CvF;KACF;IACD,OA5CO,QAAA,CAAS;CA6CjB;;;;;;;AAOD,SAAA,mBAAA,CAjDC,IAAA,EAAA,KAAA,EAAA,SAAA,EAiDD;IACE,OAjDO,CAAA,KAAQ,KAiDjB;QACI,IAjDI;YAkDF,OAjDO,aAAA,CAAc,IAAC,EAAK,KAAA,EAAO,SAAA,EAAW,KAAA,CAAM,CAAC;SAkDrD;QAjDC,OAAA,CAAQ,EAAE;;YAmDV,IAAI,CAjDC,IAAC,CAAI,YAAC,CAAY,WAAC,CAAW,CAAC,CAAC,CAAC;SAkDvC;KACF,CAAA;CACF;;;;;;;;;;;;;;;;AAgBD,AAAA,SAAA,6BAAA,CACI,IAAc,EAAE,GAAY,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAC3F,EAAO,EAAE,EAAO,EAAE,EAAO,EAF7B;IAGE,uBA/DM,YAAA,GAAe,cAAA,CAAe,IAAC,EAAK,GAAA,CAAI,KAAC,CAAK,CAAC;IAgErD,uBA/DM,SAAA,GAAY,YAAA,CAAa,QAAC,CAAQ;IAgExC,qBA/DI,OAAA,GAAU,KAAA,CAAM;IAgEpB,qBA/DI,OAAA,KAAyB,SAAA,EAAA,CAAY;IAgEzC,uBA/DM,OAAA,GAAU,GAAA,CAAI,QAAC,CAAQ,MAAC,CAAM;IAgEpC,IAAI,OA/DC,GAAS,CAAA,IAAK,YAAA,CAAa,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG,EAAE;QAgEjD,OAAO,GA/DG,IAAA,CAAK;QAgEf,OAAO,GA/DG,UAAA,CAAW,IAAC,EAAK,YAAA,EAAc,GAAA,EAAK,CAAA,EAAG,EAAA,EAAI,OAAA,CAAQ,CAAC;KAgE/D;IACD,IAAI,OA/DC,GAAS,CAAA,IAAK,YAAA,CAAa,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG,EAAE;QAgEjD,OAAO,GA/DG,IAAA,CAAK;QAgEf,OAAO,GA/DG,UAAA,CAAW,IAAC,EAAK,YAAA,EAAc,GAAA,EAAK,CAAA,EAAG,EAAA,EAAI,OAAA,CAAQ,CAAC;KAgE/D;IACD,IAAI,OA/DC,GAAS,CAAA,IAAK,YAAA,CAAa,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG,EAAE;QAgEjD,OAAO,GA/DG,IAAA,CAAK;QAgEf,OAAO,GA/DG,UAAA,CAAW,IAAC,EAAK,YAAA,EAAc,GAAA,EAAK,CAAA,EAAG,EAAA,EAAI,OAAA,CAAQ,CAAC;KAgE/D;IACD,IAAI,OA/DC,GAAS,CAAA,IAAK,YAAA,CAAa,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG,EAAE;QAgEjD,OAAO,GA/DG,IAAA,CAAK;QAgEf,OAAO,GA/DG,UAAA,CAAW,IAAC,EAAK,YAAA,EAAc,GAAA,EAAK,CAAA,EAAG,EAAA,EAAI,OAAA,CAAQ,CAAC;KAgE/D;IACD,IAAI,OA/DC,GAAS,CAAA,IAAK,YAAA,CAAa,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG,EAAE;QAgEjD,OAAO,GA/DG,IAAA,CAAK;QAgEf,OAAO,GA/DG,UAAA,CAAW,IAAC,EAAK,YAAA,EAAc,GAAA,EAAK,CAAA,EAAG,EAAA,EAAI,OAAA,CAAQ,CAAC;KAgE/D;IACD,IAAI,OA/DC,GAAS,CAAA,IAAK,YAAA,CAAa,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG,EAAE;QAgEjD,OAAO,GA/DG,IAAA,CAAK;QAgEf,OAAO,GA/DG,UAAA,CAAW,IAAC,EAAK,YAAA,EAAc,GAAA,EAAK,CAAA,EAAG,EAAA,EAAI,OAAA,CAAQ,CAAC;KAgE/D;IACD,IAAI,OA/DC,GAAS,CAAA,IAAK,YAAA,CAAa,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG,EAAE;QAgEjD,OAAO,GA/DG,IAAA,CAAK;QAgEf,OAAO,GA/DG,UAAA,CAAW,IAAC,EAAK,YAAA,EAAc,GAAA,EAAK,CAAA,EAAG,EAAA,EAAI,OAAA,CAAQ,CAAC;KAgE/D;IACD,IAAI,OA/DC,GAAS,CAAA,IAAK,YAAA,CAAa,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG,EAAE;QAgEjD,OAAO,GA/DG,IAAA,CAAK;QAgEf,OAAO,GA/DG,UAAA,CAAW,IAAC,EAAK,YAAA,EAAc,GAAA,EAAK,CAAA,EAAG,EAAA,EAAI,OAAA,CAAQ,CAAC;KAgE/D;IACD,IAAI,OA/DC,GAAS,CAAA,IAAK,YAAA,CAAa,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG,EAAE;QAgEjD,OAAO,GA/DG,IAAA,CAAK;QAgEf,OAAO,GA/DG,UAAA,CAAW,IAAC,EAAK,YAAA,EAAc,GAAA,EAAK,CAAA,EAAG,EAAA,EAAI,OAAA,CAAQ,CAAC;KAgE/D;IACD,IAAI,OA/DC,GAAS,CAAA,IAAK,YAAA,CAAa,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG,EAAE;QAgEjD,OAAO,GA/DG,IAAA,CAAK;QAgEf,OAAO,GA/DG,UAAA,CAAW,IAAC,EAAK,YAAA,EAAc,GAAA,EAAK,CAAA,EAAG,EAAA,EAAI,OAAA,CAAQ,CAAC;KAgE/D;IACD,IAAI,OA/DC,EAAQ;QAgEX,SAAS,CA/DC,WAAC,CAAW,OAAC,CAAO,CAAC;KAgEhC;IACD,IAAI,CA/DC,IAAC,CAAI,KAAC,GAAO,CA+DpB,uBA/D6C,GAAE,CAAG,KAAC,GAAO,KA+D1D,cA/D2E,EAAE;QAgEzE,SAAS,CA/DC,QAAC,EAAQ,CAAE;KAgEtB;IACD,IAAI,GA/DC,CAAG,KAAC,GAAO,MA+DlB,gBA/DqC;QAgEjC,SAAS,CA/DC,SAAC,EAAS,CAAE;KAgEvB;IACD,OA/DO,OAAA,CAAQ;CAgEhB;;;;;;;AAOD,AAAA,SAAA,8BAAA,CACI,IAAc,EAAE,GAAY,EAAE,MAAa,EAD/C;IAEE,uBApEM,YAAA,GAAe,cAAA,CAAe,IAAC,EAAK,GAAA,CAAI,KAAC,CAAK,CAAC;IAqErD,uBApEM,SAAA,GAAY,YAAA,CAAa,QAAC,CAAQ;IAqExC,qBApEI,OAAA,GAAU,KAAA,CAAM;IAqEpB,qBApEI,OAAA,KAAyB,SAAA,EAAA,CAAY;IAqEzC,KAAK,qBApEI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,MAAC,EAAO,CAAA,EAAE,EAAG;QAqEtC,IAAI,YApEC,CAAY,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,MAAA,CAAO,CAAC,CAAC,CAAC,EAAE;YAqEzC,OAAO,GApEG,IAAA,CAAK;YAqEf,OAAO,GApEG,UAAA,CAAW,IAAC,EAAK,YAAA,EAAc,GAAA,EAAK,CAAA,EAAG,MAAA,CAAO,CAAC,CAAC,EAAE,OAAA,CAAQ,CAAC;SAqEtE;KACF;IACD,IAAI,OApEC,EAAQ;QAqEX,SAAS,CApEC,WAAC,CAAW,OAAC,CAAO,CAAC;KAqEhC;IACD,IAAI,CApEC,IAAC,CAAI,KAAC,GAAO,CAoEpB,uBApE6C,GAAE,CAAG,KAAC,GAAO,KAoE1D,cApE2E,EAAE;QAqEzE,SAAS,CApEC,QAAC,EAAQ,CAAE;KAqEtB;IACD,IAAI,GApEC,CAAG,KAAC,GAAO,MAoElB,gBApEqC;QAqEjC,SAAS,CApEC,SAAC,EAAS,CAAE;KAqEvB;IACD,OApEO,OAAA,CAAQ;CAqEhB;;;;;;AAMD,SAAA,uBAAA,CAxEC,IAAA,EAAA,GAAA,EAwED;;IAEE,uBAxEM,oBAAA,GAAuB,CAAA,GAAE,CAAG,KAAC,GAAO,IAwE5C,0BAxEyE,CAAA,CAAE;IAyEzE,uBAxEM,WAAA,GAAc,GAAA,CAAI,QAAC,CAAQ;IAyEjC,qBAxEI,UAAY,CAAI;IAyEpB,QAAQ,GAxEC,CAAG,KAAC,GAAO,SAwEtB;QACI,KAxEK,GAwET;YACM,UAAU,GAxEG,WAAA,CAyET,IAAI,qBAxEE,GAAA,CAAI,MAAC,IAAS,oBAAA,mBAAqB,EAAC,WAAA,GAAc,KAAC,mBAAK,EAAC,WAAA,GAAc,IAAC,CAAI,CAAC;YAyEvF,MAAM;QACR,KAxEK,GAwET;YACM,UAAU,GAxEG,WAAA,CAyET,IAAI,qBAxEE,GAAA,CAAI,MAAC,IAAS,oBAAA,mBAAqB,EAAC,WAAA,GAAc,KAAC,mBAAK,EAAC,WAAA,GAAc,IAAC,CAAI,CAAC;YAyEvF,MAAM;QACR,KAxEK,IAwET;YACM,UAAU,GAxEG,UAAA,CAAW,IAAC,qBAAK,GAAA,CAAI,MAAC,IAAS,oBAAA,mBAAqB,EAAC,WAAA,GAAc,IAAC,CAAI,CAAC,CAAC,CAAC,CAAC;YAyEzF,MAAM;QACR,KAxEK,GAwET;YACM,UAAU,GAxEC,EAAE,WAAA,GAAc,KAAC,CAAK;YAyEjC,MAAM;KACT;IACD,OAxEO,UAAA,CAAW;CAyEnB;;;;;;;;;AASD,SAAA,WAAA,CACI,IAAc,EAAE,KAAc,EAAE,oBAA6B,EAAE,IAAS,EAAE,IAAc,EAD5F;IAEE,uBA/EM,GAAA,GAAM,IAAA,CAAK,MAAC,CAAM;IAgFxB,qBA/EI,UAAY,CAAI;IAgFpB,QAAQ,GA/EC;QAgFP,KA/EK,CAAA;YAgFH,UAAU,GA/EG,IAAI,IAAA,EAAK,CAAE;YAgFxB,MAAM;QACR,KA/EK,CAAA;YAgFH,UAAU,GA/EG,IAAI,IAAA,CAAK,UAAC,CAAU,IAAC,EAAK,KAAA,EAAO,oBAAA,EAAsB,IAAA,CAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAgF9E,MAAM;QACR,KA/EK,CAAA;YAgFH,UAAU,GA/EG,IAAI,IAAA,CAgFb,UAAU,CA/EC,IAAC,EAAK,KAAA,EAAO,oBAAA,EAAsB,IAAA,CAAK,CAAC,CAAC,CAAC,EAgFtD,UAAU,CA/EC,IAAC,EAAK,KAAA,EAAO,oBAAA,EAAsB,IAAA,CAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAgF5D,MAAM;QACR,KA/EK,CAAA;YAgFH,UAAU,GA/EG,IAAI,IAAA,CAgFb,UAAU,CA/EC,IAAC,EAAK,KAAA,EAAO,oBAAA,EAAsB,IAAA,CAAK,CAAC,CAAC,CAAC,EAgFtD,UAAU,CA/EC,IAAC,EAAK,KAAA,EAAO,oBAAA,EAAsB,IAAA,CAAK,CAAC,CAAC,CAAC,EAgFtD,UAAU,CA/EC,IAAC,EAAK,KAAA,EAAO,oBAAA,EAAsB,IAAA,CAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAgF5D,MAAM;QACR;YACE,uBA/EM,SAAA,GAAY,IAAI,KAAA,CAAM,GAAC,CAAG,CAAC;YAgFjC,KAAK,qBA/EI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,EAAK,CAAA,EAAE,EAAG;gBAgF5B,SAAS,CA/EC,CAAC,CAAC,GAAG,UAAA,CAAW,IAAC,EAAK,KAAA,EAAO,oBAAA,EAAsB,IAAA,CAAK,CAAC,CAAC,CAAC,CAAC;aAgFvE;YACD,UAAU,GA/EG,IAAI,IAAA,CAAK,GAAC,SAAG,CAAS,CAAC;KAgFvC;IACD,OA/EO,UAAA,CAAW;CAgFnB;;;;;;;;;AASD,SAAA,WAAA,CACI,IAAc,EAAE,KAAc,EAAE,oBAA6B,EAAE,OAAY,EAC3E,IAAc,EAFlB;IAGE,uBAtFM,GAAA,GAAM,IAAA,CAAK,MAAC,CAAM;IAuFxB,qBAtFI,UAAY,CAAI;IAuFpB,QAAQ,GAtFC;QAuFP,KAtFK,CAAA;YAuFH,UAAU,GAtFG,OAAA,EAAQ,CAAE;YAuFvB,MAAM;QACR,KAtFK,CAAA;YAuFH,UAAU,GAtFG,OAAA,CAAQ,UAAC,CAAU,IAAC,EAAK,KAAA,EAAO,oBAAA,EAAsB,IAAA,CAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAuF7E,MAAM;QACR,KAtFK,CAAA;YAuFH,UAAU,GAtFG,OAAA,CAuFT,UAAU,CAtFC,IAAC,EAAK,KAAA,EAAO,oBAAA,EAAsB,IAAA,CAAK,CAAC,CAAC,CAAC,EAuFtD,UAAU,CAtFC,IAAC,EAAK,KAAA,EAAO,oBAAA,EAAsB,IAAA,CAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAuF5D,MAAM;QACR,KAtFK,CAAA;YAuFH,UAAU,GAtFG,OAAA,CAuFT,UAAU,CAtFC,IAAC,EAAK,KAAA,EAAO,oBAAA,EAAsB,IAAA,CAAK,CAAC,CAAC,CAAC,EAuFtD,UAAU,CAtFC,IAAC,EAAK,KAAA,EAAO,oBAAA,EAAsB,IAAA,CAAK,CAAC,CAAC,CAAC,EAuFtD,UAAU,CAtFC,IAAC,EAAK,KAAA,EAAO,oBAAA,EAAsB,IAAA,CAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAuF5D,MAAM;QACR;YACE,uBAtFM,SAAA,GAAY,KAAA,CAAM,GAAC,CAAG,CAAC;YAuF7B,KAAK,qBAtFI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,EAAK,CAAA,EAAE,EAAG;gBAuF5B,SAAS,CAtFC,CAAC,CAAC,GAAG,UAAA,CAAW,IAAC,EAAK,KAAA,EAAO,oBAAA,EAAsB,IAAA,CAAK,CAAC,CAAC,CAAC,CAAC;aAuFvE;YACD,UAAU,GAtFG,OAAA,CAAQ,GAAC,SAAG,CAAS,CAAC;KAuFtC;IACD,OAtFO,UAAA,CAAW;CAuFnB;;;;;;;;;;;;;;;;;;AAmBD,AAtFO,MAAM,qCAAA,GAAwC,EAAA,CAAG;;;;;;;;;AA+FxD,AAAA,SAAA,UAAA,CACI,IAAc,EAAE,KAAc,EAAE,oBAA6B,EAAE,MAAc,EAC7E,aAFJ,GAEyB,QAAQ,CAAC,kBAAkB,EAFpD;IAGE,IAAI,MA7FC,CAAM,KAAC,GAAO,CA6FrB,cA7FqC;QA8FjC,OA7FO,MAAA,CAAO,KAAC,CAAK;KA8FrB;IACD,uBA7FM,SAAA,GAAY,IAAA,CAAK;IA8FvB,IAAI,MA7FC,CAAM,KAAC,GAAO,CA6FrB,iBA7FwC;QA8FpC,aAAa,GA7FG,IAAA,CAAK;KA8FtB;IACD,uBA7FMD,WAAA,GAAW,MAAA,CAAO,QAAC,CAAQ;IA+FjC,IAAIA,WA7FC,KAAY,yBAAA,EAA2B;;;QAgG1C,oBAAoB,GA7FG,CAAA,EAAG,KAAC,IAAK,EAAG,KAAA,CAAM,OAAC,GAAS,aAAC,CAAa,CAAC;KA8FnE;IAED,IAAI,KA7FC,KAAQ,MAAE,CAAM,KAAC,GAAO,CA6F/B,gBA7FiD,EAAE;QA8F/C,oBAAoB,GA7FG,KAAA,CAAM;QA8F7B,KAAK,KA7FG,KAAA,CAAM,MAAC,EAAA,CAAQ;KA8FxB;IAED,OAAO,IA7FC,EAAK;QA8FX,IAAI,KA7FC,EAAM;YA8FT,QAAQA,WA7FC;gBA8FP,KA7FK,kBAAA,EAAoB;oBA8FvB,uBA7FM,QAAA,GAAW,YAAA,CAAa,IAAC,EAAK,KAAA,EAAO,oBAAA,CAAqB,CAAC;oBA8FjE,OA7FO,gBAAA,CAAiB,QAAC,CAAQ,CAAC;iBA8FnC;gBACD,KA7FK,iBAAA,EAAmB;oBA8FtB,uBA7FM,QAAA,GAAW,YAAA,CAAa,IAAC,EAAK,KAAA,EAAO,oBAAA,CAAqB,CAAC;oBA8FjE,OA7FO,QAAA,CAAS,QAAC,CAAQ;iBA8F1B;gBACD,KA7FK,kBAAA;oBA8FH,OA7FO,IAAI,UAAA,CAAW,aAAC,CAAa,IAAC,EAAK,KAAA,CAAM,KAAC,CAAK,CAAC,aAAC,CAAa,CAAC;gBA8FxE,KA7FK,wBAAA;oBA8FH,OA7FO,aAAA,CAAc,IAAC,EAAK,KAAA,CAAM,KAAC,CAAK,CAAC,aAAC,CAAa;gBA8FxD,KA7FK,mBAAA,EAAqB;oBA8FxB,IAAqB,EAAE,KA7FlB,CAAK,OAAC,GAAS,QAAC,EAAS;wBA8F5B,OA7FO,aAAA,CAAc,IAAC,EAAK,KAAA,CAAM,KAAC,CAAK,CAAC,QAAC,CAAQ;qBA8FlD;oBACD,MAAM;iBACP;gBACD,KA7FK,yBAAA,EAA2B;oBA8F9B,qBA7FI,MAAA,GAAS,YAAA,CAAa,IAAC,EAAK,KAAA,EAAO,oBAAA,CAAqB,CAAC;oBA8F7D,OA7FO,uBAAA,CAAwB,MAAC,CAAM,CAAC;iBA8FxC;gBACD,KA7FK,mBAAA;oBA8FH,OA7FO,cAAA,CAAe,IAAC,EAAK,KAAA,CAAM,CAAC;gBA8FrC;oBACE,uBA7FM,WAAA,GAAY,GA8Fb,oBA7FC,GAAoB,EAAE,KAAA,CAAM,OAAC,GAAS,YAAC,GAAY,EA8F7B,KAAK,CA7FC,OAAC,GAAS,eAAC,IAAkBA,WAAC,CAAQ,CAAC;oBA8FzE,IAAI,WA7FC,EAAY;wBA8Ff,uBA7FM,YAAA,GAAe,cAAA,CAAe,IAAC,EAAK,WAAA,CAAY,KAAC,CAAK,CAAC;wBA8F7D,IAAI,YA7FC,CAAY,QAAC,KAAY,WAAA,EAAa;4BA8FzC,YAAY,CA7FC,QAAC,GAAU,uBAAA,CAAwB,IAAC,EAAK,WAAA,CAAY,CAAC;yBA8FpE;wBACD,OA7FO,YAAA,CAAa,QAAC,CAAQ;qBA8F9B;aACJ;SACF;QACD,oBAAoB,GA7FG,eAAA,CAAgB,IAAC,CAAI,CAAC;QA8F7C,KAAK,KA7FG,YAAA,CAAa,IAAC,CAAI,EAAA,CAAG;QA8F7B,IAAI,KA7FG,IAAA,CAAK,MAAC,EAAA,CAAQ;KA8FtB;IAED,uBA7FM,KAAA,GAAQ,SAAA,CAAU,IAAC,CAAI,QAAC,CAAQ,GAAC,CAAG,MAAC,CAAM,KAAC,EAAM,qCAAA,CAAsC,CAAC;IA+F/F,IAAI,KA7FC,KAAS,qCAAA;QA8FV,aAAa,KA7FK,qCAAA,EAAuC;;;;;;QAmG3D,OA7FO,KAAA,CAAM;KA8Fd;IAED,OA7FO,SAAA,CAAU,IAAC,CAAI,QAAC,CAAQ,QAAC,CAAQ,GAAC,CAAG,MAAC,CAAM,KAAC,EAAM,aAAA,CAAc,CAAC;CA8F1E;;;;;;;AAOD,SAAA,YAAA,CAlGC,IAAA,EAAA,KAAA,EAAA,oBAAA,EAkGD;IACE,qBAlGI,QAAU,CAAS;IAmGvB,IAAI,oBAlGC,EAAqB;QAmGxB,QAAQ,GAlGG,aAAA,CAAc,IAAC,EAAK,KAAA,CAAM,KAAC,CAAK,CAAC,aAAC,CAAa;KAmG3D;SAlGM;QAmGL,QAAQ,GAlGG,IAAA,CAAK;QAmGhB,OAAO,QAlGC,CAAQ,MAAC,IAAS,CAAA,eAAE,CAAe,QAAC,CAAQ,EAAE;YAmGpD,QAAQ,GAlGG,QAAA,CAAS,MAAC,CAAM;SAmG5B;KACF;IACD,OAlGO,QAAA,CAAS;CAmGjB;;;;;;;;;;AAUD,SAAA,UAAA,CACI,IAAc,EAAE,YAA0B,EAAE,GAAY,EAAE,UAAkB,EAAE,KAAU,EACxF,OAAsB,EAF1B;IAGE,IAAI,GA1GC,CAAG,KAAC,GAAO,KA0GlB,kBA1GuC;QA2GnC,uBA1GM,QAAA,GAAW,aAAA,CAAc,IAAC,mBAAI,EAAC,GAAA,CAAI,MAAC,GAAQ,KAAC,CAAK,CAAC,aAAC,CAAa;QA2GvE,IAAI,QA1GC,CAAQ,GAAC,CAAG,KAAC,GAAO,CA0G7B,eA1G+C;YA2GzC,QAAQ,CA1GC,KAAC,IAAQ,CA0GxB,qBA1GgD;SA2G3C;KACF;IACD,uBA1GM,OAAA,GAAU,GAAA,CAAI,QAAC,CAAQ,UAAC,CAAU,CAAC;IA2GzC,uBA1GM,QAAA,KAAW,OAAA,CAAQ,IAAC,EAAA,CAAM;;;;IA8GhC,YAAY,CA1GC,QAAC,CAAQ,QAAC,CAAQ,GAAG,KAAA,CAAM;IA2GxC,IAAI,GA1GC,CAAG,KAAC,GAAO,MA0GlB,kBA1GuC;QA2GnC,OAAO,GA1GG,OAAA,IAAW,EAAA,CAAG;QA2GxB,qBA1GI,QAAA,GAAW,IAAA,CAAK,SAAC,CAAS,GAAC,CAAG,YAAC,GAAc,UAAA,CAAW,CAAC;QA2G7D,IAAI,QA1GC,YAAmB,YAAA,EAAc;YA2GpC,QAAQ,GA1GG,QAAA,CAAS,OAAC,CAAO;SA2G7B;QACD,uBA1GM,OAAA,GAAU,GAAA,CAAI,QAAC,CAAQ,UAAC,CAAU,CAAC;QA2GzC,OAAO,GA1GC,OAAC,CAAO,eAAC,GAAiB;YA2G9B,IA1GI,YAAA,CAAa,QAAC,EAAS,KAAA,EAAO,CAAA,IAAE,CAAI,KAAC,GAAO,CA0GxD,uBA1GkF,CAAA,CAAE,CAAC;KA2GlF;IACD,IAAI,CA1GC,SAAC,CAAS,GAAC,CAAG,YAAC,GAAc,UAAA,CAAW,GAAG,KAAA,CAAM;IA2GtD,OA1GO,OAAA,CAAQ;CA2GhB;;;;;;AAMD,AAAA,SAAA,+BAAA,CA9GC,IAAA,EAAA,UAAA,EA8GD;IACE,IAAI,EA9GE,IAAC,CAAI,GAAC,CAAG,SAAC,GAAW,UAAA,CAAW,EAAE;QA+GtC,OAAO;KACR;IACD,uBA9GM,KAAA,GAAQ,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK;IA+G7B,KAAK,qBA9GI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAC,EAAO,CAAA,EAAE,EAAG;QA+GrC,uBA9GM,OAAA,GAAU,KAAA,CAAM,CAAC,CAAC,CAAC;QA+GzB,qBA9GI,MAAA,GAAS,OAAA,CAAQ,MAAC,CAAM;QA+G5B,IAAI,CA9GC,MAAC,IAAS,OAAA,CAAQ,KAAC,GAAO,UAAA,EAAY;;YAgHzC,sBAAsB,CA9GC,IAAC,EAAK,CAAA,EAAG,OAAA,CAAQ,KAAC,GAAO,UAAA,CAAW,CAAC;SA+G7D;QACD,IAAI,CA9GC,OAAC,CAAO,UAAC,GAAY,UAAA,MAAgB,CAAA,EAAG;;YAgH3C,CAAC,IA9GI,OAAA,CAAQ,UAAC,CAAU;SA+GzB;QACD,OAAO,MA9GC,KAAS,MAAE,CAAM,KAAC,GAAO,CA8GrC,mBA9G2D;YA+GhD,CAAC,KA9GK,MAAA,CAAO,KAAC,GAAO,MAAA,CAAO,UAAC,EAAW;;YAgH7C,IAAI,MA9GC,CAAM,gBAAC,GAAkB,UAAA,EAAY;gBA+GxC,8BAA8B,CA9GC,IAAC,EAAK,MAAA,EAAQ,UAAA,CAAW,CAAC;aA+G1D;YACD,MAAM,GA9GG,MAAA,CAAO,MAAC,CAAM;SA+GxB;KACF;CACF;;;;;;;AAOD,SAAA,8BAAA,CAnHC,IAAA,EAAA,KAAA,EAAA,UAAA,EAmHD;IACE,KAAK,qBAnHI,CAAA,GAAI,KAAA,CAAM,KAAC,GAAO,CAAA,EAAG,CAAA,IAAK,KAAA,CAAM,KAAC,GAAO,KAAA,CAAM,UAAC,EAAW,CAAA,EAAE,EAAG;QAoHtE,uBAnHM,OAAA,GAAU,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,CAAC,CAAC,CAAC;QAoHlC,IAAI,OAnHC,CAAO,KAAC,GAAO,UAAA,EAAY;YAoH9B,sBAAsB,CAnHC,IAAC,EAAK,CAAA,EAAG,OAAA,CAAQ,KAAC,GAAO,UAAA,CAAW,CAAC;SAoH7D;;QAED,CAAC,IAnHI,OAAA,CAAQ,UAAC,CAAU;KAoHzB;CACF;;;;;;;AAOD,SAAA,sBAAA,CAxHC,IAAA,EAAA,KAAA,EAAA,UAAA,EAwHD;IACE,uBAxHM,QAAA,GAAW,cAAA,CAAe,IAAC,EAAK,KAAA,CAAM,CAAC,QAAC,CAAQ;IAyHtD,IAAI,QAxHC,KAAY,WAAA,EAAa;QAyH5B,OAAO;KACR;IACD,QAAQ,CAxHC,cAAC,CAAc,IAAC,EAAK,KAAA,CAAM,CAAC;IAyHrC,IAAI,UAxHC,GAAY,MAwHnB,yBAxH+C;QAyH3C,QAAQ,CAxHC,kBAAC,EAAkB,CAAE;KAyH/B;IACD,IAAI,UAxHC,GAAY,OAwHnB,4BAxHkD;QAyH9C,QAAQ,CAxHC,qBAAC,EAAqB,CAAE;KAyHlC;IACD,IAAI,UAxHC,GAAY,OAwHnB,sBAxH4C;QAyHxC,QAAQ,CAxHC,eAAC,EAAe,CAAE;KAyH5B;IACD,IAAI,UAxHC,GAAY,OAwHnB,yBAxH+C;QAyH3C,QAAQ,CAxHC,kBAAC,EAAkB,CAAE;KAyH/B;IACD,IAAI,UAxHC,GAAY,KAwHnB,kBAxHwC;QAyHpC,QAAQ,CAxHC,WAAC,EAAW,CAAE;KAyHxB;CACF;;ADhpBD;;;;;;;AASA,AACA,AACA;;;;AAIA,AAAA,SAAA,WAAA,CAJC,QAAA,EAID;;IAEE,OAJO,kBAAA,CAAmB,EAI5B,qBAJoD,IAAI,KAAA,CAAM,QAAC,GAAU,CAAA,CAAE,CAAC,CAAC;CAK5E;;;;;AAKD,AAAA,SAAA,YAAA,CAPC,QAAA,EAOD;IACE,OAPO,kBAAA,CAAmB,EAO5B,sBAPqD,IAAI,KAAA,CAAM,QAAC,CAAQ,CAAC,CAAC;CAQzE;;;;;AAKD,AAAA,SAAA,aAAA,CAVC,aAAA,EAUD;IACE,OAVO,kBAAA,CAAmB,EAU5B,uBAVsD,aAAA,CAAc,CAAC;CAWpE;;;;;;AAMD,SAAA,kBAAA,CAdC,KAAA,EAAA,aAAA,EAcD;IACE,uBAdM,QAAA,GAAyB,IAAI,KAAA,CAAM,aAAC,CAAa,MAAC,CAAM,CAAC;IAe/D,KAAK,qBAdI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,aAAA,CAAc,MAAC,EAAO,CAAA,EAAE,EAAG;QAe7C,uBAdM,IAAA,GAAO,aAAA,CAAc,CAAC,CAAC,CAAC;QAe9B,QAAQ,CAdC,CAAC,CAAC,GAAG;YAeZ,KAAK,EAdE,CAcb;YACM,IAAI,EAdE,IAAA;YAeN,EAAE,EAdE,IAAA;YAeJ,eAAe,EAdE,IAAA;YAejB,eAAe,EAdE,IAAA;YAejB,MAAM,EAdE,IAAA;SAeT,CAdC;KAeH;IACD,OAdO;;QAgBL,KAAK,EAdE,CAAA,CAAE;QAeT,MAAM,EAdE,IAAA;QAeR,YAAY,EAdE,IAAA;QAed,YAAY,EAdE,CAAA,CAAE;QAehB,WAAW,EAdE,CAAA,CAAE;;QAgBf,KAAK;QACL,UAAU,EAdE,CAAA;QAeZ,gBAAgB,EAdE,CAAA;QAelB,mBAAmB,EAdE,CAAA;QAerB,cAAc,EAdE,EAAA;QAehB,eAAe,EAdE,CAAA;QAejB,UAAU,EAdE,EAAA;QAeZ,cAAc,EAdE,CAAA,CAAE;QAelB,UAAU,EAdE,CAAA,EAAG,QAAA;QAef,YAAY,EAdE,gBAAA,CAAiB,QAAC,CAAQ;QAexC,OAAO,EAdE,EAAA;QAeT,OAAO,EAdE,IAAA;QAeT,QAAQ,EAdE,IAAA;QAeV,IAAI,EAdE,IAAA;QAeN,KAAK,EAdE,IAAA;QAeP,SAAS,EAdE,IAAA;KAeZ,CAdC;CAeH;;;;;;AAMD,AAAA,SAAA,oBAAA,CAlBC,IAAA,EAAA,GAAA,EAkBD;IACE,OAlBO,EAAA,KAAE,EAAM,SAAA,EAAU,CAAC;CAmB3B;;;;;;;;;;;;;;;;AAgBD,AAAA,SAAA,kCAAA,CACI,IAAc,EAAE,GAAY,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAC3F,EAAO,EAAE,EAAO,EAAE,EAAO,EAF7B;IAGE,uBAhCM,QAAA,GAAW,GAAA,CAAI,QAAC,CAAQ;IAiC9B,qBAhCI,OAAA,GAAU,KAAA,CAAM;IAiCpB,uBAhCM,OAAA,GAAU,QAAA,CAAS,MAAC,CAAM;IAiChC,IAAI,OAhCC,GAAS,CAAA,IAAK,qBAAA,CAAsB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAiC3E,IAAI,OAhCC,GAAS,CAAA,IAAK,qBAAA,CAAsB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAiC3E,IAAI,OAhCC,GAAS,CAAA,IAAK,qBAAA,CAAsB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAiC3E,IAAI,OAhCC,GAAS,CAAA,IAAK,qBAAA,CAAsB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAiC3E,IAAI,OAhCC,GAAS,CAAA,IAAK,qBAAA,CAAsB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAiC3E,IAAI,OAhCC,GAAS,CAAA,IAAK,qBAAA,CAAsB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAiC3E,IAAI,OAhCC,GAAS,CAAA,IAAK,qBAAA,CAAsB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAiC3E,IAAI,OAhCC,GAAS,CAAA,IAAK,qBAAA,CAAsB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAiC3E,IAAI,OAhCC,GAAS,CAAA,IAAK,qBAAA,CAAsB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAiC3E,IAAI,OAhCC,GAAS,CAAA,IAAK,qBAAA,CAAsB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAkC3E,IAAI,OAhCC,EAAQ;QAiCX,uBAhCM,IAAA,GAAO,oBAAA,CAAqB,IAAC,EAAK,GAAA,CAAI,KAAC,CAAK,CAAC;QAiCnD,qBAhCI,KAAO,CAAI;QAiCf,QAAQ,GAhCC,CAAG,KAAC,GAAO,SAgCxB;YACM,KAhCK,EAgCX;gBACQ,KAAK,GAhCG,IAAI,KAAA,CAAM,QAAC,CAAQ,MAAC,CAAM,CAAC;gBAiCnC,IAAI,OAhCC,GAAS,CAAA;oBAAG,KAAA,CAAM,CAAC,CAAC,GAAG,EAAA,CAAG;gBAiC/B,IAAI,OAhCC,GAAS,CAAA;oBAAG,KAAA,CAAM,CAAC,CAAC,GAAG,EAAA,CAAG;gBAiC/B,IAAI,OAhCC,GAAS,CAAA;oBAAG,KAAA,CAAM,CAAC,CAAC,GAAG,EAAA,CAAG;gBAiC/B,IAAI,OAhCC,GAAS,CAAA;oBAAG,KAAA,CAAM,CAAC,CAAC,GAAG,EAAA,CAAG;gBAiC/B,IAAI,OAhCC,GAAS,CAAA;oBAAG,KAAA,CAAM,CAAC,CAAC,GAAG,EAAA,CAAG;gBAiC/B,IAAI,OAhCC,GAAS,CAAA;oBAAG,KAAA,CAAM,CAAC,CAAC,GAAG,EAAA,CAAG;gBAiC/B,IAAI,OAhCC,GAAS,CAAA;oBAAG,KAAA,CAAM,CAAC,CAAC,GAAG,EAAA,CAAG;gBAiC/B,IAAI,OAhCC,GAAS,CAAA;oBAAG,KAAA,CAAM,CAAC,CAAC,GAAG,EAAA,CAAG;gBAiC/B,IAAI,OAhCC,GAAS,CAAA;oBAAG,KAAA,CAAM,CAAC,CAAC,GAAG,EAAA,CAAG;gBAiC/B,IAAI,OAhCC,GAAS,CAAA;oBAAG,KAAA,CAAM,CAAC,CAAC,GAAG,EAAA,CAAG;gBAiC/B,MAAM;YACR,KAhCK,EAgCX;gBACQ,KAAK,GAhCG,EAAA,CAAG;gBAiCX,IAAI,OAhCC,GAAS,CAAA;oBAAG,KAAA,GAAM,QAAC,CAAQ,CAAC,CAAC,CAAC,IAAC,GAAM,GAAG,EAAA,CAAG;gBAiChD,IAAI,OAhCC,GAAS,CAAA;oBAAG,KAAA,GAAM,QAAC,CAAQ,CAAC,CAAC,CAAC,IAAC,GAAM,GAAG,EAAA,CAAG;gBAiChD,IAAI,OAhCC,GAAS,CAAA;oBAAG,KAAA,GAAM,QAAC,CAAQ,CAAC,CAAC,CAAC,IAAC,GAAM,GAAG,EAAA,CAAG;gBAiChD,IAAI,OAhCC,GAAS,CAAA;oBAAG,KAAA,GAAM,QAAC,CAAQ,CAAC,CAAC,CAAC,IAAC,GAAM,GAAG,EAAA,CAAG;gBAiChD,IAAI,OAhCC,GAAS,CAAA;oBAAG,KAAA,GAAM,QAAC,CAAQ,CAAC,CAAC,CAAC,IAAC,GAAM,GAAG,EAAA,CAAG;gBAiChD,IAAI,OAhCC,GAAS,CAAA;oBAAG,KAAA,GAAM,QAAC,CAAQ,CAAC,CAAC,CAAC,IAAC,GAAM,GAAG,EAAA,CAAG;gBAiChD,IAAI,OAhCC,GAAS,CAAA;oBAAG,KAAA,GAAM,QAAC,CAAQ,CAAC,CAAC,CAAC,IAAC,GAAM,GAAG,EAAA,CAAG;gBAiChD,IAAI,OAhCC,GAAS,CAAA;oBAAG,KAAA,GAAM,QAAC,CAAQ,CAAC,CAAC,CAAC,IAAC,GAAM,GAAG,EAAA,CAAG;gBAiChD,IAAI,OAhCC,GAAS,CAAA;oBAAG,KAAA,GAAM,QAAC,CAAQ,CAAC,CAAC,CAAC,IAAC,GAAM,GAAG,EAAA,CAAG;gBAiChD,IAAI,OAhCC,GAAS,CAAA;oBAAG,KAAA,GAAM,QAAC,CAAQ,CAAC,CAAC,CAAC,IAAC,GAAM,GAAG,EAAA,CAAG;gBAiChD,MAAM;YACR,KAhCK,EAgCX;gBACQ,uBAhCM,IAAA,GAAO,EAAA,CAAG;gBAiChB,QAAQ,OAhCC;oBAiCP,KAhCK,CAAA;wBAiCH,KAAK,GAhCG,IAAA,CAAK,SAAC,CAAS,EAAC,CAAE,CAAC;wBAiC3B,MAAM;oBACR,KAhCK,CAAA;wBAiCH,KAAK,GAhCG,IAAA,CAAK,SAAC,CAAS,EAAC,CAAE,CAAC;wBAiC3B,MAAM;oBACR,KAhCK,CAAA;wBAiCH,KAAK,GAhCG,IAAA,CAAK,SAAC,CAAS,EAAC,EAAG,EAAA,CAAG,CAAC;wBAiC/B,MAAM;oBACR,KAhCK,CAAA;wBAiCH,KAAK,GAhCG,IAAA,CAAK,SAAC,CAAS,EAAC,EAAG,EAAA,EAAI,EAAA,CAAG,CAAC;wBAiCnC,MAAM;oBACR,KAhCK,CAAA;wBAiCH,KAAK,GAhCG,IAAA,CAAK,SAAC,CAAS,EAAC,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,CAAG,CAAC;wBAiCvC,MAAM;oBACR,KAhCK,CAAA;wBAiCH,KAAK,GAhCG,IAAA,CAAK,SAAC,CAAS,EAAC,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAG,CAAC;wBAiC3C,MAAM;oBACR,KAhCK,CAAA;wBAiCH,KAAK,GAhCG,IAAA,CAAK,SAAC,CAAS,EAAC,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAG,CAAC;wBAiC/C,MAAM;oBACR,KAhCK,CAAA;wBAiCH,KAAK,GAhCG,IAAA,CAAK,SAAC,CAAS,EAAC,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAG,CAAC;wBAiCnD,MAAM;oBACR,KAhCK,CAAA;wBAiCH,KAAK,GAhCG,IAAA,CAAK,SAAC,CAAS,EAAC,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAG,CAAC;wBAiCvD,MAAM;oBACR,KAhCK,EAAA;wBAiCH,KAAK,GAhCG,IAAA,CAAK,SAAC,CAAS,EAAC,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAG,CAAC;wBAiC3D,MAAM;iBACT;gBACD,MAAM;SACT;QACD,IAAI,CAhCC,KAAC,GAAO,KAAA,CAAM;KAiCpB;IACD,OAhCO,OAAA,CAAQ;CAiChB;;;;;;;AAOD,AAAA,SAAA,mCAAA,CACI,IAAc,EAAE,GAAY,EAAE,MAAa,EAD/C;IAEE,uBArCM,QAAA,GAAW,GAAA,CAAI,QAAC,CAAQ;IAsC9B,qBArCI,OAAA,GAAU,KAAA,CAAM;IAsCpB,KAAK,qBArCI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,MAAC,EAAO,CAAA,EAAE,EAAG;;;QAwCtC,IAAI,qBArCC,CAAqB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,MAAA,CAAO,CAAC,CAAC,CAAC,EAAE;YAsClD,OAAO,GArCG,IAAA,CAAK;SAsChB;KACF;IACD,IAAI,OArCC,EAAQ;QAsCX,uBArCM,IAAA,GAAO,oBAAA,CAAqB,IAAC,EAAK,GAAA,CAAI,KAAC,CAAK,CAAC;QAsCnD,qBArCI,KAAO,CAAI;QAsCf,QAAQ,GArCC,CAAG,KAAC,GAAO,SAqCxB;YACM,KArCK,EAqCX;gBACQ,KAAK,GArCG,MAAA,CAAO;gBAsCf,MAAM;YACR,KArCK,EAqCX;gBACQ,KAAK,GArCG,EAAA,CAAG;gBAsCX,KAAK,qBArCI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,MAAC,EAAO,CAAA,EAAE,EAAG;oBAsCtC,KAAK,GArCC,QAAC,CAAQ,CAAC,CAAC,CAAC,IAAC,GAAM,GAAG,MAAA,CAAO,CAAC,CAAC,CAAC;iBAsCvC;gBACD,MAAM;YACR,KArCK,EAqCX;gBACQ,uBArCM,IAAA,GAAO,MAAA,CAAO,CAAC,CAAC,CAAC;gBAsCvB,uBArCM,MAAA,GAAS,MAAA,CAAO,KAAC,CAAK,CAAC,CAAC,CAAC;gBAsC/B,KAAK,GArCG,EAAM,IAAC,CAAI,SAAC,GAAU,GAAC,MAAG,CAAM,CAAC;gBAsCzC,MAAM;SACT;QACD,IAAI,CArCC,KAAC,GAAO,KAAA,CAAM;KAsCpB;IACD,OArCO,OAAA,CAAQ;CAsChB;;ADlOD;;;;;;;AASA,AACA,AAEA,AACA,AACA;;;;;;AAMA,AAAA,SAAA,QAAA,CACI,KAAgB,EAAE,EAAU,EAAE,QAAgD,EADlF;IAEE,qBANI,WAAA,GAAiC,EAAA,CAAG;IAOxC,KAAK,qBANI,QAAA,IAAY,QAAA,EAAU;QAO7B,uBANM,WAAA,GAAc,QAAA,CAAS,QAAC,CAAQ,CAAC;QAOvC,WAAW,CANC,IAAC,CAAI,EAAC,QAAC,EAAS,WAAA,EAAY,CAAC,CAAC;KAO3C;IAED,OANO;;QAQL,KAAK,EANE,CAAA,CAAE;QAOT,MAAM,EANE,IAAA;QAOR,YAAY,EANE,IAAA;QAOd,YAAY,EANE,CAAA,CAAE;QAOhB,WAAW,EANE,CAAA,CAAE;;QAQf,KAAK;QACL,UAAU,EANE,CAAA;QAOZ,gBAAgB,EANE,CAAA;QAOlB,mBAAmB,EANE,CAAA;QAOrB,cAAc,EANE,CAAA,CAAE;QAOlB,cAAc,EANE,EAAA;QAOhB,eAAe,EANE,CAAA;QAOjB,UAAU,EANE,EAAA;QAOZ,UAAU,EANE,CAAA;QAOZ,QAAQ,EANE,EAAA;QAOV,YAAY,EANE,CAAA;QAOd,OAAO,EANE,EAAA;QAOT,OAAO,EANE,IAAA;QAOT,QAAQ,EANE,IAAA;QAOV,IAAI,EANE,IAAA;QAON,KAAK,EANE,EAAA,EAAE,EAAG,QAAA,EAAU,aAAA,CAAc,EAAC,CAAE,EAAE,QAAA,EAAU,WAAA,EAAY;QAO/D,SAAS,EANE,IAAA;KAOZ,CANC;CAOH;;;;AAID,AAAA,SAAA,WAAA,GAAA;IACE,OARO,IAAI,SAAA,EAAU,CAAE;CASxB;;;;;AAKD,AAAA,SAAA,kBAAA,CAXC,IAAA,EAWD;IACE,uBAXM,QAAA,GAAW,IAAA,CAAK,GAAC,CAAG,kBAAC,CAAkB;IAY7C,OAAO,IAXC,CAAI,MAAC,IAAS,cAAA,CAAe,IAAC,CAAI,EAAE;QAY1C,qBAXI,MAAA,KAAS,IAAA,CAAK,aAAC,EAAA,CAAe;QAYlC,IAAI,GAXG,IAAA,CAAK,MAAC,CAAM;;QAanB,uBAXM,GAAA,GAAM,MAAA,CAAO,KAAC,GAAO,MAAA,CAAO,UAAC,CAAU;QAY7C,KAAK,qBAXI,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,GAAA,EAAK,CAAA,EAAE,EAAG;YAY7B,uBAXM,OAAA,GAAU,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,CAAC,CAAC,CAAC;YAYlC,IAAI,CAXC,OAAC,CAAO,KAAC,GAAO,QAW3B;iBACW,OAXC,CAAO,KAAC,GAAO,SAW3B,oBAXkD;gBAYxC,CAAkB,EAAE,OAXlB,CAAO,KAAC,GAAO,QAAC,GAAU,QAAA,MAAU,EAAI,OAAA,CAAQ,KAAC,GAAO,QAAC,EAAS;gBAYtE,WAAW,CAXC,IAAC,EAAK,CAAA,CAAE,CAAC,QAAC,EAAQ,CAAE;aAYjC;YACD,IAAI,CAXC,OAAC,CAAO,KAAC,GAAO,CAW3B,sBAXoD,CAAA,GAAI,OAAA,CAAQ,UAAC,GAAY,MAAA,CAAO,KAAC;gBAY3E,EAXE,OAAC,CAAO,UAAC,GAAY,QAWjC,wBAX4D;gBAYlD,EAXE,OAAC,CAAO,UAAC,GAAY,SAWjC,oBAXwD,EAAE;;gBAalD,CAAC,IAXI,OAAA,CAAQ,UAAC,CAAU;aAYzB;SACF;KACF;;IAGD,IAAI,IAXC,CAAI,GAAC,CAAG,SAAC,GAAW,QAW3B,sBAXoD;QAYhD,KAAK,qBAXI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,MAAC,EAAO,CAAA,EAAE,EAAG;YAY9C,uBAXM,OAAA,GAAU,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,CAAC,CAAC,CAAC;YAYlC,IAAI,CAXC,OAAC,CAAO,KAAC,GAAO,QAW3B,0BAXuD,OAAE,CAAO,KAAC,GAAO,SAWxE,oBAX+F,EAAE;gBAYzF,WAAW,CAXC,IAAC,EAAK,CAAA,CAAE,CAAC,QAAC,EAAQ,CAAE;aAYjC;;YAED,CAAC,IAXI,OAAA,CAAQ,UAAC,CAAU;SAYzB;KACF;CACF;;;;;;AAMD,AAAA,SAAA,mBAAA,CAfC,IAAA,EAAA,OAAA,EAeD;IACE,uBAfM,SAAA,GAAY,WAAA,CAAY,IAAC,EAAK,OAAA,CAAQ,KAAC,CAAK,CAAC;IAgBnD,IAAI,CAfC,SAAC,CAAS,KAAC,EAAM;QAgBpB,OAAO;KACR;IACD,qBAfI,iBAAmB,CAAI;IAgB3B,qBAfI,SAAA,KAAmB,SAAA,EAAA,CAAY;IAgBnC,IAAI,OAfC,CAAO,KAAC,GAAO,QAetB,yBAfkD;QAgB9C,uBAfM,UAAA,KAAW,EAAE,OAAA,CAAQ,MAAC,GAAQ,MAAC,EAAA,CAAQ;QAgB7C,SAAS,GAfG,eAAA,CAgBR,IAAI,EAfE,UAAA,CAAW,KAAC,EAAM,UAAA,CAAW,KAAC,GAAO,UAAA,CAAW,UAAC,qBAAW,OAAA,CAAQ,KAAC,IAAQ,EAAA,CAAG,CAAC;QAgB3F,iBAAiB,GAfG,cAAA,CAAe,IAAC,mBAAI,EAAC,OAAA,CAAQ,MAAC,GAAQ,KAAC,CAAK,CAAC,QAAC,CAAQ;KAgB3E;SAfM,IAAA,OAAK,CAAO,KAAC,GAAO,QAA7B,sBAAsD;QAgBlD,SAAS,GAfG,eAAA,CAAgB,IAAC,EAAK,CAAA,EAAG,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,MAAC,GAAQ,CAAA,qBAAG,OAAA,CAAQ,KAAC,IAAQ,EAAA,CAAG,CAAC;QAgBrF,iBAAiB,GAfG,IAAA,CAAK,SAAC,CAAS;KAgBpC;IACD,SAAS,CAfC,KAAC,CAAK,SAAC,CAAS,CAAC;IAgB3B,uBAfM,QAAA,GAAS,EAAE,OAAA,CAAQ,KAAC,GAAO,QAAC,CAAQ;IAgB1C,qBAfI,MAAA,GAAS,KAAA,CAAM;IAgBnB,KAAK,qBAfI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,MAAC,EAAO,CAAA,EAAE,EAAG;QAgBxC,uBAfM,OAAA,GAAU,QAAA,CAAS,CAAC,CAAC,CAAC;QAgB5B,qBAfI,UAAY,CAAI;QAgBpB,QAAQ,OAfC,CAAO,WAAC;YAgBf,KAfK,CAeX;gBACQ,UAAU,GAfG,SAAA,CAAU,KAAC,CAAK;gBAgB7B,MAAM;YACR,KAfK,CAeX;gBACQ,UAAU,GAfG,SAAA,CAAU;gBAgBvB,MAAM,GAfG,IAAA,CAAK;gBAgBd,MAAM;SACT;QACD,iBAAiB,CAfC,OAAC,CAAO,QAAC,CAAQ,GAAG,UAAA,CAAW;KAgBlD;IACD,IAAI,MAfC,EAAO;QAgBV,SAAS,CAfC,eAAC,EAAe,CAAE;KAgB7B;CACF;;;;;;;;;AASD,SAAA,eAAA,CACI,IAAc,EAAE,UAAkB,EAAE,QAAgB,EAAE,QAAkB,EACxE,MAAa,EAFjB;IAGE,KAAK,qBAtBI,CAAA,GAAI,UAAA,EAAY,CAAA,IAAK,QAAA,EAAU,CAAA,EAAE,EAAG;QAuB3C,uBAtBM,OAAA,GAAU,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,CAAC,CAAC,CAAC;QAuBlC,uBAtBM,SAAA,GAAY,OAAA,CAAQ,cAAC,CAAc,QAAC,CAAQ,EAAC,CAAE,CAAC;QAuBtD,IAAI,SAtBC,IAAY,IAAA,EAAM;YAuBrB,MAAM,CAtBC,IAAC,CAAI,aAAC,CAAa,IAAC,EAAK,OAAA,EAAS,SAAA,CAAU,CAAC,CAAC;SAuBtD;QACD,IAAI,OAtBC,CAAO,KAAC,GAAO,CAsBxB,sBAtB8C,EAAG,OAAA,CAAQ,OAAC,GAAS,QAAC;YAuB5D,CAAkB,EAAmB,EAAE,OAtBrC,CAAO,OAAC,GAAS,QAAC,GAAU,kBAAC,GAAoB,QAAA,CAAS,QAAC;gBAuBzD,QAAQ,CAtBC,QAAC,EAAS;;YAwBzB,uBAtBM,WAAA,GAAc,aAAA,CAAc,IAAC,EAAK,CAAA,CAAE,CAAC;YAuB3C,IAAI,OAtBC,CAAO,KAAC,GAAO,OAsB1B,sBAtBmD;gBAuB3C,uBAtBM,aAAA,GAAc,EAAE,WAAA,CAAY,aAAC,GAAe,cAAC,CAAc;gBAuBjE,KAAK,qBAtBI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,aAAA,CAAc,MAAC,EAAO,CAAA,EAAE,EAAG;oBAuB7C,uBAtBM,YAAA,GAAe,aAAA,CAAc,CAAC,CAAC,CAAC;oBAuBtC,uBAtBM,GAAA,GAAM,qBAAA,CAAsB,YAAC,CAAY,CAAC;oBAuBhD,IAAI,GAtBC,IAAM,GAAA,KAAQ,WAAA,EAAa;wBAuB9B,eAAe,CAtBC,YAAC,EAAa,CAAA,EAAG,YAAA,CAAa,GAAC,CAAG,KAAC,CAAK,MAAC,GAAQ,CAAA,EAAG,QAAA,EAAU,MAAA,CAAO,CAAC;qBAuBvF;iBACF;aACF;YACD,uBAtBM,cAAA,GAAiB,WAAA,CAAY,QAAC,CAAQ,eAAC,CAAe;YAuB5D,IAAI,cAtBC,EAAe;gBAuBlB,KAAK,qBAtBI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,cAAA,CAAe,MAAC,EAAO,CAAA,EAAE,EAAG;oBAuB9C,uBAtBM,aAAA,GAAgB,cAAA,CAAe,CAAC,CAAC,CAAC;oBAuBxC,eAAe,CAtBC,aAAC,EAAc,CAAA,EAAG,aAAA,CAAc,GAAC,CAAG,KAAC,CAAK,MAAC,GAAQ,CAAA,EAAG,QAAA,EAAU,MAAA,CAAO,CAAC;iBAuBzF;aACF;SACF;QACD,IAAI,CAtBC,OAAC,CAAO,mBAAC,GAAqB,QAAA,CAAS,QAAC,MAAa,QAAA,CAAS,QAAC,EAAS;;YAwB3E,CAAC,IAtBI,OAAA,CAAQ,UAAC,CAAU;SAuBzB;KACF;IACD,OAtBO,MAAA,CAAO;CAuBf;;;;;;;AAOD,AAAA,SAAA,aAAA,CACI,IAAc,EAAE,OAAgB,EAAE,cAA8B,EADpE;IAEE,IAAI,cA3BC,IAAiB,IAAA,EAAM;;QA6B1B,qBA3BI,KAAO,CAAI;QA4Bf,QAAQ,cA3BC;YA4BP,KA3BK,CA2BX;gBACQ,KAAK,GA3BG,aAAA,CAAc,IAAC,EAAK,OAAA,CAAQ,KAAC,CAAK,CAAC,aAAC,CAAa;gBA4BzD,MAAM;YACR,KA3BK,CA2BX;gBACQ,KAAK,GA3BG,IAAI,UAAA,CAAW,aAAC,CAAa,IAAC,EAAK,OAAA,CAAQ,KAAC,CAAK,CAAC,aAAC,CAAa,CAAC;gBA4BzE,MAAM;YACR,KA3BK,CA2BX;gBACQ,KAAK,GA3BG,aAAA,CAAc,IAAC,EAAK,OAAA,CAAQ,KAAC,CAAK,CAAC,QAAC,CAAQ;gBA4BpD,MAAM;YACR,KA3BK,CA2BX;gBACQ,KAAK,GA3BG,aAAA,CAAc,IAAC,EAAK,OAAA,CAAQ,KAAC,CAAK,CAAC,aAAC,CAAa;gBA4BzD,MAAM;YACR,KA3BK,CA2BX;gBACQ,KAAK,GA3BG,cAAA,CAAe,IAAC,EAAK,OAAA,CAAQ,KAAC,CAAK,CAAC,QAAC,CAAQ;gBA4BrD,MAAM;SACT;QACD,OA3BO,KAAA,CAAM;KA4Bd;CACF;;AD3ND;;;;;;;AASA,AACA,AACA;;;;;AAKA,AAAA,SAAA,OAAA,CALC,cAAA,EAAA,SAAA,EAKD;IACE,uBALM,QAAA,GAAyB,IAAI,KAAA,CAAM,SAAC,CAAS,MAAC,GAAQ,CAAA,CAAE,CAAC;IAM/D,KAAK,qBALI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,MAAC,EAAO,CAAA,EAAE,EAAG;QAMzC,QAAQ,CALC,CAAC,GAAG,CAAA,CAAE,GAAG;YAMhB,KAAK,EALE,CAKb;YACM,IAAI,EALE,IAAA;YAMN,EAAE,EALE,IAAA;YAMJ,eAAe,EALE,IAAA;YAMjB,eAAe,EALE,IAAA;YAMjB,MAAM,EALE,SAAA,CAAU,CAAC,CAAC;SAMrB,CALC;KAMH;IACD,uBALM,KAAA,GAAQ,CAKhB,CALmC;IAMjC,OALO;;QAOL,KAAK,EALE,CAAA,CAAE;QAMT,MAAM,EALE,IAAA;QAMR,YAAY,EALE,IAAA;QAMd,YAAY,EALE,CAAA,CAAE;QAMhB,WAAW,EALE,CAAA,CAAE;;QAOf,KAAK;QACL,UAAU,EALE,CAAA;QAMZ,gBAAgB,EALE,CAAA;QAMlB,mBAAmB,EALE,CAAA;QAMrB,cAAc,EALE,EAAA;QAMhB,eAAe,EALE,CAAA;QAMjB,UAAU,EALE,EAAA,EAAI,cAAA;QAMhB,UAAU,EALE,CAAA,EAAG,QAAA;QAMf,YAAY,EALE,gBAAA,CAAiB,QAAC,CAAQ;QAMxC,OAAO,EALE,EAAA;QAMT,OAAO,EALE,IAAA;QAMT,QAAQ,EALE,IAAA;QAMV,IAAI,EALE,EAAA,MAAE,EAAO,SAAA,CAAU,CAAC,CAAC,EAAC;QAM5B,KAAK,EALE,IAAA;QAMP,SAAS,EALE,IAAA;KAMZ,CALC;CAMH;;;;;;;AAOD,AAAA,SAAA,UAAA,CAVC,IAAA,EAAA,UAAA,EAAA,GAAA,EAUD;IACE,qBAVID,aAAY,CAAI;IAWpB,uBAVM,QAAA,GAAW,IAAA,CAAK,QAAC,CAAQ;IAW/BA,aAAU,GAVG,QAAA,CAAS,UAAC,kBAAU,EAAA,GAAC,CAAG,IAAC,GAAM,MAAC,CAAM,CAAC;IAWpD,uBAVM,QAAA,GAAW,sBAAA,CAAuB,IAAC,EAAK,UAAA,EAAY,GAAA,CAAI,CAAC;IAW/D,IAAI,QAVC,EAAS;QAWZ,QAAQ,CAVC,WAAC,CAAW,QAAC,EAASA,aAAA,CAAW,CAAC;KAW5C;IACD,OAVO,EAAA,UAAE,EAAWA,aAAA,EAAW,CAAC;CAWjC;;;;;;;;;;;;;;;;AAgBD,AAAA,SAAA,wBAAA,CACI,IAAc,EAAE,GAAY,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAC3F,EAAO,EAAE,EAAO,EAAE,EAAO,EAF7B;IAGE,qBAxBI,OAAA,GAAU,KAAA,CAAM;IAyBpB,uBAxBM,QAAA,GAAW,GAAA,CAAI,QAAC,CAAQ;IAyB9B,uBAxBM,OAAA,GAAU,QAAA,CAAS,MAAC,CAAM;IAyBhC,IAAI,OAxBC,GAAS,CAAA,IAAK,qBAAA,CAAsB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAyB3E,IAAI,OAxBC,GAAS,CAAA,IAAK,qBAAA,CAAsB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAyB3E,IAAI,OAxBC,GAAS,CAAA,IAAK,qBAAA,CAAsB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAyB3E,IAAI,OAxBC,GAAS,CAAA,IAAK,qBAAA,CAAsB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAyB3E,IAAI,OAxBC,GAAS,CAAA,IAAK,qBAAA,CAAsB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAyB3E,IAAI,OAxBC,GAAS,CAAA,IAAK,qBAAA,CAAsB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAyB3E,IAAI,OAxBC,GAAS,CAAA,IAAK,qBAAA,CAAsB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAyB3E,IAAI,OAxBC,GAAS,CAAA,IAAK,qBAAA,CAAsB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAyB3E,IAAI,OAxBC,GAAS,CAAA,IAAK,qBAAA,CAAsB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IAyB3E,IAAI,OAxBC,GAAS,CAAA,IAAK,qBAAA,CAAsB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,EAAA,CAAG;QAAE,OAAA,GAAU,IAAA,CAAK;IA0B3E,IAAI,OAxBC,EAAQ;QAyBX,qBAxBI,KAAA,GAAM,EAAE,GAAA,CAAI,IAAC,GAAM,MAAC,CAAM;QAyB9B,IAAI,OAxBC,GAAS,CAAA;YAAG,KAAA,IAAS,qBAAA,CAAsB,EAAC,EAAG,QAAA,CAAS,CAAC,CAAC,CAAC,CAAC;QAyBjE,IAAI,OAxBC,GAAS,CAAA;YAAG,KAAA,IAAS,qBAAA,CAAsB,EAAC,EAAG,QAAA,CAAS,CAAC,CAAC,CAAC,CAAC;QAyBjE,IAAI,OAxBC,GAAS,CAAA;YAAG,KAAA,IAAS,qBAAA,CAAsB,EAAC,EAAG,QAAA,CAAS,CAAC,CAAC,CAAC,CAAC;QAyBjE,IAAI,OAxBC,GAAS,CAAA;YAAG,KAAA,IAAS,qBAAA,CAAsB,EAAC,EAAG,QAAA,CAAS,CAAC,CAAC,CAAC,CAAC;QAyBjE,IAAI,OAxBC,GAAS,CAAA;YAAG,KAAA,IAAS,qBAAA,CAAsB,EAAC,EAAG,QAAA,CAAS,CAAC,CAAC,CAAC,CAAC;QAyBjE,IAAI,OAxBC,GAAS,CAAA;YAAG,KAAA,IAAS,qBAAA,CAAsB,EAAC,EAAG,QAAA,CAAS,CAAC,CAAC,CAAC,CAAC;QAyBjE,IAAI,OAxBC,GAAS,CAAA;YAAG,KAAA,IAAS,qBAAA,CAAsB,EAAC,EAAG,QAAA,CAAS,CAAC,CAAC,CAAC,CAAC;QAyBjE,IAAI,OAxBC,GAAS,CAAA;YAAG,KAAA,IAAS,qBAAA,CAAsB,EAAC,EAAG,QAAA,CAAS,CAAC,CAAC,CAAC,CAAC;QAyBjE,IAAI,OAxBC,GAAS,CAAA;YAAG,KAAA,IAAS,qBAAA,CAAsB,EAAC,EAAG,QAAA,CAAS,CAAC,CAAC,CAAC,CAAC;QAyBjE,IAAI,OAxBC,GAAS,CAAA;YAAG,KAAA,IAAS,qBAAA,CAAsB,EAAC,EAAG,QAAA,CAAS,CAAC,CAAC,CAAC,CAAC;QAyBjE,uBAxBMA,aAAA,GAAa,UAAA,CAAW,IAAC,EAAK,GAAA,CAAI,KAAC,CAAK,CAAC,UAAC,CAAU;QAyB1D,IAAI,CAxBC,QAAC,CAAQ,QAAC,CAAQA,aAAC,EAAW,KAAA,CAAM,CAAC;KAyB3C;IACD,OAxBO,OAAA,CAAQ;CAyBhB;;;;;;;AAOD,AAAA,SAAA,yBAAA,CA7BC,IAAA,EAAA,GAAA,EAAA,MAAA,EA6BD;IACE,uBA7BM,QAAA,GAAW,GAAA,CAAI,QAAC,CAAQ;IA8B9B,qBA7BI,OAAA,GAAU,KAAA,CAAM;IA8BpB,KAAK,qBA7BI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,MAAC,EAAO,CAAA,EAAE,EAAG;;;QAgCtC,IAAI,qBA7BC,CAAqB,IAAC,EAAK,GAAA,EAAK,CAAA,EAAG,MAAA,CAAO,CAAC,CAAC,CAAC,EAAE;YA8BlD,OAAO,GA7BG,IAAA,CAAK;SA8BhB;KACF;IACD,IAAI,OA7BC,EAAQ;QA8BX,qBA7BI,KAAA,GAAQ,EAAA,CAAG;QA8Bf,KAAK,qBA7BI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,MAAC,EAAO,CAAA,EAAE,EAAG;YA8BtC,KAAK,GA7BG,KAAA,GAAQ,qBAAA,CAAsB,MAAC,CAAM,CAAC,CAAC,EAAE,QAAA,CAAS,CAAC,CAAC,CAAC,CAAC;SA8B/D;QACD,KAAK,GA7BC,EAAE,GAAA,CAAI,IAAC,GAAM,MAAC,GAAQ,KAAA,CAAM;QA8BlC,uBA7BMA,aAAA,GAAa,UAAA,CAAW,IAAC,EAAK,GAAA,CAAI,KAAC,CAAK,CAAC,UAAC,CAAU;QA8B1D,IAAI,CA7BC,QAAC,CAAQ,QAAC,CAAQA,aAAC,EAAW,KAAA,CAAM,CAAC;KA8B3C;IACD,OA7BO,OAAA,CAAQ;CA8BhB;;;;;;AAMD,SAAA,qBAAA,CAjCC,KAAA,EAAA,OAAA,EAiCD;IACE,uBAjCM,QAAA,GAAW,KAAA,IAAS,IAAA,GAAO,KAAA,CAAM,QAAC,EAAQ,GAAI,EAAA,CAAG;IAkCvD,OAjCO,QAAA,GAAW,OAAA,CAAQ,MAAC,CAAM;CAkClC;;AD1JD;;;;;;;AAWA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA;;;;;;;AAOA,AAAA,SAAA,OAAA,CACI,KAAgB,EAAE,KAAgB,EAAE,gBAA+B,EACnE,cAA6B,EAFjC;;IAIE,qBAPI,gBAAA,GAAmB,CAAA,CAAE;IAQzB,qBAPI,mBAAA,GAAsB,CAAA,CAAE;IAQ5B,qBAPI,aAAA,GAAgB,CAAA,CAAE;IAQtB,qBAPI,iBAAA,GAAoB,CAAA,CAAE;IAQ1B,qBAPI,kBAAA,GAAqB,CAAA,CAAE;IAQ3B,qBAPI,aAAA,GAA8B,IAAA,CAAK;IAQvC,qBAPI,gCAAA,GAAmC,KAAA,CAAM;IAQ7C,qBAPI,iCAAA,GAAoC,KAAA,CAAM;IAQ9C,qBAPI,kBAAA,GAAmC,IAAA,CAAK;IAQ5C,KAAK,qBAPI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAC,EAAO,CAAA,EAAE,EAAG;QAQrC,OAAO,aAPC,IAAgB,CAAA,GAAI,aAAA,CAAc,KAAC,GAAO,aAAA,CAAc,UAAC,EAAW;YAQ1E,uBAPM,SAAA,GAA0B,aAAA,CAAc,MAAC,CAAM;YAQrD,IAAI,SAPC,EAAU;gBAQb,SAAS,CAPC,UAAC,MAAa,aAAA,CAAc,UAAC,EAAA,CAAY;gBAQnD,SAAS,CAPC,mBAAC,IAAsB,aAAA,CAAc,mBAAC,CAAmB;aAQpE;YACD,aAAa,GAPG,SAAA,CAAU;SAQ3B;QACD,uBAPM,IAAA,GAAO,KAAA,CAAM,CAAC,CAAC,CAAC;QAQtB,IAAI,CAPC,KAAC,GAAO,CAAA,CAAE;QAQf,IAAI,CAPC,MAAC,GAAQ,aAAA,CAAc;QAQ5B,IAAI,CAPC,YAAC,GAAc,gBAAA,CAAiB;QAQrC,IAAI,CAPC,WAAC,GAAa,mBAAA,CAAoB;;QAUvC,qBAPI,mBAA8B,CAAI;QAQtC,IAAI,aAPC,IAAgB,aAAA,CAAc,KAAC,GAAO,CAO/C;YACQ,CAAkB,EAAE,aAPlB,CAAa,OAAC,GAAS,IAAC,EAAK;YAQjC,mBAAmB,GAPG,aAAA,CAAc,YAAC,CAAY;SAQlD;aAPM;YAQL,mBAAmB,GAPG,aAAA,CAAc;SAQrC;QACD,IAAI,CAPC,YAAC,GAAc,mBAAA,CAAoB;QASxC,IAAI,IAPC,CAAI,OAAC,EAAQ;YAQhB,uBAPM,KAAA,GAAQ,IAAA,CAAK,OAAC,CAAO;YAQ3B,KAAK,CAPC,eAAC;gBAQH,aAAa,GAPC,EAAE,aAAA,CAAc,OAAC,GAAS,eAAC,GAAiB,MAAA,CAAO,MAAC,CAAM,IAAC,CAAI,CAAC;YAQlF,KAAK,CAPC,YAAC,GAAc,KAAA,CAAM,eAAC,CAAe;;YAS3C,gCAAgC,GAPG,KAAA,CAAM;YAQzC,iCAAiC,GAPG,KAAA,CAAM;SAQ3C;QACD,YAAY,CAPC,aAAC,EAAc,IAAA,EAAM,KAAA,CAAM,MAAC,CAAM,CAAC;QAShD,aAAa,IAPI,IAAA,CAAK,KAAC,CAAK;QAQ5B,kBAAkB,IAPI,IAAA,CAAK,eAAC,CAAe;QAQ3C,IAAI,IAPC,CAAI,OAAC,IAAU,IAAA,CAAK,OAAC,CAAO,QAAC,EAAS;YAQzC,kBAAkB,IAPI,IAAA,CAAK,OAAC,CAAO,QAAC,CAAQ,kBAAC,CAAkB;SAQhE;QACD,IAAI,aAPC,EAAc;YAQjB,aAAa,CAPC,UAAC,IAAa,IAAA,CAAK,KAAC,CAAK;YAQvC,aAAa,CAPC,gBAAC,IAAmB,IAAA,CAAK,KAAC,CAAK;YAQ7C,aAAa,CAPC,mBAAC,IAAsB,IAAA,CAAK,eAAC,CAAe;YAQ1D,IAAI,IAPC,CAAI,OAAC,IAAU,IAAA,CAAK,OAAC,CAAO,QAAC,EAAS;gBAQzC,aAAa,CAPC,mBAAC,IAAsB,IAAA,CAAK,OAAC,CAAO,QAAC,CAAQ,kBAAC,CAAkB;aAQ/E;SACF;aAPM;YAQL,iBAAiB,IAPI,IAAA,CAAK,KAAC,CAAK;SAQjC;QAED,gBAAgB,IAPI,IAAA,CAAK,QAAC,CAAQ,MAAC,CAAM;QAQzC,mBAAmB,IAPI,IAAA,CAAK,OAAC,CAAO,MAAC,CAAM;QAS3C,IAAI,CAPC,mBAAC,KAAsB,IAAE,CAAI,KAAC,GAAO,CAO9C,qBAPsE,EAAE;YAQlE,kBAAkB,GAPG,IAAA,CAAK;SAQ3B;QACD,IAAI,IAPC,CAAI,KAAC,GAAO,KAOrB,oBAP4C;YAQtC,IAAI,CAPC,gCAAC,EAAiC;gBAQrC,gCAAgC,GAPG,IAAA,CAAK;gBAAA,EAAA;;gBASxC,aAAa,GAPG,OAAC,GAAS,eAAC;oBAQvB,MAAM,CAPC,MAAC,kBAAM,EAAA,EAAA,aAAC,GAAe,OAAC,GAAS,eAAC,CAAe,CAAC;gBAAA,EAAA,EAQ7D,aAAa,GAPG,OAAC,GAAS,YAAC,GAAY,EAAA,EAAE,aAAA,GAAgB,OAAC,GAAS,eAAC,CAAe;aAQpF;YACD,uBAPM,gBAAA,GAAmB,CAAA,IAAE,CAAI,KAAC,GAAO,IAO7C,4BAP4E,CAAA,CAAE;YAQxE,uBAPM,WAAA,GAAc,CAAA,IAAE,CAAI,KAAC,GAAO,KAOxC,sBAPiE,CAAA,CAAE;YAQ7D,IAAI,CAPC,gBAAC,IAAmB,WAAA,EAAa;gBAAA,EAAA,EAAA,EAQpC,aAAa,GAPG,OAAC,GAAS,eAAC,GAAiB,EAAA,IAAC,CAAI,QAAC,GAAU,QAAC,CAAQ,GAAG,IAAA,CAAK;aAQ9E;iBAPM;gBAQL,IAAI,CAPC,iCAAC,EAAkC;oBAQtC,iCAAiC,GAPG,IAAA,CAAK;oBAAA,EAAA;;oBASzC,aAAa,GAPG,OAAC,GAAS,YAAC;wBAQvB,MAAM,CAPC,MAAC,kBAAM,EAAA,EAAA,aAAC,GAAe,OAAC,GAAS,eAAC,CAAe,CAAC;iBAQ9D;gBAAiB,EAAmB,EAAmB,EACxD,aAAa,GAPG,OAAC,GAAS,YAAC,GAAc,EAAA,IAAC,CAAI,QAAC,GAAU,QAAC,CAAQ,GAAG,IAAA,CAAK;aAQ3E;YACD,IAAI,WAPC,EAAY;gBAAA,EAAA,EAQf,aAAa,GAPG,OAAC,GAAS,iBAAC,GAAmB,IAAA,CAAK;aAQpD;SACF;QACD,IAAI,IAPC,CAAI,UAAC,EAAW;YAQnB,aAAa,GAPG,IAAA,CAAK;SAQtB;KACF;IACD,OAAO,aAPC,EAAc;QAQpB,uBAPM,SAAA,GAAY,aAAA,CAAc,MAAC,CAAM;QAQvC,IAAI,SAPC,EAAU;YAQb,SAAS,CAPC,UAAC,IAAa,aAAA,CAAc,UAAC,CAAU;YAQjD,SAAS,CAPC,mBAAC,IAAsB,aAAA,CAAc,mBAAC,CAAmB;SAQpE;QACD,aAAa,GAPG,SAAA,CAAU;KAQ3B;IACD,uBAPM,WAAA,GAAiC,CAAA,IAAE,EAAK,SAAA,EAAW,SAAA,EAAW,KAAA,KAAO,EAAA,EAQvE,KAAK,CAPC,SAAC,CAAS,CAAC,OAAC,GAAS,WAAC,GAAa,IAAC,EAAK,SAAA,EAAW,KAAA,CAAM,CAAC;IAQrE,OAPO;;QASL,OAAO,EAPE,IAAA;QAQT,SAAS,EAPE,aAAA;QAQX,aAAa,EAPE,iBAAA;QAQf,kBAAkB,EAPE,kBAAA,EAAoB,KAAA;QAQxC,KAAK,EAPE,KAAA;QAQP,gBAAgB,EAPE,gBAAA,IAAoB,IAAA;QAQtC,cAAc,EAPE,cAAA,IAAkB,IAAA;QAQlC,WAAW,EAPE,WAAA,IAAe,IAAA;QAQ5B,YAAY,EAPE,gBAAA;QAQd,WAAW,EAPE,mBAAA,EAAqB,kBAAA;KAQnC,CAPC;CAQH;;;;;;;AAOD,SAAA,YAAA,CAZC,MAAA,EAAA,IAAA,EAAA,SAAA,EAYD;IACE,uBAZM,QAAA,GAAW,IAAA,CAAK,OAAC,IAAU,IAAA,CAAK,OAAC,CAAO,QAAC,CAAQ;IAavD,IAAI,QAZC,EAAS;QAaZ,IAAI,CAZC,QAAC,CAAQ,kBAAC,EAAmB;YAahC,MAZM,IAAI,KAAA,CAAM,CAYtB,gEAAA,CAZuB,CAAkE,CAAC;SAarF;QACD,IAAI,QAZC,CAAQ,kBAAC;YAaV,QAAQ,CAZC,kBAAC,CAAkB,KAAC,GAAO,OAY5C,sBAZqE;YAa/D,MAZM,IAAI,KAAA,CAaN,CADV,gFAAA,EAC6F,IAZC,CAAI,KAAC,CAWnG,CAAA,CAXwG,CAAG,CAAC;SAavG;KACF;IACD,IAAI,IAZC,CAAI,KAAC,GAAO,KAYnB,oBAZ0C;QAatC,uBAZM,WAAA,GAAc,MAAA,GAAS,MAAA,CAAO,KAAC,GAAO,CAAA,CAAE;QAa9C,IAAI,CAZC,WAAC,GAAa,CAYvB,wBAZkD,CAAA,EAAG;YAa/C,MAZM,IAAI,KAAA,CAaN,CADV,6FAAA,EAC0G,IAZC,CAAI,KAAC,CAWhH,CAAA,CAXqH,CAAG,CAAC;SAapH;KACF;IACD,IAAI,IAZC,CAAI,KAAC,EAAM;QAad,IAAI,IAZC,CAAI,KAAC,GAAO,QAYrB;aACS,CAZC,MAAC,IAAS,CAAA,MAAE,CAAM,KAAC,GAAO,IAYpC,0BAZiE,CAAA,CAAE,EAAE;YAa/D,MAZM,IAAI,KAAA,CAaN,CADV,+EAAA,EAC4F,IAZC,CAAI,KAAC,CAWlG,CAAA,CAXuG,CAAG,CAAC;SAatG;QACD,IAAI,IAZC,CAAI,KAAC,GAAO,QAYrB,wBAZgD,MAAA,EAAQ;YAalD,MAZM,IAAI,KAAA,CAaN,CADV,qEAAA,EACkF,IAZC,CAAI,KAAC,CAWxF,CAAA,CAX6F,CAAG,CAAC;SAa5F;KACF;IACD,IAAI,IAZC,CAAI,UAAC,EAAW;QAanB,uBAZM,SAAA,GAAY,MAAA,GAAS,MAAA,CAAO,KAAC,GAAO,MAAA,CAAO,UAAC,GAAY,SAAA,GAAY,CAAA,CAAE;QAa5E,IAAI,IAZC,CAAI,KAAC,IAAQ,SAAA,IAAa,IAAA,CAAK,KAAC,GAAO,IAAA,CAAK,UAAC,GAAY,SAAA,EAAW;YAavE,MAZM,IAAI,KAAA,CAaN,CADV,oEAAA,EACiF,IAZC,CAAI,KAAC,CAWvF,CAAA,CAX4F,CAAG,CAAC;SAa3F;KACF;CACF;;;;;;;AAOD,AAAA,SAAA,kBAAA,CAjBC,MAAA,EAAAD,YAAA,EAAA,OAAA,EAiBD;;;IAGE,uBAjBM,IAAA,GAkBF,UAAU,CAjBC,MAAC,CAAM,IAAC,EAAK,MAAA,CAAO,QAAC,EAAS,MAAA,EAAQA,YAAA,qBAAU,EAACA,YAAA,CAAU,OAAC,GAAS,QAAC,GAAU,CAAC;IAkBhG,QAAQ,CAjBC,IAAC,EAAK,MAAA,CAAO,SAAC,EAAU,OAAA,CAAQ,CAAC;IAkB1C,eAAe,CAjBC,IAAC,CAAI,CAAC;IAkBtB,OAjBO,IAAA,CAAK;CAkBb;;;;;;;AAOD,AAAA,SAAA,cAAA,CAtBC,IAAA,EAAA,GAAA,EAAA,OAAA,EAsBD;IACE,uBAtBM,IAAA,GAAO,UAAA,CAAW,IAAC,EAAK,IAAA,CAAK,QAAC,EAAS,IAAA,EAAM,IAAA,EAAM,GAAA,CAAI,CAAC;IAuB9D,QAAQ,CAtBC,IAAC,EAAK,OAAA,EAAS,OAAA,CAAQ,CAAC;IAuBjC,eAAe,CAtBC,IAAC,CAAI,CAAC;IAuBtB,OAtBO,IAAA,CAAK;CAuBb;;;;;;;;;AASD,SAAA,UAAA,CACI,IAAc,EAAE,QAAmB,EAAE,MAAuB,EAAE,aAA6B,EAC3F,GAAmB,EAFvB;IAGE,uBA7BM,KAAA,GAAoB,IAAI,KAAA,CAAM,GAAC,CAAG,KAAC,CAAK,MAAC,CAAM,CAAC;IA8BtD,uBA7BM,WAAA,GAAc,GAAA,CAAI,WAAC,GAAa,IAAI,KAAA,CAAM,GAAC,CAAG,WAAC,CAAW,GAAG,IAAA,CAAK;IA8BxE,uBA7BM,IAAA,GAAiB;QA8BrB,GAAG;QACH,MAAM;QACN,mBAAmB,EA7BE,IAAA,EAAM,aAAA;QA8B3B,OAAO,EA7BE,IAAA;QA8BT,SAAS,EA7BE,IAAA,EAAM,KAAA;QA8BjB,KAAK,EA7BE,EA6BX,gBA7B8B,IAAA,EAAM,QAAA;QA8BhC,SAAS,EA7BE,IAAI,KAAA,CAAM,GAAC,CAAG,YAAC,CAAY,EAAE,WAAA;KA8BzC,CA7BC;IA8BF,OA7BO,IAAA,CAAK;CA8Bb;;;;;;;AAOD,SAAA,QAAA,CAlCC,IAAA,EAAA,SAAA,EAAA,OAAA,EAkCD;IACE,IAAI,CAlCC,SAAC,GAAW,SAAA,CAAU;IAmC3B,IAAI,CAlCC,OAAC,GAAS,OAAA,CAAQ;CAmCxB;;;;;AAKD,SAAA,eAAA,CArCC,IAAA,EAqCD;IACE,qBArCI,UAAY,CAAI;IAsCpB,IAAI,eArCC,CAAe,IAAC,CAAI,EAAE;QAsCzB,uBArCM,OAAA,GAAU,IAAA,CAAK,aAAC,CAAa;QAsCnC,UAAU,GArCG,aAAA,oBAAc,IAAC,CAAI,MAAC,qBAAQ,EAAA,EAAC,OAAA,GAAU,MAAC,GAAQ,KAAC,CAAK,CAAC,aAAC,CAAa;KAsCnF;IACD,uBArCM,GAAA,GAAM,IAAA,CAAK,GAAC,CAAG;IAsCrB,uBArCM,KAAA,GAAQ,IAAA,CAAK,KAAC,CAAK;IAsCzB,KAAK,qBArCI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,KAAC,CAAK,MAAC,EAAO,CAAA,EAAE,EAAG;QAsCzC,uBArCM,OAAA,GAAU,GAAA,CAAI,KAAC,CAAK,CAAC,CAAC,CAAC;QAsC7B,QAAQ,CArCC,cAAC,CAAc,IAAC,EAAK,CAAA,CAAE,CAAC;QAsCjC,qBArCI,QAAU,CAAI;QAsClB,QAAQ,OArCC,CAAO,KAAC,GAAO,SAqC5B;YACM,KArCK,CAqCX;gBACQ,uBArCM,EAAA,IAAK,aAAA,CAAc,IAAC,EAAK,UAAA,EAAY,OAAA,CAAY,CAAA,CAAI;gBAsC3D,qBArCI,aAAA,KAA0B,SAAA,EAAA,CAAY;gBAsC1C,IAAI,OArCC,CAAO,KAAC,GAAO,QAqC5B,sBArCqD;oBAsC3C,uBArCM,WAAA,GAAc,qBAAA,oBAAsB,EAAA,OAAC,CAAO,OAAC,GAAS,aAAC,GAAe,CAAC;oBAsC7E,uBArCM,YAAA,GAAa,EAAE,OAAA,CAAQ,OAAC,GAAS,qBAAC,CAAqB;oBAsC7D,qBArCI,YAAc,CAAU;oBAsC5B,IAAI,CArCC,YAAC,EAAa;wBAsCjB,YAAY,GArCG,IAAA,CAAK,IAAC,CAAI,QAAC,CAAQ;qBAsCnC;yBArCM;wBAsCL,YAAY,GArCG,IAAA,CAAK,IAAC,CAAI,eAAC,CAAe,cAAC,CAAc,EAAC,EAAG,YAAA,CAAa,CAAC;qBAsC3E;oBACD,aAAa,GArCG,UAAA,CAsCZ,IAAI,CArCC,IAAC,EAAK,YAAA,EAAc,IAAA,mBAAK,EAAC,OAAA,CAAQ,OAAC,GAAS,iBAAC,EAAkB,WAAA,CAAY,CAAC;iBAsCtF;gBACD,sBAAsB,CArCC,IAAC,EAAK,aAAA,EAAe,OAAA,EAAS,EAAA,CAAG,CAAC;gBAsCzD,QAAQ,IArCgB;oBAsCtB,aAAa,EArCE,EAAA;oBAsCf,aAAa;oBACb,aAAa,EArCE,IAAA;oBAsCf,QAAQ,mBArCC,EAAC,OAAA,CAAQ,OAAC,GAAS,QAAC,GAAU,kBAAA,CAAmB,IAAC,EAAK,OAAA,CAAQ,GAAG,SAAA;iBAsC3E,CAAC,CArCD;gBAsCF,IAAI,OArCC,CAAO,KAAC,GAAO,OAqC5B,sBArCqD;oBAsC3C,QAAQ,CArCC,aAAC,GAAe,uBAAA,CAAwB,IAAC,EAAK,OAAA,EAAS,QAAA,CAAS,CAAC;iBAsC3E;gBACD,MAAM;YACR,KArCK,CAqCX;gBACQ,QAAQ,IArCG,UAAA,CAAW,IAAC,EAAK,UAAA,EAAY,OAAA,CAAY,CAAA,CAAI;gBAsCxD,MAAM;YACR,KArCK,GAqCX,yBArCuC;YAsCjC,KArCK,GAqCX,2BArCyC;YAsCnC,KArCK,IAqCX,+BArC6C;YAsCvC,KArCK,GAqCX,0BArCwC;gBAsChC,uBArCM,QAAA,GAAW,sBAAA,CAAuB,IAAC,EAAK,OAAA,CAAQ,CAAC;gBAsCvD,QAAQ,IArCiB,EAAC,QAAC,EAAQ,CAAA,CAAC;gBAsCpC,MAAM;aACP;YACD,KArCK,CAqCX,iBArC+B;gBAsCvB,uBArCM,QAAA,GAAW,kBAAA,CAAmB,IAAC,EAAK,OAAA,CAAQ,CAAC;gBAsCnD,QAAQ,IArCiB,EAAC,QAAC,EAAQ,CAAA,CAAC;gBAsCpC,MAAM;aACP;YACD,KArCK,IAqCX,sBArCoC;gBAsC5B,uBArCM,QAAA,GAAW,uBAAA,CAAwB,IAAC,EAAK,OAAA,CAAQ,CAAC;gBAsCxD,QAAQ,IArCiB,EAAC,QAAC,EAAQ,CAAA,CAAC;gBAsCpC,IAAI,OArCC,CAAO,KAAC,GAAO,KAqC5B,kBArCiD;oBAsCvC,uBArCM,QAAA,GAAW,aAAA,CAAc,IAAC,mBAAI,EAAC,OAAA,CAAQ,MAAC,GAAQ,KAAC,CAAK,CAAC,aAAC,CAAa;oBAsC3E,QAAQ,CArCC,QAAC,EAAS,QAAA,EAAU,QAAA,CAAS,CAAC;iBAsCxC;gBACD,MAAM;aACP;YACD,KArCK,EAqCX,qBArCmC;YAsC7B,KArCK,EAqCX,sBArCoC;YAsC9B,KArCK,EAqCX;gBACQ,QAAQ,IArCG,oBAAA,CAAqB,IAAC,EAAK,OAAA,CAAY,CAAA,CAAI;gBAsCtD,MAAM;YACR,KArCK,QAqCX,wBArCsC;YAsChC,KArCK,QAqCX;gBACQ,QAAQ,IArCG,WAAA,EAAiB,CAAA,CAAI;gBAsChC,MAAM;YACR,KArCK,CAqCX;gBACQ,eAAe,CArCC,IAAC,EAAK,UAAA,EAAY,OAAA,CAAQ,CAAC;;gBAuC3C,QAAQ,GArCG,SAAA,CAAU;gBAsCrB,MAAM;SACT;QACD,KAAK,CArCC,CAAC,CAAC,GAAG,QAAA,CAAS;KAsCrB;;;IAGD,wBAAwB,CArCC,IAAC,EAAK,UAAA,CAAW,eAAC,CAAe,CAAC;;IAwC3D,iBAAiB,CACb,IAAI,EArCE,QAoCZ,0BApCyC,QAoCzC,sBApCkE,SAoClE,oBAEM,CAFN,sBAnC+B,CAAC;CAsC/B;;;;;AAKD,AAAA,SAAA,kBAAA,CAxCC,IAAA,EAwCD;IACE,QAAQ,CAxCC,gBAAC,CAAgB,IAAC,EAAK,CAwClC,sBAxC2D,CAAC;IAyC1D,uBAAuB,CAxCC,IAAC,EAAK,UAAA,CAAW,cAAC,CAAc,CAAC;IAyCzD,QAAQ,CAxCC,cAAC,CAAc,IAAC,EAAK,CAwChC,sBAxCyD,CAAC;IAyCxD,wBAAwB,CAxCC,IAAC,EAAK,UAAA,CAAW,cAAC,CAAc,CAAC;;;CA2C3D;;;;;AAKD,AAAA,SAAA,kBAAA,CA3CC,IAAA,EA2CD;IACE,IAAI,IA3CC,CAAI,KAAC,GAAO,CA2CnB,yBA3C+C;QA4C3C,IAAI,CA3CC,KAAC,IAAQ,CAAA,CA2ClB,wBA3C8C;QA4C1C,IAAI,CA3CC,KAAC,IAAQ,CA2ClB,kBA3CuC;KA4CpC;SA3CM;QA4CL,IAAI,CA3CC,KAAC,IAAQ,CAAA,CA2ClB,kBA3CwC;KA4CrC;IACD,QAAQ,CA3CC,gBAAC,CAAgB,IAAC,EAAK,CA2ClC,sBA3C2D,CAAC;IA4C1D,uBAAuB,CA3CC,IAAC,EAAK,UAAA,CAAW,cAAC,CAAc,CAAC;IA4CzD,iBAAiB,CACb,IAAI,EA3CE,QA0CZ,yBA1CwC,SA0CxC,qBA1CgE,CA0ChE,sBA1CyF,CAAC;IA6CxF,+BAA+B,CAC3B,IAAI,EA3CE,OA0CZ;SAEW,IA3CC,CAAI,KAAC,GAAO,CA2CxB,oBA3C+C,MA2C/C,0BA3C4E,CAAA,CAAE,CAAC,CAAC;IA6C9E,QAAQ,CA3CC,cAAC,CAAc,IAAC,EAAK,CA2ChC,sBA3CyD,CAAC;IA6CxD,wBAAwB,CA3CC,IAAC,EAAK,UAAA,CAAW,cAAC,CAAc,CAAC;IA4C1D,iBAAiB,CACb,IAAI,EA3CE,QA0CZ,sBA1CqC,SA0CrC,qBA1C6D,CA0C7D,sBA1CsF,CAAC;IA6CrF,+BAA+B,CAC3B,IAAI,EA3CE,OA0CZ;SAEW,IA3CC,CAAI,KAAC,GAAO,CA2CxB,oBA3C+C,OA2C/C,uBA3CyE,CAAA,CAAE,CAAC,CAAC;IA6C3E,IAAI,IA3CC,CAAI,GAAC,CAAG,KAAC,GAAO,CA2CvB,eA3CyC;QA4CrC,IAAI,CA3CC,KAAC,IAAQ,CAAA,CA2ClB,qBA3C2C;KA4CxC;CACF;;;;;;;;;;;;;;;;;AAiBD,AAAA,SAAA,kBAAA,CACI,IAAc,EAAE,OAAgB,EAAE,QAAsB,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EACtF,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAFxE;IAGE,IAAI,QA1DC,KAAY,CA0DnB,eA1DwC;QA2DpC,OA1DO,wBAAA,CAAyB,IAAC,EAAK,OAAA,EAAS,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAG,CAAC;KA2DxF;SA1DM;QA2DL,OA1DO,yBAAA,CAA0B,IAAC,EAAK,OAAA,EAAS,EAAA,CAAG,CAAC;KA2DrD;CACF;;;;;;;;;;;;;;;;AAgBD,SAAA,wBAAA,CACI,IAAc,EAAE,OAAgB,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAC5F,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAF1C;IAGE,qBAxEI,OAAA,GAAU,KAAA,CAAM;IAyEpB,QAAQ,OAxEC,CAAO,KAAC,GAAO,SAwE1B;QACI,KAxEK,CAwET;YACM,OAAO,GAxEG,2BAAA,CAA4B,IAAC,EAAK,OAAA,EAAS,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAG,CAAC;YAyE7F,MAAM;QACR,KAxEK,CAwET;YACM,OAAO,GAxEG,wBAAA,CAAyB,IAAC,EAAK,OAAA,EAAS,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAG,CAAC;YAyE1F,MAAM;QACR,KAxEK,IAwET;YACM,OAAO;gBACH,6BAA6B,CAxEC,IAAC,EAAK,OAAA,EAAS,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAG,CAAC;YAyEzF,MAAM;QACR,KAxEK,EAwET,qBAxEiC;QAyE7B,KAxEK,EAwET,sBAxEkC;QAyE9B,KAxEK,EAwET;YACM,OAAO;gBACH,kCAAkC,CAxEC,IAAC,EAAK,OAAA,EAAS,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAG,CAAC;YAyE9F,MAAM;KACT;IACD,OAxEO,OAAA,CAAQ;CAyEhB;;;;;;;AAOD,SAAA,yBAAA,CA7EC,IAAA,EAAA,OAAA,EAAA,MAAA,EA6ED;IACE,qBA7EI,OAAA,GAAU,KAAA,CAAM;IA8EpB,QAAQ,OA7EC,CAAO,KAAC,GAAO,SA6E1B;QACI,KA7EK,CA6ET;YACM,OAAO,GA7EG,4BAAA,CAA6B,IAAC,EAAK,OAAA,EAAS,MAAA,CAAO,CAAC;YA8E9D,MAAM;QACR,KA7EK,CA6ET;YACM,OAAO,GA7EG,yBAAA,CAA0B,IAAC,EAAK,OAAA,EAAS,MAAA,CAAO,CAAC;YA8E3D,MAAM;QACR,KA7EK,IA6ET;YACM,OAAO,GA7EG,8BAAA,CAA+B,IAAC,EAAK,OAAA,EAAS,MAAA,CAAO,CAAC;YA8EhE,MAAM;QACR,KA7EK,EA6ET,qBA7EiC;QA8E7B,KA7EK,EA6ET,sBA7EkC;QA8E9B,KA7EK,EA6ET;YACM,OAAO,GA7EG,mCAAA,CAAoC,IAAC,EAAK,OAAA,EAAS,MAAA,CAAO,CAAC;YA8ErE,MAAM;KACT;IACD,IAAI,OA7EC,EAAQ;;;QAgFX,uBA7EM,OAAA,GAAU,OAAA,CAAQ,QAAC,CAAQ,MAAC,CAAM;QA8ExC,uBA7EM,YAAA,GAAe,OAAA,CAAQ,YAAC,CAAY;QA8E1C,uBA7EM,SAAA,GAAY,IAAA,CAAK,SAAC,CAAS;QA8EjC,KAAK,qBA7EI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,EAAS,CAAA,EAAE,EAAG;YA8EhC,SAAS,CA7EC,YAAC,GAAc,CAAA,CAAE,GAAG,MAAA,CAAO,CAAC,CAAC,CAAC;SA8EzC;KACF;IACD,OA7EO,OAAA,CAAQ;CA8EhB;;;;;;;;;;;;;;;;;AAiBD,AAAA,SAAA,kBAAA,CACI,IAAc,EAAE,OAAgB,EAAE,QAAsB,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EACtF,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAFxE;IAGE,IAAI,QA5FC,KAAY,CA4FnB,eA5FwC;QA6FpC,wBAAwB,CA5FC,IAAC,EAAK,OAAA,EAAS,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAG,CAAC;KA6FjF;SA5FM;QA6FL,yBAAyB,CA5FC,IAAC,EAAK,OAAA,EAAS,EAAA,CAAG,CAAC;KA6F9C;;IAED,OA5FO,KAAA,CAAM;CA6Fd;;;;;;;;;;;;;;;;AAgBD,SAAA,wBAAA,CACI,IAAc,EAAE,OAAgB,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAO,EAC/F,EAAO,EAAE,EAAO,EAAE,EAAO,EAF7B;IAGE,uBA1GM,OAAA,GAAU,OAAA,CAAQ,QAAC,CAAQ,MAAC,CAAM;IA2GxC,IAAI,OA1GC,GAAS,CAAA;QAAG,qBAAA,CAAsB,IAAC,EAAK,OAAA,EAAS,CAAA,EAAG,EAAA,CAAG,CAAC;IA2G7D,IAAI,OA1GC,GAAS,CAAA;QAAG,qBAAA,CAAsB,IAAC,EAAK,OAAA,EAAS,CAAA,EAAG,EAAA,CAAG,CAAC;IA2G7D,IAAI,OA1GC,GAAS,CAAA;QAAG,qBAAA,CAAsB,IAAC,EAAK,OAAA,EAAS,CAAA,EAAG,EAAA,CAAG,CAAC;IA2G7D,IAAI,OA1GC,GAAS,CAAA;QAAG,qBAAA,CAAsB,IAAC,EAAK,OAAA,EAAS,CAAA,EAAG,EAAA,CAAG,CAAC;IA2G7D,IAAI,OA1GC,GAAS,CAAA;QAAG,qBAAA,CAAsB,IAAC,EAAK,OAAA,EAAS,CAAA,EAAG,EAAA,CAAG,CAAC;IA2G7D,IAAI,OA1GC,GAAS,CAAA;QAAG,qBAAA,CAAsB,IAAC,EAAK,OAAA,EAAS,CAAA,EAAG,EAAA,CAAG,CAAC;IA2G7D,IAAI,OA1GC,GAAS,CAAA;QAAG,qBAAA,CAAsB,IAAC,EAAK,OAAA,EAAS,CAAA,EAAG,EAAA,CAAG,CAAC;IA2G7D,IAAI,OA1GC,GAAS,CAAA;QAAG,qBAAA,CAAsB,IAAC,EAAK,OAAA,EAAS,CAAA,EAAG,EAAA,CAAG,CAAC;IA2G7D,IAAI,OA1GC,GAAS,CAAA;QAAG,qBAAA,CAAsB,IAAC,EAAK,OAAA,EAAS,CAAA,EAAG,EAAA,CAAG,CAAC;IA2G7D,IAAI,OA1GC,GAAS,CAAA;QAAG,qBAAA,CAAsB,IAAC,EAAK,OAAA,EAAS,CAAA,EAAG,EAAA,CAAG,CAAC;CA2G9D;;;;;;;AAOD,SAAA,yBAAA,CA/GC,IAAA,EAAA,OAAA,EAAA,MAAA,EA+GD;IACE,KAAK,qBA/GI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,MAAC,EAAO,CAAA,EAAE,EAAG;QAgHtC,qBAAqB,CA/GC,IAAC,EAAK,OAAA,EAAS,CAAA,EAAG,MAAA,CAAO,CAAC,CAAC,CAAC,CAAC;KAgHpD;CACF;;;;;;AAMD,SAAA,mBAAA,CAnHC,IAAA,EAAA,OAAA,EAmHD;IACE,uBAnHM,SAAA,GAAY,WAAA,CAAY,IAAC,EAAK,OAAA,CAAQ,KAAC,CAAK,CAAC;IAoHnD,IAAI,SAnHC,CAAS,KAAC,EAAM;QAoHnB,MAnHM,2CAAA,CAoHF,QAAQ,CAnHC,kBAAC,CAAkB,IAAC,EAAK,OAAA,CAAQ,KAAC,CAAK,EAAE,CAkH1D,MAAA,mBAlH0D,EAAA,OAAU,CAAO,KAAC,GAAM,EAAC,CAkHnF,UAAA,CAlHqF,EAoH7E,CAFR,MAAA,mBAEkC,EAAE,OAnHlB,CAAO,KAAC,GAAM,EAAC,CAiHjC,MAAA,CAjHmC,EAAS,CAAA,IAAE,CAAI,KAAC,GAAO,CAiH1D,6BAjH0F,CAAA,CAAE,CAAC;KAoH1F;CACF;;;;;AAKD,AAAA,SAAA,WAAA,CAtHC,IAAA,EAsHD;IACE,IAAI,IAtHC,CAAI,KAAC,GAAO,EAsHnB,kBAtHwC;QAuHpC,OAAO;KACR;IACD,uBAAuB,CAtHC,IAAC,EAAK,UAAA,CAAW,OAAC,CAAO,CAAC;IAuHlD,wBAAwB,CAtHC,IAAC,EAAK,UAAA,CAAW,OAAC,CAAO,CAAC;IAuHnD,+BAA+B,CAtHC,IAAC,EAAK,KAsHxC,iBAtH4D,CAAC;IAuH3D,IAAI,IAtHC,CAAI,WAAC,EAAY;QAuHpB,KAAK,qBAtHI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,WAAC,CAAW,MAAC,EAAO,CAAA,EAAE,EAAG;YAuHhD,IAAI,CAtHC,WAAC,CAAW,CAAC,CAAC,EAAC,CAAE;SAuHvB;KACF;IACD,IAAI,IAtHC,CAAI,QAAC,CAAQ,WAAC,EAAY;QAuH7B,gBAAgB,CAtHC,IAAC,CAAI,CAAC;KAuHxB;IACD,IAAI,eAtHC,CAAe,IAAC,CAAI,EAAE;QAuHzB,IAAI,CAtHC,QAAC,CAAQ,OAAC,EAAO,CAAE;KAuHzB;IACD,IAAI,CAtHC,KAAC,IAAQ,EAsHhB,iBAtHoC;CAuHnC;;;;;AAKD,SAAA,gBAAA,CAzHC,IAAA,EAyHD;IACE,uBAzHM,GAAA,GAAM,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,MAAC,CAAM;IA0HlC,KAAK,qBAzHI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,EAAK,CAAA,EAAE,EAAG;QA0H5B,uBAzHM,GAAA,GAAM,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,CAAC,CAAC,CAAC;QA0H9B,IAAI,GAzHC,CAAG,KAAC,GAAO,CAyHpB,oBAzH2C;YAAA,EA0HrC,IAAI,CAzHC,QAAC,CAAQ,WAAC,GAAa,aAAC,CAAa,IAAC,EAAK,CAAA,CAAE,CAAC,aAAC,CAAa,CAAC;SA0HnE;aAzHM,IAAA,GAAK,CAAG,KAAC,GAAO,CAA3B,iBAA+C;YAAA,EA0HzC,IAAI,CAzHC,QAAC,CAAQ,WAAC,GAAa,UAAC,CAAU,IAAC,EAAK,CAAA,CAAE,CAAC,UAAC,CAAU,CAAC;SA0H7D;KACF;CACF;AAED,IAAI,UAAU,GAAQ,EAAE,CAAC;AACzB,UAAU,CAAC,eAAe,GAAG,CAAC,CAAC;AAC/B,UAAU,CAAC,cAAc,GAAG,CAAC,CAAC;AAC9B,UAAU,CAAC,cAAc,GAAG,CAAC,CAAC;AAC9B,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC;AACvB,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,iBAAiB,CAAC;AAC3D,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,gBAAgB,CAAC;AACzD,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,gBAAgB,CAAC;AACzD,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;;;;;;AAO3C,SAAA,wBAAA,CAjIC,IAAA,EAAA,MAAA,EAiID;IACE,uBAjIM,GAAA,GAAM,IAAA,CAAK,GAAC,CAAG;IAkIrB,IAAI,EAjIE,GAAC,CAAG,SAAC,GAAW,QAiIxB,qBAjIgD,EAAE;QAkI9C,OAAO;KACR;IACD,KAAK,qBAjII,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,KAAC,CAAK,MAAC,EAAO,CAAA,EAAE,EAAG;QAkIzC,uBAjIM,OAAA,GAAU,GAAA,CAAI,KAAC,CAAK,CAAC,CAAC,CAAC;QAkI7B,IAAI,OAjIC,CAAO,KAAC,GAAO,QAiIxB,sBAjIiD;;YAmI3C,cAAc,CAjIC,aAAC,CAAa,IAAC,EAAK,CAAA,CAAE,CAAC,aAAC,EAAc,MAAA,CAAO,CAAC;SAkI9D;aAjIM,IAAA,CAAK,OAAC,CAAO,UAAC,GAAY,QAArC,0BAAkE,CAAA,EAAG;;;;YAqI/D,CAAC,IAjII,OAAA,CAAQ,UAAC,CAAU;SAkIzB;KACF;CACF;;;;;;AAMD,SAAA,uBAAA,CArIC,IAAA,EAAA,MAAA,EAqID;IACE,uBArIM,GAAA,GAAM,IAAA,CAAK,GAAC,CAAG;IAsIrB,IAAI,EArIE,GAAC,CAAG,SAAC,GAAW,OAqIxB,qBArIgD,EAAE;QAsI9C,OAAO;KACR;IACD,KAAK,qBArII,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,KAAC,CAAK,MAAC,EAAO,CAAA,EAAE,EAAG;QAsIzC,uBArIM,OAAA,GAAU,GAAA,CAAI,KAAC,CAAK,CAAC,CAAC,CAAC;QAsI7B,IAAI,OArIC,CAAO,KAAC,GAAO,OAqIxB,sBArIiD;;YAuI3C,uBArIM,aAAA,GAAc,EAAE,aAAA,CAAc,IAAC,EAAK,CAAA,CAAE,CAAC,aAAC,GAAe,cAAC,CAAc;YAsI5E,KAAK,qBArII,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,aAAA,CAAc,MAAC,EAAO,CAAA,EAAE,EAAG;gBAsI7C,cAAc,CArIC,aAAC,CAAa,CAAC,CAAC,EAAE,MAAA,CAAO,CAAC;aAsI1C;SACF;aArIM,IAAA,CAAK,OAAC,CAAO,UAAC,GAAY,OAArC,0BAAkE,CAAA,EAAG;;;;YAyI/D,CAAC,IArII,OAAA,CAAQ,UAAC,CAAU;SAsIzB;KACF;CACF;;;;;;AAMD,SAAA,cAAA,CAzIC,IAAA,EAAA,MAAA,EAyID;IACE,uBAzIM,SAAA,GAAY,IAAA,CAAK,KAAC,CAAK;IA0I7B,QAAQ,MAzIC;QA0IP,KAzIK,UAAA,CAAW,cAAC;YA0If,IAAI,CAzIC,SAAC,GAAW,EAyIvB,6BAzIuD,EAyIvD;gBACU,CAAC,SAzIC,GAAW,EAyIvB,sBAzIgD,CAAA,EAAG;gBA0I3C,kBAAkB,CAzIC,IAAC,CAAI,CAAC;aA0I1B;YACD,MAAM;QACR,KAzIK,UAAA,CAAW,cAAC;YA0If,IAAI,CAzIC,SAAC,GAAW,EAyIvB,6BAzIuD,EAyIvD;gBACU,CAAC,SAzIC,GAAW,EAyIvB,sBAzIgD,CAAA,EAAG;gBA0I3C,kBAAkB,CAzIC,IAAC,CAAI,CAAC;aA0I1B;YACD,MAAM;QACR,KAzIK,UAAA,CAAW,OAAC;YA0If,WAAW,CAzIC,IAAC,CAAI,CAAC;YA0IlB,MAAM;QACR,KAzIK,UAAA,CAAW,eAAC;YA0If,eAAe,CAzIC,IAAC,CAAI,CAAC;YA0ItB,MAAM;KACT;CACF;;;;;;;;AAQD,SAAA,iBAAA,CACI,IAAc,EAAE,UAAqB,EAAE,sBAAiC,EACxE,SAAoB,EAFxB;IAGE,IAAI,EA/IE,IAAC,CAAI,GAAC,CAAG,SAAC,GAAW,UAAA,CAAW,IAAI,EAAE,IAAC,CAAI,GAAC,CAAG,SAAC,GAAW,sBAAA,CAAuB,EAAE;QAgJxF,OAAO;KACR;IACD,uBA/IM,SAAA,GAAY,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,MAAC,CAAM;IAgJxC,KAAK,qBA/II,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,EAAW,CAAA,EAAE,EAAG;QAgJlC,uBA/IM,OAAA,GAAU,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,CAAC,CAAC,CAAC;QAgJlC,IAAI,CA/IC,OAAC,CAAO,KAAC,GAAO,UAAA,MAAe,OAAE,CAAO,KAAC,GAAO,sBAAA,CAAuB,EAAE;YAgJ5E,QAAQ,CA/IC,cAAC,CAAc,IAAC,EAAK,OAAA,CAAQ,KAAC,CAAK,CAAC;YAgJ7C,QAAQ,SA/IC;gBAgJP,KA/IK,CA+Ib;oBACU,mBAAmB,CA/IC,IAAC,EAAK,OAAA,CAAQ,CAAC;oBAgJnC,MAAM;gBACR,KA/IK,CA+Ib;oBACU,mBAAmB,CA/IC,IAAC,EAAK,OAAA,CAAQ,CAAC;oBAgJnC,MAAM;aACT;SACF;QACD,IAAI,EA/IE,OAAC,CAAO,UAAC,GAAY,UAAA,CAAW,IAAI,EAAE,OAAC,CAAO,UAAC,GAAY,sBAAA,CAAuB,EAAE;;;YAkJxF,CAAC,IA/II,OAAA,CAAQ,UAAC,CAAU;SAgJzB;KACF;CACF;;ADluBD;;;;;;;AASA,AACA,AAEA,AAEA,AACA,AAEA,AACA,AACA,AACA,AACA,AACA,AACA,AAGA,IADI,WAAA,GAAc,KAAA,CAAM;;;;AAKxB,AAAA,SAAA,oBAAA,GAAA;IACE,IAAI,WAHC,EAAY;QAIf,OAAO;KACR;IACD,WAAW,GAHG,IAAA,CAAK;IAInB,uBAHM,QAAA,GAAW,SAAA,EAAU,GAAI,mBAAA,EAAoB,GAAI,kBAAA,EAAmB,CAAE;IAI5E,QAAQ,CAHC,cAAC,GAAgB,QAAA,CAAS,cAAC,CAAc;IAIlD,QAAQ,CAHC,cAAC,GAAgB,QAAA,CAAS,cAAC,CAAc;IAIlD,QAAQ,CAHC,kBAAC,GAAoB,QAAA,CAAS,kBAAC,CAAkB;IAI1D,QAAQ,CAHC,kBAAC,GAAoB,QAAA,CAAS,kBAAC,CAAkB;IAI1D,QAAQ,CAHC,kBAAC,GAAoB,QAAA,CAAS,kBAAC,CAAkB;IAI1D,QAAQ,CAHC,WAAC,GAAa,QAAA,CAAS,WAAC,CAAW;IAI5C,QAAQ,CAHC,UAAC,GAAY,UAAA,CAAW;IAIjC,QAAQ,CAHC,kBAAC,GAAoB,QAAA,CAAS,kBAAC,CAAkB;IAI1D,QAAQ,CAHC,WAAC,GAAa,QAAA,CAAS,WAAC,CAAW;IAI5C,QAAQ,CAHC,gBAAC,GAAkB,QAAA,CAAS,gBAAC,CAAgB;IAItD,QAAQ,CAHC,cAAC,GAAgB,QAAA,CAAS,cAAC,CAAc;IAIlD,QAAQ,CAHC,kBAAC,GAAoB,kBAAA,CAAmB;CAIlD;;;;AAID,SAAA,kBAAA,GAAA;IACE,OALO;QAML,cAAc,EALE,MAKpB,GAL0B;QAMtB,cAAc,EALE,kBAAA;QAMhB,kBAAkB,EALE,kBAAA;QAMpB,kBAAkB,EALE,kBAAA;QAMpB,kBAAkB,EALE,kBAAA;QAMpB,WAAW,EALE,WAAA;QAMb,kBAAkB,EALE,CAAA,IAAO,EAAU,SAAW,KAAW,IAAI,aAAA,CAAc,IAAC,EAAK,SAAA,CAAU;QAM7F,WAAW,EALE,CAAA,IAAO,EAAU,SAAW,EAAQ,SAAW,EAAQ,KAAO,KAM1D,IAAI,CALC,GAAC,CAAG,WAAC,CAAW,IAAC,EAAK,SAAA,EAAW,SAAA,EAAW,KAAA,CAAM;QAMxE,gBAAgB,EALE,CAAA,IAAO,EAAU,SAAW,KAAc,IAAA,CAAK,GAAC,CAAG,gBAAC,CAMhD,SAAS,KALK,CAIxC,wBAJmE,sBAAA;YAMA,sBAAsB,EAC/D,IAAI,CALC;QAM3B,cAAc,EALE,CAAA,IAAO,EAAU,SAAW,KAAc,IAAA,CAAK,GAAC,CAAG,cAAC,CAMhD,SAAS,KALK,CAItC,wBAJiE,sBAAA;YAMA,sBAAsB,EAC/D,IAAI,CALC;KAM1B,CALC;CAMH;;;;AAID,SAAA,mBAAA,GAAA;IACE,OAPO;QAQL,cAAc,EAPE,mBAAA;QAQhB,cAAc,EAPE,mBAAA;QAQhB,kBAAkB,EAPE,uBAAA;QAQpB,kBAAkB,EAPE,uBAAA;QAQpB,kBAAkB,EAPE,uBAAA;QAQpB,WAAW,EAPE,gBAAA;QAQb,kBAAkB,EAPE,CAAA,IAAO,EAAU,SAAW,KAAW,IAAI,aAAA,CAAc,IAAC,EAAK,SAAA,CAAU;QAQ7F,WAAW,EAPE,gBAAA;QAQb,gBAAgB,EAPE,qBAAA;QAQlB,cAAc,EAPE,mBAAA;KAQjB,CAPC;CAQH;;;;;;;;;;AAUD,SAAA,kBAAA,CACI,UAAoB,EAAE,gBAAyB,EAAE,kBAAgC,EACjF,GAAmB,EAAE,QAA0B,EAAE,OAAa,EAFlE;IAGE,uBAfM,eAAA,GAAoC,QAAA,CAAS,QAAC,CAAQ,GAAC,CAAG,gBAAC,CAAgB,CAAC;IAgBlF,OAfO,cAAA,CAgBH,cAAc,CAfC,UAAC,EAAW,QAAA,EAAU,eAAA,EAAiB,gBAAA,EAAkB,kBAAA,CAAmB,EAgB3F,GAAG,EAfE,OAAA,CAAQ,CAAC;CAgBnB;;;;;;;;;;AAUD,SAAA,mBAAA,CACI,UAAoB,EAAE,gBAAyB,EAAE,kBAAgC,EACjF,GAAmB,EAAE,QAA0B,EAAE,OAAa,EAFlE;IAGE,uBAvBM,eAAA,GAAoC,QAAA,CAAS,QAAC,CAAQ,GAAC,CAAG,gBAAC,CAAgB,CAAC;IAwBlF,uBAvBM,IAAA,GAAO,cAAA,CAwBT,UAAU,EAvBE,QAAA,EAAU,IAAI,qBAAA,CAAsB,eAAC,CAAe,EAAE,gBAAA,EAwBlE,kBAAkB,CAvBC,CAAC;IAwBxB,OAvBO,oBAAA,CAAqB,WAAC,CAAW,MAAC,EAAO,cAAA,EAAgB,IAAA,EAAM,CAAA,IAAE,EAAK,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC;CAwB7F;;;;;;;;;AASD,SAAA,cAAA,CACI,UAAoB,EAAE,QAA0B,EAAE,eAAiC,EACnF,gBAAyB,EAAE,kBAAuB,EAFtD;IAGE,uBA9BM,SAAA,GAAY,QAAA,CAAS,QAAC,CAAQ,GAAC,CAAG,SAAC,CAAS,CAAC;IA+BnD,uBA9BM,YAAA,GAAe,QAAA,CAAS,QAAC,CAAQ,GAAC,CAAG,YAAC,CAAY,CAAC;IA+BzD,uBA9BM,QAAA,GAAW,eAAA,CAAgB,cAAC,CAAc,IAAC,EAAK,IAAA,CAAK,CAAC;IA+B5D,OA9BO;QA+BL,QAAQ;QACR,QAAQ,EA9BE,UAAA,EAAY,gBAAA;QA+BtB,cAAc,EA9BE,kBAAA,EAAoB,SAAA,EAAW,eAAA,EAAiB,QAAA,EAAU,YAAA;KA+B3E,CA9BC;CA+BH;;;;;;;;;;;;;;;;;AAiBD,SAAA,sBAAA,CACI,IAAc,EAAE,SAAiB,EAAE,QAAsB,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EACvF,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAFxE;IAGE,uBA7CM,OAAA,GAAU,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,SAAC,CAAS,CAAC;IA8C1C,kBAAkB,CA7CC,IAAC,EAAK,OAAA,EAAS,QAAA,EAAU,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAG,CAAC;IA8CpF,OA7CO,CAAA,OAAE,CAAO,KAAC,GAAO,GA6C1B;QACM,oBAAoB,CA7CC,IAAC,EAAK,SAAA,CAAU,CAAC,KAAC;QA8CvC,SAAS,CA7CC;CA8Cf;;;;;;;;;;;;;;;;;AAiBD,SAAA,sBAAA,CACI,IAAc,EAAE,SAAiB,EAAE,QAAsB,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EACvF,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAQ,EAFxE;IAGE,uBA5DM,OAAA,GAAU,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,SAAC,CAAS,CAAC;IA6D1C,kBAAkB,CA5DC,IAAC,EAAK,OAAA,EAAS,QAAA,EAAU,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,CAAG,CAAC;IA6DpF,OA5DO,CAAA,OAAE,CAAO,KAAC,GAAO,GA4D1B;QACM,oBAAoB,CA5DC,IAAC,EAAK,SAAA,CAAU,CAAC,KAAC;QA6DvC,SAAS,CA5DC;CA6Df;;;;;;;AAOD,SAAA,uBAAA,CAjEC,MAAA,EAAA,SAAA,EAAA,OAAA,EAiED;IACE,OAjEO,oBAAA,CAkEH,WAAW,CAjEC,MAAC,EAAO,kBAAA,EAAoB,IAAA,EAAM,CAAA,MAAE,EAAO,SAAA,EAAW,OAAA,CAAQ,CAAC,CAAC;CAkEjF;;;;;AAKD,SAAA,uBAAA,CApEC,IAAA,EAoED;IACE,OApEO,oBAAA,CAAqB,WAAC,CAAW,aAAC,EAAc,kBAAA,EAAoB,IAAA,EAAM,CAAA,IAAE,CAAI,CAAC,CAAC;CAqE1F;;;;;AAKD,SAAA,uBAAA,CAvEC,IAAA,EAuED;IACE,OAvEO,oBAAA,CAAqB,WAAC,CAAW,cAAC,EAAe,kBAAA,EAAoB,IAAA,EAAM,CAAA,IAAE,CAAI,CAAC,CAAC;CAwE3F;;;;;AAKD,SAAA,gBAAA,CA1EC,IAAA,EA0ED;IACE,OA1EO,oBAAA,CAAqB,WAAC,CAAW,OAAC,EAAQ,WAAA,EAAa,IAAA,EAAM,CAAA,IAAE,CAAI,CAAC,CAAC;CA2E7E;AAED,IAAI,WAAW,GAAQ,EAAE,CAAC;AAC1B,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AACvB,WAAW,CAAC,aAAa,GAAG,CAAC,CAAC;AAC9B,WAAW,CAAC,cAAc,GAAG,CAAC,CAAC;AAC/B,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC;AACxB,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC;AAC5B,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;AAC3C,WAAW,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,eAAe,CAAC;AACzD,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,gBAAgB,CAAC;AAC3D,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;AAC7C,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC;AAGrD,IA/EI,cAAgB,CAAY;AAgFhC,IA/EI,YAAc,CAAS;AAgF3B,IA/EI,iBAA2B,CAAI;;;;;;AAqFnC,SAAA,mBAAA,CAnFC,IAAA,EAAA,SAAA,EAmFD;IACE,YAAY,GAnFG,IAAA,CAAK;IAoFpB,iBAAiB,GAnFG,SAAA,CAAU;CAoF/B;;;;;;;;AAQD,SAAA,gBAAA,CAzFC,IAAA,EAAA,SAAA,EAAA,SAAA,EAAA,KAAA,EAyFD;IACE,mBAAmB,CAzFC,IAAC,EAAK,SAAA,CAAU,CAAC;IA0FrC,OAzFO,oBAAA,CA0FH,WAAW,CAzFC,WAAC,EAAY,IAAA,CAAK,GAAC,CAAG,WAAC,EAAY,IAAA,EAAM,CAAA,IAAE,EAAK,SAAA,EAAW,SAAA,EAAW,KAAA,CAAM,CAAC,CAAC;CA0F/F;;;;;;AAMD,SAAA,qBAAA,CA7FC,IAAA,EAAA,SAAA,EA6FD;IACE,IAAI,IA7FC,CAAI,KAAC,GAAO,EA6FnB,kBA7FwC;QA8FpC,MA7FM,kBAAA,CAAmB,WAAC,CAAW,cAAC,CAAc,CAAC,CAAC;KA8FvD;IACD,mBAAmB,CA7FC,IAAC,EAAK,wBAAA,CAAyB,IAAC,EAAK,CAAA,CAAE,CAAC,CAAC;IA8F7D,OA7FO,IAAA,CAAK,GAAC,CAAG,gBAAC,CAAgB,sBAAC,EAAuB,IAAA,CAAK,CAAC;;;;;;;;IAqGjE,SAAA,sBAAA,CACM,IAAc,EAAE,SAAiB,EAAE,QAAsB,EAAE,GAAG,MAAa,EADjF;QAEI,uBAnGM,OAAA,GAAU,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,SAAC,CAAS,CAAC;QAoG1C,IAAI,SAnGC,KAAa,CAmGtB,uBAnGgD;YAoG1C,uBAAuB,CAnGC,IAAC,EAAK,OAAA,EAAS,QAAA,EAAU,MAAA,CAAO,CAAC;SAoG1D;aAnGM;YAoGL,uBAAuB,CAnGC,IAAC,EAAK,OAAA,EAAS,QAAA,EAAU,MAAA,CAAO,CAAC;SAoG1D;QACD,IAAI,OAnGC,CAAO,KAAC,GAAO,IAmGxB,sBAnGiD;YAoG3C,mBAAmB,CAnGC,IAAC,EAAK,wBAAA,CAAyB,IAAC,EAAK,SAAA,CAAU,CAAC,CAAC;SAoGtE;QACD,OAnGO,CAAA,OAAE,CAAO,KAAC,GAAO,GAmG5B;YACQ,oBAAoB,CAnGC,IAAC,EAAK,OAAA,CAAQ,KAAC,CAAK,CAAC,KAAC;YAoG3C,SAAS,CAnGC;KAoGf;CACF;;;;;;AAMD,SAAA,mBAAA,CAvGC,IAAA,EAAA,SAAA,EAuGD;IACE,IAAI,IAvGC,CAAI,KAAC,GAAO,EAuGnB,kBAvGwC;QAwGpC,MAvGM,kBAAA,CAAmB,WAAC,CAAW,cAAC,CAAc,CAAC,CAAC;KAwGvD;IACD,mBAAmB,CAvGC,IAAC,EAAK,yBAAA,CAA0B,IAAC,EAAK,CAAA,CAAE,CAAC,CAAC;IAwG9D,OAvGO,IAAA,CAAK,GAAC,CAAG,cAAC,CAAc,sBAAC,EAAuB,IAAA,CAAK,CAAC;;;;;;;;IA+G/D,SAAA,sBAAA,CACM,IAAc,EAAE,SAAiB,EAAE,QAAsB,EAAE,GAAG,MAAa,EADjF;QAEI,uBA7GM,OAAA,GAAU,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,SAAC,CAAS,CAAC;QA8G1C,IAAI,SA7GC,KAAa,CA6GtB,uBA7GgD;YA8G1C,uBAAuB,CA7GC,IAAC,EAAK,OAAA,EAAS,QAAA,EAAU,MAAA,CAAO,CAAC;SA8G1D;aA7GM;YA8GL,uBAAuB,CA7GC,IAAC,EAAK,OAAA,EAAS,QAAA,EAAU,MAAA,CAAO,CAAC;SA8G1D;QACD,IAAI,OA7GC,CAAO,KAAC,GAAO,CA6GxB,sBA7GiD;YA8G3C,mBAAmB,CA7GC,IAAC,EAAK,yBAAA,CAA0B,IAAC,EAAK,SAAA,CAAU,CAAC,CAAC;SA8GvE;QACD,OA7GO,CAAA,OAAE,CAAO,KAAC,GAAO,GA6G5B;YACQ,oBAAoB,CA7GC,IAAC,EAAK,OAAA,CAAQ,KAAC,CAAK,CAAC,KAAC;YA8G3C,SAAS,CA7GC;KA8Gf;CACF;;;;;;;;AAQD,SAAA,uBAAA,CACI,IAAc,EAAE,OAAgB,EAAE,QAAsB,EAAE,WAAkB,EADhF;IAEE,uBAnHM,OAAA,GAAU,EAAM,kBAAC,GAAmB,IAAC,EAAK,OAAA,EAAS,QAAA,EAAU,GAAA,WAAI,CAAW,CAAC;IAoHnF,IAAI,OAnHC,EAAQ;QAoHX,uBAnHM,MAAA,GAAS,QAAA,KAAa,CAmHhC,iBAnHuD,WAAA,CAAY,CAAC,CAAC,GAAG,WAAA,CAAY;QAoHhF,IAAI,OAnHC,CAAO,KAAC,GAAO,IAmHxB,sBAnHiD;YAoH3C,uBAnHM,aAAA,GAAyC,EAAA,CAAG;YAoHlD,KAAK,qBAnHI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,QAAC,CAAQ,MAAC,EAAO,CAAA,EAAE,EAAG;gBAoHhD,uBAnHM,OAAA,GAAU,OAAA,CAAQ,QAAC,CAAQ,CAAC,CAAC,CAAC;gBAoHpC,uBAnHM,KAAA,GAAQ,MAAA,CAAO,CAAC,CAAC,CAAC;gBAoHxB,IAAI,OAnHC,CAAO,KAAC,GAAO,CAmH5B,qBAnHuD;oBAoH7C,aAAa,CAnHC,yBAAC,oBAAyB,OAAC,CAAO,eAAC,GAAiB,CAAC;wBAoH/D,0BAA0B,CAnHC,KAAC,CAAK,CAAC;iBAoHvC;aACF;YACD,uBAnHM,KAAA,KAAQ,OAAA,CAAQ,MAAC,EAAA,CAAQ;YAoH/B,uBAnHM,EAAA,GAAK,aAAA,CAAc,IAAC,EAAK,KAAA,CAAM,KAAC,CAAK,CAAC,aAAC,CAAa;YAoH1D,IAAI,CAnHC,EAAA,KAAC,CAAK,OAAC,GAAS,IAAC,EAAK;;gBAqHzB,IAAI,CAnHC,QAAC,CAAQ,QAAC,CAAQ,EAAC,EAAG,CAmHnC,SAAA,EAnHmC,IAAa,CAAI,SAAC,CAAS,aAAC,EAAc,IAAA,EAAM,CAAA,CAAE,CAmHrF,CAnHsF,CAAE,CAAC;aAoHlF;iBAnHM;;gBAqHL,KAAK,qBAnHI,IAAA,IAAQ,aAAA,EAAe;oBAoH9B,uBAnHM,KAAA,GAAQ,aAAA,CAAc,IAAC,CAAI,CAAC;oBAoHlC,IAAI,KAnHC,IAAQ,IAAA,EAAM;wBAoHjB,IAAI,CAnHC,QAAC,CAAQ,YAAC,CAAY,EAAC,EAAG,IAAA,EAAM,KAAA,CAAM,CAAC;qBAoH7C;yBAnHM;wBAoHL,IAAI,CAnHC,QAAC,CAAQ,eAAC,CAAe,EAAC,EAAG,IAAA,CAAK,CAAC;qBAoHzC;iBACF;aACF;SACF;KACF;CACF;;;;;;;;AAQD,SAAA,uBAAA,CACI,IAAc,EAAE,OAAgB,EAAE,QAAsB,EAAE,MAAa,EAD3E;IAEE,EAzHM,kBAAC,GAAmB,IAAC,EAAK,OAAA,EAAS,QAAA,EAAU,GAAA,MAAI,CAAM,CAAC;CA0H/D;;;;;AAKD,SAAA,yBAAA,CA5HC,IAAA,EA4HD;;IAEE,IAAI,GA5HG,mBAAA,CAAoB,IAAC,CAAI,OAAC,CAAO,OAAC,EAAQ,GAAA,CAAI,CAAC,CAAC;IA6HvD,OA5HO,CA4HT,WAAA,EA5HS,IAAe,CA4HxB,CA5H4B,CAAE;CA6H7B;AAED,MA5HM,iBAAA,GAAoB,UAAA,CAAW;;;;;AAiIrC,SAAA,mBAAA,CA/HC,KAAA,EA+HD;IACE,OA/HO,KAAA,CAAM,OAAC,CAAO,iBAAC,EAAkB,CAAA,GAAE,CAAS,KAAM,GAAA,GAAM,CAAA,CAAE,CAAC,CAAC,CAAC,WAAC,EAAW,CAAE,CAAC;CAgIpF;;;;;AAKD,SAAA,0BAAA,CAlIC,KAAA,EAkID;IACE,IAlII;;QAoIF,OAlIO,KAAA,IAAS,IAAA,GAAO,KAAA,CAAM,QAAC,EAAQ,CAAE,KAAC,CAAK,CAAC,EAAE,EAAA,CAAG,GAAG,KAAA,CAAM;KAmI9D;IAlIC,OAAA,CAAQ,EAAE;QAmIV,OAlIO,uDAAA,CAAwD;KAmIhE;CACF;;;;;;AAMD,SAAA,wBAAA,CAtIC,IAAA,EAAA,SAAA,EAsID;IACE,KAAK,qBAtII,CAAA,GAAI,SAAA,EAAW,CAAA,GAAI,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,MAAC,EAAO,CAAA,EAAE,EAAG;QAuItD,uBAtIM,OAAA,GAAU,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,CAAC,CAAC,CAAC;QAuIlC,IAAI,OAtIC,CAAO,KAAC,GAAO,IAsIxB,wBAtImD,OAAA,CAAQ,QAAC,IAAW,OAAA,CAAQ,QAAC,CAAQ,MAAC,EAAO;YAuI1F,OAtIO,CAAA,CAAE;SAuIV;KACF;IACD,OAtIO,IAAA,CAAK;CAuIb;;;;;;AAMD,SAAA,yBAAA,CA1IC,IAAA,EAAA,SAAA,EA0ID;IACE,KAAK,qBA1II,CAAA,GAAI,SAAA,EAAW,CAAA,GAAI,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,MAAC,EAAO,CAAA,EAAE,EAAG;QA2ItD,uBA1IM,OAAA,GAAU,IAAA,CAAK,GAAC,CAAG,KAAC,CAAK,CAAC,CAAC,CAAC;QA2IlC,IAAI,CA1IC,OAAC,CAAO,KAAC,GAAO,CA0IzB,yBA1IqD,OAAA,CAAQ,QAAC,IAAW,OAAA,CAAQ,QAAC,CAAQ,MAAC,EAAO;YA2I5F,OA1IO,CAAA,CAAE;SA2IV;KACF;IACD,OA1IO,IAAA,CAAK;CA2Ib;AACD,MAAA,aAAA,CAAA;;;;;IAQA,WAAA,CA7IqB,IAAM,EAAiB,SAAmB,EA6I/D;QA7IqB,IAArB,CAAA,IAAqB,GAAA,IAAA,CAAM;QAAiB,IAA5C,CAAA,SAA4C,GAAA,SAAA,CAAmB;QA+I3D,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,IAAI,CAAC,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC;SAChC;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;QACzB,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAnC,wBAA8D,CAAC,EAAE;YAC3D,KAAK,GAAG,KAAK,CAAC,MAAQ,CAAC;SACxB;QACD,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,CAAC,KAAK,IAAI,MAAM,EAAE;gBACvB,KAAK,GAAG,YAAY,CAAC,MAAM,CAAG,CAAC;gBAC/B,MAAM,GAAG,MAAM,CAAC,MAAQ,CAAC;aAC1B;SACF;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACtB;;;;IAIH,IAjJG,YAAA,GAiJH;;QAEI,OAjJO,aAAA,CAAc,IAAC,CAAI,MAAC,EAAO,IAAA,CAAK,KAAC,CAAK,KAAC,CAAK,CAAC,aAAC,IAAgB,IAAA,CAAK,IAAC,CAAI;KAkJhF;;;;IAIH,IApJG,QAAA,GAoJH,EApJ6B,OAAO,cAAA,CAAe,IAAC,CAAI,MAAC,EAAO,IAAA,CAAK,KAAC,CAAK,CAAC,EAAC;;;;IAwJ7E,IAvJG,SAAA,GAuJH,EAvJyB,OAAO,IAAA,CAAK,YAAC,CAAY,SAAC,CAAS,EAAC;;;;IA2J7D,IA1JG,OAAA,GA0JH,EA1JuB,OAAO,IAAA,CAAK,YAAC,CAAY,OAAC,CAAO,EAAC;;;;IA8JzD,IA7JG,cAAA,GA6JH;QACI,uBA7JM,MAAA,GAAgB,EAAA,CAAG;QA8JzB,IAAI,IA7JC,CAAI,KAAC,EAAM;YA8Jd,KAAK,qBA7JI,CAAA,GAAI,IAAA,CAAK,KAAC,CAAK,KAAC,GAAO,CAAA,EAAG,CAAA,IAAK,IAAA,CAAK,KAAC,CAAK,KAAC,GAAO,IAAA,CAAK,KAAC,CAAK,UAAC,EAAW,CAAA,EAAE,EAAG;gBA8JrF,uBA7JM,QAAA,GAAW,IAAA,CAAK,MAAC,CAAM,GAAC,CAAG,KAAC,CAAK,CAAC,CAAC,CAAC;gBA8J1C,IAAI,QA7JC,CAAQ,KAAC,GAAO,KA6J7B,oBA7JoD;oBA8J1C,MAAM,CA7JC,IAAC,kBAAI,EAAA,QAAC,CAAQ,QAAC,GAAU,KAAC,CAAK,CAAC;iBA8JxC;gBACD,CAAC,IA7JI,QAAA,CAAS,UAAC,CAAU;aA8J1B;SACF;QACD,OA7JO,MAAA,CAAO;KA8Jf;;;;IAIH,IAhKG,UAAA,GAgKH;QACI,uBAhKM,UAAA,GAAmC,EAAA,CAAG;QAiK5C,IAAI,IAhKC,CAAI,KAAC,EAAM;YAiKd,iBAAiB,CAhKC,IAAC,CAAI,MAAC,EAAO,IAAA,CAAK,KAAC,EAAM,UAAA,CAAW,CAAC;YAkKvD,KAAK,qBAhKI,CAAA,GAAI,IAAA,CAAK,KAAC,CAAK,KAAC,GAAO,CAAA,EAAG,CAAA,IAAK,IAAA,CAAK,KAAC,CAAK,KAAC,GAAO,IAAA,CAAK,KAAC,CAAK,UAAC,EAAW,CAAA,EAAE,EAAG;gBAiKrF,uBAhKM,QAAA,GAAW,IAAA,CAAK,MAAC,CAAM,GAAC,CAAG,KAAC,CAAK,CAAC,CAAC,CAAC;gBAiK1C,IAAI,QAhKC,CAAQ,KAAC,GAAO,KAgK7B,oBAhKoD;oBAiK1C,iBAAiB,CAhKC,IAAC,CAAI,MAAC,EAAO,QAAA,EAAU,UAAA,CAAW,CAAC;iBAiKtD;gBACD,CAAC,IAhKI,QAAA,CAAS,UAAC,CAAU;aAiK1B;SACF;QACD,OAhKO,UAAA,CAAW;KAiKnB;;;;IAIH,IAnKG,sBAAA,GAmKH;QACI,uBAnKM,MAAA,GAAS,eAAA,CAAgB,IAAC,CAAI,YAAC,CAAY,CAAC;QAoKlD,OAnKO,MAAA,GAAS,MAAA,CAAO,aAAC,GAAe,SAAA,CAAU;KAoKlD;;;;IAIH,IAtKG,UAAA,GAsKH;QACI,OAtKO,IAAA,CAAK,OAAC,CAAO,KAAC,GAAO,CAsKhC,kBAtKqD,UAAA,CAAW,IAAC,CAAI,IAAC,EAAK,IAAA,CAAK,OAAC,CAAO;YAuKnC,UAAU,CAtKC,IAAC,CAAI,MAAC,EAAO,IAAA,CAAK,KAAC,CAAK,CAAC;KAuKtF;;;;;;IAMH,QA3KG,CAAA,OAAA,EAAA,GAAA,MAAA,EA2KH;QACI,qBA3KI,UAAY,CAAe;QA4K/B,qBA3KI,YAAc,CAAO;QA4KzB,IAAI,IA3KC,CAAI,OAAC,CAAO,KAAC,GAAO,CA2K7B,iBA3KiD;YA4K3C,UAAU,GA3KG,IAAA,CAAK,IAAC,CAAI,GAAC,CAAG;YA4K3B,YAAY,GA3KG,IAAA,CAAK,OAAC,CAAO,KAAC,CAAK;SA4KnC;aA3KM;YA4KL,UAAU,GA3KG,IAAA,CAAK,MAAC,CAAM,GAAC,CAAG;YA4K7B,YAAY,GA3KG,IAAA,CAAK,KAAC,CAAK,KAAC,CAAK;SA4KjC;;;QAGD,uBA3KM,eAAA,GAAkB,kBAAA,CAAmB,UAAC,EAAW,YAAA,CAAa,CAAC;QA4KrE,qBA3KI,mBAAA,GAAsB,CAAA,CAAE,CAAC;QA4K7B,qBA3KI,UAAA,GAAyB,MA2KjC;YACM,mBAAmB,EA3KC,CAAE;YA4KtB,IAAI,mBA3KC,KAAuB,eAAA,EAAiB;gBA4K3C,OA3KO,OAAA,CAAQ,KAAC,CAAK,IAAC,CAAI,OAAC,EAAQ,GAAA,MAAI,CAAM,CAAC;aA4K/C;iBA3KM;gBA4KL,OA3KO,IAAA,CAAK;aA4Kb;SACF,CA3KC;QAAA,EA4KF,UAAU,CA3KC,OAAC,GAAS,UAAC,CAAU,CAAC;QA4KjC,IAAI,mBA3KC,GAAqB,eAAA,EAAiB;YA4KzC,OAAO,CA3KC,KAAC,CAAK,mEAAC,CAAmE,CAAC;YA4KnF,EA3KM,OAAC,CAAO,KAAC,GAAM,GAAC,MAAG,CAAM,CAAC;SA4KjC;KACF;CACF;AAED,AAaA;;;;;AAKA,SAAA,kBAAA,CA7LCD,UAAA,EAAA,SAAA,EA6LD;IACE,qBA7LI,eAAA,GAAkB,CAAA,CAAE,CAAC;IA8LzB,KAAK,qBA7LI,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,SAAA,EAAW,CAAA,EAAE,EAAG;QA8LnC,uBA7LM,OAAA,GAAUA,UAAA,CAAQ,KAAC,CAAK,CAAC,CAAC,CAAC;QA8LjC,IAAI,OA7LC,CAAO,KAAC,GAAO,CA6LxB,sBA7LiD;YA8L3C,eAAe,EA7LC,CAAE;SA8LnB;KACF;IACD,OA7LO,eAAA,CAAgB;CA8LxB;;;;;AAKD,SAAA,eAAA,CAhMC,IAAA,EAgMD;IACE,OAAO,IAhMC,IAAO,CAAA,eAAE,CAAe,IAAC,CAAI,EAAE;QAiMrC,IAAI,KAhMG,IAAA,CAAK,MAAC,EAAA,CAAQ;KAiMtB;IACD,IAAI,IAhMC,CAAI,MAAC,EAAO;QAiMf,OAhMO,aAAA,CAAc,IAAC,CAAI,MAAC,mBAAM,EAAC,YAAA,CAAa,IAAC,CAAI,GAAG,KAAC,CAAK,CAAC;KAiM/D;IACD,OAhMO,IAAA,CAAK;CAiMb;;;;;;;AAOD,SAAA,iBAAA,CArMC,IAAA,EAAA,OAAA,EAAA,UAAA,EAqMD;IACE,KAAK,qBArMI,OAAA,IAAW,OAAA,CAAQ,UAAC,EAAW;QAsMtC,UAAU,CArMC,OAAC,CAAO,GAAG,aAAA,CAAc,IAAC,EAAK,OAAA,EAAS,OAAA,CAAQ,UAAC,CAAU,OAAC,CAAO,CAAC,CAAC;KAsMjF;CACF;;;;;;;;AAQD,SAAA,oBAAA,CA3MC,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EA2MD;IACE,uBA3MM,SAAA,GAAY,cAAA,CAAe;IA4MjC,uBA3MM,OAAA,GAAU,YAAA,CAAa;IA4M7B,uBA3MM,YAAA,GAAe,iBAAA,CAAkB;IA4MvC,IA3MI;QA4MF,cAAc,GA3MG,MAAA,CAAO;QA4MxB,uBA3MM,MAAA,GAAS,EAAA,CAAG,KAAC,CAAK,IAAC,EAAK,IAAA,CAAK,CAAC;QA4MpC,YAAY,GA3MG,OAAA,CAAQ;QA4MvB,iBAAiB,GA3MG,YAAA,CAAa;QA4MjC,cAAc,GA3MG,SAAA,CAAU;QA4M3B,OA3MO,MAAA,CAAO;KA4Mf;IA3MC,OAAA,CAAQ,EAAE;QA4MV,IAAI,gBA3MC,CAAgB,CAAC,CAAC,IAAI,CAAA,YAAE,EAAa;YA4MxC,MA3MM,CAAA,CAAE;SA4MT;QACD,MA3MM,qBAAA,CAAsB,CAAC,qBAAE,sBAAA,EAAuB,GAAI,CAAC;KA4M5D;CACF;;;;AAID,AAAA,SAAA,sBAAA,GAAA;IACE,OA7MO,YAAA,GAAe,IAAI,aAAA,CAAc,YAAC,EAAa,iBAAA,CAAkB,GAAG,IAAA,CAAK;CA8MjF;AACD,MAAA,qBAAA,CAAA;;;;IAIA,WAAA,CA9MsB,QAAU,EA8MhC;QA9MsB,IAAtB,CAAA,QAAsB,GAAA,QAAA,CAAU;KAAiB;;;;;;IAoNjD,cAlNG,CAAA,OAAA,EAAA,UAAA,EAkNH;QACI,OAlNO,IAAI,cAAA,CAAe,IAAC,CAAI,QAAC,CAAQ,cAAC,CAAc,OAAC,EAAQ,UAAA,CAAW,CAAC,CAAC;KAmN9E;CACF;AAED,AAKA,MAAA,cAAA,CAAA;;;;IAIA,WAAA,CAzNsB,QAAU,EAyNhC;QAzNsB,IAAtB,CAAA,QAAsB,GAAA,QAAA,CAAU;KAAU;;;;IA6N1C,IA3NG,IAAA,GA2NH,EA3Ne,OAAO,IAAA,CAAK,QAAC,CAAQ,IAAC,CAAI,EAAC;;;;;IAgO1C,WA9NG,CAAA,IAAA,EA8NH;QACI,wBAAwB,oBA9NC,YAAC,CAAY,IAAC,CAAI,GAAG,CAAC;QA+N/C,IAAI,IA9NC,CAAI,QAAC,CAAQ,WAAC,EAAY;YA+N7B,IAAI,CA9NC,QAAC,CAAQ,WAAC,CAAW,IAAC,CAAI,CAAC;SA+NjC;KACF;;;;IAIH,OAhOG,GAgOH,EAhOc,IAAA,CAAK,QAAC,CAAQ,OAAC,EAAO,CAAE,EAAC;;;;;;IAsOvC,aApOG,CAAA,IAAA,EAAA,SAAA,EAoOH;QACI,uBApOM,EAAA,GAAK,IAAA,CAAK,QAAC,CAAQ,aAAC,CAAa,IAAC,EAAK,SAAA,CAAU,CAAC;QAqOxD,uBApOM,QAAA,GAAW,sBAAA,EAAuB,CAAE;QAqO1C,IAAI,QApOC,EAAS;YAqOZ,uBApOM,OAAA,GAAU,IAAI,YAAA,CAAa,EAAC,EAAG,IAAA,EAAM,QAAA,CAAS,CAAC;YAqOrD,OAAO,CApOC,IAAC,GAAM,IAAA,CAAK;YAqOpB,cAAc,CApOC,OAAC,CAAO,CAAC;SAqOzB;QACD,OApOO,EAAA,CAAG;KAqOX;;;;;IAKH,aAvOG,CAAA,KAAA,EAuOH;QACI,uBAvOM,OAAA,GAAU,IAAA,CAAK,QAAC,CAAQ,aAAC,CAAa,KAAC,CAAK,CAAC;QAwOnD,uBAvOM,QAAA,GAAW,sBAAA,EAAuB,CAAE;QAwO1C,IAAI,QAvOC,EAAS;YAwOZ,cAAc,CAvOC,IAAI,SAAA,CAAU,OAAC,EAAQ,IAAA,EAAM,QAAA,CAAS,CAAC,CAAC;SAwOxD;QACD,OAvOO,OAAA,CAAQ;KAwOhB;;;;;IAKH,UA1OG,CAAA,KAAA,EA0OH;QACI,uBA1OM,IAAA,GAAO,IAAA,CAAK,QAAC,CAAQ,UAAC,CAAU,KAAC,CAAK,CAAC;QA2O7C,uBA1OM,QAAA,GAAW,sBAAA,EAAuB,CAAE;QA2O1C,IAAI,QA1OC,EAAS;YA2OZ,cAAc,CA1OC,IAAI,SAAA,CAAU,IAAC,EAAK,IAAA,EAAM,QAAA,CAAS,CAAC,CAAC;SA2OrD;QACD,OA1OO,IAAA,CAAK;KA2Ob;;;;;;IAMH,WA9OG,CAAA,MAAA,EAAA,QAAA,EA8OH;QACI,uBA9OM,OAAA,GAAU,YAAA,CAAa,MAAC,CAAM,CAAC;QA+OrC,uBA9OM,YAAA,GAAe,YAAA,CAAa,QAAC,CAAQ,CAAC;QA+O5C,IAAI,OA9OC,IAAU,YAAA,IAAgB,OAAA,YAAmB,YAAA,EAAc;YA+O9D,OAAO,CA9OC,QAAC,CAAQ,YAAC,CAAY,CAAC;SA+OhC;QACD,IAAI,CA9OC,QAAC,CAAQ,WAAC,CAAW,MAAC,EAAO,QAAA,CAAS,CAAC;KA+O7C;;;;;;;IAOH,YAnPG,CAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAmPH;QACI,uBAnPM,OAAA,GAAU,YAAA,CAAa,MAAC,CAAM,CAAC;QAoPrC,uBAnPM,YAAA,GAAe,YAAA,CAAa,QAAC,CAAQ,CAAC;QAoP5C,uBAnPM,UAAA,KAAa,YAAA,CAAa,QAAC,CAAQ,EAAA,CAAG;QAoP5C,IAAI,OAnPC,IAAU,YAAA,IAAgB,OAAA,YAAmB,YAAA,EAAc;YAoP9D,OAAO,CAnPC,YAAC,CAAY,UAAC,EAAW,YAAA,CAAa,CAAC;SAoPhD;QAED,IAAI,CAnPC,QAAC,CAAQ,YAAC,CAAY,MAAC,EAAO,QAAA,EAAU,QAAA,CAAS,CAAC;KAoPxD;;;;;;IAMH,WAvPG,CAAA,MAAA,EAAA,QAAA,EAuPH;QACI,uBAvPM,OAAA,GAAU,YAAA,CAAa,MAAC,CAAM,CAAC;QAwPrC,uBAvPM,YAAA,GAAe,YAAA,CAAa,QAAC,CAAQ,CAAC;QAwP5C,IAAI,OAvPC,IAAU,YAAA,IAAgB,OAAA,YAAmB,YAAA,EAAc;YAwP9D,OAAO,CAvPC,WAAC,CAAW,YAAC,CAAY,CAAC;SAwPnC;QACD,IAAI,CAvPC,QAAC,CAAQ,WAAC,CAAW,MAAC,EAAO,QAAA,CAAS,CAAC;KAwP7C;;;;;IAKH,iBA1PG,CAAA,cAAA,EA0PH;QACI,uBA1PM,EAAA,GAAK,IAAA,CAAK,QAAC,CAAQ,iBAAC,CAAiB,cAAC,CAAc,CAAC;QA2P3D,uBA1PM,QAAA,GAAW,sBAAA,EAAuB,CAAE;QA2P1C,IAAI,QA1PC,EAAS;YA2PZ,cAAc,CA1PC,IAAI,YAAA,CAAa,EAAC,EAAG,IAAA,EAAM,QAAA,CAAS,CAAC,CAAC;SA2PtD;QACD,OA1PO,EAAA,CAAG;KA2PX;;;;;;;;IAQH,YAhQG,CAAA,EAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAgQH;QACI,uBAhQM,OAAA,GAAU,YAAA,CAAa,EAAC,CAAE,CAAC;QAiQjC,IAAI,OAhQC,IAAU,OAAA,YAAmB,YAAA,EAAc;YAiQ9C,uBAhQM,QAAA,GAAW,SAAA,GAAY,SAAA,GAAY,GAAA,GAAM,IAAA,GAAO,IAAA,CAAK;YAiQ3D,OAAO,CAhQC,UAAC,CAAU,QAAC,CAAQ,GAAG,KAAA,CAAM;SAiQtC;QACD,IAAI,CAhQC,QAAC,CAAQ,YAAC,CAAY,EAAC,EAAG,IAAA,EAAM,KAAA,EAAO,SAAA,CAAU,CAAC;KAiQxD;;;;;;;IAOH,eArQG,CAAA,EAAA,EAAA,IAAA,EAAA,SAAA,EAqQH;QACI,uBArQM,OAAA,GAAU,YAAA,CAAa,EAAC,CAAE,CAAC;QAsQjC,IAAI,OArQC,IAAU,OAAA,YAAmB,YAAA,EAAc;YAsQ9C,uBArQM,QAAA,GAAW,SAAA,GAAY,SAAA,GAAY,GAAA,GAAM,IAAA,GAAO,IAAA,CAAK;YAsQ3D,OAAO,CArQC,UAAC,CAAU,QAAC,CAAQ,GAAG,IAAA,CAAK;SAsQrC;QACD,IAAI,CArQC,QAAC,CAAQ,eAAC,CAAe,EAAC,EAAG,IAAA,EAAM,SAAA,CAAU,CAAC;KAsQpD;;;;;;IAMH,QAzQG,CAAA,EAAA,EAAA,IAAA,EAyQH;QACI,uBAzQM,OAAA,GAAU,YAAA,CAAa,EAAC,CAAE,CAAC;QA0QjC,IAAI,OAzQC,IAAU,OAAA,YAAmB,YAAA,EAAc;YA0Q9C,OAAO,CAzQC,OAAC,CAAO,IAAC,CAAI,GAAG,IAAA,CAAK;SA0Q9B;QACD,IAAI,CAzQC,QAAC,CAAQ,QAAC,CAAQ,EAAC,EAAG,IAAA,CAAK,CAAC;KA0QlC;;;;;;IAMH,WA7QG,CAAA,EAAA,EAAA,IAAA,EA6QH;QACI,uBA7QM,OAAA,GAAU,YAAA,CAAa,EAAC,CAAE,CAAC;QA8QjC,IAAI,OA7QC,IAAU,OAAA,YAAmB,YAAA,EAAc;YA8Q9C,OAAO,CA7QC,OAAC,CAAO,IAAC,CAAI,GAAG,KAAA,CAAM;SA8Q/B;QACD,IAAI,CA7QC,QAAC,CAAQ,WAAC,CAAW,EAAC,EAAG,IAAA,CAAK,CAAC;KA8QrC;;;;;;;;IAQH,QAnRG,CAAA,EAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EAmRH;QACI,uBAnRM,OAAA,GAAU,YAAA,CAAa,EAAC,CAAE,CAAC;QAoRjC,IAAI,OAnRC,IAAU,OAAA,YAAmB,YAAA,EAAc;YAoR9C,OAAO,CAnRC,MAAC,CAAM,KAAC,CAAK,GAAG,KAAA,CAAM;SAoR/B;QACD,IAAI,CAnRC,QAAC,CAAQ,QAAC,CAAQ,EAAC,EAAG,KAAA,EAAO,KAAA,EAAO,KAAA,CAAM,CAAC;KAoRjD;;;;;;;IAOH,WAxRG,CAAA,EAAA,EAAA,KAAA,EAAA,KAAA,EAwRH;QACI,uBAxRM,OAAA,GAAU,YAAA,CAAa,EAAC,CAAE,CAAC;QAyRjC,IAAI,OAxRC,IAAU,OAAA,YAAmB,YAAA,EAAc;YAyR9C,OAAO,CAxRC,MAAC,CAAM,KAAC,CAAK,GAAG,IAAA,CAAK;SAyR9B;QACD,IAAI,CAxRC,QAAC,CAAQ,WAAC,CAAW,EAAC,EAAG,KAAA,EAAO,KAAA,CAAM,CAAC;KAyR7C;;;;;;;IAOH,WA7RG,CAAA,EAAA,EAAA,IAAA,EAAA,KAAA,EA6RH;QACI,uBA7RM,OAAA,GAAU,YAAA,CAAa,EAAC,CAAE,CAAC;QA8RjC,IAAI,OA7RC,IAAU,OAAA,YAAmB,YAAA,EAAc;YA8R9C,OAAO,CA7RC,UAAC,CAAU,IAAC,CAAI,GAAG,KAAA,CAAM;SA8RlC;QACD,IAAI,CA7RC,QAAC,CAAQ,WAAC,CAAW,EAAC,EAAG,IAAA,EAAM,KAAA,CAAM,CAAC;KA8R5C;;;;;;;IAOH,MAlSG,CAmSG,MAAuC,EAAE,SAAiB,EAC1D,QAAiC,EAFvC;QAGI,IAAI,OAlSO,MAAA,KAAW,QAAA,EAAU;YAmS9B,uBAlSM,OAAA,GAAU,YAAA,CAAa,MAAC,CAAM,CAAC;YAmSrC,IAAI,OAlSC,EAAQ;gBAmSX,OAAO,CAlSC,SAAC,CAAS,IAAC,CAAI,IAAI,aAAA,CAAc,SAAC,EAAU,QAAA,CAAS,CAAC,CAAC;aAmShE;SACF;QAED,OAlSO,IAAA,CAAK,QAAC,CAAQ,MAAC,CAAM,MAAC,EAAO,SAAA,EAAW,QAAA,CAAS,CAAC;KAmS1D;;;;;IAKH,UArSG,CAAA,IAAA,EAqSH,EArS+B,OAAO,IAAA,CAAK,QAAC,CAAQ,UAAC,CAAU,IAAC,CAAI,CAAC,EAAC;;;;;IA0StE,WAzSG,CAAA,IAAA,EAySH,EAzSgC,OAAO,IAAA,CAAK,QAAC,CAAQ,WAAC,CAAW,IAAC,CAAI,CAAC,EAAC;;;;;;IA+SxE,QA9SG,CAAA,IAAA,EAAA,KAAA,EA8SH,EA9S6C,OAAO,IAAA,CAAK,QAAC,CAAQ,QAAC,CAAQ,IAAC,EAAK,KAAA,CAAM,CAAC,EAAC;CA+SxF,AAED,AAGC;;AD35BD;;;;;;GAMG,AAEH,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AAEA,AAAkkB;;ADpBlkB;;;;;;;AASA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA;;;AAGA,AAAA,SAAA,uBAAA,GAAA;IACE,OAHO,sBAAA,CAAuB;CAI/B;;;;AAID,AAAA,SAAA,uBAAA,GAAA;IACE,OALO,sBAAA,CAAuB;CAM/B;;;;;AAKD,AAAA,SAAA,cAAA,CARC,MAAA,EAQD;IACE,OARO,MAAA,IAAU,OAAA,CAAQ;CAS1B;;;;AAID,AAAA,SAAA,eAAA,GAAA;IACE,oBAAoB,EAVC,CAAE;CAWxB;;;;;;;AAOD,AAAA,MAAA,iBAAA,CAAA;;;;IAIA,WAAA,CAVG,MAAmB,EAUtB,GAVqC;;AAC9B,iBAAP,CAAA,UAAO,GAAoC;IAW3C,EAVE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,CAAA;gBAWtB,SAAS,EAVE;oBAWT,eAAe;oBACf,EAAC,OAVC,EAAQ,cAAA,EAAgB,WAAA,EAAa,eAAA,EAAgB;oBAWvD,qBAAqB;oBACrB,QAAQ;oBACR,sBAAsB;oBACtB,EAAC,OAVC,EAAQ,eAAA,EAAiB,UAAA,EAAY,uBAAA,EAAwB;oBAW/D,EAAC,OAVC,EAAQ,eAAA,EAAiB,UAAA,EAAY,uBAAA,EAAwB;oBAW/D;wBACE,OAAO,EAVE,SAAA;wBAWT,UAAU,EAVE,cAAA;wBAIhB,IAAA,EAHU,CAAA,CAAE,IAAI,MAAA,CAAO,SAAC,CAAS,EAAE,IAAI,QAAA,EAAS,EAAG,IAAI,QAAA,EAAS,CAAE,CAAC;qBAWhE;oBACD,EAAC,OAVC,EAAQ,eAAA,EAAiB,QAAA,EAAU,eAAA,EAAiB,KAAA,EAAO,IAAA,EAAK;iBAWnE;aACF,EAVC,EAAG;CAWJ,CAVC;;;;AAED,iBAAD,CAAA,cAAC,GAAA,MAAA;IAaD,EAAC,IAAI,EAAE,cAAc,GAAG;CACvB,CAAC,AAGF,AAQC;;ADzFD;;;;;;;AAWA,AAAO,IAAI,cAAc,GAAQ,EAAE,CAAC;AACpC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1B,cAAc,CAAC,SAAS,GAAG,CAAC,CAAC;AAC7B,cAAc,CAAC,OAAO,GAAG,CAAC,CAAC;AAC3B,cAAc,CAAC,SAAS,GAAG,CAAC,CAAC;AAC7B,cAAc,CAAC,gBAAgB,GAAG,CAAC,CAAC;AACpC,cAAc,CAAC,mBAAmB,GAAG,CAAC,CAAC;AACvC,cAAc,CAAC,aAAa,GAAG,CAAC,CAAC;AACjC,cAAc,CAAC,gBAAgB,GAAG,CAAC,CAAC;AACpC,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;AACjD,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;AACvD,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;AACnD,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;AACvD,cAAc,CAAC,cAAc,CAAC,gBAAgB,CAAC,GAAG,kBAAkB,CAAC;AACrE,cAAc,CAAC,cAAc,CAAC,mBAAmB,CAAC,GAAG,qBAAqB,CAAC;AAC3E,cAAc,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,eAAe,CAAC;AAC/D,cAAc,CAAC,cAAc,CAAC,gBAAgB,CAAC,GAAG,kBAAkB,CAAC;AAUrE,AANO,MAAM,sBAAA,GAAyB;IAOpC,cAAc,CANC,MAAC,EAAO,cAAA,CAAe,SAAC,EAAU,cAAA,CAAe,OAAC,EAAQ,cAAA,CAAe,SAAC;IAOzF,cAAc,CANC,gBAAC,EAAiB,cAAA,CAAe,mBAAC,EAAoB,cAAA,CAAe,aAAC;IAOrF,cAAc,CANC,gBAAC;CAOjB,CANC;;ADnCF;;;;;;GAMG,AAEH,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AAEA,AAEA,AACA,AACA,AACA,AACA,AAAwF;;AD5BxF;;;;;;GAMG,AAEH,AACA,AACA,AACA,AACA,AAAm0B;;ADkBn0B;;;AAGA,AACC,AAAA,AAAA,AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyID,AAAA,SAAAF,SAAA,CADC,IAAA,EAAA,WAAA,EACD;IACE,OADO,EAAA,IAAE,EAAK,WAAA,EAAY,CAAC;CAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDD,AAAA,SAAAF,SAAA,CACI,OAAwB,EAAE,MAD9B,GAEe,IAAI,EAFnB;IAGE,OAHO,EAAA,IAAE,EAAK,CAGhB,gBAH+C,MAAA,EAAQ,MAAA,EAAQ,OAAA,EAAS,OAAA,EAAQ,CAAC;CAIhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCD,AAAA,SAAAF,OAAA,CAJC,KAAA,EAID;IACE,OAJO,EAAA,IAAE,EAAK,CAIhB,cAJ6C,KAAA,EAAO,KAAA,EAAM,CAAC;CAK1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCD,AAAA,SAAAF,UAAA,CALC,KAAA,EAKD;IACE,OALO,EAAA,IAAE,EAAK,CAKhB,iBALgD,KAAA,EAAO,KAAA,EAAM,CAAC;CAM7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CD,AAAA,SAAAF,OAAA,CACI,MACuC,EAF3C;IAGE,OANO,EAAA,IAAE,EAAK,CAMhB,cAN6C,MAAA,EAAQ,MAAA,EAAO,CAAC;CAO5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDD,AAAA,SAAAF,OAAA,CARC,IAAA,EAAA,MAAA,EAQD;IACE,OARO,EAAA,IAAE,EAAK,CAQhB,cAR6C,IAAA,EAAM,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAO,CAAC;CASxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDD,AAAA,SAAAF,WAAA,CATC,KAAA,EASD;IACE,OATO,EAAA,IAAE,EAAK,CAShB,yBATwD,KAAA,EAAO,KAAA,EAAM,CAAC;CAUrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+GD,AAAA,SAAAF,YAAA,CACI,eAA2E,EAC3E,KAA8C,EAFlD;IAGE,OAXO,EAAA,IAAE,EAAK,CAWhB,mBAXkD,IAAA,EAAM,eAAA,EAAiB,SAAA,EAAW,KAAA,EAAM,CAAC;CAY1F;;ADzjBD;;;;;;;AAQA,AACA;;;AAGA,AACC,MAAAe,aAAA,GAAA,GAAA,CAAA;;;;;;;AAoED,AAAA,SAAAD,UAAA,CADC,IAAA,EAAA,WAAA,EACD;IACE,OADOD,SAAA,CAAS,IAAC,EAAK,WAAA,CAAY,CAAC;CAEpC;;;;;;;AAOD,AAAA,SAAAD,UAAA,CACI,OAAwB,EAAE,MACY,EAF1C;IAGE,OAHOD,SAAA,CAAS,OAAC,EAAQ,MAAA,CAAO,CAAC;CAIlC;;;;;;AAMD,AAAA,SAAAD,QAAA,CAJC,KAAA,EAID;IACE,OAJOD,OAAA,CAAO,KAAC,CAAK,CAAC;CAKtB;;;;;;AAMD,AAAA,SAAAD,WAAA,CALC,KAAA,EAKD;IACE,OALOD,UAAA,CAAU,KAAC,CAAK,CAAC;CAMzB;;;;;;AAMD,AAAA,SAAAD,QAAA,CACI,MACuC,EAF3C;IAGE,OANOD,OAAA,CAAO,MAAC,CAAM,CAAC;CAOvB;;;;;;;AAOD,AAAA,SAAAD,QAAA,CARC,IAAA,EAAA,MAAA,EAQD;IACE,OAROD,OAAA,CAAO,IAAC,EAAK,MAAA,CAAO,CAAC;CAS7B;;;;;;AAMD,AAAA,SAAAD,YAAA,CATC,KAAA,EASD;IACE,OATOD,WAAA,CAAW,KAAC,CAAK,CAAC;CAU1B;;;;;;;AAOD,AAAA,SAAAD,aAAA,CACI,eAA2E,EAC3E,KAA8C,EAFlD;IAGE,OAXOD,YAAA,CAAY,eAAC,EAAgB,KAAA,CAAM,CAAC;CAY5C;;ADpJD;;;;;;;;;;;GAYG,AACH,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AAA6X;;ADpC7X;;;;;;;;;;;;AAaA,AAA+mH;0EAEriH;;ADf1E;;GAEG,AAEH,AAEA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AAEA,AACA,AACA,AAA2B;;"}
\No newline at end of file