{"version":3,"file":"compiler.umd.js","sources":["../@angular/compiler.es5.js"],"sourcesContent":["var __extends = (this && this.__extends) || function (d, b) {\n    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    function __() { this.constructor = d; }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\n/**\n * @license Angular v4.0.3\n * (c) 2010-2017 Google, Inc. https://angular.io/\n * License: MIT\n */\nimport { ANALYZE_FOR_ENTRY_COMPONENTS, Attribute, COMPILER_OPTIONS, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory, ComponentFactoryResolver, ComponentRef, ContentChild, ContentChildren, Directive, ElementRef, Host, HostBinding, HostListener, Inject, Injectable, InjectionToken, Injector, Input, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory, NgModuleRef, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_INITIALIZER, Pipe, Query, QueryList, ReflectiveInjector, Renderer, SecurityContext, Self, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Type, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation, animate, createPlatformFactory, group, isDevMode, keyframes, platformCore, resolveForwardRef, sequence, state, style, transition, trigger, ɵCodegenComponentFactoryResolver, ɵConsole, ɵEMPTY_ARRAY, ɵEMPTY_MAP, ɵERROR_COMPONENT_TYPE, ɵLIFECYCLE_HOOKS_VALUES, ɵLifecycleHooks, ɵNgModuleInjector, ɵReflectionCapabilities, ɵReflector, ɵReflectorReader, ɵand, ɵccf, ɵcrt, ɵdid, ɵeld, ɵelementEventFullName, ɵgetComponentViewDefinitionFactory, ɵinlineInterpolate, ɵinterpolate, ɵncd, ɵnov, ɵpad, ɵpid, ɵpod, ɵppd, ɵprd, ɵqud, ɵreflector, ɵregisterModuleFactory, ɵstringify, ɵted, ɵunv, ɵvid } from '@angular/core';\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\n/**\n * \\@stable\n */\nvar VERSION = new Version('4.0.3');\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A segment of text within the template.\n */\nvar TextAst = (function () {\n    /**\n     * @param {?} value\n     * @param {?} ngContentIndex\n     * @param {?} sourceSpan\n     */\n    function TextAst(value, ngContentIndex, sourceSpan) {\n        this.value = value;\n        this.ngContentIndex = ngContentIndex;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    TextAst.prototype.visit = function (visitor, context) { return visitor.visitText(this, context); };\n    return TextAst;\n}());\n/**\n * A bound expression within the text of a template.\n */\nvar BoundTextAst = (function () {\n    /**\n     * @param {?} value\n     * @param {?} ngContentIndex\n     * @param {?} sourceSpan\n     */\n    function BoundTextAst(value, ngContentIndex, sourceSpan) {\n        this.value = value;\n        this.ngContentIndex = ngContentIndex;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    BoundTextAst.prototype.visit = function (visitor, context) {\n        return visitor.visitBoundText(this, context);\n    };\n    return BoundTextAst;\n}());\n/**\n * A plain attribute on an element.\n */\nvar AttrAst = (function () {\n    /**\n     * @param {?} name\n     * @param {?} value\n     * @param {?} sourceSpan\n     */\n    function AttrAst(name, value, sourceSpan) {\n        this.name = name;\n        this.value = value;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    AttrAst.prototype.visit = function (visitor, context) { return visitor.visitAttr(this, context); };\n    return AttrAst;\n}());\n/**\n * A binding for an element property (e.g. `[property]=\"expression\"`) or an animation trigger (e.g.\n * `[\\@trigger]=\"stateExp\"`)\n */\nvar BoundElementPropertyAst = (function () {\n    /**\n     * @param {?} name\n     * @param {?} type\n     * @param {?} securityContext\n     * @param {?} value\n     * @param {?} unit\n     * @param {?} sourceSpan\n     */\n    function BoundElementPropertyAst(name, type, securityContext, value, unit, sourceSpan) {\n        this.name = name;\n        this.type = type;\n        this.securityContext = securityContext;\n        this.value = value;\n        this.unit = unit;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    BoundElementPropertyAst.prototype.visit = function (visitor, context) {\n        return visitor.visitElementProperty(this, context);\n    };\n    Object.defineProperty(BoundElementPropertyAst.prototype, \"isAnimation\", {\n        /**\n         * @return {?}\n         */\n        get: function () { return this.type === PropertyBindingType.Animation; },\n        enumerable: true,\n        configurable: true\n    });\n    return BoundElementPropertyAst;\n}());\n/**\n * A binding for an element event (e.g. `(event)=\"handler()\"`) or an animation trigger event (e.g.\n * `(\\@trigger.phase)=\"callback($event)\"`).\n */\nvar BoundEventAst = (function () {\n    /**\n     * @param {?} name\n     * @param {?} target\n     * @param {?} phase\n     * @param {?} handler\n     * @param {?} sourceSpan\n     */\n    function BoundEventAst(name, target, phase, handler, sourceSpan) {\n        this.name = name;\n        this.target = target;\n        this.phase = phase;\n        this.handler = handler;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @param {?} name\n     * @param {?} target\n     * @param {?} phase\n     * @return {?}\n     */\n    BoundEventAst.calcFullName = function (name, target, phase) {\n        if (target) {\n            return target + \":\" + name;\n        }\n        else if (phase) {\n            return \"@\" + name + \".\" + phase;\n        }\n        else {\n            return name;\n        }\n    };\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    BoundEventAst.prototype.visit = function (visitor, context) {\n        return visitor.visitEvent(this, context);\n    };\n    Object.defineProperty(BoundEventAst.prototype, \"fullName\", {\n        /**\n         * @return {?}\n         */\n        get: function () { return BoundEventAst.calcFullName(this.name, this.target, this.phase); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(BoundEventAst.prototype, \"isAnimation\", {\n        /**\n         * @return {?}\n         */\n        get: function () { return !!this.phase; },\n        enumerable: true,\n        configurable: true\n    });\n    return BoundEventAst;\n}());\n/**\n * A reference declaration on an element (e.g. `let someName=\"expression\"`).\n */\nvar ReferenceAst = (function () {\n    /**\n     * @param {?} name\n     * @param {?} value\n     * @param {?} sourceSpan\n     */\n    function ReferenceAst(name, value, sourceSpan) {\n        this.name = name;\n        this.value = value;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    ReferenceAst.prototype.visit = function (visitor, context) {\n        return visitor.visitReference(this, context);\n    };\n    return ReferenceAst;\n}());\n/**\n * A variable declaration on a <ng-template> (e.g. `var-someName=\"someLocalName\"`).\n */\nvar VariableAst = (function () {\n    /**\n     * @param {?} name\n     * @param {?} value\n     * @param {?} sourceSpan\n     */\n    function VariableAst(name, value, sourceSpan) {\n        this.name = name;\n        this.value = value;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    VariableAst.prototype.visit = function (visitor, context) {\n        return visitor.visitVariable(this, context);\n    };\n    return VariableAst;\n}());\n/**\n * An element declaration in a template.\n */\nvar ElementAst = (function () {\n    /**\n     * @param {?} name\n     * @param {?} attrs\n     * @param {?} inputs\n     * @param {?} outputs\n     * @param {?} references\n     * @param {?} directives\n     * @param {?} providers\n     * @param {?} hasViewContainer\n     * @param {?} queryMatches\n     * @param {?} children\n     * @param {?} ngContentIndex\n     * @param {?} sourceSpan\n     * @param {?} endSourceSpan\n     */\n    function ElementAst(name, attrs, inputs, outputs, references, directives, providers, hasViewContainer, queryMatches, children, ngContentIndex, sourceSpan, endSourceSpan) {\n        this.name = name;\n        this.attrs = attrs;\n        this.inputs = inputs;\n        this.outputs = outputs;\n        this.references = references;\n        this.directives = directives;\n        this.providers = providers;\n        this.hasViewContainer = hasViewContainer;\n        this.queryMatches = queryMatches;\n        this.children = children;\n        this.ngContentIndex = ngContentIndex;\n        this.sourceSpan = sourceSpan;\n        this.endSourceSpan = endSourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    ElementAst.prototype.visit = function (visitor, context) {\n        return visitor.visitElement(this, context);\n    };\n    return ElementAst;\n}());\n/**\n * A `<ng-template>` element included in an Angular template.\n */\nvar EmbeddedTemplateAst = (function () {\n    /**\n     * @param {?} attrs\n     * @param {?} outputs\n     * @param {?} references\n     * @param {?} variables\n     * @param {?} directives\n     * @param {?} providers\n     * @param {?} hasViewContainer\n     * @param {?} queryMatches\n     * @param {?} children\n     * @param {?} ngContentIndex\n     * @param {?} sourceSpan\n     */\n    function EmbeddedTemplateAst(attrs, outputs, references, variables, directives, providers, hasViewContainer, queryMatches, children, ngContentIndex, sourceSpan) {\n        this.attrs = attrs;\n        this.outputs = outputs;\n        this.references = references;\n        this.variables = variables;\n        this.directives = directives;\n        this.providers = providers;\n        this.hasViewContainer = hasViewContainer;\n        this.queryMatches = queryMatches;\n        this.children = children;\n        this.ngContentIndex = ngContentIndex;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    EmbeddedTemplateAst.prototype.visit = function (visitor, context) {\n        return visitor.visitEmbeddedTemplate(this, context);\n    };\n    return EmbeddedTemplateAst;\n}());\n/**\n * A directive property with a bound value (e.g. `*ngIf=\"condition\").\n */\nvar BoundDirectivePropertyAst = (function () {\n    /**\n     * @param {?} directiveName\n     * @param {?} templateName\n     * @param {?} value\n     * @param {?} sourceSpan\n     */\n    function BoundDirectivePropertyAst(directiveName, templateName, value, sourceSpan) {\n        this.directiveName = directiveName;\n        this.templateName = templateName;\n        this.value = value;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    BoundDirectivePropertyAst.prototype.visit = function (visitor, context) {\n        return visitor.visitDirectiveProperty(this, context);\n    };\n    return BoundDirectivePropertyAst;\n}());\n/**\n * A directive declared on an element.\n */\nvar DirectiveAst = (function () {\n    /**\n     * @param {?} directive\n     * @param {?} inputs\n     * @param {?} hostProperties\n     * @param {?} hostEvents\n     * @param {?} contentQueryStartId\n     * @param {?} sourceSpan\n     */\n    function DirectiveAst(directive, inputs, hostProperties, hostEvents, contentQueryStartId, sourceSpan) {\n        this.directive = directive;\n        this.inputs = inputs;\n        this.hostProperties = hostProperties;\n        this.hostEvents = hostEvents;\n        this.contentQueryStartId = contentQueryStartId;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    DirectiveAst.prototype.visit = function (visitor, context) {\n        return visitor.visitDirective(this, context);\n    };\n    return DirectiveAst;\n}());\n/**\n * A provider declared on an element\n */\nvar ProviderAst = (function () {\n    /**\n     * @param {?} token\n     * @param {?} multiProvider\n     * @param {?} eager\n     * @param {?} providers\n     * @param {?} providerType\n     * @param {?} lifecycleHooks\n     * @param {?} sourceSpan\n     */\n    function ProviderAst(token, multiProvider, eager, providers, providerType, lifecycleHooks, sourceSpan) {\n        this.token = token;\n        this.multiProvider = multiProvider;\n        this.eager = eager;\n        this.providers = providers;\n        this.providerType = providerType;\n        this.lifecycleHooks = lifecycleHooks;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    ProviderAst.prototype.visit = function (visitor, context) {\n        // No visit method in the visitor for now...\n        return null;\n    };\n    return ProviderAst;\n}());\nvar ProviderAstType = {};\nProviderAstType.PublicService = 0;\nProviderAstType.PrivateService = 1;\nProviderAstType.Component = 2;\nProviderAstType.Directive = 3;\nProviderAstType.Builtin = 4;\nProviderAstType[ProviderAstType.PublicService] = \"PublicService\";\nProviderAstType[ProviderAstType.PrivateService] = \"PrivateService\";\nProviderAstType[ProviderAstType.Component] = \"Component\";\nProviderAstType[ProviderAstType.Directive] = \"Directive\";\nProviderAstType[ProviderAstType.Builtin] = \"Builtin\";\n/**\n * Position where content is to be projected (instance of `<ng-content>` in a template).\n */\nvar NgContentAst = (function () {\n    /**\n     * @param {?} index\n     * @param {?} ngContentIndex\n     * @param {?} sourceSpan\n     */\n    function NgContentAst(index, ngContentIndex, sourceSpan) {\n        this.index = index;\n        this.ngContentIndex = ngContentIndex;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    NgContentAst.prototype.visit = function (visitor, context) {\n        return visitor.visitNgContent(this, context);\n    };\n    return NgContentAst;\n}());\nvar PropertyBindingType = {};\nPropertyBindingType.Property = 0;\nPropertyBindingType.Attribute = 1;\nPropertyBindingType.Class = 2;\nPropertyBindingType.Style = 3;\nPropertyBindingType.Animation = 4;\nPropertyBindingType[PropertyBindingType.Property] = \"Property\";\nPropertyBindingType[PropertyBindingType.Attribute] = \"Attribute\";\nPropertyBindingType[PropertyBindingType.Class] = \"Class\";\nPropertyBindingType[PropertyBindingType.Style] = \"Style\";\nPropertyBindingType[PropertyBindingType.Animation] = \"Animation\";\n/**\n * Visit every node in a list of {\\@link TemplateAst}s with the given {\\@link TemplateAstVisitor}.\n * @param {?} visitor\n * @param {?} asts\n * @param {?=} context\n * @return {?}\n */\nfunction templateVisitAll(visitor, asts, context) {\n    if (context === void 0) { context = null; }\n    var /** @type {?} */ result = [];\n    var /** @type {?} */ visit = visitor.visit ?\n        function (ast) { return visitor.visit(ast, context) || ast.visit(visitor, context); } :\n        function (ast) { return ast.visit(visitor, context); };\n    asts.forEach(function (ast) {\n        var /** @type {?} */ astResult = visit(ast);\n        if (astResult) {\n            result.push(astResult);\n        }\n    });\n    return result;\n}\n/**\n * A token representing the a reference to a static type.\n *\n * This token is unique for a filePath and name and can be used as a hash table key.\n */\nvar StaticSymbol = (function () {\n    /**\n     * @param {?} filePath\n     * @param {?} name\n     * @param {?} members\n     */\n    function StaticSymbol(filePath, name, members) {\n        this.filePath = filePath;\n        this.name = name;\n        this.members = members;\n    }\n    /**\n     * @return {?}\n     */\n    StaticSymbol.prototype.assertNoMembers = function () {\n        if (this.members.length) {\n            throw new Error(\"Illegal state: symbol without members expected, but got \" + JSON.stringify(this) + \".\");\n        }\n    };\n    return StaticSymbol;\n}());\n/**\n * A cache of static symbol used by the StaticReflector to return the same symbol for the\n * same symbol values.\n */\nvar StaticSymbolCache = (function () {\n    function StaticSymbolCache() {\n        this.cache = new Map();\n    }\n    /**\n     * @param {?} declarationFile\n     * @param {?} name\n     * @param {?=} members\n     * @return {?}\n     */\n    StaticSymbolCache.prototype.get = function (declarationFile, name, members) {\n        members = members || [];\n        var /** @type {?} */ memberSuffix = members.length ? \".\" + members.join('.') : '';\n        var /** @type {?} */ key = \"\\\"\" + declarationFile + \"\\\".\" + name + memberSuffix;\n        var /** @type {?} */ result = this.cache.get(key);\n        if (!result) {\n            result = new StaticSymbol(declarationFile, name, members);\n            this.cache.set(key, result);\n        }\n        return result;\n    };\n    return StaticSymbolCache;\n}());\nvar TagContentType = {};\nTagContentType.RAW_TEXT = 0;\nTagContentType.ESCAPABLE_RAW_TEXT = 1;\nTagContentType.PARSABLE_DATA = 2;\nTagContentType[TagContentType.RAW_TEXT] = \"RAW_TEXT\";\nTagContentType[TagContentType.ESCAPABLE_RAW_TEXT] = \"ESCAPABLE_RAW_TEXT\";\nTagContentType[TagContentType.PARSABLE_DATA] = \"PARSABLE_DATA\";\n/**\n * @param {?} elementName\n * @return {?}\n */\nfunction splitNsName(elementName) {\n    if (elementName[0] != ':') {\n        return [null, elementName];\n    }\n    var /** @type {?} */ colonIndex = elementName.indexOf(':', 1);\n    if (colonIndex == -1) {\n        throw new Error(\"Unsupported format \\\"\" + elementName + \"\\\" expecting \\\":namespace:name\\\"\");\n    }\n    return [elementName.slice(1, colonIndex), elementName.slice(colonIndex + 1)];\n}\n/**\n * @param {?} fullName\n * @return {?}\n */\nfunction getNsPrefix(fullName) {\n    return fullName === null ? null : splitNsName(fullName)[0];\n}\n/**\n * @param {?} prefix\n * @param {?} localName\n * @return {?}\n */\nfunction mergeNsAndName(prefix, localName) {\n    return prefix ? \":\" + prefix + \":\" + localName : localName;\n}\n// see http://www.w3.org/TR/html51/syntax.html#named-character-references\n// see https://html.spec.whatwg.org/multipage/entities.json\n// This list is not exhaustive to keep the compiler footprint low.\n// The `&#123;` / `&#x1ab;` syntax should be used when the named character reference does not exist.\nvar NAMED_ENTITIES = {\n    'Aacute': '\\u00C1',\n    'aacute': '\\u00E1',\n    'Acirc': '\\u00C2',\n    'acirc': '\\u00E2',\n    'acute': '\\u00B4',\n    'AElig': '\\u00C6',\n    'aelig': '\\u00E6',\n    'Agrave': '\\u00C0',\n    'agrave': '\\u00E0',\n    'alefsym': '\\u2135',\n    'Alpha': '\\u0391',\n    'alpha': '\\u03B1',\n    'amp': '&',\n    'and': '\\u2227',\n    'ang': '\\u2220',\n    'apos': '\\u0027',\n    'Aring': '\\u00C5',\n    'aring': '\\u00E5',\n    'asymp': '\\u2248',\n    'Atilde': '\\u00C3',\n    'atilde': '\\u00E3',\n    'Auml': '\\u00C4',\n    'auml': '\\u00E4',\n    'bdquo': '\\u201E',\n    'Beta': '\\u0392',\n    'beta': '\\u03B2',\n    'brvbar': '\\u00A6',\n    'bull': '\\u2022',\n    'cap': '\\u2229',\n    'Ccedil': '\\u00C7',\n    'ccedil': '\\u00E7',\n    'cedil': '\\u00B8',\n    'cent': '\\u00A2',\n    'Chi': '\\u03A7',\n    'chi': '\\u03C7',\n    'circ': '\\u02C6',\n    'clubs': '\\u2663',\n    'cong': '\\u2245',\n    'copy': '\\u00A9',\n    'crarr': '\\u21B5',\n    'cup': '\\u222A',\n    'curren': '\\u00A4',\n    'dagger': '\\u2020',\n    'Dagger': '\\u2021',\n    'darr': '\\u2193',\n    'dArr': '\\u21D3',\n    'deg': '\\u00B0',\n    'Delta': '\\u0394',\n    'delta': '\\u03B4',\n    'diams': '\\u2666',\n    'divide': '\\u00F7',\n    'Eacute': '\\u00C9',\n    'eacute': '\\u00E9',\n    'Ecirc': '\\u00CA',\n    'ecirc': '\\u00EA',\n    'Egrave': '\\u00C8',\n    'egrave': '\\u00E8',\n    'empty': '\\u2205',\n    'emsp': '\\u2003',\n    'ensp': '\\u2002',\n    'Epsilon': '\\u0395',\n    'epsilon': '\\u03B5',\n    'equiv': '\\u2261',\n    'Eta': '\\u0397',\n    'eta': '\\u03B7',\n    'ETH': '\\u00D0',\n    'eth': '\\u00F0',\n    'Euml': '\\u00CB',\n    'euml': '\\u00EB',\n    'euro': '\\u20AC',\n    'exist': '\\u2203',\n    'fnof': '\\u0192',\n    'forall': '\\u2200',\n    'frac12': '\\u00BD',\n    'frac14': '\\u00BC',\n    'frac34': '\\u00BE',\n    'frasl': '\\u2044',\n    'Gamma': '\\u0393',\n    'gamma': '\\u03B3',\n    'ge': '\\u2265',\n    'gt': '>',\n    'harr': '\\u2194',\n    'hArr': '\\u21D4',\n    'hearts': '\\u2665',\n    'hellip': '\\u2026',\n    'Iacute': '\\u00CD',\n    'iacute': '\\u00ED',\n    'Icirc': '\\u00CE',\n    'icirc': '\\u00EE',\n    'iexcl': '\\u00A1',\n    'Igrave': '\\u00CC',\n    'igrave': '\\u00EC',\n    'image': '\\u2111',\n    'infin': '\\u221E',\n    'int': '\\u222B',\n    'Iota': '\\u0399',\n    'iota': '\\u03B9',\n    'iquest': '\\u00BF',\n    'isin': '\\u2208',\n    'Iuml': '\\u00CF',\n    'iuml': '\\u00EF',\n    'Kappa': '\\u039A',\n    'kappa': '\\u03BA',\n    'Lambda': '\\u039B',\n    'lambda': '\\u03BB',\n    'lang': '\\u27E8',\n    'laquo': '\\u00AB',\n    'larr': '\\u2190',\n    'lArr': '\\u21D0',\n    'lceil': '\\u2308',\n    'ldquo': '\\u201C',\n    'le': '\\u2264',\n    'lfloor': '\\u230A',\n    'lowast': '\\u2217',\n    'loz': '\\u25CA',\n    'lrm': '\\u200E',\n    'lsaquo': '\\u2039',\n    'lsquo': '\\u2018',\n    'lt': '<',\n    'macr': '\\u00AF',\n    'mdash': '\\u2014',\n    'micro': '\\u00B5',\n    'middot': '\\u00B7',\n    'minus': '\\u2212',\n    'Mu': '\\u039C',\n    'mu': '\\u03BC',\n    'nabla': '\\u2207',\n    'nbsp': '\\u00A0',\n    'ndash': '\\u2013',\n    'ne': '\\u2260',\n    'ni': '\\u220B',\n    'not': '\\u00AC',\n    'notin': '\\u2209',\n    'nsub': '\\u2284',\n    'Ntilde': '\\u00D1',\n    'ntilde': '\\u00F1',\n    'Nu': '\\u039D',\n    'nu': '\\u03BD',\n    'Oacute': '\\u00D3',\n    'oacute': '\\u00F3',\n    'Ocirc': '\\u00D4',\n    'ocirc': '\\u00F4',\n    'OElig': '\\u0152',\n    'oelig': '\\u0153',\n    'Ograve': '\\u00D2',\n    'ograve': '\\u00F2',\n    'oline': '\\u203E',\n    'Omega': '\\u03A9',\n    'omega': '\\u03C9',\n    'Omicron': '\\u039F',\n    'omicron': '\\u03BF',\n    'oplus': '\\u2295',\n    'or': '\\u2228',\n    'ordf': '\\u00AA',\n    'ordm': '\\u00BA',\n    'Oslash': '\\u00D8',\n    'oslash': '\\u00F8',\n    'Otilde': '\\u00D5',\n    'otilde': '\\u00F5',\n    'otimes': '\\u2297',\n    'Ouml': '\\u00D6',\n    'ouml': '\\u00F6',\n    'para': '\\u00B6',\n    'permil': '\\u2030',\n    'perp': '\\u22A5',\n    'Phi': '\\u03A6',\n    'phi': '\\u03C6',\n    'Pi': '\\u03A0',\n    'pi': '\\u03C0',\n    'piv': '\\u03D6',\n    'plusmn': '\\u00B1',\n    'pound': '\\u00A3',\n    'prime': '\\u2032',\n    'Prime': '\\u2033',\n    'prod': '\\u220F',\n    'prop': '\\u221D',\n    'Psi': '\\u03A8',\n    'psi': '\\u03C8',\n    'quot': '\\u0022',\n    'radic': '\\u221A',\n    'rang': '\\u27E9',\n    'raquo': '\\u00BB',\n    'rarr': '\\u2192',\n    'rArr': '\\u21D2',\n    'rceil': '\\u2309',\n    'rdquo': '\\u201D',\n    'real': '\\u211C',\n    'reg': '\\u00AE',\n    'rfloor': '\\u230B',\n    'Rho': '\\u03A1',\n    'rho': '\\u03C1',\n    'rlm': '\\u200F',\n    'rsaquo': '\\u203A',\n    'rsquo': '\\u2019',\n    'sbquo': '\\u201A',\n    'Scaron': '\\u0160',\n    'scaron': '\\u0161',\n    'sdot': '\\u22C5',\n    'sect': '\\u00A7',\n    'shy': '\\u00AD',\n    'Sigma': '\\u03A3',\n    'sigma': '\\u03C3',\n    'sigmaf': '\\u03C2',\n    'sim': '\\u223C',\n    'spades': '\\u2660',\n    'sub': '\\u2282',\n    'sube': '\\u2286',\n    'sum': '\\u2211',\n    'sup': '\\u2283',\n    'sup1': '\\u00B9',\n    'sup2': '\\u00B2',\n    'sup3': '\\u00B3',\n    'supe': '\\u2287',\n    'szlig': '\\u00DF',\n    'Tau': '\\u03A4',\n    'tau': '\\u03C4',\n    'there4': '\\u2234',\n    'Theta': '\\u0398',\n    'theta': '\\u03B8',\n    'thetasym': '\\u03D1',\n    'thinsp': '\\u2009',\n    'THORN': '\\u00DE',\n    'thorn': '\\u00FE',\n    'tilde': '\\u02DC',\n    'times': '\\u00D7',\n    'trade': '\\u2122',\n    'Uacute': '\\u00DA',\n    'uacute': '\\u00FA',\n    'uarr': '\\u2191',\n    'uArr': '\\u21D1',\n    'Ucirc': '\\u00DB',\n    'ucirc': '\\u00FB',\n    'Ugrave': '\\u00D9',\n    'ugrave': '\\u00F9',\n    'uml': '\\u00A8',\n    'upsih': '\\u03D2',\n    'Upsilon': '\\u03A5',\n    'upsilon': '\\u03C5',\n    'Uuml': '\\u00DC',\n    'uuml': '\\u00FC',\n    'weierp': '\\u2118',\n    'Xi': '\\u039E',\n    'xi': '\\u03BE',\n    'Yacute': '\\u00DD',\n    'yacute': '\\u00FD',\n    'yen': '\\u00A5',\n    'yuml': '\\u00FF',\n    'Yuml': '\\u0178',\n    'Zeta': '\\u0396',\n    'zeta': '\\u03B6',\n    'zwj': '\\u200D',\n    'zwnj': '\\u200C',\n};\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar HtmlTagDefinition = (function () {\n    /**\n     * @param {?=} __0\n     */\n    function HtmlTagDefinition(_a) {\n        var _b = _a === void 0 ? {} : _a, closedByChildren = _b.closedByChildren, requiredParents = _b.requiredParents, implicitNamespacePrefix = _b.implicitNamespacePrefix, _c = _b.contentType, contentType = _c === void 0 ? TagContentType.PARSABLE_DATA : _c, _d = _b.closedByParent, closedByParent = _d === void 0 ? false : _d, _e = _b.isVoid, isVoid = _e === void 0 ? false : _e, _f = _b.ignoreFirstLf, ignoreFirstLf = _f === void 0 ? false : _f;\n        var _this = this;\n        this.closedByChildren = {};\n        this.closedByParent = false;\n        this.canSelfClose = false;\n        if (closedByChildren && closedByChildren.length > 0) {\n            closedByChildren.forEach(function (tagName) { return _this.closedByChildren[tagName] = true; });\n        }\n        this.isVoid = isVoid;\n        this.closedByParent = closedByParent || isVoid;\n        if (requiredParents && requiredParents.length > 0) {\n            this.requiredParents = {};\n            // The first parent is the list is automatically when none of the listed parents are present\n            this.parentToAdd = requiredParents[0];\n            requiredParents.forEach(function (tagName) { return _this.requiredParents[tagName] = true; });\n        }\n        this.implicitNamespacePrefix = implicitNamespacePrefix;\n        this.contentType = contentType;\n        this.ignoreFirstLf = ignoreFirstLf;\n    }\n    /**\n     * @param {?} currentParent\n     * @return {?}\n     */\n    HtmlTagDefinition.prototype.requireExtraParent = function (currentParent) {\n        if (!this.requiredParents) {\n            return false;\n        }\n        if (!currentParent) {\n            return true;\n        }\n        var /** @type {?} */ lcParent = currentParent.toLowerCase();\n        var /** @type {?} */ isParentTemplate = lcParent === 'template' || currentParent === 'ng-template';\n        return !isParentTemplate && this.requiredParents[lcParent] != true;\n    };\n    /**\n     * @param {?} name\n     * @return {?}\n     */\n    HtmlTagDefinition.prototype.isClosedByChild = function (name) {\n        return this.isVoid || name.toLowerCase() in this.closedByChildren;\n    };\n    return HtmlTagDefinition;\n}());\n// see http://www.w3.org/TR/html51/syntax.html#optional-tags\n// This implementation does not fully conform to the HTML5 spec.\nvar TAG_DEFINITIONS = {\n    'base': new HtmlTagDefinition({ isVoid: true }),\n    'meta': new HtmlTagDefinition({ isVoid: true }),\n    'area': new HtmlTagDefinition({ isVoid: true }),\n    'embed': new HtmlTagDefinition({ isVoid: true }),\n    'link': new HtmlTagDefinition({ isVoid: true }),\n    'img': new HtmlTagDefinition({ isVoid: true }),\n    'input': new HtmlTagDefinition({ isVoid: true }),\n    'param': new HtmlTagDefinition({ isVoid: true }),\n    'hr': new HtmlTagDefinition({ isVoid: true }),\n    'br': new HtmlTagDefinition({ isVoid: true }),\n    'source': new HtmlTagDefinition({ isVoid: true }),\n    'track': new HtmlTagDefinition({ isVoid: true }),\n    'wbr': new HtmlTagDefinition({ isVoid: true }),\n    'p': new HtmlTagDefinition({\n        closedByChildren: [\n            'address', 'article', 'aside', 'blockquote', 'div', 'dl', 'fieldset', 'footer', 'form',\n            'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr',\n            'main', 'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'\n        ],\n        closedByParent: true\n    }),\n    'thead': new HtmlTagDefinition({ closedByChildren: ['tbody', 'tfoot'] }),\n    'tbody': new HtmlTagDefinition({ closedByChildren: ['tbody', 'tfoot'], closedByParent: true }),\n    'tfoot': new HtmlTagDefinition({ closedByChildren: ['tbody'], closedByParent: true }),\n    'tr': new HtmlTagDefinition({\n        closedByChildren: ['tr'],\n        requiredParents: ['tbody', 'tfoot', 'thead'],\n        closedByParent: true\n    }),\n    'td': new HtmlTagDefinition({ closedByChildren: ['td', 'th'], closedByParent: true }),\n    'th': new HtmlTagDefinition({ closedByChildren: ['td', 'th'], closedByParent: true }),\n    'col': new HtmlTagDefinition({ requiredParents: ['colgroup'], isVoid: true }),\n    'svg': new HtmlTagDefinition({ implicitNamespacePrefix: 'svg' }),\n    'math': new HtmlTagDefinition({ implicitNamespacePrefix: 'math' }),\n    'li': new HtmlTagDefinition({ closedByChildren: ['li'], closedByParent: true }),\n    'dt': new HtmlTagDefinition({ closedByChildren: ['dt', 'dd'] }),\n    'dd': new HtmlTagDefinition({ closedByChildren: ['dt', 'dd'], closedByParent: true }),\n    'rb': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),\n    'rt': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),\n    'rtc': new HtmlTagDefinition({ closedByChildren: ['rb', 'rtc', 'rp'], closedByParent: true }),\n    'rp': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),\n    'optgroup': new HtmlTagDefinition({ closedByChildren: ['optgroup'], closedByParent: true }),\n    'option': new HtmlTagDefinition({ closedByChildren: ['option', 'optgroup'], closedByParent: true }),\n    'pre': new HtmlTagDefinition({ ignoreFirstLf: true }),\n    'listing': new HtmlTagDefinition({ ignoreFirstLf: true }),\n    'style': new HtmlTagDefinition({ contentType: TagContentType.RAW_TEXT }),\n    'script': new HtmlTagDefinition({ contentType: TagContentType.RAW_TEXT }),\n    'title': new HtmlTagDefinition({ contentType: TagContentType.ESCAPABLE_RAW_TEXT }),\n    'textarea': new HtmlTagDefinition({ contentType: TagContentType.ESCAPABLE_RAW_TEXT, ignoreFirstLf: true }),\n};\nvar _DEFAULT_TAG_DEFINITION = new HtmlTagDefinition();\n/**\n * @param {?} tagName\n * @return {?}\n */\nfunction getHtmlTagDefinition(tagName) {\n    return TAG_DEFINITIONS[tagName.toLowerCase()] || _DEFAULT_TAG_DEFINITION;\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar _SELECTOR_REGEXP = new RegExp('(\\\\:not\\\\()|' +\n    '([-\\\\w]+)|' +\n    '(?:\\\\.([-\\\\w]+))|' +\n    // \"-\" should appear first in the regexp below as FF31 parses \"[.-\\w]\" as a range\n    '(?:\\\\[([-.\\\\w*]+)(?:=([\\\"\\']?)([^\\\\]\\\"\\']*)\\\\5)?\\\\])|' +\n    // \"[name=\"value\"]\",\n    // \"[name='value']\"\n    '(\\\\))|' +\n    '(\\\\s*,\\\\s*)', // \",\"\n'g');\n/**\n * A css selector contains an element name,\n * css classes and attribute/value pairs with the purpose\n * of selecting subsets out of them.\n */\nvar CssSelector = (function () {\n    function CssSelector() {\n        this.element = null;\n        this.classNames = [];\n        this.attrs = [];\n        this.notSelectors = [];\n    }\n    /**\n     * @param {?} selector\n     * @return {?}\n     */\n    CssSelector.parse = function (selector) {\n        var /** @type {?} */ results = [];\n        var /** @type {?} */ _addResult = function (res, cssSel) {\n            if (cssSel.notSelectors.length > 0 && !cssSel.element && cssSel.classNames.length == 0 &&\n                cssSel.attrs.length == 0) {\n                cssSel.element = '*';\n            }\n            res.push(cssSel);\n        };\n        var /** @type {?} */ cssSelector = new CssSelector();\n        var /** @type {?} */ match;\n        var /** @type {?} */ current = cssSelector;\n        var /** @type {?} */ inNot = false;\n        _SELECTOR_REGEXP.lastIndex = 0;\n        while (match = _SELECTOR_REGEXP.exec(selector)) {\n            if (match[1]) {\n                if (inNot) {\n                    throw new Error('Nesting :not is not allowed in a selector');\n                }\n                inNot = true;\n                current = new CssSelector();\n                cssSelector.notSelectors.push(current);\n            }\n            if (match[2]) {\n                current.setElement(match[2]);\n            }\n            if (match[3]) {\n                current.addClassName(match[3]);\n            }\n            if (match[4]) {\n                current.addAttribute(match[4], match[6]);\n            }\n            if (match[7]) {\n                inNot = false;\n                current = cssSelector;\n            }\n            if (match[8]) {\n                if (inNot) {\n                    throw new Error('Multiple selectors in :not are not supported');\n                }\n                _addResult(results, cssSelector);\n                cssSelector = current = new CssSelector();\n            }\n        }\n        _addResult(results, cssSelector);\n        return results;\n    };\n    /**\n     * @return {?}\n     */\n    CssSelector.prototype.isElementSelector = function () {\n        return this.hasElementSelector() && this.classNames.length == 0 && this.attrs.length == 0 &&\n            this.notSelectors.length === 0;\n    };\n    /**\n     * @return {?}\n     */\n    CssSelector.prototype.hasElementSelector = function () { return !!this.element; };\n    /**\n     * @param {?=} element\n     * @return {?}\n     */\n    CssSelector.prototype.setElement = function (element) {\n        if (element === void 0) { element = null; }\n        this.element = element;\n    };\n    /**\n     * Gets a template string for an element that matches the selector.\n     * @return {?}\n     */\n    CssSelector.prototype.getMatchingElementTemplate = function () {\n        var /** @type {?} */ tagName = this.element || 'div';\n        var /** @type {?} */ classAttr = this.classNames.length > 0 ? \" class=\\\"\" + this.classNames.join(' ') + \"\\\"\" : '';\n        var /** @type {?} */ attrs = '';\n        for (var /** @type {?} */ i = 0; i < this.attrs.length; i += 2) {\n            var /** @type {?} */ attrName = this.attrs[i];\n            var /** @type {?} */ attrValue = this.attrs[i + 1] !== '' ? \"=\\\"\" + this.attrs[i + 1] + \"\\\"\" : '';\n            attrs += \" \" + attrName + attrValue;\n        }\n        return getHtmlTagDefinition(tagName).isVoid ? \"<\" + tagName + classAttr + attrs + \"/>\" :\n            \"<\" + tagName + classAttr + attrs + \"></\" + tagName + \">\";\n    };\n    /**\n     * @param {?} name\n     * @param {?=} value\n     * @return {?}\n     */\n    CssSelector.prototype.addAttribute = function (name, value) {\n        if (value === void 0) { value = ''; }\n        this.attrs.push(name, value && value.toLowerCase() || '');\n    };\n    /**\n     * @param {?} name\n     * @return {?}\n     */\n    CssSelector.prototype.addClassName = function (name) { this.classNames.push(name.toLowerCase()); };\n    /**\n     * @return {?}\n     */\n    CssSelector.prototype.toString = function () {\n        var /** @type {?} */ res = this.element || '';\n        if (this.classNames) {\n            this.classNames.forEach(function (klass) { return res += \".\" + klass; });\n        }\n        if (this.attrs) {\n            for (var /** @type {?} */ i = 0; i < this.attrs.length; i += 2) {\n                var /** @type {?} */ name = this.attrs[i];\n                var /** @type {?} */ value = this.attrs[i + 1];\n                res += \"[\" + name + (value ? '=' + value : '') + \"]\";\n            }\n        }\n        this.notSelectors.forEach(function (notSelector) { return res += \":not(\" + notSelector + \")\"; });\n        return res;\n    };\n    return CssSelector;\n}());\n/**\n * Reads a list of CssSelectors and allows to calculate which ones\n * are contained in a given CssSelector.\n */\nvar SelectorMatcher = (function () {\n    function SelectorMatcher() {\n        this._elementMap = new Map();\n        this._elementPartialMap = new Map();\n        this._classMap = new Map();\n        this._classPartialMap = new Map();\n        this._attrValueMap = new Map();\n        this._attrValuePartialMap = new Map();\n        this._listContexts = [];\n    }\n    /**\n     * @param {?} notSelectors\n     * @return {?}\n     */\n    SelectorMatcher.createNotMatcher = function (notSelectors) {\n        var /** @type {?} */ notMatcher = new SelectorMatcher();\n        notMatcher.addSelectables(notSelectors, null);\n        return notMatcher;\n    };\n    /**\n     * @param {?} cssSelectors\n     * @param {?=} callbackCtxt\n     * @return {?}\n     */\n    SelectorMatcher.prototype.addSelectables = function (cssSelectors, callbackCtxt) {\n        var /** @type {?} */ listContext = null;\n        if (cssSelectors.length > 1) {\n            listContext = new SelectorListContext(cssSelectors);\n            this._listContexts.push(listContext);\n        }\n        for (var /** @type {?} */ i = 0; i < cssSelectors.length; i++) {\n            this._addSelectable(cssSelectors[i], callbackCtxt, listContext);\n        }\n    };\n    /**\n     * Add an object that can be found later on by calling `match`.\n     * @param {?} cssSelector A css selector\n     * @param {?} callbackCtxt An opaque object that will be given to the callback of the `match` function\n     * @param {?} listContext\n     * @return {?}\n     */\n    SelectorMatcher.prototype._addSelectable = function (cssSelector, callbackCtxt, listContext) {\n        var /** @type {?} */ matcher = this;\n        var /** @type {?} */ element = cssSelector.element;\n        var /** @type {?} */ classNames = cssSelector.classNames;\n        var /** @type {?} */ attrs = cssSelector.attrs;\n        var /** @type {?} */ selectable = new SelectorContext(cssSelector, callbackCtxt, listContext);\n        if (element) {\n            var /** @type {?} */ isTerminal = attrs.length === 0 && classNames.length === 0;\n            if (isTerminal) {\n                this._addTerminal(matcher._elementMap, element, selectable);\n            }\n            else {\n                matcher = this._addPartial(matcher._elementPartialMap, element);\n            }\n        }\n        if (classNames) {\n            for (var /** @type {?} */ i = 0; i < classNames.length; i++) {\n                var /** @type {?} */ isTerminal = attrs.length === 0 && i === classNames.length - 1;\n                var /** @type {?} */ className = classNames[i];\n                if (isTerminal) {\n                    this._addTerminal(matcher._classMap, className, selectable);\n                }\n                else {\n                    matcher = this._addPartial(matcher._classPartialMap, className);\n                }\n            }\n        }\n        if (attrs) {\n            for (var /** @type {?} */ i = 0; i < attrs.length; i += 2) {\n                var /** @type {?} */ isTerminal = i === attrs.length - 2;\n                var /** @type {?} */ name = attrs[i];\n                var /** @type {?} */ value = attrs[i + 1];\n                if (isTerminal) {\n                    var /** @type {?} */ terminalMap = matcher._attrValueMap;\n                    var /** @type {?} */ terminalValuesMap = terminalMap.get(name);\n                    if (!terminalValuesMap) {\n                        terminalValuesMap = new Map();\n                        terminalMap.set(name, terminalValuesMap);\n                    }\n                    this._addTerminal(terminalValuesMap, value, selectable);\n                }\n                else {\n                    var /** @type {?} */ partialMap = matcher._attrValuePartialMap;\n                    var /** @type {?} */ partialValuesMap = partialMap.get(name);\n                    if (!partialValuesMap) {\n                        partialValuesMap = new Map();\n                        partialMap.set(name, partialValuesMap);\n                    }\n                    matcher = this._addPartial(partialValuesMap, value);\n                }\n            }\n        }\n    };\n    /**\n     * @param {?} map\n     * @param {?} name\n     * @param {?} selectable\n     * @return {?}\n     */\n    SelectorMatcher.prototype._addTerminal = function (map, name, selectable) {\n        var /** @type {?} */ terminalList = map.get(name);\n        if (!terminalList) {\n            terminalList = [];\n            map.set(name, terminalList);\n        }\n        terminalList.push(selectable);\n    };\n    /**\n     * @param {?} map\n     * @param {?} name\n     * @return {?}\n     */\n    SelectorMatcher.prototype._addPartial = function (map, name) {\n        var /** @type {?} */ matcher = map.get(name);\n        if (!matcher) {\n            matcher = new SelectorMatcher();\n            map.set(name, matcher);\n        }\n        return matcher;\n    };\n    /**\n     * Find the objects that have been added via `addSelectable`\n     * whose css selector is contained in the given css selector.\n     * @param {?} cssSelector A css selector\n     * @param {?} matchedCallback This callback will be called with the object handed into `addSelectable`\n     * @return {?} boolean true if a match was found\n     */\n    SelectorMatcher.prototype.match = function (cssSelector, matchedCallback) {\n        var /** @type {?} */ result = false;\n        var /** @type {?} */ element = cssSelector.element;\n        var /** @type {?} */ classNames = cssSelector.classNames;\n        var /** @type {?} */ attrs = cssSelector.attrs;\n        for (var /** @type {?} */ i = 0; i < this._listContexts.length; i++) {\n            this._listContexts[i].alreadyMatched = false;\n        }\n        result = this._matchTerminal(this._elementMap, element, cssSelector, matchedCallback) || result;\n        result = this._matchPartial(this._elementPartialMap, element, cssSelector, matchedCallback) ||\n            result;\n        if (classNames) {\n            for (var /** @type {?} */ i = 0; i < classNames.length; i++) {\n                var /** @type {?} */ className = classNames[i];\n                result =\n                    this._matchTerminal(this._classMap, className, cssSelector, matchedCallback) || result;\n                result =\n                    this._matchPartial(this._classPartialMap, className, cssSelector, matchedCallback) ||\n                        result;\n            }\n        }\n        if (attrs) {\n            for (var /** @type {?} */ i = 0; i < attrs.length; i += 2) {\n                var /** @type {?} */ name = attrs[i];\n                var /** @type {?} */ value = attrs[i + 1];\n                var /** @type {?} */ terminalValuesMap = this._attrValueMap.get(name);\n                if (value) {\n                    result =\n                        this._matchTerminal(terminalValuesMap, '', cssSelector, matchedCallback) || result;\n                }\n                result =\n                    this._matchTerminal(terminalValuesMap, value, cssSelector, matchedCallback) || result;\n                var /** @type {?} */ partialValuesMap = this._attrValuePartialMap.get(name);\n                if (value) {\n                    result = this._matchPartial(partialValuesMap, '', cssSelector, matchedCallback) || result;\n                }\n                result =\n                    this._matchPartial(partialValuesMap, value, cssSelector, matchedCallback) || result;\n            }\n        }\n        return result;\n    };\n    /**\n     * \\@internal\n     * @param {?} map\n     * @param {?} name\n     * @param {?} cssSelector\n     * @param {?} matchedCallback\n     * @return {?}\n     */\n    SelectorMatcher.prototype._matchTerminal = function (map, name, cssSelector, matchedCallback) {\n        if (!map || typeof name !== 'string') {\n            return false;\n        }\n        var /** @type {?} */ selectables = map.get(name) || [];\n        var /** @type {?} */ starSelectables = map.get('*');\n        if (starSelectables) {\n            selectables = selectables.concat(starSelectables);\n        }\n        if (selectables.length === 0) {\n            return false;\n        }\n        var /** @type {?} */ selectable;\n        var /** @type {?} */ result = false;\n        for (var /** @type {?} */ i = 0; i < selectables.length; i++) {\n            selectable = selectables[i];\n            result = selectable.finalize(cssSelector, matchedCallback) || result;\n        }\n        return result;\n    };\n    /**\n     * \\@internal\n     * @param {?} map\n     * @param {?} name\n     * @param {?} cssSelector\n     * @param {?} matchedCallback\n     * @return {?}\n     */\n    SelectorMatcher.prototype._matchPartial = function (map, name, cssSelector, matchedCallback) {\n        if (!map || typeof name !== 'string') {\n            return false;\n        }\n        var /** @type {?} */ nestedSelector = map.get(name);\n        if (!nestedSelector) {\n            return false;\n        }\n        // TODO(perf): get rid of recursion and measure again\n        // TODO(perf): don't pass the whole selector into the recursion,\n        // but only the not processed parts\n        return nestedSelector.match(cssSelector, matchedCallback);\n    };\n    return SelectorMatcher;\n}());\nvar SelectorListContext = (function () {\n    /**\n     * @param {?} selectors\n     */\n    function SelectorListContext(selectors) {\n        this.selectors = selectors;\n        this.alreadyMatched = false;\n    }\n    return SelectorListContext;\n}());\nvar SelectorContext = (function () {\n    /**\n     * @param {?} selector\n     * @param {?} cbContext\n     * @param {?} listContext\n     */\n    function SelectorContext(selector, cbContext, listContext) {\n        this.selector = selector;\n        this.cbContext = cbContext;\n        this.listContext = listContext;\n        this.notSelectors = selector.notSelectors;\n    }\n    /**\n     * @param {?} cssSelector\n     * @param {?} callback\n     * @return {?}\n     */\n    SelectorContext.prototype.finalize = function (cssSelector, callback) {\n        var /** @type {?} */ result = true;\n        if (this.notSelectors.length > 0 && (!this.listContext || !this.listContext.alreadyMatched)) {\n            var /** @type {?} */ notMatcher = SelectorMatcher.createNotMatcher(this.notSelectors);\n            result = !notMatcher.match(cssSelector, null);\n        }\n        if (result && callback && (!this.listContext || !this.listContext.alreadyMatched)) {\n            if (this.listContext) {\n                this.listContext.alreadyMatched = true;\n            }\n            callback(this.selector, this.cbContext);\n        }\n        return result;\n    };\n    return SelectorContext;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar MODULE_SUFFIX = '';\nvar DASH_CASE_REGEXP = /-+([a-z0-9])/g;\n/**\n * @param {?} input\n * @return {?}\n */\n/**\n * @param {?} input\n * @return {?}\n */\nfunction dashCaseToCamelCase(input) {\n    return input.replace(DASH_CASE_REGEXP, function () {\n        var m = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            m[_i] = arguments[_i];\n        }\n        return m[1].toUpperCase();\n    });\n}\n/**\n * @param {?} input\n * @param {?} defaultValues\n * @return {?}\n */\nfunction splitAtColon(input, defaultValues) {\n    return _splitAt(input, ':', defaultValues);\n}\n/**\n * @param {?} input\n * @param {?} defaultValues\n * @return {?}\n */\nfunction splitAtPeriod(input, defaultValues) {\n    return _splitAt(input, '.', defaultValues);\n}\n/**\n * @param {?} input\n * @param {?} character\n * @param {?} defaultValues\n * @return {?}\n */\nfunction _splitAt(input, character, defaultValues) {\n    var /** @type {?} */ characterIndex = input.indexOf(character);\n    if (characterIndex == -1)\n        return defaultValues;\n    return [input.slice(0, characterIndex).trim(), input.slice(characterIndex + 1).trim()];\n}\n/**\n * @param {?} value\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\nfunction visitValue(value, visitor, context) {\n    if (Array.isArray(value)) {\n        return visitor.visitArray(/** @type {?} */ (value), context);\n    }\n    if (isStrictStringMap(value)) {\n        return visitor.visitStringMap(/** @type {?} */ (value), context);\n    }\n    if (value == null || typeof value == 'string' || typeof value == 'number' ||\n        typeof value == 'boolean') {\n        return visitor.visitPrimitive(value, context);\n    }\n    return visitor.visitOther(value, context);\n}\nvar ValueTransformer = (function () {\n    function ValueTransformer() {\n    }\n    /**\n     * @param {?} arr\n     * @param {?} context\n     * @return {?}\n     */\n    ValueTransformer.prototype.visitArray = function (arr, context) {\n        var _this = this;\n        return arr.map(function (value) { return visitValue(value, _this, context); });\n    };\n    /**\n     * @param {?} map\n     * @param {?} context\n     * @return {?}\n     */\n    ValueTransformer.prototype.visitStringMap = function (map, context) {\n        var _this = this;\n        var /** @type {?} */ result = {};\n        Object.keys(map).forEach(function (key) { result[key] = visitValue(map[key], _this, context); });\n        return result;\n    };\n    /**\n     * @param {?} value\n     * @param {?} context\n     * @return {?}\n     */\n    ValueTransformer.prototype.visitPrimitive = function (value, context) { return value; };\n    /**\n     * @param {?} value\n     * @param {?} context\n     * @return {?}\n     */\n    ValueTransformer.prototype.visitOther = function (value, context) { return value; };\n    return ValueTransformer;\n}());\nvar SyncAsyncResult = (function () {\n    /**\n     * @param {?} syncResult\n     * @param {?=} asyncResult\n     */\n    function SyncAsyncResult(syncResult, asyncResult) {\n        if (asyncResult === void 0) { asyncResult = null; }\n        this.syncResult = syncResult;\n        this.asyncResult = asyncResult;\n        if (!asyncResult) {\n            this.asyncResult = Promise.resolve(syncResult);\n        }\n    }\n    return SyncAsyncResult;\n}());\n/**\n * @param {?} msg\n * @return {?}\n */\nfunction syntaxError(msg) {\n    var /** @type {?} */ error = Error(msg);\n    ((error))[ERROR_SYNTAX_ERROR] = true;\n    return error;\n}\nvar ERROR_SYNTAX_ERROR = 'ngSyntaxError';\n/**\n * @param {?} error\n * @return {?}\n */\nfunction isSyntaxError(error) {\n    return ((error))[ERROR_SYNTAX_ERROR];\n}\n/**\n * @param {?} s\n * @return {?}\n */\nfunction escapeRegExp(s) {\n    return s.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n}\nvar STRING_MAP_PROTO = Object.getPrototypeOf({});\n/**\n * @param {?} obj\n * @return {?}\n */\nfunction isStrictStringMap(obj) {\n    return typeof obj === 'object' && obj !== null && Object.getPrototypeOf(obj) === STRING_MAP_PROTO;\n}\n/**\n * @param {?} str\n * @return {?}\n */\nfunction utf8Encode(str) {\n    var /** @type {?} */ encoded = '';\n    for (var /** @type {?} */ index = 0; index < str.length; index++) {\n        var /** @type {?} */ codePoint = str.charCodeAt(index);\n        // decode surrogate\n        // see https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n        if (codePoint >= 0xd800 && codePoint <= 0xdbff && str.length > (index + 1)) {\n            var /** @type {?} */ low = str.charCodeAt(index + 1);\n            if (low >= 0xdc00 && low <= 0xdfff) {\n                index++;\n                codePoint = ((codePoint - 0xd800) << 10) + low - 0xdc00 + 0x10000;\n            }\n        }\n        if (codePoint <= 0x7f) {\n            encoded += String.fromCharCode(codePoint);\n        }\n        else if (codePoint <= 0x7ff) {\n            encoded += String.fromCharCode(((codePoint >> 6) & 0x1F) | 0xc0, (codePoint & 0x3f) | 0x80);\n        }\n        else if (codePoint <= 0xffff) {\n            encoded += String.fromCharCode((codePoint >> 12) | 0xe0, ((codePoint >> 6) & 0x3f) | 0x80, (codePoint & 0x3f) | 0x80);\n        }\n        else if (codePoint <= 0x1fffff) {\n            encoded += String.fromCharCode(((codePoint >> 18) & 0x07) | 0xf0, ((codePoint >> 12) & 0x3f) | 0x80, ((codePoint >> 6) & 0x3f) | 0x80, (codePoint & 0x3f) | 0x80);\n        }\n    }\n    return encoded;\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this 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// group 0: \"[prop] or (event) or @trigger\"\n// group 1: \"prop\" from \"[prop]\"\n// group 2: \"event\" from \"(event)\"\n// group 3: \"@trigger\" from \"@trigger\"\nvar HOST_REG_EXP = /^(?:(?:\\[([^\\]]+)\\])|(?:\\(([^\\)]+)\\)))|(\\@[-\\w]+)$/;\nvar CompileAnimationEntryMetadata = (function () {\n    /**\n     * @param {?=} name\n     * @param {?=} definitions\n     */\n    function CompileAnimationEntryMetadata(name, definitions) {\n        if (name === void 0) { name = null; }\n        if (definitions === void 0) { definitions = null; }\n        this.name = name;\n        this.definitions = definitions;\n    }\n    return CompileAnimationEntryMetadata;\n}());\n/**\n * @abstract\n */\nvar CompileAnimationStateMetadata = (function () {\n    function CompileAnimationStateMetadata() {\n    }\n    return CompileAnimationStateMetadata;\n}());\nvar CompileAnimationStateDeclarationMetadata = (function (_super) {\n    __extends(CompileAnimationStateDeclarationMetadata, _super);\n    /**\n     * @param {?} stateNameExpr\n     * @param {?} styles\n     */\n    function CompileAnimationStateDeclarationMetadata(stateNameExpr, styles) {\n        var _this = _super.call(this) || this;\n        _this.stateNameExpr = stateNameExpr;\n        _this.styles = styles;\n        return _this;\n    }\n    return CompileAnimationStateDeclarationMetadata;\n}(CompileAnimationStateMetadata));\nvar CompileAnimationStateTransitionMetadata = (function (_super) {\n    __extends(CompileAnimationStateTransitionMetadata, _super);\n    /**\n     * @param {?} stateChangeExpr\n     * @param {?} steps\n     */\n    function CompileAnimationStateTransitionMetadata(stateChangeExpr, steps) {\n        var _this = _super.call(this) || this;\n        _this.stateChangeExpr = stateChangeExpr;\n        _this.steps = steps;\n        return _this;\n    }\n    return CompileAnimationStateTransitionMetadata;\n}(CompileAnimationStateMetadata));\n/**\n * @abstract\n */\nvar CompileAnimationMetadata = (function () {\n    function CompileAnimationMetadata() {\n    }\n    return CompileAnimationMetadata;\n}());\nvar CompileAnimationKeyframesSequenceMetadata = (function (_super) {\n    __extends(CompileAnimationKeyframesSequenceMetadata, _super);\n    /**\n     * @param {?=} steps\n     */\n    function CompileAnimationKeyframesSequenceMetadata(steps) {\n        if (steps === void 0) { steps = []; }\n        var _this = _super.call(this) || this;\n        _this.steps = steps;\n        return _this;\n    }\n    return CompileAnimationKeyframesSequenceMetadata;\n}(CompileAnimationMetadata));\nvar CompileAnimationStyleMetadata = (function (_super) {\n    __extends(CompileAnimationStyleMetadata, _super);\n    /**\n     * @param {?} offset\n     * @param {?=} styles\n     */\n    function CompileAnimationStyleMetadata(offset, styles) {\n        if (styles === void 0) { styles = null; }\n        var _this = _super.call(this) || this;\n        _this.offset = offset;\n        _this.styles = styles;\n        return _this;\n    }\n    return CompileAnimationStyleMetadata;\n}(CompileAnimationMetadata));\nvar CompileAnimationAnimateMetadata = (function (_super) {\n    __extends(CompileAnimationAnimateMetadata, _super);\n    /**\n     * @param {?=} timings\n     * @param {?=} styles\n     */\n    function CompileAnimationAnimateMetadata(timings, styles) {\n        if (timings === void 0) { timings = 0; }\n        if (styles === void 0) { styles = null; }\n        var _this = _super.call(this) || this;\n        _this.timings = timings;\n        _this.styles = styles;\n        return _this;\n    }\n    return CompileAnimationAnimateMetadata;\n}(CompileAnimationMetadata));\n/**\n * @abstract\n */\nvar CompileAnimationWithStepsMetadata = (function (_super) {\n    __extends(CompileAnimationWithStepsMetadata, _super);\n    /**\n     * @param {?=} steps\n     */\n    function CompileAnimationWithStepsMetadata(steps) {\n        if (steps === void 0) { steps = null; }\n        var _this = _super.call(this) || this;\n        _this.steps = steps;\n        return _this;\n    }\n    return CompileAnimationWithStepsMetadata;\n}(CompileAnimationMetadata));\nvar CompileAnimationSequenceMetadata = (function (_super) {\n    __extends(CompileAnimationSequenceMetadata, _super);\n    /**\n     * @param {?=} steps\n     */\n    function CompileAnimationSequenceMetadata(steps) {\n        if (steps === void 0) { steps = null; }\n        return _super.call(this, steps) || this;\n    }\n    return CompileAnimationSequenceMetadata;\n}(CompileAnimationWithStepsMetadata));\nvar CompileAnimationGroupMetadata = (function (_super) {\n    __extends(CompileAnimationGroupMetadata, _super);\n    /**\n     * @param {?=} steps\n     */\n    function CompileAnimationGroupMetadata(steps) {\n        if (steps === void 0) { steps = null; }\n        return _super.call(this, steps) || this;\n    }\n    return CompileAnimationGroupMetadata;\n}(CompileAnimationWithStepsMetadata));\n/**\n * @param {?} name\n * @return {?}\n */\nfunction _sanitizeIdentifier(name) {\n    return name.replace(/\\W/g, '_');\n}\nvar _anonymousTypeIndex = 0;\n/**\n * @param {?} compileIdentifier\n * @return {?}\n */\nfunction identifierName(compileIdentifier) {\n    if (!compileIdentifier || !compileIdentifier.reference) {\n        return null;\n    }\n    var /** @type {?} */ ref = compileIdentifier.reference;\n    if (ref instanceof StaticSymbol) {\n        return ref.name;\n    }\n    if (ref['__anonymousType']) {\n        return ref['__anonymousType'];\n    }\n    var /** @type {?} */ identifier = ɵstringify(ref);\n    if (identifier.indexOf('(') >= 0) {\n        // case: anonymous functions!\n        identifier = \"anonymous_\" + _anonymousTypeIndex++;\n        ref['__anonymousType'] = identifier;\n    }\n    else {\n        identifier = _sanitizeIdentifier(identifier);\n    }\n    return identifier;\n}\n/**\n * @param {?} compileIdentifier\n * @return {?}\n */\nfunction identifierModuleUrl(compileIdentifier) {\n    var /** @type {?} */ ref = compileIdentifier.reference;\n    if (ref instanceof StaticSymbol) {\n        return ref.filePath;\n    }\n    return ɵreflector.importUri(ref);\n}\n/**\n * @param {?} compType\n * @param {?} embeddedTemplateIndex\n * @return {?}\n */\nfunction viewClassName(compType, embeddedTemplateIndex) {\n    return \"View_\" + identifierName({ reference: compType }) + \"_\" + embeddedTemplateIndex;\n}\n/**\n * @param {?} compType\n * @return {?}\n */\nfunction rendererTypeName(compType) {\n    return \"RenderType_\" + identifierName({ reference: compType });\n}\n/**\n * @param {?} compType\n * @return {?}\n */\nfunction hostViewClassName(compType) {\n    return \"HostView_\" + identifierName({ reference: compType });\n}\n/**\n * @param {?} dirType\n * @return {?}\n */\nfunction dirWrapperClassName(dirType) {\n    return \"Wrapper_\" + identifierName({ reference: dirType });\n}\n/**\n * @param {?} compType\n * @return {?}\n */\nfunction componentFactoryName(compType) {\n    return identifierName({ reference: compType }) + \"NgFactory\";\n}\nvar CompileSummaryKind = {};\nCompileSummaryKind.Pipe = 0;\nCompileSummaryKind.Directive = 1;\nCompileSummaryKind.NgModule = 2;\nCompileSummaryKind.Injectable = 3;\nCompileSummaryKind[CompileSummaryKind.Pipe] = \"Pipe\";\nCompileSummaryKind[CompileSummaryKind.Directive] = \"Directive\";\nCompileSummaryKind[CompileSummaryKind.NgModule] = \"NgModule\";\nCompileSummaryKind[CompileSummaryKind.Injectable] = \"Injectable\";\n/**\n * @param {?} token\n * @return {?}\n */\nfunction tokenName(token) {\n    return token.value != null ? _sanitizeIdentifier(token.value) : identifierName(token.identifier);\n}\n/**\n * @param {?} token\n * @return {?}\n */\nfunction tokenReference(token) {\n    if (token.identifier != null) {\n        return token.identifier.reference;\n    }\n    else {\n        return token.value;\n    }\n}\n/**\n * Metadata about a stylesheet\n */\nvar CompileStylesheetMetadata = (function () {\n    /**\n     * @param {?=} __0\n     */\n    function CompileStylesheetMetadata(_a) {\n        var _b = _a === void 0 ? {} : _a, moduleUrl = _b.moduleUrl, styles = _b.styles, styleUrls = _b.styleUrls;\n        this.moduleUrl = moduleUrl;\n        this.styles = _normalizeArray(styles);\n        this.styleUrls = _normalizeArray(styleUrls);\n    }\n    return CompileStylesheetMetadata;\n}());\n/**\n * Metadata regarding compilation of a template.\n */\nvar CompileTemplateMetadata = (function () {\n    /**\n     * @param {?=} __0\n     */\n    function CompileTemplateMetadata(_a) {\n        var _b = _a === void 0 ? {} : _a, encapsulation = _b.encapsulation, template = _b.template, templateUrl = _b.templateUrl, styles = _b.styles, styleUrls = _b.styleUrls, externalStylesheets = _b.externalStylesheets, animations = _b.animations, ngContentSelectors = _b.ngContentSelectors, interpolation = _b.interpolation, isInline = _b.isInline;\n        this.encapsulation = encapsulation;\n        this.template = template;\n        this.templateUrl = templateUrl;\n        this.styles = _normalizeArray(styles);\n        this.styleUrls = _normalizeArray(styleUrls);\n        this.externalStylesheets = _normalizeArray(externalStylesheets);\n        this.animations = animations ? flatten(animations) : [];\n        this.ngContentSelectors = ngContentSelectors || [];\n        if (interpolation && interpolation.length != 2) {\n            throw new Error(\"'interpolation' should have a start and an end symbol.\");\n        }\n        this.interpolation = interpolation;\n        this.isInline = isInline;\n    }\n    /**\n     * @return {?}\n     */\n    CompileTemplateMetadata.prototype.toSummary = function () {\n        return {\n            animations: this.animations.map(function (anim) { return anim.name; }),\n            ngContentSelectors: this.ngContentSelectors,\n            encapsulation: this.encapsulation,\n        };\n    };\n    return CompileTemplateMetadata;\n}());\n/**\n * Metadata regarding compilation of a directive.\n */\nvar CompileDirectiveMetadata = (function () {\n    /**\n     * @param {?=} __0\n     */\n    function CompileDirectiveMetadata(_a) {\n        var _b = _a === void 0 ? {} : _a, isHost = _b.isHost, type = _b.type, isComponent = _b.isComponent, selector = _b.selector, exportAs = _b.exportAs, changeDetection = _b.changeDetection, inputs = _b.inputs, outputs = _b.outputs, hostListeners = _b.hostListeners, hostProperties = _b.hostProperties, hostAttributes = _b.hostAttributes, providers = _b.providers, viewProviders = _b.viewProviders, queries = _b.queries, viewQueries = _b.viewQueries, entryComponents = _b.entryComponents, template = _b.template, componentViewType = _b.componentViewType, rendererType = _b.rendererType, componentFactory = _b.componentFactory;\n        this.isHost = !!isHost;\n        this.type = type;\n        this.isComponent = isComponent;\n        this.selector = selector;\n        this.exportAs = exportAs;\n        this.changeDetection = changeDetection;\n        this.inputs = inputs;\n        this.outputs = outputs;\n        this.hostListeners = hostListeners;\n        this.hostProperties = hostProperties;\n        this.hostAttributes = hostAttributes;\n        this.providers = _normalizeArray(providers);\n        this.viewProviders = _normalizeArray(viewProviders);\n        this.queries = _normalizeArray(queries);\n        this.viewQueries = _normalizeArray(viewQueries);\n        this.entryComponents = _normalizeArray(entryComponents);\n        this.template = template;\n        this.componentViewType = componentViewType;\n        this.rendererType = rendererType;\n        this.componentFactory = componentFactory;\n    }\n    /**\n     * @param {?=} __0\n     * @return {?}\n     */\n    CompileDirectiveMetadata.create = function (_a) {\n        var _b = _a === void 0 ? {} : _a, isHost = _b.isHost, type = _b.type, isComponent = _b.isComponent, selector = _b.selector, exportAs = _b.exportAs, changeDetection = _b.changeDetection, inputs = _b.inputs, outputs = _b.outputs, host = _b.host, providers = _b.providers, viewProviders = _b.viewProviders, queries = _b.queries, viewQueries = _b.viewQueries, entryComponents = _b.entryComponents, template = _b.template, componentViewType = _b.componentViewType, rendererType = _b.rendererType, componentFactory = _b.componentFactory;\n        var /** @type {?} */ hostListeners = {};\n        var /** @type {?} */ hostProperties = {};\n        var /** @type {?} */ hostAttributes = {};\n        if (host != null) {\n            Object.keys(host).forEach(function (key) {\n                var /** @type {?} */ value = host[key];\n                var /** @type {?} */ matches = key.match(HOST_REG_EXP);\n                if (matches === null) {\n                    hostAttributes[key] = value;\n                }\n                else if (matches[1] != null) {\n                    hostProperties[matches[1]] = value;\n                }\n                else if (matches[2] != null) {\n                    hostListeners[matches[2]] = value;\n                }\n            });\n        }\n        var /** @type {?} */ inputsMap = {};\n        if (inputs != null) {\n            inputs.forEach(function (bindConfig) {\n                // canonical syntax: `dirProp: elProp`\n                // if there is no `:`, use dirProp = elProp\n                var /** @type {?} */ parts = splitAtColon(bindConfig, [bindConfig, bindConfig]);\n                inputsMap[parts[0]] = parts[1];\n            });\n        }\n        var /** @type {?} */ outputsMap = {};\n        if (outputs != null) {\n            outputs.forEach(function (bindConfig) {\n                // canonical syntax: `dirProp: elProp`\n                // if there is no `:`, use dirProp = elProp\n                var /** @type {?} */ parts = splitAtColon(bindConfig, [bindConfig, bindConfig]);\n                outputsMap[parts[0]] = parts[1];\n            });\n        }\n        return new CompileDirectiveMetadata({\n            isHost: isHost,\n            type: type,\n            isComponent: !!isComponent, selector: selector, exportAs: exportAs, changeDetection: changeDetection,\n            inputs: inputsMap,\n            outputs: outputsMap,\n            hostListeners: hostListeners,\n            hostProperties: hostProperties,\n            hostAttributes: hostAttributes,\n            providers: providers,\n            viewProviders: viewProviders,\n            queries: queries,\n            viewQueries: viewQueries,\n            entryComponents: entryComponents,\n            template: template,\n            componentViewType: componentViewType,\n            rendererType: rendererType,\n            componentFactory: componentFactory,\n        });\n    };\n    /**\n     * @return {?}\n     */\n    CompileDirectiveMetadata.prototype.toSummary = function () {\n        return {\n            summaryKind: CompileSummaryKind.Directive,\n            type: this.type,\n            isComponent: this.isComponent,\n            selector: this.selector,\n            exportAs: this.exportAs,\n            inputs: this.inputs,\n            outputs: this.outputs,\n            hostListeners: this.hostListeners,\n            hostProperties: this.hostProperties,\n            hostAttributes: this.hostAttributes,\n            providers: this.providers,\n            viewProviders: this.viewProviders,\n            queries: this.queries,\n            viewQueries: this.viewQueries,\n            entryComponents: this.entryComponents,\n            changeDetection: this.changeDetection,\n            template: this.template && this.template.toSummary(),\n            componentViewType: this.componentViewType,\n            rendererType: this.rendererType,\n            componentFactory: this.componentFactory\n        };\n    };\n    return CompileDirectiveMetadata;\n}());\n/**\n * Construct {\\@link CompileDirectiveMetadata} from {\\@link ComponentTypeMetadata} and a selector.\n * @param {?} hostTypeReference\n * @param {?} compMeta\n * @param {?} hostViewType\n * @return {?}\n */\nfunction createHostComponentMeta(hostTypeReference, compMeta, hostViewType) {\n    var /** @type {?} */ template = CssSelector.parse(compMeta.selector)[0].getMatchingElementTemplate();\n    return CompileDirectiveMetadata.create({\n        isHost: true,\n        type: { reference: hostTypeReference, diDeps: [], lifecycleHooks: [] },\n        template: new CompileTemplateMetadata({\n            encapsulation: ViewEncapsulation.None,\n            template: template,\n            templateUrl: '',\n            styles: [],\n            styleUrls: [],\n            ngContentSelectors: [],\n            animations: [],\n            isInline: true,\n        }),\n        changeDetection: ChangeDetectionStrategy.Default,\n        inputs: [],\n        outputs: [],\n        host: {},\n        isComponent: true,\n        selector: '*',\n        providers: [],\n        viewProviders: [],\n        queries: [],\n        viewQueries: [],\n        componentViewType: hostViewType,\n        rendererType: { id: '__Host__', encapsulation: ViewEncapsulation.None, styles: [], data: {} }\n    });\n}\nvar CompilePipeMetadata = (function () {\n    /**\n     * @param {?=} __0\n     */\n    function CompilePipeMetadata(_a) {\n        var _b = _a === void 0 ? {} : _a, type = _b.type, name = _b.name, pure = _b.pure;\n        this.type = type;\n        this.name = name;\n        this.pure = !!pure;\n    }\n    /**\n     * @return {?}\n     */\n    CompilePipeMetadata.prototype.toSummary = function () {\n        return {\n            summaryKind: CompileSummaryKind.Pipe,\n            type: this.type,\n            name: this.name,\n            pure: this.pure\n        };\n    };\n    return CompilePipeMetadata;\n}());\n/**\n * Metadata regarding compilation of a module.\n */\nvar CompileNgModuleMetadata = (function () {\n    /**\n     * @param {?=} __0\n     */\n    function CompileNgModuleMetadata(_a) {\n        var _b = _a === void 0 ? {} : _a, type = _b.type, providers = _b.providers, declaredDirectives = _b.declaredDirectives, exportedDirectives = _b.exportedDirectives, declaredPipes = _b.declaredPipes, exportedPipes = _b.exportedPipes, entryComponents = _b.entryComponents, bootstrapComponents = _b.bootstrapComponents, importedModules = _b.importedModules, exportedModules = _b.exportedModules, schemas = _b.schemas, transitiveModule = _b.transitiveModule, id = _b.id;\n        this.type = type;\n        this.declaredDirectives = _normalizeArray(declaredDirectives);\n        this.exportedDirectives = _normalizeArray(exportedDirectives);\n        this.declaredPipes = _normalizeArray(declaredPipes);\n        this.exportedPipes = _normalizeArray(exportedPipes);\n        this.providers = _normalizeArray(providers);\n        this.entryComponents = _normalizeArray(entryComponents);\n        this.bootstrapComponents = _normalizeArray(bootstrapComponents);\n        this.importedModules = _normalizeArray(importedModules);\n        this.exportedModules = _normalizeArray(exportedModules);\n        this.schemas = _normalizeArray(schemas);\n        this.id = id;\n        this.transitiveModule = transitiveModule;\n    }\n    /**\n     * @return {?}\n     */\n    CompileNgModuleMetadata.prototype.toSummary = function () {\n        return {\n            summaryKind: CompileSummaryKind.NgModule,\n            type: this.type,\n            entryComponents: this.transitiveModule.entryComponents,\n            providers: this.transitiveModule.providers,\n            modules: this.transitiveModule.modules,\n            exportedDirectives: this.transitiveModule.exportedDirectives,\n            exportedPipes: this.transitiveModule.exportedPipes\n        };\n    };\n    return CompileNgModuleMetadata;\n}());\nvar TransitiveCompileNgModuleMetadata = (function () {\n    function TransitiveCompileNgModuleMetadata() {\n        this.directivesSet = new Set();\n        this.directives = [];\n        this.exportedDirectivesSet = new Set();\n        this.exportedDirectives = [];\n        this.pipesSet = new Set();\n        this.pipes = [];\n        this.exportedPipesSet = new Set();\n        this.exportedPipes = [];\n        this.modulesSet = new Set();\n        this.modules = [];\n        this.entryComponentsSet = new Set();\n        this.entryComponents = [];\n        this.providers = [];\n    }\n    /**\n     * @param {?} provider\n     * @param {?} module\n     * @return {?}\n     */\n    TransitiveCompileNgModuleMetadata.prototype.addProvider = function (provider, module) {\n        this.providers.push({ provider: provider, module: module });\n    };\n    /**\n     * @param {?} id\n     * @return {?}\n     */\n    TransitiveCompileNgModuleMetadata.prototype.addDirective = function (id) {\n        if (!this.directivesSet.has(id.reference)) {\n            this.directivesSet.add(id.reference);\n            this.directives.push(id);\n        }\n    };\n    /**\n     * @param {?} id\n     * @return {?}\n     */\n    TransitiveCompileNgModuleMetadata.prototype.addExportedDirective = function (id) {\n        if (!this.exportedDirectivesSet.has(id.reference)) {\n            this.exportedDirectivesSet.add(id.reference);\n            this.exportedDirectives.push(id);\n        }\n    };\n    /**\n     * @param {?} id\n     * @return {?}\n     */\n    TransitiveCompileNgModuleMetadata.prototype.addPipe = function (id) {\n        if (!this.pipesSet.has(id.reference)) {\n            this.pipesSet.add(id.reference);\n            this.pipes.push(id);\n        }\n    };\n    /**\n     * @param {?} id\n     * @return {?}\n     */\n    TransitiveCompileNgModuleMetadata.prototype.addExportedPipe = function (id) {\n        if (!this.exportedPipesSet.has(id.reference)) {\n            this.exportedPipesSet.add(id.reference);\n            this.exportedPipes.push(id);\n        }\n    };\n    /**\n     * @param {?} id\n     * @return {?}\n     */\n    TransitiveCompileNgModuleMetadata.prototype.addModule = function (id) {\n        if (!this.modulesSet.has(id.reference)) {\n            this.modulesSet.add(id.reference);\n            this.modules.push(id);\n        }\n    };\n    /**\n     * @param {?} ec\n     * @return {?}\n     */\n    TransitiveCompileNgModuleMetadata.prototype.addEntryComponent = function (ec) {\n        if (!this.entryComponentsSet.has(ec.componentType)) {\n            this.entryComponentsSet.add(ec.componentType);\n            this.entryComponents.push(ec);\n        }\n    };\n    return TransitiveCompileNgModuleMetadata;\n}());\n/**\n * @param {?} obj\n * @return {?}\n */\nfunction _normalizeArray(obj) {\n    return obj || [];\n}\nvar ProviderMeta = (function () {\n    /**\n     * @param {?} token\n     * @param {?} __1\n     */\n    function ProviderMeta(token, _a) {\n        var useClass = _a.useClass, useValue = _a.useValue, useExisting = _a.useExisting, useFactory = _a.useFactory, deps = _a.deps, multi = _a.multi;\n        this.token = token;\n        this.useClass = useClass;\n        this.useValue = useValue;\n        this.useExisting = useExisting;\n        this.useFactory = useFactory;\n        this.dependencies = deps;\n        this.multi = !!multi;\n    }\n    return ProviderMeta;\n}());\n/**\n * @template T\n * @param {?} list\n * @return {?}\n */\nfunction flatten(list) {\n    return list.reduce(function (flat, item) {\n        var /** @type {?} */ flatItem = Array.isArray(item) ? flatten(item) : item;\n        return ((flat)).concat(flatItem);\n    }, []);\n}\n/**\n * @param {?} url\n * @return {?}\n */\nfunction sourceUrl(url) {\n    // Note: We need 3 \"/\" so that ng shows up as a separate domain\n    // in the chrome dev tools.\n    return url.replace(/(\\w+:\\/\\/[\\w:-]+)?(\\/+)?/, 'ng:///');\n}\n/**\n * @param {?} ngModuleType\n * @param {?} compMeta\n * @param {?} templateMeta\n * @return {?}\n */\nfunction templateSourceUrl(ngModuleType, compMeta, templateMeta) {\n    var /** @type {?} */ url;\n    if (templateMeta.isInline) {\n        if (compMeta.type.reference instanceof StaticSymbol) {\n            // Note: a .ts file might contain multiple components with inline templates,\n            // so we need to give them unique urls, as these will be used for sourcemaps.\n            url = compMeta.type.reference.filePath + \".\" + compMeta.type.reference.name + \".html\";\n        }\n        else {\n            url = identifierName(ngModuleType) + \"/\" + identifierName(compMeta.type) + \".html\";\n        }\n    }\n    else {\n        url = templateMeta.templateUrl;\n    }\n    // always prepend ng:// to make angular resources easy to find and not clobber\n    // user resources.\n    return sourceUrl(url);\n}\n/**\n * @param {?} meta\n * @param {?} id\n * @return {?}\n */\nfunction sharedStylesheetJitUrl(meta, id) {\n    var /** @type {?} */ pathParts = meta.moduleUrl.split(/\\/\\\\/g);\n    var /** @type {?} */ baseName = pathParts[pathParts.length - 1];\n    return sourceUrl(\"css/\" + id + baseName + \".ngstyle.js\");\n}\n/**\n * @param {?} moduleMeta\n * @return {?}\n */\nfunction ngModuleJitUrl(moduleMeta) {\n    return sourceUrl(identifierName(moduleMeta.type) + \"/module.ngfactory.js\");\n}\n/**\n * @param {?} ngModuleType\n * @param {?} compMeta\n * @return {?}\n */\nfunction templateJitUrl(ngModuleType, compMeta) {\n    return sourceUrl(identifierName(ngModuleType) + \"/\" + identifierName(compMeta.type) + \".ngfactory.js\");\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar CompilerConfig = (function () {\n    /**\n     * @param {?=} __0\n     */\n    function CompilerConfig(_a) {\n        var _b = _a === void 0 ? {} : _a, _c = _b.defaultEncapsulation, defaultEncapsulation = _c === void 0 ? ViewEncapsulation.Emulated : _c, _d = _b.useJit, useJit = _d === void 0 ? true : _d, missingTranslation = _b.missingTranslation, enableLegacyTemplate = _b.enableLegacyTemplate;\n        this.defaultEncapsulation = defaultEncapsulation;\n        this.useJit = useJit;\n        this.missingTranslation = missingTranslation;\n        this.enableLegacyTemplate = enableLegacyTemplate !== false;\n    }\n    return CompilerConfig;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar ParserError = (function () {\n    /**\n     * @param {?} message\n     * @param {?} input\n     * @param {?} errLocation\n     * @param {?=} ctxLocation\n     */\n    function ParserError(message, input, errLocation, ctxLocation) {\n        this.input = input;\n        this.errLocation = errLocation;\n        this.ctxLocation = ctxLocation;\n        this.message = \"Parser Error: \" + message + \" \" + errLocation + \" [\" + input + \"] in \" + ctxLocation;\n    }\n    return ParserError;\n}());\nvar ParseSpan = (function () {\n    /**\n     * @param {?} start\n     * @param {?} end\n     */\n    function ParseSpan(start, end) {\n        this.start = start;\n        this.end = end;\n    }\n    return ParseSpan;\n}());\nvar AST = (function () {\n    /**\n     * @param {?} span\n     */\n    function AST(span) {\n        this.span = span;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    AST.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return null;\n    };\n    /**\n     * @return {?}\n     */\n    AST.prototype.toString = function () { return 'AST'; };\n    return AST;\n}());\n/**\n * Represents a quoted expression of the form:\n *\n * quote = prefix `:` uninterpretedExpression\n * prefix = identifier\n * uninterpretedExpression = arbitrary string\n *\n * A quoted expression is meant to be pre-processed by an AST transformer that\n * converts it into another AST that no longer contains quoted expressions.\n * It is meant to allow third-party developers to extend Angular template\n * expression language. The `uninterpretedExpression` part of the quote is\n * therefore not interpreted by the Angular's own expression parser.\n */\nvar Quote = (function (_super) {\n    __extends(Quote, _super);\n    /**\n     * @param {?} span\n     * @param {?} prefix\n     * @param {?} uninterpretedExpression\n     * @param {?} location\n     */\n    function Quote(span, prefix, uninterpretedExpression, location) {\n        var _this = _super.call(this, span) || this;\n        _this.prefix = prefix;\n        _this.uninterpretedExpression = uninterpretedExpression;\n        _this.location = location;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    Quote.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return visitor.visitQuote(this, context);\n    };\n    /**\n     * @return {?}\n     */\n    Quote.prototype.toString = function () { return 'Quote'; };\n    return Quote;\n}(AST));\nvar EmptyExpr = (function (_super) {\n    __extends(EmptyExpr, _super);\n    function EmptyExpr() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    EmptyExpr.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        // do nothing\n    };\n    return EmptyExpr;\n}(AST));\nvar ImplicitReceiver = (function (_super) {\n    __extends(ImplicitReceiver, _super);\n    function ImplicitReceiver() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    ImplicitReceiver.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return visitor.visitImplicitReceiver(this, context);\n    };\n    return ImplicitReceiver;\n}(AST));\n/**\n * Multiple expressions separated by a semicolon.\n */\nvar Chain = (function (_super) {\n    __extends(Chain, _super);\n    /**\n     * @param {?} span\n     * @param {?} expressions\n     */\n    function Chain(span, expressions) {\n        var _this = _super.call(this, span) || this;\n        _this.expressions = expressions;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    Chain.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return visitor.visitChain(this, context);\n    };\n    return Chain;\n}(AST));\nvar Conditional = (function (_super) {\n    __extends(Conditional, _super);\n    /**\n     * @param {?} span\n     * @param {?} condition\n     * @param {?} trueExp\n     * @param {?} falseExp\n     */\n    function Conditional(span, condition, trueExp, falseExp) {\n        var _this = _super.call(this, span) || this;\n        _this.condition = condition;\n        _this.trueExp = trueExp;\n        _this.falseExp = falseExp;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    Conditional.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return visitor.visitConditional(this, context);\n    };\n    return Conditional;\n}(AST));\nvar PropertyRead = (function (_super) {\n    __extends(PropertyRead, _super);\n    /**\n     * @param {?} span\n     * @param {?} receiver\n     * @param {?} name\n     */\n    function PropertyRead(span, receiver, name) {\n        var _this = _super.call(this, span) || this;\n        _this.receiver = receiver;\n        _this.name = name;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    PropertyRead.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return visitor.visitPropertyRead(this, context);\n    };\n    return PropertyRead;\n}(AST));\nvar PropertyWrite = (function (_super) {\n    __extends(PropertyWrite, _super);\n    /**\n     * @param {?} span\n     * @param {?} receiver\n     * @param {?} name\n     * @param {?} value\n     */\n    function PropertyWrite(span, receiver, name, value) {\n        var _this = _super.call(this, span) || this;\n        _this.receiver = receiver;\n        _this.name = name;\n        _this.value = value;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    PropertyWrite.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return visitor.visitPropertyWrite(this, context);\n    };\n    return PropertyWrite;\n}(AST));\nvar SafePropertyRead = (function (_super) {\n    __extends(SafePropertyRead, _super);\n    /**\n     * @param {?} span\n     * @param {?} receiver\n     * @param {?} name\n     */\n    function SafePropertyRead(span, receiver, name) {\n        var _this = _super.call(this, span) || this;\n        _this.receiver = receiver;\n        _this.name = name;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    SafePropertyRead.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return visitor.visitSafePropertyRead(this, context);\n    };\n    return SafePropertyRead;\n}(AST));\nvar KeyedRead = (function (_super) {\n    __extends(KeyedRead, _super);\n    /**\n     * @param {?} span\n     * @param {?} obj\n     * @param {?} key\n     */\n    function KeyedRead(span, obj, key) {\n        var _this = _super.call(this, span) || this;\n        _this.obj = obj;\n        _this.key = key;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    KeyedRead.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return visitor.visitKeyedRead(this, context);\n    };\n    return KeyedRead;\n}(AST));\nvar KeyedWrite = (function (_super) {\n    __extends(KeyedWrite, _super);\n    /**\n     * @param {?} span\n     * @param {?} obj\n     * @param {?} key\n     * @param {?} value\n     */\n    function KeyedWrite(span, obj, key, value) {\n        var _this = _super.call(this, span) || this;\n        _this.obj = obj;\n        _this.key = key;\n        _this.value = value;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    KeyedWrite.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return visitor.visitKeyedWrite(this, context);\n    };\n    return KeyedWrite;\n}(AST));\nvar BindingPipe = (function (_super) {\n    __extends(BindingPipe, _super);\n    /**\n     * @param {?} span\n     * @param {?} exp\n     * @param {?} name\n     * @param {?} args\n     */\n    function BindingPipe(span, exp, name, args) {\n        var _this = _super.call(this, span) || this;\n        _this.exp = exp;\n        _this.name = name;\n        _this.args = args;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    BindingPipe.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return visitor.visitPipe(this, context);\n    };\n    return BindingPipe;\n}(AST));\nvar LiteralPrimitive = (function (_super) {\n    __extends(LiteralPrimitive, _super);\n    /**\n     * @param {?} span\n     * @param {?} value\n     */\n    function LiteralPrimitive(span, value) {\n        var _this = _super.call(this, span) || this;\n        _this.value = value;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    LiteralPrimitive.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return visitor.visitLiteralPrimitive(this, context);\n    };\n    return LiteralPrimitive;\n}(AST));\nvar LiteralArray = (function (_super) {\n    __extends(LiteralArray, _super);\n    /**\n     * @param {?} span\n     * @param {?} expressions\n     */\n    function LiteralArray(span, expressions) {\n        var _this = _super.call(this, span) || this;\n        _this.expressions = expressions;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    LiteralArray.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return visitor.visitLiteralArray(this, context);\n    };\n    return LiteralArray;\n}(AST));\nvar LiteralMap = (function (_super) {\n    __extends(LiteralMap, _super);\n    /**\n     * @param {?} span\n     * @param {?} keys\n     * @param {?} values\n     */\n    function LiteralMap(span, keys, values) {\n        var _this = _super.call(this, span) || this;\n        _this.keys = keys;\n        _this.values = values;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    LiteralMap.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return visitor.visitLiteralMap(this, context);\n    };\n    return LiteralMap;\n}(AST));\nvar Interpolation = (function (_super) {\n    __extends(Interpolation, _super);\n    /**\n     * @param {?} span\n     * @param {?} strings\n     * @param {?} expressions\n     */\n    function Interpolation(span, strings, expressions) {\n        var _this = _super.call(this, span) || this;\n        _this.strings = strings;\n        _this.expressions = expressions;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    Interpolation.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return visitor.visitInterpolation(this, context);\n    };\n    return Interpolation;\n}(AST));\nvar Binary = (function (_super) {\n    __extends(Binary, _super);\n    /**\n     * @param {?} span\n     * @param {?} operation\n     * @param {?} left\n     * @param {?} right\n     */\n    function Binary(span, operation, left, right) {\n        var _this = _super.call(this, span) || this;\n        _this.operation = operation;\n        _this.left = left;\n        _this.right = right;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    Binary.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return visitor.visitBinary(this, context);\n    };\n    return Binary;\n}(AST));\nvar PrefixNot = (function (_super) {\n    __extends(PrefixNot, _super);\n    /**\n     * @param {?} span\n     * @param {?} expression\n     */\n    function PrefixNot(span, expression) {\n        var _this = _super.call(this, span) || this;\n        _this.expression = expression;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    PrefixNot.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return visitor.visitPrefixNot(this, context);\n    };\n    return PrefixNot;\n}(AST));\nvar MethodCall = (function (_super) {\n    __extends(MethodCall, _super);\n    /**\n     * @param {?} span\n     * @param {?} receiver\n     * @param {?} name\n     * @param {?} args\n     */\n    function MethodCall(span, receiver, name, args) {\n        var _this = _super.call(this, span) || this;\n        _this.receiver = receiver;\n        _this.name = name;\n        _this.args = args;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    MethodCall.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return visitor.visitMethodCall(this, context);\n    };\n    return MethodCall;\n}(AST));\nvar SafeMethodCall = (function (_super) {\n    __extends(SafeMethodCall, _super);\n    /**\n     * @param {?} span\n     * @param {?} receiver\n     * @param {?} name\n     * @param {?} args\n     */\n    function SafeMethodCall(span, receiver, name, args) {\n        var _this = _super.call(this, span) || this;\n        _this.receiver = receiver;\n        _this.name = name;\n        _this.args = args;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    SafeMethodCall.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return visitor.visitSafeMethodCall(this, context);\n    };\n    return SafeMethodCall;\n}(AST));\nvar FunctionCall = (function (_super) {\n    __extends(FunctionCall, _super);\n    /**\n     * @param {?} span\n     * @param {?} target\n     * @param {?} args\n     */\n    function FunctionCall(span, target, args) {\n        var _this = _super.call(this, span) || this;\n        _this.target = target;\n        _this.args = args;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    FunctionCall.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return visitor.visitFunctionCall(this, context);\n    };\n    return FunctionCall;\n}(AST));\nvar ASTWithSource = (function (_super) {\n    __extends(ASTWithSource, _super);\n    /**\n     * @param {?} ast\n     * @param {?} source\n     * @param {?} location\n     * @param {?} errors\n     */\n    function ASTWithSource(ast, source, location, errors) {\n        var _this = _super.call(this, new ParseSpan(0, source == null ? 0 : source.length)) || this;\n        _this.ast = ast;\n        _this.source = source;\n        _this.location = location;\n        _this.errors = errors;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    ASTWithSource.prototype.visit = function (visitor, context) {\n        if (context === void 0) { context = null; }\n        return this.ast.visit(visitor, context);\n    };\n    /**\n     * @return {?}\n     */\n    ASTWithSource.prototype.toString = function () { return this.source + \" in \" + this.location; };\n    return ASTWithSource;\n}(AST));\nvar TemplateBinding = (function () {\n    /**\n     * @param {?} span\n     * @param {?} key\n     * @param {?} keyIsVar\n     * @param {?} name\n     * @param {?} expression\n     */\n    function TemplateBinding(span, key, keyIsVar, name, expression) {\n        this.span = span;\n        this.key = key;\n        this.keyIsVar = keyIsVar;\n        this.name = name;\n        this.expression = expression;\n    }\n    return TemplateBinding;\n}());\nvar RecursiveAstVisitor = (function () {\n    function RecursiveAstVisitor() {\n    }\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor.prototype.visitBinary = function (ast, context) {\n        ast.left.visit(this);\n        ast.right.visit(this);\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor.prototype.visitChain = function (ast, context) { return this.visitAll(ast.expressions, context); };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor.prototype.visitConditional = function (ast, context) {\n        ast.condition.visit(this);\n        ast.trueExp.visit(this);\n        ast.falseExp.visit(this);\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor.prototype.visitPipe = function (ast, context) {\n        ast.exp.visit(this);\n        this.visitAll(ast.args, context);\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor.prototype.visitFunctionCall = function (ast, context) {\n        ast.target.visit(this);\n        this.visitAll(ast.args, context);\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor.prototype.visitImplicitReceiver = function (ast, context) { return null; };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor.prototype.visitInterpolation = function (ast, context) {\n        return this.visitAll(ast.expressions, context);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor.prototype.visitKeyedRead = function (ast, context) {\n        ast.obj.visit(this);\n        ast.key.visit(this);\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor.prototype.visitKeyedWrite = function (ast, context) {\n        ast.obj.visit(this);\n        ast.key.visit(this);\n        ast.value.visit(this);\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor.prototype.visitLiteralArray = function (ast, context) {\n        return this.visitAll(ast.expressions, context);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor.prototype.visitLiteralMap = function (ast, context) { return this.visitAll(ast.values, context); };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor.prototype.visitLiteralPrimitive = function (ast, context) { return null; };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor.prototype.visitMethodCall = function (ast, context) {\n        ast.receiver.visit(this);\n        return this.visitAll(ast.args, context);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor.prototype.visitPrefixNot = function (ast, context) {\n        ast.expression.visit(this);\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor.prototype.visitPropertyRead = function (ast, context) {\n        ast.receiver.visit(this);\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor.prototype.visitPropertyWrite = function (ast, context) {\n        ast.receiver.visit(this);\n        ast.value.visit(this);\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor.prototype.visitSafePropertyRead = function (ast, context) {\n        ast.receiver.visit(this);\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor.prototype.visitSafeMethodCall = function (ast, context) {\n        ast.receiver.visit(this);\n        return this.visitAll(ast.args, context);\n    };\n    /**\n     * @param {?} asts\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor.prototype.visitAll = function (asts, context) {\n        var _this = this;\n        asts.forEach(function (ast) { return ast.visit(_this, context); });\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor.prototype.visitQuote = function (ast, context) { return null; };\n    return RecursiveAstVisitor;\n}());\nvar AstTransformer = (function () {\n    function AstTransformer() {\n    }\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer.prototype.visitImplicitReceiver = function (ast, context) { return ast; };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer.prototype.visitInterpolation = function (ast, context) {\n        return new Interpolation(ast.span, ast.strings, this.visitAll(ast.expressions));\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer.prototype.visitLiteralPrimitive = function (ast, context) {\n        return new LiteralPrimitive(ast.span, ast.value);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer.prototype.visitPropertyRead = function (ast, context) {\n        return new PropertyRead(ast.span, ast.receiver.visit(this), ast.name);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer.prototype.visitPropertyWrite = function (ast, context) {\n        return new PropertyWrite(ast.span, ast.receiver.visit(this), ast.name, ast.value.visit(this));\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer.prototype.visitSafePropertyRead = function (ast, context) {\n        return new SafePropertyRead(ast.span, ast.receiver.visit(this), ast.name);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer.prototype.visitMethodCall = function (ast, context) {\n        return new MethodCall(ast.span, ast.receiver.visit(this), ast.name, this.visitAll(ast.args));\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer.prototype.visitSafeMethodCall = function (ast, context) {\n        return new SafeMethodCall(ast.span, ast.receiver.visit(this), ast.name, this.visitAll(ast.args));\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer.prototype.visitFunctionCall = function (ast, context) {\n        return new FunctionCall(ast.span, ast.target.visit(this), this.visitAll(ast.args));\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer.prototype.visitLiteralArray = function (ast, context) {\n        return new LiteralArray(ast.span, this.visitAll(ast.expressions));\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer.prototype.visitLiteralMap = function (ast, context) {\n        return new LiteralMap(ast.span, ast.keys, this.visitAll(ast.values));\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer.prototype.visitBinary = function (ast, context) {\n        return new Binary(ast.span, ast.operation, ast.left.visit(this), ast.right.visit(this));\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer.prototype.visitPrefixNot = function (ast, context) {\n        return new PrefixNot(ast.span, ast.expression.visit(this));\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer.prototype.visitConditional = function (ast, context) {\n        return new Conditional(ast.span, ast.condition.visit(this), ast.trueExp.visit(this), ast.falseExp.visit(this));\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer.prototype.visitPipe = function (ast, context) {\n        return new BindingPipe(ast.span, ast.exp.visit(this), ast.name, this.visitAll(ast.args));\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer.prototype.visitKeyedRead = function (ast, context) {\n        return new KeyedRead(ast.span, ast.obj.visit(this), ast.key.visit(this));\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer.prototype.visitKeyedWrite = function (ast, context) {\n        return new KeyedWrite(ast.span, ast.obj.visit(this), ast.key.visit(this), ast.value.visit(this));\n    };\n    /**\n     * @param {?} asts\n     * @return {?}\n     */\n    AstTransformer.prototype.visitAll = function (asts) {\n        var /** @type {?} */ res = new Array(asts.length);\n        for (var /** @type {?} */ i = 0; i < asts.length; ++i) {\n            res[i] = asts[i].visit(this);\n        }\n        return res;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer.prototype.visitChain = function (ast, context) {\n        return new Chain(ast.span, this.visitAll(ast.expressions));\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer.prototype.visitQuote = function (ast, context) {\n        return new Quote(ast.span, ast.prefix, ast.uninterpretedExpression, ast.location);\n    };\n    return AstTransformer;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar $EOF = 0;\nvar $TAB = 9;\nvar $LF = 10;\nvar $VTAB = 11;\nvar $FF = 12;\nvar $CR = 13;\nvar $SPACE = 32;\nvar $BANG = 33;\nvar $DQ = 34;\nvar $HASH = 35;\nvar $$ = 36;\nvar $PERCENT = 37;\nvar $AMPERSAND = 38;\nvar $SQ = 39;\nvar $LPAREN = 40;\nvar $RPAREN = 41;\nvar $STAR = 42;\nvar $PLUS = 43;\nvar $COMMA = 44;\nvar $MINUS = 45;\nvar $PERIOD = 46;\nvar $SLASH = 47;\nvar $COLON = 58;\nvar $SEMICOLON = 59;\nvar $LT = 60;\nvar $EQ = 61;\nvar $GT = 62;\nvar $QUESTION = 63;\nvar $0 = 48;\nvar $9 = 57;\nvar $A = 65;\nvar $E = 69;\nvar $F = 70;\nvar $X = 88;\nvar $Z = 90;\nvar $LBRACKET = 91;\nvar $BACKSLASH = 92;\nvar $RBRACKET = 93;\nvar $CARET = 94;\nvar $_ = 95;\nvar $a = 97;\nvar $e = 101;\nvar $f = 102;\nvar $n = 110;\nvar $r = 114;\nvar $t = 116;\nvar $u = 117;\nvar $v = 118;\nvar $x = 120;\nvar $z = 122;\nvar $LBRACE = 123;\nvar $BAR = 124;\nvar $RBRACE = 125;\nvar $NBSP = 160;\nvar $BT = 96;\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isWhitespace(code) {\n    return (code >= $TAB && code <= $SPACE) || (code == $NBSP);\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isDigit(code) {\n    return $0 <= code && code <= $9;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isAsciiLetter(code) {\n    return code >= $a && code <= $z || code >= $A && code <= $Z;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isAsciiHexDigit(code) {\n    return code >= $a && code <= $f || code >= $A && code <= $F || isDigit(code);\n}\n/**\n * A replacement for \\@Injectable to be used in the compiler, so that\n * we don't try to evaluate the metadata in the compiler during AoT.\n * This decorator is enough to make the compiler work with the ReflectiveInjector though.\n * \\@Annotation\n * @return {?}\n */\nfunction CompilerInjectable() {\n    return function (x) { return x; };\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @param {?} identifier\n * @param {?} value\n * @return {?}\n */\nfunction assertArrayOfStrings(identifier, value) {\n    if (!isDevMode() || value == null) {\n        return;\n    }\n    if (!Array.isArray(value)) {\n        throw new Error(\"Expected '\" + identifier + \"' to be an array of strings.\");\n    }\n    for (var /** @type {?} */ i = 0; i < value.length; i += 1) {\n        if (typeof value[i] !== 'string') {\n            throw new Error(\"Expected '\" + identifier + \"' to be an array of strings.\");\n        }\n    }\n}\nvar INTERPOLATION_BLACKLIST_REGEXPS = [\n    /^\\s*$/,\n    /[<>]/,\n    /^[{}]$/,\n    /&(#|[a-z])/i,\n    /^\\/\\//,\n];\n/**\n * @param {?} identifier\n * @param {?} value\n * @return {?}\n */\nfunction assertInterpolationSymbols(identifier, value) {\n    if (value != null && !(Array.isArray(value) && value.length == 2)) {\n        throw new Error(\"Expected '\" + identifier + \"' to be an array, [start, end].\");\n    }\n    else if (isDevMode() && value != null) {\n        var /** @type {?} */ start_1 = (value[0]);\n        var /** @type {?} */ end_1 = (value[1]);\n        // black list checking\n        INTERPOLATION_BLACKLIST_REGEXPS.forEach(function (regexp) {\n            if (regexp.test(start_1) || regexp.test(end_1)) {\n                throw new Error(\"['\" + start_1 + \"', '\" + end_1 + \"'] contains unusable interpolation symbol.\");\n            }\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 */\nvar InterpolationConfig = (function () {\n    /**\n     * @param {?} start\n     * @param {?} end\n     */\n    function InterpolationConfig(start, end) {\n        this.start = start;\n        this.end = end;\n    }\n    /**\n     * @param {?} markers\n     * @return {?}\n     */\n    InterpolationConfig.fromArray = function (markers) {\n        if (!markers) {\n            return DEFAULT_INTERPOLATION_CONFIG;\n        }\n        assertInterpolationSymbols('interpolation', markers);\n        return new InterpolationConfig(markers[0], markers[1]);\n    };\n    ;\n    return InterpolationConfig;\n}());\nvar DEFAULT_INTERPOLATION_CONFIG = new InterpolationConfig('{{', '}}');\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar TokenType = {};\nTokenType.Character = 0;\nTokenType.Identifier = 1;\nTokenType.Keyword = 2;\nTokenType.String = 3;\nTokenType.Operator = 4;\nTokenType.Number = 5;\nTokenType.Error = 6;\nTokenType[TokenType.Character] = \"Character\";\nTokenType[TokenType.Identifier] = \"Identifier\";\nTokenType[TokenType.Keyword] = \"Keyword\";\nTokenType[TokenType.String] = \"String\";\nTokenType[TokenType.Operator] = \"Operator\";\nTokenType[TokenType.Number] = \"Number\";\nTokenType[TokenType.Error] = \"Error\";\nvar KEYWORDS = ['var', 'let', 'as', 'null', 'undefined', 'true', 'false', 'if', 'else', 'this'];\nvar Lexer = (function () {\n    function Lexer() {\n    }\n    /**\n     * @param {?} text\n     * @return {?}\n     */\n    Lexer.prototype.tokenize = function (text) {\n        var /** @type {?} */ scanner = new _Scanner(text);\n        var /** @type {?} */ tokens = [];\n        var /** @type {?} */ token = scanner.scanToken();\n        while (token != null) {\n            tokens.push(token);\n            token = scanner.scanToken();\n        }\n        return tokens;\n    };\n    return Lexer;\n}());\nLexer.decorators = [\n    { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nLexer.ctorParameters = function () { return []; };\nvar Token = (function () {\n    /**\n     * @param {?} index\n     * @param {?} type\n     * @param {?} numValue\n     * @param {?} strValue\n     */\n    function Token(index, type, numValue, strValue) {\n        this.index = index;\n        this.type = type;\n        this.numValue = numValue;\n        this.strValue = strValue;\n    }\n    /**\n     * @param {?} code\n     * @return {?}\n     */\n    Token.prototype.isCharacter = function (code) {\n        return this.type == TokenType.Character && this.numValue == code;\n    };\n    /**\n     * @return {?}\n     */\n    Token.prototype.isNumber = function () { return this.type == TokenType.Number; };\n    /**\n     * @return {?}\n     */\n    Token.prototype.isString = function () { return this.type == TokenType.String; };\n    /**\n     * @param {?} operater\n     * @return {?}\n     */\n    Token.prototype.isOperator = function (operater) {\n        return this.type == TokenType.Operator && this.strValue == operater;\n    };\n    /**\n     * @return {?}\n     */\n    Token.prototype.isIdentifier = function () { return this.type == TokenType.Identifier; };\n    /**\n     * @return {?}\n     */\n    Token.prototype.isKeyword = function () { return this.type == TokenType.Keyword; };\n    /**\n     * @return {?}\n     */\n    Token.prototype.isKeywordLet = function () { return this.type == TokenType.Keyword && this.strValue == 'let'; };\n    /**\n     * @return {?}\n     */\n    Token.prototype.isKeywordAs = function () { return this.type == TokenType.Keyword && this.strValue == 'as'; };\n    /**\n     * @return {?}\n     */\n    Token.prototype.isKeywordNull = function () { return this.type == TokenType.Keyword && this.strValue == 'null'; };\n    /**\n     * @return {?}\n     */\n    Token.prototype.isKeywordUndefined = function () {\n        return this.type == TokenType.Keyword && this.strValue == 'undefined';\n    };\n    /**\n     * @return {?}\n     */\n    Token.prototype.isKeywordTrue = function () { return this.type == TokenType.Keyword && this.strValue == 'true'; };\n    /**\n     * @return {?}\n     */\n    Token.prototype.isKeywordFalse = function () { return this.type == TokenType.Keyword && this.strValue == 'false'; };\n    /**\n     * @return {?}\n     */\n    Token.prototype.isKeywordThis = function () { return this.type == TokenType.Keyword && this.strValue == 'this'; };\n    /**\n     * @return {?}\n     */\n    Token.prototype.isError = function () { return this.type == TokenType.Error; };\n    /**\n     * @return {?}\n     */\n    Token.prototype.toNumber = function () { return this.type == TokenType.Number ? this.numValue : -1; };\n    /**\n     * @return {?}\n     */\n    Token.prototype.toString = function () {\n        switch (this.type) {\n            case TokenType.Character:\n            case TokenType.Identifier:\n            case TokenType.Keyword:\n            case TokenType.Operator:\n            case TokenType.String:\n            case TokenType.Error:\n                return this.strValue;\n            case TokenType.Number:\n                return this.numValue.toString();\n            default:\n                return null;\n        }\n    };\n    return Token;\n}());\n/**\n * @param {?} index\n * @param {?} code\n * @return {?}\n */\nfunction newCharacterToken(index, code) {\n    return new Token(index, TokenType.Character, code, String.fromCharCode(code));\n}\n/**\n * @param {?} index\n * @param {?} text\n * @return {?}\n */\nfunction newIdentifierToken(index, text) {\n    return new Token(index, TokenType.Identifier, 0, text);\n}\n/**\n * @param {?} index\n * @param {?} text\n * @return {?}\n */\nfunction newKeywordToken(index, text) {\n    return new Token(index, TokenType.Keyword, 0, text);\n}\n/**\n * @param {?} index\n * @param {?} text\n * @return {?}\n */\nfunction newOperatorToken(index, text) {\n    return new Token(index, TokenType.Operator, 0, text);\n}\n/**\n * @param {?} index\n * @param {?} text\n * @return {?}\n */\nfunction newStringToken(index, text) {\n    return new Token(index, TokenType.String, 0, text);\n}\n/**\n * @param {?} index\n * @param {?} n\n * @return {?}\n */\nfunction newNumberToken(index, n) {\n    return new Token(index, TokenType.Number, n, '');\n}\n/**\n * @param {?} index\n * @param {?} message\n * @return {?}\n */\nfunction newErrorToken(index, message) {\n    return new Token(index, TokenType.Error, 0, message);\n}\nvar EOF = new Token(-1, TokenType.Character, 0, '');\nvar _Scanner = (function () {\n    /**\n     * @param {?} input\n     */\n    function _Scanner(input) {\n        this.input = input;\n        this.peek = 0;\n        this.index = -1;\n        this.length = input.length;\n        this.advance();\n    }\n    /**\n     * @return {?}\n     */\n    _Scanner.prototype.advance = function () {\n        this.peek = ++this.index >= this.length ? $EOF : this.input.charCodeAt(this.index);\n    };\n    /**\n     * @return {?}\n     */\n    _Scanner.prototype.scanToken = function () {\n        var /** @type {?} */ input = this.input, /** @type {?} */ length = this.length;\n        var /** @type {?} */ peek = this.peek, /** @type {?} */ index = this.index;\n        // Skip whitespace.\n        while (peek <= $SPACE) {\n            if (++index >= length) {\n                peek = $EOF;\n                break;\n            }\n            else {\n                peek = input.charCodeAt(index);\n            }\n        }\n        this.peek = peek;\n        this.index = index;\n        if (index >= length) {\n            return null;\n        }\n        // Handle identifiers and numbers.\n        if (isIdentifierStart(peek))\n            return this.scanIdentifier();\n        if (isDigit(peek))\n            return this.scanNumber(index);\n        var /** @type {?} */ start = index;\n        switch (peek) {\n            case $PERIOD:\n                this.advance();\n                return isDigit(this.peek) ? this.scanNumber(start) :\n                    newCharacterToken(start, $PERIOD);\n            case $LPAREN:\n            case $RPAREN:\n            case $LBRACE:\n            case $RBRACE:\n            case $LBRACKET:\n            case $RBRACKET:\n            case $COMMA:\n            case $COLON:\n            case $SEMICOLON:\n                return this.scanCharacter(start, peek);\n            case $SQ:\n            case $DQ:\n                return this.scanString();\n            case $HASH:\n            case $PLUS:\n            case $MINUS:\n            case $STAR:\n            case $SLASH:\n            case $PERCENT:\n            case $CARET:\n                return this.scanOperator(start, String.fromCharCode(peek));\n            case $QUESTION:\n                return this.scanComplexOperator(start, '?', $PERIOD, '.');\n            case $LT:\n            case $GT:\n                return this.scanComplexOperator(start, String.fromCharCode(peek), $EQ, '=');\n            case $BANG:\n            case $EQ:\n                return this.scanComplexOperator(start, String.fromCharCode(peek), $EQ, '=', $EQ, '=');\n            case $AMPERSAND:\n                return this.scanComplexOperator(start, '&', $AMPERSAND, '&');\n            case $BAR:\n                return this.scanComplexOperator(start, '|', $BAR, '|');\n            case $NBSP:\n                while (isWhitespace(this.peek))\n                    this.advance();\n                return this.scanToken();\n        }\n        this.advance();\n        return this.error(\"Unexpected character [\" + String.fromCharCode(peek) + \"]\", 0);\n    };\n    /**\n     * @param {?} start\n     * @param {?} code\n     * @return {?}\n     */\n    _Scanner.prototype.scanCharacter = function (start, code) {\n        this.advance();\n        return newCharacterToken(start, code);\n    };\n    /**\n     * @param {?} start\n     * @param {?} str\n     * @return {?}\n     */\n    _Scanner.prototype.scanOperator = function (start, str) {\n        this.advance();\n        return newOperatorToken(start, str);\n    };\n    /**\n     * Tokenize a 2/3 char long operator\n     *\n     * @param {?} start start index in the expression\n     * @param {?} one first symbol (always part of the operator)\n     * @param {?} twoCode code point for the second symbol\n     * @param {?} two second symbol (part of the operator when the second code point matches)\n     * @param {?=} threeCode code point for the third symbol\n     * @param {?=} three third symbol (part of the operator when provided and matches source expression)\n     * @return {?}\n     */\n    _Scanner.prototype.scanComplexOperator = function (start, one, twoCode, two, threeCode, three) {\n        this.advance();\n        var /** @type {?} */ str = one;\n        if (this.peek == twoCode) {\n            this.advance();\n            str += two;\n        }\n        if (threeCode != null && this.peek == threeCode) {\n            this.advance();\n            str += three;\n        }\n        return newOperatorToken(start, str);\n    };\n    /**\n     * @return {?}\n     */\n    _Scanner.prototype.scanIdentifier = function () {\n        var /** @type {?} */ start = this.index;\n        this.advance();\n        while (isIdentifierPart(this.peek))\n            this.advance();\n        var /** @type {?} */ str = this.input.substring(start, this.index);\n        return KEYWORDS.indexOf(str) > -1 ? newKeywordToken(start, str) :\n            newIdentifierToken(start, str);\n    };\n    /**\n     * @param {?} start\n     * @return {?}\n     */\n    _Scanner.prototype.scanNumber = function (start) {\n        var /** @type {?} */ simple = (this.index === start);\n        this.advance(); // Skip initial digit.\n        while (true) {\n            if (isDigit(this.peek)) {\n            }\n            else if (this.peek == $PERIOD) {\n                simple = false;\n            }\n            else if (isExponentStart(this.peek)) {\n                this.advance();\n                if (isExponentSign(this.peek))\n                    this.advance();\n                if (!isDigit(this.peek))\n                    return this.error('Invalid exponent', -1);\n                simple = false;\n            }\n            else {\n                break;\n            }\n            this.advance();\n        }\n        var /** @type {?} */ str = this.input.substring(start, this.index);\n        var /** @type {?} */ value = simple ? parseIntAutoRadix(str) : parseFloat(str);\n        return newNumberToken(start, value);\n    };\n    /**\n     * @return {?}\n     */\n    _Scanner.prototype.scanString = function () {\n        var /** @type {?} */ start = this.index;\n        var /** @type {?} */ quote = this.peek;\n        this.advance(); // Skip initial quote.\n        var /** @type {?} */ buffer = '';\n        var /** @type {?} */ marker = this.index;\n        var /** @type {?} */ input = this.input;\n        while (this.peek != quote) {\n            if (this.peek == $BACKSLASH) {\n                buffer += input.substring(marker, this.index);\n                this.advance();\n                var /** @type {?} */ unescapedCode = void 0;\n                // Workaround for TS2.1-introduced type strictness\n                this.peek = this.peek;\n                if (this.peek == $u) {\n                    // 4 character hex code for unicode character.\n                    var /** @type {?} */ hex = input.substring(this.index + 1, this.index + 5);\n                    if (/^[0-9a-f]+$/i.test(hex)) {\n                        unescapedCode = parseInt(hex, 16);\n                    }\n                    else {\n                        return this.error(\"Invalid unicode escape [\\\\u\" + hex + \"]\", 0);\n                    }\n                    for (var /** @type {?} */ i = 0; i < 5; i++) {\n                        this.advance();\n                    }\n                }\n                else {\n                    unescapedCode = unescape(this.peek);\n                    this.advance();\n                }\n                buffer += String.fromCharCode(unescapedCode);\n                marker = this.index;\n            }\n            else if (this.peek == $EOF) {\n                return this.error('Unterminated quote', 0);\n            }\n            else {\n                this.advance();\n            }\n        }\n        var /** @type {?} */ last = input.substring(marker, this.index);\n        this.advance(); // Skip terminating quote.\n        return newStringToken(start, buffer + last);\n    };\n    /**\n     * @param {?} message\n     * @param {?} offset\n     * @return {?}\n     */\n    _Scanner.prototype.error = function (message, offset) {\n        var /** @type {?} */ position = this.index + offset;\n        return newErrorToken(position, \"Lexer Error: \" + message + \" at column \" + position + \" in expression [\" + this.input + \"]\");\n    };\n    return _Scanner;\n}());\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isIdentifierStart(code) {\n    return ($a <= code && code <= $z) || ($A <= code && code <= $Z) ||\n        (code == $_) || (code == $$);\n}\n/**\n * @param {?} input\n * @return {?}\n */\nfunction isIdentifier(input) {\n    if (input.length == 0)\n        return false;\n    var /** @type {?} */ scanner = new _Scanner(input);\n    if (!isIdentifierStart(scanner.peek))\n        return false;\n    scanner.advance();\n    while (scanner.peek !== $EOF) {\n        if (!isIdentifierPart(scanner.peek))\n            return false;\n        scanner.advance();\n    }\n    return true;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isIdentifierPart(code) {\n    return isAsciiLetter(code) || isDigit(code) || (code == $_) ||\n        (code == $$);\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isExponentStart(code) {\n    return code == $e || code == $E;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isExponentSign(code) {\n    return code == $MINUS || code == $PLUS;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isQuote(code) {\n    return code === $SQ || code === $DQ || code === $BT;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction unescape(code) {\n    switch (code) {\n        case $n:\n            return $LF;\n        case $f:\n            return $FF;\n        case $r:\n            return $CR;\n        case $t:\n            return $TAB;\n        case $v:\n            return $VTAB;\n        default:\n            return code;\n    }\n}\n/**\n * @param {?} text\n * @return {?}\n */\nfunction parseIntAutoRadix(text) {\n    var /** @type {?} */ result = parseInt(text);\n    if (isNaN(result)) {\n        throw new Error('Invalid integer literal when parsing ' + text);\n    }\n    return result;\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar SplitInterpolation = (function () {\n    /**\n     * @param {?} strings\n     * @param {?} expressions\n     * @param {?} offsets\n     */\n    function SplitInterpolation(strings, expressions, offsets) {\n        this.strings = strings;\n        this.expressions = expressions;\n        this.offsets = offsets;\n    }\n    return SplitInterpolation;\n}());\nvar TemplateBindingParseResult = (function () {\n    /**\n     * @param {?} templateBindings\n     * @param {?} warnings\n     * @param {?} errors\n     */\n    function TemplateBindingParseResult(templateBindings, warnings, errors) {\n        this.templateBindings = templateBindings;\n        this.warnings = warnings;\n        this.errors = errors;\n    }\n    return TemplateBindingParseResult;\n}());\n/**\n * @param {?} config\n * @return {?}\n */\nfunction _createInterpolateRegExp(config) {\n    var /** @type {?} */ pattern = escapeRegExp(config.start) + '([\\\\s\\\\S]*?)' + escapeRegExp(config.end);\n    return new RegExp(pattern, 'g');\n}\nvar Parser = (function () {\n    /**\n     * @param {?} _lexer\n     */\n    function Parser(_lexer) {\n        this._lexer = _lexer;\n        this.errors = [];\n    }\n    /**\n     * @param {?} input\n     * @param {?} location\n     * @param {?=} interpolationConfig\n     * @return {?}\n     */\n    Parser.prototype.parseAction = function (input, location, interpolationConfig) {\n        if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n        this._checkNoInterpolation(input, location, interpolationConfig);\n        var /** @type {?} */ sourceToLex = this._stripComments(input);\n        var /** @type {?} */ tokens = this._lexer.tokenize(this._stripComments(input));\n        var /** @type {?} */ ast = new _ParseAST(input, location, tokens, sourceToLex.length, true, this.errors, input.length - sourceToLex.length)\n            .parseChain();\n        return new ASTWithSource(ast, input, location, this.errors);\n    };\n    /**\n     * @param {?} input\n     * @param {?} location\n     * @param {?=} interpolationConfig\n     * @return {?}\n     */\n    Parser.prototype.parseBinding = function (input, location, interpolationConfig) {\n        if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n        var /** @type {?} */ ast = this._parseBindingAst(input, location, interpolationConfig);\n        return new ASTWithSource(ast, input, location, this.errors);\n    };\n    /**\n     * @param {?} input\n     * @param {?} location\n     * @param {?=} interpolationConfig\n     * @return {?}\n     */\n    Parser.prototype.parseSimpleBinding = function (input, location, interpolationConfig) {\n        if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n        var /** @type {?} */ ast = this._parseBindingAst(input, location, interpolationConfig);\n        var /** @type {?} */ errors = SimpleExpressionChecker.check(ast);\n        if (errors.length > 0) {\n            this._reportError(\"Host binding expression cannot contain \" + errors.join(' '), input, location);\n        }\n        return new ASTWithSource(ast, input, location, this.errors);\n    };\n    /**\n     * @param {?} message\n     * @param {?} input\n     * @param {?} errLocation\n     * @param {?=} ctxLocation\n     * @return {?}\n     */\n    Parser.prototype._reportError = function (message, input, errLocation, ctxLocation) {\n        this.errors.push(new ParserError(message, input, errLocation, ctxLocation));\n    };\n    /**\n     * @param {?} input\n     * @param {?} location\n     * @param {?} interpolationConfig\n     * @return {?}\n     */\n    Parser.prototype._parseBindingAst = function (input, location, interpolationConfig) {\n        // Quotes expressions use 3rd-party expression language. We don't want to use\n        // our lexer or parser for that, so we check for that ahead of time.\n        var /** @type {?} */ quote = this._parseQuote(input, location);\n        if (quote != null) {\n            return quote;\n        }\n        this._checkNoInterpolation(input, location, interpolationConfig);\n        var /** @type {?} */ sourceToLex = this._stripComments(input);\n        var /** @type {?} */ tokens = this._lexer.tokenize(sourceToLex);\n        return new _ParseAST(input, location, tokens, sourceToLex.length, false, this.errors, input.length - sourceToLex.length)\n            .parseChain();\n    };\n    /**\n     * @param {?} input\n     * @param {?} location\n     * @return {?}\n     */\n    Parser.prototype._parseQuote = function (input, location) {\n        if (input == null)\n            return null;\n        var /** @type {?} */ prefixSeparatorIndex = input.indexOf(':');\n        if (prefixSeparatorIndex == -1)\n            return null;\n        var /** @type {?} */ prefix = input.substring(0, prefixSeparatorIndex).trim();\n        if (!isIdentifier(prefix))\n            return null;\n        var /** @type {?} */ uninterpretedExpression = input.substring(prefixSeparatorIndex + 1);\n        return new Quote(new ParseSpan(0, input.length), prefix, uninterpretedExpression, location);\n    };\n    /**\n     * @param {?} prefixToken\n     * @param {?} input\n     * @param {?} location\n     * @return {?}\n     */\n    Parser.prototype.parseTemplateBindings = function (prefixToken, input, location) {\n        var /** @type {?} */ tokens = this._lexer.tokenize(input);\n        if (prefixToken) {\n            // Prefix the tokens with the tokens from prefixToken but have them take no space (0 index).\n            var /** @type {?} */ prefixTokens = this._lexer.tokenize(prefixToken).map(function (t) {\n                t.index = 0;\n                return t;\n            });\n            tokens.unshift.apply(tokens, prefixTokens);\n        }\n        return new _ParseAST(input, location, tokens, input.length, false, this.errors, 0)\n            .parseTemplateBindings();\n    };\n    /**\n     * @param {?} input\n     * @param {?} location\n     * @param {?=} interpolationConfig\n     * @return {?}\n     */\n    Parser.prototype.parseInterpolation = function (input, location, interpolationConfig) {\n        if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n        var /** @type {?} */ split = this.splitInterpolation(input, location, interpolationConfig);\n        if (split == null)\n            return null;\n        var /** @type {?} */ expressions = [];\n        for (var /** @type {?} */ i = 0; i < split.expressions.length; ++i) {\n            var /** @type {?} */ expressionText = split.expressions[i];\n            var /** @type {?} */ sourceToLex = this._stripComments(expressionText);\n            var /** @type {?} */ tokens = this._lexer.tokenize(this._stripComments(split.expressions[i]));\n            var /** @type {?} */ ast = new _ParseAST(input, location, tokens, sourceToLex.length, false, this.errors, split.offsets[i] + (expressionText.length - sourceToLex.length))\n                .parseChain();\n            expressions.push(ast);\n        }\n        return new ASTWithSource(new Interpolation(new ParseSpan(0, input == null ? 0 : input.length), split.strings, expressions), input, location, this.errors);\n    };\n    /**\n     * @param {?} input\n     * @param {?} location\n     * @param {?=} interpolationConfig\n     * @return {?}\n     */\n    Parser.prototype.splitInterpolation = function (input, location, interpolationConfig) {\n        if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n        var /** @type {?} */ regexp = _createInterpolateRegExp(interpolationConfig);\n        var /** @type {?} */ parts = input.split(regexp);\n        if (parts.length <= 1) {\n            return null;\n        }\n        var /** @type {?} */ strings = [];\n        var /** @type {?} */ expressions = [];\n        var /** @type {?} */ offsets = [];\n        var /** @type {?} */ offset = 0;\n        for (var /** @type {?} */ i = 0; i < parts.length; i++) {\n            var /** @type {?} */ part = parts[i];\n            if (i % 2 === 0) {\n                // fixed string\n                strings.push(part);\n                offset += part.length;\n            }\n            else if (part.trim().length > 0) {\n                offset += interpolationConfig.start.length;\n                expressions.push(part);\n                offsets.push(offset);\n                offset += part.length + interpolationConfig.end.length;\n            }\n            else {\n                this._reportError('Blank expressions are not allowed in interpolated strings', input, \"at column \" + this._findInterpolationErrorColumn(parts, i, interpolationConfig) + \" in\", location);\n                expressions.push('$implict');\n                offsets.push(offset);\n            }\n        }\n        return new SplitInterpolation(strings, expressions, offsets);\n    };\n    /**\n     * @param {?} input\n     * @param {?} location\n     * @return {?}\n     */\n    Parser.prototype.wrapLiteralPrimitive = function (input, location) {\n        return new ASTWithSource(new LiteralPrimitive(new ParseSpan(0, input == null ? 0 : input.length), input), input, location, this.errors);\n    };\n    /**\n     * @param {?} input\n     * @return {?}\n     */\n    Parser.prototype._stripComments = function (input) {\n        var /** @type {?} */ i = this._commentStart(input);\n        return i != null ? input.substring(0, i).trim() : input;\n    };\n    /**\n     * @param {?} input\n     * @return {?}\n     */\n    Parser.prototype._commentStart = function (input) {\n        var /** @type {?} */ outerQuote = null;\n        for (var /** @type {?} */ i = 0; i < input.length - 1; i++) {\n            var /** @type {?} */ char = input.charCodeAt(i);\n            var /** @type {?} */ nextChar = input.charCodeAt(i + 1);\n            if (char === $SLASH && nextChar == $SLASH && outerQuote == null)\n                return i;\n            if (outerQuote === char) {\n                outerQuote = null;\n            }\n            else if (outerQuote == null && isQuote(char)) {\n                outerQuote = char;\n            }\n        }\n        return null;\n    };\n    /**\n     * @param {?} input\n     * @param {?} location\n     * @param {?} interpolationConfig\n     * @return {?}\n     */\n    Parser.prototype._checkNoInterpolation = function (input, location, interpolationConfig) {\n        var /** @type {?} */ regexp = _createInterpolateRegExp(interpolationConfig);\n        var /** @type {?} */ parts = input.split(regexp);\n        if (parts.length > 1) {\n            this._reportError(\"Got interpolation (\" + interpolationConfig.start + interpolationConfig.end + \") where expression was expected\", input, \"at column \" + this._findInterpolationErrorColumn(parts, 1, interpolationConfig) + \" in\", location);\n        }\n    };\n    /**\n     * @param {?} parts\n     * @param {?} partInErrIdx\n     * @param {?} interpolationConfig\n     * @return {?}\n     */\n    Parser.prototype._findInterpolationErrorColumn = function (parts, partInErrIdx, interpolationConfig) {\n        var /** @type {?} */ errLocation = '';\n        for (var /** @type {?} */ j = 0; j < partInErrIdx; j++) {\n            errLocation += j % 2 === 0 ?\n                parts[j] :\n                \"\" + interpolationConfig.start + parts[j] + interpolationConfig.end;\n        }\n        return errLocation.length;\n    };\n    return Parser;\n}());\nParser.decorators = [\n    { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nParser.ctorParameters = function () { return [\n    { type: Lexer, },\n]; };\nvar _ParseAST = (function () {\n    /**\n     * @param {?} input\n     * @param {?} location\n     * @param {?} tokens\n     * @param {?} inputLength\n     * @param {?} parseAction\n     * @param {?} errors\n     * @param {?} offset\n     */\n    function _ParseAST(input, location, tokens, inputLength, parseAction, errors, offset) {\n        this.input = input;\n        this.location = location;\n        this.tokens = tokens;\n        this.inputLength = inputLength;\n        this.parseAction = parseAction;\n        this.errors = errors;\n        this.offset = offset;\n        this.rparensExpected = 0;\n        this.rbracketsExpected = 0;\n        this.rbracesExpected = 0;\n        this.index = 0;\n    }\n    /**\n     * @param {?} offset\n     * @return {?}\n     */\n    _ParseAST.prototype.peek = function (offset) {\n        var /** @type {?} */ i = this.index + offset;\n        return i < this.tokens.length ? this.tokens[i] : EOF;\n    };\n    Object.defineProperty(_ParseAST.prototype, \"next\", {\n        /**\n         * @return {?}\n         */\n        get: function () { return this.peek(0); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(_ParseAST.prototype, \"inputIndex\", {\n        /**\n         * @return {?}\n         */\n        get: function () {\n            return (this.index < this.tokens.length) ? this.next.index + this.offset :\n                this.inputLength + this.offset;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @param {?} start\n     * @return {?}\n     */\n    _ParseAST.prototype.span = function (start) { return new ParseSpan(start, this.inputIndex); };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.advance = function () { this.index++; };\n    /**\n     * @param {?} code\n     * @return {?}\n     */\n    _ParseAST.prototype.optionalCharacter = function (code) {\n        if (this.next.isCharacter(code)) {\n            this.advance();\n            return true;\n        }\n        else {\n            return false;\n        }\n    };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.peekKeywordLet = function () { return this.next.isKeywordLet(); };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.peekKeywordAs = function () { return this.next.isKeywordAs(); };\n    /**\n     * @param {?} code\n     * @return {?}\n     */\n    _ParseAST.prototype.expectCharacter = function (code) {\n        if (this.optionalCharacter(code))\n            return;\n        this.error(\"Missing expected \" + String.fromCharCode(code));\n    };\n    /**\n     * @param {?} op\n     * @return {?}\n     */\n    _ParseAST.prototype.optionalOperator = function (op) {\n        if (this.next.isOperator(op)) {\n            this.advance();\n            return true;\n        }\n        else {\n            return false;\n        }\n    };\n    /**\n     * @param {?} operator\n     * @return {?}\n     */\n    _ParseAST.prototype.expectOperator = function (operator) {\n        if (this.optionalOperator(operator))\n            return;\n        this.error(\"Missing expected operator \" + operator);\n    };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.expectIdentifierOrKeyword = function () {\n        var /** @type {?} */ n = this.next;\n        if (!n.isIdentifier() && !n.isKeyword()) {\n            this.error(\"Unexpected token \" + n + \", expected identifier or keyword\");\n            return '';\n        }\n        this.advance();\n        return n.toString();\n    };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.expectIdentifierOrKeywordOrString = function () {\n        var /** @type {?} */ n = this.next;\n        if (!n.isIdentifier() && !n.isKeyword() && !n.isString()) {\n            this.error(\"Unexpected token \" + n + \", expected identifier, keyword, or string\");\n            return '';\n        }\n        this.advance();\n        return n.toString();\n    };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.parseChain = function () {\n        var /** @type {?} */ exprs = [];\n        var /** @type {?} */ start = this.inputIndex;\n        while (this.index < this.tokens.length) {\n            var /** @type {?} */ expr = this.parsePipe();\n            exprs.push(expr);\n            if (this.optionalCharacter($SEMICOLON)) {\n                if (!this.parseAction) {\n                    this.error('Binding expression cannot contain chained expression');\n                }\n                while (this.optionalCharacter($SEMICOLON)) {\n                } // read all semicolons\n            }\n            else if (this.index < this.tokens.length) {\n                this.error(\"Unexpected token '\" + this.next + \"'\");\n            }\n        }\n        if (exprs.length == 0)\n            return new EmptyExpr(this.span(start));\n        if (exprs.length == 1)\n            return exprs[0];\n        return new Chain(this.span(start), exprs);\n    };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.parsePipe = function () {\n        var /** @type {?} */ result = this.parseExpression();\n        if (this.optionalOperator('|')) {\n            if (this.parseAction) {\n                this.error('Cannot have a pipe in an action expression');\n            }\n            do {\n                var /** @type {?} */ name = this.expectIdentifierOrKeyword();\n                var /** @type {?} */ args = [];\n                while (this.optionalCharacter($COLON)) {\n                    args.push(this.parseExpression());\n                }\n                result = new BindingPipe(this.span(result.span.start), result, name, args);\n            } while (this.optionalOperator('|'));\n        }\n        return result;\n    };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.parseExpression = function () { return this.parseConditional(); };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.parseConditional = function () {\n        var /** @type {?} */ start = this.inputIndex;\n        var /** @type {?} */ result = this.parseLogicalOr();\n        if (this.optionalOperator('?')) {\n            var /** @type {?} */ yes = this.parsePipe();\n            var /** @type {?} */ no = void 0;\n            if (!this.optionalCharacter($COLON)) {\n                var /** @type {?} */ end = this.inputIndex;\n                var /** @type {?} */ expression = this.input.substring(start, end);\n                this.error(\"Conditional expression \" + expression + \" requires all 3 expressions\");\n                no = new EmptyExpr(this.span(start));\n            }\n            else {\n                no = this.parsePipe();\n            }\n            return new Conditional(this.span(start), result, yes, no);\n        }\n        else {\n            return result;\n        }\n    };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.parseLogicalOr = function () {\n        // '||'\n        var /** @type {?} */ result = this.parseLogicalAnd();\n        while (this.optionalOperator('||')) {\n            var /** @type {?} */ right = this.parseLogicalAnd();\n            result = new Binary(this.span(result.span.start), '||', result, right);\n        }\n        return result;\n    };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.parseLogicalAnd = function () {\n        // '&&'\n        var /** @type {?} */ result = this.parseEquality();\n        while (this.optionalOperator('&&')) {\n            var /** @type {?} */ right = this.parseEquality();\n            result = new Binary(this.span(result.span.start), '&&', result, right);\n        }\n        return result;\n    };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.parseEquality = function () {\n        // '==','!=','===','!=='\n        var /** @type {?} */ result = this.parseRelational();\n        while (this.next.type == TokenType.Operator) {\n            var /** @type {?} */ operator = this.next.strValue;\n            switch (operator) {\n                case '==':\n                case '===':\n                case '!=':\n                case '!==':\n                    this.advance();\n                    var /** @type {?} */ right = this.parseRelational();\n                    result = new Binary(this.span(result.span.start), operator, result, right);\n                    continue;\n            }\n            break;\n        }\n        return result;\n    };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.parseRelational = function () {\n        // '<', '>', '<=', '>='\n        var /** @type {?} */ result = this.parseAdditive();\n        while (this.next.type == TokenType.Operator) {\n            var /** @type {?} */ operator = this.next.strValue;\n            switch (operator) {\n                case '<':\n                case '>':\n                case '<=':\n                case '>=':\n                    this.advance();\n                    var /** @type {?} */ right = this.parseAdditive();\n                    result = new Binary(this.span(result.span.start), operator, result, right);\n                    continue;\n            }\n            break;\n        }\n        return result;\n    };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.parseAdditive = function () {\n        // '+', '-'\n        var /** @type {?} */ result = this.parseMultiplicative();\n        while (this.next.type == TokenType.Operator) {\n            var /** @type {?} */ operator = this.next.strValue;\n            switch (operator) {\n                case '+':\n                case '-':\n                    this.advance();\n                    var /** @type {?} */ right = this.parseMultiplicative();\n                    result = new Binary(this.span(result.span.start), operator, result, right);\n                    continue;\n            }\n            break;\n        }\n        return result;\n    };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.parseMultiplicative = function () {\n        // '*', '%', '/'\n        var /** @type {?} */ result = this.parsePrefix();\n        while (this.next.type == TokenType.Operator) {\n            var /** @type {?} */ operator = this.next.strValue;\n            switch (operator) {\n                case '*':\n                case '%':\n                case '/':\n                    this.advance();\n                    var /** @type {?} */ right = this.parsePrefix();\n                    result = new Binary(this.span(result.span.start), operator, result, right);\n                    continue;\n            }\n            break;\n        }\n        return result;\n    };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.parsePrefix = function () {\n        if (this.next.type == TokenType.Operator) {\n            var /** @type {?} */ start = this.inputIndex;\n            var /** @type {?} */ operator = this.next.strValue;\n            var /** @type {?} */ result = void 0;\n            switch (operator) {\n                case '+':\n                    this.advance();\n                    return this.parsePrefix();\n                case '-':\n                    this.advance();\n                    result = this.parsePrefix();\n                    return new Binary(this.span(start), operator, new LiteralPrimitive(new ParseSpan(start, start), 0), result);\n                case '!':\n                    this.advance();\n                    result = this.parsePrefix();\n                    return new PrefixNot(this.span(start), result);\n            }\n        }\n        return this.parseCallChain();\n    };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.parseCallChain = function () {\n        var /** @type {?} */ result = this.parsePrimary();\n        while (true) {\n            if (this.optionalCharacter($PERIOD)) {\n                result = this.parseAccessMemberOrMethodCall(result, false);\n            }\n            else if (this.optionalOperator('?.')) {\n                result = this.parseAccessMemberOrMethodCall(result, true);\n            }\n            else if (this.optionalCharacter($LBRACKET)) {\n                this.rbracketsExpected++;\n                var /** @type {?} */ key = this.parsePipe();\n                this.rbracketsExpected--;\n                this.expectCharacter($RBRACKET);\n                if (this.optionalOperator('=')) {\n                    var /** @type {?} */ value = this.parseConditional();\n                    result = new KeyedWrite(this.span(result.span.start), result, key, value);\n                }\n                else {\n                    result = new KeyedRead(this.span(result.span.start), result, key);\n                }\n            }\n            else if (this.optionalCharacter($LPAREN)) {\n                this.rparensExpected++;\n                var /** @type {?} */ args = this.parseCallArguments();\n                this.rparensExpected--;\n                this.expectCharacter($RPAREN);\n                result = new FunctionCall(this.span(result.span.start), result, args);\n            }\n            else {\n                return result;\n            }\n        }\n    };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.parsePrimary = function () {\n        var /** @type {?} */ start = this.inputIndex;\n        if (this.optionalCharacter($LPAREN)) {\n            this.rparensExpected++;\n            var /** @type {?} */ result = this.parsePipe();\n            this.rparensExpected--;\n            this.expectCharacter($RPAREN);\n            return result;\n        }\n        else if (this.next.isKeywordNull()) {\n            this.advance();\n            return new LiteralPrimitive(this.span(start), null);\n        }\n        else if (this.next.isKeywordUndefined()) {\n            this.advance();\n            return new LiteralPrimitive(this.span(start), void 0);\n        }\n        else if (this.next.isKeywordTrue()) {\n            this.advance();\n            return new LiteralPrimitive(this.span(start), true);\n        }\n        else if (this.next.isKeywordFalse()) {\n            this.advance();\n            return new LiteralPrimitive(this.span(start), false);\n        }\n        else if (this.next.isKeywordThis()) {\n            this.advance();\n            return new ImplicitReceiver(this.span(start));\n        }\n        else if (this.optionalCharacter($LBRACKET)) {\n            this.rbracketsExpected++;\n            var /** @type {?} */ elements = this.parseExpressionList($RBRACKET);\n            this.rbracketsExpected--;\n            this.expectCharacter($RBRACKET);\n            return new LiteralArray(this.span(start), elements);\n        }\n        else if (this.next.isCharacter($LBRACE)) {\n            return this.parseLiteralMap();\n        }\n        else if (this.next.isIdentifier()) {\n            return this.parseAccessMemberOrMethodCall(new ImplicitReceiver(this.span(start)), false);\n        }\n        else if (this.next.isNumber()) {\n            var /** @type {?} */ value = this.next.toNumber();\n            this.advance();\n            return new LiteralPrimitive(this.span(start), value);\n        }\n        else if (this.next.isString()) {\n            var /** @type {?} */ literalValue = this.next.toString();\n            this.advance();\n            return new LiteralPrimitive(this.span(start), literalValue);\n        }\n        else if (this.index >= this.tokens.length) {\n            this.error(\"Unexpected end of expression: \" + this.input);\n            return new EmptyExpr(this.span(start));\n        }\n        else {\n            this.error(\"Unexpected token \" + this.next);\n            return new EmptyExpr(this.span(start));\n        }\n    };\n    /**\n     * @param {?} terminator\n     * @return {?}\n     */\n    _ParseAST.prototype.parseExpressionList = function (terminator) {\n        var /** @type {?} */ result = [];\n        if (!this.next.isCharacter(terminator)) {\n            do {\n                result.push(this.parsePipe());\n            } while (this.optionalCharacter($COMMA));\n        }\n        return result;\n    };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.parseLiteralMap = function () {\n        var /** @type {?} */ keys = [];\n        var /** @type {?} */ values = [];\n        var /** @type {?} */ start = this.inputIndex;\n        this.expectCharacter($LBRACE);\n        if (!this.optionalCharacter($RBRACE)) {\n            this.rbracesExpected++;\n            do {\n                var /** @type {?} */ key = this.expectIdentifierOrKeywordOrString();\n                keys.push(key);\n                this.expectCharacter($COLON);\n                values.push(this.parsePipe());\n            } while (this.optionalCharacter($COMMA));\n            this.rbracesExpected--;\n            this.expectCharacter($RBRACE);\n        }\n        return new LiteralMap(this.span(start), keys, values);\n    };\n    /**\n     * @param {?} receiver\n     * @param {?=} isSafe\n     * @return {?}\n     */\n    _ParseAST.prototype.parseAccessMemberOrMethodCall = function (receiver, isSafe) {\n        if (isSafe === void 0) { isSafe = false; }\n        var /** @type {?} */ start = receiver.span.start;\n        var /** @type {?} */ id = this.expectIdentifierOrKeyword();\n        if (this.optionalCharacter($LPAREN)) {\n            this.rparensExpected++;\n            var /** @type {?} */ args = this.parseCallArguments();\n            this.expectCharacter($RPAREN);\n            this.rparensExpected--;\n            var /** @type {?} */ span = this.span(start);\n            return isSafe ? new SafeMethodCall(span, receiver, id, args) :\n                new MethodCall(span, receiver, id, args);\n        }\n        else {\n            if (isSafe) {\n                if (this.optionalOperator('=')) {\n                    this.error('The \\'?.\\' operator cannot be used in the assignment');\n                    return new EmptyExpr(this.span(start));\n                }\n                else {\n                    return new SafePropertyRead(this.span(start), receiver, id);\n                }\n            }\n            else {\n                if (this.optionalOperator('=')) {\n                    if (!this.parseAction) {\n                        this.error('Bindings cannot contain assignments');\n                        return new EmptyExpr(this.span(start));\n                    }\n                    var /** @type {?} */ value = this.parseConditional();\n                    return new PropertyWrite(this.span(start), receiver, id, value);\n                }\n                else {\n                    return new PropertyRead(this.span(start), receiver, id);\n                }\n            }\n        }\n    };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.parseCallArguments = function () {\n        if (this.next.isCharacter($RPAREN))\n            return [];\n        var /** @type {?} */ positionals = [];\n        do {\n            positionals.push(this.parsePipe());\n        } while (this.optionalCharacter($COMMA));\n        return (positionals);\n    };\n    /**\n     * An identifier, a keyword, a string with an optional `-` inbetween.\n     * @return {?}\n     */\n    _ParseAST.prototype.expectTemplateBindingKey = function () {\n        var /** @type {?} */ result = '';\n        var /** @type {?} */ operatorFound = false;\n        do {\n            result += this.expectIdentifierOrKeywordOrString();\n            operatorFound = this.optionalOperator('-');\n            if (operatorFound) {\n                result += '-';\n            }\n        } while (operatorFound);\n        return result.toString();\n    };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.parseTemplateBindings = function () {\n        var /** @type {?} */ bindings = [];\n        var /** @type {?} */ prefix = null;\n        var /** @type {?} */ warnings = [];\n        while (this.index < this.tokens.length) {\n            var /** @type {?} */ start = this.inputIndex;\n            var /** @type {?} */ keyIsVar = this.peekKeywordLet();\n            if (keyIsVar) {\n                this.advance();\n            }\n            var /** @type {?} */ rawKey = this.expectTemplateBindingKey();\n            var /** @type {?} */ key = rawKey;\n            if (!keyIsVar) {\n                if (prefix == null) {\n                    prefix = key;\n                }\n                else {\n                    key = prefix + key[0].toUpperCase() + key.substring(1);\n                }\n            }\n            this.optionalCharacter($COLON);\n            var /** @type {?} */ name = null;\n            var /** @type {?} */ expression = null;\n            if (keyIsVar) {\n                if (this.optionalOperator('=')) {\n                    name = this.expectTemplateBindingKey();\n                }\n                else {\n                    name = '\\$implicit';\n                }\n            }\n            else if (this.peekKeywordAs()) {\n                var /** @type {?} */ letStart = this.inputIndex;\n                this.advance(); // consume `as`\n                name = rawKey;\n                key = this.expectTemplateBindingKey(); // read local var name\n                keyIsVar = true;\n            }\n            else if (this.next !== EOF && !this.peekKeywordLet()) {\n                var /** @type {?} */ start_2 = this.inputIndex;\n                var /** @type {?} */ ast = this.parsePipe();\n                var /** @type {?} */ source = this.input.substring(start_2 - this.offset, this.inputIndex - this.offset);\n                expression = new ASTWithSource(ast, source, this.location, this.errors);\n            }\n            bindings.push(new TemplateBinding(this.span(start), key, keyIsVar, name, expression));\n            if (this.peekKeywordAs() && !keyIsVar) {\n                var /** @type {?} */ letStart = this.inputIndex;\n                this.advance(); // consume `as`\n                var /** @type {?} */ letName = this.expectTemplateBindingKey(); // read local var name\n                bindings.push(new TemplateBinding(this.span(letStart), letName, true, key, null));\n            }\n            if (!this.optionalCharacter($SEMICOLON)) {\n                this.optionalCharacter($COMMA);\n            }\n        }\n        return new TemplateBindingParseResult(bindings, warnings, this.errors);\n    };\n    /**\n     * @param {?} message\n     * @param {?=} index\n     * @return {?}\n     */\n    _ParseAST.prototype.error = function (message, index) {\n        if (index === void 0) { index = null; }\n        this.errors.push(new ParserError(message, this.input, this.locationText(index), this.location));\n        this.skip();\n    };\n    /**\n     * @param {?=} index\n     * @return {?}\n     */\n    _ParseAST.prototype.locationText = function (index) {\n        if (index === void 0) { index = null; }\n        if (index == null)\n            index = this.index;\n        return (index < this.tokens.length) ? \"at column \" + (this.tokens[index].index + 1) + \" in\" :\n            \"at the end of the expression\";\n    };\n    /**\n     * @return {?}\n     */\n    _ParseAST.prototype.skip = function () {\n        var /** @type {?} */ n = this.next;\n        while (this.index < this.tokens.length && !n.isCharacter($SEMICOLON) &&\n            (this.rparensExpected <= 0 || !n.isCharacter($RPAREN)) &&\n            (this.rbracesExpected <= 0 || !n.isCharacter($RBRACE)) &&\n            (this.rbracketsExpected <= 0 || !n.isCharacter($RBRACKET))) {\n            if (this.next.isError()) {\n                this.errors.push(new ParserError(this.next.toString(), this.input, this.locationText(), this.location));\n            }\n            this.advance();\n            n = this.next;\n        }\n    };\n    return _ParseAST;\n}());\nvar SimpleExpressionChecker = (function () {\n    function SimpleExpressionChecker() {\n        this.errors = [];\n    }\n    /**\n     * @param {?} ast\n     * @return {?}\n     */\n    SimpleExpressionChecker.check = function (ast) {\n        var /** @type {?} */ s = new SimpleExpressionChecker();\n        ast.visit(s);\n        return s.errors;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    SimpleExpressionChecker.prototype.visitImplicitReceiver = function (ast, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    SimpleExpressionChecker.prototype.visitInterpolation = function (ast, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    SimpleExpressionChecker.prototype.visitLiteralPrimitive = function (ast, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    SimpleExpressionChecker.prototype.visitPropertyRead = function (ast, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    SimpleExpressionChecker.prototype.visitPropertyWrite = function (ast, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    SimpleExpressionChecker.prototype.visitSafePropertyRead = function (ast, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    SimpleExpressionChecker.prototype.visitMethodCall = function (ast, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    SimpleExpressionChecker.prototype.visitSafeMethodCall = function (ast, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    SimpleExpressionChecker.prototype.visitFunctionCall = function (ast, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    SimpleExpressionChecker.prototype.visitLiteralArray = function (ast, context) { this.visitAll(ast.expressions); };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    SimpleExpressionChecker.prototype.visitLiteralMap = function (ast, context) { this.visitAll(ast.values); };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    SimpleExpressionChecker.prototype.visitBinary = function (ast, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    SimpleExpressionChecker.prototype.visitPrefixNot = function (ast, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    SimpleExpressionChecker.prototype.visitConditional = function (ast, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    SimpleExpressionChecker.prototype.visitPipe = function (ast, context) { this.errors.push('pipes'); };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    SimpleExpressionChecker.prototype.visitKeyedRead = function (ast, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    SimpleExpressionChecker.prototype.visitKeyedWrite = function (ast, context) { };\n    /**\n     * @param {?} asts\n     * @return {?}\n     */\n    SimpleExpressionChecker.prototype.visitAll = function (asts) {\n        var _this = this;\n        return asts.map(function (node) { return node.visit(_this); });\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    SimpleExpressionChecker.prototype.visitChain = function (ast, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    SimpleExpressionChecker.prototype.visitQuote = function (ast, context) { };\n    return SimpleExpressionChecker;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar ParseLocation = (function () {\n    /**\n     * @param {?} file\n     * @param {?} offset\n     * @param {?} line\n     * @param {?} col\n     */\n    function ParseLocation(file, offset, line, col) {\n        this.file = file;\n        this.offset = offset;\n        this.line = line;\n        this.col = col;\n    }\n    /**\n     * @return {?}\n     */\n    ParseLocation.prototype.toString = function () {\n        return this.offset != null ? this.file.url + \"@\" + this.line + \":\" + this.col : this.file.url;\n    };\n    /**\n     * @param {?} delta\n     * @return {?}\n     */\n    ParseLocation.prototype.moveBy = function (delta) {\n        var /** @type {?} */ source = this.file.content;\n        var /** @type {?} */ len = source.length;\n        var /** @type {?} */ offset = this.offset;\n        var /** @type {?} */ line = this.line;\n        var /** @type {?} */ col = this.col;\n        while (offset > 0 && delta < 0) {\n            offset--;\n            delta++;\n            var /** @type {?} */ ch = source.charCodeAt(offset);\n            if (ch == $LF) {\n                line--;\n                var /** @type {?} */ priorLine = source.substr(0, offset - 1).lastIndexOf(String.fromCharCode($LF));\n                col = priorLine > 0 ? offset - priorLine : offset;\n            }\n            else {\n                col--;\n            }\n        }\n        while (offset < len && delta > 0) {\n            var /** @type {?} */ ch = source.charCodeAt(offset);\n            offset++;\n            delta--;\n            if (ch == $LF) {\n                line++;\n                col = 0;\n            }\n            else {\n                col++;\n            }\n        }\n        return new ParseLocation(this.file, offset, line, col);\n    };\n    /**\n     * @param {?} maxChars\n     * @param {?} maxLines\n     * @return {?}\n     */\n    ParseLocation.prototype.getContext = function (maxChars, maxLines) {\n        var /** @type {?} */ content = this.file.content;\n        var /** @type {?} */ startOffset = this.offset;\n        if (startOffset != null) {\n            if (startOffset > content.length - 1) {\n                startOffset = content.length - 1;\n            }\n            var /** @type {?} */ endOffset = startOffset;\n            var /** @type {?} */ ctxChars = 0;\n            var /** @type {?} */ ctxLines = 0;\n            while (ctxChars < maxChars && startOffset > 0) {\n                startOffset--;\n                ctxChars++;\n                if (content[startOffset] == '\\n') {\n                    if (++ctxLines == maxLines) {\n                        break;\n                    }\n                }\n            }\n            ctxChars = 0;\n            ctxLines = 0;\n            while (ctxChars < maxChars && endOffset < content.length - 1) {\n                endOffset++;\n                ctxChars++;\n                if (content[endOffset] == '\\n') {\n                    if (++ctxLines == maxLines) {\n                        break;\n                    }\n                }\n            }\n            return {\n                before: content.substring(startOffset, this.offset),\n                after: content.substring(this.offset, endOffset + 1),\n            };\n        }\n        return null;\n    };\n    return ParseLocation;\n}());\nvar ParseSourceFile = (function () {\n    /**\n     * @param {?} content\n     * @param {?} url\n     */\n    function ParseSourceFile(content, url) {\n        this.content = content;\n        this.url = url;\n    }\n    return ParseSourceFile;\n}());\nvar ParseSourceSpan = (function () {\n    /**\n     * @param {?} start\n     * @param {?} end\n     * @param {?=} details\n     */\n    function ParseSourceSpan(start, end, details) {\n        if (details === void 0) { details = null; }\n        this.start = start;\n        this.end = end;\n        this.details = details;\n    }\n    /**\n     * @return {?}\n     */\n    ParseSourceSpan.prototype.toString = function () {\n        return this.start.file.content.substring(this.start.offset, this.end.offset);\n    };\n    return ParseSourceSpan;\n}());\nvar ParseErrorLevel = {};\nParseErrorLevel.WARNING = 0;\nParseErrorLevel.ERROR = 1;\nParseErrorLevel[ParseErrorLevel.WARNING] = \"WARNING\";\nParseErrorLevel[ParseErrorLevel.ERROR] = \"ERROR\";\nvar ParseError = (function () {\n    /**\n     * @param {?} span\n     * @param {?} msg\n     * @param {?=} level\n     */\n    function ParseError(span, msg, level) {\n        if (level === void 0) { level = ParseErrorLevel.ERROR; }\n        this.span = span;\n        this.msg = msg;\n        this.level = level;\n    }\n    /**\n     * @return {?}\n     */\n    ParseError.prototype.toString = function () {\n        var /** @type {?} */ ctx = this.span.start.getContext(100, 3);\n        var /** @type {?} */ contextStr = ctx ? \" (\\\"\" + ctx.before + \"[\" + ParseErrorLevel[this.level] + \" ->]\" + ctx.after + \"\\\")\" : '';\n        var /** @type {?} */ details = this.span.details ? \", \" + this.span.details : '';\n        return \"\" + this.msg + contextStr + \": \" + this.span.start + details;\n    };\n    return ParseError;\n}());\n/**\n * @param {?} kind\n * @param {?} type\n * @return {?}\n */\nfunction typeSourceSpan(kind, type) {\n    var /** @type {?} */ moduleUrl = identifierModuleUrl(type);\n    var /** @type {?} */ sourceFileName = moduleUrl != null ? \"in \" + kind + \" \" + identifierName(type) + \" in \" + moduleUrl :\n        \"in \" + kind + \" \" + identifierName(type);\n    var /** @type {?} */ sourceFile = new ParseSourceFile('', sourceFileName);\n    return new ParseSourceSpan(new ParseLocation(sourceFile, null, null, null), new ParseLocation(sourceFile, null, null, 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 */\nvar Text = (function () {\n    /**\n     * @param {?} value\n     * @param {?} sourceSpan\n     */\n    function Text(value, sourceSpan) {\n        this.value = value;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    Text.prototype.visit = function (visitor, context) { return visitor.visitText(this, context); };\n    return Text;\n}());\nvar Expansion = (function () {\n    /**\n     * @param {?} switchValue\n     * @param {?} type\n     * @param {?} cases\n     * @param {?} sourceSpan\n     * @param {?} switchValueSourceSpan\n     */\n    function Expansion(switchValue, type, cases, sourceSpan, switchValueSourceSpan) {\n        this.switchValue = switchValue;\n        this.type = type;\n        this.cases = cases;\n        this.sourceSpan = sourceSpan;\n        this.switchValueSourceSpan = switchValueSourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    Expansion.prototype.visit = function (visitor, context) { return visitor.visitExpansion(this, context); };\n    return Expansion;\n}());\nvar ExpansionCase = (function () {\n    /**\n     * @param {?} value\n     * @param {?} expression\n     * @param {?} sourceSpan\n     * @param {?} valueSourceSpan\n     * @param {?} expSourceSpan\n     */\n    function ExpansionCase(value, expression, sourceSpan, valueSourceSpan, expSourceSpan) {\n        this.value = value;\n        this.expression = expression;\n        this.sourceSpan = sourceSpan;\n        this.valueSourceSpan = valueSourceSpan;\n        this.expSourceSpan = expSourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    ExpansionCase.prototype.visit = function (visitor, context) { return visitor.visitExpansionCase(this, context); };\n    return ExpansionCase;\n}());\nvar Attribute$1 = (function () {\n    /**\n     * @param {?} name\n     * @param {?} value\n     * @param {?} sourceSpan\n     * @param {?=} valueSpan\n     */\n    function Attribute$1(name, value, sourceSpan, valueSpan) {\n        this.name = name;\n        this.value = value;\n        this.sourceSpan = sourceSpan;\n        this.valueSpan = valueSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    Attribute$1.prototype.visit = function (visitor, context) { return visitor.visitAttribute(this, context); };\n    return Attribute$1;\n}());\nvar Element = (function () {\n    /**\n     * @param {?} name\n     * @param {?} attrs\n     * @param {?} children\n     * @param {?} sourceSpan\n     * @param {?} startSourceSpan\n     * @param {?} endSourceSpan\n     */\n    function Element(name, attrs, children, sourceSpan, startSourceSpan, endSourceSpan) {\n        this.name = name;\n        this.attrs = attrs;\n        this.children = children;\n        this.sourceSpan = sourceSpan;\n        this.startSourceSpan = startSourceSpan;\n        this.endSourceSpan = endSourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    Element.prototype.visit = function (visitor, context) { return visitor.visitElement(this, context); };\n    return Element;\n}());\nvar Comment = (function () {\n    /**\n     * @param {?} value\n     * @param {?} sourceSpan\n     */\n    function Comment(value, sourceSpan) {\n        this.value = value;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    Comment.prototype.visit = function (visitor, context) { return visitor.visitComment(this, context); };\n    return Comment;\n}());\n/**\n * @param {?} visitor\n * @param {?} nodes\n * @param {?=} context\n * @return {?}\n */\nfunction visitAll(visitor, nodes, context) {\n    if (context === void 0) { context = null; }\n    var /** @type {?} */ result = [];\n    var /** @type {?} */ visit = visitor.visit ?\n        function (ast) { return visitor.visit(ast, context) || ast.visit(visitor, context); } :\n        function (ast) { return ast.visit(visitor, context); };\n    nodes.forEach(function (ast) {\n        var /** @type {?} */ astResult = visit(ast);\n        if (astResult) {\n            result.push(astResult);\n        }\n    });\n    return result;\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar TokenType$1 = {};\nTokenType$1.TAG_OPEN_START = 0;\nTokenType$1.TAG_OPEN_END = 1;\nTokenType$1.TAG_OPEN_END_VOID = 2;\nTokenType$1.TAG_CLOSE = 3;\nTokenType$1.TEXT = 4;\nTokenType$1.ESCAPABLE_RAW_TEXT = 5;\nTokenType$1.RAW_TEXT = 6;\nTokenType$1.COMMENT_START = 7;\nTokenType$1.COMMENT_END = 8;\nTokenType$1.CDATA_START = 9;\nTokenType$1.CDATA_END = 10;\nTokenType$1.ATTR_NAME = 11;\nTokenType$1.ATTR_VALUE = 12;\nTokenType$1.DOC_TYPE = 13;\nTokenType$1.EXPANSION_FORM_START = 14;\nTokenType$1.EXPANSION_CASE_VALUE = 15;\nTokenType$1.EXPANSION_CASE_EXP_START = 16;\nTokenType$1.EXPANSION_CASE_EXP_END = 17;\nTokenType$1.EXPANSION_FORM_END = 18;\nTokenType$1.EOF = 19;\nTokenType$1[TokenType$1.TAG_OPEN_START] = \"TAG_OPEN_START\";\nTokenType$1[TokenType$1.TAG_OPEN_END] = \"TAG_OPEN_END\";\nTokenType$1[TokenType$1.TAG_OPEN_END_VOID] = \"TAG_OPEN_END_VOID\";\nTokenType$1[TokenType$1.TAG_CLOSE] = \"TAG_CLOSE\";\nTokenType$1[TokenType$1.TEXT] = \"TEXT\";\nTokenType$1[TokenType$1.ESCAPABLE_RAW_TEXT] = \"ESCAPABLE_RAW_TEXT\";\nTokenType$1[TokenType$1.RAW_TEXT] = \"RAW_TEXT\";\nTokenType$1[TokenType$1.COMMENT_START] = \"COMMENT_START\";\nTokenType$1[TokenType$1.COMMENT_END] = \"COMMENT_END\";\nTokenType$1[TokenType$1.CDATA_START] = \"CDATA_START\";\nTokenType$1[TokenType$1.CDATA_END] = \"CDATA_END\";\nTokenType$1[TokenType$1.ATTR_NAME] = \"ATTR_NAME\";\nTokenType$1[TokenType$1.ATTR_VALUE] = \"ATTR_VALUE\";\nTokenType$1[TokenType$1.DOC_TYPE] = \"DOC_TYPE\";\nTokenType$1[TokenType$1.EXPANSION_FORM_START] = \"EXPANSION_FORM_START\";\nTokenType$1[TokenType$1.EXPANSION_CASE_VALUE] = \"EXPANSION_CASE_VALUE\";\nTokenType$1[TokenType$1.EXPANSION_CASE_EXP_START] = \"EXPANSION_CASE_EXP_START\";\nTokenType$1[TokenType$1.EXPANSION_CASE_EXP_END] = \"EXPANSION_CASE_EXP_END\";\nTokenType$1[TokenType$1.EXPANSION_FORM_END] = \"EXPANSION_FORM_END\";\nTokenType$1[TokenType$1.EOF] = \"EOF\";\nvar Token$1 = (function () {\n    /**\n     * @param {?} type\n     * @param {?} parts\n     * @param {?} sourceSpan\n     */\n    function Token$1(type, parts, sourceSpan) {\n        this.type = type;\n        this.parts = parts;\n        this.sourceSpan = sourceSpan;\n    }\n    return Token$1;\n}());\nvar TokenError = (function (_super) {\n    __extends(TokenError, _super);\n    /**\n     * @param {?} errorMsg\n     * @param {?} tokenType\n     * @param {?} span\n     */\n    function TokenError(errorMsg, tokenType, span) {\n        var _this = _super.call(this, span, errorMsg) || this;\n        _this.tokenType = tokenType;\n        return _this;\n    }\n    return TokenError;\n}(ParseError));\nvar TokenizeResult = (function () {\n    /**\n     * @param {?} tokens\n     * @param {?} errors\n     */\n    function TokenizeResult(tokens, errors) {\n        this.tokens = tokens;\n        this.errors = errors;\n    }\n    return TokenizeResult;\n}());\n/**\n * @param {?} source\n * @param {?} url\n * @param {?} getTagDefinition\n * @param {?=} tokenizeExpansionForms\n * @param {?=} interpolationConfig\n * @return {?}\n */\nfunction tokenize(source, url, getTagDefinition, tokenizeExpansionForms, interpolationConfig) {\n    if (tokenizeExpansionForms === void 0) { tokenizeExpansionForms = false; }\n    if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n    return new _Tokenizer(new ParseSourceFile(source, url), getTagDefinition, tokenizeExpansionForms, interpolationConfig)\n        .tokenize();\n}\nvar _CR_OR_CRLF_REGEXP = /\\r\\n?/g;\n/**\n * @param {?} charCode\n * @return {?}\n */\nfunction _unexpectedCharacterErrorMsg(charCode) {\n    var /** @type {?} */ char = charCode === $EOF ? 'EOF' : String.fromCharCode(charCode);\n    return \"Unexpected character \\\"\" + char + \"\\\"\";\n}\n/**\n * @param {?} entitySrc\n * @return {?}\n */\nfunction _unknownEntityErrorMsg(entitySrc) {\n    return \"Unknown entity \\\"\" + entitySrc + \"\\\" - use the \\\"&#<decimal>;\\\" or  \\\"&#x<hex>;\\\" syntax\";\n}\nvar _ControlFlowError = (function () {\n    /**\n     * @param {?} error\n     */\n    function _ControlFlowError(error) {\n        this.error = error;\n    }\n    return _ControlFlowError;\n}());\nvar _Tokenizer = (function () {\n    /**\n     * @param {?} _file The html source\n     * @param {?} _getTagDefinition\n     * @param {?} _tokenizeIcu Whether to tokenize ICU messages (considered as text nodes when false)\n     * @param {?=} _interpolationConfig\n     */\n    function _Tokenizer(_file, _getTagDefinition, _tokenizeIcu, _interpolationConfig) {\n        if (_interpolationConfig === void 0) { _interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n        this._file = _file;\n        this._getTagDefinition = _getTagDefinition;\n        this._tokenizeIcu = _tokenizeIcu;\n        this._interpolationConfig = _interpolationConfig;\n        this._peek = -1;\n        this._nextPeek = -1;\n        this._index = -1;\n        this._line = 0;\n        this._column = -1;\n        this._expansionCaseStack = [];\n        this._inInterpolation = false;\n        this.tokens = [];\n        this.errors = [];\n        this._input = _file.content;\n        this._length = _file.content.length;\n        this._advance();\n    }\n    /**\n     * @param {?} content\n     * @return {?}\n     */\n    _Tokenizer.prototype._processCarriageReturns = function (content) {\n        // http://www.w3.org/TR/html5/syntax.html#preprocessing-the-input-stream\n        // In order to keep the original position in the source, we can not\n        // pre-process it.\n        // Instead CRs are processed right before instantiating the tokens.\n        return content.replace(_CR_OR_CRLF_REGEXP, '\\n');\n    };\n    /**\n     * @return {?}\n     */\n    _Tokenizer.prototype.tokenize = function () {\n        while (this._peek !== $EOF) {\n            var /** @type {?} */ start = this._getLocation();\n            try {\n                if (this._attemptCharCode($LT)) {\n                    if (this._attemptCharCode($BANG)) {\n                        if (this._attemptCharCode($LBRACKET)) {\n                            this._consumeCdata(start);\n                        }\n                        else if (this._attemptCharCode($MINUS)) {\n                            this._consumeComment(start);\n                        }\n                        else {\n                            this._consumeDocType(start);\n                        }\n                    }\n                    else if (this._attemptCharCode($SLASH)) {\n                        this._consumeTagClose(start);\n                    }\n                    else {\n                        this._consumeTagOpen(start);\n                    }\n                }\n                else if (!(this._tokenizeIcu && this._tokenizeExpansionForm())) {\n                    this._consumeText();\n                }\n            }\n            catch (e) {\n                if (e instanceof _ControlFlowError) {\n                    this.errors.push(e.error);\n                }\n                else {\n                    throw e;\n                }\n            }\n        }\n        this._beginToken(TokenType$1.EOF);\n        this._endToken([]);\n        return new TokenizeResult(mergeTextTokens(this.tokens), this.errors);\n    };\n    /**\n     * \\@internal\n     * @return {?}\n     */\n    _Tokenizer.prototype._tokenizeExpansionForm = function () {\n        if (isExpansionFormStart(this._input, this._index, this._interpolationConfig)) {\n            this._consumeExpansionFormStart();\n            return true;\n        }\n        if (isExpansionCaseStart(this._peek) && this._isInExpansionForm()) {\n            this._consumeExpansionCaseStart();\n            return true;\n        }\n        if (this._peek === $RBRACE) {\n            if (this._isInExpansionCase()) {\n                this._consumeExpansionCaseEnd();\n                return true;\n            }\n            if (this._isInExpansionForm()) {\n                this._consumeExpansionFormEnd();\n                return true;\n            }\n        }\n        return false;\n    };\n    /**\n     * @return {?}\n     */\n    _Tokenizer.prototype._getLocation = function () {\n        return new ParseLocation(this._file, this._index, this._line, this._column);\n    };\n    /**\n     * @param {?=} start\n     * @param {?=} end\n     * @return {?}\n     */\n    _Tokenizer.prototype._getSpan = function (start, end) {\n        if (start === void 0) { start = this._getLocation(); }\n        if (end === void 0) { end = this._getLocation(); }\n        return new ParseSourceSpan(start, end);\n    };\n    /**\n     * @param {?} type\n     * @param {?=} start\n     * @return {?}\n     */\n    _Tokenizer.prototype._beginToken = function (type, start) {\n        if (start === void 0) { start = this._getLocation(); }\n        this._currentTokenStart = start;\n        this._currentTokenType = type;\n    };\n    /**\n     * @param {?} parts\n     * @param {?=} end\n     * @return {?}\n     */\n    _Tokenizer.prototype._endToken = function (parts, end) {\n        if (end === void 0) { end = this._getLocation(); }\n        var /** @type {?} */ token = new Token$1(this._currentTokenType, parts, new ParseSourceSpan(this._currentTokenStart, end));\n        this.tokens.push(token);\n        this._currentTokenStart = null;\n        this._currentTokenType = null;\n        return token;\n    };\n    /**\n     * @param {?} msg\n     * @param {?} span\n     * @return {?}\n     */\n    _Tokenizer.prototype._createError = function (msg, span) {\n        if (this._isInExpansionForm()) {\n            msg += \" (Do you have an unescaped \\\"{\\\" in your template? Use \\\"{{ '{' }}\\\") to escape it.)\";\n        }\n        var /** @type {?} */ error = new TokenError(msg, this._currentTokenType, span);\n        this._currentTokenStart = null;\n        this._currentTokenType = null;\n        return new _ControlFlowError(error);\n    };\n    /**\n     * @return {?}\n     */\n    _Tokenizer.prototype._advance = function () {\n        if (this._index >= this._length) {\n            throw this._createError(_unexpectedCharacterErrorMsg($EOF), this._getSpan());\n        }\n        if (this._peek === $LF) {\n            this._line++;\n            this._column = 0;\n        }\n        else if (this._peek !== $LF && this._peek !== $CR) {\n            this._column++;\n        }\n        this._index++;\n        this._peek = this._index >= this._length ? $EOF : this._input.charCodeAt(this._index);\n        this._nextPeek =\n            this._index + 1 >= this._length ? $EOF : this._input.charCodeAt(this._index + 1);\n    };\n    /**\n     * @param {?} charCode\n     * @return {?}\n     */\n    _Tokenizer.prototype._attemptCharCode = function (charCode) {\n        if (this._peek === charCode) {\n            this._advance();\n            return true;\n        }\n        return false;\n    };\n    /**\n     * @param {?} charCode\n     * @return {?}\n     */\n    _Tokenizer.prototype._attemptCharCodeCaseInsensitive = function (charCode) {\n        if (compareCharCodeCaseInsensitive(this._peek, charCode)) {\n            this._advance();\n            return true;\n        }\n        return false;\n    };\n    /**\n     * @param {?} charCode\n     * @return {?}\n     */\n    _Tokenizer.prototype._requireCharCode = function (charCode) {\n        var /** @type {?} */ location = this._getLocation();\n        if (!this._attemptCharCode(charCode)) {\n            throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan(location, location));\n        }\n    };\n    /**\n     * @param {?} chars\n     * @return {?}\n     */\n    _Tokenizer.prototype._attemptStr = function (chars) {\n        var /** @type {?} */ len = chars.length;\n        if (this._index + len > this._length) {\n            return false;\n        }\n        var /** @type {?} */ initialPosition = this._savePosition();\n        for (var /** @type {?} */ i = 0; i < len; i++) {\n            if (!this._attemptCharCode(chars.charCodeAt(i))) {\n                // If attempting to parse the string fails, we want to reset the parser\n                // to where it was before the attempt\n                this._restorePosition(initialPosition);\n                return false;\n            }\n        }\n        return true;\n    };\n    /**\n     * @param {?} chars\n     * @return {?}\n     */\n    _Tokenizer.prototype._attemptStrCaseInsensitive = function (chars) {\n        for (var /** @type {?} */ i = 0; i < chars.length; i++) {\n            if (!this._attemptCharCodeCaseInsensitive(chars.charCodeAt(i))) {\n                return false;\n            }\n        }\n        return true;\n    };\n    /**\n     * @param {?} chars\n     * @return {?}\n     */\n    _Tokenizer.prototype._requireStr = function (chars) {\n        var /** @type {?} */ location = this._getLocation();\n        if (!this._attemptStr(chars)) {\n            throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan(location));\n        }\n    };\n    /**\n     * @param {?} predicate\n     * @return {?}\n     */\n    _Tokenizer.prototype._attemptCharCodeUntilFn = function (predicate) {\n        while (!predicate(this._peek)) {\n            this._advance();\n        }\n    };\n    /**\n     * @param {?} predicate\n     * @param {?} len\n     * @return {?}\n     */\n    _Tokenizer.prototype._requireCharCodeUntilFn = function (predicate, len) {\n        var /** @type {?} */ start = this._getLocation();\n        this._attemptCharCodeUntilFn(predicate);\n        if (this._index - start.offset < len) {\n            throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan(start, start));\n        }\n    };\n    /**\n     * @param {?} char\n     * @return {?}\n     */\n    _Tokenizer.prototype._attemptUntilChar = function (char) {\n        while (this._peek !== char) {\n            this._advance();\n        }\n    };\n    /**\n     * @param {?} decodeEntities\n     * @return {?}\n     */\n    _Tokenizer.prototype._readChar = function (decodeEntities) {\n        if (decodeEntities && this._peek === $AMPERSAND) {\n            return this._decodeEntity();\n        }\n        else {\n            var /** @type {?} */ index = this._index;\n            this._advance();\n            return this._input[index];\n        }\n    };\n    /**\n     * @return {?}\n     */\n    _Tokenizer.prototype._decodeEntity = function () {\n        var /** @type {?} */ start = this._getLocation();\n        this._advance();\n        if (this._attemptCharCode($HASH)) {\n            var /** @type {?} */ isHex = this._attemptCharCode($x) || this._attemptCharCode($X);\n            var /** @type {?} */ numberStart = this._getLocation().offset;\n            this._attemptCharCodeUntilFn(isDigitEntityEnd);\n            if (this._peek != $SEMICOLON) {\n                throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan());\n            }\n            this._advance();\n            var /** @type {?} */ strNum = this._input.substring(numberStart, this._index - 1);\n            try {\n                var /** @type {?} */ charCode = parseInt(strNum, isHex ? 16 : 10);\n                return String.fromCharCode(charCode);\n            }\n            catch (e) {\n                var /** @type {?} */ entity = this._input.substring(start.offset + 1, this._index - 1);\n                throw this._createError(_unknownEntityErrorMsg(entity), this._getSpan(start));\n            }\n        }\n        else {\n            var /** @type {?} */ startPosition = this._savePosition();\n            this._attemptCharCodeUntilFn(isNamedEntityEnd);\n            if (this._peek != $SEMICOLON) {\n                this._restorePosition(startPosition);\n                return '&';\n            }\n            this._advance();\n            var /** @type {?} */ name = this._input.substring(start.offset + 1, this._index - 1);\n            var /** @type {?} */ char = NAMED_ENTITIES[name];\n            if (!char) {\n                throw this._createError(_unknownEntityErrorMsg(name), this._getSpan(start));\n            }\n            return char;\n        }\n    };\n    /**\n     * @param {?} decodeEntities\n     * @param {?} firstCharOfEnd\n     * @param {?} attemptEndRest\n     * @return {?}\n     */\n    _Tokenizer.prototype._consumeRawText = function (decodeEntities, firstCharOfEnd, attemptEndRest) {\n        var /** @type {?} */ tagCloseStart;\n        var /** @type {?} */ textStart = this._getLocation();\n        this._beginToken(decodeEntities ? TokenType$1.ESCAPABLE_RAW_TEXT : TokenType$1.RAW_TEXT, textStart);\n        var /** @type {?} */ parts = [];\n        while (true) {\n            tagCloseStart = this._getLocation();\n            if (this._attemptCharCode(firstCharOfEnd) && attemptEndRest()) {\n                break;\n            }\n            if (this._index > tagCloseStart.offset) {\n                // add the characters consumed by the previous if statement to the output\n                parts.push(this._input.substring(tagCloseStart.offset, this._index));\n            }\n            while (this._peek !== firstCharOfEnd) {\n                parts.push(this._readChar(decodeEntities));\n            }\n        }\n        return this._endToken([this._processCarriageReturns(parts.join(''))], tagCloseStart);\n    };\n    /**\n     * @param {?} start\n     * @return {?}\n     */\n    _Tokenizer.prototype._consumeComment = function (start) {\n        var _this = this;\n        this._beginToken(TokenType$1.COMMENT_START, start);\n        this._requireCharCode($MINUS);\n        this._endToken([]);\n        var /** @type {?} */ textToken = this._consumeRawText(false, $MINUS, function () { return _this._attemptStr('->'); });\n        this._beginToken(TokenType$1.COMMENT_END, textToken.sourceSpan.end);\n        this._endToken([]);\n    };\n    /**\n     * @param {?} start\n     * @return {?}\n     */\n    _Tokenizer.prototype._consumeCdata = function (start) {\n        var _this = this;\n        this._beginToken(TokenType$1.CDATA_START, start);\n        this._requireStr('CDATA[');\n        this._endToken([]);\n        var /** @type {?} */ textToken = this._consumeRawText(false, $RBRACKET, function () { return _this._attemptStr(']>'); });\n        this._beginToken(TokenType$1.CDATA_END, textToken.sourceSpan.end);\n        this._endToken([]);\n    };\n    /**\n     * @param {?} start\n     * @return {?}\n     */\n    _Tokenizer.prototype._consumeDocType = function (start) {\n        this._beginToken(TokenType$1.DOC_TYPE, start);\n        this._attemptUntilChar($GT);\n        this._advance();\n        this._endToken([this._input.substring(start.offset + 2, this._index - 1)]);\n    };\n    /**\n     * @return {?}\n     */\n    _Tokenizer.prototype._consumePrefixAndName = function () {\n        var /** @type {?} */ nameOrPrefixStart = this._index;\n        var /** @type {?} */ prefix = null;\n        while (this._peek !== $COLON && !isPrefixEnd(this._peek)) {\n            this._advance();\n        }\n        var /** @type {?} */ nameStart;\n        if (this._peek === $COLON) {\n            this._advance();\n            prefix = this._input.substring(nameOrPrefixStart, this._index - 1);\n            nameStart = this._index;\n        }\n        else {\n            nameStart = nameOrPrefixStart;\n        }\n        this._requireCharCodeUntilFn(isNameEnd, this._index === nameStart ? 1 : 0);\n        var /** @type {?} */ name = this._input.substring(nameStart, this._index);\n        return [prefix, name];\n    };\n    /**\n     * @param {?} start\n     * @return {?}\n     */\n    _Tokenizer.prototype._consumeTagOpen = function (start) {\n        var /** @type {?} */ savedPos = this._savePosition();\n        var /** @type {?} */ tagName;\n        var /** @type {?} */ lowercaseTagName;\n        try {\n            if (!isAsciiLetter(this._peek)) {\n                throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan());\n            }\n            var /** @type {?} */ nameStart = this._index;\n            this._consumeTagOpenStart(start);\n            tagName = this._input.substring(nameStart, this._index);\n            lowercaseTagName = tagName.toLowerCase();\n            this._attemptCharCodeUntilFn(isNotWhitespace);\n            while (this._peek !== $SLASH && this._peek !== $GT) {\n                this._consumeAttributeName();\n                this._attemptCharCodeUntilFn(isNotWhitespace);\n                if (this._attemptCharCode($EQ)) {\n                    this._attemptCharCodeUntilFn(isNotWhitespace);\n                    this._consumeAttributeValue();\n                }\n                this._attemptCharCodeUntilFn(isNotWhitespace);\n            }\n            this._consumeTagOpenEnd();\n        }\n        catch (e) {\n            if (e instanceof _ControlFlowError) {\n                // When the start tag is invalid, assume we want a \"<\"\n                this._restorePosition(savedPos);\n                // Back to back text tokens are merged at the end\n                this._beginToken(TokenType$1.TEXT, start);\n                this._endToken(['<']);\n                return;\n            }\n            throw e;\n        }\n        var /** @type {?} */ contentTokenType = this._getTagDefinition(tagName).contentType;\n        if (contentTokenType === TagContentType.RAW_TEXT) {\n            this._consumeRawTextWithTagClose(lowercaseTagName, false);\n        }\n        else if (contentTokenType === TagContentType.ESCAPABLE_RAW_TEXT) {\n            this._consumeRawTextWithTagClose(lowercaseTagName, true);\n        }\n    };\n    /**\n     * @param {?} lowercaseTagName\n     * @param {?} decodeEntities\n     * @return {?}\n     */\n    _Tokenizer.prototype._consumeRawTextWithTagClose = function (lowercaseTagName, decodeEntities) {\n        var _this = this;\n        var /** @type {?} */ textToken = this._consumeRawText(decodeEntities, $LT, function () {\n            if (!_this._attemptCharCode($SLASH))\n                return false;\n            _this._attemptCharCodeUntilFn(isNotWhitespace);\n            if (!_this._attemptStrCaseInsensitive(lowercaseTagName))\n                return false;\n            _this._attemptCharCodeUntilFn(isNotWhitespace);\n            return _this._attemptCharCode($GT);\n        });\n        this._beginToken(TokenType$1.TAG_CLOSE, textToken.sourceSpan.end);\n        this._endToken([null, lowercaseTagName]);\n    };\n    /**\n     * @param {?} start\n     * @return {?}\n     */\n    _Tokenizer.prototype._consumeTagOpenStart = function (start) {\n        this._beginToken(TokenType$1.TAG_OPEN_START, start);\n        var /** @type {?} */ parts = this._consumePrefixAndName();\n        this._endToken(parts);\n    };\n    /**\n     * @return {?}\n     */\n    _Tokenizer.prototype._consumeAttributeName = function () {\n        this._beginToken(TokenType$1.ATTR_NAME);\n        var /** @type {?} */ prefixAndName = this._consumePrefixAndName();\n        this._endToken(prefixAndName);\n    };\n    /**\n     * @return {?}\n     */\n    _Tokenizer.prototype._consumeAttributeValue = function () {\n        this._beginToken(TokenType$1.ATTR_VALUE);\n        var /** @type {?} */ value;\n        if (this._peek === $SQ || this._peek === $DQ) {\n            var /** @type {?} */ quoteChar = this._peek;\n            this._advance();\n            var /** @type {?} */ parts = [];\n            while (this._peek !== quoteChar) {\n                parts.push(this._readChar(true));\n            }\n            value = parts.join('');\n            this._advance();\n        }\n        else {\n            var /** @type {?} */ valueStart = this._index;\n            this._requireCharCodeUntilFn(isNameEnd, 1);\n            value = this._input.substring(valueStart, this._index);\n        }\n        this._endToken([this._processCarriageReturns(value)]);\n    };\n    /**\n     * @return {?}\n     */\n    _Tokenizer.prototype._consumeTagOpenEnd = function () {\n        var /** @type {?} */ tokenType = this._attemptCharCode($SLASH) ? TokenType$1.TAG_OPEN_END_VOID : TokenType$1.TAG_OPEN_END;\n        this._beginToken(tokenType);\n        this._requireCharCode($GT);\n        this._endToken([]);\n    };\n    /**\n     * @param {?} start\n     * @return {?}\n     */\n    _Tokenizer.prototype._consumeTagClose = function (start) {\n        this._beginToken(TokenType$1.TAG_CLOSE, start);\n        this._attemptCharCodeUntilFn(isNotWhitespace);\n        var /** @type {?} */ prefixAndName = this._consumePrefixAndName();\n        this._attemptCharCodeUntilFn(isNotWhitespace);\n        this._requireCharCode($GT);\n        this._endToken(prefixAndName);\n    };\n    /**\n     * @return {?}\n     */\n    _Tokenizer.prototype._consumeExpansionFormStart = function () {\n        this._beginToken(TokenType$1.EXPANSION_FORM_START, this._getLocation());\n        this._requireCharCode($LBRACE);\n        this._endToken([]);\n        this._expansionCaseStack.push(TokenType$1.EXPANSION_FORM_START);\n        this._beginToken(TokenType$1.RAW_TEXT, this._getLocation());\n        var /** @type {?} */ condition = this._readUntil($COMMA);\n        this._endToken([condition], this._getLocation());\n        this._requireCharCode($COMMA);\n        this._attemptCharCodeUntilFn(isNotWhitespace);\n        this._beginToken(TokenType$1.RAW_TEXT, this._getLocation());\n        var /** @type {?} */ type = this._readUntil($COMMA);\n        this._endToken([type], this._getLocation());\n        this._requireCharCode($COMMA);\n        this._attemptCharCodeUntilFn(isNotWhitespace);\n    };\n    /**\n     * @return {?}\n     */\n    _Tokenizer.prototype._consumeExpansionCaseStart = function () {\n        this._beginToken(TokenType$1.EXPANSION_CASE_VALUE, this._getLocation());\n        var /** @type {?} */ value = this._readUntil($LBRACE).trim();\n        this._endToken([value], this._getLocation());\n        this._attemptCharCodeUntilFn(isNotWhitespace);\n        this._beginToken(TokenType$1.EXPANSION_CASE_EXP_START, this._getLocation());\n        this._requireCharCode($LBRACE);\n        this._endToken([], this._getLocation());\n        this._attemptCharCodeUntilFn(isNotWhitespace);\n        this._expansionCaseStack.push(TokenType$1.EXPANSION_CASE_EXP_START);\n    };\n    /**\n     * @return {?}\n     */\n    _Tokenizer.prototype._consumeExpansionCaseEnd = function () {\n        this._beginToken(TokenType$1.EXPANSION_CASE_EXP_END, this._getLocation());\n        this._requireCharCode($RBRACE);\n        this._endToken([], this._getLocation());\n        this._attemptCharCodeUntilFn(isNotWhitespace);\n        this._expansionCaseStack.pop();\n    };\n    /**\n     * @return {?}\n     */\n    _Tokenizer.prototype._consumeExpansionFormEnd = function () {\n        this._beginToken(TokenType$1.EXPANSION_FORM_END, this._getLocation());\n        this._requireCharCode($RBRACE);\n        this._endToken([]);\n        this._expansionCaseStack.pop();\n    };\n    /**\n     * @return {?}\n     */\n    _Tokenizer.prototype._consumeText = function () {\n        var /** @type {?} */ start = this._getLocation();\n        this._beginToken(TokenType$1.TEXT, start);\n        var /** @type {?} */ parts = [];\n        do {\n            if (this._interpolationConfig && this._attemptStr(this._interpolationConfig.start)) {\n                parts.push(this._interpolationConfig.start);\n                this._inInterpolation = true;\n            }\n            else if (this._interpolationConfig && this._inInterpolation &&\n                this._attemptStr(this._interpolationConfig.end)) {\n                parts.push(this._interpolationConfig.end);\n                this._inInterpolation = false;\n            }\n            else {\n                parts.push(this._readChar(true));\n            }\n        } while (!this._isTextEnd());\n        this._endToken([this._processCarriageReturns(parts.join(''))]);\n    };\n    /**\n     * @return {?}\n     */\n    _Tokenizer.prototype._isTextEnd = function () {\n        if (this._peek === $LT || this._peek === $EOF) {\n            return true;\n        }\n        if (this._tokenizeIcu && !this._inInterpolation) {\n            if (isExpansionFormStart(this._input, this._index, this._interpolationConfig)) {\n                // start of an expansion form\n                return true;\n            }\n            if (this._peek === $RBRACE && this._isInExpansionCase()) {\n                // end of and expansion case\n                return true;\n            }\n        }\n        return false;\n    };\n    /**\n     * @return {?}\n     */\n    _Tokenizer.prototype._savePosition = function () {\n        return [this._peek, this._index, this._column, this._line, this.tokens.length];\n    };\n    /**\n     * @param {?} char\n     * @return {?}\n     */\n    _Tokenizer.prototype._readUntil = function (char) {\n        var /** @type {?} */ start = this._index;\n        this._attemptUntilChar(char);\n        return this._input.substring(start, this._index);\n    };\n    /**\n     * @param {?} position\n     * @return {?}\n     */\n    _Tokenizer.prototype._restorePosition = function (position) {\n        this._peek = position[0];\n        this._index = position[1];\n        this._column = position[2];\n        this._line = position[3];\n        var /** @type {?} */ nbTokens = position[4];\n        if (nbTokens < this.tokens.length) {\n            // remove any extra tokens\n            this.tokens = this.tokens.slice(0, nbTokens);\n        }\n    };\n    /**\n     * @return {?}\n     */\n    _Tokenizer.prototype._isInExpansionCase = function () {\n        return this._expansionCaseStack.length > 0 &&\n            this._expansionCaseStack[this._expansionCaseStack.length - 1] ===\n                TokenType$1.EXPANSION_CASE_EXP_START;\n    };\n    /**\n     * @return {?}\n     */\n    _Tokenizer.prototype._isInExpansionForm = function () {\n        return this._expansionCaseStack.length > 0 &&\n            this._expansionCaseStack[this._expansionCaseStack.length - 1] ===\n                TokenType$1.EXPANSION_FORM_START;\n    };\n    return _Tokenizer;\n}());\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isNotWhitespace(code) {\n    return !isWhitespace(code) || code === $EOF;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isNameEnd(code) {\n    return isWhitespace(code) || code === $GT || code === $SLASH ||\n        code === $SQ || code === $DQ || code === $EQ;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isPrefixEnd(code) {\n    return (code < $a || $z < code) && (code < $A || $Z < code) &&\n        (code < $0 || code > $9);\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isDigitEntityEnd(code) {\n    return code == $SEMICOLON || code == $EOF || !isAsciiHexDigit(code);\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isNamedEntityEnd(code) {\n    return code == $SEMICOLON || code == $EOF || !isAsciiLetter(code);\n}\n/**\n * @param {?} input\n * @param {?} offset\n * @param {?} interpolationConfig\n * @return {?}\n */\nfunction isExpansionFormStart(input, offset, interpolationConfig) {\n    var /** @type {?} */ isInterpolationStart = interpolationConfig ? input.indexOf(interpolationConfig.start, offset) == offset : false;\n    return input.charCodeAt(offset) == $LBRACE && !isInterpolationStart;\n}\n/**\n * @param {?} peek\n * @return {?}\n */\nfunction isExpansionCaseStart(peek) {\n    return peek === $EQ || isAsciiLetter(peek);\n}\n/**\n * @param {?} code1\n * @param {?} code2\n * @return {?}\n */\nfunction compareCharCodeCaseInsensitive(code1, code2) {\n    return toUpperCaseCharCode(code1) == toUpperCaseCharCode(code2);\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction toUpperCaseCharCode(code) {\n    return code >= $a && code <= $z ? code - $a + $A : code;\n}\n/**\n * @param {?} srcTokens\n * @return {?}\n */\nfunction mergeTextTokens(srcTokens) {\n    var /** @type {?} */ dstTokens = [];\n    var /** @type {?} */ lastDstToken;\n    for (var /** @type {?} */ i = 0; i < srcTokens.length; i++) {\n        var /** @type {?} */ token = srcTokens[i];\n        if (lastDstToken && lastDstToken.type == TokenType$1.TEXT && token.type == TokenType$1.TEXT) {\n            lastDstToken.parts[0] += token.parts[0];\n            lastDstToken.sourceSpan.end = token.sourceSpan.end;\n        }\n        else {\n            lastDstToken = token;\n            dstTokens.push(lastDstToken);\n        }\n    }\n    return dstTokens;\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar TreeError = (function (_super) {\n    __extends(TreeError, _super);\n    /**\n     * @param {?} elementName\n     * @param {?} span\n     * @param {?} msg\n     */\n    function TreeError(elementName, span, msg) {\n        var _this = _super.call(this, span, msg) || this;\n        _this.elementName = elementName;\n        return _this;\n    }\n    /**\n     * @param {?} elementName\n     * @param {?} span\n     * @param {?} msg\n     * @return {?}\n     */\n    TreeError.create = function (elementName, span, msg) {\n        return new TreeError(elementName, span, msg);\n    };\n    return TreeError;\n}(ParseError));\nvar ParseTreeResult = (function () {\n    /**\n     * @param {?} rootNodes\n     * @param {?} errors\n     */\n    function ParseTreeResult(rootNodes, errors) {\n        this.rootNodes = rootNodes;\n        this.errors = errors;\n    }\n    return ParseTreeResult;\n}());\nvar Parser$1 = (function () {\n    /**\n     * @param {?} getTagDefinition\n     */\n    function Parser$1(getTagDefinition) {\n        this.getTagDefinition = getTagDefinition;\n    }\n    /**\n     * @param {?} source\n     * @param {?} url\n     * @param {?=} parseExpansionForms\n     * @param {?=} interpolationConfig\n     * @return {?}\n     */\n    Parser$1.prototype.parse = function (source, url, parseExpansionForms, interpolationConfig) {\n        if (parseExpansionForms === void 0) { parseExpansionForms = false; }\n        if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n        var /** @type {?} */ tokensAndErrors = tokenize(source, url, this.getTagDefinition, parseExpansionForms, interpolationConfig);\n        var /** @type {?} */ treeAndErrors = new _TreeBuilder(tokensAndErrors.tokens, this.getTagDefinition).build();\n        return new ParseTreeResult(treeAndErrors.rootNodes, ((tokensAndErrors.errors)).concat(treeAndErrors.errors));\n    };\n    return Parser$1;\n}());\nvar _TreeBuilder = (function () {\n    /**\n     * @param {?} tokens\n     * @param {?} getTagDefinition\n     */\n    function _TreeBuilder(tokens, getTagDefinition) {\n        this.tokens = tokens;\n        this.getTagDefinition = getTagDefinition;\n        this._index = -1;\n        this._rootNodes = [];\n        this._errors = [];\n        this._elementStack = [];\n        this._advance();\n    }\n    /**\n     * @return {?}\n     */\n    _TreeBuilder.prototype.build = function () {\n        while (this._peek.type !== TokenType$1.EOF) {\n            if (this._peek.type === TokenType$1.TAG_OPEN_START) {\n                this._consumeStartTag(this._advance());\n            }\n            else if (this._peek.type === TokenType$1.TAG_CLOSE) {\n                this._consumeEndTag(this._advance());\n            }\n            else if (this._peek.type === TokenType$1.CDATA_START) {\n                this._closeVoidElement();\n                this._consumeCdata(this._advance());\n            }\n            else if (this._peek.type === TokenType$1.COMMENT_START) {\n                this._closeVoidElement();\n                this._consumeComment(this._advance());\n            }\n            else if (this._peek.type === TokenType$1.TEXT || this._peek.type === TokenType$1.RAW_TEXT ||\n                this._peek.type === TokenType$1.ESCAPABLE_RAW_TEXT) {\n                this._closeVoidElement();\n                this._consumeText(this._advance());\n            }\n            else if (this._peek.type === TokenType$1.EXPANSION_FORM_START) {\n                this._consumeExpansion(this._advance());\n            }\n            else {\n                // Skip all other tokens...\n                this._advance();\n            }\n        }\n        return new ParseTreeResult(this._rootNodes, this._errors);\n    };\n    /**\n     * @return {?}\n     */\n    _TreeBuilder.prototype._advance = function () {\n        var /** @type {?} */ prev = this._peek;\n        if (this._index < this.tokens.length - 1) {\n            // Note: there is always an EOF token at the end\n            this._index++;\n        }\n        this._peek = this.tokens[this._index];\n        return prev;\n    };\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    _TreeBuilder.prototype._advanceIf = function (type) {\n        if (this._peek.type === type) {\n            return this._advance();\n        }\n        return null;\n    };\n    /**\n     * @param {?} startToken\n     * @return {?}\n     */\n    _TreeBuilder.prototype._consumeCdata = function (startToken) {\n        this._consumeText(this._advance());\n        this._advanceIf(TokenType$1.CDATA_END);\n    };\n    /**\n     * @param {?} token\n     * @return {?}\n     */\n    _TreeBuilder.prototype._consumeComment = function (token) {\n        var /** @type {?} */ text = this._advanceIf(TokenType$1.RAW_TEXT);\n        this._advanceIf(TokenType$1.COMMENT_END);\n        var /** @type {?} */ value = text != null ? text.parts[0].trim() : null;\n        this._addToParent(new Comment(value, token.sourceSpan));\n    };\n    /**\n     * @param {?} token\n     * @return {?}\n     */\n    _TreeBuilder.prototype._consumeExpansion = function (token) {\n        var /** @type {?} */ switchValue = this._advance();\n        var /** @type {?} */ type = this._advance();\n        var /** @type {?} */ cases = [];\n        // read =\n        while (this._peek.type === TokenType$1.EXPANSION_CASE_VALUE) {\n            var /** @type {?} */ expCase = this._parseExpansionCase();\n            if (!expCase)\n                return; // error\n            cases.push(expCase);\n        }\n        // read the final }\n        if (this._peek.type !== TokenType$1.EXPANSION_FORM_END) {\n            this._errors.push(TreeError.create(null, this._peek.sourceSpan, \"Invalid ICU message. Missing '}'.\"));\n            return;\n        }\n        var /** @type {?} */ sourceSpan = new ParseSourceSpan(token.sourceSpan.start, this._peek.sourceSpan.end);\n        this._addToParent(new Expansion(switchValue.parts[0], type.parts[0], cases, sourceSpan, switchValue.sourceSpan));\n        this._advance();\n    };\n    /**\n     * @return {?}\n     */\n    _TreeBuilder.prototype._parseExpansionCase = function () {\n        var /** @type {?} */ value = this._advance();\n        // read {\n        if (this._peek.type !== TokenType$1.EXPANSION_CASE_EXP_START) {\n            this._errors.push(TreeError.create(null, this._peek.sourceSpan, \"Invalid ICU message. Missing '{'.\"));\n            return null;\n        }\n        // read until }\n        var /** @type {?} */ start = this._advance();\n        var /** @type {?} */ exp = this._collectExpansionExpTokens(start);\n        if (!exp)\n            return null;\n        var /** @type {?} */ end = this._advance();\n        exp.push(new Token$1(TokenType$1.EOF, [], end.sourceSpan));\n        // parse everything in between { and }\n        var /** @type {?} */ parsedExp = new _TreeBuilder(exp, this.getTagDefinition).build();\n        if (parsedExp.errors.length > 0) {\n            this._errors = this._errors.concat(/** @type {?} */ (parsedExp.errors));\n            return null;\n        }\n        var /** @type {?} */ sourceSpan = new ParseSourceSpan(value.sourceSpan.start, end.sourceSpan.end);\n        var /** @type {?} */ expSourceSpan = new ParseSourceSpan(start.sourceSpan.start, end.sourceSpan.end);\n        return new ExpansionCase(value.parts[0], parsedExp.rootNodes, sourceSpan, value.sourceSpan, expSourceSpan);\n    };\n    /**\n     * @param {?} start\n     * @return {?}\n     */\n    _TreeBuilder.prototype._collectExpansionExpTokens = function (start) {\n        var /** @type {?} */ exp = [];\n        var /** @type {?} */ expansionFormStack = [TokenType$1.EXPANSION_CASE_EXP_START];\n        while (true) {\n            if (this._peek.type === TokenType$1.EXPANSION_FORM_START ||\n                this._peek.type === TokenType$1.EXPANSION_CASE_EXP_START) {\n                expansionFormStack.push(this._peek.type);\n            }\n            if (this._peek.type === TokenType$1.EXPANSION_CASE_EXP_END) {\n                if (lastOnStack(expansionFormStack, TokenType$1.EXPANSION_CASE_EXP_START)) {\n                    expansionFormStack.pop();\n                    if (expansionFormStack.length == 0)\n                        return exp;\n                }\n                else {\n                    this._errors.push(TreeError.create(null, start.sourceSpan, \"Invalid ICU message. Missing '}'.\"));\n                    return null;\n                }\n            }\n            if (this._peek.type === TokenType$1.EXPANSION_FORM_END) {\n                if (lastOnStack(expansionFormStack, TokenType$1.EXPANSION_FORM_START)) {\n                    expansionFormStack.pop();\n                }\n                else {\n                    this._errors.push(TreeError.create(null, start.sourceSpan, \"Invalid ICU message. Missing '}'.\"));\n                    return null;\n                }\n            }\n            if (this._peek.type === TokenType$1.EOF) {\n                this._errors.push(TreeError.create(null, start.sourceSpan, \"Invalid ICU message. Missing '}'.\"));\n                return null;\n            }\n            exp.push(this._advance());\n        }\n    };\n    /**\n     * @param {?} token\n     * @return {?}\n     */\n    _TreeBuilder.prototype._consumeText = function (token) {\n        var /** @type {?} */ text = token.parts[0];\n        if (text.length > 0 && text[0] == '\\n') {\n            var /** @type {?} */ parent = this._getParentElement();\n            if (parent != null && parent.children.length == 0 &&\n                this.getTagDefinition(parent.name).ignoreFirstLf) {\n                text = text.substring(1);\n            }\n        }\n        if (text.length > 0) {\n            this._addToParent(new Text(text, token.sourceSpan));\n        }\n    };\n    /**\n     * @return {?}\n     */\n    _TreeBuilder.prototype._closeVoidElement = function () {\n        if (this._elementStack.length > 0) {\n            var /** @type {?} */ el = this._elementStack[this._elementStack.length - 1];\n            if (this.getTagDefinition(el.name).isVoid) {\n                this._elementStack.pop();\n            }\n        }\n    };\n    /**\n     * @param {?} startTagToken\n     * @return {?}\n     */\n    _TreeBuilder.prototype._consumeStartTag = function (startTagToken) {\n        var /** @type {?} */ prefix = startTagToken.parts[0];\n        var /** @type {?} */ name = startTagToken.parts[1];\n        var /** @type {?} */ attrs = [];\n        while (this._peek.type === TokenType$1.ATTR_NAME) {\n            attrs.push(this._consumeAttr(this._advance()));\n        }\n        var /** @type {?} */ fullName = this._getElementFullName(prefix, name, this._getParentElement());\n        var /** @type {?} */ selfClosing = false;\n        // Note: There could have been a tokenizer error\n        // so that we don't get a token for the end tag...\n        if (this._peek.type === TokenType$1.TAG_OPEN_END_VOID) {\n            this._advance();\n            selfClosing = true;\n            var /** @type {?} */ tagDef = this.getTagDefinition(fullName);\n            if (!(tagDef.canSelfClose || getNsPrefix(fullName) !== null || tagDef.isVoid)) {\n                this._errors.push(TreeError.create(fullName, startTagToken.sourceSpan, \"Only void and foreign elements can be self closed \\\"\" + startTagToken.parts[1] + \"\\\"\"));\n            }\n        }\n        else if (this._peek.type === TokenType$1.TAG_OPEN_END) {\n            this._advance();\n            selfClosing = false;\n        }\n        var /** @type {?} */ end = this._peek.sourceSpan.start;\n        var /** @type {?} */ span = new ParseSourceSpan(startTagToken.sourceSpan.start, end);\n        var /** @type {?} */ el = new Element(fullName, attrs, [], span, span, null);\n        this._pushElement(el);\n        if (selfClosing) {\n            this._popElement(fullName);\n            el.endSourceSpan = span;\n        }\n    };\n    /**\n     * @param {?} el\n     * @return {?}\n     */\n    _TreeBuilder.prototype._pushElement = function (el) {\n        if (this._elementStack.length > 0) {\n            var /** @type {?} */ parentEl = this._elementStack[this._elementStack.length - 1];\n            if (this.getTagDefinition(parentEl.name).isClosedByChild(el.name)) {\n                this._elementStack.pop();\n            }\n        }\n        var /** @type {?} */ tagDef = this.getTagDefinition(el.name);\n        var _a = this._getParentElementSkippingContainers(), parent = _a.parent, container = _a.container;\n        if (parent && tagDef.requireExtraParent(parent.name)) {\n            var /** @type {?} */ newParent = new Element(tagDef.parentToAdd, [], [], el.sourceSpan, el.startSourceSpan, el.endSourceSpan);\n            this._insertBeforeContainer(parent, container, newParent);\n        }\n        this._addToParent(el);\n        this._elementStack.push(el);\n    };\n    /**\n     * @param {?} endTagToken\n     * @return {?}\n     */\n    _TreeBuilder.prototype._consumeEndTag = function (endTagToken) {\n        var /** @type {?} */ fullName = this._getElementFullName(endTagToken.parts[0], endTagToken.parts[1], this._getParentElement());\n        if (this._getParentElement()) {\n            this._getParentElement().endSourceSpan = endTagToken.sourceSpan;\n        }\n        if (this.getTagDefinition(fullName).isVoid) {\n            this._errors.push(TreeError.create(fullName, endTagToken.sourceSpan, \"Void elements do not have end tags \\\"\" + endTagToken.parts[1] + \"\\\"\"));\n        }\n        else if (!this._popElement(fullName)) {\n            var /** @type {?} */ errMsg = \"Unexpected closing tag \\\"\" + fullName + \"\\\". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags\";\n            this._errors.push(TreeError.create(fullName, endTagToken.sourceSpan, errMsg));\n        }\n    };\n    /**\n     * @param {?} fullName\n     * @return {?}\n     */\n    _TreeBuilder.prototype._popElement = function (fullName) {\n        for (var /** @type {?} */ stackIndex = this._elementStack.length - 1; stackIndex >= 0; stackIndex--) {\n            var /** @type {?} */ el = this._elementStack[stackIndex];\n            if (el.name == fullName) {\n                this._elementStack.splice(stackIndex, this._elementStack.length - stackIndex);\n                return true;\n            }\n            if (!this.getTagDefinition(el.name).closedByParent) {\n                return false;\n            }\n        }\n        return false;\n    };\n    /**\n     * @param {?} attrName\n     * @return {?}\n     */\n    _TreeBuilder.prototype._consumeAttr = function (attrName) {\n        var /** @type {?} */ fullName = mergeNsAndName(attrName.parts[0], attrName.parts[1]);\n        var /** @type {?} */ end = attrName.sourceSpan.end;\n        var /** @type {?} */ value = '';\n        var /** @type {?} */ valueSpan;\n        if (this._peek.type === TokenType$1.ATTR_VALUE) {\n            var /** @type {?} */ valueToken = this._advance();\n            value = valueToken.parts[0];\n            end = valueToken.sourceSpan.end;\n            valueSpan = valueToken.sourceSpan;\n        }\n        return new Attribute$1(fullName, value, new ParseSourceSpan(attrName.sourceSpan.start, end), valueSpan);\n    };\n    /**\n     * @return {?}\n     */\n    _TreeBuilder.prototype._getParentElement = function () {\n        return this._elementStack.length > 0 ? this._elementStack[this._elementStack.length - 1] : null;\n    };\n    /**\n     * Returns the parent in the DOM and the container.\n     *\n     * `<ng-container>` elements are skipped as they are not rendered as DOM element.\n     * @return {?}\n     */\n    _TreeBuilder.prototype._getParentElementSkippingContainers = function () {\n        var /** @type {?} */ container = null;\n        for (var /** @type {?} */ i = this._elementStack.length - 1; i >= 0; i--) {\n            if (this._elementStack[i].name !== 'ng-container') {\n                return { parent: this._elementStack[i], container: container };\n            }\n            container = this._elementStack[i];\n        }\n        return { parent: this._elementStack[this._elementStack.length - 1], container: container };\n    };\n    /**\n     * @param {?} node\n     * @return {?}\n     */\n    _TreeBuilder.prototype._addToParent = function (node) {\n        var /** @type {?} */ parent = this._getParentElement();\n        if (parent != null) {\n            parent.children.push(node);\n        }\n        else {\n            this._rootNodes.push(node);\n        }\n    };\n    /**\n     * Insert a node between the parent and the container.\n     * When no container is given, the node is appended as a child of the parent.\n     * Also updates the element stack accordingly.\n     *\n     * \\@internal\n     * @param {?} parent\n     * @param {?} container\n     * @param {?} node\n     * @return {?}\n     */\n    _TreeBuilder.prototype._insertBeforeContainer = function (parent, container, node) {\n        if (!container) {\n            this._addToParent(node);\n            this._elementStack.push(node);\n        }\n        else {\n            if (parent) {\n                // replace the container with the new node in the children\n                var /** @type {?} */ index = parent.children.indexOf(container);\n                parent.children[index] = node;\n            }\n            else {\n                this._rootNodes.push(node);\n            }\n            node.children.push(container);\n            this._elementStack.splice(this._elementStack.indexOf(container), 0, node);\n        }\n    };\n    /**\n     * @param {?} prefix\n     * @param {?} localName\n     * @param {?} parentElement\n     * @return {?}\n     */\n    _TreeBuilder.prototype._getElementFullName = function (prefix, localName, parentElement) {\n        if (prefix == null) {\n            prefix = this.getTagDefinition(localName).implicitNamespacePrefix;\n            if (prefix == null && parentElement != null) {\n                prefix = getNsPrefix(parentElement.name);\n            }\n        }\n        return mergeNsAndName(prefix, localName);\n    };\n    return _TreeBuilder;\n}());\n/**\n * @param {?} stack\n * @param {?} element\n * @return {?}\n */\nfunction lastOnStack(stack, element) {\n    return stack.length > 0 && stack[stack.length - 1] === element;\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar Message = (function () {\n    /**\n     * @param {?} nodes message AST\n     * @param {?} placeholders maps placeholder names to static content\n     * @param {?} placeholderToMessage maps placeholder names to messages (used for nested ICU messages)\n     * @param {?} meaning\n     * @param {?} description\n     * @param {?} id\n     */\n    function Message(nodes, placeholders, placeholderToMessage, meaning, description, id) {\n        this.nodes = nodes;\n        this.placeholders = placeholders;\n        this.placeholderToMessage = placeholderToMessage;\n        this.meaning = meaning;\n        this.description = description;\n        this.id = id;\n    }\n    return Message;\n}());\nvar Text$1 = (function () {\n    /**\n     * @param {?} value\n     * @param {?} sourceSpan\n     */\n    function Text$1(value, sourceSpan) {\n        this.value = value;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    Text$1.prototype.visit = function (visitor, context) { return visitor.visitText(this, context); };\n    return Text$1;\n}());\nvar Container = (function () {\n    /**\n     * @param {?} children\n     * @param {?} sourceSpan\n     */\n    function Container(children, sourceSpan) {\n        this.children = children;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    Container.prototype.visit = function (visitor, context) { return visitor.visitContainer(this, context); };\n    return Container;\n}());\nvar Icu = (function () {\n    /**\n     * @param {?} expression\n     * @param {?} type\n     * @param {?} cases\n     * @param {?} sourceSpan\n     */\n    function Icu(expression, type, cases, sourceSpan) {\n        this.expression = expression;\n        this.type = type;\n        this.cases = cases;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    Icu.prototype.visit = function (visitor, context) { return visitor.visitIcu(this, context); };\n    return Icu;\n}());\nvar TagPlaceholder = (function () {\n    /**\n     * @param {?} tag\n     * @param {?} attrs\n     * @param {?} startName\n     * @param {?} closeName\n     * @param {?} children\n     * @param {?} isVoid\n     * @param {?} sourceSpan\n     */\n    function TagPlaceholder(tag, attrs, startName, closeName, children, isVoid, sourceSpan) {\n        this.tag = tag;\n        this.attrs = attrs;\n        this.startName = startName;\n        this.closeName = closeName;\n        this.children = children;\n        this.isVoid = isVoid;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    TagPlaceholder.prototype.visit = function (visitor, context) { return visitor.visitTagPlaceholder(this, context); };\n    return TagPlaceholder;\n}());\nvar Placeholder = (function () {\n    /**\n     * @param {?} value\n     * @param {?} name\n     * @param {?} sourceSpan\n     */\n    function Placeholder(value, name, sourceSpan) {\n        this.value = value;\n        this.name = name;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    Placeholder.prototype.visit = function (visitor, context) { return visitor.visitPlaceholder(this, context); };\n    return Placeholder;\n}());\nvar IcuPlaceholder = (function () {\n    /**\n     * @param {?} value\n     * @param {?} name\n     * @param {?} sourceSpan\n     */\n    function IcuPlaceholder(value, name, sourceSpan) {\n        this.value = value;\n        this.name = name;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?=} context\n     * @return {?}\n     */\n    IcuPlaceholder.prototype.visit = function (visitor, context) { return visitor.visitIcuPlaceholder(this, context); };\n    return IcuPlaceholder;\n}());\nvar CloneVisitor = (function () {\n    function CloneVisitor() {\n    }\n    /**\n     * @param {?} text\n     * @param {?=} context\n     * @return {?}\n     */\n    CloneVisitor.prototype.visitText = function (text, context) { return new Text$1(text.value, text.sourceSpan); };\n    /**\n     * @param {?} container\n     * @param {?=} context\n     * @return {?}\n     */\n    CloneVisitor.prototype.visitContainer = function (container, context) {\n        var _this = this;\n        var /** @type {?} */ children = container.children.map(function (n) { return n.visit(_this, context); });\n        return new Container(children, container.sourceSpan);\n    };\n    /**\n     * @param {?} icu\n     * @param {?=} context\n     * @return {?}\n     */\n    CloneVisitor.prototype.visitIcu = function (icu, context) {\n        var _this = this;\n        var /** @type {?} */ cases = {};\n        Object.keys(icu.cases).forEach(function (key) { return cases[key] = icu.cases[key].visit(_this, context); });\n        var /** @type {?} */ msg = new Icu(icu.expression, icu.type, cases, icu.sourceSpan);\n        msg.expressionPlaceholder = icu.expressionPlaceholder;\n        return msg;\n    };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    CloneVisitor.prototype.visitTagPlaceholder = function (ph, context) {\n        var _this = this;\n        var /** @type {?} */ children = ph.children.map(function (n) { return n.visit(_this, context); });\n        return new TagPlaceholder(ph.tag, ph.attrs, ph.startName, ph.closeName, children, ph.isVoid, ph.sourceSpan);\n    };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    CloneVisitor.prototype.visitPlaceholder = function (ph, context) {\n        return new Placeholder(ph.value, ph.name, ph.sourceSpan);\n    };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    CloneVisitor.prototype.visitIcuPlaceholder = function (ph, context) {\n        return new IcuPlaceholder(ph.value, ph.name, ph.sourceSpan);\n    };\n    return CloneVisitor;\n}());\nvar RecurseVisitor = (function () {\n    function RecurseVisitor() {\n    }\n    /**\n     * @param {?} text\n     * @param {?=} context\n     * @return {?}\n     */\n    RecurseVisitor.prototype.visitText = function (text, context) { };\n    ;\n    /**\n     * @param {?} container\n     * @param {?=} context\n     * @return {?}\n     */\n    RecurseVisitor.prototype.visitContainer = function (container, context) {\n        var _this = this;\n        container.children.forEach(function (child) { return child.visit(_this); });\n    };\n    /**\n     * @param {?} icu\n     * @param {?=} context\n     * @return {?}\n     */\n    RecurseVisitor.prototype.visitIcu = function (icu, context) {\n        var _this = this;\n        Object.keys(icu.cases).forEach(function (k) { icu.cases[k].visit(_this); });\n    };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    RecurseVisitor.prototype.visitTagPlaceholder = function (ph, context) {\n        var _this = this;\n        ph.children.forEach(function (child) { return child.visit(_this); });\n    };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    RecurseVisitor.prototype.visitPlaceholder = function (ph, context) { };\n    ;\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    RecurseVisitor.prototype.visitIcuPlaceholder = function (ph, context) { };\n    ;\n    return RecurseVisitor;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar TAG_TO_PLACEHOLDER_NAMES = {\n    'A': 'LINK',\n    'B': 'BOLD_TEXT',\n    'BR': 'LINE_BREAK',\n    'EM': 'EMPHASISED_TEXT',\n    'H1': 'HEADING_LEVEL1',\n    'H2': 'HEADING_LEVEL2',\n    'H3': 'HEADING_LEVEL3',\n    'H4': 'HEADING_LEVEL4',\n    'H5': 'HEADING_LEVEL5',\n    'H6': 'HEADING_LEVEL6',\n    'HR': 'HORIZONTAL_RULE',\n    'I': 'ITALIC_TEXT',\n    'LI': 'LIST_ITEM',\n    'LINK': 'MEDIA_LINK',\n    'OL': 'ORDERED_LIST',\n    'P': 'PARAGRAPH',\n    'Q': 'QUOTATION',\n    'S': 'STRIKETHROUGH_TEXT',\n    'SMALL': 'SMALL_TEXT',\n    'SUB': 'SUBSTRIPT',\n    'SUP': 'SUPERSCRIPT',\n    'TBODY': 'TABLE_BODY',\n    'TD': 'TABLE_CELL',\n    'TFOOT': 'TABLE_FOOTER',\n    'TH': 'TABLE_HEADER_CELL',\n    'THEAD': 'TABLE_HEADER',\n    'TR': 'TABLE_ROW',\n    'TT': 'MONOSPACED_TEXT',\n    'U': 'UNDERLINED_TEXT',\n    'UL': 'UNORDERED_LIST',\n};\n/**\n * Creates unique names for placeholder with different content.\n *\n * Returns the same placeholder name when the content is identical.\n *\n * \\@internal\n */\nvar PlaceholderRegistry = (function () {\n    function PlaceholderRegistry() {\n        this._placeHolderNameCounts = {};\n        this._signatureToName = {};\n    }\n    /**\n     * @param {?} tag\n     * @param {?} attrs\n     * @param {?} isVoid\n     * @return {?}\n     */\n    PlaceholderRegistry.prototype.getStartTagPlaceholderName = function (tag, attrs, isVoid) {\n        var /** @type {?} */ signature = this._hashTag(tag, attrs, isVoid);\n        if (this._signatureToName[signature]) {\n            return this._signatureToName[signature];\n        }\n        var /** @type {?} */ upperTag = tag.toUpperCase();\n        var /** @type {?} */ baseName = TAG_TO_PLACEHOLDER_NAMES[upperTag] || \"TAG_\" + upperTag;\n        var /** @type {?} */ name = this._generateUniqueName(isVoid ? baseName : \"START_\" + baseName);\n        this._signatureToName[signature] = name;\n        return name;\n    };\n    /**\n     * @param {?} tag\n     * @return {?}\n     */\n    PlaceholderRegistry.prototype.getCloseTagPlaceholderName = function (tag) {\n        var /** @type {?} */ signature = this._hashClosingTag(tag);\n        if (this._signatureToName[signature]) {\n            return this._signatureToName[signature];\n        }\n        var /** @type {?} */ upperTag = tag.toUpperCase();\n        var /** @type {?} */ baseName = TAG_TO_PLACEHOLDER_NAMES[upperTag] || \"TAG_\" + upperTag;\n        var /** @type {?} */ name = this._generateUniqueName(\"CLOSE_\" + baseName);\n        this._signatureToName[signature] = name;\n        return name;\n    };\n    /**\n     * @param {?} name\n     * @param {?} content\n     * @return {?}\n     */\n    PlaceholderRegistry.prototype.getPlaceholderName = function (name, content) {\n        var /** @type {?} */ upperName = name.toUpperCase();\n        var /** @type {?} */ signature = \"PH: \" + upperName + \"=\" + content;\n        if (this._signatureToName[signature]) {\n            return this._signatureToName[signature];\n        }\n        var /** @type {?} */ uniqueName = this._generateUniqueName(upperName);\n        this._signatureToName[signature] = uniqueName;\n        return uniqueName;\n    };\n    /**\n     * @param {?} name\n     * @return {?}\n     */\n    PlaceholderRegistry.prototype.getUniquePlaceholder = function (name) {\n        return this._generateUniqueName(name.toUpperCase());\n    };\n    /**\n     * @param {?} tag\n     * @param {?} attrs\n     * @param {?} isVoid\n     * @return {?}\n     */\n    PlaceholderRegistry.prototype._hashTag = function (tag, attrs, isVoid) {\n        var /** @type {?} */ start = \"<\" + tag;\n        var /** @type {?} */ strAttrs = Object.keys(attrs).sort().map(function (name) { return \" \" + name + \"=\" + attrs[name]; }).join('');\n        var /** @type {?} */ end = isVoid ? '/>' : \"></\" + tag + \">\";\n        return start + strAttrs + end;\n    };\n    /**\n     * @param {?} tag\n     * @return {?}\n     */\n    PlaceholderRegistry.prototype._hashClosingTag = function (tag) { return this._hashTag(\"/\" + tag, {}, false); };\n    /**\n     * @param {?} base\n     * @return {?}\n     */\n    PlaceholderRegistry.prototype._generateUniqueName = function (base) {\n        var /** @type {?} */ seen = this._placeHolderNameCounts.hasOwnProperty(base);\n        if (!seen) {\n            this._placeHolderNameCounts[base] = 1;\n            return base;\n        }\n        var /** @type {?} */ id = this._placeHolderNameCounts[base];\n        this._placeHolderNameCounts[base] = id + 1;\n        return base + \"_\" + id;\n    };\n    return PlaceholderRegistry;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar _expParser = new Parser(new Lexer());\n/**\n * Returns a function converting html nodes to an i18n Message given an interpolationConfig\n * @param {?} interpolationConfig\n * @return {?}\n */\nfunction createI18nMessageFactory(interpolationConfig) {\n    var /** @type {?} */ visitor = new _I18nVisitor(_expParser, interpolationConfig);\n    return function (nodes, meaning, description, id) { return visitor.toI18nMessage(nodes, meaning, description, id); };\n}\nvar _I18nVisitor = (function () {\n    /**\n     * @param {?} _expressionParser\n     * @param {?} _interpolationConfig\n     */\n    function _I18nVisitor(_expressionParser, _interpolationConfig) {\n        this._expressionParser = _expressionParser;\n        this._interpolationConfig = _interpolationConfig;\n    }\n    /**\n     * @param {?} nodes\n     * @param {?} meaning\n     * @param {?} description\n     * @param {?} id\n     * @return {?}\n     */\n    _I18nVisitor.prototype.toI18nMessage = function (nodes, meaning, description, id) {\n        this._isIcu = nodes.length == 1 && nodes[0] instanceof Expansion;\n        this._icuDepth = 0;\n        this._placeholderRegistry = new PlaceholderRegistry();\n        this._placeholderToContent = {};\n        this._placeholderToMessage = {};\n        var /** @type {?} */ i18nodes = visitAll(this, nodes, {});\n        return new Message(i18nodes, this._placeholderToContent, this._placeholderToMessage, meaning, description, id);\n    };\n    /**\n     * @param {?} el\n     * @param {?} context\n     * @return {?}\n     */\n    _I18nVisitor.prototype.visitElement = function (el, context) {\n        var /** @type {?} */ children = visitAll(this, el.children);\n        var /** @type {?} */ attrs = {};\n        el.attrs.forEach(function (attr) {\n            // Do not visit the attributes, translatable ones are top-level ASTs\n            attrs[attr.name] = attr.value;\n        });\n        var /** @type {?} */ isVoid = getHtmlTagDefinition(el.name).isVoid;\n        var /** @type {?} */ startPhName = this._placeholderRegistry.getStartTagPlaceholderName(el.name, attrs, isVoid);\n        this._placeholderToContent[startPhName] = el.sourceSpan.toString();\n        var /** @type {?} */ closePhName = '';\n        if (!isVoid) {\n            closePhName = this._placeholderRegistry.getCloseTagPlaceholderName(el.name);\n            this._placeholderToContent[closePhName] = \"</\" + el.name + \">\";\n        }\n        return new TagPlaceholder(el.name, attrs, startPhName, closePhName, children, isVoid, el.sourceSpan);\n    };\n    /**\n     * @param {?} attribute\n     * @param {?} context\n     * @return {?}\n     */\n    _I18nVisitor.prototype.visitAttribute = function (attribute, context) {\n        return this._visitTextWithInterpolation(attribute.value, attribute.sourceSpan);\n    };\n    /**\n     * @param {?} text\n     * @param {?} context\n     * @return {?}\n     */\n    _I18nVisitor.prototype.visitText = function (text, context) {\n        return this._visitTextWithInterpolation(text.value, text.sourceSpan);\n    };\n    /**\n     * @param {?} comment\n     * @param {?} context\n     * @return {?}\n     */\n    _I18nVisitor.prototype.visitComment = function (comment, context) { return null; };\n    /**\n     * @param {?} icu\n     * @param {?} context\n     * @return {?}\n     */\n    _I18nVisitor.prototype.visitExpansion = function (icu, context) {\n        var _this = this;\n        this._icuDepth++;\n        var /** @type {?} */ i18nIcuCases = {};\n        var /** @type {?} */ i18nIcu = new Icu(icu.switchValue, icu.type, i18nIcuCases, icu.sourceSpan);\n        icu.cases.forEach(function (caze) {\n            i18nIcuCases[caze.value] = new Container(caze.expression.map(function (node) { return node.visit(_this, {}); }), caze.expSourceSpan);\n        });\n        this._icuDepth--;\n        if (this._isIcu || this._icuDepth > 0) {\n            // Returns an ICU node when:\n            // - the message (vs a part of the message) is an ICU message, or\n            // - the ICU message is nested.\n            var /** @type {?} */ expPh = this._placeholderRegistry.getUniquePlaceholder(\"VAR_\" + icu.type);\n            i18nIcu.expressionPlaceholder = expPh;\n            this._placeholderToContent[expPh] = icu.switchValue;\n            return i18nIcu;\n        }\n        // Else returns a placeholder\n        // ICU placeholders should not be replaced with their original content but with the their\n        // translations. We need to create a new visitor (they are not re-entrant) to compute the\n        // message id.\n        // TODO(vicb): add a html.Node -> i18n.Message cache to avoid having to re-create the msg\n        var /** @type {?} */ phName = this._placeholderRegistry.getPlaceholderName('ICU', icu.sourceSpan.toString());\n        var /** @type {?} */ visitor = new _I18nVisitor(this._expressionParser, this._interpolationConfig);\n        this._placeholderToMessage[phName] = visitor.toI18nMessage([icu], '', '', '');\n        return new IcuPlaceholder(i18nIcu, phName, icu.sourceSpan);\n    };\n    /**\n     * @param {?} icuCase\n     * @param {?} context\n     * @return {?}\n     */\n    _I18nVisitor.prototype.visitExpansionCase = function (icuCase, context) {\n        throw new Error('Unreachable code');\n    };\n    /**\n     * @param {?} text\n     * @param {?} sourceSpan\n     * @return {?}\n     */\n    _I18nVisitor.prototype._visitTextWithInterpolation = function (text, sourceSpan) {\n        var /** @type {?} */ splitInterpolation = this._expressionParser.splitInterpolation(text, sourceSpan.start.toString(), this._interpolationConfig);\n        if (!splitInterpolation) {\n            // No expression, return a single text\n            return new Text$1(text, sourceSpan);\n        }\n        // Return a group of text + expressions\n        var /** @type {?} */ nodes = [];\n        var /** @type {?} */ container = new Container(nodes, sourceSpan);\n        var _a = this._interpolationConfig, sDelimiter = _a.start, eDelimiter = _a.end;\n        for (var /** @type {?} */ i = 0; i < splitInterpolation.strings.length - 1; i++) {\n            var /** @type {?} */ expression = splitInterpolation.expressions[i];\n            var /** @type {?} */ baseName = _extractPlaceholderName(expression) || 'INTERPOLATION';\n            var /** @type {?} */ phName = this._placeholderRegistry.getPlaceholderName(baseName, expression);\n            if (splitInterpolation.strings[i].length) {\n                // No need to add empty strings\n                nodes.push(new Text$1(splitInterpolation.strings[i], sourceSpan));\n            }\n            nodes.push(new Placeholder(expression, phName, sourceSpan));\n            this._placeholderToContent[phName] = sDelimiter + expression + eDelimiter;\n        }\n        // The last index contains no expression\n        var /** @type {?} */ lastStringIdx = splitInterpolation.strings.length - 1;\n        if (splitInterpolation.strings[lastStringIdx].length) {\n            nodes.push(new Text$1(splitInterpolation.strings[lastStringIdx], sourceSpan));\n        }\n        return container;\n    };\n    return _I18nVisitor;\n}());\nvar _CUSTOM_PH_EXP = /\\/\\/[\\s\\S]*i18n[\\s\\S]*\\([\\s\\S]*ph[\\s\\S]*=[\\s\\S]*(\"|')([\\s\\S]*?)\\1[\\s\\S]*\\)/g;\n/**\n * @param {?} input\n * @return {?}\n */\nfunction _extractPlaceholderName(input) {\n    return input.split(_CUSTOM_PH_EXP)[2];\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * An i18n error.\n */\nvar I18nError = (function (_super) {\n    __extends(I18nError, _super);\n    /**\n     * @param {?} span\n     * @param {?} msg\n     */\n    function I18nError(span, msg) {\n        return _super.call(this, span, msg) || this;\n    }\n    return I18nError;\n}(ParseError));\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar _I18N_ATTR = 'i18n';\nvar _I18N_ATTR_PREFIX = 'i18n-';\nvar _I18N_COMMENT_PREFIX_REGEXP = /^i18n:?/;\nvar MEANING_SEPARATOR = '|';\nvar ID_SEPARATOR = '@@';\n/**\n * Extract translatable messages from an html AST\n * @param {?} nodes\n * @param {?} interpolationConfig\n * @param {?} implicitTags\n * @param {?} implicitAttrs\n * @return {?}\n */\nfunction extractMessages(nodes, interpolationConfig, implicitTags, implicitAttrs) {\n    var /** @type {?} */ visitor = new _Visitor(implicitTags, implicitAttrs);\n    return visitor.extract(nodes, interpolationConfig);\n}\n/**\n * @param {?} nodes\n * @param {?} translations\n * @param {?} interpolationConfig\n * @param {?} implicitTags\n * @param {?} implicitAttrs\n * @return {?}\n */\nfunction mergeTranslations(nodes, translations, interpolationConfig, implicitTags, implicitAttrs) {\n    var /** @type {?} */ visitor = new _Visitor(implicitTags, implicitAttrs);\n    return visitor.merge(nodes, translations, interpolationConfig);\n}\nvar ExtractionResult = (function () {\n    /**\n     * @param {?} messages\n     * @param {?} errors\n     */\n    function ExtractionResult(messages, errors) {\n        this.messages = messages;\n        this.errors = errors;\n    }\n    return ExtractionResult;\n}());\nvar _VisitorMode = {};\n_VisitorMode.Extract = 0;\n_VisitorMode.Merge = 1;\n_VisitorMode[_VisitorMode.Extract] = \"Extract\";\n_VisitorMode[_VisitorMode.Merge] = \"Merge\";\n/**\n * This Visitor is used:\n * 1. to extract all the translatable strings from an html AST (see `extract()`),\n * 2. to replace the translatable strings with the actual translations (see `merge()`)\n *\n * \\@internal\n */\nvar _Visitor = (function () {\n    /**\n     * @param {?} _implicitTags\n     * @param {?} _implicitAttrs\n     */\n    function _Visitor(_implicitTags, _implicitAttrs) {\n        this._implicitTags = _implicitTags;\n        this._implicitAttrs = _implicitAttrs;\n    }\n    /**\n     * Extracts the messages from the tree\n     * @param {?} nodes\n     * @param {?} interpolationConfig\n     * @return {?}\n     */\n    _Visitor.prototype.extract = function (nodes, interpolationConfig) {\n        var _this = this;\n        this._init(_VisitorMode.Extract, interpolationConfig);\n        nodes.forEach(function (node) { return node.visit(_this, null); });\n        if (this._inI18nBlock) {\n            this._reportError(nodes[nodes.length - 1], 'Unclosed block');\n        }\n        return new ExtractionResult(this._messages, this._errors);\n    };\n    /**\n     * Returns a tree where all translatable nodes are translated\n     * @param {?} nodes\n     * @param {?} translations\n     * @param {?} interpolationConfig\n     * @return {?}\n     */\n    _Visitor.prototype.merge = function (nodes, translations, interpolationConfig) {\n        this._init(_VisitorMode.Merge, interpolationConfig);\n        this._translations = translations;\n        // Construct a single fake root element\n        var /** @type {?} */ wrapper = new Element('wrapper', [], nodes, null, null, null);\n        var /** @type {?} */ translatedNode = wrapper.visit(this, null);\n        if (this._inI18nBlock) {\n            this._reportError(nodes[nodes.length - 1], 'Unclosed block');\n        }\n        return new ParseTreeResult(translatedNode.children, this._errors);\n    };\n    /**\n     * @param {?} icuCase\n     * @param {?} context\n     * @return {?}\n     */\n    _Visitor.prototype.visitExpansionCase = function (icuCase, context) {\n        // Parse cases for translatable html attributes\n        var /** @type {?} */ expression = visitAll(this, icuCase.expression, context);\n        if (this._mode === _VisitorMode.Merge) {\n            return new ExpansionCase(icuCase.value, expression, icuCase.sourceSpan, icuCase.valueSourceSpan, icuCase.expSourceSpan);\n        }\n    };\n    /**\n     * @param {?} icu\n     * @param {?} context\n     * @return {?}\n     */\n    _Visitor.prototype.visitExpansion = function (icu, context) {\n        this._mayBeAddBlockChildren(icu);\n        var /** @type {?} */ wasInIcu = this._inIcu;\n        if (!this._inIcu) {\n            // nested ICU messages should not be extracted but top-level translated as a whole\n            if (this._isInTranslatableSection) {\n                this._addMessage([icu]);\n            }\n            this._inIcu = true;\n        }\n        var /** @type {?} */ cases = visitAll(this, icu.cases, context);\n        if (this._mode === _VisitorMode.Merge) {\n            icu = new Expansion(icu.switchValue, icu.type, cases, icu.sourceSpan, icu.switchValueSourceSpan);\n        }\n        this._inIcu = wasInIcu;\n        return icu;\n    };\n    /**\n     * @param {?} comment\n     * @param {?} context\n     * @return {?}\n     */\n    _Visitor.prototype.visitComment = function (comment, context) {\n        var /** @type {?} */ isOpening = _isOpeningComment(comment);\n        if (isOpening && this._isInTranslatableSection) {\n            this._reportError(comment, 'Could not start a block inside a translatable section');\n            return;\n        }\n        var /** @type {?} */ isClosing = _isClosingComment(comment);\n        if (isClosing && !this._inI18nBlock) {\n            this._reportError(comment, 'Trying to close an unopened block');\n            return;\n        }\n        if (!this._inI18nNode && !this._inIcu) {\n            if (!this._inI18nBlock) {\n                if (isOpening) {\n                    this._inI18nBlock = true;\n                    this._blockStartDepth = this._depth;\n                    this._blockChildren = [];\n                    this._blockMeaningAndDesc = comment.value.replace(_I18N_COMMENT_PREFIX_REGEXP, '').trim();\n                    this._openTranslatableSection(comment);\n                }\n            }\n            else {\n                if (isClosing) {\n                    if (this._depth == this._blockStartDepth) {\n                        this._closeTranslatableSection(comment, this._blockChildren);\n                        this._inI18nBlock = false;\n                        var /** @type {?} */ message = this._addMessage(this._blockChildren, this._blockMeaningAndDesc);\n                        // merge attributes in sections\n                        var /** @type {?} */ nodes = this._translateMessage(comment, message);\n                        return visitAll(this, nodes);\n                    }\n                    else {\n                        this._reportError(comment, 'I18N blocks should not cross element boundaries');\n                        return;\n                    }\n                }\n            }\n        }\n    };\n    /**\n     * @param {?} text\n     * @param {?} context\n     * @return {?}\n     */\n    _Visitor.prototype.visitText = function (text, context) {\n        if (this._isInTranslatableSection) {\n            this._mayBeAddBlockChildren(text);\n        }\n        return text;\n    };\n    /**\n     * @param {?} el\n     * @param {?} context\n     * @return {?}\n     */\n    _Visitor.prototype.visitElement = function (el, context) {\n        var _this = this;\n        this._mayBeAddBlockChildren(el);\n        this._depth++;\n        var /** @type {?} */ wasInI18nNode = this._inI18nNode;\n        var /** @type {?} */ wasInImplicitNode = this._inImplicitNode;\n        var /** @type {?} */ childNodes = [];\n        var /** @type {?} */ translatedChildNodes;\n        // Extract:\n        // - top level nodes with the (implicit) \"i18n\" attribute if not already in a section\n        // - ICU messages\n        var /** @type {?} */ i18nAttr = _getI18nAttr(el);\n        var /** @type {?} */ i18nMeta = i18nAttr ? i18nAttr.value : '';\n        var /** @type {?} */ isImplicit = this._implicitTags.some(function (tag) { return el.name === tag; }) && !this._inIcu &&\n            !this._isInTranslatableSection;\n        var /** @type {?} */ isTopLevelImplicit = !wasInImplicitNode && isImplicit;\n        this._inImplicitNode = wasInImplicitNode || isImplicit;\n        if (!this._isInTranslatableSection && !this._inIcu) {\n            if (i18nAttr || isTopLevelImplicit) {\n                this._inI18nNode = true;\n                var /** @type {?} */ message = this._addMessage(el.children, i18nMeta);\n                translatedChildNodes = this._translateMessage(el, message);\n            }\n            if (this._mode == _VisitorMode.Extract) {\n                var /** @type {?} */ isTranslatable = i18nAttr || isTopLevelImplicit;\n                if (isTranslatable)\n                    this._openTranslatableSection(el);\n                visitAll(this, el.children);\n                if (isTranslatable)\n                    this._closeTranslatableSection(el, el.children);\n            }\n        }\n        else {\n            if (i18nAttr || isTopLevelImplicit) {\n                this._reportError(el, 'Could not mark an element as translatable inside a translatable section');\n            }\n            if (this._mode == _VisitorMode.Extract) {\n                // Descend into child nodes for extraction\n                visitAll(this, el.children);\n            }\n        }\n        if (this._mode === _VisitorMode.Merge) {\n            var /** @type {?} */ visitNodes = translatedChildNodes || el.children;\n            visitNodes.forEach(function (child) {\n                var /** @type {?} */ visited = child.visit(_this, context);\n                if (visited && !_this._isInTranslatableSection) {\n                    // Do not add the children from translatable sections (= i18n blocks here)\n                    // They will be added later in this loop when the block closes (i.e. on `<!-- /i18n -->`)\n                    childNodes = childNodes.concat(visited);\n                }\n            });\n        }\n        this._visitAttributesOf(el);\n        this._depth--;\n        this._inI18nNode = wasInI18nNode;\n        this._inImplicitNode = wasInImplicitNode;\n        if (this._mode === _VisitorMode.Merge) {\n            var /** @type {?} */ translatedAttrs = this._translateAttributes(el);\n            return new Element(el.name, translatedAttrs, childNodes, el.sourceSpan, el.startSourceSpan, el.endSourceSpan);\n        }\n    };\n    /**\n     * @param {?} attribute\n     * @param {?} context\n     * @return {?}\n     */\n    _Visitor.prototype.visitAttribute = function (attribute, context) {\n        throw new Error('unreachable code');\n    };\n    /**\n     * @param {?} mode\n     * @param {?} interpolationConfig\n     * @return {?}\n     */\n    _Visitor.prototype._init = function (mode, interpolationConfig) {\n        this._mode = mode;\n        this._inI18nBlock = false;\n        this._inI18nNode = false;\n        this._depth = 0;\n        this._inIcu = false;\n        this._msgCountAtSectionStart = void 0;\n        this._errors = [];\n        this._messages = [];\n        this._inImplicitNode = false;\n        this._createI18nMessage = createI18nMessageFactory(interpolationConfig);\n    };\n    /**\n     * @param {?} el\n     * @return {?}\n     */\n    _Visitor.prototype._visitAttributesOf = function (el) {\n        var _this = this;\n        var /** @type {?} */ explicitAttrNameToValue = {};\n        var /** @type {?} */ implicitAttrNames = this._implicitAttrs[el.name] || [];\n        el.attrs.filter(function (attr) { return attr.name.startsWith(_I18N_ATTR_PREFIX); })\n            .forEach(function (attr) { return explicitAttrNameToValue[attr.name.slice(_I18N_ATTR_PREFIX.length)] =\n            attr.value; });\n        el.attrs.forEach(function (attr) {\n            if (attr.name in explicitAttrNameToValue) {\n                _this._addMessage([attr], explicitAttrNameToValue[attr.name]);\n            }\n            else if (implicitAttrNames.some(function (name) { return attr.name === name; })) {\n                _this._addMessage([attr]);\n            }\n        });\n    };\n    /**\n     * @param {?} ast\n     * @param {?=} msgMeta\n     * @return {?}\n     */\n    _Visitor.prototype._addMessage = function (ast, msgMeta) {\n        if (ast.length == 0 ||\n            ast.length == 1 && ast[0] instanceof Attribute$1 && !((ast[0])).value) {\n            // Do not create empty messages\n            return;\n        }\n        var _a = _parseMessageMeta(msgMeta), meaning = _a.meaning, description = _a.description, id = _a.id;\n        var /** @type {?} */ message = this._createI18nMessage(ast, meaning, description, id);\n        this._messages.push(message);\n        return message;\n    };\n    /**\n     * @param {?} el\n     * @param {?} message\n     * @return {?}\n     */\n    _Visitor.prototype._translateMessage = function (el, message) {\n        if (message && this._mode === _VisitorMode.Merge) {\n            var /** @type {?} */ nodes = this._translations.get(message);\n            if (nodes) {\n                return nodes;\n            }\n            this._reportError(el, \"Translation unavailable for message id=\\\"\" + this._translations.digest(message) + \"\\\"\");\n        }\n        return [];\n    };\n    /**\n     * @param {?} el\n     * @return {?}\n     */\n    _Visitor.prototype._translateAttributes = function (el) {\n        var _this = this;\n        var /** @type {?} */ attributes = el.attrs;\n        var /** @type {?} */ i18nParsedMessageMeta = {};\n        attributes.forEach(function (attr) {\n            if (attr.name.startsWith(_I18N_ATTR_PREFIX)) {\n                i18nParsedMessageMeta[attr.name.slice(_I18N_ATTR_PREFIX.length)] =\n                    _parseMessageMeta(attr.value);\n            }\n        });\n        var /** @type {?} */ translatedAttributes = [];\n        attributes.forEach(function (attr) {\n            if (attr.name === _I18N_ATTR || attr.name.startsWith(_I18N_ATTR_PREFIX)) {\n                // strip i18n specific attributes\n                return;\n            }\n            if (attr.value && attr.value != '' && i18nParsedMessageMeta.hasOwnProperty(attr.name)) {\n                var _a = i18nParsedMessageMeta[attr.name], meaning = _a.meaning, description = _a.description, id = _a.id;\n                var /** @type {?} */ message = _this._createI18nMessage([attr], meaning, description, id);\n                var /** @type {?} */ nodes = _this._translations.get(message);\n                if (nodes) {\n                    if (nodes.length == 0) {\n                        translatedAttributes.push(new Attribute$1(attr.name, '', attr.sourceSpan));\n                    }\n                    else if (nodes[0] instanceof Text) {\n                        var /** @type {?} */ value = ((nodes[0])).value;\n                        translatedAttributes.push(new Attribute$1(attr.name, value, attr.sourceSpan));\n                    }\n                    else {\n                        _this._reportError(el, \"Unexpected translation for attribute \\\"\" + attr.name + \"\\\" (id=\\\"\" + (id || _this._translations.digest(message)) + \"\\\")\");\n                    }\n                }\n                else {\n                    _this._reportError(el, \"Translation unavailable for attribute \\\"\" + attr.name + \"\\\" (id=\\\"\" + (id || _this._translations.digest(message)) + \"\\\")\");\n                }\n            }\n            else {\n                translatedAttributes.push(attr);\n            }\n        });\n        return translatedAttributes;\n    };\n    /**\n     * Add the node as a child of the block when:\n     * - we are in a block,\n     * - we are not inside a ICU message (those are handled separately),\n     * - the node is a \"direct child\" of the block\n     * @param {?} node\n     * @return {?}\n     */\n    _Visitor.prototype._mayBeAddBlockChildren = function (node) {\n        if (this._inI18nBlock && !this._inIcu && this._depth == this._blockStartDepth) {\n            this._blockChildren.push(node);\n        }\n    };\n    /**\n     * Marks the start of a section, see `_closeTranslatableSection`\n     * @param {?} node\n     * @return {?}\n     */\n    _Visitor.prototype._openTranslatableSection = function (node) {\n        if (this._isInTranslatableSection) {\n            this._reportError(node, 'Unexpected section start');\n        }\n        else {\n            this._msgCountAtSectionStart = this._messages.length;\n        }\n    };\n    Object.defineProperty(_Visitor.prototype, \"_isInTranslatableSection\", {\n        /**\n         * A translatable section could be:\n         * - the content of translatable element,\n         * - nodes between `<!-- i18n -->` and `<!-- /i18n -->` comments\n         * @return {?}\n         */\n        get: function () {\n            return this._msgCountAtSectionStart !== void 0;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * Terminates a section.\n     *\n     * If a section has only one significant children (comments not significant) then we should not\n     * keep the message from this children:\n     *\n     * `<p i18n=\"meaning|description\">{ICU message}</p>` would produce two messages:\n     * - one for the <p> content with meaning and description,\n     * - another one for the ICU message.\n     *\n     * In this case the last message is discarded as it contains less information (the AST is\n     * otherwise identical).\n     *\n     * Note that we should still keep messages extracted from attributes inside the section (ie in the\n     * ICU message here)\n     * @param {?} node\n     * @param {?} directChildren\n     * @return {?}\n     */\n    _Visitor.prototype._closeTranslatableSection = function (node, directChildren) {\n        if (!this._isInTranslatableSection) {\n            this._reportError(node, 'Unexpected section end');\n            return;\n        }\n        var /** @type {?} */ startIndex = this._msgCountAtSectionStart;\n        var /** @type {?} */ significantChildren = directChildren.reduce(function (count, node) { return count + (node instanceof Comment ? 0 : 1); }, 0);\n        if (significantChildren == 1) {\n            for (var /** @type {?} */ i = this._messages.length - 1; i >= startIndex; i--) {\n                var /** @type {?} */ ast = this._messages[i].nodes;\n                if (!(ast.length == 1 && ast[0] instanceof Text$1)) {\n                    this._messages.splice(i, 1);\n                    break;\n                }\n            }\n        }\n        this._msgCountAtSectionStart = void 0;\n    };\n    /**\n     * @param {?} node\n     * @param {?} msg\n     * @return {?}\n     */\n    _Visitor.prototype._reportError = function (node, msg) {\n        this._errors.push(new I18nError(node.sourceSpan, msg));\n    };\n    return _Visitor;\n}());\n/**\n * @param {?} n\n * @return {?}\n */\nfunction _isOpeningComment(n) {\n    return n instanceof Comment && n.value && n.value.startsWith('i18n');\n}\n/**\n * @param {?} n\n * @return {?}\n */\nfunction _isClosingComment(n) {\n    return n instanceof Comment && n.value && n.value === '/i18n';\n}\n/**\n * @param {?} p\n * @return {?}\n */\nfunction _getI18nAttr(p) {\n    return p.attrs.find(function (attr) { return attr.name === _I18N_ATTR; }) || null;\n}\n/**\n * @param {?} i18n\n * @return {?}\n */\nfunction _parseMessageMeta(i18n) {\n    if (!i18n)\n        return { meaning: '', description: '', id: '' };\n    var /** @type {?} */ idIndex = i18n.indexOf(ID_SEPARATOR);\n    var /** @type {?} */ descIndex = i18n.indexOf(MEANING_SEPARATOR);\n    var _a = (idIndex > -1) ? [i18n.slice(0, idIndex), i18n.slice(idIndex + 2)] : [i18n, ''], meaningAndDesc = _a[0], id = _a[1];\n    var _b = (descIndex > -1) ?\n        [meaningAndDesc.slice(0, descIndex), meaningAndDesc.slice(descIndex + 1)] :\n        ['', meaningAndDesc], meaning = _b[0], description = _b[1];\n    return { meaning: meaning, description: description, id: id };\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar XmlTagDefinition = (function () {\n    function XmlTagDefinition() {\n        this.closedByParent = false;\n        this.contentType = TagContentType.PARSABLE_DATA;\n        this.isVoid = false;\n        this.ignoreFirstLf = false;\n        this.canSelfClose = true;\n    }\n    /**\n     * @param {?} currentParent\n     * @return {?}\n     */\n    XmlTagDefinition.prototype.requireExtraParent = function (currentParent) { return false; };\n    /**\n     * @param {?} name\n     * @return {?}\n     */\n    XmlTagDefinition.prototype.isClosedByChild = function (name) { return false; };\n    return XmlTagDefinition;\n}());\nvar _TAG_DEFINITION = new XmlTagDefinition();\n/**\n * @param {?} tagName\n * @return {?}\n */\nfunction getXmlTagDefinition(tagName) {\n    return _TAG_DEFINITION;\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar XmlParser = (function (_super) {\n    __extends(XmlParser, _super);\n    function XmlParser() {\n        return _super.call(this, getXmlTagDefinition) || this;\n    }\n    /**\n     * @param {?} source\n     * @param {?} url\n     * @param {?=} parseExpansionForms\n     * @return {?}\n     */\n    XmlParser.prototype.parse = function (source, url, parseExpansionForms) {\n        if (parseExpansionForms === void 0) { parseExpansionForms = false; }\n        return _super.prototype.parse.call(this, source, url, parseExpansionForms, null);\n    };\n    return XmlParser;\n}(Parser$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 * @param {?} message\n * @return {?}\n */\nfunction digest(message) {\n    return message.id || sha1(serializeNodes(message.nodes).join('') + (\"[\" + message.meaning + \"]\"));\n}\n/**\n * @param {?} message\n * @return {?}\n */\nfunction decimalDigest(message) {\n    if (message.id) {\n        return message.id;\n    }\n    var /** @type {?} */ visitor = new _SerializerIgnoreIcuExpVisitor();\n    var /** @type {?} */ parts = message.nodes.map(function (a) { return a.visit(visitor, null); });\n    return computeMsgId(parts.join(''), message.meaning);\n}\n/**\n * Serialize the i18n ast to something xml-like in order to generate an UID.\n *\n * The visitor is also used in the i18n parser tests\n *\n * \\@internal\n */\nvar _SerializerVisitor = (function () {\n    function _SerializerVisitor() {\n    }\n    /**\n     * @param {?} text\n     * @param {?} context\n     * @return {?}\n     */\n    _SerializerVisitor.prototype.visitText = function (text, context) { return text.value; };\n    /**\n     * @param {?} container\n     * @param {?} context\n     * @return {?}\n     */\n    _SerializerVisitor.prototype.visitContainer = function (container, context) {\n        var _this = this;\n        return \"[\" + container.children.map(function (child) { return child.visit(_this); }).join(', ') + \"]\";\n    };\n    /**\n     * @param {?} icu\n     * @param {?} context\n     * @return {?}\n     */\n    _SerializerVisitor.prototype.visitIcu = function (icu, context) {\n        var _this = this;\n        var /** @type {?} */ strCases = Object.keys(icu.cases).map(function (k) { return k + \" {\" + icu.cases[k].visit(_this) + \"}\"; });\n        return \"{\" + icu.expression + \", \" + icu.type + \", \" + strCases.join(', ') + \"}\";\n    };\n    /**\n     * @param {?} ph\n     * @param {?} context\n     * @return {?}\n     */\n    _SerializerVisitor.prototype.visitTagPlaceholder = function (ph, context) {\n        var _this = this;\n        return ph.isVoid ?\n            \"<ph tag name=\\\"\" + ph.startName + \"\\\"/>\" :\n            \"<ph tag name=\\\"\" + ph.startName + \"\\\">\" + ph.children.map(function (child) { return child.visit(_this); }).join(', ') + \"</ph name=\\\"\" + ph.closeName + \"\\\">\";\n    };\n    /**\n     * @param {?} ph\n     * @param {?} context\n     * @return {?}\n     */\n    _SerializerVisitor.prototype.visitPlaceholder = function (ph, context) {\n        return ph.value ? \"<ph name=\\\"\" + ph.name + \"\\\">\" + ph.value + \"</ph>\" : \"<ph name=\\\"\" + ph.name + \"\\\"/>\";\n    };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    _SerializerVisitor.prototype.visitIcuPlaceholder = function (ph, context) {\n        return \"<ph icu name=\\\"\" + ph.name + \"\\\">\" + ph.value.visit(this) + \"</ph>\";\n    };\n    return _SerializerVisitor;\n}());\nvar serializerVisitor = new _SerializerVisitor();\n/**\n * @param {?} nodes\n * @return {?}\n */\nfunction serializeNodes(nodes) {\n    return nodes.map(function (a) { return a.visit(serializerVisitor, null); });\n}\n/**\n * Serialize the i18n ast to something xml-like in order to generate an UID.\n *\n * Ignore the ICU expressions so that message IDs stays identical if only the expression changes.\n *\n * \\@internal\n */\nvar _SerializerIgnoreIcuExpVisitor = (function (_super) {\n    __extends(_SerializerIgnoreIcuExpVisitor, _super);\n    function _SerializerIgnoreIcuExpVisitor() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @param {?} icu\n     * @param {?} context\n     * @return {?}\n     */\n    _SerializerIgnoreIcuExpVisitor.prototype.visitIcu = function (icu, context) {\n        var _this = this;\n        var /** @type {?} */ strCases = Object.keys(icu.cases).map(function (k) { return k + \" {\" + icu.cases[k].visit(_this) + \"}\"; });\n        // Do not take the expression into account\n        return \"{\" + icu.type + \", \" + strCases.join(', ') + \"}\";\n    };\n    return _SerializerIgnoreIcuExpVisitor;\n}(_SerializerVisitor));\n/**\n * Compute the SHA1 of the given string\n *\n * see http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf\n *\n * WARNING: this function has not been designed not tested with security in mind.\n *          DO NOT USE IT IN A SECURITY SENSITIVE CONTEXT.\n * @param {?} str\n * @return {?}\n */\nfunction sha1(str) {\n    var /** @type {?} */ utf8 = utf8Encode(str);\n    var /** @type {?} */ words32 = stringToWords32(utf8, Endian.Big);\n    var /** @type {?} */ len = utf8.length * 8;\n    var /** @type {?} */ w = new Array(80);\n    var _a = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0], a = _a[0], b = _a[1], c = _a[2], d = _a[3], e = _a[4];\n    words32[len >> 5] |= 0x80 << (24 - len % 32);\n    words32[((len + 64 >> 9) << 4) + 15] = len;\n    for (var /** @type {?} */ i = 0; i < words32.length; i += 16) {\n        var _b = [a, b, c, d, e], h0 = _b[0], h1 = _b[1], h2 = _b[2], h3 = _b[3], h4 = _b[4];\n        for (var /** @type {?} */ j = 0; j < 80; j++) {\n            if (j < 16) {\n                w[j] = words32[i + j];\n            }\n            else {\n                w[j] = rol32(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);\n            }\n            var _c = fk(j, b, c, d), f = _c[0], k = _c[1];\n            var /** @type {?} */ temp = [rol32(a, 5), f, e, k, w[j]].reduce(add32);\n            _d = [d, c, rol32(b, 30), a, temp], e = _d[0], d = _d[1], c = _d[2], b = _d[3], a = _d[4];\n        }\n        _e = [add32(a, h0), add32(b, h1), add32(c, h2), add32(d, h3), add32(e, h4)], a = _e[0], b = _e[1], c = _e[2], d = _e[3], e = _e[4];\n    }\n    return byteStringToHexString(words32ToByteString([a, b, c, d, e]));\n    var _d, _e;\n}\n/**\n * @param {?} index\n * @param {?} b\n * @param {?} c\n * @param {?} d\n * @return {?}\n */\nfunction fk(index, b, c, d) {\n    if (index < 20) {\n        return [(b & c) | (~b & d), 0x5a827999];\n    }\n    if (index < 40) {\n        return [b ^ c ^ d, 0x6ed9eba1];\n    }\n    if (index < 60) {\n        return [(b & c) | (b & d) | (c & d), 0x8f1bbcdc];\n    }\n    return [b ^ c ^ d, 0xca62c1d6];\n}\n/**\n * Compute the fingerprint of the given string\n *\n * The output is 64 bit number encoded as a decimal string\n *\n * based on:\n * https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/GoogleJsMessageIdGenerator.java\n * @param {?} str\n * @return {?}\n */\nfunction fingerprint(str) {\n    var /** @type {?} */ utf8 = utf8Encode(str);\n    var _a = [hash32(utf8, 0), hash32(utf8, 102072)], hi = _a[0], lo = _a[1];\n    if (hi == 0 && (lo == 0 || lo == 1)) {\n        hi = hi ^ 0x130f9bef;\n        lo = lo ^ -0x6b5f56d8;\n    }\n    return [hi, lo];\n}\n/**\n * @param {?} msg\n * @param {?} meaning\n * @return {?}\n */\nfunction computeMsgId(msg, meaning) {\n    var _a = fingerprint(msg), hi = _a[0], lo = _a[1];\n    if (meaning) {\n        var _b = fingerprint(meaning), him = _b[0], lom = _b[1];\n        _c = add64(rol64([hi, lo], 1), [him, lom]), hi = _c[0], lo = _c[1];\n    }\n    return byteStringToDecString(words32ToByteString([hi & 0x7fffffff, lo]));\n    var _c;\n}\n/**\n * @param {?} str\n * @param {?} c\n * @return {?}\n */\nfunction hash32(str, c) {\n    var _a = [0x9e3779b9, 0x9e3779b9], a = _a[0], b = _a[1];\n    var /** @type {?} */ i;\n    var /** @type {?} */ len = str.length;\n    for (i = 0; i + 12 <= len; i += 12) {\n        a = add32(a, wordAt(str, i, Endian.Little));\n        b = add32(b, wordAt(str, i + 4, Endian.Little));\n        c = add32(c, wordAt(str, i + 8, Endian.Little));\n        _b = mix([a, b, c]), a = _b[0], b = _b[1], c = _b[2];\n    }\n    a = add32(a, wordAt(str, i, Endian.Little));\n    b = add32(b, wordAt(str, i + 4, Endian.Little));\n    // the first byte of c is reserved for the length\n    c = add32(c, len);\n    c = add32(c, wordAt(str, i + 8, Endian.Little) << 8);\n    return mix([a, b, c])[2];\n    var _b;\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction mix(_a) {\n    var a = _a[0], b = _a[1], c = _a[2];\n    a = sub32(a, b);\n    a = sub32(a, c);\n    a ^= c >>> 13;\n    b = sub32(b, c);\n    b = sub32(b, a);\n    b ^= a << 8;\n    c = sub32(c, a);\n    c = sub32(c, b);\n    c ^= b >>> 13;\n    a = sub32(a, b);\n    a = sub32(a, c);\n    a ^= c >>> 12;\n    b = sub32(b, c);\n    b = sub32(b, a);\n    b ^= a << 16;\n    c = sub32(c, a);\n    c = sub32(c, b);\n    c ^= b >>> 5;\n    a = sub32(a, b);\n    a = sub32(a, c);\n    a ^= c >>> 3;\n    b = sub32(b, c);\n    b = sub32(b, a);\n    b ^= a << 10;\n    c = sub32(c, a);\n    c = sub32(c, b);\n    c ^= b >>> 15;\n    return [a, b, c];\n}\nvar Endian = {};\nEndian.Little = 0;\nEndian.Big = 1;\nEndian[Endian.Little] = \"Little\";\nEndian[Endian.Big] = \"Big\";\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction add32(a, b) {\n    return add32to64(a, b)[1];\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction add32to64(a, b) {\n    var /** @type {?} */ low = (a & 0xffff) + (b & 0xffff);\n    var /** @type {?} */ high = (a >>> 16) + (b >>> 16) + (low >>> 16);\n    return [high >>> 16, (high << 16) | (low & 0xffff)];\n}\n/**\n * @param {?} __0\n * @param {?} __1\n * @return {?}\n */\nfunction add64(_a, _b) {\n    var ah = _a[0], al = _a[1];\n    var bh = _b[0], bl = _b[1];\n    var _c = add32to64(al, bl), carry = _c[0], l = _c[1];\n    var /** @type {?} */ h = add32(add32(ah, bh), carry);\n    return [h, l];\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction sub32(a, b) {\n    var /** @type {?} */ low = (a & 0xffff) - (b & 0xffff);\n    var /** @type {?} */ high = (a >> 16) - (b >> 16) + (low >> 16);\n    return (high << 16) | (low & 0xffff);\n}\n/**\n * @param {?} a\n * @param {?} count\n * @return {?}\n */\nfunction rol32(a, count) {\n    return (a << count) | (a >>> (32 - count));\n}\n/**\n * @param {?} __0\n * @param {?} count\n * @return {?}\n */\nfunction rol64(_a, count) {\n    var hi = _a[0], lo = _a[1];\n    var /** @type {?} */ h = (hi << count) | (lo >>> (32 - count));\n    var /** @type {?} */ l = (lo << count) | (hi >>> (32 - count));\n    return [h, l];\n}\n/**\n * @param {?} str\n * @param {?} endian\n * @return {?}\n */\nfunction stringToWords32(str, endian) {\n    var /** @type {?} */ words32 = Array((str.length + 3) >>> 2);\n    for (var /** @type {?} */ i = 0; i < words32.length; i++) {\n        words32[i] = wordAt(str, i * 4, endian);\n    }\n    return words32;\n}\n/**\n * @param {?} str\n * @param {?} index\n * @return {?}\n */\nfunction byteAt(str, index) {\n    return index >= str.length ? 0 : str.charCodeAt(index) & 0xff;\n}\n/**\n * @param {?} str\n * @param {?} index\n * @param {?} endian\n * @return {?}\n */\nfunction wordAt(str, index, endian) {\n    var /** @type {?} */ word = 0;\n    if (endian === Endian.Big) {\n        for (var /** @type {?} */ i = 0; i < 4; i++) {\n            word += byteAt(str, index + i) << (24 - 8 * i);\n        }\n    }\n    else {\n        for (var /** @type {?} */ i = 0; i < 4; i++) {\n            word += byteAt(str, index + i) << 8 * i;\n        }\n    }\n    return word;\n}\n/**\n * @param {?} words32\n * @return {?}\n */\nfunction words32ToByteString(words32) {\n    return words32.reduce(function (str, word) { return str + word32ToByteString(word); }, '');\n}\n/**\n * @param {?} word\n * @return {?}\n */\nfunction word32ToByteString(word) {\n    var /** @type {?} */ str = '';\n    for (var /** @type {?} */ i = 0; i < 4; i++) {\n        str += String.fromCharCode((word >>> 8 * (3 - i)) & 0xff);\n    }\n    return str;\n}\n/**\n * @param {?} str\n * @return {?}\n */\nfunction byteStringToHexString(str) {\n    var /** @type {?} */ hex = '';\n    for (var /** @type {?} */ i = 0; i < str.length; i++) {\n        var /** @type {?} */ b = byteAt(str, i);\n        hex += (b >>> 4).toString(16) + (b & 0x0f).toString(16);\n    }\n    return hex.toLowerCase();\n}\n/**\n * @param {?} str\n * @return {?}\n */\nfunction byteStringToDecString(str) {\n    var /** @type {?} */ decimal = '';\n    var /** @type {?} */ toThePower = '1';\n    for (var /** @type {?} */ i = str.length - 1; i >= 0; i--) {\n        decimal = addBigInt(decimal, numberTimesBigInt(byteAt(str, i), toThePower));\n        toThePower = numberTimesBigInt(256, toThePower);\n    }\n    return decimal.split('').reverse().join('');\n}\n/**\n * @param {?} x\n * @param {?} y\n * @return {?}\n */\nfunction addBigInt(x, y) {\n    var /** @type {?} */ sum = '';\n    var /** @type {?} */ len = Math.max(x.length, y.length);\n    for (var /** @type {?} */ i = 0, /** @type {?} */ carry = 0; i < len || carry; i++) {\n        var /** @type {?} */ tmpSum = carry + +(x[i] || 0) + +(y[i] || 0);\n        if (tmpSum >= 10) {\n            carry = 1;\n            sum += tmpSum - 10;\n        }\n        else {\n            carry = 0;\n            sum += tmpSum;\n        }\n    }\n    return sum;\n}\n/**\n * @param {?} num\n * @param {?} b\n * @return {?}\n */\nfunction numberTimesBigInt(num, b) {\n    var /** @type {?} */ product = '';\n    var /** @type {?} */ bToThePower = b;\n    for (; num !== 0; num = num >>> 1) {\n        if (num & 1)\n            product = addBigInt(product, bToThePower);\n        bToThePower = addBigInt(bToThePower, bToThePower);\n    }\n    return product;\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this 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 * @abstract\n */\nvar Serializer = (function () {\n    function Serializer() {\n    }\n    /**\n     * @abstract\n     * @param {?} messages\n     * @param {?} locale\n     * @return {?}\n     */\n    Serializer.prototype.write = function (messages, locale) { };\n    /**\n     * @abstract\n     * @param {?} content\n     * @param {?} url\n     * @return {?}\n     */\n    Serializer.prototype.load = function (content, url) { };\n    /**\n     * @abstract\n     * @param {?} message\n     * @return {?}\n     */\n    Serializer.prototype.digest = function (message) { };\n    /**\n     * @param {?} message\n     * @return {?}\n     */\n    Serializer.prototype.createNameMapper = function (message) { return null; };\n    return Serializer;\n}());\n/**\n * A simple mapper that take a function to transform an internal name to a public name\n */\nvar SimplePlaceholderMapper = (function (_super) {\n    __extends(SimplePlaceholderMapper, _super);\n    /**\n     * @param {?} message\n     * @param {?} mapName\n     */\n    function SimplePlaceholderMapper(message, mapName) {\n        var _this = _super.call(this) || this;\n        _this.mapName = mapName;\n        _this.internalToPublic = {};\n        _this.publicToNextId = {};\n        _this.publicToInternal = {};\n        message.nodes.forEach(function (node) { return node.visit(_this); });\n        return _this;\n    }\n    /**\n     * @param {?} internalName\n     * @return {?}\n     */\n    SimplePlaceholderMapper.prototype.toPublicName = function (internalName) {\n        return this.internalToPublic.hasOwnProperty(internalName) ?\n            this.internalToPublic[internalName] :\n            null;\n    };\n    /**\n     * @param {?} publicName\n     * @return {?}\n     */\n    SimplePlaceholderMapper.prototype.toInternalName = function (publicName) {\n        return this.publicToInternal.hasOwnProperty(publicName) ? this.publicToInternal[publicName] :\n            null;\n    };\n    /**\n     * @param {?} text\n     * @param {?=} context\n     * @return {?}\n     */\n    SimplePlaceholderMapper.prototype.visitText = function (text, context) { return null; };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    SimplePlaceholderMapper.prototype.visitTagPlaceholder = function (ph, context) {\n        this.visitPlaceholderName(ph.startName);\n        _super.prototype.visitTagPlaceholder.call(this, ph, context);\n        this.visitPlaceholderName(ph.closeName);\n    };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    SimplePlaceholderMapper.prototype.visitPlaceholder = function (ph, context) { this.visitPlaceholderName(ph.name); };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    SimplePlaceholderMapper.prototype.visitIcuPlaceholder = function (ph, context) {\n        this.visitPlaceholderName(ph.name);\n    };\n    /**\n     * @param {?} internalName\n     * @return {?}\n     */\n    SimplePlaceholderMapper.prototype.visitPlaceholderName = function (internalName) {\n        if (!internalName || this.internalToPublic.hasOwnProperty(internalName)) {\n            return;\n        }\n        var /** @type {?} */ publicName = this.mapName(internalName);\n        if (this.publicToInternal.hasOwnProperty(publicName)) {\n            // Create a new XMB when it has already been used\n            var /** @type {?} */ nextId = this.publicToNextId[publicName];\n            this.publicToNextId[publicName] = nextId + 1;\n            publicName = publicName + \"_\" + nextId;\n        }\n        else {\n            this.publicToNextId[publicName] = 1;\n        }\n        this.internalToPublic[internalName] = publicName;\n        this.publicToInternal[publicName] = internalName;\n    };\n    return SimplePlaceholderMapper;\n}(RecurseVisitor));\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar _Visitor$1 = (function () {\n    function _Visitor$1() {\n    }\n    /**\n     * @param {?} tag\n     * @return {?}\n     */\n    _Visitor$1.prototype.visitTag = function (tag) {\n        var _this = this;\n        var /** @type {?} */ strAttrs = this._serializeAttributes(tag.attrs);\n        if (tag.children.length == 0) {\n            return \"<\" + tag.name + strAttrs + \"/>\";\n        }\n        var /** @type {?} */ strChildren = tag.children.map(function (node) { return node.visit(_this); });\n        return \"<\" + tag.name + strAttrs + \">\" + strChildren.join('') + \"</\" + tag.name + \">\";\n    };\n    /**\n     * @param {?} text\n     * @return {?}\n     */\n    _Visitor$1.prototype.visitText = function (text) { return text.value; };\n    /**\n     * @param {?} decl\n     * @return {?}\n     */\n    _Visitor$1.prototype.visitDeclaration = function (decl) {\n        return \"<?xml\" + this._serializeAttributes(decl.attrs) + \" ?>\";\n    };\n    /**\n     * @param {?} attrs\n     * @return {?}\n     */\n    _Visitor$1.prototype._serializeAttributes = function (attrs) {\n        var /** @type {?} */ strAttrs = Object.keys(attrs).map(function (name) { return name + \"=\\\"\" + attrs[name] + \"\\\"\"; }).join(' ');\n        return strAttrs.length > 0 ? ' ' + strAttrs : '';\n    };\n    /**\n     * @param {?} doctype\n     * @return {?}\n     */\n    _Visitor$1.prototype.visitDoctype = function (doctype) {\n        return \"<!DOCTYPE \" + doctype.rootTag + \" [\\n\" + doctype.dtd + \"\\n]>\";\n    };\n    return _Visitor$1;\n}());\nvar _visitor = new _Visitor$1();\n/**\n * @param {?} nodes\n * @return {?}\n */\nfunction serialize(nodes) {\n    return nodes.map(function (node) { return node.visit(_visitor); }).join('');\n}\nvar Declaration = (function () {\n    /**\n     * @param {?} unescapedAttrs\n     */\n    function Declaration(unescapedAttrs) {\n        var _this = this;\n        this.attrs = {};\n        Object.keys(unescapedAttrs).forEach(function (k) {\n            _this.attrs[k] = _escapeXml(unescapedAttrs[k]);\n        });\n    }\n    /**\n     * @param {?} visitor\n     * @return {?}\n     */\n    Declaration.prototype.visit = function (visitor) { return visitor.visitDeclaration(this); };\n    return Declaration;\n}());\nvar Doctype = (function () {\n    /**\n     * @param {?} rootTag\n     * @param {?} dtd\n     */\n    function Doctype(rootTag, dtd) {\n        this.rootTag = rootTag;\n        this.dtd = dtd;\n    }\n    ;\n    /**\n     * @param {?} visitor\n     * @return {?}\n     */\n    Doctype.prototype.visit = function (visitor) { return visitor.visitDoctype(this); };\n    return Doctype;\n}());\nvar Tag = (function () {\n    /**\n     * @param {?} name\n     * @param {?=} unescapedAttrs\n     * @param {?=} children\n     */\n    function Tag(name, unescapedAttrs, children) {\n        if (unescapedAttrs === void 0) { unescapedAttrs = {}; }\n        if (children === void 0) { children = []; }\n        var _this = this;\n        this.name = name;\n        this.children = children;\n        this.attrs = {};\n        Object.keys(unescapedAttrs).forEach(function (k) {\n            _this.attrs[k] = _escapeXml(unescapedAttrs[k]);\n        });\n    }\n    /**\n     * @param {?} visitor\n     * @return {?}\n     */\n    Tag.prototype.visit = function (visitor) { return visitor.visitTag(this); };\n    return Tag;\n}());\nvar Text$2 = (function () {\n    /**\n     * @param {?} unescapedValue\n     */\n    function Text$2(unescapedValue) {\n        this.value = _escapeXml(unescapedValue);\n    }\n    ;\n    /**\n     * @param {?} visitor\n     * @return {?}\n     */\n    Text$2.prototype.visit = function (visitor) { return visitor.visitText(this); };\n    return Text$2;\n}());\nvar CR = (function (_super) {\n    __extends(CR, _super);\n    /**\n     * @param {?=} ws\n     */\n    function CR(ws) {\n        if (ws === void 0) { ws = 0; }\n        return _super.call(this, \"\\n\" + new Array(ws + 1).join(' ')) || this;\n    }\n    return CR;\n}(Text$2));\nvar _ESCAPED_CHARS = [\n    [/&/g, '&amp;'],\n    [/\"/g, '&quot;'],\n    [/'/g, '&apos;'],\n    [/</g, '&lt;'],\n    [/>/g, '&gt;'],\n];\n/**\n * @param {?} text\n * @return {?}\n */\nfunction _escapeXml(text) {\n    return _ESCAPED_CHARS.reduce(function (text, entry) { return text.replace(entry[0], entry[1]); }, text);\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar _VERSION = '1.2';\nvar _XMLNS = 'urn:oasis:names:tc:xliff:document:1.2';\n// TODO(vicb): make this a param (s/_/-/)\nvar _DEFAULT_SOURCE_LANG = 'en';\nvar _PLACEHOLDER_TAG = 'x';\nvar _FILE_TAG = 'file';\nvar _SOURCE_TAG = 'source';\nvar _TARGET_TAG = 'target';\nvar _UNIT_TAG = 'trans-unit';\nvar Xliff = (function (_super) {\n    __extends(Xliff, _super);\n    function Xliff() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @param {?} messages\n     * @param {?} locale\n     * @return {?}\n     */\n    Xliff.prototype.write = function (messages, locale) {\n        var /** @type {?} */ visitor = new _WriteVisitor();\n        var /** @type {?} */ transUnits = [];\n        messages.forEach(function (message) {\n            var /** @type {?} */ transUnit = new Tag(_UNIT_TAG, { id: message.id, datatype: 'html' });\n            transUnit.children.push(new CR(8), new Tag(_SOURCE_TAG, {}, visitor.serialize(message.nodes)), new CR(8), new Tag(_TARGET_TAG));\n            if (message.description) {\n                transUnit.children.push(new CR(8), new Tag('note', { priority: '1', from: 'description' }, [new Text$2(message.description)]));\n            }\n            if (message.meaning) {\n                transUnit.children.push(new CR(8), new Tag('note', { priority: '1', from: 'meaning' }, [new Text$2(message.meaning)]));\n            }\n            transUnit.children.push(new CR(6));\n            transUnits.push(new CR(6), transUnit);\n        });\n        var /** @type {?} */ body = new Tag('body', {}, transUnits.concat([new CR(4)]));\n        var /** @type {?} */ file = new Tag('file', {\n            'source-language': locale || _DEFAULT_SOURCE_LANG,\n            datatype: 'plaintext',\n            original: 'ng2.template',\n        }, [new CR(4), body, new CR(2)]);\n        var /** @type {?} */ xliff = new Tag('xliff', { version: _VERSION, xmlns: _XMLNS }, [new CR(2), file, new CR()]);\n        return serialize([\n            new Declaration({ version: '1.0', encoding: 'UTF-8' }), new CR(), xliff, new CR()\n        ]);\n    };\n    /**\n     * @param {?} content\n     * @param {?} url\n     * @return {?}\n     */\n    Xliff.prototype.load = function (content, url) {\n        // xliff to xml nodes\n        var /** @type {?} */ xliffParser = new XliffParser();\n        var _a = xliffParser.parse(content, url), locale = _a.locale, mlNodesByMsgId = _a.mlNodesByMsgId, errors = _a.errors;\n        // xml nodes to i18n nodes\n        var /** @type {?} */ i18nNodesByMsgId = {};\n        var /** @type {?} */ converter = new XmlToI18n();\n        Object.keys(mlNodesByMsgId).forEach(function (msgId) {\n            var _a = converter.convert(mlNodesByMsgId[msgId]), i18nNodes = _a.i18nNodes, e = _a.errors;\n            errors.push.apply(errors, e);\n            i18nNodesByMsgId[msgId] = i18nNodes;\n        });\n        if (errors.length) {\n            throw new Error(\"xliff parse errors:\\n\" + errors.join('\\n'));\n        }\n        return { locale: locale, i18nNodesByMsgId: i18nNodesByMsgId };\n    };\n    /**\n     * @param {?} message\n     * @return {?}\n     */\n    Xliff.prototype.digest = function (message) { return digest(message); };\n    return Xliff;\n}(Serializer));\nvar _WriteVisitor = (function () {\n    function _WriteVisitor() {\n    }\n    /**\n     * @param {?} text\n     * @param {?=} context\n     * @return {?}\n     */\n    _WriteVisitor.prototype.visitText = function (text, context) { return [new Text$2(text.value)]; };\n    /**\n     * @param {?} container\n     * @param {?=} context\n     * @return {?}\n     */\n    _WriteVisitor.prototype.visitContainer = function (container, context) {\n        var _this = this;\n        var /** @type {?} */ nodes = [];\n        container.children.forEach(function (node) { return nodes.push.apply(nodes, node.visit(_this)); });\n        return nodes;\n    };\n    /**\n     * @param {?} icu\n     * @param {?=} context\n     * @return {?}\n     */\n    _WriteVisitor.prototype.visitIcu = function (icu, context) {\n        if (this._isInIcu) {\n            // nested ICU is not supported\n            throw new Error('xliff does not support nested ICU messages');\n        }\n        this._isInIcu = true;\n        // TODO(vicb): support ICU messages\n        // https://lists.oasis-open.org/archives/xliff/201201/msg00028.html\n        // http://docs.oasis-open.org/xliff/v1.2/xliff-profile-po/xliff-profile-po-1.2-cd02.html\n        var /** @type {?} */ nodes = [];\n        this._isInIcu = false;\n        return nodes;\n    };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    _WriteVisitor.prototype.visitTagPlaceholder = function (ph, context) {\n        var /** @type {?} */ ctype = getCtypeForTag(ph.tag);\n        var /** @type {?} */ startTagPh = new Tag(_PLACEHOLDER_TAG, { id: ph.startName, ctype: ctype });\n        if (ph.isVoid) {\n            // void tags have no children nor closing tags\n            return [startTagPh];\n        }\n        var /** @type {?} */ closeTagPh = new Tag(_PLACEHOLDER_TAG, { id: ph.closeName, ctype: ctype });\n        return [startTagPh].concat(this.serialize(ph.children), [closeTagPh]);\n    };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    _WriteVisitor.prototype.visitPlaceholder = function (ph, context) {\n        return [new Tag(_PLACEHOLDER_TAG, { id: ph.name })];\n    };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    _WriteVisitor.prototype.visitIcuPlaceholder = function (ph, context) {\n        return [new Tag(_PLACEHOLDER_TAG, { id: ph.name })];\n    };\n    /**\n     * @param {?} nodes\n     * @return {?}\n     */\n    _WriteVisitor.prototype.serialize = function (nodes) {\n        var _this = this;\n        this._isInIcu = false;\n        return [].concat.apply([], nodes.map(function (node) { return node.visit(_this); }));\n    };\n    return _WriteVisitor;\n}());\nvar XliffParser = (function () {\n    function XliffParser() {\n        this._locale = null;\n    }\n    /**\n     * @param {?} xliff\n     * @param {?} url\n     * @return {?}\n     */\n    XliffParser.prototype.parse = function (xliff, url) {\n        this._unitMlNodes = [];\n        this._mlNodesByMsgId = {};\n        var /** @type {?} */ xml = new XmlParser().parse(xliff, url, false);\n        this._errors = xml.errors;\n        visitAll(this, xml.rootNodes, null);\n        return {\n            mlNodesByMsgId: this._mlNodesByMsgId,\n            errors: this._errors,\n            locale: this._locale,\n        };\n    };\n    /**\n     * @param {?} element\n     * @param {?} context\n     * @return {?}\n     */\n    XliffParser.prototype.visitElement = function (element, context) {\n        switch (element.name) {\n            case _UNIT_TAG:\n                this._unitMlNodes = null;\n                var /** @type {?} */ idAttr = element.attrs.find(function (attr) { return attr.name === 'id'; });\n                if (!idAttr) {\n                    this._addError(element, \"<\" + _UNIT_TAG + \"> misses the \\\"id\\\" attribute\");\n                }\n                else {\n                    var /** @type {?} */ id = idAttr.value;\n                    if (this._mlNodesByMsgId.hasOwnProperty(id)) {\n                        this._addError(element, \"Duplicated translations for msg \" + id);\n                    }\n                    else {\n                        visitAll(this, element.children, null);\n                        if (this._unitMlNodes) {\n                            this._mlNodesByMsgId[id] = this._unitMlNodes;\n                        }\n                        else {\n                            this._addError(element, \"Message \" + id + \" misses a translation\");\n                        }\n                    }\n                }\n                break;\n            case _SOURCE_TAG:\n                // ignore source message\n                break;\n            case _TARGET_TAG:\n                this._unitMlNodes = element.children;\n                break;\n            case _FILE_TAG:\n                var /** @type {?} */ localeAttr = element.attrs.find(function (attr) { return attr.name === 'target-language'; });\n                if (localeAttr) {\n                    this._locale = localeAttr.value;\n                }\n                visitAll(this, element.children, null);\n                break;\n            default:\n                // TODO(vicb): assert file structure, xliff version\n                // For now only recurse on unhandled nodes\n                visitAll(this, element.children, null);\n        }\n    };\n    /**\n     * @param {?} attribute\n     * @param {?} context\n     * @return {?}\n     */\n    XliffParser.prototype.visitAttribute = function (attribute, context) { };\n    /**\n     * @param {?} text\n     * @param {?} context\n     * @return {?}\n     */\n    XliffParser.prototype.visitText = function (text, context) { };\n    /**\n     * @param {?} comment\n     * @param {?} context\n     * @return {?}\n     */\n    XliffParser.prototype.visitComment = function (comment, context) { };\n    /**\n     * @param {?} expansion\n     * @param {?} context\n     * @return {?}\n     */\n    XliffParser.prototype.visitExpansion = function (expansion, context) { };\n    /**\n     * @param {?} expansionCase\n     * @param {?} context\n     * @return {?}\n     */\n    XliffParser.prototype.visitExpansionCase = function (expansionCase, context) { };\n    /**\n     * @param {?} node\n     * @param {?} message\n     * @return {?}\n     */\n    XliffParser.prototype._addError = function (node, message) {\n        this._errors.push(new I18nError(node.sourceSpan, message));\n    };\n    return XliffParser;\n}());\nvar XmlToI18n = (function () {\n    function XmlToI18n() {\n    }\n    /**\n     * @param {?} nodes\n     * @return {?}\n     */\n    XmlToI18n.prototype.convert = function (nodes) {\n        this._errors = [];\n        return {\n            i18nNodes: visitAll(this, nodes),\n            errors: this._errors,\n        };\n    };\n    /**\n     * @param {?} text\n     * @param {?} context\n     * @return {?}\n     */\n    XmlToI18n.prototype.visitText = function (text, context) { return new Text$1(text.value, text.sourceSpan); };\n    /**\n     * @param {?} el\n     * @param {?} context\n     * @return {?}\n     */\n    XmlToI18n.prototype.visitElement = function (el, context) {\n        if (el.name === _PLACEHOLDER_TAG) {\n            var /** @type {?} */ nameAttr = el.attrs.find(function (attr) { return attr.name === 'id'; });\n            if (nameAttr) {\n                return new Placeholder('', nameAttr.value, el.sourceSpan);\n            }\n            this._addError(el, \"<\" + _PLACEHOLDER_TAG + \"> misses the \\\"id\\\" attribute\");\n        }\n        else {\n            this._addError(el, \"Unexpected tag\");\n        }\n    };\n    /**\n     * @param {?} icu\n     * @param {?} context\n     * @return {?}\n     */\n    XmlToI18n.prototype.visitExpansion = function (icu, context) { };\n    /**\n     * @param {?} icuCase\n     * @param {?} context\n     * @return {?}\n     */\n    XmlToI18n.prototype.visitExpansionCase = function (icuCase, context) { };\n    /**\n     * @param {?} comment\n     * @param {?} context\n     * @return {?}\n     */\n    XmlToI18n.prototype.visitComment = function (comment, context) { };\n    /**\n     * @param {?} attribute\n     * @param {?} context\n     * @return {?}\n     */\n    XmlToI18n.prototype.visitAttribute = function (attribute, context) { };\n    /**\n     * @param {?} node\n     * @param {?} message\n     * @return {?}\n     */\n    XmlToI18n.prototype._addError = function (node, message) {\n        this._errors.push(new I18nError(node.sourceSpan, message));\n    };\n    return XmlToI18n;\n}());\n/**\n * @param {?} tag\n * @return {?}\n */\nfunction getCtypeForTag(tag) {\n    switch (tag.toLowerCase()) {\n        case 'br':\n            return 'lb';\n        case 'img':\n            return 'image';\n        default:\n            return \"x-\" + tag;\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 */\nvar _VERSION$1 = '2.0';\nvar _XMLNS$1 = 'urn:oasis:names:tc:xliff:document:2.0';\n// TODO(vicb): make this a param (s/_/-/)\nvar _DEFAULT_SOURCE_LANG$1 = 'en';\nvar _PLACEHOLDER_TAG$1 = 'ph';\nvar _PLACEHOLDER_SPANNING_TAG = 'pc';\nvar _XLIFF_TAG = 'xliff';\nvar _SOURCE_TAG$1 = 'source';\nvar _TARGET_TAG$1 = 'target';\nvar _UNIT_TAG$1 = 'unit';\nvar Xliff2 = (function (_super) {\n    __extends(Xliff2, _super);\n    function Xliff2() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @param {?} messages\n     * @param {?} locale\n     * @return {?}\n     */\n    Xliff2.prototype.write = function (messages, locale) {\n        var /** @type {?} */ visitor = new _WriteVisitor$1();\n        var /** @type {?} */ units = [];\n        messages.forEach(function (message) {\n            var /** @type {?} */ unit = new Tag(_UNIT_TAG$1, { id: message.id });\n            if (message.description || message.meaning) {\n                var /** @type {?} */ notes = new Tag('notes');\n                if (message.description) {\n                    notes.children.push(new CR(8), new Tag('note', { category: 'description' }, [new Text$2(message.description)]));\n                }\n                if (message.meaning) {\n                    notes.children.push(new CR(8), new Tag('note', { category: 'meaning' }, [new Text$2(message.meaning)]));\n                }\n                notes.children.push(new CR(6));\n                unit.children.push(new CR(6), notes);\n            }\n            var /** @type {?} */ segment = new Tag('segment');\n            segment.children.push(new CR(8), new Tag(_SOURCE_TAG$1, {}, visitor.serialize(message.nodes)), new CR(6));\n            unit.children.push(new CR(6), segment, new CR(4));\n            units.push(new CR(4), unit);\n        });\n        var /** @type {?} */ file = new Tag('file', { 'original': 'ng.template', id: 'ngi18n' }, units.concat([new CR(2)]));\n        var /** @type {?} */ xliff = new Tag(_XLIFF_TAG, { version: _VERSION$1, xmlns: _XMLNS$1, srcLang: locale || _DEFAULT_SOURCE_LANG$1 }, [new CR(2), file, new CR()]);\n        return serialize([\n            new Declaration({ version: '1.0', encoding: 'UTF-8' }), new CR(), xliff, new CR()\n        ]);\n    };\n    /**\n     * @param {?} content\n     * @param {?} url\n     * @return {?}\n     */\n    Xliff2.prototype.load = function (content, url) {\n        // xliff to xml nodes\n        var /** @type {?} */ xliff2Parser = new Xliff2Parser();\n        var _a = xliff2Parser.parse(content, url), locale = _a.locale, msgIdToHtml = _a.msgIdToHtml, errors = _a.errors;\n        // xml nodes to i18n nodes\n        var /** @type {?} */ i18nNodesByMsgId = {};\n        var /** @type {?} */ converter = new XmlToI18n$1();\n        Object.keys(msgIdToHtml).forEach(function (msgId) {\n            var _a = converter.convert(msgIdToHtml[msgId], url), i18nNodes = _a.i18nNodes, e = _a.errors;\n            errors.push.apply(errors, e);\n            i18nNodesByMsgId[msgId] = i18nNodes;\n        });\n        if (errors.length) {\n            throw new Error(\"xliff2 parse errors:\\n\" + errors.join('\\n'));\n        }\n        return { locale: /** @type {?} */ ((locale)), i18nNodesByMsgId: i18nNodesByMsgId };\n    };\n    /**\n     * @param {?} message\n     * @return {?}\n     */\n    Xliff2.prototype.digest = function (message) { return decimalDigest(message); };\n    return Xliff2;\n}(Serializer));\nvar _WriteVisitor$1 = (function () {\n    function _WriteVisitor$1() {\n    }\n    /**\n     * @param {?} text\n     * @param {?=} context\n     * @return {?}\n     */\n    _WriteVisitor$1.prototype.visitText = function (text, context) { return [new Text$2(text.value)]; };\n    /**\n     * @param {?} container\n     * @param {?=} context\n     * @return {?}\n     */\n    _WriteVisitor$1.prototype.visitContainer = function (container, context) {\n        var _this = this;\n        var /** @type {?} */ nodes = [];\n        container.children.forEach(function (node) { return nodes.push.apply(nodes, node.visit(_this)); });\n        return nodes;\n    };\n    /**\n     * @param {?} icu\n     * @param {?=} context\n     * @return {?}\n     */\n    _WriteVisitor$1.prototype.visitIcu = function (icu, context) {\n        var _this = this;\n        var /** @type {?} */ nodes = [new Text$2(\"{\" + icu.expressionPlaceholder + \", \" + icu.type + \", \")];\n        Object.keys(icu.cases).forEach(function (c) {\n            nodes.push.apply(nodes, [new Text$2(c + \" {\")].concat(icu.cases[c].visit(_this), [new Text$2(\"} \")]));\n        });\n        nodes.push(new Text$2(\"}\"));\n        return nodes;\n    };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    _WriteVisitor$1.prototype.visitTagPlaceholder = function (ph, context) {\n        var _this = this;\n        var /** @type {?} */ type = getTypeForTag(ph.tag);\n        if (ph.isVoid) {\n            var /** @type {?} */ tagPh = new Tag(_PLACEHOLDER_TAG$1, {\n                id: (this._nextPlaceholderId++).toString(),\n                equiv: ph.startName,\n                type: type,\n                disp: \"<\" + ph.tag + \"/>\",\n            });\n            return [tagPh];\n        }\n        var /** @type {?} */ tagPc = new Tag(_PLACEHOLDER_SPANNING_TAG, {\n            id: (this._nextPlaceholderId++).toString(),\n            equivStart: ph.startName,\n            equivEnd: ph.closeName,\n            type: type,\n            dispStart: \"<\" + ph.tag + \">\",\n            dispEnd: \"</\" + ph.tag + \">\",\n        });\n        var /** @type {?} */ nodes = [].concat.apply([], ph.children.map(function (node) { return node.visit(_this); }));\n        if (nodes.length) {\n            nodes.forEach(function (node) { return tagPc.children.push(node); });\n        }\n        else {\n            tagPc.children.push(new Text$2(''));\n        }\n        return [tagPc];\n    };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    _WriteVisitor$1.prototype.visitPlaceholder = function (ph, context) {\n        return [new Tag(_PLACEHOLDER_TAG$1, {\n                id: (this._nextPlaceholderId++).toString(),\n                equiv: ph.name,\n                disp: \"{{\" + ph.value + \"}}\",\n            })];\n    };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    _WriteVisitor$1.prototype.visitIcuPlaceholder = function (ph, context) {\n        return [new Tag(_PLACEHOLDER_TAG$1, { id: (this._nextPlaceholderId++).toString() })];\n    };\n    /**\n     * @param {?} nodes\n     * @return {?}\n     */\n    _WriteVisitor$1.prototype.serialize = function (nodes) {\n        var _this = this;\n        this._nextPlaceholderId = 0;\n        return [].concat.apply([], nodes.map(function (node) { return node.visit(_this); }));\n    };\n    return _WriteVisitor$1;\n}());\nvar Xliff2Parser = (function () {\n    function Xliff2Parser() {\n        this._locale = null;\n    }\n    /**\n     * @param {?} xliff\n     * @param {?} url\n     * @return {?}\n     */\n    Xliff2Parser.prototype.parse = function (xliff, url) {\n        this._unitMlString = null;\n        this._msgIdToHtml = {};\n        var /** @type {?} */ xml = new XmlParser().parse(xliff, url, false);\n        this._errors = xml.errors;\n        visitAll(this, xml.rootNodes, null);\n        return {\n            msgIdToHtml: this._msgIdToHtml,\n            errors: this._errors,\n            locale: this._locale,\n        };\n    };\n    /**\n     * @param {?} element\n     * @param {?} context\n     * @return {?}\n     */\n    Xliff2Parser.prototype.visitElement = function (element, context) {\n        switch (element.name) {\n            case _UNIT_TAG$1:\n                this._unitMlString = null;\n                var /** @type {?} */ idAttr = element.attrs.find(function (attr) { return attr.name === 'id'; });\n                if (!idAttr) {\n                    this._addError(element, \"<\" + _UNIT_TAG$1 + \"> misses the \\\"id\\\" attribute\");\n                }\n                else {\n                    var /** @type {?} */ id = idAttr.value;\n                    if (this._msgIdToHtml.hasOwnProperty(id)) {\n                        this._addError(element, \"Duplicated translations for msg \" + id);\n                    }\n                    else {\n                        visitAll(this, element.children, null);\n                        if (typeof this._unitMlString === 'string') {\n                            this._msgIdToHtml[id] = this._unitMlString;\n                        }\n                        else {\n                            this._addError(element, \"Message \" + id + \" misses a translation\");\n                        }\n                    }\n                }\n                break;\n            case _SOURCE_TAG$1:\n                // ignore source message\n                break;\n            case _TARGET_TAG$1:\n                var /** @type {?} */ innerTextStart = ((element.startSourceSpan)).end.offset;\n                var /** @type {?} */ innerTextEnd = ((element.endSourceSpan)).start.offset;\n                var /** @type {?} */ content = ((element.startSourceSpan)).start.file.content;\n                var /** @type {?} */ innerText = content.slice(innerTextStart, innerTextEnd);\n                this._unitMlString = innerText;\n                break;\n            case _XLIFF_TAG:\n                var /** @type {?} */ localeAttr = element.attrs.find(function (attr) { return attr.name === 'trgLang'; });\n                if (localeAttr) {\n                    this._locale = localeAttr.value;\n                }\n                var /** @type {?} */ versionAttr = element.attrs.find(function (attr) { return attr.name === 'version'; });\n                if (versionAttr) {\n                    var /** @type {?} */ version = versionAttr.value;\n                    if (version !== '2.0') {\n                        this._addError(element, \"The XLIFF file version \" + version + \" is not compatible with XLIFF 2.0 serializer\");\n                    }\n                    else {\n                        visitAll(this, element.children, null);\n                    }\n                }\n                break;\n            default:\n                visitAll(this, element.children, null);\n        }\n    };\n    /**\n     * @param {?} attribute\n     * @param {?} context\n     * @return {?}\n     */\n    Xliff2Parser.prototype.visitAttribute = function (attribute, context) { };\n    /**\n     * @param {?} text\n     * @param {?} context\n     * @return {?}\n     */\n    Xliff2Parser.prototype.visitText = function (text, context) { };\n    /**\n     * @param {?} comment\n     * @param {?} context\n     * @return {?}\n     */\n    Xliff2Parser.prototype.visitComment = function (comment, context) { };\n    /**\n     * @param {?} expansion\n     * @param {?} context\n     * @return {?}\n     */\n    Xliff2Parser.prototype.visitExpansion = function (expansion, context) { };\n    /**\n     * @param {?} expansionCase\n     * @param {?} context\n     * @return {?}\n     */\n    Xliff2Parser.prototype.visitExpansionCase = function (expansionCase, context) { };\n    /**\n     * @param {?} node\n     * @param {?} message\n     * @return {?}\n     */\n    Xliff2Parser.prototype._addError = function (node, message) {\n        this._errors.push(new I18nError(node.sourceSpan, message));\n    };\n    return Xliff2Parser;\n}());\nvar XmlToI18n$1 = (function () {\n    function XmlToI18n$1() {\n    }\n    /**\n     * @param {?} message\n     * @param {?} url\n     * @return {?}\n     */\n    XmlToI18n$1.prototype.convert = function (message, url) {\n        var /** @type {?} */ xmlIcu = new XmlParser().parse(message, url, true);\n        this._errors = xmlIcu.errors;\n        var /** @type {?} */ i18nNodes = this._errors.length > 0 || xmlIcu.rootNodes.length == 0 ?\n            [] : [].concat.apply([], visitAll(this, xmlIcu.rootNodes));\n        return {\n            i18nNodes: i18nNodes,\n            errors: this._errors,\n        };\n    };\n    /**\n     * @param {?} text\n     * @param {?} context\n     * @return {?}\n     */\n    XmlToI18n$1.prototype.visitText = function (text, context) { return new Text$1(text.value, text.sourceSpan); };\n    /**\n     * @param {?} el\n     * @param {?} context\n     * @return {?}\n     */\n    XmlToI18n$1.prototype.visitElement = function (el, context) {\n        var _this = this;\n        switch (el.name) {\n            case _PLACEHOLDER_TAG$1:\n                var /** @type {?} */ nameAttr = el.attrs.find(function (attr) { return attr.name === 'equiv'; });\n                if (nameAttr) {\n                    return [new Placeholder('', nameAttr.value, el.sourceSpan)];\n                }\n                this._addError(el, \"<\" + _PLACEHOLDER_TAG$1 + \"> misses the \\\"equiv\\\" attribute\");\n                break;\n            case _PLACEHOLDER_SPANNING_TAG:\n                var /** @type {?} */ startAttr = el.attrs.find(function (attr) { return attr.name === 'equivStart'; });\n                var /** @type {?} */ endAttr = el.attrs.find(function (attr) { return attr.name === 'equivEnd'; });\n                if (!startAttr) {\n                    this._addError(el, \"<\" + _PLACEHOLDER_TAG$1 + \"> misses the \\\"equivStart\\\" attribute\");\n                }\n                else if (!endAttr) {\n                    this._addError(el, \"<\" + _PLACEHOLDER_TAG$1 + \"> misses the \\\"equivEnd\\\" attribute\");\n                }\n                else {\n                    var /** @type {?} */ startId = startAttr.value;\n                    var /** @type {?} */ endId = endAttr.value;\n                    var /** @type {?} */ nodes = [];\n                    return nodes.concat.apply(nodes, [new Placeholder('', startId, el.sourceSpan)].concat(el.children.map(function (node) { return node.visit(_this, null); }), [new Placeholder('', endId, el.sourceSpan)]));\n                }\n                break;\n            default:\n                this._addError(el, \"Unexpected tag\");\n        }\n        return null;\n    };\n    /**\n     * @param {?} icu\n     * @param {?} context\n     * @return {?}\n     */\n    XmlToI18n$1.prototype.visitExpansion = function (icu, context) {\n        var /** @type {?} */ caseMap = {};\n        visitAll(this, icu.cases).forEach(function (c) {\n            caseMap[c.value] = new Container(c.nodes, icu.sourceSpan);\n        });\n        return new Icu(icu.switchValue, icu.type, caseMap, icu.sourceSpan);\n    };\n    /**\n     * @param {?} icuCase\n     * @param {?} context\n     * @return {?}\n     */\n    XmlToI18n$1.prototype.visitExpansionCase = function (icuCase, context) {\n        return {\n            value: icuCase.value,\n            nodes: [].concat.apply([], visitAll(this, icuCase.expression)),\n        };\n    };\n    /**\n     * @param {?} comment\n     * @param {?} context\n     * @return {?}\n     */\n    XmlToI18n$1.prototype.visitComment = function (comment, context) { };\n    /**\n     * @param {?} attribute\n     * @param {?} context\n     * @return {?}\n     */\n    XmlToI18n$1.prototype.visitAttribute = function (attribute, context) { };\n    /**\n     * @param {?} node\n     * @param {?} message\n     * @return {?}\n     */\n    XmlToI18n$1.prototype._addError = function (node, message) {\n        this._errors.push(new I18nError(node.sourceSpan, message));\n    };\n    return XmlToI18n$1;\n}());\n/**\n * @param {?} tag\n * @return {?}\n */\nfunction getTypeForTag(tag) {\n    switch (tag.toLowerCase()) {\n        case 'br':\n        case 'b':\n        case 'i':\n        case 'u':\n            return 'fmt';\n        case 'img':\n            return 'image';\n        case 'a':\n            return 'link';\n        default:\n            return 'other';\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 */\nvar _MESSAGES_TAG = 'messagebundle';\nvar _MESSAGE_TAG = 'msg';\nvar _PLACEHOLDER_TAG$2 = 'ph';\nvar _EXEMPLE_TAG = 'ex';\nvar _DOCTYPE = \"<!ELEMENT messagebundle (msg)*>\\n<!ATTLIST messagebundle class CDATA #IMPLIED>\\n\\n<!ELEMENT msg (#PCDATA|ph|source)*>\\n<!ATTLIST msg id CDATA #IMPLIED>\\n<!ATTLIST msg seq CDATA #IMPLIED>\\n<!ATTLIST msg name CDATA #IMPLIED>\\n<!ATTLIST msg desc CDATA #IMPLIED>\\n<!ATTLIST msg meaning CDATA #IMPLIED>\\n<!ATTLIST msg obsolete (obsolete) #IMPLIED>\\n<!ATTLIST msg xml:space (default|preserve) \\\"default\\\">\\n<!ATTLIST msg is_hidden CDATA #IMPLIED>\\n\\n<!ELEMENT source (#PCDATA)>\\n\\n<!ELEMENT ph (#PCDATA|ex)*>\\n<!ATTLIST ph name CDATA #REQUIRED>\\n\\n<!ELEMENT ex (#PCDATA)>\";\nvar Xmb = (function (_super) {\n    __extends(Xmb, _super);\n    function Xmb() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @param {?} messages\n     * @param {?} locale\n     * @return {?}\n     */\n    Xmb.prototype.write = function (messages, locale) {\n        var /** @type {?} */ exampleVisitor = new ExampleVisitor();\n        var /** @type {?} */ visitor = new _Visitor$2();\n        var /** @type {?} */ rootNode = new Tag(_MESSAGES_TAG);\n        messages.forEach(function (message) {\n            var /** @type {?} */ attrs = { id: message.id };\n            if (message.description) {\n                attrs['desc'] = message.description;\n            }\n            if (message.meaning) {\n                attrs['meaning'] = message.meaning;\n            }\n            rootNode.children.push(new CR(2), new Tag(_MESSAGE_TAG, attrs, visitor.serialize(message.nodes)));\n        });\n        rootNode.children.push(new CR());\n        return serialize([\n            new Declaration({ version: '1.0', encoding: 'UTF-8' }),\n            new CR(),\n            new Doctype(_MESSAGES_TAG, _DOCTYPE),\n            new CR(),\n            exampleVisitor.addDefaultExamples(rootNode),\n            new CR(),\n        ]);\n    };\n    /**\n     * @param {?} content\n     * @param {?} url\n     * @return {?}\n     */\n    Xmb.prototype.load = function (content, url) {\n        throw new Error('Unsupported');\n    };\n    /**\n     * @param {?} message\n     * @return {?}\n     */\n    Xmb.prototype.digest = function (message) { return digest$1(message); };\n    /**\n     * @param {?} message\n     * @return {?}\n     */\n    Xmb.prototype.createNameMapper = function (message) {\n        return new SimplePlaceholderMapper(message, toPublicName);\n    };\n    return Xmb;\n}(Serializer));\nvar _Visitor$2 = (function () {\n    function _Visitor$2() {\n    }\n    /**\n     * @param {?} text\n     * @param {?=} context\n     * @return {?}\n     */\n    _Visitor$2.prototype.visitText = function (text, context) { return [new Text$2(text.value)]; };\n    /**\n     * @param {?} container\n     * @param {?} context\n     * @return {?}\n     */\n    _Visitor$2.prototype.visitContainer = function (container, context) {\n        var _this = this;\n        var /** @type {?} */ nodes = [];\n        container.children.forEach(function (node) { return nodes.push.apply(nodes, node.visit(_this)); });\n        return nodes;\n    };\n    /**\n     * @param {?} icu\n     * @param {?=} context\n     * @return {?}\n     */\n    _Visitor$2.prototype.visitIcu = function (icu, context) {\n        var _this = this;\n        var /** @type {?} */ nodes = [new Text$2(\"{\" + icu.expressionPlaceholder + \", \" + icu.type + \", \")];\n        Object.keys(icu.cases).forEach(function (c) {\n            nodes.push.apply(nodes, [new Text$2(c + \" {\")].concat(icu.cases[c].visit(_this), [new Text$2(\"} \")]));\n        });\n        nodes.push(new Text$2(\"}\"));\n        return nodes;\n    };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    _Visitor$2.prototype.visitTagPlaceholder = function (ph, context) {\n        var /** @type {?} */ startEx = new Tag(_EXEMPLE_TAG, {}, [new Text$2(\"<\" + ph.tag + \">\")]);\n        var /** @type {?} */ startTagPh = new Tag(_PLACEHOLDER_TAG$2, { name: ph.startName }, [startEx]);\n        if (ph.isVoid) {\n            // void tags have no children nor closing tags\n            return [startTagPh];\n        }\n        var /** @type {?} */ closeEx = new Tag(_EXEMPLE_TAG, {}, [new Text$2(\"</\" + ph.tag + \">\")]);\n        var /** @type {?} */ closeTagPh = new Tag(_PLACEHOLDER_TAG$2, { name: ph.closeName }, [closeEx]);\n        return [startTagPh].concat(this.serialize(ph.children), [closeTagPh]);\n    };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    _Visitor$2.prototype.visitPlaceholder = function (ph, context) {\n        return [new Tag(_PLACEHOLDER_TAG$2, { name: ph.name })];\n    };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    _Visitor$2.prototype.visitIcuPlaceholder = function (ph, context) {\n        return [new Tag(_PLACEHOLDER_TAG$2, { name: ph.name })];\n    };\n    /**\n     * @param {?} nodes\n     * @return {?}\n     */\n    _Visitor$2.prototype.serialize = function (nodes) {\n        var _this = this;\n        return [].concat.apply([], nodes.map(function (node) { return node.visit(_this); }));\n    };\n    return _Visitor$2;\n}());\n/**\n * @param {?} message\n * @return {?}\n */\nfunction digest$1(message) {\n    return decimalDigest(message);\n}\nvar ExampleVisitor = (function () {\n    function ExampleVisitor() {\n    }\n    /**\n     * @param {?} node\n     * @return {?}\n     */\n    ExampleVisitor.prototype.addDefaultExamples = function (node) {\n        node.visit(this);\n        return node;\n    };\n    /**\n     * @param {?} tag\n     * @return {?}\n     */\n    ExampleVisitor.prototype.visitTag = function (tag) {\n        var _this = this;\n        if (tag.name === _PLACEHOLDER_TAG$2) {\n            if (!tag.children || tag.children.length == 0) {\n                var /** @type {?} */ exText = new Text$2(tag.attrs['name'] || '...');\n                tag.children = [new Tag(_EXEMPLE_TAG, {}, [exText])];\n            }\n        }\n        else if (tag.children) {\n            tag.children.forEach(function (node) { return node.visit(_this); });\n        }\n    };\n    /**\n     * @param {?} text\n     * @return {?}\n     */\n    ExampleVisitor.prototype.visitText = function (text) { };\n    /**\n     * @param {?} decl\n     * @return {?}\n     */\n    ExampleVisitor.prototype.visitDeclaration = function (decl) { };\n    /**\n     * @param {?} doctype\n     * @return {?}\n     */\n    ExampleVisitor.prototype.visitDoctype = function (doctype) { };\n    return ExampleVisitor;\n}());\n/**\n * @param {?} internalName\n * @return {?}\n */\nfunction toPublicName(internalName) {\n    return internalName.toUpperCase().replace(/[^A-Z0-9_]/g, '_');\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar _TRANSLATIONS_TAG = 'translationbundle';\nvar _TRANSLATION_TAG = 'translation';\nvar _PLACEHOLDER_TAG$3 = 'ph';\nvar Xtb = (function (_super) {\n    __extends(Xtb, _super);\n    function Xtb() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @param {?} messages\n     * @param {?} locale\n     * @return {?}\n     */\n    Xtb.prototype.write = function (messages, locale) { throw new Error('Unsupported'); };\n    /**\n     * @param {?} content\n     * @param {?} url\n     * @return {?}\n     */\n    Xtb.prototype.load = function (content, url) {\n        // xtb to xml nodes\n        var /** @type {?} */ xtbParser = new XtbParser();\n        var _a = xtbParser.parse(content, url), locale = _a.locale, msgIdToHtml = _a.msgIdToHtml, errors = _a.errors;\n        // xml nodes to i18n nodes\n        var /** @type {?} */ i18nNodesByMsgId = {};\n        var /** @type {?} */ converter = new XmlToI18n$2();\n        // Because we should be able to load xtb files that rely on features not supported by angular,\n        // we need to delay the conversion of html to i18n nodes so that non angular messages are not\n        // converted\n        Object.keys(msgIdToHtml).forEach(function (msgId) {\n            var /** @type {?} */ valueFn = function () {\n                var _a = converter.convert(msgIdToHtml[msgId], url), i18nNodes = _a.i18nNodes, errors = _a.errors;\n                if (errors.length) {\n                    throw new Error(\"xtb parse errors:\\n\" + errors.join('\\n'));\n                }\n                return i18nNodes;\n            };\n            createLazyProperty(i18nNodesByMsgId, msgId, valueFn);\n        });\n        if (errors.length) {\n            throw new Error(\"xtb parse errors:\\n\" + errors.join('\\n'));\n        }\n        return { locale: locale, i18nNodesByMsgId: i18nNodesByMsgId };\n    };\n    /**\n     * @param {?} message\n     * @return {?}\n     */\n    Xtb.prototype.digest = function (message) { return digest$1(message); };\n    /**\n     * @param {?} message\n     * @return {?}\n     */\n    Xtb.prototype.createNameMapper = function (message) {\n        return new SimplePlaceholderMapper(message, toPublicName);\n    };\n    return Xtb;\n}(Serializer));\n/**\n * @param {?} messages\n * @param {?} id\n * @param {?} valueFn\n * @return {?}\n */\nfunction createLazyProperty(messages, id, valueFn) {\n    Object.defineProperty(messages, id, {\n        configurable: true,\n        enumerable: true,\n        get: function () {\n            var /** @type {?} */ value = valueFn();\n            Object.defineProperty(messages, id, { enumerable: true, value: value });\n            return value;\n        },\n        set: function (_) { throw new Error('Could not overwrite an XTB translation'); },\n    });\n}\nvar XtbParser = (function () {\n    function XtbParser() {\n        this._locale = null;\n    }\n    /**\n     * @param {?} xtb\n     * @param {?} url\n     * @return {?}\n     */\n    XtbParser.prototype.parse = function (xtb, url) {\n        this._bundleDepth = 0;\n        this._msgIdToHtml = {};\n        // We can not parse the ICU messages at this point as some messages might not originate\n        // from Angular that could not be lex'd.\n        var /** @type {?} */ xml = new XmlParser().parse(xtb, url, false);\n        this._errors = xml.errors;\n        visitAll(this, xml.rootNodes);\n        return {\n            msgIdToHtml: this._msgIdToHtml,\n            errors: this._errors,\n            locale: this._locale,\n        };\n    };\n    /**\n     * @param {?} element\n     * @param {?} context\n     * @return {?}\n     */\n    XtbParser.prototype.visitElement = function (element, context) {\n        switch (element.name) {\n            case _TRANSLATIONS_TAG:\n                this._bundleDepth++;\n                if (this._bundleDepth > 1) {\n                    this._addError(element, \"<\" + _TRANSLATIONS_TAG + \"> elements can not be nested\");\n                }\n                var /** @type {?} */ langAttr = element.attrs.find(function (attr) { return attr.name === 'lang'; });\n                if (langAttr) {\n                    this._locale = langAttr.value;\n                }\n                visitAll(this, element.children, null);\n                this._bundleDepth--;\n                break;\n            case _TRANSLATION_TAG:\n                var /** @type {?} */ idAttr = element.attrs.find(function (attr) { return attr.name === 'id'; });\n                if (!idAttr) {\n                    this._addError(element, \"<\" + _TRANSLATION_TAG + \"> misses the \\\"id\\\" attribute\");\n                }\n                else {\n                    var /** @type {?} */ id = idAttr.value;\n                    if (this._msgIdToHtml.hasOwnProperty(id)) {\n                        this._addError(element, \"Duplicated translations for msg \" + id);\n                    }\n                    else {\n                        var /** @type {?} */ innerTextStart = element.startSourceSpan.end.offset;\n                        var /** @type {?} */ innerTextEnd = element.endSourceSpan.start.offset;\n                        var /** @type {?} */ content = element.startSourceSpan.start.file.content;\n                        var /** @type {?} */ innerText = content.slice(innerTextStart, innerTextEnd);\n                        this._msgIdToHtml[id] = innerText;\n                    }\n                }\n                break;\n            default:\n                this._addError(element, 'Unexpected tag');\n        }\n    };\n    /**\n     * @param {?} attribute\n     * @param {?} context\n     * @return {?}\n     */\n    XtbParser.prototype.visitAttribute = function (attribute, context) { };\n    /**\n     * @param {?} text\n     * @param {?} context\n     * @return {?}\n     */\n    XtbParser.prototype.visitText = function (text, context) { };\n    /**\n     * @param {?} comment\n     * @param {?} context\n     * @return {?}\n     */\n    XtbParser.prototype.visitComment = function (comment, context) { };\n    /**\n     * @param {?} expansion\n     * @param {?} context\n     * @return {?}\n     */\n    XtbParser.prototype.visitExpansion = function (expansion, context) { };\n    /**\n     * @param {?} expansionCase\n     * @param {?} context\n     * @return {?}\n     */\n    XtbParser.prototype.visitExpansionCase = function (expansionCase, context) { };\n    /**\n     * @param {?} node\n     * @param {?} message\n     * @return {?}\n     */\n    XtbParser.prototype._addError = function (node, message) {\n        this._errors.push(new I18nError(node.sourceSpan, message));\n    };\n    return XtbParser;\n}());\nvar XmlToI18n$2 = (function () {\n    function XmlToI18n$2() {\n    }\n    /**\n     * @param {?} message\n     * @param {?} url\n     * @return {?}\n     */\n    XmlToI18n$2.prototype.convert = function (message, url) {\n        var /** @type {?} */ xmlIcu = new XmlParser().parse(message, url, true);\n        this._errors = xmlIcu.errors;\n        var /** @type {?} */ i18nNodes = this._errors.length > 0 || xmlIcu.rootNodes.length == 0 ?\n            [] :\n            visitAll(this, xmlIcu.rootNodes);\n        return {\n            i18nNodes: i18nNodes,\n            errors: this._errors,\n        };\n    };\n    /**\n     * @param {?} text\n     * @param {?} context\n     * @return {?}\n     */\n    XmlToI18n$2.prototype.visitText = function (text, context) { return new Text$1(text.value, text.sourceSpan); };\n    /**\n     * @param {?} icu\n     * @param {?} context\n     * @return {?}\n     */\n    XmlToI18n$2.prototype.visitExpansion = function (icu, context) {\n        var /** @type {?} */ caseMap = {};\n        visitAll(this, icu.cases).forEach(function (c) {\n            caseMap[c.value] = new Container(c.nodes, icu.sourceSpan);\n        });\n        return new Icu(icu.switchValue, icu.type, caseMap, icu.sourceSpan);\n    };\n    /**\n     * @param {?} icuCase\n     * @param {?} context\n     * @return {?}\n     */\n    XmlToI18n$2.prototype.visitExpansionCase = function (icuCase, context) {\n        return {\n            value: icuCase.value,\n            nodes: visitAll(this, icuCase.expression),\n        };\n    };\n    /**\n     * @param {?} el\n     * @param {?} context\n     * @return {?}\n     */\n    XmlToI18n$2.prototype.visitElement = function (el, context) {\n        if (el.name === _PLACEHOLDER_TAG$3) {\n            var /** @type {?} */ nameAttr = el.attrs.find(function (attr) { return attr.name === 'name'; });\n            if (nameAttr) {\n                return new Placeholder('', nameAttr.value, el.sourceSpan);\n            }\n            this._addError(el, \"<\" + _PLACEHOLDER_TAG$3 + \"> misses the \\\"name\\\" attribute\");\n        }\n        else {\n            this._addError(el, \"Unexpected tag\");\n        }\n    };\n    /**\n     * @param {?} comment\n     * @param {?} context\n     * @return {?}\n     */\n    XmlToI18n$2.prototype.visitComment = function (comment, context) { };\n    /**\n     * @param {?} attribute\n     * @param {?} context\n     * @return {?}\n     */\n    XmlToI18n$2.prototype.visitAttribute = function (attribute, context) { };\n    /**\n     * @param {?} node\n     * @param {?} message\n     * @return {?}\n     */\n    XmlToI18n$2.prototype._addError = function (node, message) {\n        this._errors.push(new I18nError(node.sourceSpan, message));\n    };\n    return XmlToI18n$2;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar HtmlParser = (function (_super) {\n    __extends(HtmlParser, _super);\n    function HtmlParser() {\n        return _super.call(this, getHtmlTagDefinition) || this;\n    }\n    /**\n     * @param {?} source\n     * @param {?} url\n     * @param {?=} parseExpansionForms\n     * @param {?=} interpolationConfig\n     * @return {?}\n     */\n    HtmlParser.prototype.parse = function (source, url, parseExpansionForms, interpolationConfig) {\n        if (parseExpansionForms === void 0) { parseExpansionForms = false; }\n        if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n        return _super.prototype.parse.call(this, source, url, parseExpansionForms, interpolationConfig);\n    };\n    return HtmlParser;\n}(Parser$1));\nHtmlParser.decorators = [\n    { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nHtmlParser.ctorParameters = function () { return []; };\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A container for translated messages\n */\nvar TranslationBundle = (function () {\n    /**\n     * @param {?=} _i18nNodesByMsgId\n     * @param {?=} locale\n     * @param {?=} digest\n     * @param {?=} mapperFactory\n     * @param {?=} missingTranslationStrategy\n     * @param {?=} console\n     */\n    function TranslationBundle(_i18nNodesByMsgId, locale, digest, mapperFactory, missingTranslationStrategy, console) {\n        if (_i18nNodesByMsgId === void 0) { _i18nNodesByMsgId = {}; }\n        if (missingTranslationStrategy === void 0) { missingTranslationStrategy = MissingTranslationStrategy.Warning; }\n        this._i18nNodesByMsgId = _i18nNodesByMsgId;\n        this.digest = digest;\n        this.mapperFactory = mapperFactory;\n        this._i18nToHtml = new I18nToHtmlVisitor(_i18nNodesByMsgId, locale, digest, mapperFactory, missingTranslationStrategy, console);\n    }\n    /**\n     * @param {?} content\n     * @param {?} url\n     * @param {?} serializer\n     * @param {?} missingTranslationStrategy\n     * @param {?=} console\n     * @return {?}\n     */\n    TranslationBundle.load = function (content, url, serializer, missingTranslationStrategy, console) {\n        var _a = serializer.load(content, url), locale = _a.locale, i18nNodesByMsgId = _a.i18nNodesByMsgId;\n        var /** @type {?} */ digestFn = function (m) { return serializer.digest(m); };\n        var /** @type {?} */ mapperFactory = function (m) { return serializer.createNameMapper(m); };\n        return new TranslationBundle(i18nNodesByMsgId, locale, digestFn, mapperFactory, missingTranslationStrategy, console);\n    };\n    /**\n     * @param {?} srcMsg\n     * @return {?}\n     */\n    TranslationBundle.prototype.get = function (srcMsg) {\n        var /** @type {?} */ html = this._i18nToHtml.convert(srcMsg);\n        if (html.errors.length) {\n            throw new Error(html.errors.join('\\n'));\n        }\n        return html.nodes;\n    };\n    /**\n     * @param {?} srcMsg\n     * @return {?}\n     */\n    TranslationBundle.prototype.has = function (srcMsg) { return this.digest(srcMsg) in this._i18nNodesByMsgId; };\n    return TranslationBundle;\n}());\nvar I18nToHtmlVisitor = (function () {\n    /**\n     * @param {?=} _i18nNodesByMsgId\n     * @param {?=} _locale\n     * @param {?=} _digest\n     * @param {?=} _mapperFactory\n     * @param {?=} _missingTranslationStrategy\n     * @param {?=} _console\n     */\n    function I18nToHtmlVisitor(_i18nNodesByMsgId, _locale, _digest, _mapperFactory, _missingTranslationStrategy, _console) {\n        if (_i18nNodesByMsgId === void 0) { _i18nNodesByMsgId = {}; }\n        this._i18nNodesByMsgId = _i18nNodesByMsgId;\n        this._locale = _locale;\n        this._digest = _digest;\n        this._mapperFactory = _mapperFactory;\n        this._missingTranslationStrategy = _missingTranslationStrategy;\n        this._console = _console;\n        this._contextStack = [];\n        this._errors = [];\n    }\n    /**\n     * @param {?} srcMsg\n     * @return {?}\n     */\n    I18nToHtmlVisitor.prototype.convert = function (srcMsg) {\n        this._contextStack.length = 0;\n        this._errors.length = 0;\n        // i18n to text\n        var /** @type {?} */ text = this._convertToText(srcMsg);\n        // text to html\n        var /** @type {?} */ url = srcMsg.nodes[0].sourceSpan.start.file.url;\n        var /** @type {?} */ html = new HtmlParser().parse(text, url, true);\n        return {\n            nodes: html.rootNodes,\n            errors: this._errors.concat(html.errors),\n        };\n    };\n    /**\n     * @param {?} text\n     * @param {?=} context\n     * @return {?}\n     */\n    I18nToHtmlVisitor.prototype.visitText = function (text, context) { return text.value; };\n    /**\n     * @param {?} container\n     * @param {?=} context\n     * @return {?}\n     */\n    I18nToHtmlVisitor.prototype.visitContainer = function (container, context) {\n        var _this = this;\n        return container.children.map(function (n) { return n.visit(_this); }).join('');\n    };\n    /**\n     * @param {?} icu\n     * @param {?=} context\n     * @return {?}\n     */\n    I18nToHtmlVisitor.prototype.visitIcu = function (icu, context) {\n        var _this = this;\n        var /** @type {?} */ cases = Object.keys(icu.cases).map(function (k) { return k + \" {\" + icu.cases[k].visit(_this) + \"}\"; });\n        // TODO(vicb): Once all format switch to using expression placeholders\n        // we should throw when the placeholder is not in the source message\n        var /** @type {?} */ exp = this._srcMsg.placeholders.hasOwnProperty(icu.expression) ?\n            this._srcMsg.placeholders[icu.expression] :\n            icu.expression;\n        return \"{\" + exp + \", \" + icu.type + \", \" + cases.join(' ') + \"}\";\n    };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    I18nToHtmlVisitor.prototype.visitPlaceholder = function (ph, context) {\n        var /** @type {?} */ phName = this._mapper(ph.name);\n        if (this._srcMsg.placeholders.hasOwnProperty(phName)) {\n            return this._srcMsg.placeholders[phName];\n        }\n        if (this._srcMsg.placeholderToMessage.hasOwnProperty(phName)) {\n            return this._convertToText(this._srcMsg.placeholderToMessage[phName]);\n        }\n        this._addError(ph, \"Unknown placeholder \\\"\" + ph.name + \"\\\"\");\n        return '';\n    };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    I18nToHtmlVisitor.prototype.visitTagPlaceholder = function (ph, context) {\n        var _this = this;\n        var /** @type {?} */ tag = \"\" + ph.tag;\n        var /** @type {?} */ attrs = Object.keys(ph.attrs).map(function (name) { return name + \"=\\\"\" + ph.attrs[name] + \"\\\"\"; }).join(' ');\n        if (ph.isVoid) {\n            return \"<\" + tag + \" \" + attrs + \"/>\";\n        }\n        var /** @type {?} */ children = ph.children.map(function (c) { return c.visit(_this); }).join('');\n        return \"<\" + tag + \" \" + attrs + \">\" + children + \"</\" + tag + \">\";\n    };\n    /**\n     * @param {?} ph\n     * @param {?=} context\n     * @return {?}\n     */\n    I18nToHtmlVisitor.prototype.visitIcuPlaceholder = function (ph, context) {\n        // An ICU placeholder references the source message to be serialized\n        return this._convertToText(this._srcMsg.placeholderToMessage[ph.name]);\n    };\n    /**\n     * Convert a source message to a translated text string:\n     * - text nodes are replaced with their translation,\n     * - placeholders are replaced with their content,\n     * - ICU nodes are converted to ICU expressions.\n     * @param {?} srcMsg\n     * @return {?}\n     */\n    I18nToHtmlVisitor.prototype._convertToText = function (srcMsg) {\n        var _this = this;\n        var /** @type {?} */ id = this._digest(srcMsg);\n        var /** @type {?} */ mapper = this._mapperFactory ? this._mapperFactory(srcMsg) : null;\n        var /** @type {?} */ nodes;\n        this._contextStack.push({ msg: this._srcMsg, mapper: this._mapper });\n        this._srcMsg = srcMsg;\n        if (this._i18nNodesByMsgId.hasOwnProperty(id)) {\n            // When there is a translation use its nodes as the source\n            // And create a mapper to convert serialized placeholder names to internal names\n            nodes = this._i18nNodesByMsgId[id];\n            this._mapper = function (name) { return mapper ? mapper.toInternalName(name) : name; };\n        }\n        else {\n            // When no translation has been found\n            // - report an error / a warning / nothing,\n            // - use the nodes from the original message\n            // - placeholders are already internal and need no mapper\n            if (this._missingTranslationStrategy === MissingTranslationStrategy.Error) {\n                var /** @type {?} */ ctx = this._locale ? \" for locale \\\"\" + this._locale + \"\\\"\" : '';\n                this._addError(srcMsg.nodes[0], \"Missing translation for message \\\"\" + id + \"\\\"\" + ctx);\n            }\n            else if (this._console &&\n                this._missingTranslationStrategy === MissingTranslationStrategy.Warning) {\n                var /** @type {?} */ ctx = this._locale ? \" for locale \\\"\" + this._locale + \"\\\"\" : '';\n                this._console.warn(\"Missing translation for message \\\"\" + id + \"\\\"\" + ctx);\n            }\n            nodes = srcMsg.nodes;\n            this._mapper = function (name) { return name; };\n        }\n        var /** @type {?} */ text = nodes.map(function (node) { return node.visit(_this); }).join('');\n        var /** @type {?} */ context = this._contextStack.pop();\n        this._srcMsg = context.msg;\n        this._mapper = context.mapper;\n        return text;\n    };\n    /**\n     * @param {?} el\n     * @param {?} msg\n     * @return {?}\n     */\n    I18nToHtmlVisitor.prototype._addError = function (el, msg) {\n        this._errors.push(new I18nError(el.sourceSpan, msg));\n    };\n    return I18nToHtmlVisitor;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar I18NHtmlParser = (function () {\n    /**\n     * @param {?} _htmlParser\n     * @param {?=} translations\n     * @param {?=} translationsFormat\n     * @param {?=} missingTranslation\n     * @param {?=} console\n     */\n    function I18NHtmlParser(_htmlParser, translations, translationsFormat, missingTranslation, console) {\n        if (missingTranslation === void 0) { missingTranslation = MissingTranslationStrategy.Warning; }\n        this._htmlParser = _htmlParser;\n        if (translations) {\n            var serializer = createSerializer(translationsFormat);\n            this._translationBundle =\n                TranslationBundle.load(translations, 'i18n', serializer, missingTranslation, console);\n        }\n    }\n    /**\n     * @param {?} source\n     * @param {?} url\n     * @param {?=} parseExpansionForms\n     * @param {?=} interpolationConfig\n     * @return {?}\n     */\n    I18NHtmlParser.prototype.parse = function (source, url, parseExpansionForms, interpolationConfig) {\n        if (parseExpansionForms === void 0) { parseExpansionForms = false; }\n        if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n        var /** @type {?} */ parseResult = this._htmlParser.parse(source, url, parseExpansionForms, interpolationConfig);\n        if (!this._translationBundle) {\n            // Do not enable i18n when no translation bundle is provided\n            return parseResult;\n        }\n        if (parseResult.errors.length) {\n            return new ParseTreeResult(parseResult.rootNodes, parseResult.errors);\n        }\n        return mergeTranslations(parseResult.rootNodes, this._translationBundle, interpolationConfig, [], {});\n    };\n    return I18NHtmlParser;\n}());\n/**\n * @param {?=} format\n * @return {?}\n */\nfunction createSerializer(format) {\n    format = (format || 'xlf').toLowerCase();\n    switch (format) {\n        case 'xmb':\n            return new Xmb();\n        case 'xtb':\n            return new Xtb();\n        case 'xliff2':\n        case 'xlf2':\n            return new Xliff2();\n        case 'xliff':\n        case 'xlf':\n        default:\n            return new Xliff();\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 */\nvar CORE = assetUrl('core');\nvar Identifiers = (function () {\n    function Identifiers() {\n    }\n    return Identifiers;\n}());\nIdentifiers.ANALYZE_FOR_ENTRY_COMPONENTS = {\n    name: 'ANALYZE_FOR_ENTRY_COMPONENTS',\n    moduleUrl: CORE,\n    runtime: ANALYZE_FOR_ENTRY_COMPONENTS\n};\nIdentifiers.ElementRef = { name: 'ElementRef', moduleUrl: CORE, runtime: ElementRef };\nIdentifiers.NgModuleRef = { name: 'NgModuleRef', moduleUrl: CORE, runtime: NgModuleRef };\nIdentifiers.ViewContainerRef = { name: 'ViewContainerRef', moduleUrl: CORE, runtime: ViewContainerRef };\nIdentifiers.ChangeDetectorRef = { name: 'ChangeDetectorRef', moduleUrl: CORE, runtime: ChangeDetectorRef };\nIdentifiers.QueryList = { name: 'QueryList', moduleUrl: CORE, runtime: QueryList };\nIdentifiers.TemplateRef = { name: 'TemplateRef', moduleUrl: CORE, runtime: TemplateRef };\nIdentifiers.CodegenComponentFactoryResolver = {\n    name: 'ɵCodegenComponentFactoryResolver',\n    moduleUrl: CORE,\n    runtime: ɵCodegenComponentFactoryResolver\n};\nIdentifiers.ComponentFactoryResolver = {\n    name: 'ComponentFactoryResolver',\n    moduleUrl: CORE,\n    runtime: ComponentFactoryResolver\n};\nIdentifiers.ComponentFactory = { name: 'ComponentFactory', moduleUrl: CORE, runtime: ComponentFactory };\nIdentifiers.ComponentRef = { name: 'ComponentRef', moduleUrl: CORE, runtime: ComponentRef };\nIdentifiers.NgModuleFactory = { name: 'NgModuleFactory', moduleUrl: CORE, runtime: NgModuleFactory };\nIdentifiers.NgModuleInjector = {\n    name: 'ɵNgModuleInjector',\n    moduleUrl: CORE,\n    runtime: ɵNgModuleInjector,\n};\nIdentifiers.RegisterModuleFactoryFn = {\n    name: 'ɵregisterModuleFactory',\n    moduleUrl: CORE,\n    runtime: ɵregisterModuleFactory,\n};\nIdentifiers.Injector = { name: 'Injector', moduleUrl: CORE, runtime: Injector };\nIdentifiers.ViewEncapsulation = { name: 'ViewEncapsulation', moduleUrl: CORE, runtime: ViewEncapsulation };\nIdentifiers.ChangeDetectionStrategy = {\n    name: 'ChangeDetectionStrategy',\n    moduleUrl: CORE,\n    runtime: ChangeDetectionStrategy\n};\nIdentifiers.SecurityContext = {\n    name: 'SecurityContext',\n    moduleUrl: CORE,\n    runtime: SecurityContext,\n};\nIdentifiers.LOCALE_ID = { name: 'LOCALE_ID', moduleUrl: CORE, runtime: LOCALE_ID };\nIdentifiers.TRANSLATIONS_FORMAT = { name: 'TRANSLATIONS_FORMAT', moduleUrl: CORE, runtime: TRANSLATIONS_FORMAT };\nIdentifiers.inlineInterpolate = { name: 'ɵinlineInterpolate', moduleUrl: CORE, runtime: ɵinlineInterpolate };\nIdentifiers.interpolate = { name: 'ɵinterpolate', moduleUrl: CORE, runtime: ɵinterpolate };\nIdentifiers.EMPTY_ARRAY = { name: 'ɵEMPTY_ARRAY', moduleUrl: CORE, runtime: ɵEMPTY_ARRAY };\nIdentifiers.EMPTY_MAP = { name: 'ɵEMPTY_MAP', moduleUrl: CORE, runtime: ɵEMPTY_MAP };\nIdentifiers.Renderer = { name: 'Renderer', moduleUrl: CORE, runtime: Renderer };\nIdentifiers.viewDef = { name: 'ɵvid', moduleUrl: CORE, runtime: ɵvid };\nIdentifiers.elementDef = { name: 'ɵeld', moduleUrl: CORE, runtime: ɵeld };\nIdentifiers.anchorDef = { name: 'ɵand', moduleUrl: CORE, runtime: ɵand };\nIdentifiers.textDef = { name: 'ɵted', moduleUrl: CORE, runtime: ɵted };\nIdentifiers.directiveDef = { name: 'ɵdid', moduleUrl: CORE, runtime: ɵdid };\nIdentifiers.providerDef = { name: 'ɵprd', moduleUrl: CORE, runtime: ɵprd };\nIdentifiers.queryDef = { name: 'ɵqud', moduleUrl: CORE, runtime: ɵqud };\nIdentifiers.pureArrayDef = { name: 'ɵpad', moduleUrl: CORE, runtime: ɵpad };\nIdentifiers.pureObjectDef = { name: 'ɵpod', moduleUrl: CORE, runtime: ɵpod };\nIdentifiers.purePipeDef = { name: 'ɵppd', moduleUrl: CORE, runtime: ɵppd };\nIdentifiers.pipeDef = { name: 'ɵpid', moduleUrl: CORE, runtime: ɵpid };\nIdentifiers.nodeValue = { name: 'ɵnov', moduleUrl: CORE, runtime: ɵnov };\nIdentifiers.ngContentDef = { name: 'ɵncd', moduleUrl: CORE, runtime: ɵncd };\nIdentifiers.unwrapValue = { name: 'ɵunv', moduleUrl: CORE, runtime: ɵunv };\nIdentifiers.createRendererType2 = { name: 'ɵcrt', moduleUrl: CORE, runtime: ɵcrt };\nIdentifiers.RendererType2 = {\n    name: 'RendererType2',\n    moduleUrl: CORE,\n    // type only\n    runtime: null\n};\nIdentifiers.ViewDefinition = {\n    name: 'ɵViewDefinition',\n    moduleUrl: CORE,\n    // type only\n    runtime: null\n};\nIdentifiers.createComponentFactory = { name: 'ɵccf', moduleUrl: CORE, runtime: ɵccf };\n/**\n * @param {?} pkg\n * @param {?=} path\n * @param {?=} type\n * @return {?}\n */\nfunction assetUrl(pkg, path, type) {\n    if (path === void 0) { path = null; }\n    if (type === void 0) { type = 'src'; }\n    if (path == null) {\n        return \"@angular/\" + pkg;\n    }\n    else {\n        return \"@angular/\" + pkg + \"/\" + type + \"/\" + path;\n    }\n}\n/**\n * @param {?} identifier\n * @return {?}\n */\nfunction resolveIdentifier(identifier) {\n    var /** @type {?} */ name = identifier.name;\n    return ɵreflector.resolveIdentifier(name, identifier.moduleUrl, null, identifier.runtime);\n}\n/**\n * @param {?} identifier\n * @return {?}\n */\nfunction createIdentifier(identifier) {\n    return { reference: resolveIdentifier(identifier) };\n}\n/**\n * @param {?} identifier\n * @return {?}\n */\nfunction identifierToken(identifier) {\n    return { identifier: identifier };\n}\n/**\n * @param {?} identifier\n * @return {?}\n */\nfunction createIdentifierToken(identifier) {\n    return identifierToken(createIdentifier(identifier));\n}\n/**\n * @param {?} enumType\n * @param {?} name\n * @return {?}\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this 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// http://cldr.unicode.org/index/cldr-spec/plural-rules\nvar PLURAL_CASES = ['zero', 'one', 'two', 'few', 'many', 'other'];\n/**\n * Expands special forms into elements.\n *\n * For example,\n *\n * ```\n * { messages.length, plural,\n *   =0 {zero}\n *   =1 {one}\n *   other {more than one}\n * }\n * ```\n *\n * will be expanded into\n *\n * ```\n * <ng-container [ngPlural]=\"messages.length\">\n *   <ng-template ngPluralCase=\"=0\">zero</ng-template>\n *   <ng-template ngPluralCase=\"=1\">one</ng-template>\n *   <ng-template ngPluralCase=\"other\">more than one</ng-template>\n * </ng-container>\n * ```\n * @param {?} nodes\n * @return {?}\n */\nfunction expandNodes(nodes) {\n    var /** @type {?} */ expander = new _Expander();\n    return new ExpansionResult(visitAll(expander, nodes), expander.isExpanded, expander.errors);\n}\nvar ExpansionResult = (function () {\n    /**\n     * @param {?} nodes\n     * @param {?} expanded\n     * @param {?} errors\n     */\n    function ExpansionResult(nodes, expanded, errors) {\n        this.nodes = nodes;\n        this.expanded = expanded;\n        this.errors = errors;\n    }\n    return ExpansionResult;\n}());\nvar ExpansionError = (function (_super) {\n    __extends(ExpansionError, _super);\n    /**\n     * @param {?} span\n     * @param {?} errorMsg\n     */\n    function ExpansionError(span, errorMsg) {\n        return _super.call(this, span, errorMsg) || this;\n    }\n    return ExpansionError;\n}(ParseError));\n/**\n * Expand expansion forms (plural, select) to directives\n *\n * \\@internal\n */\nvar _Expander = (function () {\n    function _Expander() {\n        this.isExpanded = false;\n        this.errors = [];\n    }\n    /**\n     * @param {?} element\n     * @param {?} context\n     * @return {?}\n     */\n    _Expander.prototype.visitElement = function (element, context) {\n        return new Element(element.name, element.attrs, visitAll(this, element.children), element.sourceSpan, element.startSourceSpan, element.endSourceSpan);\n    };\n    /**\n     * @param {?} attribute\n     * @param {?} context\n     * @return {?}\n     */\n    _Expander.prototype.visitAttribute = function (attribute, context) { return attribute; };\n    /**\n     * @param {?} text\n     * @param {?} context\n     * @return {?}\n     */\n    _Expander.prototype.visitText = function (text, context) { return text; };\n    /**\n     * @param {?} comment\n     * @param {?} context\n     * @return {?}\n     */\n    _Expander.prototype.visitComment = function (comment, context) { return comment; };\n    /**\n     * @param {?} icu\n     * @param {?} context\n     * @return {?}\n     */\n    _Expander.prototype.visitExpansion = function (icu, context) {\n        this.isExpanded = true;\n        return icu.type == 'plural' ? _expandPluralForm(icu, this.errors) :\n            _expandDefaultForm(icu, this.errors);\n    };\n    /**\n     * @param {?} icuCase\n     * @param {?} context\n     * @return {?}\n     */\n    _Expander.prototype.visitExpansionCase = function (icuCase, context) {\n        throw new Error('Should not be reached');\n    };\n    return _Expander;\n}());\n/**\n * @param {?} ast\n * @param {?} errors\n * @return {?}\n */\nfunction _expandPluralForm(ast, errors) {\n    var /** @type {?} */ children = ast.cases.map(function (c) {\n        if (PLURAL_CASES.indexOf(c.value) == -1 && !c.value.match(/^=\\d+$/)) {\n            errors.push(new ExpansionError(c.valueSourceSpan, \"Plural cases should be \\\"=<number>\\\" or one of \" + PLURAL_CASES.join(\", \")));\n        }\n        var /** @type {?} */ expansionResult = expandNodes(c.expression);\n        errors.push.apply(errors, expansionResult.errors);\n        return new Element(\"ng-template\", [new Attribute$1('ngPluralCase', \"\" + c.value, c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan);\n    });\n    var /** @type {?} */ switchAttr = new Attribute$1('[ngPlural]', ast.switchValue, ast.switchValueSourceSpan);\n    return new Element('ng-container', [switchAttr], children, ast.sourceSpan, ast.sourceSpan, ast.sourceSpan);\n}\n/**\n * @param {?} ast\n * @param {?} errors\n * @return {?}\n */\nfunction _expandDefaultForm(ast, errors) {\n    var /** @type {?} */ children = ast.cases.map(function (c) {\n        var /** @type {?} */ expansionResult = expandNodes(c.expression);\n        errors.push.apply(errors, expansionResult.errors);\n        if (c.value === 'other') {\n            // other is the default case when no values match\n            return new Element(\"ng-template\", [new Attribute$1('ngSwitchDefault', '', c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan);\n        }\n        return new Element(\"ng-template\", [new Attribute$1('ngSwitchCase', \"\" + c.value, c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan);\n    });\n    var /** @type {?} */ switchAttr = new Attribute$1('[ngSwitch]', ast.switchValue, ast.switchValueSourceSpan);\n    return new Element('ng-container', [switchAttr], children, ast.sourceSpan, ast.sourceSpan, ast.sourceSpan);\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar ProviderError = (function (_super) {\n    __extends(ProviderError, _super);\n    /**\n     * @param {?} message\n     * @param {?} span\n     */\n    function ProviderError(message, span) {\n        return _super.call(this, span, message) || this;\n    }\n    return ProviderError;\n}(ParseError));\nvar ProviderViewContext = (function () {\n    /**\n     * @param {?} component\n     */\n    function ProviderViewContext(component) {\n        var _this = this;\n        this.component = component;\n        this.errors = [];\n        this.viewQueries = _getViewQueries(component);\n        this.viewProviders = new Map();\n        component.viewProviders.forEach(function (provider) {\n            if (_this.viewProviders.get(tokenReference(provider.token)) == null) {\n                _this.viewProviders.set(tokenReference(provider.token), true);\n            }\n        });\n    }\n    return ProviderViewContext;\n}());\nvar ProviderElementContext = (function () {\n    /**\n     * @param {?} viewContext\n     * @param {?} _parent\n     * @param {?} _isViewRoot\n     * @param {?} _directiveAsts\n     * @param {?} attrs\n     * @param {?} refs\n     * @param {?} isTemplate\n     * @param {?} contentQueryStartId\n     * @param {?} _sourceSpan\n     */\n    function ProviderElementContext(viewContext, _parent, _isViewRoot, _directiveAsts, attrs, refs, isTemplate, contentQueryStartId, _sourceSpan) {\n        var _this = this;\n        this.viewContext = viewContext;\n        this._parent = _parent;\n        this._isViewRoot = _isViewRoot;\n        this._directiveAsts = _directiveAsts;\n        this._sourceSpan = _sourceSpan;\n        this._transformedProviders = new Map();\n        this._seenProviders = new Map();\n        this._hasViewContainer = false;\n        this._queriedTokens = new Map();\n        this._attrs = {};\n        attrs.forEach(function (attrAst) { return _this._attrs[attrAst.name] = attrAst.value; });\n        var directivesMeta = _directiveAsts.map(function (directiveAst) { return directiveAst.directive; });\n        this._allProviders =\n            _resolveProvidersFromDirectives(directivesMeta, _sourceSpan, viewContext.errors);\n        this._contentQueries = _getContentQueries(contentQueryStartId, directivesMeta);\n        Array.from(this._allProviders.values()).forEach(function (provider) {\n            _this._addQueryReadsTo(provider.token, provider.token, _this._queriedTokens);\n        });\n        if (isTemplate) {\n            var templateRefId = createIdentifierToken(Identifiers.TemplateRef);\n            this._addQueryReadsTo(templateRefId, templateRefId, this._queriedTokens);\n        }\n        refs.forEach(function (refAst) {\n            var defaultQueryValue = refAst.value || createIdentifierToken(Identifiers.ElementRef);\n            _this._addQueryReadsTo({ value: refAst.name }, defaultQueryValue, _this._queriedTokens);\n        });\n        if (this._queriedTokens.get(resolveIdentifier(Identifiers.ViewContainerRef))) {\n            this._hasViewContainer = true;\n        }\n        // create the providers that we know are eager first\n        Array.from(this._allProviders.values()).forEach(function (provider) {\n            var eager = provider.eager || _this._queriedTokens.get(tokenReference(provider.token));\n            if (eager) {\n                _this._getOrCreateLocalProvider(provider.providerType, provider.token, true);\n            }\n        });\n    }\n    /**\n     * @return {?}\n     */\n    ProviderElementContext.prototype.afterElement = function () {\n        var _this = this;\n        // collect lazy providers\n        Array.from(this._allProviders.values()).forEach(function (provider) {\n            _this._getOrCreateLocalProvider(provider.providerType, provider.token, false);\n        });\n    };\n    Object.defineProperty(ProviderElementContext.prototype, \"transformProviders\", {\n        /**\n         * @return {?}\n         */\n        get: function () {\n            return Array.from(this._transformedProviders.values());\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ProviderElementContext.prototype, \"transformedDirectiveAsts\", {\n        /**\n         * @return {?}\n         */\n        get: function () {\n            var /** @type {?} */ sortedProviderTypes = this.transformProviders.map(function (provider) { return provider.token.identifier; });\n            var /** @type {?} */ sortedDirectives = this._directiveAsts.slice();\n            sortedDirectives.sort(function (dir1, dir2) { return sortedProviderTypes.indexOf(dir1.directive.type) -\n                sortedProviderTypes.indexOf(dir2.directive.type); });\n            return sortedDirectives;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ProviderElementContext.prototype, \"transformedHasViewContainer\", {\n        /**\n         * @return {?}\n         */\n        get: function () { return this._hasViewContainer; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ProviderElementContext.prototype, \"queryMatches\", {\n        /**\n         * @return {?}\n         */\n        get: function () {\n            var /** @type {?} */ allMatches = [];\n            this._queriedTokens.forEach(function (matches) { allMatches.push.apply(allMatches, matches); });\n            return allMatches;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @param {?} token\n     * @param {?} defaultValue\n     * @param {?} queryReadTokens\n     * @return {?}\n     */\n    ProviderElementContext.prototype._addQueryReadsTo = function (token, defaultValue, queryReadTokens) {\n        this._getQueriesFor(token).forEach(function (query) {\n            var /** @type {?} */ queryValue = query.meta.read || defaultValue;\n            var /** @type {?} */ tokenRef = tokenReference(queryValue);\n            var /** @type {?} */ queryMatches = queryReadTokens.get(tokenRef);\n            if (!queryMatches) {\n                queryMatches = [];\n                queryReadTokens.set(tokenRef, queryMatches);\n            }\n            queryMatches.push({ queryId: query.queryId, value: queryValue });\n        });\n    };\n    /**\n     * @param {?} token\n     * @return {?}\n     */\n    ProviderElementContext.prototype._getQueriesFor = function (token) {\n        var /** @type {?} */ result = [];\n        var /** @type {?} */ currentEl = this;\n        var /** @type {?} */ distance = 0;\n        var /** @type {?} */ queries;\n        while (currentEl !== null) {\n            queries = currentEl._contentQueries.get(tokenReference(token));\n            if (queries) {\n                result.push.apply(result, queries.filter(function (query) { return query.meta.descendants || distance <= 1; }));\n            }\n            if (currentEl._directiveAsts.length > 0) {\n                distance++;\n            }\n            currentEl = currentEl._parent;\n        }\n        queries = this.viewContext.viewQueries.get(tokenReference(token));\n        if (queries) {\n            result.push.apply(result, queries);\n        }\n        return result;\n    };\n    /**\n     * @param {?} requestingProviderType\n     * @param {?} token\n     * @param {?} eager\n     * @return {?}\n     */\n    ProviderElementContext.prototype._getOrCreateLocalProvider = function (requestingProviderType, token, eager) {\n        var _this = this;\n        var /** @type {?} */ resolvedProvider = this._allProviders.get(tokenReference(token));\n        if (!resolvedProvider || ((requestingProviderType === ProviderAstType.Directive ||\n            requestingProviderType === ProviderAstType.PublicService) &&\n            resolvedProvider.providerType === ProviderAstType.PrivateService) ||\n            ((requestingProviderType === ProviderAstType.PrivateService ||\n                requestingProviderType === ProviderAstType.PublicService) &&\n                resolvedProvider.providerType === ProviderAstType.Builtin)) {\n            return null;\n        }\n        var /** @type {?} */ transformedProviderAst = this._transformedProviders.get(tokenReference(token));\n        if (transformedProviderAst) {\n            return transformedProviderAst;\n        }\n        if (this._seenProviders.get(tokenReference(token)) != null) {\n            this.viewContext.errors.push(new ProviderError(\"Cannot instantiate cyclic dependency! \" + tokenName(token), this._sourceSpan));\n            return null;\n        }\n        this._seenProviders.set(tokenReference(token), true);\n        var /** @type {?} */ transformedProviders = resolvedProvider.providers.map(function (provider) {\n            var /** @type {?} */ transformedUseValue = provider.useValue;\n            var /** @type {?} */ transformedUseExisting = provider.useExisting;\n            var /** @type {?} */ transformedDeps;\n            if (provider.useExisting != null) {\n                var /** @type {?} */ existingDiDep = _this._getDependency(resolvedProvider.providerType, { token: provider.useExisting }, eager);\n                if (existingDiDep.token != null) {\n                    transformedUseExisting = existingDiDep.token;\n                }\n                else {\n                    transformedUseExisting = null;\n                    transformedUseValue = existingDiDep.value;\n                }\n            }\n            else if (provider.useFactory) {\n                var /** @type {?} */ deps = provider.deps || provider.useFactory.diDeps;\n                transformedDeps =\n                    deps.map(function (dep) { return _this._getDependency(resolvedProvider.providerType, dep, eager); });\n            }\n            else if (provider.useClass) {\n                var /** @type {?} */ deps = provider.deps || provider.useClass.diDeps;\n                transformedDeps =\n                    deps.map(function (dep) { return _this._getDependency(resolvedProvider.providerType, dep, eager); });\n            }\n            return _transformProvider(provider, {\n                useExisting: transformedUseExisting,\n                useValue: transformedUseValue,\n                deps: transformedDeps\n            });\n        });\n        transformedProviderAst =\n            _transformProviderAst(resolvedProvider, { eager: eager, providers: transformedProviders });\n        this._transformedProviders.set(tokenReference(token), transformedProviderAst);\n        return transformedProviderAst;\n    };\n    /**\n     * @param {?} requestingProviderType\n     * @param {?} dep\n     * @param {?=} eager\n     * @return {?}\n     */\n    ProviderElementContext.prototype._getLocalDependency = function (requestingProviderType, dep, eager) {\n        if (eager === void 0) { eager = null; }\n        if (dep.isAttribute) {\n            var /** @type {?} */ attrValue = this._attrs[dep.token.value];\n            return { isValue: true, value: attrValue == null ? null : attrValue };\n        }\n        if (dep.token != null) {\n            // access builtints\n            if ((requestingProviderType === ProviderAstType.Directive ||\n                requestingProviderType === ProviderAstType.Component)) {\n                if (tokenReference(dep.token) === resolveIdentifier(Identifiers.Renderer) ||\n                    tokenReference(dep.token) === resolveIdentifier(Identifiers.ElementRef) ||\n                    tokenReference(dep.token) === resolveIdentifier(Identifiers.ChangeDetectorRef) ||\n                    tokenReference(dep.token) === resolveIdentifier(Identifiers.TemplateRef)) {\n                    return dep;\n                }\n                if (tokenReference(dep.token) === resolveIdentifier(Identifiers.ViewContainerRef)) {\n                    this._hasViewContainer = true;\n                }\n            }\n            // access the injector\n            if (tokenReference(dep.token) === resolveIdentifier(Identifiers.Injector)) {\n                return dep;\n            }\n            // access providers\n            if (this._getOrCreateLocalProvider(requestingProviderType, dep.token, eager) != null) {\n                return dep;\n            }\n        }\n        return null;\n    };\n    /**\n     * @param {?} requestingProviderType\n     * @param {?} dep\n     * @param {?=} eager\n     * @return {?}\n     */\n    ProviderElementContext.prototype._getDependency = function (requestingProviderType, dep, eager) {\n        if (eager === void 0) { eager = null; }\n        var /** @type {?} */ currElement = this;\n        var /** @type {?} */ currEager = eager;\n        var /** @type {?} */ result = null;\n        if (!dep.isSkipSelf) {\n            result = this._getLocalDependency(requestingProviderType, dep, eager);\n        }\n        if (dep.isSelf) {\n            if (!result && dep.isOptional) {\n                result = { isValue: true, value: null };\n            }\n        }\n        else {\n            // check parent elements\n            while (!result && currElement._parent) {\n                var /** @type {?} */ prevElement = currElement;\n                currElement = currElement._parent;\n                if (prevElement._isViewRoot) {\n                    currEager = false;\n                }\n                result = currElement._getLocalDependency(ProviderAstType.PublicService, dep, currEager);\n            }\n            // check @Host restriction\n            if (!result) {\n                if (!dep.isHost || this.viewContext.component.isHost ||\n                    this.viewContext.component.type.reference === tokenReference(dep.token) ||\n                    this.viewContext.viewProviders.get(tokenReference(dep.token)) != null) {\n                    result = dep;\n                }\n                else {\n                    result = dep.isOptional ? result = { isValue: true, value: null } : null;\n                }\n            }\n        }\n        if (!result) {\n            this.viewContext.errors.push(new ProviderError(\"No provider for \" + tokenName(dep.token), this._sourceSpan));\n        }\n        return result;\n    };\n    return ProviderElementContext;\n}());\nvar NgModuleProviderAnalyzer = (function () {\n    /**\n     * @param {?} ngModule\n     * @param {?} extraProviders\n     * @param {?} sourceSpan\n     */\n    function NgModuleProviderAnalyzer(ngModule, extraProviders, sourceSpan) {\n        var _this = this;\n        this._transformedProviders = new Map();\n        this._seenProviders = new Map();\n        this._errors = [];\n        this._allProviders = new Map();\n        ngModule.transitiveModule.modules.forEach(function (ngModuleType) {\n            var ngModuleProvider = { token: { identifier: ngModuleType }, useClass: ngModuleType };\n            _resolveProviders([ngModuleProvider], ProviderAstType.PublicService, true, sourceSpan, _this._errors, _this._allProviders);\n        });\n        _resolveProviders(ngModule.transitiveModule.providers.map(function (entry) { return entry.provider; }).concat(extraProviders), ProviderAstType.PublicService, false, sourceSpan, this._errors, this._allProviders);\n    }\n    /**\n     * @return {?}\n     */\n    NgModuleProviderAnalyzer.prototype.parse = function () {\n        var _this = this;\n        Array.from(this._allProviders.values()).forEach(function (provider) {\n            _this._getOrCreateLocalProvider(provider.token, provider.eager);\n        });\n        if (this._errors.length > 0) {\n            var /** @type {?} */ errorString = this._errors.join('\\n');\n            throw new Error(\"Provider parse errors:\\n\" + errorString);\n        }\n        return Array.from(this._transformedProviders.values());\n    };\n    /**\n     * @param {?} token\n     * @param {?} eager\n     * @return {?}\n     */\n    NgModuleProviderAnalyzer.prototype._getOrCreateLocalProvider = function (token, eager) {\n        var _this = this;\n        var /** @type {?} */ resolvedProvider = this._allProviders.get(tokenReference(token));\n        if (!resolvedProvider) {\n            return null;\n        }\n        var /** @type {?} */ transformedProviderAst = this._transformedProviders.get(tokenReference(token));\n        if (transformedProviderAst) {\n            return transformedProviderAst;\n        }\n        if (this._seenProviders.get(tokenReference(token)) != null) {\n            this._errors.push(new ProviderError(\"Cannot instantiate cyclic dependency! \" + tokenName(token), resolvedProvider.sourceSpan));\n            return null;\n        }\n        this._seenProviders.set(tokenReference(token), true);\n        var /** @type {?} */ transformedProviders = resolvedProvider.providers.map(function (provider) {\n            var /** @type {?} */ transformedUseValue = provider.useValue;\n            var /** @type {?} */ transformedUseExisting = provider.useExisting;\n            var /** @type {?} */ transformedDeps;\n            if (provider.useExisting != null) {\n                var /** @type {?} */ existingDiDep = _this._getDependency({ token: provider.useExisting }, eager, resolvedProvider.sourceSpan);\n                if (existingDiDep.token != null) {\n                    transformedUseExisting = existingDiDep.token;\n                }\n                else {\n                    transformedUseExisting = null;\n                    transformedUseValue = existingDiDep.value;\n                }\n            }\n            else if (provider.useFactory) {\n                var /** @type {?} */ deps = provider.deps || provider.useFactory.diDeps;\n                transformedDeps =\n                    deps.map(function (dep) { return _this._getDependency(dep, eager, resolvedProvider.sourceSpan); });\n            }\n            else if (provider.useClass) {\n                var /** @type {?} */ deps = provider.deps || provider.useClass.diDeps;\n                transformedDeps =\n                    deps.map(function (dep) { return _this._getDependency(dep, eager, resolvedProvider.sourceSpan); });\n            }\n            return _transformProvider(provider, {\n                useExisting: transformedUseExisting,\n                useValue: transformedUseValue,\n                deps: transformedDeps\n            });\n        });\n        transformedProviderAst =\n            _transformProviderAst(resolvedProvider, { eager: eager, providers: transformedProviders });\n        this._transformedProviders.set(tokenReference(token), transformedProviderAst);\n        return transformedProviderAst;\n    };\n    /**\n     * @param {?} dep\n     * @param {?=} eager\n     * @param {?=} requestorSourceSpan\n     * @return {?}\n     */\n    NgModuleProviderAnalyzer.prototype._getDependency = function (dep, eager, requestorSourceSpan) {\n        if (eager === void 0) { eager = null; }\n        var /** @type {?} */ foundLocal = false;\n        if (!dep.isSkipSelf && dep.token != null) {\n            // access the injector\n            if (tokenReference(dep.token) === resolveIdentifier(Identifiers.Injector) ||\n                tokenReference(dep.token) === resolveIdentifier(Identifiers.ComponentFactoryResolver)) {\n                foundLocal = true;\n            }\n            else if (this._getOrCreateLocalProvider(dep.token, eager) != null) {\n                foundLocal = true;\n            }\n        }\n        var /** @type {?} */ result = dep;\n        if (dep.isSelf && !foundLocal) {\n            if (dep.isOptional) {\n                result = { isValue: true, value: null };\n            }\n            else {\n                this._errors.push(new ProviderError(\"No provider for \" + tokenName(dep.token), requestorSourceSpan));\n            }\n        }\n        return result;\n    };\n    return NgModuleProviderAnalyzer;\n}());\n/**\n * @param {?} provider\n * @param {?} __1\n * @return {?}\n */\nfunction _transformProvider(provider, _a) {\n    var useExisting = _a.useExisting, useValue = _a.useValue, deps = _a.deps;\n    return {\n        token: provider.token,\n        useClass: provider.useClass,\n        useExisting: useExisting,\n        useFactory: provider.useFactory,\n        useValue: useValue,\n        deps: deps,\n        multi: provider.multi\n    };\n}\n/**\n * @param {?} provider\n * @param {?} __1\n * @return {?}\n */\nfunction _transformProviderAst(provider, _a) {\n    var eager = _a.eager, providers = _a.providers;\n    return new ProviderAst(provider.token, provider.multiProvider, provider.eager || eager, providers, provider.providerType, provider.lifecycleHooks, provider.sourceSpan);\n}\n/**\n * @param {?} directives\n * @param {?} sourceSpan\n * @param {?} targetErrors\n * @return {?}\n */\nfunction _resolveProvidersFromDirectives(directives, sourceSpan, targetErrors) {\n    var /** @type {?} */ providersByToken = new Map();\n    directives.forEach(function (directive) {\n        var /** @type {?} */ dirProvider = { token: { identifier: directive.type }, useClass: directive.type };\n        _resolveProviders([dirProvider], directive.isComponent ? ProviderAstType.Component : ProviderAstType.Directive, true, sourceSpan, targetErrors, providersByToken);\n    });\n    // Note: directives need to be able to overwrite providers of a component!\n    var /** @type {?} */ directivesWithComponentFirst = directives.filter(function (dir) { return dir.isComponent; }).concat(directives.filter(function (dir) { return !dir.isComponent; }));\n    directivesWithComponentFirst.forEach(function (directive) {\n        _resolveProviders(directive.providers, ProviderAstType.PublicService, false, sourceSpan, targetErrors, providersByToken);\n        _resolveProviders(directive.viewProviders, ProviderAstType.PrivateService, false, sourceSpan, targetErrors, providersByToken);\n    });\n    return providersByToken;\n}\n/**\n * @param {?} providers\n * @param {?} providerType\n * @param {?} eager\n * @param {?} sourceSpan\n * @param {?} targetErrors\n * @param {?} targetProvidersByToken\n * @return {?}\n */\nfunction _resolveProviders(providers, providerType, eager, sourceSpan, targetErrors, targetProvidersByToken) {\n    providers.forEach(function (provider) {\n        var /** @type {?} */ resolvedProvider = targetProvidersByToken.get(tokenReference(provider.token));\n        if (resolvedProvider != null && !!resolvedProvider.multiProvider !== !!provider.multi) {\n            targetErrors.push(new ProviderError(\"Mixing multi and non multi provider is not possible for token \" + tokenName(resolvedProvider.token), sourceSpan));\n        }\n        if (!resolvedProvider) {\n            var /** @type {?} */ lifecycleHooks = provider.token.identifier &&\n                ((provider.token.identifier)).lifecycleHooks ?\n                ((provider.token.identifier)).lifecycleHooks :\n                [];\n            var /** @type {?} */ isUseValue = !(provider.useClass || provider.useExisting || provider.useFactory);\n            resolvedProvider = new ProviderAst(provider.token, provider.multi, eager || isUseValue, [provider], providerType, lifecycleHooks, sourceSpan);\n            targetProvidersByToken.set(tokenReference(provider.token), resolvedProvider);\n        }\n        else {\n            if (!provider.multi) {\n                resolvedProvider.providers.length = 0;\n            }\n            resolvedProvider.providers.push(provider);\n        }\n    });\n}\n/**\n * @param {?} component\n * @return {?}\n */\nfunction _getViewQueries(component) {\n    // Note: queries start with id 1 so we can use the number in a Bloom filter!\n    var /** @type {?} */ viewQueryId = 1;\n    var /** @type {?} */ viewQueries = new Map();\n    if (component.viewQueries) {\n        component.viewQueries.forEach(function (query) { return _addQueryToTokenMap(viewQueries, { meta: query, queryId: viewQueryId++ }); });\n    }\n    return viewQueries;\n}\n/**\n * @param {?} contentQueryStartId\n * @param {?} directives\n * @return {?}\n */\nfunction _getContentQueries(contentQueryStartId, directives) {\n    var /** @type {?} */ contentQueryId = contentQueryStartId;\n    var /** @type {?} */ contentQueries = new Map();\n    directives.forEach(function (directive, directiveIndex) {\n        if (directive.queries) {\n            directive.queries.forEach(function (query) { return _addQueryToTokenMap(contentQueries, { meta: query, queryId: contentQueryId++ }); });\n        }\n    });\n    return contentQueries;\n}\n/**\n * @param {?} map\n * @param {?} query\n * @return {?}\n */\nfunction _addQueryToTokenMap(map, query) {\n    query.meta.selectors.forEach(function (token) {\n        var /** @type {?} */ entry = map.get(tokenReference(token));\n        if (!entry) {\n            entry = [];\n            map.set(tokenReference(token), entry);\n        }\n        entry.push(query);\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 * @abstract\n */\nvar ElementSchemaRegistry = (function () {\n    function ElementSchemaRegistry() {\n    }\n    /**\n     * @abstract\n     * @param {?} tagName\n     * @param {?} propName\n     * @param {?} schemaMetas\n     * @return {?}\n     */\n    ElementSchemaRegistry.prototype.hasProperty = function (tagName, propName, schemaMetas) { };\n    /**\n     * @abstract\n     * @param {?} tagName\n     * @param {?} schemaMetas\n     * @return {?}\n     */\n    ElementSchemaRegistry.prototype.hasElement = function (tagName, schemaMetas) { };\n    /**\n     * @abstract\n     * @param {?} elementName\n     * @param {?} propName\n     * @param {?} isAttribute\n     * @return {?}\n     */\n    ElementSchemaRegistry.prototype.securityContext = function (elementName, propName, isAttribute) { };\n    /**\n     * @abstract\n     * @return {?}\n     */\n    ElementSchemaRegistry.prototype.allKnownElementNames = function () { };\n    /**\n     * @abstract\n     * @param {?} propName\n     * @return {?}\n     */\n    ElementSchemaRegistry.prototype.getMappedPropName = function (propName) { };\n    /**\n     * @abstract\n     * @return {?}\n     */\n    ElementSchemaRegistry.prototype.getDefaultComponentElementName = function () { };\n    /**\n     * @abstract\n     * @param {?} name\n     * @return {?}\n     */\n    ElementSchemaRegistry.prototype.validateProperty = function (name) { };\n    /**\n     * @abstract\n     * @param {?} name\n     * @return {?}\n     */\n    ElementSchemaRegistry.prototype.validateAttribute = function (name) { };\n    /**\n     * @abstract\n     * @param {?} propName\n     * @return {?}\n     */\n    ElementSchemaRegistry.prototype.normalizeAnimationStyleProperty = function (propName) { };\n    /**\n     * @abstract\n     * @param {?} camelCaseProp\n     * @param {?} userProvidedProp\n     * @param {?} val\n     * @return {?}\n     */\n    ElementSchemaRegistry.prototype.normalizeAnimationStyleValue = function (camelCaseProp, userProvidedProp, val) { };\n    return ElementSchemaRegistry;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar StyleWithImports = (function () {\n    /**\n     * @param {?} style\n     * @param {?} styleUrls\n     */\n    function StyleWithImports(style$$1, styleUrls) {\n        this.style = style$$1;\n        this.styleUrls = styleUrls;\n    }\n    return StyleWithImports;\n}());\n/**\n * @param {?} url\n * @return {?}\n */\nfunction isStyleUrlResolvable(url) {\n    if (url == null || url.length === 0 || url[0] == '/')\n        return false;\n    var /** @type {?} */ schemeMatch = url.match(URL_WITH_SCHEMA_REGEXP);\n    return schemeMatch === null || schemeMatch[1] == 'package' || schemeMatch[1] == 'asset';\n}\n/**\n * Rewrites stylesheets by resolving and removing the \\@import urls that\n * are either relative or don't have a `package:` scheme\n * @param {?} resolver\n * @param {?} baseUrl\n * @param {?} cssText\n * @return {?}\n */\nfunction extractStyleUrls(resolver, baseUrl, cssText) {\n    var /** @type {?} */ foundUrls = [];\n    var /** @type {?} */ modifiedCssText = cssText.replace(CSS_COMMENT_REGEXP, '').replace(CSS_IMPORT_REGEXP, function () {\n        var m = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            m[_i] = arguments[_i];\n        }\n        var /** @type {?} */ url = m[1] || m[2];\n        if (!isStyleUrlResolvable(url)) {\n            // Do not attempt to resolve non-package absolute URLs with URI scheme\n            return m[0];\n        }\n        foundUrls.push(resolver.resolve(baseUrl, url));\n        return '';\n    });\n    return new StyleWithImports(modifiedCssText, foundUrls);\n}\nvar CSS_IMPORT_REGEXP = /@import\\s+(?:url\\()?\\s*(?:(?:['\"]([^'\"]*))|([^;\\)\\s]*))[^;]*;?/g;\nvar CSS_COMMENT_REGEXP = /\\/\\*.+?\\*\\//g;\nvar URL_WITH_SCHEMA_REGEXP = /^([^:/?#]+):/;\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar PROPERTY_PARTS_SEPARATOR = '.';\nvar ATTRIBUTE_PREFIX = 'attr';\nvar CLASS_PREFIX = 'class';\nvar STYLE_PREFIX = 'style';\nvar ANIMATE_PROP_PREFIX = 'animate-';\nvar BoundPropertyType = {};\nBoundPropertyType.DEFAULT = 0;\nBoundPropertyType.LITERAL_ATTR = 1;\nBoundPropertyType.ANIMATION = 2;\nBoundPropertyType[BoundPropertyType.DEFAULT] = \"DEFAULT\";\nBoundPropertyType[BoundPropertyType.LITERAL_ATTR] = \"LITERAL_ATTR\";\nBoundPropertyType[BoundPropertyType.ANIMATION] = \"ANIMATION\";\n/**\n * Represents a parsed property.\n */\nvar BoundProperty = (function () {\n    /**\n     * @param {?} name\n     * @param {?} expression\n     * @param {?} type\n     * @param {?} sourceSpan\n     */\n    function BoundProperty(name, expression, type, sourceSpan) {\n        this.name = name;\n        this.expression = expression;\n        this.type = type;\n        this.sourceSpan = sourceSpan;\n    }\n    Object.defineProperty(BoundProperty.prototype, \"isLiteral\", {\n        /**\n         * @return {?}\n         */\n        get: function () { return this.type === BoundPropertyType.LITERAL_ATTR; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(BoundProperty.prototype, \"isAnimation\", {\n        /**\n         * @return {?}\n         */\n        get: function () { return this.type === BoundPropertyType.ANIMATION; },\n        enumerable: true,\n        configurable: true\n    });\n    return BoundProperty;\n}());\n/**\n * Parses bindings in templates and in the directive host area.\n */\nvar BindingParser = (function () {\n    /**\n     * @param {?} _exprParser\n     * @param {?} _interpolationConfig\n     * @param {?} _schemaRegistry\n     * @param {?} pipes\n     * @param {?} _targetErrors\n     */\n    function BindingParser(_exprParser, _interpolationConfig, _schemaRegistry, pipes, _targetErrors) {\n        var _this = this;\n        this._exprParser = _exprParser;\n        this._interpolationConfig = _interpolationConfig;\n        this._schemaRegistry = _schemaRegistry;\n        this._targetErrors = _targetErrors;\n        this.pipesByName = new Map();\n        this._usedPipes = new Map();\n        pipes.forEach(function (pipe) { return _this.pipesByName.set(pipe.name, pipe); });\n    }\n    /**\n     * @return {?}\n     */\n    BindingParser.prototype.getUsedPipes = function () { return Array.from(this._usedPipes.values()); };\n    /**\n     * @param {?} dirMeta\n     * @param {?} elementSelector\n     * @param {?} sourceSpan\n     * @return {?}\n     */\n    BindingParser.prototype.createDirectiveHostPropertyAsts = function (dirMeta, elementSelector, sourceSpan) {\n        var _this = this;\n        if (dirMeta.hostProperties) {\n            var /** @type {?} */ boundProps_1 = [];\n            Object.keys(dirMeta.hostProperties).forEach(function (propName) {\n                var /** @type {?} */ expression = dirMeta.hostProperties[propName];\n                if (typeof expression === 'string') {\n                    _this.parsePropertyBinding(propName, expression, true, sourceSpan, [], boundProps_1);\n                }\n                else {\n                    _this._reportError(\"Value of the host property binding \\\"\" + propName + \"\\\" needs to be a string representing an expression but got \\\"\" + expression + \"\\\" (\" + typeof expression + \")\", sourceSpan);\n                }\n            });\n            return boundProps_1.map(function (prop) { return _this.createElementPropertyAst(elementSelector, prop); });\n        }\n    };\n    /**\n     * @param {?} dirMeta\n     * @param {?} sourceSpan\n     * @return {?}\n     */\n    BindingParser.prototype.createDirectiveHostEventAsts = function (dirMeta, sourceSpan) {\n        var _this = this;\n        if (dirMeta.hostListeners) {\n            var /** @type {?} */ targetEventAsts_1 = [];\n            Object.keys(dirMeta.hostListeners).forEach(function (propName) {\n                var /** @type {?} */ expression = dirMeta.hostListeners[propName];\n                if (typeof expression === 'string') {\n                    _this.parseEvent(propName, expression, sourceSpan, [], targetEventAsts_1);\n                }\n                else {\n                    _this._reportError(\"Value of the host listener \\\"\" + propName + \"\\\" needs to be a string representing an expression but got \\\"\" + expression + \"\\\" (\" + typeof expression + \")\", sourceSpan);\n                }\n            });\n            return targetEventAsts_1;\n        }\n    };\n    /**\n     * @param {?} value\n     * @param {?} sourceSpan\n     * @return {?}\n     */\n    BindingParser.prototype.parseInterpolation = function (value, sourceSpan) {\n        var /** @type {?} */ sourceInfo = sourceSpan.start.toString();\n        try {\n            var /** @type {?} */ ast = this._exprParser.parseInterpolation(value, sourceInfo, this._interpolationConfig);\n            if (ast)\n                this._reportExpressionParserErrors(ast.errors, sourceSpan);\n            this._checkPipes(ast, sourceSpan);\n            return ast;\n        }\n        catch (e) {\n            this._reportError(\"\" + e, sourceSpan);\n            return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\n        }\n    };\n    /**\n     * @param {?} prefixToken\n     * @param {?} value\n     * @param {?} sourceSpan\n     * @param {?} targetMatchableAttrs\n     * @param {?} targetProps\n     * @param {?} targetVars\n     * @return {?}\n     */\n    BindingParser.prototype.parseInlineTemplateBinding = function (prefixToken, value, sourceSpan, targetMatchableAttrs, targetProps, targetVars) {\n        var /** @type {?} */ bindings = this._parseTemplateBindings(prefixToken, value, sourceSpan);\n        for (var /** @type {?} */ i = 0; i < bindings.length; i++) {\n            var /** @type {?} */ binding = bindings[i];\n            if (binding.keyIsVar) {\n                targetVars.push(new VariableAst(binding.key, binding.name, sourceSpan));\n            }\n            else if (binding.expression) {\n                this._parsePropertyAst(binding.key, binding.expression, sourceSpan, targetMatchableAttrs, targetProps);\n            }\n            else {\n                targetMatchableAttrs.push([binding.key, '']);\n                this.parseLiteralAttr(binding.key, null, sourceSpan, targetMatchableAttrs, targetProps);\n            }\n        }\n    };\n    /**\n     * @param {?} prefixToken\n     * @param {?} value\n     * @param {?} sourceSpan\n     * @return {?}\n     */\n    BindingParser.prototype._parseTemplateBindings = function (prefixToken, value, sourceSpan) {\n        var _this = this;\n        var /** @type {?} */ sourceInfo = sourceSpan.start.toString();\n        try {\n            var /** @type {?} */ bindingsResult = this._exprParser.parseTemplateBindings(prefixToken, value, sourceInfo);\n            this._reportExpressionParserErrors(bindingsResult.errors, sourceSpan);\n            bindingsResult.templateBindings.forEach(function (binding) {\n                if (binding.expression) {\n                    _this._checkPipes(binding.expression, sourceSpan);\n                }\n            });\n            bindingsResult.warnings.forEach(function (warning) { _this._reportError(warning, sourceSpan, ParseErrorLevel.WARNING); });\n            return bindingsResult.templateBindings;\n        }\n        catch (e) {\n            this._reportError(\"\" + e, sourceSpan);\n            return [];\n        }\n    };\n    /**\n     * @param {?} name\n     * @param {?} value\n     * @param {?} sourceSpan\n     * @param {?} targetMatchableAttrs\n     * @param {?} targetProps\n     * @return {?}\n     */\n    BindingParser.prototype.parseLiteralAttr = function (name, value, sourceSpan, targetMatchableAttrs, targetProps) {\n        if (_isAnimationLabel(name)) {\n            name = name.substring(1);\n            if (value) {\n                this._reportError(\"Assigning animation triggers via @prop=\\\"exp\\\" attributes with an expression is invalid.\" +\n                    \" Use property bindings (e.g. [@prop]=\\\"exp\\\") or use an attribute without a value (e.g. @prop) instead.\", sourceSpan, ParseErrorLevel.ERROR);\n            }\n            this._parseAnimation(name, value, sourceSpan, targetMatchableAttrs, targetProps);\n        }\n        else {\n            targetProps.push(new BoundProperty(name, this._exprParser.wrapLiteralPrimitive(value, ''), BoundPropertyType.LITERAL_ATTR, sourceSpan));\n        }\n    };\n    /**\n     * @param {?} name\n     * @param {?} expression\n     * @param {?} isHost\n     * @param {?} sourceSpan\n     * @param {?} targetMatchableAttrs\n     * @param {?} targetProps\n     * @return {?}\n     */\n    BindingParser.prototype.parsePropertyBinding = function (name, expression, isHost, sourceSpan, targetMatchableAttrs, targetProps) {\n        var /** @type {?} */ isAnimationProp = false;\n        if (name.startsWith(ANIMATE_PROP_PREFIX)) {\n            isAnimationProp = true;\n            name = name.substring(ANIMATE_PROP_PREFIX.length);\n        }\n        else if (_isAnimationLabel(name)) {\n            isAnimationProp = true;\n            name = name.substring(1);\n        }\n        if (isAnimationProp) {\n            this._parseAnimation(name, expression, sourceSpan, targetMatchableAttrs, targetProps);\n        }\n        else {\n            this._parsePropertyAst(name, this._parseBinding(expression, isHost, sourceSpan), sourceSpan, targetMatchableAttrs, targetProps);\n        }\n    };\n    /**\n     * @param {?} name\n     * @param {?} value\n     * @param {?} sourceSpan\n     * @param {?} targetMatchableAttrs\n     * @param {?} targetProps\n     * @return {?}\n     */\n    BindingParser.prototype.parsePropertyInterpolation = function (name, value, sourceSpan, targetMatchableAttrs, targetProps) {\n        var /** @type {?} */ expr = this.parseInterpolation(value, sourceSpan);\n        if (expr) {\n            this._parsePropertyAst(name, expr, sourceSpan, targetMatchableAttrs, targetProps);\n            return true;\n        }\n        return false;\n    };\n    /**\n     * @param {?} name\n     * @param {?} ast\n     * @param {?} sourceSpan\n     * @param {?} targetMatchableAttrs\n     * @param {?} targetProps\n     * @return {?}\n     */\n    BindingParser.prototype._parsePropertyAst = function (name, ast, sourceSpan, targetMatchableAttrs, targetProps) {\n        targetMatchableAttrs.push([name, ast.source]);\n        targetProps.push(new BoundProperty(name, ast, BoundPropertyType.DEFAULT, sourceSpan));\n    };\n    /**\n     * @param {?} name\n     * @param {?} expression\n     * @param {?} sourceSpan\n     * @param {?} targetMatchableAttrs\n     * @param {?} targetProps\n     * @return {?}\n     */\n    BindingParser.prototype._parseAnimation = function (name, expression, sourceSpan, targetMatchableAttrs, targetProps) {\n        // This will occur when a @trigger is not paired with an expression.\n        // For animations it is valid to not have an expression since */void\n        // states will be applied by angular when the element is attached/detached\n        var /** @type {?} */ ast = this._parseBinding(expression || 'null', false, sourceSpan);\n        targetMatchableAttrs.push([name, ast.source]);\n        targetProps.push(new BoundProperty(name, ast, BoundPropertyType.ANIMATION, sourceSpan));\n    };\n    /**\n     * @param {?} value\n     * @param {?} isHostBinding\n     * @param {?} sourceSpan\n     * @return {?}\n     */\n    BindingParser.prototype._parseBinding = function (value, isHostBinding, sourceSpan) {\n        var /** @type {?} */ sourceInfo = sourceSpan.start.toString();\n        try {\n            var /** @type {?} */ ast = isHostBinding ?\n                this._exprParser.parseSimpleBinding(value, sourceInfo, this._interpolationConfig) :\n                this._exprParser.parseBinding(value, sourceInfo, this._interpolationConfig);\n            if (ast)\n                this._reportExpressionParserErrors(ast.errors, sourceSpan);\n            this._checkPipes(ast, sourceSpan);\n            return ast;\n        }\n        catch (e) {\n            this._reportError(\"\" + e, sourceSpan);\n            return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\n        }\n    };\n    /**\n     * @param {?} elementSelector\n     * @param {?} boundProp\n     * @return {?}\n     */\n    BindingParser.prototype.createElementPropertyAst = function (elementSelector, boundProp) {\n        if (boundProp.isAnimation) {\n            return new BoundElementPropertyAst(boundProp.name, PropertyBindingType.Animation, SecurityContext.NONE, boundProp.expression, null, boundProp.sourceSpan);\n        }\n        var /** @type {?} */ unit = null;\n        var /** @type {?} */ bindingType;\n        var /** @type {?} */ boundPropertyName = null;\n        var /** @type {?} */ parts = boundProp.name.split(PROPERTY_PARTS_SEPARATOR);\n        var /** @type {?} */ securityContexts;\n        // Check check for special cases (prefix style, attr, class)\n        if (parts.length > 1) {\n            if (parts[0] == ATTRIBUTE_PREFIX) {\n                boundPropertyName = parts[1];\n                this._validatePropertyOrAttributeName(boundPropertyName, boundProp.sourceSpan, true);\n                securityContexts = calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, boundPropertyName, true);\n                var /** @type {?} */ nsSeparatorIdx = boundPropertyName.indexOf(':');\n                if (nsSeparatorIdx > -1) {\n                    var /** @type {?} */ ns = boundPropertyName.substring(0, nsSeparatorIdx);\n                    var /** @type {?} */ name = boundPropertyName.substring(nsSeparatorIdx + 1);\n                    boundPropertyName = mergeNsAndName(ns, name);\n                }\n                bindingType = PropertyBindingType.Attribute;\n            }\n            else if (parts[0] == CLASS_PREFIX) {\n                boundPropertyName = parts[1];\n                bindingType = PropertyBindingType.Class;\n                securityContexts = [SecurityContext.NONE];\n            }\n            else if (parts[0] == STYLE_PREFIX) {\n                unit = parts.length > 2 ? parts[2] : null;\n                boundPropertyName = parts[1];\n                bindingType = PropertyBindingType.Style;\n                securityContexts = [SecurityContext.STYLE];\n            }\n        }\n        // If not a special case, use the full property name\n        if (boundPropertyName === null) {\n            boundPropertyName = this._schemaRegistry.getMappedPropName(boundProp.name);\n            securityContexts = calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, boundPropertyName, false);\n            bindingType = PropertyBindingType.Property;\n            this._validatePropertyOrAttributeName(boundPropertyName, boundProp.sourceSpan, false);\n        }\n        return new BoundElementPropertyAst(boundPropertyName, bindingType, securityContexts[0], boundProp.expression, unit, boundProp.sourceSpan);\n    };\n    /**\n     * @param {?} name\n     * @param {?} expression\n     * @param {?} sourceSpan\n     * @param {?} targetMatchableAttrs\n     * @param {?} targetEvents\n     * @return {?}\n     */\n    BindingParser.prototype.parseEvent = function (name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {\n        if (_isAnimationLabel(name)) {\n            name = name.substr(1);\n            this._parseAnimationEvent(name, expression, sourceSpan, targetEvents);\n        }\n        else {\n            this._parseEvent(name, expression, sourceSpan, targetMatchableAttrs, targetEvents);\n        }\n    };\n    /**\n     * @param {?} name\n     * @param {?} expression\n     * @param {?} sourceSpan\n     * @param {?} targetEvents\n     * @return {?}\n     */\n    BindingParser.prototype._parseAnimationEvent = function (name, expression, sourceSpan, targetEvents) {\n        var /** @type {?} */ matches = splitAtPeriod(name, [name, '']);\n        var /** @type {?} */ eventName = matches[0];\n        var /** @type {?} */ phase = matches[1].toLowerCase();\n        if (phase) {\n            switch (phase) {\n                case 'start':\n                case 'done':\n                    var /** @type {?} */ ast = this._parseAction(expression, sourceSpan);\n                    targetEvents.push(new BoundEventAst(eventName, null, phase, ast, sourceSpan));\n                    break;\n                default:\n                    this._reportError(\"The provided animation output phase value \\\"\" + phase + \"\\\" for \\\"@\" + eventName + \"\\\" is not supported (use start or done)\", sourceSpan);\n                    break;\n            }\n        }\n        else {\n            this._reportError(\"The animation trigger output event (@\" + eventName + \") is missing its phase value name (start or done are currently supported)\", sourceSpan);\n        }\n    };\n    /**\n     * @param {?} name\n     * @param {?} expression\n     * @param {?} sourceSpan\n     * @param {?} targetMatchableAttrs\n     * @param {?} targetEvents\n     * @return {?}\n     */\n    BindingParser.prototype._parseEvent = function (name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {\n        // long format: 'target: eventName'\n        var _a = splitAtColon(name, [null, name]), target = _a[0], eventName = _a[1];\n        var /** @type {?} */ ast = this._parseAction(expression, sourceSpan);\n        targetMatchableAttrs.push([name, ast.source]);\n        targetEvents.push(new BoundEventAst(eventName, target, null, ast, sourceSpan));\n        // Don't detect directives for event names for now,\n        // so don't add the event name to the matchableAttrs\n    };\n    /**\n     * @param {?} value\n     * @param {?} sourceSpan\n     * @return {?}\n     */\n    BindingParser.prototype._parseAction = function (value, sourceSpan) {\n        var /** @type {?} */ sourceInfo = sourceSpan.start.toString();\n        try {\n            var /** @type {?} */ ast = this._exprParser.parseAction(value, sourceInfo, this._interpolationConfig);\n            if (ast) {\n                this._reportExpressionParserErrors(ast.errors, sourceSpan);\n            }\n            if (!ast || ast.ast instanceof EmptyExpr) {\n                this._reportError(\"Empty expressions are not allowed\", sourceSpan);\n                return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\n            }\n            this._checkPipes(ast, sourceSpan);\n            return ast;\n        }\n        catch (e) {\n            this._reportError(\"\" + e, sourceSpan);\n            return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\n        }\n    };\n    /**\n     * @param {?} message\n     * @param {?} sourceSpan\n     * @param {?=} level\n     * @return {?}\n     */\n    BindingParser.prototype._reportError = function (message, sourceSpan, level) {\n        if (level === void 0) { level = ParseErrorLevel.ERROR; }\n        this._targetErrors.push(new ParseError(sourceSpan, message, level));\n    };\n    /**\n     * @param {?} errors\n     * @param {?} sourceSpan\n     * @return {?}\n     */\n    BindingParser.prototype._reportExpressionParserErrors = function (errors, sourceSpan) {\n        for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) {\n            var error = errors_1[_i];\n            this._reportError(error.message, sourceSpan);\n        }\n    };\n    /**\n     * @param {?} ast\n     * @param {?} sourceSpan\n     * @return {?}\n     */\n    BindingParser.prototype._checkPipes = function (ast, sourceSpan) {\n        var _this = this;\n        if (ast) {\n            var /** @type {?} */ collector = new PipeCollector();\n            ast.visit(collector);\n            collector.pipes.forEach(function (ast, pipeName) {\n                var /** @type {?} */ pipeMeta = _this.pipesByName.get(pipeName);\n                if (!pipeMeta) {\n                    _this._reportError(\"The pipe '\" + pipeName + \"' could not be found\", new ParseSourceSpan(sourceSpan.start.moveBy(ast.span.start), sourceSpan.start.moveBy(ast.span.end)));\n                }\n                else {\n                    _this._usedPipes.set(pipeName, pipeMeta);\n                }\n            });\n        }\n    };\n    /**\n     * @param {?} propName the name of the property / attribute\n     * @param {?} sourceSpan\n     * @param {?} isAttr true when binding to an attribute\n     * @return {?}\n     */\n    BindingParser.prototype._validatePropertyOrAttributeName = function (propName, sourceSpan, isAttr) {\n        var /** @type {?} */ report = isAttr ? this._schemaRegistry.validateAttribute(propName) :\n            this._schemaRegistry.validateProperty(propName);\n        if (report.error) {\n            this._reportError(report.msg, sourceSpan, ParseErrorLevel.ERROR);\n        }\n    };\n    return BindingParser;\n}());\nvar PipeCollector = (function (_super) {\n    __extends(PipeCollector, _super);\n    function PipeCollector() {\n        var _this = _super.apply(this, arguments) || this;\n        _this.pipes = new Map();\n        return _this;\n    }\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    PipeCollector.prototype.visitPipe = function (ast, context) {\n        this.pipes.set(ast.name, ast);\n        ast.exp.visit(this);\n        this.visitAll(ast.args, context);\n        return null;\n    };\n    return PipeCollector;\n}(RecursiveAstVisitor));\n/**\n * @param {?} name\n * @return {?}\n */\nfunction _isAnimationLabel(name) {\n    return name[0] == '@';\n}\n/**\n * @param {?} registry\n * @param {?} selector\n * @param {?} propName\n * @param {?} isAttribute\n * @return {?}\n */\nfunction calcPossibleSecurityContexts(registry, selector, propName, isAttribute) {\n    var /** @type {?} */ ctxs = [];\n    CssSelector.parse(selector).forEach(function (selector) {\n        var /** @type {?} */ elementNames = selector.element ? [selector.element] : registry.allKnownElementNames();\n        var /** @type {?} */ notElementNames = new Set(selector.notSelectors.filter(function (selector) { return selector.isElementSelector(); })\n            .map(function (selector) { return selector.element; }));\n        var /** @type {?} */ possibleElementNames = elementNames.filter(function (elementName) { return !notElementNames.has(elementName); });\n        ctxs.push.apply(ctxs, possibleElementNames.map(function (elementName) { return registry.securityContext(elementName, propName, isAttribute); }));\n    });\n    return ctxs.length === 0 ? [SecurityContext.NONE] : Array.from(new Set(ctxs)).sort();\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar NG_CONTENT_SELECT_ATTR = 'select';\nvar NG_CONTENT_ELEMENT = 'ng-content';\nvar LINK_ELEMENT = 'link';\nvar LINK_STYLE_REL_ATTR = 'rel';\nvar LINK_STYLE_HREF_ATTR = 'href';\nvar LINK_STYLE_REL_VALUE = 'stylesheet';\nvar STYLE_ELEMENT = 'style';\nvar SCRIPT_ELEMENT = 'script';\nvar NG_NON_BINDABLE_ATTR = 'ngNonBindable';\nvar NG_PROJECT_AS = 'ngProjectAs';\n/**\n * @param {?} ast\n * @return {?}\n */\nfunction preparseElement(ast) {\n    var /** @type {?} */ selectAttr = null;\n    var /** @type {?} */ hrefAttr = null;\n    var /** @type {?} */ relAttr = null;\n    var /** @type {?} */ nonBindable = false;\n    var /** @type {?} */ projectAs = null;\n    ast.attrs.forEach(function (attr) {\n        var /** @type {?} */ lcAttrName = attr.name.toLowerCase();\n        if (lcAttrName == NG_CONTENT_SELECT_ATTR) {\n            selectAttr = attr.value;\n        }\n        else if (lcAttrName == LINK_STYLE_HREF_ATTR) {\n            hrefAttr = attr.value;\n        }\n        else if (lcAttrName == LINK_STYLE_REL_ATTR) {\n            relAttr = attr.value;\n        }\n        else if (attr.name == NG_NON_BINDABLE_ATTR) {\n            nonBindable = true;\n        }\n        else if (attr.name == NG_PROJECT_AS) {\n            if (attr.value.length > 0) {\n                projectAs = attr.value;\n            }\n        }\n    });\n    selectAttr = normalizeNgContentSelect(selectAttr);\n    var /** @type {?} */ nodeName = ast.name.toLowerCase();\n    var /** @type {?} */ type = PreparsedElementType.OTHER;\n    if (splitNsName(nodeName)[1] == NG_CONTENT_ELEMENT) {\n        type = PreparsedElementType.NG_CONTENT;\n    }\n    else if (nodeName == STYLE_ELEMENT) {\n        type = PreparsedElementType.STYLE;\n    }\n    else if (nodeName == SCRIPT_ELEMENT) {\n        type = PreparsedElementType.SCRIPT;\n    }\n    else if (nodeName == LINK_ELEMENT && relAttr == LINK_STYLE_REL_VALUE) {\n        type = PreparsedElementType.STYLESHEET;\n    }\n    return new PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs);\n}\nvar PreparsedElementType = {};\nPreparsedElementType.NG_CONTENT = 0;\nPreparsedElementType.STYLE = 1;\nPreparsedElementType.STYLESHEET = 2;\nPreparsedElementType.SCRIPT = 3;\nPreparsedElementType.OTHER = 4;\nPreparsedElementType[PreparsedElementType.NG_CONTENT] = \"NG_CONTENT\";\nPreparsedElementType[PreparsedElementType.STYLE] = \"STYLE\";\nPreparsedElementType[PreparsedElementType.STYLESHEET] = \"STYLESHEET\";\nPreparsedElementType[PreparsedElementType.SCRIPT] = \"SCRIPT\";\nPreparsedElementType[PreparsedElementType.OTHER] = \"OTHER\";\nvar PreparsedElement = (function () {\n    /**\n     * @param {?} type\n     * @param {?} selectAttr\n     * @param {?} hrefAttr\n     * @param {?} nonBindable\n     * @param {?} projectAs\n     */\n    function PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs) {\n        this.type = type;\n        this.selectAttr = selectAttr;\n        this.hrefAttr = hrefAttr;\n        this.nonBindable = nonBindable;\n        this.projectAs = projectAs;\n    }\n    return PreparsedElement;\n}());\n/**\n * @param {?} selectAttr\n * @return {?}\n */\nfunction normalizeNgContentSelect(selectAttr) {\n    if (selectAttr === null || selectAttr.length === 0) {\n        return '*';\n    }\n    return selectAttr;\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar BIND_NAME_REGEXP = /^(?:(?:(?:(bind-)|(let-)|(ref-|#)|(on-)|(bindon-)|(@))(.+))|\\[\\(([^\\)]+)\\)\\]|\\[([^\\]]+)\\]|\\(([^\\)]+)\\))$/;\n// Group 1 = \"bind-\"\nvar KW_BIND_IDX = 1;\n// Group 2 = \"let-\"\nvar KW_LET_IDX = 2;\n// Group 3 = \"ref-/#\"\nvar KW_REF_IDX = 3;\n// Group 4 = \"on-\"\nvar KW_ON_IDX = 4;\n// Group 5 = \"bindon-\"\nvar KW_BINDON_IDX = 5;\n// Group 6 = \"@\"\nvar KW_AT_IDX = 6;\n// Group 7 = the identifier after \"bind-\", \"let-\", \"ref-/#\", \"on-\", \"bindon-\" or \"@\"\nvar IDENT_KW_IDX = 7;\n// Group 8 = identifier inside [()]\nvar IDENT_BANANA_BOX_IDX = 8;\n// Group 9 = identifier inside []\nvar IDENT_PROPERTY_IDX = 9;\n// Group 10 = identifier inside ()\nvar IDENT_EVENT_IDX = 10;\nvar NG_TEMPLATE_ELEMENT = 'ng-template';\n// deprecated in 4.x\nvar TEMPLATE_ELEMENT = 'template';\n// deprecated in 4.x\nvar TEMPLATE_ATTR = 'template';\nvar TEMPLATE_ATTR_PREFIX = '*';\nvar CLASS_ATTR = 'class';\nvar TEXT_CSS_SELECTOR = CssSelector.parse('*')[0];\nvar TEMPLATE_ELEMENT_DEPRECATION_WARNING = 'The <template> element is deprecated. Use <ng-template> instead';\nvar TEMPLATE_ATTR_DEPRECATION_WARNING = 'The template attribute is deprecated. Use an ng-template element instead.';\nvar warningCounts = {};\n/**\n * @param {?} warnings\n * @return {?}\n */\nfunction warnOnlyOnce(warnings) {\n    return function (error) {\n        if (warnings.indexOf(error.msg) !== -1) {\n            warningCounts[error.msg] = (warningCounts[error.msg] || 0) + 1;\n            return warningCounts[error.msg] <= 1;\n        }\n        return true;\n    };\n}\n/**\n * Provides an array of {@link TemplateAstVisitor}s which will be used to transform\n * parsed templates before compilation is invoked, allowing custom expression syntax\n * and other advanced transformations.\n *\n * This is currently an internal-only feature and not meant for general use.\n */\nvar TEMPLATE_TRANSFORMS = new InjectionToken('TemplateTransforms');\nvar TemplateParseError = (function (_super) {\n    __extends(TemplateParseError, _super);\n    /**\n     * @param {?} message\n     * @param {?} span\n     * @param {?} level\n     */\n    function TemplateParseError(message, span, level) {\n        return _super.call(this, span, message, level) || this;\n    }\n    return TemplateParseError;\n}(ParseError));\nvar TemplateParseResult = (function () {\n    /**\n     * @param {?=} templateAst\n     * @param {?=} usedPipes\n     * @param {?=} errors\n     */\n    function TemplateParseResult(templateAst, usedPipes, errors) {\n        this.templateAst = templateAst;\n        this.usedPipes = usedPipes;\n        this.errors = errors;\n    }\n    return TemplateParseResult;\n}());\nvar TemplateParser = (function () {\n    /**\n     * @param {?} _config\n     * @param {?} _exprParser\n     * @param {?} _schemaRegistry\n     * @param {?} _htmlParser\n     * @param {?} _console\n     * @param {?} transforms\n     */\n    function TemplateParser(_config, _exprParser, _schemaRegistry, _htmlParser, _console, transforms) {\n        this._config = _config;\n        this._exprParser = _exprParser;\n        this._schemaRegistry = _schemaRegistry;\n        this._htmlParser = _htmlParser;\n        this._console = _console;\n        this.transforms = transforms;\n    }\n    /**\n     * @param {?} component\n     * @param {?} template\n     * @param {?} directives\n     * @param {?} pipes\n     * @param {?} schemas\n     * @param {?} templateUrl\n     * @return {?}\n     */\n    TemplateParser.prototype.parse = function (component, template, directives, pipes, schemas, templateUrl) {\n        var /** @type {?} */ result = this.tryParse(component, template, directives, pipes, schemas, templateUrl);\n        var /** @type {?} */ warnings = result.errors.filter(function (error) { return error.level === ParseErrorLevel.WARNING; }).filter(warnOnlyOnce([\n            TEMPLATE_ATTR_DEPRECATION_WARNING, TEMPLATE_ELEMENT_DEPRECATION_WARNING\n        ]));\n        var /** @type {?} */ errors = result.errors.filter(function (error) { return error.level === ParseErrorLevel.ERROR; });\n        if (warnings.length > 0) {\n            this._console.warn(\"Template parse warnings:\\n\" + warnings.join('\\n'));\n        }\n        if (errors.length > 0) {\n            var /** @type {?} */ errorString = errors.join('\\n');\n            throw syntaxError(\"Template parse errors:\\n\" + errorString);\n        }\n        return { template: result.templateAst, pipes: result.usedPipes };\n    };\n    /**\n     * @param {?} component\n     * @param {?} template\n     * @param {?} directives\n     * @param {?} pipes\n     * @param {?} schemas\n     * @param {?} templateUrl\n     * @return {?}\n     */\n    TemplateParser.prototype.tryParse = function (component, template, directives, pipes, schemas, templateUrl) {\n        return this.tryParseHtml(this.expandHtml(this._htmlParser.parse(template, templateUrl, true, this.getInterpolationConfig(component))), component, directives, pipes, schemas);\n    };\n    /**\n     * @param {?} htmlAstWithErrors\n     * @param {?} component\n     * @param {?} directives\n     * @param {?} pipes\n     * @param {?} schemas\n     * @return {?}\n     */\n    TemplateParser.prototype.tryParseHtml = function (htmlAstWithErrors, component, directives, pipes, schemas) {\n        var /** @type {?} */ result;\n        var /** @type {?} */ errors = htmlAstWithErrors.errors;\n        var /** @type {?} */ usedPipes = [];\n        if (htmlAstWithErrors.rootNodes.length > 0) {\n            var /** @type {?} */ uniqDirectives = removeSummaryDuplicates(directives);\n            var /** @type {?} */ uniqPipes = removeSummaryDuplicates(pipes);\n            var /** @type {?} */ providerViewContext = new ProviderViewContext(component);\n            var /** @type {?} */ interpolationConfig = void 0;\n            if (component.template && component.template.interpolation) {\n                interpolationConfig = {\n                    start: component.template.interpolation[0],\n                    end: component.template.interpolation[1]\n                };\n            }\n            var /** @type {?} */ bindingParser = new BindingParser(this._exprParser, interpolationConfig, this._schemaRegistry, uniqPipes, errors);\n            var /** @type {?} */ parseVisitor = new TemplateParseVisitor(this._config, providerViewContext, uniqDirectives, bindingParser, this._schemaRegistry, schemas, errors);\n            result = visitAll(parseVisitor, htmlAstWithErrors.rootNodes, EMPTY_ELEMENT_CONTEXT);\n            errors.push.apply(errors, providerViewContext.errors);\n            usedPipes.push.apply(usedPipes, bindingParser.getUsedPipes());\n        }\n        else {\n            result = [];\n        }\n        this._assertNoReferenceDuplicationOnTemplate(result, errors);\n        if (errors.length > 0) {\n            return new TemplateParseResult(result, usedPipes, errors);\n        }\n        if (this.transforms) {\n            this.transforms.forEach(function (transform) { result = templateVisitAll(transform, result); });\n        }\n        return new TemplateParseResult(result, usedPipes, errors);\n    };\n    /**\n     * @param {?} htmlAstWithErrors\n     * @param {?=} forced\n     * @return {?}\n     */\n    TemplateParser.prototype.expandHtml = function (htmlAstWithErrors, forced) {\n        if (forced === void 0) { forced = false; }\n        var /** @type {?} */ errors = htmlAstWithErrors.errors;\n        if (errors.length == 0 || forced) {\n            // Transform ICU messages to angular directives\n            var /** @type {?} */ expandedHtmlAst = expandNodes(htmlAstWithErrors.rootNodes);\n            errors.push.apply(errors, expandedHtmlAst.errors);\n            htmlAstWithErrors = new ParseTreeResult(expandedHtmlAst.nodes, errors);\n        }\n        return htmlAstWithErrors;\n    };\n    /**\n     * @param {?} component\n     * @return {?}\n     */\n    TemplateParser.prototype.getInterpolationConfig = function (component) {\n        if (component.template) {\n            return InterpolationConfig.fromArray(component.template.interpolation);\n        }\n    };\n    /**\n     * \\@internal\n     * @param {?} result\n     * @param {?} errors\n     * @return {?}\n     */\n    TemplateParser.prototype._assertNoReferenceDuplicationOnTemplate = function (result, errors) {\n        var /** @type {?} */ existingReferences = [];\n        result.filter(function (element) { return !!((element)).references; })\n            .forEach(function (element) { return ((element)).references.forEach(function (reference) {\n            var /** @type {?} */ name = reference.name;\n            if (existingReferences.indexOf(name) < 0) {\n                existingReferences.push(name);\n            }\n            else {\n                var /** @type {?} */ error = new TemplateParseError(\"Reference \\\"#\" + name + \"\\\" is defined several times\", reference.sourceSpan, ParseErrorLevel.ERROR);\n                errors.push(error);\n            }\n        }); });\n    };\n    return TemplateParser;\n}());\nTemplateParser.decorators = [\n    { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nTemplateParser.ctorParameters = function () { return [\n    { type: CompilerConfig, },\n    { type: Parser, },\n    { type: ElementSchemaRegistry, },\n    { type: I18NHtmlParser, },\n    { type: ɵConsole, },\n    { type: Array, decorators: [{ type: Optional }, { type: Inject, args: [TEMPLATE_TRANSFORMS,] },] },\n]; };\nvar TemplateParseVisitor = (function () {\n    /**\n     * @param {?} config\n     * @param {?} providerViewContext\n     * @param {?} directives\n     * @param {?} _bindingParser\n     * @param {?} _schemaRegistry\n     * @param {?} _schemas\n     * @param {?} _targetErrors\n     */\n    function TemplateParseVisitor(config, providerViewContext, directives, _bindingParser, _schemaRegistry, _schemas, _targetErrors) {\n        var _this = this;\n        this.config = config;\n        this.providerViewContext = providerViewContext;\n        this._bindingParser = _bindingParser;\n        this._schemaRegistry = _schemaRegistry;\n        this._schemas = _schemas;\n        this._targetErrors = _targetErrors;\n        this.selectorMatcher = new SelectorMatcher();\n        this.directivesIndex = new Map();\n        this.ngContentCount = 0;\n        // Note: queries start with id 1 so we can use the number in a Bloom filter!\n        this.contentQueryStartId = providerViewContext.component.viewQueries.length + 1;\n        directives.forEach(function (directive, index) {\n            var selector = CssSelector.parse(directive.selector);\n            _this.selectorMatcher.addSelectables(selector, directive);\n            _this.directivesIndex.set(directive, index);\n        });\n    }\n    /**\n     * @param {?} expansion\n     * @param {?} context\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype.visitExpansion = function (expansion, context) { return null; };\n    /**\n     * @param {?} expansionCase\n     * @param {?} context\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype.visitExpansionCase = function (expansionCase, context) { return null; };\n    /**\n     * @param {?} text\n     * @param {?} parent\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype.visitText = function (text, parent) {\n        var /** @type {?} */ ngContentIndex = parent.findNgContentIndex(TEXT_CSS_SELECTOR);\n        var /** @type {?} */ expr = this._bindingParser.parseInterpolation(text.value, text.sourceSpan);\n        return expr ? new BoundTextAst(expr, ngContentIndex, text.sourceSpan) :\n            new TextAst(text.value, ngContentIndex, text.sourceSpan);\n    };\n    /**\n     * @param {?} attribute\n     * @param {?} context\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype.visitAttribute = function (attribute, context) {\n        return new AttrAst(attribute.name, attribute.value, attribute.sourceSpan);\n    };\n    /**\n     * @param {?} comment\n     * @param {?} context\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype.visitComment = function (comment, context) { return null; };\n    /**\n     * @param {?} element\n     * @param {?} parent\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype.visitElement = function (element, parent) {\n        var _this = this;\n        var /** @type {?} */ queryStartIndex = this.contentQueryStartId;\n        var /** @type {?} */ nodeName = element.name;\n        var /** @type {?} */ preparsedElement = preparseElement(element);\n        if (preparsedElement.type === PreparsedElementType.SCRIPT ||\n            preparsedElement.type === PreparsedElementType.STYLE) {\n            // Skipping <script> for security reasons\n            // Skipping <style> as we already processed them\n            // in the StyleCompiler\n            return null;\n        }\n        if (preparsedElement.type === PreparsedElementType.STYLESHEET &&\n            isStyleUrlResolvable(preparsedElement.hrefAttr)) {\n            // Skipping stylesheets with either relative urls or package scheme as we already processed\n            // them in the StyleCompiler\n            return null;\n        }\n        var /** @type {?} */ matchableAttrs = [];\n        var /** @type {?} */ elementOrDirectiveProps = [];\n        var /** @type {?} */ elementOrDirectiveRefs = [];\n        var /** @type {?} */ elementVars = [];\n        var /** @type {?} */ events = [];\n        var /** @type {?} */ templateElementOrDirectiveProps = [];\n        var /** @type {?} */ templateMatchableAttrs = [];\n        var /** @type {?} */ templateElementVars = [];\n        var /** @type {?} */ hasInlineTemplates = false;\n        var /** @type {?} */ attrs = [];\n        var /** @type {?} */ isTemplateElement = isTemplate(element, this.config.enableLegacyTemplate, function (m, span) { return _this._reportError(m, span, ParseErrorLevel.WARNING); });\n        element.attrs.forEach(function (attr) {\n            var /** @type {?} */ hasBinding = _this._parseAttr(isTemplateElement, attr, matchableAttrs, elementOrDirectiveProps, events, elementOrDirectiveRefs, elementVars);\n            var /** @type {?} */ templateBindingsSource;\n            var /** @type {?} */ prefixToken;\n            var /** @type {?} */ normalizedName = _this._normalizeAttributeName(attr.name);\n            if (_this.config.enableLegacyTemplate && normalizedName == TEMPLATE_ATTR) {\n                _this._reportError(TEMPLATE_ATTR_DEPRECATION_WARNING, attr.sourceSpan, ParseErrorLevel.WARNING);\n                templateBindingsSource = attr.value;\n            }\n            else if (normalizedName.startsWith(TEMPLATE_ATTR_PREFIX)) {\n                templateBindingsSource = attr.value;\n                prefixToken = normalizedName.substring(TEMPLATE_ATTR_PREFIX.length) + ':';\n            }\n            var /** @type {?} */ hasTemplateBinding = templateBindingsSource != null;\n            if (hasTemplateBinding) {\n                if (hasInlineTemplates) {\n                    _this._reportError(\"Can't have multiple template bindings on one element. Use only one attribute named 'template' or prefixed with *\", attr.sourceSpan);\n                }\n                hasInlineTemplates = true;\n                _this._bindingParser.parseInlineTemplateBinding(prefixToken, templateBindingsSource, attr.sourceSpan, templateMatchableAttrs, templateElementOrDirectiveProps, templateElementVars);\n            }\n            if (!hasBinding && !hasTemplateBinding) {\n                // don't include the bindings as attributes as well in the AST\n                attrs.push(_this.visitAttribute(attr, null));\n                matchableAttrs.push([attr.name, attr.value]);\n            }\n        });\n        var /** @type {?} */ elementCssSelector = createElementCssSelector(nodeName, matchableAttrs);\n        var _a = this._parseDirectives(this.selectorMatcher, elementCssSelector), directiveMetas = _a.directives, matchElement = _a.matchElement;\n        var /** @type {?} */ references = [];\n        var /** @type {?} */ boundDirectivePropNames = new Set();\n        var /** @type {?} */ directiveAsts = this._createDirectiveAsts(isTemplateElement, element.name, directiveMetas, elementOrDirectiveProps, elementOrDirectiveRefs, element.sourceSpan, references, boundDirectivePropNames);\n        var /** @type {?} */ elementProps = this._createElementPropertyAsts(element.name, elementOrDirectiveProps, boundDirectivePropNames);\n        var /** @type {?} */ isViewRoot = parent.isTemplateElement || hasInlineTemplates;\n        var /** @type {?} */ providerContext = new ProviderElementContext(this.providerViewContext, parent.providerContext, isViewRoot, directiveAsts, attrs, references, isTemplateElement, queryStartIndex, element.sourceSpan);\n        var /** @type {?} */ children = visitAll(preparsedElement.nonBindable ? NON_BINDABLE_VISITOR : this, element.children, ElementContext.create(isTemplateElement, directiveAsts, isTemplateElement ? parent.providerContext : providerContext));\n        providerContext.afterElement();\n        // Override the actual selector when the `ngProjectAs` attribute is provided\n        var /** @type {?} */ projectionSelector = preparsedElement.projectAs != null ?\n            CssSelector.parse(preparsedElement.projectAs)[0] :\n            elementCssSelector;\n        var /** @type {?} */ ngContentIndex = parent.findNgContentIndex(projectionSelector);\n        var /** @type {?} */ parsedElement;\n        if (preparsedElement.type === PreparsedElementType.NG_CONTENT) {\n            if (element.children && !element.children.every(_isEmptyTextNode)) {\n                this._reportError(\"<ng-content> element cannot have content.\", element.sourceSpan);\n            }\n            parsedElement = new NgContentAst(this.ngContentCount++, hasInlineTemplates ? null : ngContentIndex, element.sourceSpan);\n        }\n        else if (isTemplateElement) {\n            this._assertAllEventsPublishedByDirectives(directiveAsts, events);\n            this._assertNoComponentsNorElementBindingsOnTemplate(directiveAsts, elementProps, element.sourceSpan);\n            parsedElement = new EmbeddedTemplateAst(attrs, events, references, elementVars, providerContext.transformedDirectiveAsts, providerContext.transformProviders, providerContext.transformedHasViewContainer, providerContext.queryMatches, children, hasInlineTemplates ? null : ngContentIndex, element.sourceSpan);\n        }\n        else {\n            this._assertElementExists(matchElement, element);\n            this._assertOnlyOneComponent(directiveAsts, element.sourceSpan);\n            var /** @type {?} */ ngContentIndex_1 = hasInlineTemplates ? null : parent.findNgContentIndex(projectionSelector);\n            parsedElement = new ElementAst(nodeName, attrs, elementProps, events, references, providerContext.transformedDirectiveAsts, providerContext.transformProviders, providerContext.transformedHasViewContainer, providerContext.queryMatches, children, hasInlineTemplates ? null : ngContentIndex_1, element.sourceSpan, element.endSourceSpan);\n        }\n        if (hasInlineTemplates) {\n            var /** @type {?} */ templateQueryStartIndex = this.contentQueryStartId;\n            var /** @type {?} */ templateSelector = createElementCssSelector(TEMPLATE_ELEMENT, templateMatchableAttrs);\n            var templateDirectiveMetas = this._parseDirectives(this.selectorMatcher, templateSelector).directives;\n            var /** @type {?} */ templateBoundDirectivePropNames = new Set();\n            var /** @type {?} */ templateDirectiveAsts = this._createDirectiveAsts(true, element.name, templateDirectiveMetas, templateElementOrDirectiveProps, [], element.sourceSpan, [], templateBoundDirectivePropNames);\n            var /** @type {?} */ templateElementProps = this._createElementPropertyAsts(element.name, templateElementOrDirectiveProps, templateBoundDirectivePropNames);\n            this._assertNoComponentsNorElementBindingsOnTemplate(templateDirectiveAsts, templateElementProps, element.sourceSpan);\n            var /** @type {?} */ templateProviderContext = new ProviderElementContext(this.providerViewContext, parent.providerContext, parent.isTemplateElement, templateDirectiveAsts, [], [], true, templateQueryStartIndex, element.sourceSpan);\n            templateProviderContext.afterElement();\n            parsedElement = new EmbeddedTemplateAst([], [], [], templateElementVars, templateProviderContext.transformedDirectiveAsts, templateProviderContext.transformProviders, templateProviderContext.transformedHasViewContainer, templateProviderContext.queryMatches, [parsedElement], ngContentIndex, element.sourceSpan);\n        }\n        return parsedElement;\n    };\n    /**\n     * @param {?} isTemplateElement\n     * @param {?} attr\n     * @param {?} targetMatchableAttrs\n     * @param {?} targetProps\n     * @param {?} targetEvents\n     * @param {?} targetRefs\n     * @param {?} targetVars\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype._parseAttr = function (isTemplateElement, attr, targetMatchableAttrs, targetProps, targetEvents, targetRefs, targetVars) {\n        var /** @type {?} */ name = this._normalizeAttributeName(attr.name);\n        var /** @type {?} */ value = attr.value;\n        var /** @type {?} */ srcSpan = attr.sourceSpan;\n        var /** @type {?} */ bindParts = name.match(BIND_NAME_REGEXP);\n        var /** @type {?} */ hasBinding = false;\n        if (bindParts !== null) {\n            hasBinding = true;\n            if (bindParts[KW_BIND_IDX] != null) {\n                this._bindingParser.parsePropertyBinding(bindParts[IDENT_KW_IDX], value, false, srcSpan, targetMatchableAttrs, targetProps);\n            }\n            else if (bindParts[KW_LET_IDX]) {\n                if (isTemplateElement) {\n                    var /** @type {?} */ identifier = bindParts[IDENT_KW_IDX];\n                    this._parseVariable(identifier, value, srcSpan, targetVars);\n                }\n                else {\n                    this._reportError(\"\\\"let-\\\" is only supported on template elements.\", srcSpan);\n                }\n            }\n            else if (bindParts[KW_REF_IDX]) {\n                var /** @type {?} */ identifier = bindParts[IDENT_KW_IDX];\n                this._parseReference(identifier, value, srcSpan, targetRefs);\n            }\n            else if (bindParts[KW_ON_IDX]) {\n                this._bindingParser.parseEvent(bindParts[IDENT_KW_IDX], value, srcSpan, targetMatchableAttrs, targetEvents);\n            }\n            else if (bindParts[KW_BINDON_IDX]) {\n                this._bindingParser.parsePropertyBinding(bindParts[IDENT_KW_IDX], value, false, srcSpan, targetMatchableAttrs, targetProps);\n                this._parseAssignmentEvent(bindParts[IDENT_KW_IDX], value, srcSpan, targetMatchableAttrs, targetEvents);\n            }\n            else if (bindParts[KW_AT_IDX]) {\n                this._bindingParser.parseLiteralAttr(name, value, srcSpan, targetMatchableAttrs, targetProps);\n            }\n            else if (bindParts[IDENT_BANANA_BOX_IDX]) {\n                this._bindingParser.parsePropertyBinding(bindParts[IDENT_BANANA_BOX_IDX], value, false, srcSpan, targetMatchableAttrs, targetProps);\n                this._parseAssignmentEvent(bindParts[IDENT_BANANA_BOX_IDX], value, srcSpan, targetMatchableAttrs, targetEvents);\n            }\n            else if (bindParts[IDENT_PROPERTY_IDX]) {\n                this._bindingParser.parsePropertyBinding(bindParts[IDENT_PROPERTY_IDX], value, false, srcSpan, targetMatchableAttrs, targetProps);\n            }\n            else if (bindParts[IDENT_EVENT_IDX]) {\n                this._bindingParser.parseEvent(bindParts[IDENT_EVENT_IDX], value, srcSpan, targetMatchableAttrs, targetEvents);\n            }\n        }\n        else {\n            hasBinding = this._bindingParser.parsePropertyInterpolation(name, value, srcSpan, targetMatchableAttrs, targetProps);\n        }\n        if (!hasBinding) {\n            this._bindingParser.parseLiteralAttr(name, value, srcSpan, targetMatchableAttrs, targetProps);\n        }\n        return hasBinding;\n    };\n    /**\n     * @param {?} attrName\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype._normalizeAttributeName = function (attrName) {\n        return /^data-/i.test(attrName) ? attrName.substring(5) : attrName;\n    };\n    /**\n     * @param {?} identifier\n     * @param {?} value\n     * @param {?} sourceSpan\n     * @param {?} targetVars\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype._parseVariable = function (identifier, value, sourceSpan, targetVars) {\n        if (identifier.indexOf('-') > -1) {\n            this._reportError(\"\\\"-\\\" is not allowed in variable names\", sourceSpan);\n        }\n        targetVars.push(new VariableAst(identifier, value, sourceSpan));\n    };\n    /**\n     * @param {?} identifier\n     * @param {?} value\n     * @param {?} sourceSpan\n     * @param {?} targetRefs\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype._parseReference = function (identifier, value, sourceSpan, targetRefs) {\n        if (identifier.indexOf('-') > -1) {\n            this._reportError(\"\\\"-\\\" is not allowed in reference names\", sourceSpan);\n        }\n        targetRefs.push(new ElementOrDirectiveRef(identifier, value, sourceSpan));\n    };\n    /**\n     * @param {?} name\n     * @param {?} expression\n     * @param {?} sourceSpan\n     * @param {?} targetMatchableAttrs\n     * @param {?} targetEvents\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype._parseAssignmentEvent = function (name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {\n        this._bindingParser.parseEvent(name + \"Change\", expression + \"=$event\", sourceSpan, targetMatchableAttrs, targetEvents);\n    };\n    /**\n     * @param {?} selectorMatcher\n     * @param {?} elementCssSelector\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype._parseDirectives = function (selectorMatcher, elementCssSelector) {\n        var _this = this;\n        // Need to sort the directives so that we get consistent results throughout,\n        // as selectorMatcher uses Maps inside.\n        // Also deduplicate directives as they might match more than one time!\n        var /** @type {?} */ directives = new Array(this.directivesIndex.size);\n        // Whether any directive selector matches on the element name\n        var /** @type {?} */ matchElement = false;\n        selectorMatcher.match(elementCssSelector, function (selector, directive) {\n            directives[_this.directivesIndex.get(directive)] = directive;\n            matchElement = matchElement || selector.hasElementSelector();\n        });\n        return {\n            directives: directives.filter(function (dir) { return !!dir; }),\n            matchElement: matchElement,\n        };\n    };\n    /**\n     * @param {?} isTemplateElement\n     * @param {?} elementName\n     * @param {?} directives\n     * @param {?} props\n     * @param {?} elementOrDirectiveRefs\n     * @param {?} elementSourceSpan\n     * @param {?} targetReferences\n     * @param {?} targetBoundDirectivePropNames\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype._createDirectiveAsts = function (isTemplateElement, elementName, directives, props, elementOrDirectiveRefs, elementSourceSpan, targetReferences, targetBoundDirectivePropNames) {\n        var _this = this;\n        var /** @type {?} */ matchedReferences = new Set();\n        var /** @type {?} */ component = null;\n        var /** @type {?} */ directiveAsts = directives.map(function (directive) {\n            var /** @type {?} */ sourceSpan = new ParseSourceSpan(elementSourceSpan.start, elementSourceSpan.end, \"Directive \" + identifierName(directive.type));\n            if (directive.isComponent) {\n                component = directive;\n            }\n            var /** @type {?} */ directiveProperties = [];\n            var /** @type {?} */ hostProperties = _this._bindingParser.createDirectiveHostPropertyAsts(directive, elementName, sourceSpan);\n            // Note: We need to check the host properties here as well,\n            // as we don't know the element name in the DirectiveWrapperCompiler yet.\n            hostProperties = _this._checkPropertiesInSchema(elementName, hostProperties);\n            var /** @type {?} */ hostEvents = _this._bindingParser.createDirectiveHostEventAsts(directive, sourceSpan);\n            _this._createDirectivePropertyAsts(directive.inputs, props, directiveProperties, targetBoundDirectivePropNames);\n            elementOrDirectiveRefs.forEach(function (elOrDirRef) {\n                if ((elOrDirRef.value.length === 0 && directive.isComponent) ||\n                    (directive.exportAs == elOrDirRef.value)) {\n                    targetReferences.push(new ReferenceAst(elOrDirRef.name, identifierToken(directive.type), elOrDirRef.sourceSpan));\n                    matchedReferences.add(elOrDirRef.name);\n                }\n            });\n            var /** @type {?} */ contentQueryStartId = _this.contentQueryStartId;\n            _this.contentQueryStartId += directive.queries.length;\n            return new DirectiveAst(directive, directiveProperties, hostProperties, hostEvents, contentQueryStartId, sourceSpan);\n        });\n        elementOrDirectiveRefs.forEach(function (elOrDirRef) {\n            if (elOrDirRef.value.length > 0) {\n                if (!matchedReferences.has(elOrDirRef.name)) {\n                    _this._reportError(\"There is no directive with \\\"exportAs\\\" set to \\\"\" + elOrDirRef.value + \"\\\"\", elOrDirRef.sourceSpan);\n                }\n            }\n            else if (!component) {\n                var /** @type {?} */ refToken = null;\n                if (isTemplateElement) {\n                    refToken = createIdentifierToken(Identifiers.TemplateRef);\n                }\n                targetReferences.push(new ReferenceAst(elOrDirRef.name, refToken, elOrDirRef.sourceSpan));\n            }\n        });\n        return directiveAsts;\n    };\n    /**\n     * @param {?} directiveProperties\n     * @param {?} boundProps\n     * @param {?} targetBoundDirectiveProps\n     * @param {?} targetBoundDirectivePropNames\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype._createDirectivePropertyAsts = function (directiveProperties, boundProps, targetBoundDirectiveProps, targetBoundDirectivePropNames) {\n        if (directiveProperties) {\n            var /** @type {?} */ boundPropsByName_1 = new Map();\n            boundProps.forEach(function (boundProp) {\n                var /** @type {?} */ prevValue = boundPropsByName_1.get(boundProp.name);\n                if (!prevValue || prevValue.isLiteral) {\n                    // give [a]=\"b\" a higher precedence than a=\"b\" on the same element\n                    boundPropsByName_1.set(boundProp.name, boundProp);\n                }\n            });\n            Object.keys(directiveProperties).forEach(function (dirProp) {\n                var /** @type {?} */ elProp = directiveProperties[dirProp];\n                var /** @type {?} */ boundProp = boundPropsByName_1.get(elProp);\n                // Bindings are optional, so this binding only needs to be set up if an expression is given.\n                if (boundProp) {\n                    targetBoundDirectivePropNames.add(boundProp.name);\n                    if (!isEmptyExpression(boundProp.expression)) {\n                        targetBoundDirectiveProps.push(new BoundDirectivePropertyAst(dirProp, boundProp.name, boundProp.expression, boundProp.sourceSpan));\n                    }\n                }\n            });\n        }\n    };\n    /**\n     * @param {?} elementName\n     * @param {?} props\n     * @param {?} boundDirectivePropNames\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype._createElementPropertyAsts = function (elementName, props, boundDirectivePropNames) {\n        var _this = this;\n        var /** @type {?} */ boundElementProps = [];\n        props.forEach(function (prop) {\n            if (!prop.isLiteral && !boundDirectivePropNames.has(prop.name)) {\n                boundElementProps.push(_this._bindingParser.createElementPropertyAst(elementName, prop));\n            }\n        });\n        return this._checkPropertiesInSchema(elementName, boundElementProps);\n    };\n    /**\n     * @param {?} directives\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype._findComponentDirectives = function (directives) {\n        return directives.filter(function (directive) { return directive.directive.isComponent; });\n    };\n    /**\n     * @param {?} directives\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype._findComponentDirectiveNames = function (directives) {\n        return this._findComponentDirectives(directives)\n            .map(function (directive) { return identifierName(directive.directive.type); });\n    };\n    /**\n     * @param {?} directives\n     * @param {?} sourceSpan\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype._assertOnlyOneComponent = function (directives, sourceSpan) {\n        var /** @type {?} */ componentTypeNames = this._findComponentDirectiveNames(directives);\n        if (componentTypeNames.length > 1) {\n            this._reportError(\"More than one component matched on this element.\\n\" +\n                \"Make sure that only one component's selector can match a given element.\\n\" +\n                (\"Conflicting components: \" + componentTypeNames.join(',')), sourceSpan);\n        }\n    };\n    /**\n     * Make sure that non-angular tags conform to the schemas.\n     *\n     * Note: An element is considered an angular tag when at least one directive selector matches the\n     * tag name.\n     *\n     * @param {?} matchElement Whether any directive has matched on the tag name\n     * @param {?} element the html element\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype._assertElementExists = function (matchElement, element) {\n        var /** @type {?} */ elName = element.name.replace(/^:xhtml:/, '');\n        if (!matchElement && !this._schemaRegistry.hasElement(elName, this._schemas)) {\n            var /** @type {?} */ errorMsg = \"'\" + elName + \"' is not a known element:\\n\";\n            errorMsg +=\n                \"1. If '\" + elName + \"' is an Angular component, then verify that it is part of this module.\\n\";\n            if (elName.indexOf('-') > -1) {\n                errorMsg +=\n                    \"2. If '\" + elName + \"' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.\";\n            }\n            else {\n                errorMsg +=\n                    \"2. To allow any element add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component.\";\n            }\n            this._reportError(errorMsg, element.sourceSpan);\n        }\n    };\n    /**\n     * @param {?} directives\n     * @param {?} elementProps\n     * @param {?} sourceSpan\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype._assertNoComponentsNorElementBindingsOnTemplate = function (directives, elementProps, sourceSpan) {\n        var _this = this;\n        var /** @type {?} */ componentTypeNames = this._findComponentDirectiveNames(directives);\n        if (componentTypeNames.length > 0) {\n            this._reportError(\"Components on an embedded template: \" + componentTypeNames.join(','), sourceSpan);\n        }\n        elementProps.forEach(function (prop) {\n            _this._reportError(\"Property binding \" + prop.name + \" not used by any directive on an embedded template. Make sure that the property name is spelled correctly and all directives are listed in the \\\"@NgModule.declarations\\\".\", sourceSpan);\n        });\n    };\n    /**\n     * @param {?} directives\n     * @param {?} events\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype._assertAllEventsPublishedByDirectives = function (directives, events) {\n        var _this = this;\n        var /** @type {?} */ allDirectiveEvents = new Set();\n        directives.forEach(function (directive) {\n            Object.keys(directive.directive.outputs).forEach(function (k) {\n                var /** @type {?} */ eventName = directive.directive.outputs[k];\n                allDirectiveEvents.add(eventName);\n            });\n        });\n        events.forEach(function (event) {\n            if (event.target != null || !allDirectiveEvents.has(event.name)) {\n                _this._reportError(\"Event binding \" + event.fullName + \" not emitted by any directive on an embedded template. Make sure that the event name is spelled correctly and all directives are listed in the \\\"@NgModule.declarations\\\".\", event.sourceSpan);\n            }\n        });\n    };\n    /**\n     * @param {?} elementName\n     * @param {?} boundProps\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype._checkPropertiesInSchema = function (elementName, boundProps) {\n        var _this = this;\n        // Note: We can't filter out empty expressions before this method,\n        // as we still want to validate them!\n        return boundProps.filter(function (boundProp) {\n            if (boundProp.type === PropertyBindingType.Property &&\n                !_this._schemaRegistry.hasProperty(elementName, boundProp.name, _this._schemas)) {\n                var /** @type {?} */ errorMsg = \"Can't bind to '\" + boundProp.name + \"' since it isn't a known property of '\" + elementName + \"'.\";\n                if (elementName.startsWith('ng-')) {\n                    errorMsg +=\n                        \"\\n1. If '\" + boundProp.name + \"' is an Angular directive, then add 'CommonModule' to the '@NgModule.imports' of this component.\" +\n                            \"\\n2. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component.\";\n                }\n                else if (elementName.indexOf('-') > -1) {\n                    errorMsg +=\n                        \"\\n1. If '\" + elementName + \"' is an Angular component and it has '\" + boundProp.name + \"' input, then verify that it is part of this module.\" +\n                            (\"\\n2. If '\" + elementName + \"' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.\") +\n                            \"\\n3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component.\";\n                }\n                _this._reportError(errorMsg, boundProp.sourceSpan);\n            }\n            return !isEmptyExpression(boundProp.value);\n        });\n    };\n    /**\n     * @param {?} message\n     * @param {?} sourceSpan\n     * @param {?=} level\n     * @return {?}\n     */\n    TemplateParseVisitor.prototype._reportError = function (message, sourceSpan, level) {\n        if (level === void 0) { level = ParseErrorLevel.ERROR; }\n        this._targetErrors.push(new ParseError(sourceSpan, message, level));\n    };\n    return TemplateParseVisitor;\n}());\nvar NonBindableVisitor = (function () {\n    function NonBindableVisitor() {\n    }\n    /**\n     * @param {?} ast\n     * @param {?} parent\n     * @return {?}\n     */\n    NonBindableVisitor.prototype.visitElement = function (ast, parent) {\n        var /** @type {?} */ preparsedElement = preparseElement(ast);\n        if (preparsedElement.type === PreparsedElementType.SCRIPT ||\n            preparsedElement.type === PreparsedElementType.STYLE ||\n            preparsedElement.type === PreparsedElementType.STYLESHEET) {\n            // Skipping <script> for security reasons\n            // Skipping <style> and stylesheets as we already processed them\n            // in the StyleCompiler\n            return null;\n        }\n        var /** @type {?} */ attrNameAndValues = ast.attrs.map(function (attr) { return [attr.name, attr.value]; });\n        var /** @type {?} */ selector = createElementCssSelector(ast.name, attrNameAndValues);\n        var /** @type {?} */ ngContentIndex = parent.findNgContentIndex(selector);\n        var /** @type {?} */ children = visitAll(this, ast.children, EMPTY_ELEMENT_CONTEXT);\n        return new ElementAst(ast.name, visitAll(this, ast.attrs), [], [], [], [], [], false, [], children, ngContentIndex, ast.sourceSpan, ast.endSourceSpan);\n    };\n    /**\n     * @param {?} comment\n     * @param {?} context\n     * @return {?}\n     */\n    NonBindableVisitor.prototype.visitComment = function (comment, context) { return null; };\n    /**\n     * @param {?} attribute\n     * @param {?} context\n     * @return {?}\n     */\n    NonBindableVisitor.prototype.visitAttribute = function (attribute, context) {\n        return new AttrAst(attribute.name, attribute.value, attribute.sourceSpan);\n    };\n    /**\n     * @param {?} text\n     * @param {?} parent\n     * @return {?}\n     */\n    NonBindableVisitor.prototype.visitText = function (text, parent) {\n        var /** @type {?} */ ngContentIndex = parent.findNgContentIndex(TEXT_CSS_SELECTOR);\n        return new TextAst(text.value, ngContentIndex, text.sourceSpan);\n    };\n    /**\n     * @param {?} expansion\n     * @param {?} context\n     * @return {?}\n     */\n    NonBindableVisitor.prototype.visitExpansion = function (expansion, context) { return expansion; };\n    /**\n     * @param {?} expansionCase\n     * @param {?} context\n     * @return {?}\n     */\n    NonBindableVisitor.prototype.visitExpansionCase = function (expansionCase, context) { return expansionCase; };\n    return NonBindableVisitor;\n}());\nvar ElementOrDirectiveRef = (function () {\n    /**\n     * @param {?} name\n     * @param {?} value\n     * @param {?} sourceSpan\n     */\n    function ElementOrDirectiveRef(name, value, sourceSpan) {\n        this.name = name;\n        this.value = value;\n        this.sourceSpan = sourceSpan;\n    }\n    return ElementOrDirectiveRef;\n}());\n/**\n * @param {?} classAttrValue\n * @return {?}\n */\nfunction splitClasses(classAttrValue) {\n    return classAttrValue.trim().split(/\\s+/g);\n}\nvar ElementContext = (function () {\n    /**\n     * @param {?} isTemplateElement\n     * @param {?} _ngContentIndexMatcher\n     * @param {?} _wildcardNgContentIndex\n     * @param {?} providerContext\n     */\n    function ElementContext(isTemplateElement, _ngContentIndexMatcher, _wildcardNgContentIndex, providerContext) {\n        this.isTemplateElement = isTemplateElement;\n        this._ngContentIndexMatcher = _ngContentIndexMatcher;\n        this._wildcardNgContentIndex = _wildcardNgContentIndex;\n        this.providerContext = providerContext;\n    }\n    /**\n     * @param {?} isTemplateElement\n     * @param {?} directives\n     * @param {?} providerContext\n     * @return {?}\n     */\n    ElementContext.create = function (isTemplateElement, directives, providerContext) {\n        var /** @type {?} */ matcher = new SelectorMatcher();\n        var /** @type {?} */ wildcardNgContentIndex = null;\n        var /** @type {?} */ component = directives.find(function (directive) { return directive.directive.isComponent; });\n        if (component) {\n            var /** @type {?} */ ngContentSelectors = component.directive.template.ngContentSelectors;\n            for (var /** @type {?} */ i = 0; i < ngContentSelectors.length; i++) {\n                var /** @type {?} */ selector = ngContentSelectors[i];\n                if (selector === '*') {\n                    wildcardNgContentIndex = i;\n                }\n                else {\n                    matcher.addSelectables(CssSelector.parse(ngContentSelectors[i]), i);\n                }\n            }\n        }\n        return new ElementContext(isTemplateElement, matcher, wildcardNgContentIndex, providerContext);\n    };\n    /**\n     * @param {?} selector\n     * @return {?}\n     */\n    ElementContext.prototype.findNgContentIndex = function (selector) {\n        var /** @type {?} */ ngContentIndices = [];\n        this._ngContentIndexMatcher.match(selector, function (selector, ngContentIndex) { ngContentIndices.push(ngContentIndex); });\n        ngContentIndices.sort();\n        if (this._wildcardNgContentIndex != null) {\n            ngContentIndices.push(this._wildcardNgContentIndex);\n        }\n        return ngContentIndices.length > 0 ? ngContentIndices[0] : null;\n    };\n    return ElementContext;\n}());\n/**\n * @param {?} elementName\n * @param {?} attributes\n * @return {?}\n */\nfunction createElementCssSelector(elementName, attributes) {\n    var /** @type {?} */ cssSelector = new CssSelector();\n    var /** @type {?} */ elNameNoNs = splitNsName(elementName)[1];\n    cssSelector.setElement(elNameNoNs);\n    for (var /** @type {?} */ i = 0; i < attributes.length; i++) {\n        var /** @type {?} */ attrName = attributes[i][0];\n        var /** @type {?} */ attrNameNoNs = splitNsName(attrName)[1];\n        var /** @type {?} */ attrValue = attributes[i][1];\n        cssSelector.addAttribute(attrNameNoNs, attrValue);\n        if (attrName.toLowerCase() == CLASS_ATTR) {\n            var /** @type {?} */ classes = splitClasses(attrValue);\n            classes.forEach(function (className) { return cssSelector.addClassName(className); });\n        }\n    }\n    return cssSelector;\n}\nvar EMPTY_ELEMENT_CONTEXT = new ElementContext(true, new SelectorMatcher(), null, null);\nvar NON_BINDABLE_VISITOR = new NonBindableVisitor();\n/**\n * @param {?} node\n * @return {?}\n */\nfunction _isEmptyTextNode(node) {\n    return node instanceof Text && node.value.trim().length == 0;\n}\n/**\n * @template T\n * @param {?} items\n * @return {?}\n */\nfunction removeSummaryDuplicates(items) {\n    var /** @type {?} */ map = new Map();\n    items.forEach(function (item) {\n        if (!map.get(item.type.reference)) {\n            map.set(item.type.reference, item);\n        }\n    });\n    return Array.from(map.values());\n}\n/**\n * @param {?} ast\n * @return {?}\n */\nfunction isEmptyExpression(ast) {\n    if (ast instanceof ASTWithSource) {\n        ast = ast.ast;\n    }\n    return ast instanceof EmptyExpr;\n}\n/**\n * @param {?} el\n * @param {?} enableLegacyTemplate\n * @param {?} reportDeprecation\n * @return {?}\n */\nfunction isTemplate(el, enableLegacyTemplate, reportDeprecation) {\n    var /** @type {?} */ tagNoNs = splitNsName(el.name)[1];\n    // `<ng-template>` is an angular construct and is lower case\n    if (tagNoNs === NG_TEMPLATE_ELEMENT)\n        return true;\n    // `<template>` is HTML and case insensitive\n    if (tagNoNs.toLowerCase() === TEMPLATE_ELEMENT) {\n        if (enableLegacyTemplate && tagNoNs.toLowerCase() === TEMPLATE_ELEMENT) {\n            reportDeprecation(TEMPLATE_ELEMENT_DEPRECATION_WARNING, el.sourceSpan);\n            return true;\n        }\n        return false;\n    }\n}\n/**\n * An interface for retrieving documents by URL that the compiler uses\n * to load templates.\n */\nvar ResourceLoader = (function () {\n    function ResourceLoader() {\n    }\n    /**\n     * @param {?} url\n     * @return {?}\n     */\n    ResourceLoader.prototype.get = function (url) { return null; };\n    return ResourceLoader;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Create a {\\@link UrlResolver} with no package prefix.\n * @return {?}\n */\nfunction createUrlResolverWithoutPackagePrefix() {\n    return new UrlResolver();\n}\n/**\n * @return {?}\n */\nfunction createOfflineCompileUrlResolver() {\n    return new UrlResolver('.');\n}\n/**\n * A default provider for {@link PACKAGE_ROOT_URL} that maps to '/'.\n */\nvar DEFAULT_PACKAGE_URL_PROVIDER = {\n    provide: PACKAGE_ROOT_URL,\n    useValue: '/'\n};\n/**\n * Used by the {\\@link Compiler} when resolving HTML and CSS template URLs.\n *\n * This class can be overridden by the application developer to create custom behavior.\n *\n * See {\\@link Compiler}\n *\n * ## Example\n *\n * {\\@example compiler/ts/url_resolver/url_resolver.ts region='url_resolver'}\n *\n * \\@security When compiling templates at runtime, you must\n * ensure that the entire template comes from a trusted source.\n * Attacker-controlled data introduced by a template could expose your\n * application to XSS risks. For more detail, see the [Security Guide](http://g.co/ng/security).\n */\nvar UrlResolver = (function () {\n    /**\n     * @param {?=} _packagePrefix\n     */\n    function UrlResolver(_packagePrefix) {\n        if (_packagePrefix === void 0) { _packagePrefix = null; }\n        this._packagePrefix = _packagePrefix;\n    }\n    /**\n     * Resolves the `url` given the `baseUrl`:\n     * - when the `url` is null, the `baseUrl` is returned,\n     * - if `url` is relative ('path/to/here', './path/to/here'), the resolved url is a combination of\n     * `baseUrl` and `url`,\n     * - if `url` is absolute (it has a scheme: 'http://', 'https://' or start with '/'), the `url` is\n     * returned as is (ignoring the `baseUrl`)\n     * @param {?} baseUrl\n     * @param {?} url\n     * @return {?}\n     */\n    UrlResolver.prototype.resolve = function (baseUrl, url) {\n        var /** @type {?} */ resolvedUrl = url;\n        if (baseUrl != null && baseUrl.length > 0) {\n            resolvedUrl = _resolveUrl(baseUrl, resolvedUrl);\n        }\n        var /** @type {?} */ resolvedParts = _split(resolvedUrl);\n        var /** @type {?} */ prefix = this._packagePrefix;\n        if (prefix != null && resolvedParts != null &&\n            resolvedParts[_ComponentIndex.Scheme] == 'package') {\n            var /** @type {?} */ path = resolvedParts[_ComponentIndex.Path];\n            prefix = prefix.replace(/\\/+$/, '');\n            path = path.replace(/^\\/+/, '');\n            return prefix + \"/\" + path;\n        }\n        return resolvedUrl;\n    };\n    return UrlResolver;\n}());\nUrlResolver.decorators = [\n    { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nUrlResolver.ctorParameters = function () { return [\n    { type: undefined, decorators: [{ type: Inject, args: [PACKAGE_ROOT_URL,] },] },\n]; };\n/**\n * Extract the scheme of a URL.\n * @param {?} url\n * @return {?}\n */\nfunction getUrlScheme(url) {\n    var /** @type {?} */ match = _split(url);\n    return (match && match[_ComponentIndex.Scheme]) || '';\n}\n/**\n * Builds a URI string from already-encoded parts.\n *\n * No encoding is performed.  Any component may be omitted as either null or\n * undefined.\n *\n * @param {?=} opt_scheme The scheme such as 'http'.\n * @param {?=} opt_userInfo The user name before the '\\@'.\n * @param {?=} opt_domain The domain such as 'www.google.com', already\n *     URI-encoded.\n * @param {?=} opt_port The port number.\n * @param {?=} opt_path The path, already URI-encoded.  If it is not\n *     empty, it must begin with a slash.\n * @param {?=} opt_queryData The URI-encoded query data.\n * @param {?=} opt_fragment The URI-encoded fragment identifier.\n * @return {?} The fully combined URI.\n */\nfunction _buildFromEncodedParts(opt_scheme, opt_userInfo, opt_domain, opt_port, opt_path, opt_queryData, opt_fragment) {\n    var /** @type {?} */ out = [];\n    if (opt_scheme != null) {\n        out.push(opt_scheme + ':');\n    }\n    if (opt_domain != null) {\n        out.push('//');\n        if (opt_userInfo != null) {\n            out.push(opt_userInfo + '@');\n        }\n        out.push(opt_domain);\n        if (opt_port != null) {\n            out.push(':' + opt_port);\n        }\n    }\n    if (opt_path != null) {\n        out.push(opt_path);\n    }\n    if (opt_queryData != null) {\n        out.push('?' + opt_queryData);\n    }\n    if (opt_fragment != null) {\n        out.push('#' + opt_fragment);\n    }\n    return out.join('');\n}\n/**\n * A regular expression for breaking a URI into its component parts.\n *\n * {\\@link http://www.gbiv.com/protocols/uri/rfc/rfc3986.html#RFC2234} says\n * As the \"first-match-wins\" algorithm is identical to the \"greedy\"\n * disambiguation method used by POSIX regular expressions, it is natural and\n * commonplace to use a regular expression for parsing the potential five\n * components of a URI reference.\n *\n * The following line is the regular expression for breaking-down a\n * well-formed URI reference into its components.\n *\n * <pre>\n * ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?\n *  12            3  4          5       6  7        8 9\n * </pre>\n *\n * The numbers in the second line above are only to assist readability; they\n * indicate the reference points for each subexpression (i.e., each paired\n * parenthesis). We refer to the value matched for subexpression <n> as $<n>.\n * For example, matching the above expression to\n * <pre>\n *     http://www.ics.uci.edu/pub/ietf/uri/#Related\n * </pre>\n * results in the following subexpression matches:\n * <pre>\n *    $1 = http:\n *    $2 = http\n *    $3 = //www.ics.uci.edu\n *    $4 = www.ics.uci.edu\n *    $5 = /pub/ietf/uri/\n *    $6 = <undefined>\n *    $7 = <undefined>\n *    $8 = #Related\n *    $9 = Related\n * </pre>\n * where <undefined> indicates that the component is not present, as is the\n * case for the query component in the above example. Therefore, we can\n * determine the value of the five components as\n * <pre>\n *    scheme    = $2\n *    authority = $4\n *    path      = $5\n *    query     = $7\n *    fragment  = $9\n * </pre>\n *\n * The regular expression has been modified slightly to expose the\n * userInfo, domain, and port separately from the authority.\n * The modified version yields\n * <pre>\n *    $1 = http              scheme\n *    $2 = <undefined>       userInfo -\\\n *    $3 = www.ics.uci.edu   domain     | authority\n *    $4 = <undefined>       port     -/\n *    $5 = /pub/ietf/uri/    path\n *    $6 = <undefined>       query without ?\n *    $7 = Related           fragment without #\n * </pre>\n * \\@internal\n */\nvar _splitRe = new RegExp('^' +\n    '(?:' +\n    '([^:/?#.]+)' +\n    // used by other URL parts such as :,\n    // ?, /, #, and .\n    ':)?' +\n    '(?://' +\n    '(?:([^/?#]*)@)?' +\n    '([\\\\w\\\\d\\\\-\\\\u0100-\\\\uffff.%]*)' +\n    // digits, dashes, dots, percent\n    // escapes, and unicode characters.\n    '(?::([0-9]+))?' +\n    ')?' +\n    '([^?#]+)?' +\n    '(?:\\\\?([^#]*))?' +\n    '(?:#(.*))?' +\n    '$');\nvar _ComponentIndex = {};\n_ComponentIndex.Scheme = 1;\n_ComponentIndex.UserInfo = 2;\n_ComponentIndex.Domain = 3;\n_ComponentIndex.Port = 4;\n_ComponentIndex.Path = 5;\n_ComponentIndex.QueryData = 6;\n_ComponentIndex.Fragment = 7;\n_ComponentIndex[_ComponentIndex.Scheme] = \"Scheme\";\n_ComponentIndex[_ComponentIndex.UserInfo] = \"UserInfo\";\n_ComponentIndex[_ComponentIndex.Domain] = \"Domain\";\n_ComponentIndex[_ComponentIndex.Port] = \"Port\";\n_ComponentIndex[_ComponentIndex.Path] = \"Path\";\n_ComponentIndex[_ComponentIndex.QueryData] = \"QueryData\";\n_ComponentIndex[_ComponentIndex.Fragment] = \"Fragment\";\n/**\n * Splits a URI into its component parts.\n *\n * Each component can be accessed via the component indices; for example:\n * <pre>\n * goog.uri.utils.split(someStr)[goog.uri.utils.CompontentIndex.QUERY_DATA];\n * </pre>\n *\n * @param {?} uri The URI string to examine.\n * @return {?} Each component still URI-encoded.\n *     Each component that is present will contain the encoded value, whereas\n *     components that are not present will be undefined or empty, depending\n *     on the browser's regular expression implementation.  Never null, since\n *     arbitrary strings may still look like path names.\n */\nfunction _split(uri) {\n    return uri.match(_splitRe);\n}\n/**\n * Removes dot segments in given path component, as described in\n * RFC 3986, section 5.2.4.\n *\n * @param {?} path A non-empty path component.\n * @return {?} Path component with removed dot segments.\n */\nfunction _removeDotSegments(path) {\n    if (path == '/')\n        return '/';\n    var /** @type {?} */ leadingSlash = path[0] == '/' ? '/' : '';\n    var /** @type {?} */ trailingSlash = path[path.length - 1] === '/' ? '/' : '';\n    var /** @type {?} */ segments = path.split('/');\n    var /** @type {?} */ out = [];\n    var /** @type {?} */ up = 0;\n    for (var /** @type {?} */ pos = 0; pos < segments.length; pos++) {\n        var /** @type {?} */ segment = segments[pos];\n        switch (segment) {\n            case '':\n            case '.':\n                break;\n            case '..':\n                if (out.length > 0) {\n                    out.pop();\n                }\n                else {\n                    up++;\n                }\n                break;\n            default:\n                out.push(segment);\n        }\n    }\n    if (leadingSlash == '') {\n        while (up-- > 0) {\n            out.unshift('..');\n        }\n        if (out.length === 0)\n            out.push('.');\n    }\n    return leadingSlash + out.join('/') + trailingSlash;\n}\n/**\n * Takes an array of the parts from split and canonicalizes the path part\n * and then joins all the parts.\n * @param {?} parts\n * @return {?}\n */\nfunction _joinAndCanonicalizePath(parts) {\n    var /** @type {?} */ path = parts[_ComponentIndex.Path];\n    path = path == null ? '' : _removeDotSegments(path);\n    parts[_ComponentIndex.Path] = path;\n    return _buildFromEncodedParts(parts[_ComponentIndex.Scheme], parts[_ComponentIndex.UserInfo], parts[_ComponentIndex.Domain], parts[_ComponentIndex.Port], path, parts[_ComponentIndex.QueryData], parts[_ComponentIndex.Fragment]);\n}\n/**\n * Resolves a URL.\n * @param {?} base The URL acting as the base URL.\n * @param {?} url\n * @return {?}\n */\nfunction _resolveUrl(base, url) {\n    var /** @type {?} */ parts = _split(encodeURI(url));\n    var /** @type {?} */ baseParts = _split(base);\n    if (parts[_ComponentIndex.Scheme] != null) {\n        return _joinAndCanonicalizePath(parts);\n    }\n    else {\n        parts[_ComponentIndex.Scheme] = baseParts[_ComponentIndex.Scheme];\n    }\n    for (var /** @type {?} */ i = _ComponentIndex.Scheme; i <= _ComponentIndex.Port; i++) {\n        if (parts[i] == null) {\n            parts[i] = baseParts[i];\n        }\n    }\n    if (parts[_ComponentIndex.Path][0] == '/') {\n        return _joinAndCanonicalizePath(parts);\n    }\n    var /** @type {?} */ path = baseParts[_ComponentIndex.Path];\n    if (path == null)\n        path = '/';\n    var /** @type {?} */ index = path.lastIndexOf('/');\n    path = path.substring(0, index + 1) + parts[_ComponentIndex.Path];\n    parts[_ComponentIndex.Path] = path;\n    return _joinAndCanonicalizePath(parts);\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar DirectiveNormalizer = (function () {\n    /**\n     * @param {?} _resourceLoader\n     * @param {?} _urlResolver\n     * @param {?} _htmlParser\n     * @param {?} _config\n     */\n    function DirectiveNormalizer(_resourceLoader, _urlResolver, _htmlParser, _config) {\n        this._resourceLoader = _resourceLoader;\n        this._urlResolver = _urlResolver;\n        this._htmlParser = _htmlParser;\n        this._config = _config;\n        this._resourceLoaderCache = new Map();\n    }\n    /**\n     * @return {?}\n     */\n    DirectiveNormalizer.prototype.clearCache = function () { this._resourceLoaderCache.clear(); };\n    /**\n     * @param {?} normalizedDirective\n     * @return {?}\n     */\n    DirectiveNormalizer.prototype.clearCacheFor = function (normalizedDirective) {\n        var _this = this;\n        if (!normalizedDirective.isComponent) {\n            return;\n        }\n        this._resourceLoaderCache.delete(normalizedDirective.template.templateUrl);\n        normalizedDirective.template.externalStylesheets.forEach(function (stylesheet) { _this._resourceLoaderCache.delete(stylesheet.moduleUrl); });\n    };\n    /**\n     * @param {?} url\n     * @return {?}\n     */\n    DirectiveNormalizer.prototype._fetch = function (url) {\n        var /** @type {?} */ result = this._resourceLoaderCache.get(url);\n        if (!result) {\n            result = this._resourceLoader.get(url);\n            this._resourceLoaderCache.set(url, result);\n        }\n        return result;\n    };\n    /**\n     * @param {?} prenormData\n     * @return {?}\n     */\n    DirectiveNormalizer.prototype.normalizeTemplate = function (prenormData) {\n        var _this = this;\n        var /** @type {?} */ normalizedTemplateSync = null;\n        var /** @type {?} */ normalizedTemplateAsync;\n        if (prenormData.template != null) {\n            if (prenormData.templateUrl != null) {\n                throw syntaxError(\"'\" + ɵstringify(prenormData.componentType) + \"' component cannot define both template and templateUrl\");\n            }\n            if (typeof prenormData.template !== 'string') {\n                throw syntaxError(\"The template specified for component \" + ɵstringify(prenormData.componentType) + \" is not a string\");\n            }\n            normalizedTemplateSync = this.normalizeTemplateSync(prenormData);\n            normalizedTemplateAsync = Promise.resolve(normalizedTemplateSync);\n        }\n        else if (prenormData.templateUrl) {\n            if (typeof prenormData.templateUrl !== 'string') {\n                throw syntaxError(\"The templateUrl specified for component \" + ɵstringify(prenormData.componentType) + \" is not a string\");\n            }\n            normalizedTemplateAsync = this.normalizeTemplateAsync(prenormData);\n        }\n        else {\n            throw syntaxError(\"No template specified for component \" + ɵstringify(prenormData.componentType));\n        }\n        if (normalizedTemplateSync && normalizedTemplateSync.styleUrls.length === 0) {\n            // sync case\n            return new SyncAsyncResult(normalizedTemplateSync);\n        }\n        else {\n            // async case\n            return new SyncAsyncResult(null, normalizedTemplateAsync.then(function (normalizedTemplate) { return _this.normalizeExternalStylesheets(normalizedTemplate); }));\n        }\n    };\n    /**\n     * @param {?} prenomData\n     * @return {?}\n     */\n    DirectiveNormalizer.prototype.normalizeTemplateSync = function (prenomData) {\n        return this.normalizeLoadedTemplate(prenomData, prenomData.template, prenomData.moduleUrl);\n    };\n    /**\n     * @param {?} prenomData\n     * @return {?}\n     */\n    DirectiveNormalizer.prototype.normalizeTemplateAsync = function (prenomData) {\n        var _this = this;\n        var /** @type {?} */ templateUrl = this._urlResolver.resolve(prenomData.moduleUrl, prenomData.templateUrl);\n        return this._fetch(templateUrl)\n            .then(function (value) { return _this.normalizeLoadedTemplate(prenomData, value, templateUrl); });\n    };\n    /**\n     * @param {?} prenormData\n     * @param {?} template\n     * @param {?} templateAbsUrl\n     * @return {?}\n     */\n    DirectiveNormalizer.prototype.normalizeLoadedTemplate = function (prenormData, template, templateAbsUrl) {\n        var /** @type {?} */ isInline = !!prenormData.template;\n        var /** @type {?} */ interpolationConfig = InterpolationConfig.fromArray(prenormData.interpolation);\n        var /** @type {?} */ rootNodesAndErrors = this._htmlParser.parse(template, templateSourceUrl({ reference: prenormData.ngModuleType }, { type: { reference: prenormData.componentType } }, { isInline: isInline, templateUrl: templateAbsUrl }), true, interpolationConfig);\n        if (rootNodesAndErrors.errors.length > 0) {\n            var /** @type {?} */ errorString = rootNodesAndErrors.errors.join('\\n');\n            throw syntaxError(\"Template parse errors:\\n\" + errorString);\n        }\n        var /** @type {?} */ templateMetadataStyles = this.normalizeStylesheet(new CompileStylesheetMetadata({\n            styles: prenormData.styles,\n            styleUrls: prenormData.styleUrls,\n            moduleUrl: prenormData.moduleUrl\n        }));\n        var /** @type {?} */ visitor = new TemplatePreparseVisitor();\n        visitAll(visitor, rootNodesAndErrors.rootNodes);\n        var /** @type {?} */ templateStyles = this.normalizeStylesheet(new CompileStylesheetMetadata({ styles: visitor.styles, styleUrls: visitor.styleUrls, moduleUrl: templateAbsUrl }));\n        var /** @type {?} */ encapsulation = prenormData.encapsulation;\n        if (encapsulation == null) {\n            encapsulation = this._config.defaultEncapsulation;\n        }\n        var /** @type {?} */ styles = templateMetadataStyles.styles.concat(templateStyles.styles);\n        var /** @type {?} */ styleUrls = templateMetadataStyles.styleUrls.concat(templateStyles.styleUrls);\n        if (encapsulation === ViewEncapsulation.Emulated && styles.length === 0 &&\n            styleUrls.length === 0) {\n            encapsulation = ViewEncapsulation.None;\n        }\n        return new CompileTemplateMetadata({\n            encapsulation: encapsulation,\n            template: template,\n            templateUrl: templateAbsUrl, styles: styles, styleUrls: styleUrls,\n            ngContentSelectors: visitor.ngContentSelectors,\n            animations: prenormData.animations,\n            interpolation: prenormData.interpolation, isInline: isInline\n        });\n    };\n    /**\n     * @param {?} templateMeta\n     * @return {?}\n     */\n    DirectiveNormalizer.prototype.normalizeExternalStylesheets = function (templateMeta) {\n        return this._loadMissingExternalStylesheets(templateMeta.styleUrls)\n            .then(function (externalStylesheets) { return new CompileTemplateMetadata({\n            encapsulation: templateMeta.encapsulation,\n            template: templateMeta.template,\n            templateUrl: templateMeta.templateUrl,\n            styles: templateMeta.styles,\n            styleUrls: templateMeta.styleUrls,\n            externalStylesheets: externalStylesheets,\n            ngContentSelectors: templateMeta.ngContentSelectors,\n            animations: templateMeta.animations,\n            interpolation: templateMeta.interpolation,\n            isInline: templateMeta.isInline,\n        }); });\n    };\n    /**\n     * @param {?} styleUrls\n     * @param {?=} loadedStylesheets\n     * @return {?}\n     */\n    DirectiveNormalizer.prototype._loadMissingExternalStylesheets = function (styleUrls, loadedStylesheets) {\n        var _this = this;\n        if (loadedStylesheets === void 0) { loadedStylesheets = new Map(); }\n        return Promise\n            .all(styleUrls.filter(function (styleUrl) { return !loadedStylesheets.has(styleUrl); })\n            .map(function (styleUrl) { return _this._fetch(styleUrl).then(function (loadedStyle) {\n            var /** @type {?} */ stylesheet = _this.normalizeStylesheet(new CompileStylesheetMetadata({ styles: [loadedStyle], moduleUrl: styleUrl }));\n            loadedStylesheets.set(styleUrl, stylesheet);\n            return _this._loadMissingExternalStylesheets(stylesheet.styleUrls, loadedStylesheets);\n        }); }))\n            .then(function (_) { return Array.from(loadedStylesheets.values()); });\n    };\n    /**\n     * @param {?} stylesheet\n     * @return {?}\n     */\n    DirectiveNormalizer.prototype.normalizeStylesheet = function (stylesheet) {\n        var _this = this;\n        var /** @type {?} */ allStyleUrls = stylesheet.styleUrls.filter(isStyleUrlResolvable)\n            .map(function (url) { return _this._urlResolver.resolve(stylesheet.moduleUrl, url); });\n        var /** @type {?} */ allStyles = stylesheet.styles.map(function (style$$1) {\n            var /** @type {?} */ styleWithImports = extractStyleUrls(_this._urlResolver, stylesheet.moduleUrl, style$$1);\n            allStyleUrls.push.apply(allStyleUrls, styleWithImports.styleUrls);\n            return styleWithImports.style;\n        });\n        return new CompileStylesheetMetadata({ styles: allStyles, styleUrls: allStyleUrls, moduleUrl: stylesheet.moduleUrl });\n    };\n    return DirectiveNormalizer;\n}());\nDirectiveNormalizer.decorators = [\n    { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nDirectiveNormalizer.ctorParameters = function () { return [\n    { type: ResourceLoader, },\n    { type: UrlResolver, },\n    { type: HtmlParser, },\n    { type: CompilerConfig, },\n]; };\nvar TemplatePreparseVisitor = (function () {\n    function TemplatePreparseVisitor() {\n        this.ngContentSelectors = [];\n        this.styles = [];\n        this.styleUrls = [];\n        this.ngNonBindableStackCount = 0;\n    }\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    TemplatePreparseVisitor.prototype.visitElement = function (ast, context) {\n        var /** @type {?} */ preparsedElement = preparseElement(ast);\n        switch (preparsedElement.type) {\n            case PreparsedElementType.NG_CONTENT:\n                if (this.ngNonBindableStackCount === 0) {\n                    this.ngContentSelectors.push(preparsedElement.selectAttr);\n                }\n                break;\n            case PreparsedElementType.STYLE:\n                var /** @type {?} */ textContent_1 = '';\n                ast.children.forEach(function (child) {\n                    if (child instanceof Text) {\n                        textContent_1 += child.value;\n                    }\n                });\n                this.styles.push(textContent_1);\n                break;\n            case PreparsedElementType.STYLESHEET:\n                this.styleUrls.push(preparsedElement.hrefAttr);\n                break;\n            default:\n                break;\n        }\n        if (preparsedElement.nonBindable) {\n            this.ngNonBindableStackCount++;\n        }\n        visitAll(this, ast.children);\n        if (preparsedElement.nonBindable) {\n            this.ngNonBindableStackCount--;\n        }\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    TemplatePreparseVisitor.prototype.visitExpansion = function (ast, context) { visitAll(this, ast.cases); };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    TemplatePreparseVisitor.prototype.visitExpansionCase = function (ast, context) {\n        visitAll(this, ast.expression);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    TemplatePreparseVisitor.prototype.visitComment = function (ast, context) { return null; };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    TemplatePreparseVisitor.prototype.visitAttribute = function (ast, context) { return null; };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    TemplatePreparseVisitor.prototype.visitText = function (ast, context) { return null; };\n    return TemplatePreparseVisitor;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar __assign = (undefined && undefined.__assign) || Object.assign || function (t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n        s = arguments[i];\n        for (var p in s)\n            if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n    }\n    return t;\n};\nvar DirectiveResolver = (function () {\n    /**\n     * @param {?=} _reflector\n     */\n    function DirectiveResolver(_reflector) {\n        if (_reflector === void 0) { _reflector = ɵreflector; }\n        this._reflector = _reflector;\n    }\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    DirectiveResolver.prototype.isDirective = function (type) {\n        var /** @type {?} */ typeMetadata = this._reflector.annotations(resolveForwardRef(type));\n        return typeMetadata && typeMetadata.some(isDirectiveMetadata);\n    };\n    /**\n     * Return {\\@link Directive} for a given `Type`.\n     * @param {?} type\n     * @param {?=} throwIfNotFound\n     * @return {?}\n     */\n    DirectiveResolver.prototype.resolve = function (type, throwIfNotFound) {\n        if (throwIfNotFound === void 0) { throwIfNotFound = true; }\n        var /** @type {?} */ typeMetadata = this._reflector.annotations(resolveForwardRef(type));\n        if (typeMetadata) {\n            var /** @type {?} */ metadata = findLast(typeMetadata, isDirectiveMetadata);\n            if (metadata) {\n                var /** @type {?} */ propertyMetadata = this._reflector.propMetadata(type);\n                return this._mergeWithPropertyMetadata(metadata, propertyMetadata, type);\n            }\n        }\n        if (throwIfNotFound) {\n            throw new Error(\"No Directive annotation found on \" + ɵstringify(type));\n        }\n        return null;\n    };\n    /**\n     * @param {?} dm\n     * @param {?} propertyMetadata\n     * @param {?} directiveType\n     * @return {?}\n     */\n    DirectiveResolver.prototype._mergeWithPropertyMetadata = function (dm, propertyMetadata, directiveType) {\n        var /** @type {?} */ inputs = [];\n        var /** @type {?} */ outputs = [];\n        var /** @type {?} */ host = {};\n        var /** @type {?} */ queries = {};\n        Object.keys(propertyMetadata).forEach(function (propName) {\n            var /** @type {?} */ input = findLast(propertyMetadata[propName], function (a) { return a instanceof Input; });\n            if (input) {\n                if (input.bindingPropertyName) {\n                    inputs.push(propName + \": \" + input.bindingPropertyName);\n                }\n                else {\n                    inputs.push(propName);\n                }\n            }\n            var /** @type {?} */ output = findLast(propertyMetadata[propName], function (a) { return a instanceof Output; });\n            if (output) {\n                if (output.bindingPropertyName) {\n                    outputs.push(propName + \": \" + output.bindingPropertyName);\n                }\n                else {\n                    outputs.push(propName);\n                }\n            }\n            var /** @type {?} */ hostBindings = propertyMetadata[propName].filter(function (a) { return a && a instanceof HostBinding; });\n            hostBindings.forEach(function (hostBinding) {\n                if (hostBinding.hostPropertyName) {\n                    var /** @type {?} */ startWith = hostBinding.hostPropertyName[0];\n                    if (startWith === '(') {\n                        throw new Error(\"@HostBinding can not bind to events. Use @HostListener instead.\");\n                    }\n                    else if (startWith === '[') {\n                        throw new Error(\"@HostBinding parameter should be a property name, 'class.<name>', or 'attr.<name>'.\");\n                    }\n                    host[\"[\" + hostBinding.hostPropertyName + \"]\"] = propName;\n                }\n                else {\n                    host[\"[\" + propName + \"]\"] = propName;\n                }\n            });\n            var /** @type {?} */ hostListeners = propertyMetadata[propName].filter(function (a) { return a && a instanceof HostListener; });\n            hostListeners.forEach(function (hostListener) {\n                var /** @type {?} */ args = hostListener.args || [];\n                host[\"(\" + hostListener.eventName + \")\"] = propName + \"(\" + args.join(',') + \")\";\n            });\n            var /** @type {?} */ query = findLast(propertyMetadata[propName], function (a) { return a instanceof Query; });\n            if (query) {\n                queries[propName] = query;\n            }\n        });\n        return this._merge(dm, inputs, outputs, host, queries, directiveType);\n    };\n    /**\n     * @param {?} def\n     * @return {?}\n     */\n    DirectiveResolver.prototype._extractPublicName = function (def) { return splitAtColon(def, [null, def])[1].trim(); };\n    /**\n     * @param {?} bindings\n     * @return {?}\n     */\n    DirectiveResolver.prototype._dedupeBindings = function (bindings) {\n        var /** @type {?} */ names = new Set();\n        var /** @type {?} */ reversedResult = [];\n        // go last to first to allow later entries to overwrite previous entries\n        for (var /** @type {?} */ i = bindings.length - 1; i >= 0; i--) {\n            var /** @type {?} */ binding = bindings[i];\n            var /** @type {?} */ name = this._extractPublicName(binding);\n            if (!names.has(name)) {\n                names.add(name);\n                reversedResult.push(binding);\n            }\n        }\n        return reversedResult.reverse();\n    };\n    /**\n     * @param {?} directive\n     * @param {?} inputs\n     * @param {?} outputs\n     * @param {?} host\n     * @param {?} queries\n     * @param {?} directiveType\n     * @return {?}\n     */\n    DirectiveResolver.prototype._merge = function (directive, inputs, outputs, host, queries, directiveType) {\n        var /** @type {?} */ mergedInputs = this._dedupeBindings(directive.inputs ? directive.inputs.concat(inputs) : inputs);\n        var /** @type {?} */ mergedOutputs = this._dedupeBindings(directive.outputs ? directive.outputs.concat(outputs) : outputs);\n        var /** @type {?} */ mergedHost = directive.host ? __assign({}, directive.host, host) : host;\n        var /** @type {?} */ mergedQueries = directive.queries ? __assign({}, directive.queries, queries) : queries;\n        if (directive instanceof Component) {\n            return new Component({\n                selector: directive.selector,\n                inputs: mergedInputs,\n                outputs: mergedOutputs,\n                host: mergedHost,\n                exportAs: directive.exportAs,\n                moduleId: directive.moduleId,\n                queries: mergedQueries,\n                changeDetection: directive.changeDetection,\n                providers: directive.providers,\n                viewProviders: directive.viewProviders,\n                entryComponents: directive.entryComponents,\n                template: directive.template,\n                templateUrl: directive.templateUrl,\n                styles: directive.styles,\n                styleUrls: directive.styleUrls,\n                encapsulation: directive.encapsulation,\n                animations: directive.animations,\n                interpolation: directive.interpolation\n            });\n        }\n        else {\n            return new Directive({\n                selector: directive.selector,\n                inputs: mergedInputs,\n                outputs: mergedOutputs,\n                host: mergedHost,\n                exportAs: directive.exportAs,\n                queries: mergedQueries,\n                providers: directive.providers\n            });\n        }\n    };\n    return DirectiveResolver;\n}());\nDirectiveResolver.decorators = [\n    { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nDirectiveResolver.ctorParameters = function () { return [\n    { type: ɵReflectorReader, },\n]; };\n/**\n * @param {?} type\n * @return {?}\n */\nfunction isDirectiveMetadata(type) {\n    return type instanceof Directive;\n}\n/**\n * @template T\n * @param {?} arr\n * @param {?} condition\n * @return {?}\n */\nfunction findLast(arr, condition) {\n    for (var /** @type {?} */ i = arr.length - 1; i >= 0; i--) {\n        if (condition(arr[i])) {\n            return arr[i];\n        }\n    }\n    return 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 */\nvar STRIP_SRC_FILE_SUFFIXES = /(\\.ts|\\.d\\.ts|\\.js|\\.jsx|\\.tsx)$/;\nvar NG_FACTORY = /\\.ngfactory\\./;\n/**\n * @param {?} filePath\n * @return {?}\n */\nfunction ngfactoryFilePath(filePath) {\n    var /** @type {?} */ urlWithSuffix = splitTypescriptSuffix(filePath);\n    return urlWithSuffix[0] + \".ngfactory\" + urlWithSuffix[1];\n}\n/**\n * @param {?} filePath\n * @return {?}\n */\nfunction stripNgFactory(filePath) {\n    return filePath.replace(NG_FACTORY, '.');\n}\n/**\n * @param {?} filePath\n * @return {?}\n */\nfunction isNgFactoryFile(filePath) {\n    return NG_FACTORY.test(filePath);\n}\n/**\n * @param {?} path\n * @return {?}\n */\nfunction splitTypescriptSuffix(path) {\n    if (path.endsWith('.d.ts')) {\n        return [path.slice(0, -5), '.ts'];\n    }\n    var /** @type {?} */ lastDot = path.lastIndexOf('.');\n    if (lastDot !== -1) {\n        return [path.substring(0, lastDot), path.substring(lastDot)];\n    }\n    return [path, ''];\n}\n/**\n * @param {?} fileName\n * @return {?}\n */\nfunction summaryFileName(fileName) {\n    var /** @type {?} */ fileNameWithoutSuffix = fileName.replace(STRIP_SRC_FILE_SUFFIXES, '');\n    return fileNameWithoutSuffix + \".ngsummary.json\";\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @param {?} hook\n * @param {?} token\n * @return {?}\n */\nfunction hasLifecycleHook(hook, token) {\n    return ɵreflector.hasLifecycleHook(token, getHookName(hook));\n}\n/**\n * @param {?} hook\n * @return {?}\n */\nfunction getHookName(hook) {\n    switch (hook) {\n        case ɵLifecycleHooks.OnInit:\n            return 'ngOnInit';\n        case ɵLifecycleHooks.OnDestroy:\n            return 'ngOnDestroy';\n        case ɵLifecycleHooks.DoCheck:\n            return 'ngDoCheck';\n        case ɵLifecycleHooks.OnChanges:\n            return 'ngOnChanges';\n        case ɵLifecycleHooks.AfterContentInit:\n            return 'ngAfterContentInit';\n        case ɵLifecycleHooks.AfterContentChecked:\n            return 'ngAfterContentChecked';\n        case ɵLifecycleHooks.AfterViewInit:\n            return 'ngAfterViewInit';\n        case ɵLifecycleHooks.AfterViewChecked:\n            return 'ngAfterViewChecked';\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 * @param {?} obj\n * @return {?}\n */\nfunction _isNgModuleMetadata(obj) {\n    return obj instanceof NgModule;\n}\n/**\n * Resolves types to {\\@link NgModule}.\n */\nvar NgModuleResolver = (function () {\n    /**\n     * @param {?=} _reflector\n     */\n    function NgModuleResolver(_reflector) {\n        if (_reflector === void 0) { _reflector = ɵreflector; }\n        this._reflector = _reflector;\n    }\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    NgModuleResolver.prototype.isNgModule = function (type) { return this._reflector.annotations(type).some(_isNgModuleMetadata); };\n    /**\n     * @param {?} type\n     * @param {?=} throwIfNotFound\n     * @return {?}\n     */\n    NgModuleResolver.prototype.resolve = function (type, throwIfNotFound) {\n        if (throwIfNotFound === void 0) { throwIfNotFound = true; }\n        var /** @type {?} */ ngModuleMeta = findLast(this._reflector.annotations(type), _isNgModuleMetadata);\n        if (ngModuleMeta) {\n            return ngModuleMeta;\n        }\n        else {\n            if (throwIfNotFound) {\n                throw new Error(\"No NgModule metadata found for '\" + ɵstringify(type) + \"'.\");\n            }\n            return null;\n        }\n    };\n    return NgModuleResolver;\n}());\nNgModuleResolver.decorators = [\n    { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nNgModuleResolver.ctorParameters = function () { return [\n    { type: ɵReflectorReader, },\n]; };\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @param {?} type\n * @return {?}\n */\nfunction _isPipeMetadata(type) {\n    return type instanceof Pipe;\n}\n/**\n * Resolve a `Type` for {\\@link Pipe}.\n *\n * This interface can be overridden by the application developer to create custom behavior.\n *\n * See {\\@link Compiler}\n */\nvar PipeResolver = (function () {\n    /**\n     * @param {?=} _reflector\n     */\n    function PipeResolver(_reflector) {\n        if (_reflector === void 0) { _reflector = ɵreflector; }\n        this._reflector = _reflector;\n    }\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    PipeResolver.prototype.isPipe = function (type) {\n        var /** @type {?} */ typeMetadata = this._reflector.annotations(resolveForwardRef(type));\n        return typeMetadata && typeMetadata.some(_isPipeMetadata);\n    };\n    /**\n     * Return {\\@link Pipe} for a given `Type`.\n     * @param {?} type\n     * @param {?=} throwIfNotFound\n     * @return {?}\n     */\n    PipeResolver.prototype.resolve = function (type, throwIfNotFound) {\n        if (throwIfNotFound === void 0) { throwIfNotFound = true; }\n        var /** @type {?} */ metas = this._reflector.annotations(resolveForwardRef(type));\n        if (metas) {\n            var /** @type {?} */ annotation = findLast(metas, _isPipeMetadata);\n            if (annotation) {\n                return annotation;\n            }\n        }\n        if (throwIfNotFound) {\n            throw new Error(\"No Pipe decorator found on \" + ɵstringify(type));\n        }\n        return null;\n    };\n    return PipeResolver;\n}());\nPipeResolver.decorators = [\n    { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nPipeResolver.ctorParameters = function () { return [\n    { type: ɵReflectorReader, },\n]; };\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar SummaryResolver = (function () {\n    function SummaryResolver() {\n    }\n    /**\n     * @param {?} fileName\n     * @return {?}\n     */\n    SummaryResolver.prototype.isLibraryFile = function (fileName) { return false; };\n    ;\n    /**\n     * @param {?} fileName\n     * @return {?}\n     */\n    SummaryResolver.prototype.getLibraryFileName = function (fileName) { return null; };\n    /**\n     * @param {?} reference\n     * @return {?}\n     */\n    SummaryResolver.prototype.resolveSummary = function (reference) { return null; };\n    ;\n    /**\n     * @param {?} filePath\n     * @return {?}\n     */\n    SummaryResolver.prototype.getSymbolsOf = function (filePath) { return []; };\n    /**\n     * @param {?} reference\n     * @return {?}\n     */\n    SummaryResolver.prototype.getImportAs = function (reference) { return reference; };\n    return SummaryResolver;\n}());\nSummaryResolver.decorators = [\n    { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nSummaryResolver.ctorParameters = function () { return []; };\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar ERROR_COLLECTOR_TOKEN = new InjectionToken('ErrorCollector');\nvar CompileMetadataResolver = (function () {\n    /**\n     * @param {?} _config\n     * @param {?} _ngModuleResolver\n     * @param {?} _directiveResolver\n     * @param {?} _pipeResolver\n     * @param {?} _summaryResolver\n     * @param {?} _schemaRegistry\n     * @param {?} _directiveNormalizer\n     * @param {?} _console\n     * @param {?} _staticSymbolCache\n     * @param {?=} _reflector\n     * @param {?=} _errorCollector\n     */\n    function CompileMetadataResolver(_config, _ngModuleResolver, _directiveResolver, _pipeResolver, _summaryResolver, _schemaRegistry, _directiveNormalizer, _console, _staticSymbolCache, _reflector, _errorCollector) {\n        if (_reflector === void 0) { _reflector = ɵreflector; }\n        this._config = _config;\n        this._ngModuleResolver = _ngModuleResolver;\n        this._directiveResolver = _directiveResolver;\n        this._pipeResolver = _pipeResolver;\n        this._summaryResolver = _summaryResolver;\n        this._schemaRegistry = _schemaRegistry;\n        this._directiveNormalizer = _directiveNormalizer;\n        this._console = _console;\n        this._staticSymbolCache = _staticSymbolCache;\n        this._reflector = _reflector;\n        this._errorCollector = _errorCollector;\n        this._nonNormalizedDirectiveCache = new Map();\n        this._directiveCache = new Map();\n        this._summaryCache = new Map();\n        this._pipeCache = new Map();\n        this._ngModuleCache = new Map();\n        this._ngModuleOfTypes = new Map();\n    }\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.clearCacheFor = function (type) {\n        var /** @type {?} */ dirMeta = this._directiveCache.get(type);\n        this._directiveCache.delete(type);\n        this._nonNormalizedDirectiveCache.delete(type);\n        this._summaryCache.delete(type);\n        this._pipeCache.delete(type);\n        this._ngModuleOfTypes.delete(type);\n        // Clear all of the NgModule as they contain transitive information!\n        this._ngModuleCache.clear();\n        if (dirMeta) {\n            this._directiveNormalizer.clearCacheFor(dirMeta);\n        }\n    };\n    /**\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.clearCache = function () {\n        this._directiveCache.clear();\n        this._nonNormalizedDirectiveCache.clear();\n        this._summaryCache.clear();\n        this._pipeCache.clear();\n        this._ngModuleCache.clear();\n        this._ngModuleOfTypes.clear();\n        this._directiveNormalizer.clearCache();\n    };\n    /**\n     * @param {?} baseType\n     * @param {?} name\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._createProxyClass = function (baseType, name) {\n        var /** @type {?} */ delegate = null;\n        var /** @type {?} */ proxyClass = (function () {\n            if (!delegate) {\n                throw new Error(\"Illegal state: Class \" + name + \" for type \" + ɵstringify(baseType) + \" is not compiled yet!\");\n            }\n            return delegate.apply(this, arguments);\n        });\n        proxyClass.setDelegate = function (d) {\n            delegate = d;\n            ((proxyClass)).prototype = d.prototype;\n        };\n        // Make stringify work correctly\n        ((proxyClass)).overriddenName = name;\n        return proxyClass;\n    };\n    /**\n     * @param {?} dirType\n     * @param {?} name\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.getGeneratedClass = function (dirType, name) {\n        if (dirType instanceof StaticSymbol) {\n            return this._staticSymbolCache.get(ngfactoryFilePath(dirType.filePath), name);\n        }\n        else {\n            return this._createProxyClass(dirType, name);\n        }\n    };\n    /**\n     * @param {?} dirType\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.getComponentViewClass = function (dirType) {\n        return this.getGeneratedClass(dirType, viewClassName(dirType, 0));\n    };\n    /**\n     * @param {?} dirType\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.getHostComponentViewClass = function (dirType) {\n        return this.getGeneratedClass(dirType, hostViewClassName(dirType));\n    };\n    /**\n     * @param {?} dirType\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.getHostComponentType = function (dirType) {\n        var /** @type {?} */ name = identifierName({ reference: dirType }) + \"_Host\";\n        if (dirType instanceof StaticSymbol) {\n            return this._staticSymbolCache.get(dirType.filePath, name);\n        }\n        else {\n            var /** @type {?} */ HostClass = (function HostClass() { });\n            HostClass.overriddenName = name;\n            return HostClass;\n        }\n    };\n    /**\n     * @param {?} dirType\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.getRendererType = function (dirType) {\n        if (dirType instanceof StaticSymbol) {\n            return this._staticSymbolCache.get(ngfactoryFilePath(dirType.filePath), rendererTypeName(dirType));\n        }\n        else {\n            // returning an object as proxy,\n            // that we fill later during runtime compilation.\n            return ({});\n        }\n    };\n    /**\n     * @param {?} selector\n     * @param {?} dirType\n     * @param {?} inputs\n     * @param {?} outputs\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.getComponentFactory = function (selector, dirType, inputs, outputs) {\n        if (dirType instanceof StaticSymbol) {\n            return this._staticSymbolCache.get(ngfactoryFilePath(dirType.filePath), componentFactoryName(dirType));\n        }\n        else {\n            var /** @type {?} */ hostView = this.getHostComponentViewClass(dirType);\n            // Note: ngContentSelectors will be filled later once the template is\n            // loaded.\n            return ɵccf(selector, dirType, /** @type {?} */ (hostView), inputs, outputs, []);\n        }\n    };\n    /**\n     * @param {?} factory\n     * @param {?} ngContentSelectors\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.initComponentFactory = function (factory, ngContentSelectors) {\n        if (!(factory instanceof StaticSymbol)) {\n            (_a = factory.ngContentSelectors).push.apply(_a, ngContentSelectors);\n        }\n        var _a;\n    };\n    /**\n     * @param {?} type\n     * @param {?} kind\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._loadSummary = function (type, kind) {\n        var /** @type {?} */ typeSummary = this._summaryCache.get(type);\n        if (!typeSummary) {\n            var /** @type {?} */ summary = this._summaryResolver.resolveSummary(type);\n            typeSummary = summary ? summary.type : null;\n            this._summaryCache.set(type, typeSummary);\n        }\n        return typeSummary && typeSummary.summaryKind === kind ? typeSummary : null;\n    };\n    /**\n     * @param {?} ngModuleType\n     * @param {?} directiveType\n     * @param {?} isSync\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._loadDirectiveMetadata = function (ngModuleType, directiveType, isSync) {\n        var _this = this;\n        if (this._directiveCache.has(directiveType)) {\n            return;\n        }\n        directiveType = resolveForwardRef(directiveType);\n        var _a = this.getNonNormalizedDirectiveMetadata(directiveType), annotation = _a.annotation, metadata = _a.metadata;\n        var /** @type {?} */ createDirectiveMetadata = function (templateMetadata) {\n            var /** @type {?} */ normalizedDirMeta = new CompileDirectiveMetadata({\n                type: metadata.type,\n                isComponent: metadata.isComponent,\n                selector: metadata.selector,\n                exportAs: metadata.exportAs,\n                changeDetection: metadata.changeDetection,\n                inputs: metadata.inputs,\n                outputs: metadata.outputs,\n                hostListeners: metadata.hostListeners,\n                hostProperties: metadata.hostProperties,\n                hostAttributes: metadata.hostAttributes,\n                providers: metadata.providers,\n                viewProviders: metadata.viewProviders,\n                queries: metadata.queries,\n                viewQueries: metadata.viewQueries,\n                entryComponents: metadata.entryComponents,\n                componentViewType: metadata.componentViewType,\n                rendererType: metadata.rendererType,\n                componentFactory: metadata.componentFactory,\n                template: templateMetadata\n            });\n            if (templateMetadata) {\n                _this.initComponentFactory(metadata.componentFactory, templateMetadata.ngContentSelectors);\n            }\n            _this._directiveCache.set(directiveType, normalizedDirMeta);\n            _this._summaryCache.set(directiveType, normalizedDirMeta.toSummary());\n            return normalizedDirMeta;\n        };\n        if (metadata.isComponent) {\n            var /** @type {?} */ templateMeta = this._directiveNormalizer.normalizeTemplate({\n                ngModuleType: ngModuleType,\n                componentType: directiveType,\n                moduleUrl: componentModuleUrl(this._reflector, directiveType, annotation),\n                encapsulation: metadata.template.encapsulation,\n                template: metadata.template.template,\n                templateUrl: metadata.template.templateUrl,\n                styles: metadata.template.styles,\n                styleUrls: metadata.template.styleUrls,\n                animations: metadata.template.animations,\n                interpolation: metadata.template.interpolation\n            });\n            if (templateMeta.syncResult) {\n                createDirectiveMetadata(templateMeta.syncResult);\n                return null;\n            }\n            else {\n                if (isSync) {\n                    this._reportError(componentStillLoadingError(directiveType), directiveType);\n                    return null;\n                }\n                return templateMeta.asyncResult.then(createDirectiveMetadata);\n            }\n        }\n        else {\n            // directive\n            createDirectiveMetadata(null);\n            return null;\n        }\n    };\n    /**\n     * @param {?} directiveType\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.getNonNormalizedDirectiveMetadata = function (directiveType) {\n        var _this = this;\n        directiveType = resolveForwardRef(directiveType);\n        if (!directiveType) {\n            return null;\n        }\n        var /** @type {?} */ cacheEntry = this._nonNormalizedDirectiveCache.get(directiveType);\n        if (cacheEntry) {\n            return cacheEntry;\n        }\n        var /** @type {?} */ dirMeta = this._directiveResolver.resolve(directiveType, false);\n        if (!dirMeta) {\n            return null;\n        }\n        var /** @type {?} */ nonNormalizedTemplateMetadata;\n        if (dirMeta instanceof Component) {\n            // component\n            assertArrayOfStrings('styles', dirMeta.styles);\n            assertArrayOfStrings('styleUrls', dirMeta.styleUrls);\n            assertInterpolationSymbols('interpolation', dirMeta.interpolation);\n            var /** @type {?} */ animations = dirMeta.animations;\n            nonNormalizedTemplateMetadata = new CompileTemplateMetadata({\n                encapsulation: dirMeta.encapsulation,\n                template: dirMeta.template,\n                templateUrl: dirMeta.templateUrl,\n                styles: dirMeta.styles,\n                styleUrls: dirMeta.styleUrls,\n                animations: animations,\n                interpolation: dirMeta.interpolation,\n                isInline: !!dirMeta.template\n            });\n        }\n        var /** @type {?} */ changeDetectionStrategy = null;\n        var /** @type {?} */ viewProviders = [];\n        var /** @type {?} */ entryComponentMetadata = [];\n        var /** @type {?} */ selector = dirMeta.selector;\n        if (dirMeta instanceof Component) {\n            // Component\n            changeDetectionStrategy = dirMeta.changeDetection;\n            if (dirMeta.viewProviders) {\n                viewProviders = this._getProvidersMetadata(dirMeta.viewProviders, entryComponentMetadata, \"viewProviders for \\\"\" + stringifyType(directiveType) + \"\\\"\", [], directiveType);\n            }\n            if (dirMeta.entryComponents) {\n                entryComponentMetadata = flattenAndDedupeArray(dirMeta.entryComponents)\n                    .map(function (type) { return _this._getEntryComponentMetadata(type); })\n                    .concat(entryComponentMetadata);\n            }\n            if (!selector) {\n                selector = this._schemaRegistry.getDefaultComponentElementName();\n            }\n        }\n        else {\n            // Directive\n            if (!selector) {\n                this._reportError(syntaxError(\"Directive \" + stringifyType(directiveType) + \" has no selector, please add it!\"), directiveType);\n                selector = 'error';\n            }\n        }\n        var /** @type {?} */ providers = [];\n        if (dirMeta.providers != null) {\n            providers = this._getProvidersMetadata(dirMeta.providers, entryComponentMetadata, \"providers for \\\"\" + stringifyType(directiveType) + \"\\\"\", [], directiveType);\n        }\n        var /** @type {?} */ queries = [];\n        var /** @type {?} */ viewQueries = [];\n        if (dirMeta.queries != null) {\n            queries = this._getQueriesMetadata(dirMeta.queries, false, directiveType);\n            viewQueries = this._getQueriesMetadata(dirMeta.queries, true, directiveType);\n        }\n        var /** @type {?} */ metadata = CompileDirectiveMetadata.create({\n            selector: selector,\n            exportAs: dirMeta.exportAs,\n            isComponent: !!nonNormalizedTemplateMetadata,\n            type: this._getTypeMetadata(directiveType),\n            template: nonNormalizedTemplateMetadata,\n            changeDetection: changeDetectionStrategy,\n            inputs: dirMeta.inputs,\n            outputs: dirMeta.outputs,\n            host: dirMeta.host,\n            providers: providers,\n            viewProviders: viewProviders,\n            queries: queries,\n            viewQueries: viewQueries,\n            entryComponents: entryComponentMetadata,\n            componentViewType: nonNormalizedTemplateMetadata ? this.getComponentViewClass(directiveType) :\n                undefined,\n            rendererType: nonNormalizedTemplateMetadata ? this.getRendererType(directiveType) : undefined,\n            componentFactory: undefined\n        });\n        if (nonNormalizedTemplateMetadata) {\n            metadata.componentFactory =\n                this.getComponentFactory(selector, directiveType, metadata.inputs, metadata.outputs);\n        }\n        cacheEntry = { metadata: metadata, annotation: dirMeta };\n        this._nonNormalizedDirectiveCache.set(directiveType, cacheEntry);\n        return cacheEntry;\n    };\n    /**\n     * Gets the metadata for the given directive.\n     * This assumes `loadNgModuleDirectiveAndPipeMetadata` has been called first.\n     * @param {?} directiveType\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.getDirectiveMetadata = function (directiveType) {\n        var /** @type {?} */ dirMeta = this._directiveCache.get(directiveType);\n        if (!dirMeta) {\n            this._reportError(syntaxError(\"Illegal state: getDirectiveMetadata can only be called after loadNgModuleDirectiveAndPipeMetadata for a module that declares it. Directive \" + stringifyType(directiveType) + \".\"), directiveType);\n        }\n        return dirMeta;\n    };\n    /**\n     * @param {?} dirType\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.getDirectiveSummary = function (dirType) {\n        var /** @type {?} */ dirSummary = (this._loadSummary(dirType, CompileSummaryKind.Directive));\n        if (!dirSummary) {\n            this._reportError(syntaxError(\"Illegal state: Could not load the summary for directive \" + stringifyType(dirType) + \".\"), dirType);\n        }\n        return dirSummary;\n    };\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.isDirective = function (type) { return this._directiveResolver.isDirective(type); };\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.isPipe = function (type) { return this._pipeResolver.isPipe(type); };\n    /**\n     * @param {?} moduleType\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.getNgModuleSummary = function (moduleType) {\n        var /** @type {?} */ moduleSummary = (this._loadSummary(moduleType, CompileSummaryKind.NgModule));\n        if (!moduleSummary) {\n            var /** @type {?} */ moduleMeta = this.getNgModuleMetadata(moduleType, false);\n            moduleSummary = moduleMeta ? moduleMeta.toSummary() : null;\n            if (moduleSummary) {\n                this._summaryCache.set(moduleType, moduleSummary);\n            }\n        }\n        return moduleSummary;\n    };\n    /**\n     * Loads the declared directives and pipes of an NgModule.\n     * @param {?} moduleType\n     * @param {?} isSync\n     * @param {?=} throwIfNotFound\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.loadNgModuleDirectiveAndPipeMetadata = function (moduleType, isSync, throwIfNotFound) {\n        var _this = this;\n        if (throwIfNotFound === void 0) { throwIfNotFound = true; }\n        var /** @type {?} */ ngModule = this.getNgModuleMetadata(moduleType, throwIfNotFound);\n        var /** @type {?} */ loading = [];\n        if (ngModule) {\n            ngModule.declaredDirectives.forEach(function (id) {\n                var /** @type {?} */ promise = _this._loadDirectiveMetadata(moduleType, id.reference, isSync);\n                if (promise) {\n                    loading.push(promise);\n                }\n            });\n            ngModule.declaredPipes.forEach(function (id) { return _this._loadPipeMetadata(id.reference); });\n        }\n        return Promise.all(loading);\n    };\n    /**\n     * @param {?} moduleType\n     * @param {?=} throwIfNotFound\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.getNgModuleMetadata = function (moduleType, throwIfNotFound) {\n        var _this = this;\n        if (throwIfNotFound === void 0) { throwIfNotFound = true; }\n        moduleType = resolveForwardRef(moduleType);\n        var /** @type {?} */ compileMeta = this._ngModuleCache.get(moduleType);\n        if (compileMeta) {\n            return compileMeta;\n        }\n        var /** @type {?} */ meta = this._ngModuleResolver.resolve(moduleType, throwIfNotFound);\n        if (!meta) {\n            return null;\n        }\n        var /** @type {?} */ declaredDirectives = [];\n        var /** @type {?} */ exportedNonModuleIdentifiers = [];\n        var /** @type {?} */ declaredPipes = [];\n        var /** @type {?} */ importedModules = [];\n        var /** @type {?} */ exportedModules = [];\n        var /** @type {?} */ providers = [];\n        var /** @type {?} */ entryComponents = [];\n        var /** @type {?} */ bootstrapComponents = [];\n        var /** @type {?} */ schemas = [];\n        if (meta.imports) {\n            flattenAndDedupeArray(meta.imports).forEach(function (importedType) {\n                var /** @type {?} */ importedModuleType;\n                if (isValidType(importedType)) {\n                    importedModuleType = importedType;\n                }\n                else if (importedType && importedType.ngModule) {\n                    var /** @type {?} */ moduleWithProviders = importedType;\n                    importedModuleType = moduleWithProviders.ngModule;\n                    if (moduleWithProviders.providers) {\n                        providers.push.apply(providers, _this._getProvidersMetadata(moduleWithProviders.providers, entryComponents, \"provider for the NgModule '\" + stringifyType(importedModuleType) + \"'\", [], importedType));\n                    }\n                }\n                if (importedModuleType) {\n                    if (_this._checkSelfImport(moduleType, importedModuleType))\n                        return;\n                    var /** @type {?} */ importedModuleSummary = _this.getNgModuleSummary(importedModuleType);\n                    if (!importedModuleSummary) {\n                        _this._reportError(syntaxError(\"Unexpected \" + _this._getTypeDescriptor(importedType) + \" '\" + stringifyType(importedType) + \"' imported by the module '\" + stringifyType(moduleType) + \"'. Please add a @NgModule annotation.\"), moduleType);\n                        return;\n                    }\n                    importedModules.push(importedModuleSummary);\n                }\n                else {\n                    _this._reportError(syntaxError(\"Unexpected value '\" + stringifyType(importedType) + \"' imported by the module '\" + stringifyType(moduleType) + \"'\"), moduleType);\n                    return;\n                }\n            });\n        }\n        if (meta.exports) {\n            flattenAndDedupeArray(meta.exports).forEach(function (exportedType) {\n                if (!isValidType(exportedType)) {\n                    _this._reportError(syntaxError(\"Unexpected value '\" + stringifyType(exportedType) + \"' exported by the module '\" + stringifyType(moduleType) + \"'\"), moduleType);\n                    return;\n                }\n                var /** @type {?} */ exportedModuleSummary = _this.getNgModuleSummary(exportedType);\n                if (exportedModuleSummary) {\n                    exportedModules.push(exportedModuleSummary);\n                }\n                else {\n                    exportedNonModuleIdentifiers.push(_this._getIdentifierMetadata(exportedType));\n                }\n            });\n        }\n        // Note: This will be modified later, so we rely on\n        // getting a new instance every time!\n        var /** @type {?} */ transitiveModule = this._getTransitiveNgModuleMetadata(importedModules, exportedModules);\n        if (meta.declarations) {\n            flattenAndDedupeArray(meta.declarations).forEach(function (declaredType) {\n                if (!isValidType(declaredType)) {\n                    _this._reportError(syntaxError(\"Unexpected value '\" + stringifyType(declaredType) + \"' declared by the module '\" + stringifyType(moduleType) + \"'\"), moduleType);\n                    return;\n                }\n                var /** @type {?} */ declaredIdentifier = _this._getIdentifierMetadata(declaredType);\n                if (_this._directiveResolver.isDirective(declaredType)) {\n                    transitiveModule.addDirective(declaredIdentifier);\n                    declaredDirectives.push(declaredIdentifier);\n                    _this._addTypeToModule(declaredType, moduleType);\n                }\n                else if (_this._pipeResolver.isPipe(declaredType)) {\n                    transitiveModule.addPipe(declaredIdentifier);\n                    transitiveModule.pipes.push(declaredIdentifier);\n                    declaredPipes.push(declaredIdentifier);\n                    _this._addTypeToModule(declaredType, moduleType);\n                }\n                else {\n                    _this._reportError(syntaxError(\"Unexpected \" + _this._getTypeDescriptor(declaredType) + \" '\" + stringifyType(declaredType) + \"' declared by the module '\" + stringifyType(moduleType) + \"'. Please add a @Pipe/@Directive/@Component annotation.\"), moduleType);\n                    return;\n                }\n            });\n        }\n        var /** @type {?} */ exportedDirectives = [];\n        var /** @type {?} */ exportedPipes = [];\n        exportedNonModuleIdentifiers.forEach(function (exportedId) {\n            if (transitiveModule.directivesSet.has(exportedId.reference)) {\n                exportedDirectives.push(exportedId);\n                transitiveModule.addExportedDirective(exportedId);\n            }\n            else if (transitiveModule.pipesSet.has(exportedId.reference)) {\n                exportedPipes.push(exportedId);\n                transitiveModule.addExportedPipe(exportedId);\n            }\n            else {\n                _this._reportError(syntaxError(\"Can't export \" + _this._getTypeDescriptor(exportedId.reference) + \" \" + stringifyType(exportedId.reference) + \" from \" + stringifyType(moduleType) + \" as it was neither declared nor imported!\"), moduleType);\n                return;\n            }\n        });\n        // The providers of the module have to go last\n        // so that they overwrite any other provider we already added.\n        if (meta.providers) {\n            providers.push.apply(providers, this._getProvidersMetadata(meta.providers, entryComponents, \"provider for the NgModule '\" + stringifyType(moduleType) + \"'\", [], moduleType));\n        }\n        if (meta.entryComponents) {\n            entryComponents.push.apply(entryComponents, flattenAndDedupeArray(meta.entryComponents)\n                .map(function (type) { return _this._getEntryComponentMetadata(type); }));\n        }\n        if (meta.bootstrap) {\n            flattenAndDedupeArray(meta.bootstrap).forEach(function (type) {\n                if (!isValidType(type)) {\n                    _this._reportError(syntaxError(\"Unexpected value '\" + stringifyType(type) + \"' used in the bootstrap property of module '\" + stringifyType(moduleType) + \"'\"), moduleType);\n                    return;\n                }\n                bootstrapComponents.push(_this._getIdentifierMetadata(type));\n            });\n        }\n        entryComponents.push.apply(entryComponents, bootstrapComponents.map(function (type) { return _this._getEntryComponentMetadata(type.reference); }));\n        if (meta.schemas) {\n            schemas.push.apply(schemas, flattenAndDedupeArray(meta.schemas));\n        }\n        compileMeta = new CompileNgModuleMetadata({\n            type: this._getTypeMetadata(moduleType),\n            providers: providers,\n            entryComponents: entryComponents,\n            bootstrapComponents: bootstrapComponents,\n            schemas: schemas,\n            declaredDirectives: declaredDirectives,\n            exportedDirectives: exportedDirectives,\n            declaredPipes: declaredPipes,\n            exportedPipes: exportedPipes,\n            importedModules: importedModules,\n            exportedModules: exportedModules,\n            transitiveModule: transitiveModule,\n            id: meta.id,\n        });\n        entryComponents.forEach(function (id) { return transitiveModule.addEntryComponent(id); });\n        providers.forEach(function (provider) { return transitiveModule.addProvider(provider, compileMeta.type); });\n        transitiveModule.addModule(compileMeta.type);\n        this._ngModuleCache.set(moduleType, compileMeta);\n        return compileMeta;\n    };\n    /**\n     * @param {?} moduleType\n     * @param {?} importedModuleType\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._checkSelfImport = function (moduleType, importedModuleType) {\n        if (moduleType === importedModuleType) {\n            this._reportError(syntaxError(\"'\" + stringifyType(moduleType) + \"' module can't import itself\"), moduleType);\n            return true;\n        }\n        return false;\n    };\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._getTypeDescriptor = function (type) {\n        if (this._directiveResolver.isDirective(type)) {\n            return 'directive';\n        }\n        if (this._pipeResolver.isPipe(type)) {\n            return 'pipe';\n        }\n        if (this._ngModuleResolver.isNgModule(type)) {\n            return 'module';\n        }\n        if (((type)).provide) {\n            return 'provider';\n        }\n        return 'value';\n    };\n    /**\n     * @param {?} type\n     * @param {?} moduleType\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._addTypeToModule = function (type, moduleType) {\n        var /** @type {?} */ oldModule = this._ngModuleOfTypes.get(type);\n        if (oldModule && oldModule !== moduleType) {\n            this._reportError(syntaxError(\"Type \" + stringifyType(type) + \" is part of the declarations of 2 modules: \" + stringifyType(oldModule) + \" and \" + stringifyType(moduleType) + \"! \" +\n                (\"Please consider moving \" + stringifyType(type) + \" to a higher module that imports \" + stringifyType(oldModule) + \" and \" + stringifyType(moduleType) + \". \") +\n                (\"You can also create a new NgModule that exports and includes \" + stringifyType(type) + \" then import that NgModule in \" + stringifyType(oldModule) + \" and \" + stringifyType(moduleType) + \".\")), moduleType);\n            return;\n        }\n        this._ngModuleOfTypes.set(type, moduleType);\n    };\n    /**\n     * @param {?} importedModules\n     * @param {?} exportedModules\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._getTransitiveNgModuleMetadata = function (importedModules, exportedModules) {\n        // collect `providers` / `entryComponents` from all imported and all exported modules\n        var /** @type {?} */ result = new TransitiveCompileNgModuleMetadata();\n        var /** @type {?} */ modulesByToken = new Map();\n        importedModules.concat(exportedModules).forEach(function (modSummary) {\n            modSummary.modules.forEach(function (mod) { return result.addModule(mod); });\n            modSummary.entryComponents.forEach(function (comp) { return result.addEntryComponent(comp); });\n            var /** @type {?} */ addedTokens = new Set();\n            modSummary.providers.forEach(function (entry) {\n                var /** @type {?} */ tokenRef = tokenReference(entry.provider.token);\n                var /** @type {?} */ prevModules = modulesByToken.get(tokenRef);\n                if (!prevModules) {\n                    prevModules = new Set();\n                    modulesByToken.set(tokenRef, prevModules);\n                }\n                var /** @type {?} */ moduleRef = entry.module.reference;\n                // Note: the providers of one module may still contain multiple providers\n                // per token (e.g. for multi providers), and we need to preserve these.\n                if (addedTokens.has(tokenRef) || !prevModules.has(moduleRef)) {\n                    prevModules.add(moduleRef);\n                    addedTokens.add(tokenRef);\n                    result.addProvider(entry.provider, entry.module);\n                }\n            });\n        });\n        exportedModules.forEach(function (modSummary) {\n            modSummary.exportedDirectives.forEach(function (id) { return result.addExportedDirective(id); });\n            modSummary.exportedPipes.forEach(function (id) { return result.addExportedPipe(id); });\n        });\n        importedModules.forEach(function (modSummary) {\n            modSummary.exportedDirectives.forEach(function (id) { return result.addDirective(id); });\n            modSummary.exportedPipes.forEach(function (id) { return result.addPipe(id); });\n        });\n        return result;\n    };\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._getIdentifierMetadata = function (type) {\n        type = resolveForwardRef(type);\n        return { reference: type };\n    };\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.isInjectable = function (type) {\n        var /** @type {?} */ annotations = this._reflector.annotations(type);\n        // Note: We need an exact check here as @Component / @Directive / ... inherit\n        // from @CompilerInjectable!\n        return annotations.some(function (ann) { return ann.constructor === Injectable; });\n    };\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.getInjectableSummary = function (type) {\n        return {\n            summaryKind: CompileSummaryKind.Injectable,\n            type: this._getTypeMetadata(type, null, false)\n        };\n    };\n    /**\n     * @param {?} type\n     * @param {?=} dependencies\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._getInjectableMetadata = function (type, dependencies) {\n        if (dependencies === void 0) { dependencies = null; }\n        var /** @type {?} */ typeSummary = this._loadSummary(type, CompileSummaryKind.Injectable);\n        if (typeSummary) {\n            return typeSummary.type;\n        }\n        return this._getTypeMetadata(type, dependencies);\n    };\n    /**\n     * @param {?} type\n     * @param {?=} dependencies\n     * @param {?=} throwOnUnknownDeps\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._getTypeMetadata = function (type, dependencies, throwOnUnknownDeps) {\n        if (dependencies === void 0) { dependencies = null; }\n        if (throwOnUnknownDeps === void 0) { throwOnUnknownDeps = true; }\n        var /** @type {?} */ identifier = this._getIdentifierMetadata(type);\n        return {\n            reference: identifier.reference,\n            diDeps: this._getDependenciesMetadata(identifier.reference, dependencies, throwOnUnknownDeps),\n            lifecycleHooks: ɵLIFECYCLE_HOOKS_VALUES.filter(function (hook) { return hasLifecycleHook(hook, identifier.reference); }),\n        };\n    };\n    /**\n     * @param {?} factory\n     * @param {?=} dependencies\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._getFactoryMetadata = function (factory, dependencies) {\n        if (dependencies === void 0) { dependencies = null; }\n        factory = resolveForwardRef(factory);\n        return { reference: factory, diDeps: this._getDependenciesMetadata(factory, dependencies) };\n    };\n    /**\n     * Gets the metadata for the given pipe.\n     * This assumes `loadNgModuleDirectiveAndPipeMetadata` has been called first.\n     * @param {?} pipeType\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.getPipeMetadata = function (pipeType) {\n        var /** @type {?} */ pipeMeta = this._pipeCache.get(pipeType);\n        if (!pipeMeta) {\n            this._reportError(syntaxError(\"Illegal state: getPipeMetadata can only be called after loadNgModuleDirectiveAndPipeMetadata for a module that declares it. Pipe \" + stringifyType(pipeType) + \".\"), pipeType);\n        }\n        return pipeMeta;\n    };\n    /**\n     * @param {?} pipeType\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.getPipeSummary = function (pipeType) {\n        var /** @type {?} */ pipeSummary = (this._loadSummary(pipeType, CompileSummaryKind.Pipe));\n        if (!pipeSummary) {\n            this._reportError(syntaxError(\"Illegal state: Could not load the summary for pipe \" + stringifyType(pipeType) + \".\"), pipeType);\n        }\n        return pipeSummary;\n    };\n    /**\n     * @param {?} pipeType\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.getOrLoadPipeMetadata = function (pipeType) {\n        var /** @type {?} */ pipeMeta = this._pipeCache.get(pipeType);\n        if (!pipeMeta) {\n            pipeMeta = this._loadPipeMetadata(pipeType);\n        }\n        return pipeMeta;\n    };\n    /**\n     * @param {?} pipeType\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._loadPipeMetadata = function (pipeType) {\n        pipeType = resolveForwardRef(pipeType);\n        var /** @type {?} */ pipeAnnotation = this._pipeResolver.resolve(pipeType);\n        var /** @type {?} */ pipeMeta = new CompilePipeMetadata({\n            type: this._getTypeMetadata(pipeType),\n            name: pipeAnnotation.name,\n            pure: pipeAnnotation.pure\n        });\n        this._pipeCache.set(pipeType, pipeMeta);\n        this._summaryCache.set(pipeType, pipeMeta.toSummary());\n        return pipeMeta;\n    };\n    /**\n     * @param {?} typeOrFunc\n     * @param {?} dependencies\n     * @param {?=} throwOnUnknownDeps\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._getDependenciesMetadata = function (typeOrFunc, dependencies, throwOnUnknownDeps) {\n        var _this = this;\n        if (throwOnUnknownDeps === void 0) { throwOnUnknownDeps = true; }\n        var /** @type {?} */ hasUnknownDeps = false;\n        var /** @type {?} */ params = dependencies || this._reflector.parameters(typeOrFunc) || [];\n        var /** @type {?} */ dependenciesMetadata = params.map(function (param) {\n            var /** @type {?} */ isAttribute = false;\n            var /** @type {?} */ isHost = false;\n            var /** @type {?} */ isSelf = false;\n            var /** @type {?} */ isSkipSelf = false;\n            var /** @type {?} */ isOptional = false;\n            var /** @type {?} */ token = null;\n            if (Array.isArray(param)) {\n                param.forEach(function (paramEntry) {\n                    if (paramEntry instanceof Host) {\n                        isHost = true;\n                    }\n                    else if (paramEntry instanceof Self) {\n                        isSelf = true;\n                    }\n                    else if (paramEntry instanceof SkipSelf) {\n                        isSkipSelf = true;\n                    }\n                    else if (paramEntry instanceof Optional) {\n                        isOptional = true;\n                    }\n                    else if (paramEntry instanceof Attribute) {\n                        isAttribute = true;\n                        token = paramEntry.attributeName;\n                    }\n                    else if (paramEntry instanceof Inject) {\n                        token = paramEntry.token;\n                    }\n                    else if (paramEntry instanceof InjectionToken) {\n                        token = paramEntry;\n                    }\n                    else if (isValidType(paramEntry) && token == null) {\n                        token = paramEntry;\n                    }\n                });\n            }\n            else {\n                token = param;\n            }\n            if (token == null) {\n                hasUnknownDeps = true;\n                return null;\n            }\n            return {\n                isAttribute: isAttribute,\n                isHost: isHost,\n                isSelf: isSelf,\n                isSkipSelf: isSkipSelf,\n                isOptional: isOptional,\n                token: _this._getTokenMetadata(token)\n            };\n        });\n        if (hasUnknownDeps) {\n            var /** @type {?} */ depsTokens = dependenciesMetadata.map(function (dep) { return dep ? stringifyType(dep.token) : '?'; }).join(', ');\n            var /** @type {?} */ message = \"Can't resolve all parameters for \" + stringifyType(typeOrFunc) + \": (\" + depsTokens + \").\";\n            if (throwOnUnknownDeps) {\n                this._reportError(syntaxError(message), typeOrFunc);\n            }\n            else {\n                this._console.warn(\"Warning: \" + message + \" This will become an error in Angular v5.x\");\n            }\n        }\n        return dependenciesMetadata;\n    };\n    /**\n     * @param {?} token\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._getTokenMetadata = function (token) {\n        token = resolveForwardRef(token);\n        var /** @type {?} */ compileToken;\n        if (typeof token === 'string') {\n            compileToken = { value: token };\n        }\n        else {\n            compileToken = { identifier: { reference: token } };\n        }\n        return compileToken;\n    };\n    /**\n     * @param {?} providers\n     * @param {?} targetEntryComponents\n     * @param {?=} debugInfo\n     * @param {?=} compileProviders\n     * @param {?=} type\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._getProvidersMetadata = function (providers, targetEntryComponents, debugInfo, compileProviders, type) {\n        var _this = this;\n        if (compileProviders === void 0) { compileProviders = []; }\n        providers.forEach(function (provider, providerIdx) {\n            if (Array.isArray(provider)) {\n                _this._getProvidersMetadata(provider, targetEntryComponents, debugInfo, compileProviders);\n            }\n            else {\n                provider = resolveForwardRef(provider);\n                var /** @type {?} */ providerMeta = void 0;\n                if (provider && typeof provider === 'object' && provider.hasOwnProperty('provide')) {\n                    _this._validateProvider(provider);\n                    providerMeta = new ProviderMeta(provider.provide, provider);\n                }\n                else if (isValidType(provider)) {\n                    providerMeta = new ProviderMeta(provider, { useClass: provider });\n                }\n                else if (provider === void 0) {\n                    _this._reportError(syntaxError(\"Encountered undefined provider! Usually this means you have a circular dependencies (might be caused by using 'barrel' index.ts files.\"));\n                    return;\n                }\n                else {\n                    var /** @type {?} */ providersInfo = ((providers.reduce(function (soFar, seenProvider, seenProviderIdx) {\n                        if (seenProviderIdx < providerIdx) {\n                            soFar.push(\"\" + stringifyType(seenProvider));\n                        }\n                        else if (seenProviderIdx == providerIdx) {\n                            soFar.push(\"?\" + stringifyType(seenProvider) + \"?\");\n                        }\n                        else if (seenProviderIdx == providerIdx + 1) {\n                            soFar.push('...');\n                        }\n                        return soFar;\n                    }, [])))\n                        .join(', ');\n                    _this._reportError(syntaxError(\"Invalid \" + (debugInfo ? debugInfo : 'provider') + \" - only instances of Provider and Type are allowed, got: [\" + providersInfo + \"]\"), type);\n                    return;\n                }\n                if (providerMeta.token === resolveIdentifier(Identifiers.ANALYZE_FOR_ENTRY_COMPONENTS)) {\n                    targetEntryComponents.push.apply(targetEntryComponents, _this._getEntryComponentsFromProvider(providerMeta, type));\n                }\n                else {\n                    compileProviders.push(_this.getProviderMetadata(providerMeta));\n                }\n            }\n        });\n        return compileProviders;\n    };\n    /**\n     * @param {?} provider\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._validateProvider = function (provider) {\n        if (provider.hasOwnProperty('useClass') && provider.useClass == null) {\n            this._reportError(syntaxError(\"Invalid provider for \" + stringifyType(provider.provide) + \". useClass cannot be \" + provider.useClass + \".\\n           Usually it happens when:\\n           1. There's a circular dependency (might be caused by using index.ts (barrel) files).\\n           2. Class was used before it was declared. Use forwardRef in this case.\"));\n        }\n    };\n    /**\n     * @param {?} provider\n     * @param {?=} type\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._getEntryComponentsFromProvider = function (provider, type) {\n        var _this = this;\n        var /** @type {?} */ components = [];\n        var /** @type {?} */ collectedIdentifiers = [];\n        if (provider.useFactory || provider.useExisting || provider.useClass) {\n            this._reportError(syntaxError(\"The ANALYZE_FOR_ENTRY_COMPONENTS token only supports useValue!\"), type);\n            return [];\n        }\n        if (!provider.multi) {\n            this._reportError(syntaxError(\"The ANALYZE_FOR_ENTRY_COMPONENTS token only supports 'multi = true'!\"), type);\n            return [];\n        }\n        extractIdentifiers(provider.useValue, collectedIdentifiers);\n        collectedIdentifiers.forEach(function (identifier) {\n            var /** @type {?} */ entry = _this._getEntryComponentMetadata(identifier.reference, false);\n            if (entry) {\n                components.push(entry);\n            }\n        });\n        return components;\n    };\n    /**\n     * @param {?} dirType\n     * @param {?=} throwIfNotFound\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._getEntryComponentMetadata = function (dirType, throwIfNotFound) {\n        if (throwIfNotFound === void 0) { throwIfNotFound = true; }\n        var /** @type {?} */ dirMeta = this.getNonNormalizedDirectiveMetadata(dirType);\n        if (dirMeta && dirMeta.metadata.isComponent) {\n            return { componentType: dirType, componentFactory: dirMeta.metadata.componentFactory };\n        }\n        var /** @type {?} */ dirSummary = (this._loadSummary(dirType, CompileSummaryKind.Directive));\n        if (dirSummary && dirSummary.isComponent) {\n            return { componentType: dirType, componentFactory: dirSummary.componentFactory };\n        }\n        if (throwIfNotFound) {\n            throw syntaxError(dirType.name + \" cannot be used as an entry component.\");\n        }\n    };\n    /**\n     * @param {?} provider\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype.getProviderMetadata = function (provider) {\n        var /** @type {?} */ compileDeps;\n        var /** @type {?} */ compileTypeMetadata = null;\n        var /** @type {?} */ compileFactoryMetadata = null;\n        var /** @type {?} */ token = this._getTokenMetadata(provider.token);\n        if (provider.useClass) {\n            compileTypeMetadata = this._getInjectableMetadata(provider.useClass, provider.dependencies);\n            compileDeps = compileTypeMetadata.diDeps;\n            if (provider.token === provider.useClass) {\n                // use the compileTypeMetadata as it contains information about lifecycleHooks...\n                token = { identifier: compileTypeMetadata };\n            }\n        }\n        else if (provider.useFactory) {\n            compileFactoryMetadata = this._getFactoryMetadata(provider.useFactory, provider.dependencies);\n            compileDeps = compileFactoryMetadata.diDeps;\n        }\n        return {\n            token: token,\n            useClass: compileTypeMetadata,\n            useValue: provider.useValue,\n            useFactory: compileFactoryMetadata,\n            useExisting: provider.useExisting ? this._getTokenMetadata(provider.useExisting) : null,\n            deps: compileDeps,\n            multi: provider.multi\n        };\n    };\n    /**\n     * @param {?} queries\n     * @param {?} isViewQuery\n     * @param {?} directiveType\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._getQueriesMetadata = function (queries, isViewQuery, directiveType) {\n        var _this = this;\n        var /** @type {?} */ res = [];\n        Object.keys(queries).forEach(function (propertyName) {\n            var /** @type {?} */ query = queries[propertyName];\n            if (query.isViewQuery === isViewQuery) {\n                res.push(_this._getQueryMetadata(query, propertyName, directiveType));\n            }\n        });\n        return res;\n    };\n    /**\n     * @param {?} selector\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._queryVarBindings = function (selector) { return selector.split(/\\s*,\\s*/); };\n    /**\n     * @param {?} q\n     * @param {?} propertyName\n     * @param {?} typeOrFunc\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._getQueryMetadata = function (q, propertyName, typeOrFunc) {\n        var _this = this;\n        var /** @type {?} */ selectors;\n        if (typeof q.selector === 'string') {\n            selectors =\n                this._queryVarBindings(q.selector).map(function (varName) { return _this._getTokenMetadata(varName); });\n        }\n        else {\n            if (!q.selector) {\n                this._reportError(syntaxError(\"Can't construct a query for the property \\\"\" + propertyName + \"\\\" of \\\"\" + stringifyType(typeOrFunc) + \"\\\" since the query selector wasn't defined.\"), typeOrFunc);\n                selectors = [];\n            }\n            else {\n                selectors = [this._getTokenMetadata(q.selector)];\n            }\n        }\n        return {\n            selectors: selectors,\n            first: q.first,\n            descendants: q.descendants, propertyName: propertyName,\n            read: q.read ? this._getTokenMetadata(q.read) : null\n        };\n    };\n    /**\n     * @param {?} error\n     * @param {?=} type\n     * @param {?=} otherType\n     * @return {?}\n     */\n    CompileMetadataResolver.prototype._reportError = function (error, type, otherType) {\n        if (this._errorCollector) {\n            this._errorCollector(error, type);\n            if (otherType) {\n                this._errorCollector(error, otherType);\n            }\n        }\n        else {\n            throw error;\n        }\n    };\n    return CompileMetadataResolver;\n}());\nCompileMetadataResolver.decorators = [\n    { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nCompileMetadataResolver.ctorParameters = function () { return [\n    { type: CompilerConfig, },\n    { type: NgModuleResolver, },\n    { type: DirectiveResolver, },\n    { type: PipeResolver, },\n    { type: SummaryResolver, },\n    { type: ElementSchemaRegistry, },\n    { type: DirectiveNormalizer, },\n    { type: ɵConsole, },\n    { type: StaticSymbolCache, decorators: [{ type: Optional },] },\n    { type: ɵReflectorReader, },\n    { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [ERROR_COLLECTOR_TOKEN,] },] },\n]; };\n/**\n * @param {?} tree\n * @param {?=} out\n * @return {?}\n */\nfunction flattenArray(tree, out) {\n    if (out === void 0) { out = []; }\n    if (tree) {\n        for (var /** @type {?} */ i = 0; i < tree.length; i++) {\n            var /** @type {?} */ item = resolveForwardRef(tree[i]);\n            if (Array.isArray(item)) {\n                flattenArray(item, out);\n            }\n            else {\n                out.push(item);\n            }\n        }\n    }\n    return out;\n}\n/**\n * @param {?} array\n * @return {?}\n */\nfunction dedupeArray(array) {\n    if (array) {\n        return Array.from(new Set(array));\n    }\n    return [];\n}\n/**\n * @param {?} tree\n * @return {?}\n */\nfunction flattenAndDedupeArray(tree) {\n    return dedupeArray(flattenArray(tree));\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isValidType(value) {\n    return (value instanceof StaticSymbol) || (value instanceof Type);\n}\n/**\n * @param {?} reflector\n * @param {?} type\n * @param {?} cmpMetadata\n * @return {?}\n */\nfunction componentModuleUrl(reflector, type, cmpMetadata) {\n    if (type instanceof StaticSymbol) {\n        return reflector.resourceUri(type);\n    }\n    var /** @type {?} */ moduleId = cmpMetadata.moduleId;\n    if (typeof moduleId === 'string') {\n        var /** @type {?} */ scheme = getUrlScheme(moduleId);\n        return scheme ? moduleId : \"package:\" + moduleId + MODULE_SUFFIX;\n    }\n    else if (moduleId !== null && moduleId !== void 0) {\n        throw syntaxError(\"moduleId should be a string in \\\"\" + stringifyType(type) + \"\\\". See https://goo.gl/wIDDiL for more information.\\n\" +\n            \"If you're using Webpack you should inline the template and the styles, see https://goo.gl/X2J8zc.\");\n    }\n    return reflector.importUri(type);\n}\n/**\n * @param {?} value\n * @param {?} targetIdentifiers\n * @return {?}\n */\nfunction extractIdentifiers(value, targetIdentifiers) {\n    visitValue(value, new _CompileValueConverter(), targetIdentifiers);\n}\nvar _CompileValueConverter = (function (_super) {\n    __extends(_CompileValueConverter, _super);\n    function _CompileValueConverter() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @param {?} value\n     * @param {?} targetIdentifiers\n     * @return {?}\n     */\n    _CompileValueConverter.prototype.visitOther = function (value, targetIdentifiers) {\n        targetIdentifiers.push({ reference: value });\n    };\n    return _CompileValueConverter;\n}(ValueTransformer));\n/**\n * @param {?} type\n * @return {?}\n */\nfunction stringifyType(type) {\n    if (type instanceof StaticSymbol) {\n        return type.name + \" in \" + type.filePath;\n    }\n    else {\n        return ɵstringify(type);\n    }\n}\n/**\n * Indicates that a component is still being loaded in a synchronous compile.\n * @param {?} compType\n * @return {?}\n */\nfunction componentStillLoadingError(compType) {\n    var /** @type {?} */ error = Error(\"Can't compile synchronously as \" + ɵstringify(compType) + \" is still being loaded!\");\n    ((error))[ɵERROR_COMPONENT_TYPE] = compType;\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 */\nvar TypeModifier = {};\nTypeModifier.Const = 0;\nTypeModifier[TypeModifier.Const] = \"Const\";\n/**\n * @abstract\n */\nvar Type$1 = (function () {\n    /**\n     * @param {?=} modifiers\n     */\n    function Type$1(modifiers) {\n        if (modifiers === void 0) { modifiers = null; }\n        this.modifiers = modifiers;\n        if (!modifiers) {\n            this.modifiers = [];\n        }\n    }\n    /**\n     * @abstract\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    Type$1.prototype.visitType = function (visitor, context) { };\n    /**\n     * @param {?} modifier\n     * @return {?}\n     */\n    Type$1.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; };\n    return Type$1;\n}());\nvar BuiltinTypeName = {};\nBuiltinTypeName.Dynamic = 0;\nBuiltinTypeName.Bool = 1;\nBuiltinTypeName.String = 2;\nBuiltinTypeName.Int = 3;\nBuiltinTypeName.Number = 4;\nBuiltinTypeName.Function = 5;\nBuiltinTypeName.Inferred = 6;\nBuiltinTypeName[BuiltinTypeName.Dynamic] = \"Dynamic\";\nBuiltinTypeName[BuiltinTypeName.Bool] = \"Bool\";\nBuiltinTypeName[BuiltinTypeName.String] = \"String\";\nBuiltinTypeName[BuiltinTypeName.Int] = \"Int\";\nBuiltinTypeName[BuiltinTypeName.Number] = \"Number\";\nBuiltinTypeName[BuiltinTypeName.Function] = \"Function\";\nBuiltinTypeName[BuiltinTypeName.Inferred] = \"Inferred\";\nvar BuiltinType = (function (_super) {\n    __extends(BuiltinType, _super);\n    /**\n     * @param {?} name\n     * @param {?=} modifiers\n     */\n    function BuiltinType(name, modifiers) {\n        if (modifiers === void 0) { modifiers = null; }\n        var _this = _super.call(this, modifiers) || this;\n        _this.name = name;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    BuiltinType.prototype.visitType = function (visitor, context) {\n        return visitor.visitBuiltintType(this, context);\n    };\n    return BuiltinType;\n}(Type$1));\nvar ExpressionType = (function (_super) {\n    __extends(ExpressionType, _super);\n    /**\n     * @param {?} value\n     * @param {?=} modifiers\n     */\n    function ExpressionType(value, modifiers) {\n        if (modifiers === void 0) { modifiers = null; }\n        var _this = _super.call(this, modifiers) || this;\n        _this.value = value;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    ExpressionType.prototype.visitType = function (visitor, context) {\n        return visitor.visitExpressionType(this, context);\n    };\n    return ExpressionType;\n}(Type$1));\nvar ArrayType = (function (_super) {\n    __extends(ArrayType, _super);\n    /**\n     * @param {?} of\n     * @param {?=} modifiers\n     */\n    function ArrayType(of, modifiers) {\n        if (modifiers === void 0) { modifiers = null; }\n        var _this = _super.call(this, modifiers) || this;\n        _this.of = of;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    ArrayType.prototype.visitType = function (visitor, context) {\n        return visitor.visitArrayType(this, context);\n    };\n    return ArrayType;\n}(Type$1));\nvar MapType = (function (_super) {\n    __extends(MapType, _super);\n    /**\n     * @param {?} valueType\n     * @param {?=} modifiers\n     */\n    function MapType(valueType, modifiers) {\n        if (modifiers === void 0) { modifiers = null; }\n        var _this = _super.call(this, modifiers) || this;\n        _this.valueType = valueType;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    MapType.prototype.visitType = function (visitor, context) { return visitor.visitMapType(this, context); };\n    return MapType;\n}(Type$1));\nvar DYNAMIC_TYPE = new BuiltinType(BuiltinTypeName.Dynamic);\nvar INFERRED_TYPE = new BuiltinType(BuiltinTypeName.Inferred);\nvar BOOL_TYPE = new BuiltinType(BuiltinTypeName.Bool);\nvar INT_TYPE = new BuiltinType(BuiltinTypeName.Int);\nvar NUMBER_TYPE = new BuiltinType(BuiltinTypeName.Number);\nvar STRING_TYPE = new BuiltinType(BuiltinTypeName.String);\nvar FUNCTION_TYPE = new BuiltinType(BuiltinTypeName.Function);\nvar BinaryOperator = {};\nBinaryOperator.Equals = 0;\nBinaryOperator.NotEquals = 1;\nBinaryOperator.Identical = 2;\nBinaryOperator.NotIdentical = 3;\nBinaryOperator.Minus = 4;\nBinaryOperator.Plus = 5;\nBinaryOperator.Divide = 6;\nBinaryOperator.Multiply = 7;\nBinaryOperator.Modulo = 8;\nBinaryOperator.And = 9;\nBinaryOperator.Or = 10;\nBinaryOperator.Lower = 11;\nBinaryOperator.LowerEquals = 12;\nBinaryOperator.Bigger = 13;\nBinaryOperator.BiggerEquals = 14;\nBinaryOperator[BinaryOperator.Equals] = \"Equals\";\nBinaryOperator[BinaryOperator.NotEquals] = \"NotEquals\";\nBinaryOperator[BinaryOperator.Identical] = \"Identical\";\nBinaryOperator[BinaryOperator.NotIdentical] = \"NotIdentical\";\nBinaryOperator[BinaryOperator.Minus] = \"Minus\";\nBinaryOperator[BinaryOperator.Plus] = \"Plus\";\nBinaryOperator[BinaryOperator.Divide] = \"Divide\";\nBinaryOperator[BinaryOperator.Multiply] = \"Multiply\";\nBinaryOperator[BinaryOperator.Modulo] = \"Modulo\";\nBinaryOperator[BinaryOperator.And] = \"And\";\nBinaryOperator[BinaryOperator.Or] = \"Or\";\nBinaryOperator[BinaryOperator.Lower] = \"Lower\";\nBinaryOperator[BinaryOperator.LowerEquals] = \"LowerEquals\";\nBinaryOperator[BinaryOperator.Bigger] = \"Bigger\";\nBinaryOperator[BinaryOperator.BiggerEquals] = \"BiggerEquals\";\n/**\n * @abstract\n */\nvar Expression = (function () {\n    /**\n     * @param {?} type\n     * @param {?=} sourceSpan\n     */\n    function Expression(type, sourceSpan) {\n        this.type = type;\n        this.sourceSpan = sourceSpan;\n    }\n    /**\n     * @abstract\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    Expression.prototype.visitExpression = function (visitor, context) { };\n    /**\n     * @param {?} name\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.prop = function (name, sourceSpan) {\n        return new ReadPropExpr(this, name, null, sourceSpan);\n    };\n    /**\n     * @param {?} index\n     * @param {?=} type\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.key = function (index, type, sourceSpan) {\n        if (type === void 0) { type = null; }\n        return new ReadKeyExpr(this, index, type, sourceSpan);\n    };\n    /**\n     * @param {?} name\n     * @param {?} params\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.callMethod = function (name, params, sourceSpan) {\n        return new InvokeMethodExpr(this, name, params, null, sourceSpan);\n    };\n    /**\n     * @param {?} params\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.callFn = function (params, sourceSpan) {\n        return new InvokeFunctionExpr(this, params, null, sourceSpan);\n    };\n    /**\n     * @param {?} params\n     * @param {?=} type\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.instantiate = function (params, type, sourceSpan) {\n        if (type === void 0) { type = null; }\n        return new InstantiateExpr(this, params, type, sourceSpan);\n    };\n    /**\n     * @param {?} trueCase\n     * @param {?=} falseCase\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.conditional = function (trueCase, falseCase, sourceSpan) {\n        if (falseCase === void 0) { falseCase = null; }\n        return new ConditionalExpr(this, trueCase, falseCase, null, sourceSpan);\n    };\n    /**\n     * @param {?} rhs\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.equals = function (rhs, sourceSpan) {\n        return new BinaryOperatorExpr(BinaryOperator.Equals, this, rhs, null, sourceSpan);\n    };\n    /**\n     * @param {?} rhs\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.notEquals = function (rhs, sourceSpan) {\n        return new BinaryOperatorExpr(BinaryOperator.NotEquals, this, rhs, null, sourceSpan);\n    };\n    /**\n     * @param {?} rhs\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.identical = function (rhs, sourceSpan) {\n        return new BinaryOperatorExpr(BinaryOperator.Identical, this, rhs, null, sourceSpan);\n    };\n    /**\n     * @param {?} rhs\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.notIdentical = function (rhs, sourceSpan) {\n        return new BinaryOperatorExpr(BinaryOperator.NotIdentical, this, rhs, null, sourceSpan);\n    };\n    /**\n     * @param {?} rhs\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.minus = function (rhs, sourceSpan) {\n        return new BinaryOperatorExpr(BinaryOperator.Minus, this, rhs, null, sourceSpan);\n    };\n    /**\n     * @param {?} rhs\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.plus = function (rhs, sourceSpan) {\n        return new BinaryOperatorExpr(BinaryOperator.Plus, this, rhs, null, sourceSpan);\n    };\n    /**\n     * @param {?} rhs\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.divide = function (rhs, sourceSpan) {\n        return new BinaryOperatorExpr(BinaryOperator.Divide, this, rhs, null, sourceSpan);\n    };\n    /**\n     * @param {?} rhs\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.multiply = function (rhs, sourceSpan) {\n        return new BinaryOperatorExpr(BinaryOperator.Multiply, this, rhs, null, sourceSpan);\n    };\n    /**\n     * @param {?} rhs\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.modulo = function (rhs, sourceSpan) {\n        return new BinaryOperatorExpr(BinaryOperator.Modulo, this, rhs, null, sourceSpan);\n    };\n    /**\n     * @param {?} rhs\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.and = function (rhs, sourceSpan) {\n        return new BinaryOperatorExpr(BinaryOperator.And, this, rhs, null, sourceSpan);\n    };\n    /**\n     * @param {?} rhs\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.or = function (rhs, sourceSpan) {\n        return new BinaryOperatorExpr(BinaryOperator.Or, this, rhs, null, sourceSpan);\n    };\n    /**\n     * @param {?} rhs\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.lower = function (rhs, sourceSpan) {\n        return new BinaryOperatorExpr(BinaryOperator.Lower, this, rhs, null, sourceSpan);\n    };\n    /**\n     * @param {?} rhs\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.lowerEquals = function (rhs, sourceSpan) {\n        return new BinaryOperatorExpr(BinaryOperator.LowerEquals, this, rhs, null, sourceSpan);\n    };\n    /**\n     * @param {?} rhs\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.bigger = function (rhs, sourceSpan) {\n        return new BinaryOperatorExpr(BinaryOperator.Bigger, this, rhs, null, sourceSpan);\n    };\n    /**\n     * @param {?} rhs\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.biggerEquals = function (rhs, sourceSpan) {\n        return new BinaryOperatorExpr(BinaryOperator.BiggerEquals, this, rhs, null, sourceSpan);\n    };\n    /**\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.isBlank = function (sourceSpan) {\n        // Note: We use equals by purpose here to compare to null and undefined in JS.\n        // We use the typed null to allow strictNullChecks to narrow types.\n        return this.equals(TYPED_NULL_EXPR, sourceSpan);\n    };\n    /**\n     * @param {?} type\n     * @param {?=} sourceSpan\n     * @return {?}\n     */\n    Expression.prototype.cast = function (type, sourceSpan) {\n        return new CastExpr(this, type, sourceSpan);\n    };\n    /**\n     * @return {?}\n     */\n    Expression.prototype.toStmt = function () { return new ExpressionStatement(this); };\n    return Expression;\n}());\nvar BuiltinVar = {};\nBuiltinVar.This = 0;\nBuiltinVar.Super = 1;\nBuiltinVar.CatchError = 2;\nBuiltinVar.CatchStack = 3;\nBuiltinVar[BuiltinVar.This] = \"This\";\nBuiltinVar[BuiltinVar.Super] = \"Super\";\nBuiltinVar[BuiltinVar.CatchError] = \"CatchError\";\nBuiltinVar[BuiltinVar.CatchStack] = \"CatchStack\";\nvar ReadVarExpr = (function (_super) {\n    __extends(ReadVarExpr, _super);\n    /**\n     * @param {?} name\n     * @param {?=} type\n     * @param {?=} sourceSpan\n     */\n    function ReadVarExpr(name, type, sourceSpan) {\n        if (type === void 0) { type = null; }\n        var _this = _super.call(this, type, sourceSpan) || this;\n        if (typeof name === 'string') {\n            _this.name = name;\n            _this.builtin = null;\n        }\n        else {\n            _this.name = null;\n            _this.builtin = name;\n        }\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    ReadVarExpr.prototype.visitExpression = function (visitor, context) {\n        return visitor.visitReadVarExpr(this, context);\n    };\n    /**\n     * @param {?} value\n     * @return {?}\n     */\n    ReadVarExpr.prototype.set = function (value) {\n        return new WriteVarExpr(this.name, value, null, this.sourceSpan);\n    };\n    return ReadVarExpr;\n}(Expression));\nvar WriteVarExpr = (function (_super) {\n    __extends(WriteVarExpr, _super);\n    /**\n     * @param {?} name\n     * @param {?} value\n     * @param {?=} type\n     * @param {?=} sourceSpan\n     */\n    function WriteVarExpr(name, value, type, sourceSpan) {\n        if (type === void 0) { type = null; }\n        var _this = _super.call(this, type || value.type, sourceSpan) || this;\n        _this.name = name;\n        _this.value = value;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    WriteVarExpr.prototype.visitExpression = function (visitor, context) {\n        return visitor.visitWriteVarExpr(this, context);\n    };\n    /**\n     * @param {?=} type\n     * @param {?=} modifiers\n     * @return {?}\n     */\n    WriteVarExpr.prototype.toDeclStmt = function (type, modifiers) {\n        if (type === void 0) { type = null; }\n        if (modifiers === void 0) { modifiers = null; }\n        return new DeclareVarStmt(this.name, this.value, type, modifiers, this.sourceSpan);\n    };\n    return WriteVarExpr;\n}(Expression));\nvar WriteKeyExpr = (function (_super) {\n    __extends(WriteKeyExpr, _super);\n    /**\n     * @param {?} receiver\n     * @param {?} index\n     * @param {?} value\n     * @param {?=} type\n     * @param {?=} sourceSpan\n     */\n    function WriteKeyExpr(receiver, index, value, type, sourceSpan) {\n        if (type === void 0) { type = null; }\n        var _this = _super.call(this, type || value.type, sourceSpan) || this;\n        _this.receiver = receiver;\n        _this.index = index;\n        _this.value = value;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    WriteKeyExpr.prototype.visitExpression = function (visitor, context) {\n        return visitor.visitWriteKeyExpr(this, context);\n    };\n    return WriteKeyExpr;\n}(Expression));\nvar WritePropExpr = (function (_super) {\n    __extends(WritePropExpr, _super);\n    /**\n     * @param {?} receiver\n     * @param {?} name\n     * @param {?} value\n     * @param {?=} type\n     * @param {?=} sourceSpan\n     */\n    function WritePropExpr(receiver, name, value, type, sourceSpan) {\n        if (type === void 0) { type = null; }\n        var _this = _super.call(this, type || value.type, sourceSpan) || this;\n        _this.receiver = receiver;\n        _this.name = name;\n        _this.value = value;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    WritePropExpr.prototype.visitExpression = function (visitor, context) {\n        return visitor.visitWritePropExpr(this, context);\n    };\n    return WritePropExpr;\n}(Expression));\nvar BuiltinMethod = {};\nBuiltinMethod.ConcatArray = 0;\nBuiltinMethod.SubscribeObservable = 1;\nBuiltinMethod.Bind = 2;\nBuiltinMethod[BuiltinMethod.ConcatArray] = \"ConcatArray\";\nBuiltinMethod[BuiltinMethod.SubscribeObservable] = \"SubscribeObservable\";\nBuiltinMethod[BuiltinMethod.Bind] = \"Bind\";\nvar InvokeMethodExpr = (function (_super) {\n    __extends(InvokeMethodExpr, _super);\n    /**\n     * @param {?} receiver\n     * @param {?} method\n     * @param {?} args\n     * @param {?=} type\n     * @param {?=} sourceSpan\n     */\n    function InvokeMethodExpr(receiver, method, args, type, sourceSpan) {\n        if (type === void 0) { type = null; }\n        var _this = _super.call(this, type, sourceSpan) || this;\n        _this.receiver = receiver;\n        _this.args = args;\n        if (typeof method === 'string') {\n            _this.name = method;\n            _this.builtin = null;\n        }\n        else {\n            _this.name = null;\n            _this.builtin = method;\n        }\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    InvokeMethodExpr.prototype.visitExpression = function (visitor, context) {\n        return visitor.visitInvokeMethodExpr(this, context);\n    };\n    return InvokeMethodExpr;\n}(Expression));\nvar InvokeFunctionExpr = (function (_super) {\n    __extends(InvokeFunctionExpr, _super);\n    /**\n     * @param {?} fn\n     * @param {?} args\n     * @param {?=} type\n     * @param {?=} sourceSpan\n     */\n    function InvokeFunctionExpr(fn, args, type, sourceSpan) {\n        if (type === void 0) { type = null; }\n        var _this = _super.call(this, type, sourceSpan) || this;\n        _this.fn = fn;\n        _this.args = args;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    InvokeFunctionExpr.prototype.visitExpression = function (visitor, context) {\n        return visitor.visitInvokeFunctionExpr(this, context);\n    };\n    return InvokeFunctionExpr;\n}(Expression));\nvar InstantiateExpr = (function (_super) {\n    __extends(InstantiateExpr, _super);\n    /**\n     * @param {?} classExpr\n     * @param {?} args\n     * @param {?=} type\n     * @param {?=} sourceSpan\n     */\n    function InstantiateExpr(classExpr, args, type, sourceSpan) {\n        var _this = _super.call(this, type, sourceSpan) || this;\n        _this.classExpr = classExpr;\n        _this.args = args;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    InstantiateExpr.prototype.visitExpression = function (visitor, context) {\n        return visitor.visitInstantiateExpr(this, context);\n    };\n    return InstantiateExpr;\n}(Expression));\nvar LiteralExpr = (function (_super) {\n    __extends(LiteralExpr, _super);\n    /**\n     * @param {?} value\n     * @param {?=} type\n     * @param {?=} sourceSpan\n     */\n    function LiteralExpr(value, type, sourceSpan) {\n        if (type === void 0) { type = null; }\n        var _this = _super.call(this, type, sourceSpan) || this;\n        _this.value = value;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    LiteralExpr.prototype.visitExpression = function (visitor, context) {\n        return visitor.visitLiteralExpr(this, context);\n    };\n    return LiteralExpr;\n}(Expression));\nvar ExternalExpr = (function (_super) {\n    __extends(ExternalExpr, _super);\n    /**\n     * @param {?} value\n     * @param {?=} type\n     * @param {?=} typeParams\n     * @param {?=} sourceSpan\n     */\n    function ExternalExpr(value, type, typeParams, sourceSpan) {\n        if (type === void 0) { type = null; }\n        if (typeParams === void 0) { typeParams = null; }\n        var _this = _super.call(this, type, sourceSpan) || this;\n        _this.value = value;\n        _this.typeParams = typeParams;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    ExternalExpr.prototype.visitExpression = function (visitor, context) {\n        return visitor.visitExternalExpr(this, context);\n    };\n    return ExternalExpr;\n}(Expression));\nvar ConditionalExpr = (function (_super) {\n    __extends(ConditionalExpr, _super);\n    /**\n     * @param {?} condition\n     * @param {?} trueCase\n     * @param {?=} falseCase\n     * @param {?=} type\n     * @param {?=} sourceSpan\n     */\n    function ConditionalExpr(condition, trueCase, falseCase, type, sourceSpan) {\n        if (falseCase === void 0) { falseCase = null; }\n        if (type === void 0) { type = null; }\n        var _this = _super.call(this, type || trueCase.type, sourceSpan) || this;\n        _this.condition = condition;\n        _this.falseCase = falseCase;\n        _this.trueCase = trueCase;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    ConditionalExpr.prototype.visitExpression = function (visitor, context) {\n        return visitor.visitConditionalExpr(this, context);\n    };\n    return ConditionalExpr;\n}(Expression));\nvar NotExpr = (function (_super) {\n    __extends(NotExpr, _super);\n    /**\n     * @param {?} condition\n     * @param {?=} sourceSpan\n     */\n    function NotExpr(condition, sourceSpan) {\n        var _this = _super.call(this, BOOL_TYPE, sourceSpan) || this;\n        _this.condition = condition;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    NotExpr.prototype.visitExpression = function (visitor, context) {\n        return visitor.visitNotExpr(this, context);\n    };\n    return NotExpr;\n}(Expression));\nvar CastExpr = (function (_super) {\n    __extends(CastExpr, _super);\n    /**\n     * @param {?} value\n     * @param {?} type\n     * @param {?=} sourceSpan\n     */\n    function CastExpr(value, type, sourceSpan) {\n        var _this = _super.call(this, type, sourceSpan) || this;\n        _this.value = value;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    CastExpr.prototype.visitExpression = function (visitor, context) {\n        return visitor.visitCastExpr(this, context);\n    };\n    return CastExpr;\n}(Expression));\nvar FnParam = (function () {\n    /**\n     * @param {?} name\n     * @param {?=} type\n     */\n    function FnParam(name, type) {\n        if (type === void 0) { type = null; }\n        this.name = name;\n        this.type = type;\n    }\n    return FnParam;\n}());\nvar FunctionExpr = (function (_super) {\n    __extends(FunctionExpr, _super);\n    /**\n     * @param {?} params\n     * @param {?} statements\n     * @param {?=} type\n     * @param {?=} sourceSpan\n     */\n    function FunctionExpr(params, statements, type, sourceSpan) {\n        if (type === void 0) { type = null; }\n        var _this = _super.call(this, type, sourceSpan) || this;\n        _this.params = params;\n        _this.statements = statements;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    FunctionExpr.prototype.visitExpression = function (visitor, context) {\n        return visitor.visitFunctionExpr(this, context);\n    };\n    /**\n     * @param {?} name\n     * @param {?=} modifiers\n     * @return {?}\n     */\n    FunctionExpr.prototype.toDeclStmt = function (name, modifiers) {\n        if (modifiers === void 0) { modifiers = null; }\n        return new DeclareFunctionStmt(name, this.params, this.statements, this.type, modifiers, this.sourceSpan);\n    };\n    return FunctionExpr;\n}(Expression));\nvar BinaryOperatorExpr = (function (_super) {\n    __extends(BinaryOperatorExpr, _super);\n    /**\n     * @param {?} operator\n     * @param {?} lhs\n     * @param {?} rhs\n     * @param {?=} type\n     * @param {?=} sourceSpan\n     */\n    function BinaryOperatorExpr(operator, lhs, rhs, type, sourceSpan) {\n        if (type === void 0) { type = null; }\n        var _this = _super.call(this, type || lhs.type, sourceSpan) || this;\n        _this.operator = operator;\n        _this.rhs = rhs;\n        _this.lhs = lhs;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    BinaryOperatorExpr.prototype.visitExpression = function (visitor, context) {\n        return visitor.visitBinaryOperatorExpr(this, context);\n    };\n    return BinaryOperatorExpr;\n}(Expression));\nvar ReadPropExpr = (function (_super) {\n    __extends(ReadPropExpr, _super);\n    /**\n     * @param {?} receiver\n     * @param {?} name\n     * @param {?=} type\n     * @param {?=} sourceSpan\n     */\n    function ReadPropExpr(receiver, name, type, sourceSpan) {\n        if (type === void 0) { type = null; }\n        var _this = _super.call(this, type, sourceSpan) || this;\n        _this.receiver = receiver;\n        _this.name = name;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    ReadPropExpr.prototype.visitExpression = function (visitor, context) {\n        return visitor.visitReadPropExpr(this, context);\n    };\n    /**\n     * @param {?} value\n     * @return {?}\n     */\n    ReadPropExpr.prototype.set = function (value) {\n        return new WritePropExpr(this.receiver, this.name, value, null, this.sourceSpan);\n    };\n    return ReadPropExpr;\n}(Expression));\nvar ReadKeyExpr = (function (_super) {\n    __extends(ReadKeyExpr, _super);\n    /**\n     * @param {?} receiver\n     * @param {?} index\n     * @param {?=} type\n     * @param {?=} sourceSpan\n     */\n    function ReadKeyExpr(receiver, index, type, sourceSpan) {\n        if (type === void 0) { type = null; }\n        var _this = _super.call(this, type, sourceSpan) || this;\n        _this.receiver = receiver;\n        _this.index = index;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    ReadKeyExpr.prototype.visitExpression = function (visitor, context) {\n        return visitor.visitReadKeyExpr(this, context);\n    };\n    /**\n     * @param {?} value\n     * @return {?}\n     */\n    ReadKeyExpr.prototype.set = function (value) {\n        return new WriteKeyExpr(this.receiver, this.index, value, null, this.sourceSpan);\n    };\n    return ReadKeyExpr;\n}(Expression));\nvar LiteralArrayExpr = (function (_super) {\n    __extends(LiteralArrayExpr, _super);\n    /**\n     * @param {?} entries\n     * @param {?=} type\n     * @param {?=} sourceSpan\n     */\n    function LiteralArrayExpr(entries, type, sourceSpan) {\n        if (type === void 0) { type = null; }\n        var _this = _super.call(this, type, sourceSpan) || this;\n        _this.entries = entries;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    LiteralArrayExpr.prototype.visitExpression = function (visitor, context) {\n        return visitor.visitLiteralArrayExpr(this, context);\n    };\n    return LiteralArrayExpr;\n}(Expression));\nvar LiteralMapEntry = (function () {\n    /**\n     * @param {?} key\n     * @param {?} value\n     * @param {?=} quoted\n     */\n    function LiteralMapEntry(key, value, quoted) {\n        if (quoted === void 0) { quoted = false; }\n        this.key = key;\n        this.value = value;\n        this.quoted = quoted;\n    }\n    return LiteralMapEntry;\n}());\nvar LiteralMapExpr = (function (_super) {\n    __extends(LiteralMapExpr, _super);\n    /**\n     * @param {?} entries\n     * @param {?=} type\n     * @param {?=} sourceSpan\n     */\n    function LiteralMapExpr(entries, type, sourceSpan) {\n        if (type === void 0) { type = null; }\n        var _this = _super.call(this, type, sourceSpan) || this;\n        _this.entries = entries;\n        _this.valueType = null;\n        if (type) {\n            _this.valueType = type.valueType;\n        }\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    LiteralMapExpr.prototype.visitExpression = function (visitor, context) {\n        return visitor.visitLiteralMapExpr(this, context);\n    };\n    return LiteralMapExpr;\n}(Expression));\nvar CommaExpr = (function (_super) {\n    __extends(CommaExpr, _super);\n    /**\n     * @param {?} parts\n     * @param {?=} sourceSpan\n     */\n    function CommaExpr(parts, sourceSpan) {\n        var _this = _super.call(this, parts[parts.length - 1].type, sourceSpan) || this;\n        _this.parts = parts;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    CommaExpr.prototype.visitExpression = function (visitor, context) {\n        return visitor.visitCommaExpr(this, context);\n    };\n    return CommaExpr;\n}(Expression));\nvar THIS_EXPR = new ReadVarExpr(BuiltinVar.This);\nvar SUPER_EXPR = new ReadVarExpr(BuiltinVar.Super);\nvar CATCH_ERROR_VAR = new ReadVarExpr(BuiltinVar.CatchError);\nvar CATCH_STACK_VAR = new ReadVarExpr(BuiltinVar.CatchStack);\nvar NULL_EXPR = new LiteralExpr(null, null);\nvar TYPED_NULL_EXPR = new LiteralExpr(null, INFERRED_TYPE);\nvar StmtModifier = {};\nStmtModifier.Final = 0;\nStmtModifier.Private = 1;\nStmtModifier[StmtModifier.Final] = \"Final\";\nStmtModifier[StmtModifier.Private] = \"Private\";\n/**\n * @abstract\n */\nvar Statement = (function () {\n    /**\n     * @param {?=} modifiers\n     * @param {?=} sourceSpan\n     */\n    function Statement(modifiers, sourceSpan) {\n        if (modifiers === void 0) { modifiers = null; }\n        this.modifiers = modifiers;\n        this.sourceSpan = sourceSpan;\n        if (!modifiers) {\n            this.modifiers = [];\n        }\n    }\n    /**\n     * @abstract\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    Statement.prototype.visitStatement = function (visitor, context) { };\n    /**\n     * @param {?} modifier\n     * @return {?}\n     */\n    Statement.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; };\n    return Statement;\n}());\nvar DeclareVarStmt = (function (_super) {\n    __extends(DeclareVarStmt, _super);\n    /**\n     * @param {?} name\n     * @param {?} value\n     * @param {?=} type\n     * @param {?=} modifiers\n     * @param {?=} sourceSpan\n     */\n    function DeclareVarStmt(name, value, type, modifiers, sourceSpan) {\n        if (type === void 0) { type = null; }\n        if (modifiers === void 0) { modifiers = null; }\n        var _this = _super.call(this, modifiers, sourceSpan) || this;\n        _this.name = name;\n        _this.value = value;\n        _this.type = type || value.type;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    DeclareVarStmt.prototype.visitStatement = function (visitor, context) {\n        return visitor.visitDeclareVarStmt(this, context);\n    };\n    return DeclareVarStmt;\n}(Statement));\nvar DeclareFunctionStmt = (function (_super) {\n    __extends(DeclareFunctionStmt, _super);\n    /**\n     * @param {?} name\n     * @param {?} params\n     * @param {?} statements\n     * @param {?=} type\n     * @param {?=} modifiers\n     * @param {?=} sourceSpan\n     */\n    function DeclareFunctionStmt(name, params, statements, type, modifiers, sourceSpan) {\n        if (type === void 0) { type = null; }\n        if (modifiers === void 0) { modifiers = null; }\n        var _this = _super.call(this, modifiers, sourceSpan) || this;\n        _this.name = name;\n        _this.params = params;\n        _this.statements = statements;\n        _this.type = type;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    DeclareFunctionStmt.prototype.visitStatement = function (visitor, context) {\n        return visitor.visitDeclareFunctionStmt(this, context);\n    };\n    return DeclareFunctionStmt;\n}(Statement));\nvar ExpressionStatement = (function (_super) {\n    __extends(ExpressionStatement, _super);\n    /**\n     * @param {?} expr\n     * @param {?=} sourceSpan\n     */\n    function ExpressionStatement(expr, sourceSpan) {\n        var _this = _super.call(this, null, sourceSpan) || this;\n        _this.expr = expr;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    ExpressionStatement.prototype.visitStatement = function (visitor, context) {\n        return visitor.visitExpressionStmt(this, context);\n    };\n    return ExpressionStatement;\n}(Statement));\nvar ReturnStatement = (function (_super) {\n    __extends(ReturnStatement, _super);\n    /**\n     * @param {?} value\n     * @param {?=} sourceSpan\n     */\n    function ReturnStatement(value, sourceSpan) {\n        var _this = _super.call(this, null, sourceSpan) || this;\n        _this.value = value;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    ReturnStatement.prototype.visitStatement = function (visitor, context) {\n        return visitor.visitReturnStmt(this, context);\n    };\n    return ReturnStatement;\n}(Statement));\nvar AbstractClassPart = (function () {\n    /**\n     * @param {?=} type\n     * @param {?=} modifiers\n     */\n    function AbstractClassPart(type, modifiers) {\n        if (type === void 0) { type = null; }\n        this.type = type;\n        this.modifiers = modifiers;\n        if (!modifiers) {\n            this.modifiers = [];\n        }\n    }\n    /**\n     * @param {?} modifier\n     * @return {?}\n     */\n    AbstractClassPart.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; };\n    return AbstractClassPart;\n}());\nvar ClassField = (function (_super) {\n    __extends(ClassField, _super);\n    /**\n     * @param {?} name\n     * @param {?=} type\n     * @param {?=} modifiers\n     */\n    function ClassField(name, type, modifiers) {\n        if (type === void 0) { type = null; }\n        if (modifiers === void 0) { modifiers = null; }\n        var _this = _super.call(this, type, modifiers) || this;\n        _this.name = name;\n        return _this;\n    }\n    return ClassField;\n}(AbstractClassPart));\nvar ClassMethod = (function (_super) {\n    __extends(ClassMethod, _super);\n    /**\n     * @param {?} name\n     * @param {?} params\n     * @param {?} body\n     * @param {?=} type\n     * @param {?=} modifiers\n     */\n    function ClassMethod(name, params, body, type, modifiers) {\n        if (type === void 0) { type = null; }\n        if (modifiers === void 0) { modifiers = null; }\n        var _this = _super.call(this, type, modifiers) || this;\n        _this.name = name;\n        _this.params = params;\n        _this.body = body;\n        return _this;\n    }\n    return ClassMethod;\n}(AbstractClassPart));\nvar ClassGetter = (function (_super) {\n    __extends(ClassGetter, _super);\n    /**\n     * @param {?} name\n     * @param {?} body\n     * @param {?=} type\n     * @param {?=} modifiers\n     */\n    function ClassGetter(name, body, type, modifiers) {\n        if (type === void 0) { type = null; }\n        if (modifiers === void 0) { modifiers = null; }\n        var _this = _super.call(this, type, modifiers) || this;\n        _this.name = name;\n        _this.body = body;\n        return _this;\n    }\n    return ClassGetter;\n}(AbstractClassPart));\nvar ClassStmt = (function (_super) {\n    __extends(ClassStmt, _super);\n    /**\n     * @param {?} name\n     * @param {?} parent\n     * @param {?} fields\n     * @param {?} getters\n     * @param {?} constructorMethod\n     * @param {?} methods\n     * @param {?=} modifiers\n     * @param {?=} sourceSpan\n     */\n    function ClassStmt(name, parent, fields, getters, constructorMethod, methods, modifiers, sourceSpan) {\n        if (modifiers === void 0) { modifiers = null; }\n        var _this = _super.call(this, modifiers, sourceSpan) || this;\n        _this.name = name;\n        _this.parent = parent;\n        _this.fields = fields;\n        _this.getters = getters;\n        _this.constructorMethod = constructorMethod;\n        _this.methods = methods;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    ClassStmt.prototype.visitStatement = function (visitor, context) {\n        return visitor.visitDeclareClassStmt(this, context);\n    };\n    return ClassStmt;\n}(Statement));\nvar IfStmt = (function (_super) {\n    __extends(IfStmt, _super);\n    /**\n     * @param {?} condition\n     * @param {?} trueCase\n     * @param {?=} falseCase\n     * @param {?=} sourceSpan\n     */\n    function IfStmt(condition, trueCase, falseCase, sourceSpan) {\n        if (falseCase === void 0) { falseCase = []; }\n        var _this = _super.call(this, null, sourceSpan) || this;\n        _this.condition = condition;\n        _this.trueCase = trueCase;\n        _this.falseCase = falseCase;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    IfStmt.prototype.visitStatement = function (visitor, context) {\n        return visitor.visitIfStmt(this, context);\n    };\n    return IfStmt;\n}(Statement));\nvar TryCatchStmt = (function (_super) {\n    __extends(TryCatchStmt, _super);\n    /**\n     * @param {?} bodyStmts\n     * @param {?} catchStmts\n     * @param {?=} sourceSpan\n     */\n    function TryCatchStmt(bodyStmts, catchStmts, sourceSpan) {\n        var _this = _super.call(this, null, sourceSpan) || this;\n        _this.bodyStmts = bodyStmts;\n        _this.catchStmts = catchStmts;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    TryCatchStmt.prototype.visitStatement = function (visitor, context) {\n        return visitor.visitTryCatchStmt(this, context);\n    };\n    return TryCatchStmt;\n}(Statement));\nvar ThrowStmt = (function (_super) {\n    __extends(ThrowStmt, _super);\n    /**\n     * @param {?} error\n     * @param {?=} sourceSpan\n     */\n    function ThrowStmt(error, sourceSpan) {\n        var _this = _super.call(this, null, sourceSpan) || this;\n        _this.error = error;\n        return _this;\n    }\n    /**\n     * @param {?} visitor\n     * @param {?} context\n     * @return {?}\n     */\n    ThrowStmt.prototype.visitStatement = function (visitor, context) {\n        return visitor.visitThrowStmt(this, context);\n    };\n    return ThrowStmt;\n}(Statement));\nvar AstTransformer$1 = (function () {\n    function AstTransformer$1() {\n    }\n    /**\n     * @param {?} expr\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.transformExpr = function (expr, context) { return expr; };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.transformStmt = function (stmt, context) { return stmt; };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitReadVarExpr = function (ast, context) { return this.transformExpr(ast, context); };\n    /**\n     * @param {?} expr\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitWriteVarExpr = function (expr, context) {\n        return this.transformExpr(new WriteVarExpr(expr.name, expr.value.visitExpression(this, context), expr.type, expr.sourceSpan), context);\n    };\n    /**\n     * @param {?} expr\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitWriteKeyExpr = function (expr, context) {\n        return this.transformExpr(new WriteKeyExpr(expr.receiver.visitExpression(this, context), expr.index.visitExpression(this, context), expr.value.visitExpression(this, context), expr.type, expr.sourceSpan), context);\n    };\n    /**\n     * @param {?} expr\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitWritePropExpr = function (expr, context) {\n        return this.transformExpr(new WritePropExpr(expr.receiver.visitExpression(this, context), expr.name, expr.value.visitExpression(this, context), expr.type, expr.sourceSpan), context);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitInvokeMethodExpr = function (ast, context) {\n        var /** @type {?} */ method = ast.builtin || ast.name;\n        return this.transformExpr(new InvokeMethodExpr(ast.receiver.visitExpression(this, context), method, this.visitAllExpressions(ast.args, context), ast.type, ast.sourceSpan), context);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitInvokeFunctionExpr = function (ast, context) {\n        return this.transformExpr(new InvokeFunctionExpr(ast.fn.visitExpression(this, context), this.visitAllExpressions(ast.args, context), ast.type, ast.sourceSpan), context);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitInstantiateExpr = function (ast, context) {\n        return this.transformExpr(new InstantiateExpr(ast.classExpr.visitExpression(this, context), this.visitAllExpressions(ast.args, context), ast.type, ast.sourceSpan), context);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitLiteralExpr = function (ast, context) { return this.transformExpr(ast, context); };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitExternalExpr = function (ast, context) {\n        return this.transformExpr(ast, context);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitConditionalExpr = function (ast, context) {\n        return this.transformExpr(new ConditionalExpr(ast.condition.visitExpression(this, context), ast.trueCase.visitExpression(this, context), ast.falseCase.visitExpression(this, context), ast.type, ast.sourceSpan), context);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitNotExpr = function (ast, context) {\n        return this.transformExpr(new NotExpr(ast.condition.visitExpression(this, context), ast.sourceSpan), context);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitCastExpr = function (ast, context) {\n        return this.transformExpr(new CastExpr(ast.value.visitExpression(this, context), ast.type, ast.sourceSpan), context);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitFunctionExpr = function (ast, context) {\n        return this.transformExpr(new FunctionExpr(ast.params, this.visitAllStatements(ast.statements, context), ast.type, ast.sourceSpan), context);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitBinaryOperatorExpr = function (ast, context) {\n        return this.transformExpr(new BinaryOperatorExpr(ast.operator, ast.lhs.visitExpression(this, context), ast.rhs.visitExpression(this, context), ast.type, ast.sourceSpan), context);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitReadPropExpr = function (ast, context) {\n        return this.transformExpr(new ReadPropExpr(ast.receiver.visitExpression(this, context), ast.name, ast.type, ast.sourceSpan), context);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitReadKeyExpr = function (ast, context) {\n        return this.transformExpr(new ReadKeyExpr(ast.receiver.visitExpression(this, context), ast.index.visitExpression(this, context), ast.type, ast.sourceSpan), context);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitLiteralArrayExpr = function (ast, context) {\n        return this.transformExpr(new LiteralArrayExpr(this.visitAllExpressions(ast.entries, context), ast.type, ast.sourceSpan), context);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitLiteralMapExpr = function (ast, context) {\n        var _this = this;\n        var /** @type {?} */ entries = ast.entries.map(function (entry) { return new LiteralMapEntry(entry.key, entry.value.visitExpression(_this, context), entry.quoted); });\n        var /** @type {?} */ mapType = new MapType(ast.valueType);\n        return this.transformExpr(new LiteralMapExpr(entries, mapType, ast.sourceSpan), context);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitCommaExpr = function (ast, context) {\n        return this.transformExpr(new CommaExpr(this.visitAllExpressions(ast.parts, context), ast.sourceSpan), context);\n    };\n    /**\n     * @param {?} exprs\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitAllExpressions = function (exprs, context) {\n        var _this = this;\n        return exprs.map(function (expr) { return expr.visitExpression(_this, context); });\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitDeclareVarStmt = function (stmt, context) {\n        return this.transformStmt(new DeclareVarStmt(stmt.name, stmt.value.visitExpression(this, context), stmt.type, stmt.modifiers, stmt.sourceSpan), context);\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitDeclareFunctionStmt = function (stmt, context) {\n        return this.transformStmt(new DeclareFunctionStmt(stmt.name, stmt.params, this.visitAllStatements(stmt.statements, context), stmt.type, stmt.modifiers, stmt.sourceSpan), context);\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitExpressionStmt = function (stmt, context) {\n        return this.transformStmt(new ExpressionStatement(stmt.expr.visitExpression(this, context), stmt.sourceSpan), context);\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitReturnStmt = function (stmt, context) {\n        return this.transformStmt(new ReturnStatement(stmt.value.visitExpression(this, context), stmt.sourceSpan), context);\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitDeclareClassStmt = function (stmt, context) {\n        var _this = this;\n        var /** @type {?} */ parent = stmt.parent.visitExpression(this, context);\n        var /** @type {?} */ getters = stmt.getters.map(function (getter) { return new ClassGetter(getter.name, _this.visitAllStatements(getter.body, context), getter.type, getter.modifiers); });\n        var /** @type {?} */ ctorMethod = stmt.constructorMethod &&\n            new ClassMethod(stmt.constructorMethod.name, stmt.constructorMethod.params, this.visitAllStatements(stmt.constructorMethod.body, context), stmt.constructorMethod.type, stmt.constructorMethod.modifiers);\n        var /** @type {?} */ methods = stmt.methods.map(function (method) { return new ClassMethod(method.name, method.params, _this.visitAllStatements(method.body, context), method.type, method.modifiers); });\n        return this.transformStmt(new ClassStmt(stmt.name, parent, stmt.fields, getters, ctorMethod, methods, stmt.modifiers, stmt.sourceSpan), context);\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitIfStmt = function (stmt, context) {\n        return this.transformStmt(new IfStmt(stmt.condition.visitExpression(this, context), this.visitAllStatements(stmt.trueCase, context), this.visitAllStatements(stmt.falseCase, context), stmt.sourceSpan), context);\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitTryCatchStmt = function (stmt, context) {\n        return this.transformStmt(new TryCatchStmt(this.visitAllStatements(stmt.bodyStmts, context), this.visitAllStatements(stmt.catchStmts, context), stmt.sourceSpan), context);\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitThrowStmt = function (stmt, context) {\n        return this.transformStmt(new ThrowStmt(stmt.error.visitExpression(this, context), stmt.sourceSpan), context);\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitCommentStmt = function (stmt, context) {\n        return this.transformStmt(stmt, context);\n    };\n    /**\n     * @param {?} stmts\n     * @param {?} context\n     * @return {?}\n     */\n    AstTransformer$1.prototype.visitAllStatements = function (stmts, context) {\n        var _this = this;\n        return stmts.map(function (stmt) { return stmt.visitStatement(_this, context); });\n    };\n    return AstTransformer$1;\n}());\nvar RecursiveAstVisitor$1 = (function () {\n    function RecursiveAstVisitor$1() {\n    }\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitReadVarExpr = function (ast, context) { return ast; };\n    /**\n     * @param {?} expr\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitWriteVarExpr = function (expr, context) {\n        expr.value.visitExpression(this, context);\n        return expr;\n    };\n    /**\n     * @param {?} expr\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitWriteKeyExpr = function (expr, context) {\n        expr.receiver.visitExpression(this, context);\n        expr.index.visitExpression(this, context);\n        expr.value.visitExpression(this, context);\n        return expr;\n    };\n    /**\n     * @param {?} expr\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitWritePropExpr = function (expr, context) {\n        expr.receiver.visitExpression(this, context);\n        expr.value.visitExpression(this, context);\n        return expr;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitInvokeMethodExpr = function (ast, context) {\n        ast.receiver.visitExpression(this, context);\n        this.visitAllExpressions(ast.args, context);\n        return ast;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitInvokeFunctionExpr = function (ast, context) {\n        ast.fn.visitExpression(this, context);\n        this.visitAllExpressions(ast.args, context);\n        return ast;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitInstantiateExpr = function (ast, context) {\n        ast.classExpr.visitExpression(this, context);\n        this.visitAllExpressions(ast.args, context);\n        return ast;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitLiteralExpr = function (ast, context) { return ast; };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitExternalExpr = function (ast, context) { return ast; };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitConditionalExpr = function (ast, context) {\n        ast.condition.visitExpression(this, context);\n        ast.trueCase.visitExpression(this, context);\n        ast.falseCase.visitExpression(this, context);\n        return ast;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitNotExpr = function (ast, context) {\n        ast.condition.visitExpression(this, context);\n        return ast;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitCastExpr = function (ast, context) {\n        ast.value.visitExpression(this, context);\n        return ast;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitFunctionExpr = function (ast, context) {\n        this.visitAllStatements(ast.statements, context);\n        return ast;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitBinaryOperatorExpr = function (ast, context) {\n        ast.lhs.visitExpression(this, context);\n        ast.rhs.visitExpression(this, context);\n        return ast;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitReadPropExpr = function (ast, context) {\n        ast.receiver.visitExpression(this, context);\n        return ast;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitReadKeyExpr = function (ast, context) {\n        ast.receiver.visitExpression(this, context);\n        ast.index.visitExpression(this, context);\n        return ast;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitLiteralArrayExpr = function (ast, context) {\n        this.visitAllExpressions(ast.entries, context);\n        return ast;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitLiteralMapExpr = function (ast, context) {\n        var _this = this;\n        ast.entries.forEach(function (entry) { return entry.value.visitExpression(_this, context); });\n        return ast;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitCommaExpr = function (ast, context) {\n        this.visitAllExpressions(ast.parts, context);\n    };\n    /**\n     * @param {?} exprs\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitAllExpressions = function (exprs, context) {\n        var _this = this;\n        exprs.forEach(function (expr) { return expr.visitExpression(_this, context); });\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitDeclareVarStmt = function (stmt, context) {\n        stmt.value.visitExpression(this, context);\n        return stmt;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitDeclareFunctionStmt = function (stmt, context) {\n        this.visitAllStatements(stmt.statements, context);\n        return stmt;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitExpressionStmt = function (stmt, context) {\n        stmt.expr.visitExpression(this, context);\n        return stmt;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitReturnStmt = function (stmt, context) {\n        stmt.value.visitExpression(this, context);\n        return stmt;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitDeclareClassStmt = function (stmt, context) {\n        var _this = this;\n        stmt.parent.visitExpression(this, context);\n        stmt.getters.forEach(function (getter) { return _this.visitAllStatements(getter.body, context); });\n        if (stmt.constructorMethod) {\n            this.visitAllStatements(stmt.constructorMethod.body, context);\n        }\n        stmt.methods.forEach(function (method) { return _this.visitAllStatements(method.body, context); });\n        return stmt;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitIfStmt = function (stmt, context) {\n        stmt.condition.visitExpression(this, context);\n        this.visitAllStatements(stmt.trueCase, context);\n        this.visitAllStatements(stmt.falseCase, context);\n        return stmt;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitTryCatchStmt = function (stmt, context) {\n        this.visitAllStatements(stmt.bodyStmts, context);\n        this.visitAllStatements(stmt.catchStmts, context);\n        return stmt;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitThrowStmt = function (stmt, context) {\n        stmt.error.visitExpression(this, context);\n        return stmt;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitCommentStmt = function (stmt, context) { return stmt; };\n    /**\n     * @param {?} stmts\n     * @param {?} context\n     * @return {?}\n     */\n    RecursiveAstVisitor$1.prototype.visitAllStatements = function (stmts, context) {\n        var _this = this;\n        stmts.forEach(function (stmt) { return stmt.visitStatement(_this, context); });\n    };\n    return RecursiveAstVisitor$1;\n}());\n/**\n * @param {?} stmts\n * @return {?}\n */\nfunction findReadVarNames(stmts) {\n    var /** @type {?} */ visitor = new _ReadVarVisitor();\n    visitor.visitAllStatements(stmts, null);\n    return visitor.varNames;\n}\nvar _ReadVarVisitor = (function (_super) {\n    __extends(_ReadVarVisitor, _super);\n    function _ReadVarVisitor() {\n        var _this = _super.apply(this, arguments) || this;\n        _this.varNames = new Set();\n        return _this;\n    }\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    _ReadVarVisitor.prototype.visitDeclareFunctionStmt = function (stmt, context) {\n        // Don't descend into nested functions\n        return stmt;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    _ReadVarVisitor.prototype.visitDeclareClassStmt = function (stmt, context) {\n        // Don't descend into nested classes\n        return stmt;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    _ReadVarVisitor.prototype.visitReadVarExpr = function (ast, context) {\n        this.varNames.add(ast.name);\n        return null;\n    };\n    return _ReadVarVisitor;\n}(RecursiveAstVisitor$1));\n/**\n * @param {?} stmt\n * @param {?} sourceSpan\n * @return {?}\n */\nfunction applySourceSpanToStatementIfNeeded(stmt, sourceSpan) {\n    if (!sourceSpan) {\n        return stmt;\n    }\n    var /** @type {?} */ transformer = new _ApplySourceSpanTransformer(sourceSpan);\n    return stmt.visitStatement(transformer, null);\n}\n/**\n * @param {?} expr\n * @param {?} sourceSpan\n * @return {?}\n */\nfunction applySourceSpanToExpressionIfNeeded(expr, sourceSpan) {\n    if (!sourceSpan) {\n        return expr;\n    }\n    var /** @type {?} */ transformer = new _ApplySourceSpanTransformer(sourceSpan);\n    return expr.visitExpression(transformer, null);\n}\nvar _ApplySourceSpanTransformer = (function (_super) {\n    __extends(_ApplySourceSpanTransformer, _super);\n    /**\n     * @param {?} sourceSpan\n     */\n    function _ApplySourceSpanTransformer(sourceSpan) {\n        var _this = _super.call(this) || this;\n        _this.sourceSpan = sourceSpan;\n        return _this;\n    }\n    /**\n     * @param {?} obj\n     * @return {?}\n     */\n    _ApplySourceSpanTransformer.prototype._clone = function (obj) {\n        var /** @type {?} */ clone = Object.create(obj.constructor.prototype);\n        for (var /** @type {?} */ prop in obj) {\n            clone[prop] = obj[prop];\n        }\n        return clone;\n    };\n    /**\n     * @param {?} expr\n     * @param {?} context\n     * @return {?}\n     */\n    _ApplySourceSpanTransformer.prototype.transformExpr = function (expr, context) {\n        if (!expr.sourceSpan) {\n            expr = this._clone(expr);\n            expr.sourceSpan = this.sourceSpan;\n        }\n        return expr;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    _ApplySourceSpanTransformer.prototype.transformStmt = function (stmt, context) {\n        if (!stmt.sourceSpan) {\n            stmt = this._clone(stmt);\n            stmt.sourceSpan = this.sourceSpan;\n        }\n        return stmt;\n    };\n    return _ApplySourceSpanTransformer;\n}(AstTransformer$1));\n/**\n * @param {?} name\n * @param {?=} type\n * @param {?=} sourceSpan\n * @return {?}\n */\nfunction variable(name, type, sourceSpan) {\n    if (type === void 0) { type = null; }\n    return new ReadVarExpr(name, type, sourceSpan);\n}\n/**\n * @param {?} id\n * @param {?=} typeParams\n * @param {?=} sourceSpan\n * @return {?}\n */\nfunction importExpr(id, typeParams, sourceSpan) {\n    if (typeParams === void 0) { typeParams = null; }\n    return new ExternalExpr(id, null, typeParams, sourceSpan);\n}\n/**\n * @param {?} id\n * @param {?=} typeParams\n * @param {?=} typeModifiers\n * @return {?}\n */\nfunction importType(id, typeParams, typeModifiers) {\n    if (typeParams === void 0) { typeParams = null; }\n    if (typeModifiers === void 0) { typeModifiers = null; }\n    return id != null ? expressionType(importExpr(id, typeParams), typeModifiers) : null;\n}\n/**\n * @param {?} expr\n * @param {?=} typeModifiers\n * @return {?}\n */\nfunction expressionType(expr, typeModifiers) {\n    if (typeModifiers === void 0) { typeModifiers = null; }\n    return expr != null ? new ExpressionType(expr, typeModifiers) : null;\n}\n/**\n * @param {?} values\n * @param {?=} type\n * @param {?=} sourceSpan\n * @return {?}\n */\nfunction literalArr(values, type, sourceSpan) {\n    if (type === void 0) { type = null; }\n    return new LiteralArrayExpr(values, type, sourceSpan);\n}\n/**\n * @param {?} values\n * @param {?=} type\n * @param {?=} quoted\n * @return {?}\n */\nfunction literalMap(values, type, quoted) {\n    if (type === void 0) { type = null; }\n    if (quoted === void 0) { quoted = false; }\n    return new LiteralMapExpr(values.map(function (entry) { return new LiteralMapEntry(entry[0], entry[1], quoted); }), type);\n}\n/**\n * @param {?} expr\n * @param {?=} sourceSpan\n * @return {?}\n */\nfunction not(expr, sourceSpan) {\n    return new NotExpr(expr, sourceSpan);\n}\n/**\n * @param {?} params\n * @param {?} body\n * @param {?=} type\n * @param {?=} sourceSpan\n * @return {?}\n */\nfunction fn(params, body, type, sourceSpan) {\n    if (type === void 0) { type = null; }\n    return new FunctionExpr(params, body, type, sourceSpan);\n}\n/**\n * @param {?} value\n * @param {?=} type\n * @param {?=} sourceSpan\n * @return {?}\n */\nfunction literal(value, type, sourceSpan) {\n    if (type === void 0) { type = null; }\n    return new LiteralExpr(value, type, sourceSpan);\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Create a new class stmts based on the given data.\n * @param {?} config\n * @return {?}\n */\nfunction createClassStmt(config) {\n    var /** @type {?} */ parentArgs = config.parentArgs || [];\n    var /** @type {?} */ superCtorStmts = config.parent ? [SUPER_EXPR.callFn(parentArgs).toStmt()] : [];\n    var /** @type {?} */ builder = concatClassBuilderParts(Array.isArray(config.builders) ? config.builders : [config.builders]);\n    var /** @type {?} */ ctor = new ClassMethod(null, config.ctorParams || [], superCtorStmts.concat(builder.ctorStmts));\n    return new ClassStmt(config.name, config.parent, builder.fields, builder.getters, ctor, builder.methods, config.modifiers || [], config.sourceSpan);\n}\n/**\n * @param {?} builders\n * @return {?}\n */\nfunction concatClassBuilderParts(builders) {\n    return {\n        fields: [].concat.apply([], builders.map(function (builder) { return builder.fields || []; })),\n        methods: [].concat.apply([], builders.map(function (builder) { return builder.methods || []; })),\n        getters: [].concat.apply([], builders.map(function (builder) { return builder.getters || []; })),\n        ctorStmts: [].concat.apply([], builders.map(function (builder) { return builder.ctorStmts || []; })),\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 */\nvar QUOTED_KEYS = '$quoted$';\n/**\n * @param {?} value\n * @param {?=} type\n * @return {?}\n */\nfunction convertValueToOutputAst(value, type) {\n    if (type === void 0) { type = null; }\n    return visitValue(value, new _ValueOutputAstTransformer(), type);\n}\nvar _ValueOutputAstTransformer = (function () {\n    function _ValueOutputAstTransformer() {\n    }\n    /**\n     * @param {?} arr\n     * @param {?} type\n     * @return {?}\n     */\n    _ValueOutputAstTransformer.prototype.visitArray = function (arr, type) {\n        var _this = this;\n        return literalArr(arr.map(function (value) { return visitValue(value, _this, null); }), type);\n    };\n    /**\n     * @param {?} map\n     * @param {?} type\n     * @return {?}\n     */\n    _ValueOutputAstTransformer.prototype.visitStringMap = function (map, type) {\n        var _this = this;\n        var /** @type {?} */ entries = [];\n        var /** @type {?} */ quotedSet = new Set(map && map[QUOTED_KEYS]);\n        Object.keys(map).forEach(function (key) {\n            entries.push(new LiteralMapEntry(key, visitValue(map[key], _this, null), quotedSet.has(key)));\n        });\n        return new LiteralMapExpr(entries, type);\n    };\n    /**\n     * @param {?} value\n     * @param {?} type\n     * @return {?}\n     */\n    _ValueOutputAstTransformer.prototype.visitPrimitive = function (value, type) { return literal(value, type); };\n    /**\n     * @param {?} value\n     * @param {?} type\n     * @return {?}\n     */\n    _ValueOutputAstTransformer.prototype.visitOther = function (value, type) {\n        if (value instanceof Expression) {\n            return value;\n        }\n        else {\n            return importExpr({ reference: value });\n        }\n    };\n    return _ValueOutputAstTransformer;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This is currently not read, but will probably be used in the future.\n * We keep it as we already pass it through all the rigth places...\n */\nvar ComponentFactoryDependency = (function () {\n    /**\n     * @param {?} compType\n     */\n    function ComponentFactoryDependency(compType) {\n        this.compType = compType;\n    }\n    return ComponentFactoryDependency;\n}());\nvar NgModuleCompileResult = (function () {\n    /**\n     * @param {?} statements\n     * @param {?} ngModuleFactoryVar\n     * @param {?} dependencies\n     */\n    function NgModuleCompileResult(statements, ngModuleFactoryVar, dependencies) {\n        this.statements = statements;\n        this.ngModuleFactoryVar = ngModuleFactoryVar;\n        this.dependencies = dependencies;\n    }\n    return NgModuleCompileResult;\n}());\nvar NgModuleCompiler = (function () {\n    function NgModuleCompiler() {\n    }\n    /**\n     * @param {?} ngModuleMeta\n     * @param {?} extraProviders\n     * @return {?}\n     */\n    NgModuleCompiler.prototype.compile = function (ngModuleMeta, extraProviders) {\n        var /** @type {?} */ sourceSpan = typeSourceSpan('NgModule', ngModuleMeta.type);\n        var /** @type {?} */ deps = [];\n        var /** @type {?} */ bootstrapComponentFactories = [];\n        var /** @type {?} */ entryComponentFactories = ngModuleMeta.transitiveModule.entryComponents.map(function (entryComponent) {\n            if (ngModuleMeta.bootstrapComponents.some(function (id) { return id.reference === entryComponent.componentType; })) {\n                bootstrapComponentFactories.push({ reference: entryComponent.componentFactory });\n            }\n            deps.push(new ComponentFactoryDependency(entryComponent.componentType));\n            return { reference: entryComponent.componentFactory };\n        });\n        var /** @type {?} */ builder = new _InjectorBuilder(ngModuleMeta, entryComponentFactories, bootstrapComponentFactories, sourceSpan);\n        var /** @type {?} */ providerParser = new NgModuleProviderAnalyzer(ngModuleMeta, extraProviders, sourceSpan);\n        providerParser.parse().forEach(function (provider) { return builder.addProvider(provider); });\n        var /** @type {?} */ injectorClass = builder.build();\n        var /** @type {?} */ ngModuleFactoryVar = identifierName(ngModuleMeta.type) + \"NgFactory\";\n        var /** @type {?} */ ngModuleFactoryStmt = variable(ngModuleFactoryVar)\n            .set(importExpr(createIdentifier(Identifiers.NgModuleFactory))\n            .instantiate([variable(injectorClass.name), importExpr(ngModuleMeta.type)], importType(createIdentifier(Identifiers.NgModuleFactory), [importType(ngModuleMeta.type)], [TypeModifier.Const])))\n            .toDeclStmt(null, [StmtModifier.Final]);\n        var /** @type {?} */ stmts = [injectorClass, ngModuleFactoryStmt];\n        if (ngModuleMeta.id) {\n            var /** @type {?} */ registerFactoryStmt = importExpr(createIdentifier(Identifiers.RegisterModuleFactoryFn))\n                .callFn([literal(ngModuleMeta.id), variable(ngModuleFactoryVar)])\n                .toStmt();\n            stmts.push(registerFactoryStmt);\n        }\n        return new NgModuleCompileResult(stmts, ngModuleFactoryVar, deps);\n    };\n    return NgModuleCompiler;\n}());\nNgModuleCompiler.decorators = [\n    { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nNgModuleCompiler.ctorParameters = function () { return []; };\nvar _InjectorBuilder = (function () {\n    /**\n     * @param {?} _ngModuleMeta\n     * @param {?} _entryComponentFactories\n     * @param {?} _bootstrapComponentFactories\n     * @param {?} _sourceSpan\n     */\n    function _InjectorBuilder(_ngModuleMeta, _entryComponentFactories, _bootstrapComponentFactories, _sourceSpan) {\n        this._ngModuleMeta = _ngModuleMeta;\n        this._entryComponentFactories = _entryComponentFactories;\n        this._bootstrapComponentFactories = _bootstrapComponentFactories;\n        this._sourceSpan = _sourceSpan;\n        this.fields = [];\n        this.getters = [];\n        this.methods = [];\n        this.ctorStmts = [];\n        this._lazyProps = new Map();\n        this._tokens = [];\n        this._instances = new Map();\n        this._createStmts = [];\n        this._destroyStmts = [];\n    }\n    /**\n     * @param {?} resolvedProvider\n     * @return {?}\n     */\n    _InjectorBuilder.prototype.addProvider = function (resolvedProvider) {\n        var _this = this;\n        var /** @type {?} */ providerValueExpressions = resolvedProvider.providers.map(function (provider) { return _this._getProviderValue(provider); });\n        var /** @type {?} */ propName = \"_\" + tokenName(resolvedProvider.token) + \"_\" + this._instances.size;\n        var /** @type {?} */ instance = this._createProviderProperty(propName, resolvedProvider, providerValueExpressions, resolvedProvider.multiProvider, resolvedProvider.eager);\n        if (resolvedProvider.lifecycleHooks.indexOf(ɵLifecycleHooks.OnDestroy) !== -1) {\n            var /** @type {?} */ callNgOnDestroy = instance.callMethod('ngOnDestroy', []);\n            if (!resolvedProvider.eager) {\n                callNgOnDestroy = this._lazyProps.get(instance.name).and(callNgOnDestroy);\n            }\n            this._destroyStmts.push(callNgOnDestroy.toStmt());\n        }\n        this._tokens.push(resolvedProvider.token);\n        this._instances.set(tokenReference(resolvedProvider.token), instance);\n    };\n    /**\n     * @return {?}\n     */\n    _InjectorBuilder.prototype.build = function () {\n        var _this = this;\n        var /** @type {?} */ getMethodStmts = this._tokens.map(function (token) {\n            var /** @type {?} */ providerExpr = _this._instances.get(tokenReference(token));\n            return new IfStmt(InjectMethodVars.token.identical(createDiTokenExpression(token)), [new ReturnStatement(providerExpr)]);\n        });\n        var /** @type {?} */ methods = [\n            new ClassMethod('createInternal', [], this._createStmts.concat(new ReturnStatement(this._instances.get(this._ngModuleMeta.type.reference))), importType(this._ngModuleMeta.type)),\n            new ClassMethod('getInternal', [\n                new FnParam(InjectMethodVars.token.name, DYNAMIC_TYPE),\n                new FnParam(InjectMethodVars.notFoundResult.name, DYNAMIC_TYPE)\n            ], getMethodStmts.concat([new ReturnStatement(InjectMethodVars.notFoundResult)]), DYNAMIC_TYPE),\n            new ClassMethod('destroyInternal', [], this._destroyStmts),\n        ];\n        var /** @type {?} */ parentArgs = [\n            variable(InjectorProps.parent.name),\n            literalArr(this._entryComponentFactories.map(function (componentFactory) { return importExpr(componentFactory); })),\n            literalArr(this._bootstrapComponentFactories.map(function (componentFactory) { return importExpr(componentFactory); }))\n        ];\n        var /** @type {?} */ injClassName = identifierName(this._ngModuleMeta.type) + \"Injector\";\n        return createClassStmt({\n            name: injClassName,\n            ctorParams: [new FnParam(InjectorProps.parent.name, importType(createIdentifier(Identifiers.Injector)))],\n            parent: importExpr(createIdentifier(Identifiers.NgModuleInjector), [importType(this._ngModuleMeta.type)]),\n            parentArgs: parentArgs,\n            builders: [{ methods: methods }, this]\n        });\n    };\n    /**\n     * @param {?} provider\n     * @return {?}\n     */\n    _InjectorBuilder.prototype._getProviderValue = function (provider) {\n        var _this = this;\n        var /** @type {?} */ result;\n        if (provider.useExisting != null) {\n            result = this._getDependency({ token: provider.useExisting });\n        }\n        else if (provider.useFactory != null) {\n            var /** @type {?} */ deps = provider.deps || provider.useFactory.diDeps;\n            var /** @type {?} */ depsExpr = deps.map(function (dep) { return _this._getDependency(dep); });\n            result = importExpr(provider.useFactory).callFn(depsExpr);\n        }\n        else if (provider.useClass != null) {\n            var /** @type {?} */ deps = provider.deps || provider.useClass.diDeps;\n            var /** @type {?} */ depsExpr = deps.map(function (dep) { return _this._getDependency(dep); });\n            result =\n                importExpr(provider.useClass).instantiate(depsExpr, importType(provider.useClass));\n        }\n        else {\n            result = convertValueToOutputAst(provider.useValue);\n        }\n        return result;\n    };\n    /**\n     * @param {?} propName\n     * @param {?} provider\n     * @param {?} providerValueExpressions\n     * @param {?} isMulti\n     * @param {?} isEager\n     * @return {?}\n     */\n    _InjectorBuilder.prototype._createProviderProperty = function (propName, provider, providerValueExpressions, isMulti, isEager) {\n        var /** @type {?} */ resolvedProviderValueExpr;\n        var /** @type {?} */ type;\n        if (isMulti) {\n            resolvedProviderValueExpr = literalArr(providerValueExpressions);\n            type = new ArrayType(DYNAMIC_TYPE);\n        }\n        else {\n            resolvedProviderValueExpr = providerValueExpressions[0];\n            type = providerValueExpressions[0].type;\n        }\n        if (!type) {\n            type = DYNAMIC_TYPE;\n        }\n        if (isEager) {\n            this.fields.push(new ClassField(propName, type));\n            this._createStmts.push(THIS_EXPR.prop(propName).set(resolvedProviderValueExpr).toStmt());\n        }\n        else {\n            var /** @type {?} */ internalFieldProp = THIS_EXPR.prop(\"_\" + propName);\n            this.fields.push(new ClassField(internalFieldProp.name, type));\n            // Note: Equals is important for JS so that it also checks the undefined case!\n            var /** @type {?} */ getterStmts = [\n                new IfStmt(internalFieldProp.isBlank(), [internalFieldProp.set(resolvedProviderValueExpr).toStmt()]),\n                new ReturnStatement(internalFieldProp)\n            ];\n            this.getters.push(new ClassGetter(propName, getterStmts, type));\n            this._lazyProps.set(propName, internalFieldProp);\n        }\n        return THIS_EXPR.prop(propName);\n    };\n    /**\n     * @param {?} dep\n     * @return {?}\n     */\n    _InjectorBuilder.prototype._getDependency = function (dep) {\n        var /** @type {?} */ result = null;\n        if (dep.isValue) {\n            result = literal(dep.value);\n        }\n        if (!dep.isSkipSelf) {\n            if (dep.token) {\n                if (tokenReference(dep.token) === resolveIdentifier(Identifiers.Injector)) {\n                    result = THIS_EXPR;\n                }\n                else if (tokenReference(dep.token) === resolveIdentifier(Identifiers.ComponentFactoryResolver)) {\n                    result = THIS_EXPR.prop('componentFactoryResolver');\n                }\n            }\n            if (!result) {\n                result = this._instances.get(tokenReference(dep.token));\n            }\n        }\n        if (!result) {\n            var /** @type {?} */ args = [createDiTokenExpression(dep.token)];\n            if (dep.isOptional) {\n                args.push(NULL_EXPR);\n            }\n            result = InjectorProps.parent.callMethod('get', args);\n        }\n        return result;\n    };\n    return _InjectorBuilder;\n}());\n/**\n * @param {?} token\n * @return {?}\n */\nfunction createDiTokenExpression(token) {\n    if (token.value != null) {\n        return literal(token.value);\n    }\n    else {\n        return importExpr(token.identifier);\n    }\n}\nvar InjectorProps = (function () {\n    function InjectorProps() {\n    }\n    return InjectorProps;\n}());\nInjectorProps.parent = THIS_EXPR.prop('parent');\nvar InjectMethodVars = (function () {\n    function InjectMethodVars() {\n    }\n    return InjectMethodVars;\n}());\nInjectMethodVars.token = variable('token');\nInjectMethodVars.notFoundResult = variable('notFoundResult');\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this 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// https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit\nvar VERSION$1 = 3;\nvar JS_B64_PREFIX = '# sourceMappingURL=data:application/json;base64,';\nvar SourceMapGenerator = (function () {\n    /**\n     * @param {?=} file\n     */\n    function SourceMapGenerator(file) {\n        if (file === void 0) { file = null; }\n        this.file = file;\n        this.sourcesContent = new Map();\n        this.lines = [];\n        this.lastCol0 = 0;\n        this.hasMappings = false;\n    }\n    /**\n     * @param {?} url\n     * @param {?=} content\n     * @return {?}\n     */\n    SourceMapGenerator.prototype.addSource = function (url, content) {\n        if (content === void 0) { content = null; }\n        if (!this.sourcesContent.has(url)) {\n            this.sourcesContent.set(url, content);\n        }\n        return this;\n    };\n    /**\n     * @return {?}\n     */\n    SourceMapGenerator.prototype.addLine = function () {\n        this.lines.push([]);\n        this.lastCol0 = 0;\n        return this;\n    };\n    /**\n     * @param {?} col0\n     * @param {?=} sourceUrl\n     * @param {?=} sourceLine0\n     * @param {?=} sourceCol0\n     * @return {?}\n     */\n    SourceMapGenerator.prototype.addMapping = function (col0, sourceUrl, sourceLine0, sourceCol0) {\n        if (!this.currentLine) {\n            throw new Error(\"A line must be added before mappings can be added\");\n        }\n        if (sourceUrl != null && !this.sourcesContent.has(sourceUrl)) {\n            throw new Error(\"Unknown source file \\\"\" + sourceUrl + \"\\\"\");\n        }\n        if (col0 == null) {\n            throw new Error(\"The column in the generated code must be provided\");\n        }\n        if (col0 < this.lastCol0) {\n            throw new Error(\"Mapping should be added in output order\");\n        }\n        if (sourceUrl && (sourceLine0 == null || sourceCol0 == null)) {\n            throw new Error(\"The source location must be provided when a source url is provided\");\n        }\n        this.hasMappings = true;\n        this.lastCol0 = col0;\n        this.currentLine.push({ col0: col0, sourceUrl: sourceUrl, sourceLine0: sourceLine0, sourceCol0: sourceCol0 });\n        return this;\n    };\n    Object.defineProperty(SourceMapGenerator.prototype, \"currentLine\", {\n        /**\n         * @return {?}\n         */\n        get: function () { return this.lines.slice(-1)[0]; },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @return {?}\n     */\n    SourceMapGenerator.prototype.toJSON = function () {\n        var _this = this;\n        if (!this.hasMappings) {\n            return null;\n        }\n        var /** @type {?} */ sourcesIndex = new Map();\n        var /** @type {?} */ sources = [];\n        var /** @type {?} */ sourcesContent = [];\n        Array.from(this.sourcesContent.keys()).forEach(function (url, i) {\n            sourcesIndex.set(url, i);\n            sources.push(url);\n            sourcesContent.push(_this.sourcesContent.get(url) || null);\n        });\n        var /** @type {?} */ mappings = '';\n        var /** @type {?} */ lastCol0 = 0;\n        var /** @type {?} */ lastSourceIndex = 0;\n        var /** @type {?} */ lastSourceLine0 = 0;\n        var /** @type {?} */ lastSourceCol0 = 0;\n        this.lines.forEach(function (segments) {\n            lastCol0 = 0;\n            mappings += segments\n                .map(function (segment) {\n                // zero-based starting column of the line in the generated code\n                var /** @type {?} */ segAsStr = toBase64VLQ(segment.col0 - lastCol0);\n                lastCol0 = segment.col0;\n                if (segment.sourceUrl != null) {\n                    // zero-based index into the “sources” list\n                    segAsStr +=\n                        toBase64VLQ(sourcesIndex.get(segment.sourceUrl) - lastSourceIndex);\n                    lastSourceIndex = sourcesIndex.get(segment.sourceUrl);\n                    // the zero-based starting line in the original source\n                    segAsStr += toBase64VLQ(segment.sourceLine0 - lastSourceLine0);\n                    lastSourceLine0 = segment.sourceLine0;\n                    // the zero-based starting column in the original source\n                    segAsStr += toBase64VLQ(segment.sourceCol0 - lastSourceCol0);\n                    lastSourceCol0 = segment.sourceCol0;\n                }\n                return segAsStr;\n            })\n                .join(',');\n            mappings += ';';\n        });\n        mappings = mappings.slice(0, -1);\n        return {\n            'file': this.file || '',\n            'version': VERSION$1,\n            'sourceRoot': '',\n            'sources': sources,\n            'sourcesContent': sourcesContent,\n            'mappings': mappings,\n        };\n    };\n    /**\n     * @return {?}\n     */\n    SourceMapGenerator.prototype.toJsComment = function () {\n        return this.hasMappings ? '//' + JS_B64_PREFIX + toBase64String(JSON.stringify(this, null, 0)) :\n            '';\n    };\n    return SourceMapGenerator;\n}());\n/**\n * @param {?} value\n * @return {?}\n */\nfunction toBase64String(value) {\n    var /** @type {?} */ b64 = '';\n    value = utf8Encode(value);\n    for (var /** @type {?} */ i = 0; i < value.length;) {\n        var /** @type {?} */ i1 = value.charCodeAt(i++);\n        var /** @type {?} */ i2 = value.charCodeAt(i++);\n        var /** @type {?} */ i3 = value.charCodeAt(i++);\n        b64 += toBase64Digit(i1 >> 2);\n        b64 += toBase64Digit(((i1 & 3) << 4) | (isNaN(i2) ? 0 : i2 >> 4));\n        b64 += isNaN(i2) ? '=' : toBase64Digit(((i2 & 15) << 2) | (i3 >> 6));\n        b64 += isNaN(i2) || isNaN(i3) ? '=' : toBase64Digit(i3 & 63);\n    }\n    return b64;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction toBase64VLQ(value) {\n    value = value < 0 ? ((-value) << 1) + 1 : value << 1;\n    var /** @type {?} */ out = '';\n    do {\n        var /** @type {?} */ digit = value & 31;\n        value = value >> 5;\n        if (value > 0) {\n            digit = digit | 32;\n        }\n        out += toBase64Digit(digit);\n    } while (value > 0);\n    return out;\n}\nvar B64_DIGITS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n/**\n * @param {?} value\n * @return {?}\n */\nfunction toBase64Digit(value) {\n    if (value < 0 || value >= 64) {\n        throw new Error(\"Can only encode value in the range [0, 63]\");\n    }\n    return B64_DIGITS[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 */\nvar _SINGLE_QUOTE_ESCAPE_STRING_RE = /'|\\\\|\\n|\\r|\\$/g;\nvar _LEGAL_IDENTIFIER_RE = /^[$A-Z_][0-9A-Z_$]*$/i;\nvar _INDENT_WITH = '  ';\nvar CATCH_ERROR_VAR$1 = variable('error');\nvar CATCH_STACK_VAR$1 = variable('stack');\n/**\n * @abstract\n */\nvar _EmittedLine = (function () {\n    /**\n     * @param {?} indent\n     */\n    function _EmittedLine(indent) {\n        this.indent = indent;\n        this.parts = [];\n        this.srcSpans = [];\n    }\n    return _EmittedLine;\n}());\nvar EmitterVisitorContext = (function () {\n    /**\n     * @param {?} _exportedVars\n     * @param {?} _indent\n     */\n    function EmitterVisitorContext(_exportedVars, _indent) {\n        this._exportedVars = _exportedVars;\n        this._indent = _indent;\n        this._classes = [];\n        this._lines = [new _EmittedLine(_indent)];\n    }\n    /**\n     * @param {?} exportedVars\n     * @return {?}\n     */\n    EmitterVisitorContext.createRoot = function (exportedVars) {\n        return new EmitterVisitorContext(exportedVars, 0);\n    };\n    Object.defineProperty(EmitterVisitorContext.prototype, \"_currentLine\", {\n        /**\n         * @return {?}\n         */\n        get: function () { return this._lines[this._lines.length - 1]; },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @param {?} varName\n     * @return {?}\n     */\n    EmitterVisitorContext.prototype.isExportedVar = function (varName) { return this._exportedVars.indexOf(varName) !== -1; };\n    /**\n     * @param {?=} from\n     * @param {?=} lastPart\n     * @return {?}\n     */\n    EmitterVisitorContext.prototype.println = function (from, lastPart) {\n        if (lastPart === void 0) { lastPart = ''; }\n        this.print(from, lastPart, true);\n    };\n    /**\n     * @return {?}\n     */\n    EmitterVisitorContext.prototype.lineIsEmpty = function () { return this._currentLine.parts.length === 0; };\n    /**\n     * @param {?} from\n     * @param {?} part\n     * @param {?=} newLine\n     * @return {?}\n     */\n    EmitterVisitorContext.prototype.print = function (from, part, newLine) {\n        if (newLine === void 0) { newLine = false; }\n        if (part.length > 0) {\n            this._currentLine.parts.push(part);\n            this._currentLine.srcSpans.push(from && from.sourceSpan || null);\n        }\n        if (newLine) {\n            this._lines.push(new _EmittedLine(this._indent));\n        }\n    };\n    /**\n     * @return {?}\n     */\n    EmitterVisitorContext.prototype.removeEmptyLastLine = function () {\n        if (this.lineIsEmpty()) {\n            this._lines.pop();\n        }\n    };\n    /**\n     * @return {?}\n     */\n    EmitterVisitorContext.prototype.incIndent = function () {\n        this._indent++;\n        this._currentLine.indent = this._indent;\n    };\n    /**\n     * @return {?}\n     */\n    EmitterVisitorContext.prototype.decIndent = function () {\n        this._indent--;\n        this._currentLine.indent = this._indent;\n    };\n    /**\n     * @param {?} clazz\n     * @return {?}\n     */\n    EmitterVisitorContext.prototype.pushClass = function (clazz) { this._classes.push(clazz); };\n    /**\n     * @return {?}\n     */\n    EmitterVisitorContext.prototype.popClass = function () { return this._classes.pop(); };\n    Object.defineProperty(EmitterVisitorContext.prototype, \"currentClass\", {\n        /**\n         * @return {?}\n         */\n        get: function () {\n            return this._classes.length > 0 ? this._classes[this._classes.length - 1] : null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @return {?}\n     */\n    EmitterVisitorContext.prototype.toSource = function () {\n        return this.sourceLines\n            .map(function (l) { return l.parts.length > 0 ? _createIndent(l.indent) + l.parts.join('') : ''; })\n            .join('\\n');\n    };\n    /**\n     * @param {?} sourceFilePath\n     * @param {?} genFilePath\n     * @param {?=} startsAtLine\n     * @return {?}\n     */\n    EmitterVisitorContext.prototype.toSourceMapGenerator = function (sourceFilePath, genFilePath, startsAtLine) {\n        if (startsAtLine === void 0) { startsAtLine = 0; }\n        var /** @type {?} */ map = new SourceMapGenerator(genFilePath);\n        var /** @type {?} */ firstOffsetMapped = false;\n        var /** @type {?} */ mapFirstOffsetIfNeeded = function () {\n            if (!firstOffsetMapped) {\n                // Add a single space so that tools won't try to load the file from disk.\n                // Note: We are using virtual urls like `ng:///`, so we have to\n                // provide a content here.\n                map.addSource(sourceFilePath, ' ').addMapping(0, sourceFilePath, 0, 0);\n                firstOffsetMapped = true;\n            }\n        };\n        for (var /** @type {?} */ i = 0; i < startsAtLine; i++) {\n            map.addLine();\n            mapFirstOffsetIfNeeded();\n        }\n        this.sourceLines.forEach(function (line, lineIdx) {\n            map.addLine();\n            var /** @type {?} */ spans = line.srcSpans;\n            var /** @type {?} */ parts = line.parts;\n            var /** @type {?} */ col0 = line.indent * _INDENT_WITH.length;\n            var /** @type {?} */ spanIdx = 0;\n            // skip leading parts without source spans\n            while (spanIdx < spans.length && !spans[spanIdx]) {\n                col0 += parts[spanIdx].length;\n                spanIdx++;\n            }\n            if (spanIdx < spans.length && lineIdx === 0 && col0 === 0) {\n                firstOffsetMapped = true;\n            }\n            else {\n                mapFirstOffsetIfNeeded();\n            }\n            while (spanIdx < spans.length) {\n                var /** @type {?} */ span = spans[spanIdx];\n                var /** @type {?} */ source = span.start.file;\n                var /** @type {?} */ sourceLine = span.start.line;\n                var /** @type {?} */ sourceCol = span.start.col;\n                map.addSource(source.url, source.content)\n                    .addMapping(col0, source.url, sourceLine, sourceCol);\n                col0 += parts[spanIdx].length;\n                spanIdx++;\n                // assign parts without span or the same span to the previous segment\n                while (spanIdx < spans.length && (span === spans[spanIdx] || !spans[spanIdx])) {\n                    col0 += parts[spanIdx].length;\n                    spanIdx++;\n                }\n            }\n        });\n        return map;\n    };\n    Object.defineProperty(EmitterVisitorContext.prototype, \"sourceLines\", {\n        /**\n         * @return {?}\n         */\n        get: function () {\n            if (this._lines.length && this._lines[this._lines.length - 1].parts.length === 0) {\n                return this._lines.slice(0, -1);\n            }\n            return this._lines;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    return EmitterVisitorContext;\n}());\n/**\n * @abstract\n */\nvar AbstractEmitterVisitor = (function () {\n    /**\n     * @param {?} _escapeDollarInStrings\n     */\n    function AbstractEmitterVisitor(_escapeDollarInStrings) {\n        this._escapeDollarInStrings = _escapeDollarInStrings;\n    }\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitExpressionStmt = function (stmt, ctx) {\n        stmt.expr.visitExpression(this, ctx);\n        ctx.println(stmt, ';');\n        return null;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitReturnStmt = function (stmt, ctx) {\n        ctx.print(stmt, \"return \");\n        stmt.value.visitExpression(this, ctx);\n        ctx.println(stmt, ';');\n        return null;\n    };\n    /**\n     * @abstract\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitCastExpr = function (ast, context) { };\n    /**\n     * @abstract\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitDeclareClassStmt = function (stmt, ctx) { };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitIfStmt = function (stmt, ctx) {\n        ctx.print(stmt, \"if (\");\n        stmt.condition.visitExpression(this, ctx);\n        ctx.print(stmt, \") {\");\n        var /** @type {?} */ hasElseCase = stmt.falseCase != null && stmt.falseCase.length > 0;\n        if (stmt.trueCase.length <= 1 && !hasElseCase) {\n            ctx.print(stmt, \" \");\n            this.visitAllStatements(stmt.trueCase, ctx);\n            ctx.removeEmptyLastLine();\n            ctx.print(stmt, \" \");\n        }\n        else {\n            ctx.println();\n            ctx.incIndent();\n            this.visitAllStatements(stmt.trueCase, ctx);\n            ctx.decIndent();\n            if (hasElseCase) {\n                ctx.println(stmt, \"} else {\");\n                ctx.incIndent();\n                this.visitAllStatements(stmt.falseCase, ctx);\n                ctx.decIndent();\n            }\n        }\n        ctx.println(stmt, \"}\");\n        return null;\n    };\n    /**\n     * @abstract\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitTryCatchStmt = function (stmt, ctx) { };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitThrowStmt = function (stmt, ctx) {\n        ctx.print(stmt, \"throw \");\n        stmt.error.visitExpression(this, ctx);\n        ctx.println(stmt, \";\");\n        return null;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitCommentStmt = function (stmt, ctx) {\n        var /** @type {?} */ lines = stmt.comment.split('\\n');\n        lines.forEach(function (line) { ctx.println(stmt, \"// \" + line); });\n        return null;\n    };\n    /**\n     * @abstract\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitDeclareVarStmt = function (stmt, ctx) { };\n    /**\n     * @param {?} expr\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitWriteVarExpr = function (expr, ctx) {\n        var /** @type {?} */ lineWasEmpty = ctx.lineIsEmpty();\n        if (!lineWasEmpty) {\n            ctx.print(expr, '(');\n        }\n        ctx.print(expr, expr.name + \" = \");\n        expr.value.visitExpression(this, ctx);\n        if (!lineWasEmpty) {\n            ctx.print(expr, ')');\n        }\n        return null;\n    };\n    /**\n     * @param {?} expr\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitWriteKeyExpr = function (expr, ctx) {\n        var /** @type {?} */ lineWasEmpty = ctx.lineIsEmpty();\n        if (!lineWasEmpty) {\n            ctx.print(expr, '(');\n        }\n        expr.receiver.visitExpression(this, ctx);\n        ctx.print(expr, \"[\");\n        expr.index.visitExpression(this, ctx);\n        ctx.print(expr, \"] = \");\n        expr.value.visitExpression(this, ctx);\n        if (!lineWasEmpty) {\n            ctx.print(expr, ')');\n        }\n        return null;\n    };\n    /**\n     * @param {?} expr\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitWritePropExpr = function (expr, ctx) {\n        var /** @type {?} */ lineWasEmpty = ctx.lineIsEmpty();\n        if (!lineWasEmpty) {\n            ctx.print(expr, '(');\n        }\n        expr.receiver.visitExpression(this, ctx);\n        ctx.print(expr, \".\" + expr.name + \" = \");\n        expr.value.visitExpression(this, ctx);\n        if (!lineWasEmpty) {\n            ctx.print(expr, ')');\n        }\n        return null;\n    };\n    /**\n     * @param {?} expr\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitInvokeMethodExpr = function (expr, ctx) {\n        expr.receiver.visitExpression(this, ctx);\n        var /** @type {?} */ name = expr.name;\n        if (expr.builtin != null) {\n            name = this.getBuiltinMethodName(expr.builtin);\n            if (name == null) {\n                // some builtins just mean to skip the call.\n                return null;\n            }\n        }\n        ctx.print(expr, \".\" + name + \"(\");\n        this.visitAllExpressions(expr.args, ctx, \",\");\n        ctx.print(expr, \")\");\n        return null;\n    };\n    /**\n     * @abstract\n     * @param {?} method\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.getBuiltinMethodName = function (method) { };\n    /**\n     * @param {?} expr\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitInvokeFunctionExpr = function (expr, ctx) {\n        expr.fn.visitExpression(this, ctx);\n        ctx.print(expr, \"(\");\n        this.visitAllExpressions(expr.args, ctx, ',');\n        ctx.print(expr, \")\");\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitReadVarExpr = function (ast, ctx) {\n        var /** @type {?} */ varName = ast.name;\n        if (ast.builtin != null) {\n            switch (ast.builtin) {\n                case BuiltinVar.Super:\n                    varName = 'super';\n                    break;\n                case BuiltinVar.This:\n                    varName = 'this';\n                    break;\n                case BuiltinVar.CatchError:\n                    varName = CATCH_ERROR_VAR$1.name;\n                    break;\n                case BuiltinVar.CatchStack:\n                    varName = CATCH_STACK_VAR$1.name;\n                    break;\n                default:\n                    throw new Error(\"Unknown builtin variable \" + ast.builtin);\n            }\n        }\n        ctx.print(ast, varName);\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitInstantiateExpr = function (ast, ctx) {\n        ctx.print(ast, \"new \");\n        ast.classExpr.visitExpression(this, ctx);\n        ctx.print(ast, \"(\");\n        this.visitAllExpressions(ast.args, ctx, ',');\n        ctx.print(ast, \")\");\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitLiteralExpr = function (ast, ctx) {\n        var /** @type {?} */ value = ast.value;\n        if (typeof value === 'string') {\n            ctx.print(ast, escapeIdentifier(value, this._escapeDollarInStrings));\n        }\n        else {\n            ctx.print(ast, \"\" + value);\n        }\n        return null;\n    };\n    /**\n     * @abstract\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitExternalExpr = function (ast, ctx) { };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitConditionalExpr = function (ast, ctx) {\n        ctx.print(ast, \"(\");\n        ast.condition.visitExpression(this, ctx);\n        ctx.print(ast, '? ');\n        ast.trueCase.visitExpression(this, ctx);\n        ctx.print(ast, ': ');\n        ast.falseCase.visitExpression(this, ctx);\n        ctx.print(ast, \")\");\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitNotExpr = function (ast, ctx) {\n        ctx.print(ast, '!');\n        ast.condition.visitExpression(this, ctx);\n        return null;\n    };\n    /**\n     * @abstract\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitFunctionExpr = function (ast, ctx) { };\n    /**\n     * @abstract\n     * @param {?} stmt\n     * @param {?} context\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitDeclareFunctionStmt = function (stmt, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitBinaryOperatorExpr = function (ast, ctx) {\n        var /** @type {?} */ opStr;\n        switch (ast.operator) {\n            case BinaryOperator.Equals:\n                opStr = '==';\n                break;\n            case BinaryOperator.Identical:\n                opStr = '===';\n                break;\n            case BinaryOperator.NotEquals:\n                opStr = '!=';\n                break;\n            case BinaryOperator.NotIdentical:\n                opStr = '!==';\n                break;\n            case BinaryOperator.And:\n                opStr = '&&';\n                break;\n            case BinaryOperator.Or:\n                opStr = '||';\n                break;\n            case BinaryOperator.Plus:\n                opStr = '+';\n                break;\n            case BinaryOperator.Minus:\n                opStr = '-';\n                break;\n            case BinaryOperator.Divide:\n                opStr = '/';\n                break;\n            case BinaryOperator.Multiply:\n                opStr = '*';\n                break;\n            case BinaryOperator.Modulo:\n                opStr = '%';\n                break;\n            case BinaryOperator.Lower:\n                opStr = '<';\n                break;\n            case BinaryOperator.LowerEquals:\n                opStr = '<=';\n                break;\n            case BinaryOperator.Bigger:\n                opStr = '>';\n                break;\n            case BinaryOperator.BiggerEquals:\n                opStr = '>=';\n                break;\n            default:\n                throw new Error(\"Unknown operator \" + ast.operator);\n        }\n        ctx.print(ast, \"(\");\n        ast.lhs.visitExpression(this, ctx);\n        ctx.print(ast, \" \" + opStr + \" \");\n        ast.rhs.visitExpression(this, ctx);\n        ctx.print(ast, \")\");\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitReadPropExpr = function (ast, ctx) {\n        ast.receiver.visitExpression(this, ctx);\n        ctx.print(ast, \".\");\n        ctx.print(ast, ast.name);\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitReadKeyExpr = function (ast, ctx) {\n        ast.receiver.visitExpression(this, ctx);\n        ctx.print(ast, \"[\");\n        ast.index.visitExpression(this, ctx);\n        ctx.print(ast, \"]\");\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitLiteralArrayExpr = function (ast, ctx) {\n        var /** @type {?} */ useNewLine = ast.entries.length > 1;\n        ctx.print(ast, \"[\", useNewLine);\n        ctx.incIndent();\n        this.visitAllExpressions(ast.entries, ctx, ',', useNewLine);\n        ctx.decIndent();\n        ctx.print(ast, \"]\", useNewLine);\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitLiteralMapExpr = function (ast, ctx) {\n        var _this = this;\n        var /** @type {?} */ useNewLine = ast.entries.length > 1;\n        ctx.print(ast, \"{\", useNewLine);\n        ctx.incIndent();\n        this.visitAllObjects(function (entry) {\n            ctx.print(ast, escapeIdentifier(entry.key, _this._escapeDollarInStrings, entry.quoted) + \": \");\n            entry.value.visitExpression(_this, ctx);\n        }, ast.entries, ctx, ',', useNewLine);\n        ctx.decIndent();\n        ctx.print(ast, \"}\", useNewLine);\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitCommaExpr = function (ast, ctx) {\n        ctx.print(ast, '(');\n        this.visitAllExpressions(ast.parts, ctx, ',');\n        ctx.print(ast, ')');\n        return null;\n    };\n    /**\n     * @param {?} expressions\n     * @param {?} ctx\n     * @param {?} separator\n     * @param {?=} newLine\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitAllExpressions = function (expressions, ctx, separator, newLine) {\n        var _this = this;\n        if (newLine === void 0) { newLine = false; }\n        this.visitAllObjects(function (expr) { return expr.visitExpression(_this, ctx); }, expressions, ctx, separator, newLine);\n    };\n    /**\n     * @template T\n     * @param {?} handler\n     * @param {?} expressions\n     * @param {?} ctx\n     * @param {?} separator\n     * @param {?=} newLine\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitAllObjects = function (handler, expressions, ctx, separator, newLine) {\n        if (newLine === void 0) { newLine = false; }\n        for (var /** @type {?} */ i = 0; i < expressions.length; i++) {\n            if (i > 0) {\n                ctx.print(null, separator, newLine);\n            }\n            handler(expressions[i]);\n        }\n        if (newLine) {\n            ctx.println();\n        }\n    };\n    /**\n     * @param {?} statements\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractEmitterVisitor.prototype.visitAllStatements = function (statements, ctx) {\n        var _this = this;\n        statements.forEach(function (stmt) { return stmt.visitStatement(_this, ctx); });\n    };\n    return AbstractEmitterVisitor;\n}());\n/**\n * @param {?} input\n * @param {?} escapeDollar\n * @param {?=} alwaysQuote\n * @return {?}\n */\nfunction escapeIdentifier(input, escapeDollar, alwaysQuote) {\n    if (alwaysQuote === void 0) { alwaysQuote = true; }\n    if (input == null) {\n        return null;\n    }\n    var /** @type {?} */ body = input.replace(_SINGLE_QUOTE_ESCAPE_STRING_RE, function () {\n        var match = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            match[_i] = arguments[_i];\n        }\n        if (match[0] == '$') {\n            return escapeDollar ? '\\\\$' : '$';\n        }\n        else if (match[0] == '\\n') {\n            return '\\\\n';\n        }\n        else if (match[0] == '\\r') {\n            return '\\\\r';\n        }\n        else {\n            return \"\\\\\" + match[0];\n        }\n    });\n    var /** @type {?} */ requiresQuotes = alwaysQuote || !_LEGAL_IDENTIFIER_RE.test(body);\n    return requiresQuotes ? \"'\" + body + \"'\" : body;\n}\n/**\n * @param {?} count\n * @return {?}\n */\nfunction _createIndent(count) {\n    var /** @type {?} */ res = '';\n    for (var /** @type {?} */ i = 0; i < count; i++) {\n        res += _INDENT_WITH;\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 */\nvar _debugFilePath = '/debug/lib';\n/**\n * @param {?} ast\n * @return {?}\n */\nfunction debugOutputAstAsTypeScript(ast) {\n    var /** @type {?} */ converter = new _TsEmitterVisitor(_debugFilePath, {\n        /**\n         * @param {?} filePath\n         * @param {?} containingFilePath\n         * @return {?}\n         */\n        fileNameToModuleName: function (filePath, containingFilePath) { return filePath; },\n        /**\n         * @param {?} symbol\n         * @return {?}\n         */\n        getImportAs: function (symbol) { return null; },\n        getTypeArity: function (symbol) { return null; }\n    });\n    var /** @type {?} */ ctx = EmitterVisitorContext.createRoot([]);\n    var /** @type {?} */ asts = Array.isArray(ast) ? ast : [ast];\n    asts.forEach(function (ast) {\n        if (ast instanceof Statement) {\n            ast.visitStatement(converter, ctx);\n        }\n        else if (ast instanceof Expression) {\n            ast.visitExpression(converter, ctx);\n        }\n        else if (ast instanceof Type$1) {\n            ast.visitType(converter, ctx);\n        }\n        else {\n            throw new Error(\"Don't know how to print debug info for \" + ast);\n        }\n    });\n    return ctx.toSource();\n}\nvar TypeScriptEmitter = (function () {\n    /**\n     * @param {?} _importResolver\n     */\n    function TypeScriptEmitter(_importResolver) {\n        this._importResolver = _importResolver;\n    }\n    /**\n     * @param {?} srcFilePath\n     * @param {?} genFilePath\n     * @param {?} stmts\n     * @param {?} exportedVars\n     * @param {?=} preamble\n     * @return {?}\n     */\n    TypeScriptEmitter.prototype.emitStatements = function (srcFilePath, genFilePath, stmts, exportedVars, preamble) {\n        var _this = this;\n        if (preamble === void 0) { preamble = ''; }\n        var /** @type {?} */ converter = new _TsEmitterVisitor(genFilePath, this._importResolver);\n        var /** @type {?} */ ctx = EmitterVisitorContext.createRoot(exportedVars);\n        converter.visitAllStatements(stmts, ctx);\n        var /** @type {?} */ preambleLines = preamble ? preamble.split('\\n') : [];\n        converter.reexports.forEach(function (reexports, exportedFilePath) {\n            var /** @type {?} */ reexportsCode = reexports.map(function (reexport) { return reexport.name + \" as \" + reexport.as; }).join(',');\n            preambleLines.push(\"export {\" + reexportsCode + \"} from '\" + _this._importResolver.fileNameToModuleName(exportedFilePath, genFilePath) + \"';\");\n        });\n        converter.importsWithPrefixes.forEach(function (prefix, importedFilePath) {\n            // Note: can't write the real word for import as it screws up system.js auto detection...\n            preambleLines.push(\"imp\" +\n                (\"ort * as \" + prefix + \" from '\" + _this._importResolver.fileNameToModuleName(importedFilePath, genFilePath) + \"';\"));\n        });\n        var /** @type {?} */ sm = ctx.toSourceMapGenerator(srcFilePath, genFilePath, preambleLines.length).toJsComment();\n        var /** @type {?} */ lines = preambleLines.concat([ctx.toSource(), sm]);\n        if (sm) {\n            // always add a newline at the end, as some tools have bugs without it.\n            lines.push('');\n        }\n        return lines.join('\\n');\n    };\n    return TypeScriptEmitter;\n}());\nvar _TsEmitterVisitor = (function (_super) {\n    __extends(_TsEmitterVisitor, _super);\n    /**\n     * @param {?} _genFilePath\n     * @param {?} _importResolver\n     */\n    function _TsEmitterVisitor(_genFilePath, _importResolver) {\n        var _this = _super.call(this, false) || this;\n        _this._genFilePath = _genFilePath;\n        _this._importResolver = _importResolver;\n        _this.typeExpression = 0;\n        _this.importsWithPrefixes = new Map();\n        _this.reexports = new Map();\n        return _this;\n    }\n    /**\n     * @param {?} t\n     * @param {?} ctx\n     * @param {?=} defaultType\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype.visitType = function (t, ctx, defaultType) {\n        if (defaultType === void 0) { defaultType = 'any'; }\n        if (t != null) {\n            this.typeExpression++;\n            t.visitType(this, ctx);\n            this.typeExpression--;\n        }\n        else {\n            ctx.print(null, defaultType);\n        }\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype.visitLiteralExpr = function (ast, ctx) {\n        var /** @type {?} */ value = ast.value;\n        if (value == null && ast.type != INFERRED_TYPE) {\n            ctx.print(ast, \"(\" + value + \" as any)\");\n            return null;\n        }\n        return _super.prototype.visitLiteralExpr.call(this, ast, ctx);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype.visitLiteralArrayExpr = function (ast, ctx) {\n        if (ast.entries.length === 0) {\n            ctx.print(ast, '(');\n        }\n        var /** @type {?} */ result = _super.prototype.visitLiteralArrayExpr.call(this, ast, ctx);\n        if (ast.entries.length === 0) {\n            ctx.print(ast, ' as any[])');\n        }\n        return result;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype.visitExternalExpr = function (ast, ctx) {\n        this._visitIdentifier(ast.value, ast.typeParams, ctx);\n        return null;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype.visitDeclareVarStmt = function (stmt, ctx) {\n        if (ctx.isExportedVar(stmt.name) && stmt.value instanceof ExternalExpr && !stmt.type) {\n            // check for a reexport\n            var _a = this._resolveStaticSymbol(stmt.value.value), name = _a.name, filePath = _a.filePath, members = _a.members;\n            if (members.length === 0 && filePath !== this._genFilePath) {\n                var /** @type {?} */ reexports = this.reexports.get(filePath);\n                if (!reexports) {\n                    reexports = [];\n                    this.reexports.set(filePath, reexports);\n                }\n                reexports.push({ name: name, as: stmt.name });\n                return null;\n            }\n        }\n        if (ctx.isExportedVar(stmt.name)) {\n            ctx.print(stmt, \"export \");\n        }\n        if (stmt.hasModifier(StmtModifier.Final)) {\n            ctx.print(stmt, \"const\");\n        }\n        else {\n            ctx.print(stmt, \"var\");\n        }\n        ctx.print(stmt, \" \" + stmt.name);\n        this._printColonType(stmt.type, ctx);\n        ctx.print(stmt, \" = \");\n        stmt.value.visitExpression(this, ctx);\n        ctx.println(stmt, \";\");\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype.visitCastExpr = function (ast, ctx) {\n        ctx.print(ast, \"(<\");\n        ast.type.visitType(this, ctx);\n        ctx.print(ast, \">\");\n        ast.value.visitExpression(this, ctx);\n        ctx.print(ast, \")\");\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype.visitInstantiateExpr = function (ast, ctx) {\n        ctx.print(ast, \"new \");\n        this.typeExpression++;\n        ast.classExpr.visitExpression(this, ctx);\n        this.typeExpression--;\n        ctx.print(ast, \"(\");\n        this.visitAllExpressions(ast.args, ctx, ',');\n        ctx.print(ast, \")\");\n        return null;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype.visitDeclareClassStmt = function (stmt, ctx) {\n        var _this = this;\n        ctx.pushClass(stmt);\n        if (ctx.isExportedVar(stmt.name)) {\n            ctx.print(stmt, \"export \");\n        }\n        ctx.print(stmt, \"class \" + stmt.name);\n        if (stmt.parent != null) {\n            ctx.print(stmt, \" extends \");\n            this.typeExpression++;\n            stmt.parent.visitExpression(this, ctx);\n            this.typeExpression--;\n        }\n        ctx.println(stmt, \" {\");\n        ctx.incIndent();\n        stmt.fields.forEach(function (field) { return _this._visitClassField(field, ctx); });\n        if (stmt.constructorMethod != null) {\n            this._visitClassConstructor(stmt, ctx);\n        }\n        stmt.getters.forEach(function (getter) { return _this._visitClassGetter(getter, ctx); });\n        stmt.methods.forEach(function (method) { return _this._visitClassMethod(method, ctx); });\n        ctx.decIndent();\n        ctx.println(stmt, \"}\");\n        ctx.popClass();\n        return null;\n    };\n    /**\n     * @param {?} field\n     * @param {?} ctx\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype._visitClassField = function (field, ctx) {\n        if (field.hasModifier(StmtModifier.Private)) {\n            // comment out as a workaround for #10967\n            ctx.print(null, \"/*private*/ \");\n        }\n        ctx.print(null, field.name);\n        this._printColonType(field.type, ctx);\n        ctx.println(null, \";\");\n    };\n    /**\n     * @param {?} getter\n     * @param {?} ctx\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype._visitClassGetter = function (getter, ctx) {\n        if (getter.hasModifier(StmtModifier.Private)) {\n            ctx.print(null, \"private \");\n        }\n        ctx.print(null, \"get \" + getter.name + \"()\");\n        this._printColonType(getter.type, ctx);\n        ctx.println(null, \" {\");\n        ctx.incIndent();\n        this.visitAllStatements(getter.body, ctx);\n        ctx.decIndent();\n        ctx.println(null, \"}\");\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype._visitClassConstructor = function (stmt, ctx) {\n        ctx.print(stmt, \"constructor(\");\n        this._visitParams(stmt.constructorMethod.params, ctx);\n        ctx.println(stmt, \") {\");\n        ctx.incIndent();\n        this.visitAllStatements(stmt.constructorMethod.body, ctx);\n        ctx.decIndent();\n        ctx.println(stmt, \"}\");\n    };\n    /**\n     * @param {?} method\n     * @param {?} ctx\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype._visitClassMethod = function (method, ctx) {\n        if (method.hasModifier(StmtModifier.Private)) {\n            ctx.print(null, \"private \");\n        }\n        ctx.print(null, method.name + \"(\");\n        this._visitParams(method.params, ctx);\n        ctx.print(null, \")\");\n        this._printColonType(method.type, ctx, 'void');\n        ctx.println(null, \" {\");\n        ctx.incIndent();\n        this.visitAllStatements(method.body, ctx);\n        ctx.decIndent();\n        ctx.println(null, \"}\");\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype.visitFunctionExpr = function (ast, ctx) {\n        ctx.print(ast, \"(\");\n        this._visitParams(ast.params, ctx);\n        ctx.print(ast, \")\");\n        this._printColonType(ast.type, ctx, 'void');\n        ctx.println(ast, \" => {\");\n        ctx.incIndent();\n        this.visitAllStatements(ast.statements, ctx);\n        ctx.decIndent();\n        ctx.print(ast, \"}\");\n        return null;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype.visitDeclareFunctionStmt = function (stmt, ctx) {\n        if (ctx.isExportedVar(stmt.name)) {\n            ctx.print(stmt, \"export \");\n        }\n        ctx.print(stmt, \"function \" + stmt.name + \"(\");\n        this._visitParams(stmt.params, ctx);\n        ctx.print(stmt, \")\");\n        this._printColonType(stmt.type, ctx, 'void');\n        ctx.println(stmt, \" {\");\n        ctx.incIndent();\n        this.visitAllStatements(stmt.statements, ctx);\n        ctx.decIndent();\n        ctx.println(stmt, \"}\");\n        return null;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype.visitTryCatchStmt = function (stmt, ctx) {\n        ctx.println(stmt, \"try {\");\n        ctx.incIndent();\n        this.visitAllStatements(stmt.bodyStmts, ctx);\n        ctx.decIndent();\n        ctx.println(stmt, \"} catch (\" + CATCH_ERROR_VAR$1.name + \") {\");\n        ctx.incIndent();\n        var /** @type {?} */ catchStmts = [/** @type {?} */ (CATCH_STACK_VAR$1.set(CATCH_ERROR_VAR$1.prop('stack')).toDeclStmt(null, [\n                StmtModifier.Final\n            ]))].concat(stmt.catchStmts);\n        this.visitAllStatements(catchStmts, ctx);\n        ctx.decIndent();\n        ctx.println(stmt, \"}\");\n        return null;\n    };\n    /**\n     * @param {?} type\n     * @param {?} ctx\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype.visitBuiltintType = function (type, ctx) {\n        var /** @type {?} */ typeStr;\n        switch (type.name) {\n            case BuiltinTypeName.Bool:\n                typeStr = 'boolean';\n                break;\n            case BuiltinTypeName.Dynamic:\n                typeStr = 'any';\n                break;\n            case BuiltinTypeName.Function:\n                typeStr = 'Function';\n                break;\n            case BuiltinTypeName.Number:\n                typeStr = 'number';\n                break;\n            case BuiltinTypeName.Int:\n                typeStr = 'number';\n                break;\n            case BuiltinTypeName.String:\n                typeStr = 'string';\n                break;\n            default:\n                throw new Error(\"Unsupported builtin type \" + type.name);\n        }\n        ctx.print(null, typeStr);\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype.visitExpressionType = function (ast, ctx) {\n        ast.value.visitExpression(this, ctx);\n        return null;\n    };\n    /**\n     * @param {?} type\n     * @param {?} ctx\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype.visitArrayType = function (type, ctx) {\n        this.visitType(type.of, ctx);\n        ctx.print(null, \"[]\");\n        return null;\n    };\n    /**\n     * @param {?} type\n     * @param {?} ctx\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype.visitMapType = function (type, ctx) {\n        ctx.print(null, \"{[key: string]:\");\n        this.visitType(type.valueType, ctx);\n        ctx.print(null, \"}\");\n        return null;\n    };\n    /**\n     * @param {?} method\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype.getBuiltinMethodName = function (method) {\n        var /** @type {?} */ name;\n        switch (method) {\n            case BuiltinMethod.ConcatArray:\n                name = 'concat';\n                break;\n            case BuiltinMethod.SubscribeObservable:\n                name = 'subscribe';\n                break;\n            case BuiltinMethod.Bind:\n                name = 'bind';\n                break;\n            default:\n                throw new Error(\"Unknown builtin method: \" + method);\n        }\n        return name;\n    };\n    /**\n     * @param {?} params\n     * @param {?} ctx\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype._visitParams = function (params, ctx) {\n        var _this = this;\n        this.visitAllObjects(function (param) {\n            ctx.print(null, param.name);\n            _this._printColonType(param.type, ctx);\n        }, params, ctx, ',');\n    };\n    /**\n     * @param {?} value\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype._resolveStaticSymbol = function (value) {\n        var /** @type {?} */ reference = value.reference;\n        if (!(reference instanceof StaticSymbol)) {\n            throw new Error(\"Internal error: unknown identifier \" + JSON.stringify(value));\n        }\n        var /** @type {?} */ arity = this._importResolver.getTypeArity(reference) || undefined;\n        var /** @type {?} */ importReference = this._importResolver.getImportAs(reference) || reference;\n        return {\n            name: importReference.name,\n            filePath: importReference.filePath,\n            members: importReference.members, arity: arity\n        };\n    };\n    /**\n     * @param {?} value\n     * @param {?} typeParams\n     * @param {?} ctx\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype._visitIdentifier = function (value, typeParams, ctx) {\n        var _this = this;\n        var _a = this._resolveStaticSymbol(value), name = _a.name, filePath = _a.filePath, members = _a.members, arity = _a.arity;\n        if (filePath != this._genFilePath) {\n            var /** @type {?} */ prefix = this.importsWithPrefixes.get(filePath);\n            if (prefix == null) {\n                prefix = \"import\" + this.importsWithPrefixes.size;\n                this.importsWithPrefixes.set(filePath, prefix);\n            }\n            ctx.print(null, prefix + \".\");\n        }\n        if (members.length) {\n            ctx.print(null, name);\n            ctx.print(null, '.');\n            ctx.print(null, members.join('.'));\n        }\n        else {\n            ctx.print(null, name);\n        }\n        if (this.typeExpression > 0) {\n            // If we are in a type expression that refers to a generic type then supply\n            // the required type parameters. If there were not enough type parameters\n            // supplied, supply any as the type. Outside a type expression the reference\n            // should not supply type parameters and be treated as a simple value reference\n            // to the constructor function itself.\n            var /** @type {?} */ suppliedParameters = (typeParams && typeParams.length) || 0;\n            var /** @type {?} */ additionalParameters = (arity || 0) - suppliedParameters;\n            if (suppliedParameters > 0 || additionalParameters > 0) {\n                ctx.print(null, \"<\");\n                if (suppliedParameters > 0) {\n                    this.visitAllObjects(function (type) { return type.visitType(_this, ctx); }, typeParams, ctx, ',');\n                }\n                if (additionalParameters > 0) {\n                    for (var /** @type {?} */ i = 0; i < additionalParameters; i++) {\n                        if (i > 0 || suppliedParameters > 0)\n                            ctx.print(null, ',');\n                        ctx.print(null, 'any');\n                    }\n                }\n                ctx.print(null, \">\");\n            }\n        }\n    };\n    /**\n     * @param {?} type\n     * @param {?} ctx\n     * @param {?=} defaultType\n     * @return {?}\n     */\n    _TsEmitterVisitor.prototype._printColonType = function (type, ctx, defaultType) {\n        if (type !== INFERRED_TYPE) {\n            ctx.print(null, ':');\n            this.visitType(type, ctx, defaultType);\n        }\n    };\n    return _TsEmitterVisitor;\n}(AbstractEmitterVisitor));\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this 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// =========== S T O P   -  S T O P   -  S T O P   -  S T O P   -  S T O P   -  S T O P  ===========\n// =================================================================================================\n// =================================================================================================\n//\n//        DO NOT EDIT THIS LIST OF SECURITY SENSITIVE PROPERTIES WITHOUT A SECURITY REVIEW!\n//                               Reach out to mprobst for details.\n//\n// =================================================================================================\n/** Map from tagName|propertyName SecurityContext. Properties applying to all tags use '*'. */\nvar SECURITY_SCHEMA = {};\n/**\n * @param {?} ctx\n * @param {?} specs\n * @return {?}\n */\nfunction registerContext(ctx, specs) {\n    for (var _i = 0, specs_1 = specs; _i < specs_1.length; _i++) {\n        var spec = specs_1[_i];\n        SECURITY_SCHEMA[spec.toLowerCase()] = ctx;\n    }\n}\n// Case is insignificant below, all element and attribute names are lower-cased for lookup.\nregisterContext(SecurityContext.HTML, [\n    'iframe|srcdoc',\n    '*|innerHTML',\n    '*|outerHTML',\n]);\nregisterContext(SecurityContext.STYLE, ['*|style']);\n// NB: no SCRIPT contexts here, they are never allowed due to the parser stripping them.\nregisterContext(SecurityContext.URL, [\n    '*|formAction', 'area|href', 'area|ping', 'audio|src', 'a|href',\n    'a|ping', 'blockquote|cite', 'body|background', 'del|cite', 'form|action',\n    'img|src', 'img|srcset', 'input|src', 'ins|cite', 'q|cite',\n    'source|src', 'source|srcset', 'track|src', 'video|poster', 'video|src',\n]);\nregisterContext(SecurityContext.RESOURCE_URL, [\n    'applet|code',\n    'applet|codebase',\n    'base|href',\n    'embed|src',\n    'frame|src',\n    'head|profile',\n    'html|manifest',\n    'iframe|src',\n    'link|href',\n    'media|src',\n    'object|codebase',\n    'object|data',\n    'script|src',\n]);\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar BOOLEAN = 'boolean';\nvar NUMBER = 'number';\nvar STRING = 'string';\nvar OBJECT = 'object';\n/**\n * This array represents the DOM schema. It encodes inheritance, properties, and events.\n *\n * ## Overview\n *\n * Each line represents one kind of element. The `element_inheritance` and properties are joined\n * using `element_inheritance|properties` syntax.\n *\n * ## Element Inheritance\n *\n * The `element_inheritance` can be further subdivided as `element1,element2,...^parentElement`.\n * Here the individual elements are separated by `,` (commas). Every element in the list\n * has identical properties.\n *\n * An `element` may inherit additional properties from `parentElement` If no `^parentElement` is\n * specified then `\"\"` (blank) element is assumed.\n *\n * NOTE: The blank element inherits from root `[Element]` element, the super element of all\n * elements.\n *\n * NOTE an element prefix such as `:svg:` has no special meaning to the schema.\n *\n * ## Properties\n *\n * Each element has a set of properties separated by `,` (commas). Each property can be prefixed\n * by a special character designating its type:\n *\n * - (no prefix): property is a string.\n * - `*`: property represents an event.\n * - `!`: property is a boolean.\n * - `#`: property is a number.\n * - `%`: property is an object.\n *\n * ## Query\n *\n * The class creates an internal squas representation which allows to easily answer the query of\n * if a given property exist on a given element.\n *\n * NOTE: We don't yet support querying for types or events.\n * NOTE: This schema is auto extracted from `schema_extractor.ts` located in the test folder,\n *       see dom_element_schema_registry_spec.ts\n */\n// =================================================================================================\n// =================================================================================================\n// =========== S T O P   -  S T O P   -  S T O P   -  S T O P   -  S T O P   -  S T O P  ===========\n// =================================================================================================\n// =================================================================================================\n//\n//                       DO NOT EDIT THIS DOM SCHEMA WITHOUT A SECURITY REVIEW!\n//\n// Newly added properties must be security reviewed and assigned an appropriate SecurityContext in\n// dom_security_schema.ts. Reach out to mprobst & rjamet for details.\n//\n// =================================================================================================\nvar SCHEMA = [\n    '[Element]|textContent,%classList,className,id,innerHTML,*beforecopy,*beforecut,*beforepaste,*copy,*cut,*paste,*search,*selectstart,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerHTML,#scrollLeft,#scrollTop',\n    '[HTMLElement]^[Element]|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*beforecopy,*beforecut,*beforepaste,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*copy,*cuechange,*cut,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*message,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*mozfullscreenchange,*mozfullscreenerror,*mozpointerlockchange,*mozpointerlockerror,*paste,*pause,*play,*playing,*progress,*ratechange,*reset,*resize,*scroll,*search,*seeked,*seeking,*select,*selectstart,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,*webglcontextcreationerror,*webglcontextlost,*webglcontextrestored,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerText,!spellcheck,%style,#tabIndex,title,!translate',\n    'abbr,address,article,aside,b,bdi,bdo,cite,code,dd,dfn,dt,em,figcaption,figure,footer,header,i,kbd,main,mark,nav,noscript,rb,rp,rt,rtc,ruby,s,samp,section,small,strong,sub,sup,u,var,wbr^[HTMLElement]|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*beforecopy,*beforecut,*beforepaste,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*copy,*cuechange,*cut,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*message,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*mozfullscreenchange,*mozfullscreenerror,*mozpointerlockchange,*mozpointerlockerror,*paste,*pause,*play,*playing,*progress,*ratechange,*reset,*resize,*scroll,*search,*seeked,*seeking,*select,*selectstart,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,*webglcontextcreationerror,*webglcontextlost,*webglcontextrestored,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerText,!spellcheck,%style,#tabIndex,title,!translate',\n    'media^[HTMLElement]|!autoplay,!controls,%crossOrigin,#currentTime,!defaultMuted,#defaultPlaybackRate,!disableRemotePlayback,!loop,!muted,*encrypted,#playbackRate,preload,src,%srcObject,#volume',\n    ':svg:^[HTMLElement]|*abort,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,%style,#tabIndex',\n    ':svg:graphics^:svg:|',\n    ':svg:animation^:svg:|*begin,*end,*repeat',\n    ':svg:geometry^:svg:|',\n    ':svg:componentTransferFunction^:svg:|',\n    ':svg:gradient^:svg:|',\n    ':svg:textContent^:svg:graphics|',\n    ':svg:textPositioning^:svg:textContent|',\n    'a^[HTMLElement]|charset,coords,download,hash,host,hostname,href,hreflang,name,password,pathname,ping,port,protocol,referrerPolicy,rel,rev,search,shape,target,text,type,username',\n    'area^[HTMLElement]|alt,coords,hash,host,hostname,href,!noHref,password,pathname,ping,port,protocol,referrerPolicy,search,shape,target,username',\n    'audio^media|',\n    'br^[HTMLElement]|clear',\n    'base^[HTMLElement]|href,target',\n    'body^[HTMLElement]|aLink,background,bgColor,link,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,text,vLink',\n    'button^[HTMLElement]|!autofocus,!disabled,formAction,formEnctype,formMethod,!formNoValidate,formTarget,name,type,value',\n    'canvas^[HTMLElement]|#height,#width',\n    'content^[HTMLElement]|select',\n    'dl^[HTMLElement]|!compact',\n    'datalist^[HTMLElement]|',\n    'details^[HTMLElement]|!open',\n    'dialog^[HTMLElement]|!open,returnValue',\n    'dir^[HTMLElement]|!compact',\n    'div^[HTMLElement]|align',\n    'embed^[HTMLElement]|align,height,name,src,type,width',\n    'fieldset^[HTMLElement]|!disabled,name',\n    'font^[HTMLElement]|color,face,size',\n    'form^[HTMLElement]|acceptCharset,action,autocomplete,encoding,enctype,method,name,!noValidate,target',\n    'frame^[HTMLElement]|frameBorder,longDesc,marginHeight,marginWidth,name,!noResize,scrolling,src',\n    'frameset^[HTMLElement]|cols,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,rows',\n    'hr^[HTMLElement]|align,color,!noShade,size,width',\n    'head^[HTMLElement]|',\n    'h1,h2,h3,h4,h5,h6^[HTMLElement]|align',\n    'html^[HTMLElement]|version',\n    'iframe^[HTMLElement]|align,!allowFullscreen,frameBorder,height,longDesc,marginHeight,marginWidth,name,referrerPolicy,%sandbox,scrolling,src,srcdoc,width',\n    'img^[HTMLElement]|align,alt,border,%crossOrigin,#height,#hspace,!isMap,longDesc,lowsrc,name,referrerPolicy,sizes,src,srcset,useMap,#vspace,#width',\n    'input^[HTMLElement]|accept,align,alt,autocapitalize,autocomplete,!autofocus,!checked,!defaultChecked,defaultValue,dirName,!disabled,%files,formAction,formEnctype,formMethod,!formNoValidate,formTarget,#height,!incremental,!indeterminate,max,#maxLength,min,#minLength,!multiple,name,pattern,placeholder,!readOnly,!required,selectionDirection,#selectionEnd,#selectionStart,#size,src,step,type,useMap,value,%valueAsDate,#valueAsNumber,#width',\n    'keygen^[HTMLElement]|!autofocus,challenge,!disabled,keytype,name',\n    'li^[HTMLElement]|type,#value',\n    'label^[HTMLElement]|htmlFor',\n    'legend^[HTMLElement]|align',\n    'link^[HTMLElement]|as,charset,%crossOrigin,!disabled,href,hreflang,integrity,media,rel,%relList,rev,%sizes,target,type',\n    'map^[HTMLElement]|name',\n    'marquee^[HTMLElement]|behavior,bgColor,direction,height,#hspace,#loop,#scrollAmount,#scrollDelay,!trueSpeed,#vspace,width',\n    'menu^[HTMLElement]|!compact',\n    'meta^[HTMLElement]|content,httpEquiv,name,scheme',\n    'meter^[HTMLElement]|#high,#low,#max,#min,#optimum,#value',\n    'ins,del^[HTMLElement]|cite,dateTime',\n    'ol^[HTMLElement]|!compact,!reversed,#start,type',\n    'object^[HTMLElement]|align,archive,border,code,codeBase,codeType,data,!declare,height,#hspace,name,standby,type,useMap,#vspace,width',\n    'optgroup^[HTMLElement]|!disabled,label',\n    'option^[HTMLElement]|!defaultSelected,!disabled,label,!selected,text,value',\n    'output^[HTMLElement]|defaultValue,%htmlFor,name,value',\n    'p^[HTMLElement]|align',\n    'param^[HTMLElement]|name,type,value,valueType',\n    'picture^[HTMLElement]|',\n    'pre^[HTMLElement]|#width',\n    'progress^[HTMLElement]|#max,#value',\n    'q,blockquote,cite^[HTMLElement]|',\n    'script^[HTMLElement]|!async,charset,%crossOrigin,!defer,event,htmlFor,integrity,src,text,type',\n    'select^[HTMLElement]|!autofocus,!disabled,#length,!multiple,name,!required,#selectedIndex,#size,value',\n    'shadow^[HTMLElement]|',\n    'source^[HTMLElement]|media,sizes,src,srcset,type',\n    'span^[HTMLElement]|',\n    'style^[HTMLElement]|!disabled,media,type',\n    'caption^[HTMLElement]|align',\n    'th,td^[HTMLElement]|abbr,align,axis,bgColor,ch,chOff,#colSpan,headers,height,!noWrap,#rowSpan,scope,vAlign,width',\n    'col,colgroup^[HTMLElement]|align,ch,chOff,#span,vAlign,width',\n    'table^[HTMLElement]|align,bgColor,border,%caption,cellPadding,cellSpacing,frame,rules,summary,%tFoot,%tHead,width',\n    'tr^[HTMLElement]|align,bgColor,ch,chOff,vAlign',\n    'tfoot,thead,tbody^[HTMLElement]|align,ch,chOff,vAlign',\n    'template^[HTMLElement]|',\n    'textarea^[HTMLElement]|autocapitalize,!autofocus,#cols,defaultValue,dirName,!disabled,#maxLength,#minLength,name,placeholder,!readOnly,!required,#rows,selectionDirection,#selectionEnd,#selectionStart,value,wrap',\n    'title^[HTMLElement]|text',\n    'track^[HTMLElement]|!default,kind,label,src,srclang',\n    'ul^[HTMLElement]|!compact,type',\n    'unknown^[HTMLElement]|',\n    'video^media|#height,poster,#width',\n    ':svg:a^:svg:graphics|',\n    ':svg:animate^:svg:animation|',\n    ':svg:animateMotion^:svg:animation|',\n    ':svg:animateTransform^:svg:animation|',\n    ':svg:circle^:svg:geometry|',\n    ':svg:clipPath^:svg:graphics|',\n    ':svg:cursor^:svg:|',\n    ':svg:defs^:svg:graphics|',\n    ':svg:desc^:svg:|',\n    ':svg:discard^:svg:|',\n    ':svg:ellipse^:svg:geometry|',\n    ':svg:feBlend^:svg:|',\n    ':svg:feColorMatrix^:svg:|',\n    ':svg:feComponentTransfer^:svg:|',\n    ':svg:feComposite^:svg:|',\n    ':svg:feConvolveMatrix^:svg:|',\n    ':svg:feDiffuseLighting^:svg:|',\n    ':svg:feDisplacementMap^:svg:|',\n    ':svg:feDistantLight^:svg:|',\n    ':svg:feDropShadow^:svg:|',\n    ':svg:feFlood^:svg:|',\n    ':svg:feFuncA^:svg:componentTransferFunction|',\n    ':svg:feFuncB^:svg:componentTransferFunction|',\n    ':svg:feFuncG^:svg:componentTransferFunction|',\n    ':svg:feFuncR^:svg:componentTransferFunction|',\n    ':svg:feGaussianBlur^:svg:|',\n    ':svg:feImage^:svg:|',\n    ':svg:feMerge^:svg:|',\n    ':svg:feMergeNode^:svg:|',\n    ':svg:feMorphology^:svg:|',\n    ':svg:feOffset^:svg:|',\n    ':svg:fePointLight^:svg:|',\n    ':svg:feSpecularLighting^:svg:|',\n    ':svg:feSpotLight^:svg:|',\n    ':svg:feTile^:svg:|',\n    ':svg:feTurbulence^:svg:|',\n    ':svg:filter^:svg:|',\n    ':svg:foreignObject^:svg:graphics|',\n    ':svg:g^:svg:graphics|',\n    ':svg:image^:svg:graphics|',\n    ':svg:line^:svg:geometry|',\n    ':svg:linearGradient^:svg:gradient|',\n    ':svg:mpath^:svg:|',\n    ':svg:marker^:svg:|',\n    ':svg:mask^:svg:|',\n    ':svg:metadata^:svg:|',\n    ':svg:path^:svg:geometry|',\n    ':svg:pattern^:svg:|',\n    ':svg:polygon^:svg:geometry|',\n    ':svg:polyline^:svg:geometry|',\n    ':svg:radialGradient^:svg:gradient|',\n    ':svg:rect^:svg:geometry|',\n    ':svg:svg^:svg:graphics|#currentScale,#zoomAndPan',\n    ':svg:script^:svg:|type',\n    ':svg:set^:svg:animation|',\n    ':svg:stop^:svg:|',\n    ':svg:style^:svg:|!disabled,media,title,type',\n    ':svg:switch^:svg:graphics|',\n    ':svg:symbol^:svg:|',\n    ':svg:tspan^:svg:textPositioning|',\n    ':svg:text^:svg:textPositioning|',\n    ':svg:textPath^:svg:textContent|',\n    ':svg:title^:svg:|',\n    ':svg:use^:svg:graphics|',\n    ':svg:view^:svg:|#zoomAndPan',\n    'data^[HTMLElement]|value',\n    'menuitem^[HTMLElement]|type,label,icon,!disabled,!checked,radiogroup,!default',\n    'summary^[HTMLElement]|',\n    'time^[HTMLElement]|dateTime',\n];\nvar _ATTR_TO_PROP = {\n    'class': 'className',\n    'for': 'htmlFor',\n    'formaction': 'formAction',\n    'innerHtml': 'innerHTML',\n    'readonly': 'readOnly',\n    'tabindex': 'tabIndex',\n};\nvar DomElementSchemaRegistry = (function (_super) {\n    __extends(DomElementSchemaRegistry, _super);\n    function DomElementSchemaRegistry() {\n        var _this = _super.call(this) || this;\n        _this._schema = {};\n        SCHEMA.forEach(function (encodedType) {\n            var type = {};\n            var _a = encodedType.split('|'), strType = _a[0], strProperties = _a[1];\n            var properties = strProperties.split(',');\n            var _b = strType.split('^'), typeNames = _b[0], superName = _b[1];\n            typeNames.split(',').forEach(function (tag) { return _this._schema[tag.toLowerCase()] = type; });\n            var superType = superName && _this._schema[superName.toLowerCase()];\n            if (superType) {\n                Object.keys(superType).forEach(function (prop) { type[prop] = superType[prop]; });\n            }\n            properties.forEach(function (property) {\n                if (property.length > 0) {\n                    switch (property[0]) {\n                        case '*':\n                            // We don't yet support events.\n                            // If ever allowing to bind to events, GO THROUGH A SECURITY REVIEW, allowing events\n                            // will\n                            // almost certainly introduce bad XSS vulnerabilities.\n                            // type[property.substring(1)] = EVENT;\n                            break;\n                        case '!':\n                            type[property.substring(1)] = BOOLEAN;\n                            break;\n                        case '#':\n                            type[property.substring(1)] = NUMBER;\n                            break;\n                        case '%':\n                            type[property.substring(1)] = OBJECT;\n                            break;\n                        default:\n                            type[property] = STRING;\n                    }\n                }\n            });\n        });\n        return _this;\n    }\n    /**\n     * @param {?} tagName\n     * @param {?} propName\n     * @param {?} schemaMetas\n     * @return {?}\n     */\n    DomElementSchemaRegistry.prototype.hasProperty = function (tagName, propName, schemaMetas) {\n        if (schemaMetas.some(function (schema) { return schema.name === NO_ERRORS_SCHEMA.name; })) {\n            return true;\n        }\n        if (tagName.indexOf('-') > -1) {\n            if (tagName === 'ng-container' || tagName === 'ng-content') {\n                return false;\n            }\n            if (schemaMetas.some(function (schema) { return schema.name === CUSTOM_ELEMENTS_SCHEMA.name; })) {\n                // Can't tell now as we don't know which properties a custom element will get\n                // once it is instantiated\n                return true;\n            }\n        }\n        var /** @type {?} */ elementProperties = this._schema[tagName.toLowerCase()] || this._schema['unknown'];\n        return !!elementProperties[propName];\n    };\n    /**\n     * @param {?} tagName\n     * @param {?} schemaMetas\n     * @return {?}\n     */\n    DomElementSchemaRegistry.prototype.hasElement = function (tagName, schemaMetas) {\n        if (schemaMetas.some(function (schema) { return schema.name === NO_ERRORS_SCHEMA.name; })) {\n            return true;\n        }\n        if (tagName.indexOf('-') > -1) {\n            if (tagName === 'ng-container' || tagName === 'ng-content') {\n                return true;\n            }\n            if (schemaMetas.some(function (schema) { return schema.name === CUSTOM_ELEMENTS_SCHEMA.name; })) {\n                // Allow any custom elements\n                return true;\n            }\n        }\n        return !!this._schema[tagName.toLowerCase()];\n    };\n    /**\n     * securityContext returns the security context for the given property on the given DOM tag.\n     *\n     * Tag and property name are statically known and cannot change at runtime, i.e. it is not\n     * possible to bind a value into a changing attribute or tag name.\n     *\n     * The filtering is white list based. All attributes in the schema above are assumed to have the\n     * 'NONE' security context, i.e. that they are safe inert string values. Only specific well known\n     * attack vectors are assigned their appropriate context.\n     * @param {?} tagName\n     * @param {?} propName\n     * @param {?} isAttribute\n     * @return {?}\n     */\n    DomElementSchemaRegistry.prototype.securityContext = function (tagName, propName, isAttribute) {\n        if (isAttribute) {\n            // NB: For security purposes, use the mapped property name, not the attribute name.\n            propName = this.getMappedPropName(propName);\n        }\n        // Make sure comparisons are case insensitive, so that case differences between attribute and\n        // property names do not have a security impact.\n        tagName = tagName.toLowerCase();\n        propName = propName.toLowerCase();\n        var /** @type {?} */ ctx = SECURITY_SCHEMA[tagName + '|' + propName];\n        if (ctx) {\n            return ctx;\n        }\n        ctx = SECURITY_SCHEMA['*|' + propName];\n        return ctx ? ctx : SecurityContext.NONE;\n    };\n    /**\n     * @param {?} propName\n     * @return {?}\n     */\n    DomElementSchemaRegistry.prototype.getMappedPropName = function (propName) { return _ATTR_TO_PROP[propName] || propName; };\n    /**\n     * @return {?}\n     */\n    DomElementSchemaRegistry.prototype.getDefaultComponentElementName = function () { return 'ng-component'; };\n    /**\n     * @param {?} name\n     * @return {?}\n     */\n    DomElementSchemaRegistry.prototype.validateProperty = function (name) {\n        if (name.toLowerCase().startsWith('on')) {\n            var /** @type {?} */ msg = \"Binding to event property '\" + name + \"' is disallowed for security reasons, \" +\n                (\"please use (\" + name.slice(2) + \")=...\") +\n                (\"\\nIf '\" + name + \"' is a directive input, make sure the directive is imported by the\") +\n                \" current module.\";\n            return { error: true, msg: msg };\n        }\n        else {\n            return { error: false };\n        }\n    };\n    /**\n     * @param {?} name\n     * @return {?}\n     */\n    DomElementSchemaRegistry.prototype.validateAttribute = function (name) {\n        if (name.toLowerCase().startsWith('on')) {\n            var /** @type {?} */ msg = \"Binding to event attribute '\" + name + \"' is disallowed for security reasons, \" +\n                (\"please use (\" + name.slice(2) + \")=...\");\n            return { error: true, msg: msg };\n        }\n        else {\n            return { error: false };\n        }\n    };\n    /**\n     * @return {?}\n     */\n    DomElementSchemaRegistry.prototype.allKnownElementNames = function () { return Object.keys(this._schema); };\n    /**\n     * @param {?} propName\n     * @return {?}\n     */\n    DomElementSchemaRegistry.prototype.normalizeAnimationStyleProperty = function (propName) {\n        return dashCaseToCamelCase(propName);\n    };\n    /**\n     * @param {?} camelCaseProp\n     * @param {?} userProvidedProp\n     * @param {?} val\n     * @return {?}\n     */\n    DomElementSchemaRegistry.prototype.normalizeAnimationStyleValue = function (camelCaseProp, userProvidedProp, val) {\n        var /** @type {?} */ unit = '';\n        var /** @type {?} */ strVal = val.toString().trim();\n        var /** @type {?} */ errorMsg = null;\n        if (_isPixelDimensionStyle(camelCaseProp) && val !== 0 && val !== '0') {\n            if (typeof val === 'number') {\n                unit = 'px';\n            }\n            else {\n                var /** @type {?} */ valAndSuffixMatch = val.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n                if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n                    errorMsg = \"Please provide a CSS unit value for \" + userProvidedProp + \":\" + val;\n                }\n            }\n        }\n        return { error: errorMsg, value: strVal + unit };\n    };\n    return DomElementSchemaRegistry;\n}(ElementSchemaRegistry));\nDomElementSchemaRegistry.decorators = [\n    { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nDomElementSchemaRegistry.ctorParameters = function () { return []; };\n/**\n * @param {?} prop\n * @return {?}\n */\nfunction _isPixelDimensionStyle(prop) {\n    switch (prop) {\n        case 'width':\n        case 'height':\n        case 'minWidth':\n        case 'minHeight':\n        case 'maxWidth':\n        case 'maxHeight':\n        case 'left':\n        case 'top':\n        case 'bottom':\n        case 'right':\n        case 'fontSize':\n        case 'outlineWidth':\n        case 'outlineOffset':\n        case 'paddingTop':\n        case 'paddingLeft':\n        case 'paddingBottom':\n        case 'paddingRight':\n        case 'marginTop':\n        case 'marginLeft':\n        case 'marginBottom':\n        case 'marginRight':\n        case 'borderRadius':\n        case 'borderWidth':\n        case 'borderTopWidth':\n        case 'borderLeftWidth':\n        case 'borderRightWidth':\n        case 'borderBottomWidth':\n        case 'textIndent':\n            return true;\n        default:\n            return false;\n    }\n}\nvar ShadowCss = (function () {\n    function ShadowCss() {\n        this.strictStyling = true;\n    }\n    /**\n     * @param {?} cssText\n     * @param {?} selector\n     * @param {?=} hostSelector\n     * @return {?}\n     */\n    ShadowCss.prototype.shimCssText = function (cssText, selector, hostSelector) {\n        if (hostSelector === void 0) { hostSelector = ''; }\n        var /** @type {?} */ sourceMappingUrl = extractSourceMappingUrl(cssText);\n        cssText = stripComments(cssText);\n        cssText = this._insertDirectives(cssText);\n        return this._scopeCssText(cssText, selector, hostSelector) + sourceMappingUrl;\n    };\n    /**\n     * @param {?} cssText\n     * @return {?}\n     */\n    ShadowCss.prototype._insertDirectives = function (cssText) {\n        cssText = this._insertPolyfillDirectivesInCssText(cssText);\n        return this._insertPolyfillRulesInCssText(cssText);\n    };\n    /**\n     * @param {?} cssText\n     * @return {?}\n     */\n    ShadowCss.prototype._insertPolyfillDirectivesInCssText = function (cssText) {\n        // Difference with webcomponents.js: does not handle comments\n        return cssText.replace(_cssContentNextSelectorRe, function () {\n            var m = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                m[_i] = arguments[_i];\n            }\n            return m[2] + '{';\n        });\n    };\n    /**\n     * @param {?} cssText\n     * @return {?}\n     */\n    ShadowCss.prototype._insertPolyfillRulesInCssText = function (cssText) {\n        // Difference with webcomponents.js: does not handle comments\n        return cssText.replace(_cssContentRuleRe, function () {\n            var m = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                m[_i] = arguments[_i];\n            }\n            var /** @type {?} */ rule = m[0].replace(m[1], '').replace(m[2], '');\n            return m[4] + rule;\n        });\n    };\n    /**\n     * @param {?} cssText\n     * @param {?} scopeSelector\n     * @param {?} hostSelector\n     * @return {?}\n     */\n    ShadowCss.prototype._scopeCssText = function (cssText, scopeSelector, hostSelector) {\n        var /** @type {?} */ unscopedRules = this._extractUnscopedRulesFromCssText(cssText);\n        // replace :host and :host-context -shadowcsshost and -shadowcsshost respectively\n        cssText = this._insertPolyfillHostInCssText(cssText);\n        cssText = this._convertColonHost(cssText);\n        cssText = this._convertColonHostContext(cssText);\n        cssText = this._convertShadowDOMSelectors(cssText);\n        if (scopeSelector) {\n            cssText = this._scopeSelectors(cssText, scopeSelector, hostSelector);\n        }\n        cssText = cssText + '\\n' + unscopedRules;\n        return cssText.trim();\n    };\n    /**\n     * @param {?} cssText\n     * @return {?}\n     */\n    ShadowCss.prototype._extractUnscopedRulesFromCssText = function (cssText) {\n        // Difference with webcomponents.js: does not handle comments\n        var /** @type {?} */ r = '';\n        var /** @type {?} */ m;\n        _cssContentUnscopedRuleRe.lastIndex = 0;\n        while ((m = _cssContentUnscopedRuleRe.exec(cssText)) !== null) {\n            var /** @type {?} */ rule = m[0].replace(m[2], '').replace(m[1], m[4]);\n            r += rule + '\\n\\n';\n        }\n        return r;\n    };\n    /**\n     * @param {?} cssText\n     * @return {?}\n     */\n    ShadowCss.prototype._convertColonHost = function (cssText) {\n        return this._convertColonRule(cssText, _cssColonHostRe, this._colonHostPartReplacer);\n    };\n    /**\n     * @param {?} cssText\n     * @return {?}\n     */\n    ShadowCss.prototype._convertColonHostContext = function (cssText) {\n        return this._convertColonRule(cssText, _cssColonHostContextRe, this._colonHostContextPartReplacer);\n    };\n    /**\n     * @param {?} cssText\n     * @param {?} regExp\n     * @param {?} partReplacer\n     * @return {?}\n     */\n    ShadowCss.prototype._convertColonRule = function (cssText, regExp, partReplacer) {\n        // m[1] = :host(-context), m[2] = contents of (), m[3] rest of rule\n        return cssText.replace(regExp, function () {\n            var m = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                m[_i] = arguments[_i];\n            }\n            if (m[2]) {\n                var /** @type {?} */ parts = m[2].split(',');\n                var /** @type {?} */ r = [];\n                for (var /** @type {?} */ i = 0; i < parts.length; i++) {\n                    var /** @type {?} */ p = parts[i].trim();\n                    if (!p)\n                        break;\n                    r.push(partReplacer(_polyfillHostNoCombinator, p, m[3]));\n                }\n                return r.join(',');\n            }\n            else {\n                return _polyfillHostNoCombinator + m[3];\n            }\n        });\n    };\n    /**\n     * @param {?} host\n     * @param {?} part\n     * @param {?} suffix\n     * @return {?}\n     */\n    ShadowCss.prototype._colonHostContextPartReplacer = function (host, part, suffix) {\n        if (part.indexOf(_polyfillHost) > -1) {\n            return this._colonHostPartReplacer(host, part, suffix);\n        }\n        else {\n            return host + part + suffix + ', ' + part + ' ' + host + suffix;\n        }\n    };\n    /**\n     * @param {?} host\n     * @param {?} part\n     * @param {?} suffix\n     * @return {?}\n     */\n    ShadowCss.prototype._colonHostPartReplacer = function (host, part, suffix) {\n        return host + part.replace(_polyfillHost, '') + suffix;\n    };\n    /**\n     * @param {?} cssText\n     * @return {?}\n     */\n    ShadowCss.prototype._convertShadowDOMSelectors = function (cssText) {\n        return _shadowDOMSelectorsRe.reduce(function (result, pattern) { return result.replace(pattern, ' '); }, cssText);\n    };\n    /**\n     * @param {?} cssText\n     * @param {?} scopeSelector\n     * @param {?} hostSelector\n     * @return {?}\n     */\n    ShadowCss.prototype._scopeSelectors = function (cssText, scopeSelector, hostSelector) {\n        var _this = this;\n        return processRules(cssText, function (rule) {\n            var /** @type {?} */ selector = rule.selector;\n            var /** @type {?} */ content = rule.content;\n            if (rule.selector[0] != '@') {\n                selector =\n                    _this._scopeSelector(rule.selector, scopeSelector, hostSelector, _this.strictStyling);\n            }\n            else if (rule.selector.startsWith('@media') || rule.selector.startsWith('@supports') ||\n                rule.selector.startsWith('@page') || rule.selector.startsWith('@document')) {\n                content = _this._scopeSelectors(rule.content, scopeSelector, hostSelector);\n            }\n            return new CssRule(selector, content);\n        });\n    };\n    /**\n     * @param {?} selector\n     * @param {?} scopeSelector\n     * @param {?} hostSelector\n     * @param {?} strict\n     * @return {?}\n     */\n    ShadowCss.prototype._scopeSelector = function (selector, scopeSelector, hostSelector, strict) {\n        var _this = this;\n        return selector.split(',')\n            .map(function (part) { return part.trim().split(_shadowDeepSelectors); })\n            .map(function (deepParts) {\n            var shallowPart = deepParts[0], otherParts = deepParts.slice(1);\n            var /** @type {?} */ applyScope = function (shallowPart) {\n                if (_this._selectorNeedsScoping(shallowPart, scopeSelector)) {\n                    return strict ?\n                        _this._applyStrictSelectorScope(shallowPart, scopeSelector, hostSelector) :\n                        _this._applySelectorScope(shallowPart, scopeSelector, hostSelector);\n                }\n                else {\n                    return shallowPart;\n                }\n            };\n            return [applyScope(shallowPart)].concat(otherParts).join(' ');\n        })\n            .join(', ');\n    };\n    /**\n     * @param {?} selector\n     * @param {?} scopeSelector\n     * @return {?}\n     */\n    ShadowCss.prototype._selectorNeedsScoping = function (selector, scopeSelector) {\n        var /** @type {?} */ re = this._makeScopeMatcher(scopeSelector);\n        return !re.test(selector);\n    };\n    /**\n     * @param {?} scopeSelector\n     * @return {?}\n     */\n    ShadowCss.prototype._makeScopeMatcher = function (scopeSelector) {\n        var /** @type {?} */ lre = /\\[/g;\n        var /** @type {?} */ rre = /\\]/g;\n        scopeSelector = scopeSelector.replace(lre, '\\\\[').replace(rre, '\\\\]');\n        return new RegExp('^(' + scopeSelector + ')' + _selectorReSuffix, 'm');\n    };\n    /**\n     * @param {?} selector\n     * @param {?} scopeSelector\n     * @param {?} hostSelector\n     * @return {?}\n     */\n    ShadowCss.prototype._applySelectorScope = function (selector, scopeSelector, hostSelector) {\n        // Difference from webcomponents.js: scopeSelector could not be an array\n        return this._applySimpleSelectorScope(selector, scopeSelector, hostSelector);\n    };\n    /**\n     * @param {?} selector\n     * @param {?} scopeSelector\n     * @param {?} hostSelector\n     * @return {?}\n     */\n    ShadowCss.prototype._applySimpleSelectorScope = function (selector, scopeSelector, hostSelector) {\n        // In Android browser, the lastIndex is not reset when the regex is used in String.replace()\n        _polyfillHostRe.lastIndex = 0;\n        if (_polyfillHostRe.test(selector)) {\n            var /** @type {?} */ replaceBy_1 = this.strictStyling ? \"[\" + hostSelector + \"]\" : scopeSelector;\n            return selector\n                .replace(_polyfillHostNoCombinatorRe, function (hnc, selector) {\n                return selector.replace(/([^:]*)(:*)(.*)/, function (_, before, colon, after) {\n                    return before + replaceBy_1 + colon + after;\n                });\n            })\n                .replace(_polyfillHostRe, replaceBy_1 + ' ');\n        }\n        return scopeSelector + ' ' + selector;\n    };\n    /**\n     * @param {?} selector\n     * @param {?} scopeSelector\n     * @param {?} hostSelector\n     * @return {?}\n     */\n    ShadowCss.prototype._applyStrictSelectorScope = function (selector, scopeSelector, hostSelector) {\n        var _this = this;\n        var /** @type {?} */ isRe = /\\[is=([^\\]]*)\\]/g;\n        scopeSelector = scopeSelector.replace(isRe, function (_) {\n            var parts = [];\n            for (var _i = 1; _i < arguments.length; _i++) {\n                parts[_i - 1] = arguments[_i];\n            }\n            return parts[0];\n        });\n        var /** @type {?} */ attrName = '[' + scopeSelector + ']';\n        var /** @type {?} */ _scopeSelectorPart = function (p) {\n            var /** @type {?} */ scopedP = p.trim();\n            if (!scopedP) {\n                return '';\n            }\n            if (p.indexOf(_polyfillHostNoCombinator) > -1) {\n                scopedP = _this._applySimpleSelectorScope(p, scopeSelector, hostSelector);\n            }\n            else {\n                // remove :host since it should be unnecessary\n                var /** @type {?} */ t = p.replace(_polyfillHostRe, '');\n                if (t.length > 0) {\n                    var /** @type {?} */ matches = t.match(/([^:]*)(:*)(.*)/);\n                    if (matches) {\n                        scopedP = matches[1] + attrName + matches[2] + matches[3];\n                    }\n                }\n            }\n            return scopedP;\n        };\n        var /** @type {?} */ safeContent = new SafeSelector(selector);\n        selector = safeContent.content();\n        var /** @type {?} */ scopedSelector = '';\n        var /** @type {?} */ startIndex = 0;\n        var /** @type {?} */ res;\n        var /** @type {?} */ sep = /( |>|\\+|~(?!=))\\s*/g;\n        var /** @type {?} */ scopeAfter = selector.indexOf(_polyfillHostNoCombinator);\n        while ((res = sep.exec(selector)) !== null) {\n            var /** @type {?} */ separator = res[1];\n            var /** @type {?} */ part = selector.slice(startIndex, res.index).trim();\n            // if a selector appears before :host-context it should not be shimmed as it\n            // matches on ancestor elements and not on elements in the host's shadow\n            var /** @type {?} */ scopedPart = startIndex >= scopeAfter ? _scopeSelectorPart(part) : part;\n            scopedSelector += scopedPart + \" \" + separator + \" \";\n            startIndex = sep.lastIndex;\n        }\n        scopedSelector += _scopeSelectorPart(selector.substring(startIndex));\n        // replace the placeholders with their original values\n        return safeContent.restore(scopedSelector);\n    };\n    /**\n     * @param {?} selector\n     * @return {?}\n     */\n    ShadowCss.prototype._insertPolyfillHostInCssText = function (selector) {\n        return selector.replace(_colonHostContextRe, _polyfillHostContext)\n            .replace(_colonHostRe, _polyfillHost);\n    };\n    return ShadowCss;\n}());\nvar SafeSelector = (function () {\n    /**\n     * @param {?} selector\n     */\n    function SafeSelector(selector) {\n        var _this = this;\n        this.placeholders = [];\n        this.index = 0;\n        // Replaces attribute selectors with placeholders.\n        // The WS in [attr=\"va lue\"] would otherwise be interpreted as a selector separator.\n        selector = selector.replace(/(\\[[^\\]]*\\])/g, function (_, keep) {\n            var replaceBy = \"__ph-\" + _this.index + \"__\";\n            _this.placeholders.push(keep);\n            _this.index++;\n            return replaceBy;\n        });\n        // Replaces the expression in `:nth-child(2n + 1)` with a placeholder.\n        // WS and \"+\" would otherwise be interpreted as selector separators.\n        this._content = selector.replace(/(:nth-[-\\w]+)(\\([^)]+\\))/g, function (_, pseudo, exp) {\n            var replaceBy = \"__ph-\" + _this.index + \"__\";\n            _this.placeholders.push(exp);\n            _this.index++;\n            return pseudo + replaceBy;\n        });\n    }\n    ;\n    /**\n     * @param {?} content\n     * @return {?}\n     */\n    SafeSelector.prototype.restore = function (content) {\n        var _this = this;\n        return content.replace(/__ph-(\\d+)__/g, function (ph, index) { return _this.placeholders[+index]; });\n    };\n    /**\n     * @return {?}\n     */\n    SafeSelector.prototype.content = function () { return this._content; };\n    return SafeSelector;\n}());\nvar _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\\s]*?(['\"])(.*?)\\1[;\\s]*}([^{]*?){/gim;\nvar _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\\s]*(['\"])(.*?)\\3)[;\\s]*[^}]*}/gim;\nvar _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\\s]*(['\"])(.*?)\\3)[;\\s]*[^}]*}/gim;\nvar _polyfillHost = '-shadowcsshost';\n// note: :host-context pre-processed to -shadowcsshostcontext.\nvar _polyfillHostContext = '-shadowcsscontext';\nvar _parenSuffix = ')(?:\\\\((' +\n    '(?:\\\\([^)(]*\\\\)|[^)(]*)+?' +\n    ')\\\\))?([^,{]*)';\nvar _cssColonHostRe = new RegExp('(' + _polyfillHost + _parenSuffix, 'gim');\nvar _cssColonHostContextRe = new RegExp('(' + _polyfillHostContext + _parenSuffix, 'gim');\nvar _polyfillHostNoCombinator = _polyfillHost + '-no-combinator';\nvar _polyfillHostNoCombinatorRe = /-shadowcsshost-no-combinator([^\\s]*)/;\nvar _shadowDOMSelectorsRe = [\n    /::shadow/g,\n    /::content/g,\n    // Deprecated selectors\n    /\\/shadow-deep\\//g,\n    /\\/shadow\\//g,\n];\nvar _shadowDeepSelectors = /(?:>>>)|(?:\\/deep\\/)/g;\nvar _selectorReSuffix = '([>\\\\s~+\\[.,{:][\\\\s\\\\S]*)?$';\nvar _polyfillHostRe = /-shadowcsshost/gim;\nvar _colonHostRe = /:host/gim;\nvar _colonHostContextRe = /:host-context/gim;\nvar _commentRe = /\\/\\*\\s*[\\s\\S]*?\\*\\//g;\n/**\n * @param {?} input\n * @return {?}\n */\nfunction stripComments(input) {\n    return input.replace(_commentRe, '');\n}\n// all comments except inline source mapping\nvar _sourceMappingUrlRe = /\\/\\*\\s*#\\s*sourceMappingURL=[\\s\\S]+?\\*\\//;\n/**\n * @param {?} input\n * @return {?}\n */\nfunction extractSourceMappingUrl(input) {\n    var /** @type {?} */ matcher = input.match(_sourceMappingUrlRe);\n    return matcher ? matcher[0] : '';\n}\nvar _ruleRe = /(\\s*)([^;\\{\\}]+?)(\\s*)((?:{%BLOCK%}?\\s*;?)|(?:\\s*;))/g;\nvar _curlyRe = /([{}])/g;\nvar OPEN_CURLY = '{';\nvar CLOSE_CURLY = '}';\nvar BLOCK_PLACEHOLDER = '%BLOCK%';\nvar CssRule = (function () {\n    /**\n     * @param {?} selector\n     * @param {?} content\n     */\n    function CssRule(selector, content) {\n        this.selector = selector;\n        this.content = content;\n    }\n    return CssRule;\n}());\n/**\n * @param {?} input\n * @param {?} ruleCallback\n * @return {?}\n */\nfunction processRules(input, ruleCallback) {\n    var /** @type {?} */ inputWithEscapedBlocks = escapeBlocks(input);\n    var /** @type {?} */ nextBlockIndex = 0;\n    return inputWithEscapedBlocks.escapedString.replace(_ruleRe, function () {\n        var m = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            m[_i] = arguments[_i];\n        }\n        var /** @type {?} */ selector = m[2];\n        var /** @type {?} */ content = '';\n        var /** @type {?} */ suffix = m[4];\n        var /** @type {?} */ contentPrefix = '';\n        if (suffix && suffix.startsWith('{' + BLOCK_PLACEHOLDER)) {\n            content = inputWithEscapedBlocks.blocks[nextBlockIndex++];\n            suffix = suffix.substring(BLOCK_PLACEHOLDER.length + 1);\n            contentPrefix = '{';\n        }\n        var /** @type {?} */ rule = ruleCallback(new CssRule(selector, content));\n        return \"\" + m[1] + rule.selector + m[3] + contentPrefix + rule.content + suffix;\n    });\n}\nvar StringWithEscapedBlocks = (function () {\n    /**\n     * @param {?} escapedString\n     * @param {?} blocks\n     */\n    function StringWithEscapedBlocks(escapedString, blocks) {\n        this.escapedString = escapedString;\n        this.blocks = blocks;\n    }\n    return StringWithEscapedBlocks;\n}());\n/**\n * @param {?} input\n * @return {?}\n */\nfunction escapeBlocks(input) {\n    var /** @type {?} */ inputParts = input.split(_curlyRe);\n    var /** @type {?} */ resultParts = [];\n    var /** @type {?} */ escapedBlocks = [];\n    var /** @type {?} */ bracketCount = 0;\n    var /** @type {?} */ currentBlockParts = [];\n    for (var /** @type {?} */ partIndex = 0; partIndex < inputParts.length; partIndex++) {\n        var /** @type {?} */ part = inputParts[partIndex];\n        if (part == CLOSE_CURLY) {\n            bracketCount--;\n        }\n        if (bracketCount > 0) {\n            currentBlockParts.push(part);\n        }\n        else {\n            if (currentBlockParts.length > 0) {\n                escapedBlocks.push(currentBlockParts.join(''));\n                resultParts.push(BLOCK_PLACEHOLDER);\n                currentBlockParts = [];\n            }\n            resultParts.push(part);\n        }\n        if (part == OPEN_CURLY) {\n            bracketCount++;\n        }\n    }\n    if (currentBlockParts.length > 0) {\n        escapedBlocks.push(currentBlockParts.join(''));\n        resultParts.push(BLOCK_PLACEHOLDER);\n    }\n    return new StringWithEscapedBlocks(resultParts.join(''), escapedBlocks);\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar COMPONENT_VARIABLE = '%COMP%';\nvar HOST_ATTR = \"_nghost-\" + COMPONENT_VARIABLE;\nvar CONTENT_ATTR = \"_ngcontent-\" + COMPONENT_VARIABLE;\nvar StylesCompileDependency = (function () {\n    /**\n     * @param {?} name\n     * @param {?} moduleUrl\n     * @param {?} isShimmed\n     * @param {?} valuePlaceholder\n     */\n    function StylesCompileDependency(name, moduleUrl, isShimmed, valuePlaceholder) {\n        this.name = name;\n        this.moduleUrl = moduleUrl;\n        this.isShimmed = isShimmed;\n        this.valuePlaceholder = valuePlaceholder;\n    }\n    return StylesCompileDependency;\n}());\nvar StylesCompileResult = (function () {\n    /**\n     * @param {?} componentStylesheet\n     * @param {?} externalStylesheets\n     */\n    function StylesCompileResult(componentStylesheet, externalStylesheets) {\n        this.componentStylesheet = componentStylesheet;\n        this.externalStylesheets = externalStylesheets;\n    }\n    return StylesCompileResult;\n}());\nvar CompiledStylesheet = (function () {\n    /**\n     * @param {?} statements\n     * @param {?} stylesVar\n     * @param {?} dependencies\n     * @param {?} isShimmed\n     * @param {?} meta\n     */\n    function CompiledStylesheet(statements, stylesVar, dependencies, isShimmed, meta) {\n        this.statements = statements;\n        this.stylesVar = stylesVar;\n        this.dependencies = dependencies;\n        this.isShimmed = isShimmed;\n        this.meta = meta;\n    }\n    return CompiledStylesheet;\n}());\nvar StyleCompiler = (function () {\n    /**\n     * @param {?} _urlResolver\n     */\n    function StyleCompiler(_urlResolver) {\n        this._urlResolver = _urlResolver;\n        this._shadowCss = new ShadowCss();\n    }\n    /**\n     * @param {?} comp\n     * @return {?}\n     */\n    StyleCompiler.prototype.compileComponent = function (comp) {\n        var _this = this;\n        var /** @type {?} */ externalStylesheets = [];\n        var /** @type {?} */ componentStylesheet = this._compileStyles(comp, new CompileStylesheetMetadata({\n            styles: comp.template.styles,\n            styleUrls: comp.template.styleUrls,\n            moduleUrl: identifierModuleUrl(comp.type)\n        }), true);\n        comp.template.externalStylesheets.forEach(function (stylesheetMeta) {\n            var /** @type {?} */ compiledStylesheet = _this._compileStyles(comp, stylesheetMeta, false);\n            externalStylesheets.push(compiledStylesheet);\n        });\n        return new StylesCompileResult(componentStylesheet, externalStylesheets);\n    };\n    /**\n     * @param {?} comp\n     * @param {?} stylesheet\n     * @param {?} isComponentStylesheet\n     * @return {?}\n     */\n    StyleCompiler.prototype._compileStyles = function (comp, stylesheet, isComponentStylesheet) {\n        var _this = this;\n        var /** @type {?} */ shim = comp.template.encapsulation === ViewEncapsulation.Emulated;\n        var /** @type {?} */ styleExpressions = stylesheet.styles.map(function (plainStyle) { return literal(_this._shimIfNeeded(plainStyle, shim)); });\n        var /** @type {?} */ dependencies = [];\n        for (var /** @type {?} */ i = 0; i < stylesheet.styleUrls.length; i++) {\n            var /** @type {?} */ identifier = { reference: null };\n            dependencies.push(new StylesCompileDependency(getStylesVarName(null), stylesheet.styleUrls[i], shim, identifier));\n            styleExpressions.push(new ExternalExpr(identifier));\n        }\n        // styles variable contains plain strings and arrays of other styles arrays (recursive),\n        // so we set its type to dynamic.\n        var /** @type {?} */ stylesVar = getStylesVarName(isComponentStylesheet ? comp : null);\n        var /** @type {?} */ stmt = variable(stylesVar)\n            .set(literalArr(styleExpressions, new ArrayType(DYNAMIC_TYPE, [TypeModifier.Const])))\n            .toDeclStmt(null, [StmtModifier.Final]);\n        return new CompiledStylesheet([stmt], stylesVar, dependencies, shim, stylesheet);\n    };\n    /**\n     * @param {?} style\n     * @param {?} shim\n     * @return {?}\n     */\n    StyleCompiler.prototype._shimIfNeeded = function (style$$1, shim) {\n        return shim ? this._shadowCss.shimCssText(style$$1, CONTENT_ATTR, HOST_ATTR) : style$$1;\n    };\n    return StyleCompiler;\n}());\nStyleCompiler.decorators = [\n    { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nStyleCompiler.ctorParameters = function () { return [\n    { type: UrlResolver, },\n]; };\n/**\n * @param {?} component\n * @return {?}\n */\nfunction getStylesVarName(component) {\n    var /** @type {?} */ result = \"styles\";\n    if (component) {\n        result += \"_\" + identifierName(component.type);\n    }\n    return result;\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar EventHandlerVars = (function () {\n    function EventHandlerVars() {\n    }\n    return EventHandlerVars;\n}());\nEventHandlerVars.event = variable('$event');\nvar ConvertActionBindingResult = (function () {\n    /**\n     * @param {?} stmts\n     * @param {?} allowDefault\n     */\n    function ConvertActionBindingResult(stmts, allowDefault) {\n        this.stmts = stmts;\n        this.allowDefault = allowDefault;\n    }\n    return ConvertActionBindingResult;\n}());\n/**\n * Converts the given expression AST into an executable output AST, assuming the expression is\n * used in an action binding (e.g. an event handler).\n * @param {?} localResolver\n * @param {?} implicitReceiver\n * @param {?} action\n * @param {?} bindingId\n * @return {?}\n */\nfunction convertActionBinding(localResolver, implicitReceiver, action, bindingId) {\n    if (!localResolver) {\n        localResolver = new DefaultLocalResolver();\n    }\n    var /** @type {?} */ actionWithoutBuiltins = convertPropertyBindingBuiltins({\n        createLiteralArrayConverter: function (argCount) {\n            // Note: no caching for literal arrays in actions.\n            return function (args) { return literalArr(args); };\n        },\n        createLiteralMapConverter: function (keys) {\n            // Note: no caching for literal maps in actions.\n            return function (args) { return literalMap(/** @type {?} */ (keys.map(function (key, i) { return [key, args[i]]; }))); };\n        },\n        createPipeConverter: function (name) {\n            throw new Error(\"Illegal State: Actions are not allowed to contain pipes. Pipe: \" + name);\n        }\n    }, action);\n    var /** @type {?} */ visitor = new _AstToIrVisitor(localResolver, implicitReceiver, bindingId);\n    var /** @type {?} */ actionStmts = [];\n    flattenStatements(actionWithoutBuiltins.visit(visitor, _Mode.Statement), actionStmts);\n    prependTemporaryDecls(visitor.temporaryCount, bindingId, actionStmts);\n    var /** @type {?} */ lastIndex = actionStmts.length - 1;\n    var /** @type {?} */ preventDefaultVar = null;\n    if (lastIndex >= 0) {\n        var /** @type {?} */ lastStatement = actionStmts[lastIndex];\n        var /** @type {?} */ returnExpr = convertStmtIntoExpression(lastStatement);\n        if (returnExpr) {\n            // Note: We need to cast the result of the method call to dynamic,\n            // as it might be a void method!\n            preventDefaultVar = createPreventDefaultVar(bindingId);\n            actionStmts[lastIndex] =\n                preventDefaultVar.set(returnExpr.cast(DYNAMIC_TYPE).notIdentical(literal(false)))\n                    .toDeclStmt(null, [StmtModifier.Final]);\n        }\n    }\n    return new ConvertActionBindingResult(actionStmts, preventDefaultVar);\n}\n/**\n * @param {?} converterFactory\n * @param {?} ast\n * @return {?}\n */\nfunction convertPropertyBindingBuiltins(converterFactory, ast) {\n    return convertBuiltins(converterFactory, ast);\n}\nvar ConvertPropertyBindingResult = (function () {\n    /**\n     * @param {?} stmts\n     * @param {?} currValExpr\n     */\n    function ConvertPropertyBindingResult(stmts, currValExpr) {\n        this.stmts = stmts;\n        this.currValExpr = currValExpr;\n    }\n    return ConvertPropertyBindingResult;\n}());\n/**\n * Converts the given expression AST into an executable output AST, assuming the expression\n * is used in property binding. The expression has to be preprocessed via\n * `convertPropertyBindingBuiltins`.\n * @param {?} localResolver\n * @param {?} implicitReceiver\n * @param {?} expressionWithoutBuiltins\n * @param {?} bindingId\n * @return {?}\n */\nfunction convertPropertyBinding(localResolver, implicitReceiver, expressionWithoutBuiltins, bindingId) {\n    if (!localResolver) {\n        localResolver = new DefaultLocalResolver();\n    }\n    var /** @type {?} */ currValExpr = createCurrValueExpr(bindingId);\n    var /** @type {?} */ stmts = [];\n    var /** @type {?} */ visitor = new _AstToIrVisitor(localResolver, implicitReceiver, bindingId);\n    var /** @type {?} */ outputExpr = expressionWithoutBuiltins.visit(visitor, _Mode.Expression);\n    if (visitor.temporaryCount) {\n        for (var /** @type {?} */ i = 0; i < visitor.temporaryCount; i++) {\n            stmts.push(temporaryDeclaration(bindingId, i));\n        }\n    }\n    stmts.push(currValExpr.set(outputExpr).toDeclStmt(null, [StmtModifier.Final]));\n    return new ConvertPropertyBindingResult(stmts, currValExpr);\n}\n/**\n * @param {?} converterFactory\n * @param {?} ast\n * @return {?}\n */\nfunction convertBuiltins(converterFactory, ast) {\n    var /** @type {?} */ visitor = new _BuiltinAstConverter(converterFactory);\n    return ast.visit(visitor);\n}\n/**\n * @param {?} bindingId\n * @param {?} temporaryNumber\n * @return {?}\n */\nfunction temporaryName(bindingId, temporaryNumber) {\n    return \"tmp_\" + bindingId + \"_\" + temporaryNumber;\n}\n/**\n * @param {?} bindingId\n * @param {?} temporaryNumber\n * @return {?}\n */\nfunction temporaryDeclaration(bindingId, temporaryNumber) {\n    return new DeclareVarStmt(temporaryName(bindingId, temporaryNumber), NULL_EXPR);\n}\n/**\n * @param {?} temporaryCount\n * @param {?} bindingId\n * @param {?} statements\n * @return {?}\n */\nfunction prependTemporaryDecls(temporaryCount, bindingId, statements) {\n    for (var /** @type {?} */ i = temporaryCount - 1; i >= 0; i--) {\n        statements.unshift(temporaryDeclaration(bindingId, i));\n    }\n}\nvar _Mode = {};\n_Mode.Statement = 0;\n_Mode.Expression = 1;\n_Mode[_Mode.Statement] = \"Statement\";\n_Mode[_Mode.Expression] = \"Expression\";\n/**\n * @param {?} mode\n * @param {?} ast\n * @return {?}\n */\nfunction ensureStatementMode(mode, ast) {\n    if (mode !== _Mode.Statement) {\n        throw new Error(\"Expected a statement, but saw \" + ast);\n    }\n}\n/**\n * @param {?} mode\n * @param {?} ast\n * @return {?}\n */\nfunction ensureExpressionMode(mode, ast) {\n    if (mode !== _Mode.Expression) {\n        throw new Error(\"Expected an expression, but saw \" + ast);\n    }\n}\n/**\n * @param {?} mode\n * @param {?} expr\n * @return {?}\n */\nfunction convertToStatementIfNeeded(mode, expr) {\n    if (mode === _Mode.Statement) {\n        return expr.toStmt();\n    }\n    else {\n        return expr;\n    }\n}\nvar _BuiltinAstConverter = (function (_super) {\n    __extends(_BuiltinAstConverter, _super);\n    /**\n     * @param {?} _converterFactory\n     */\n    function _BuiltinAstConverter(_converterFactory) {\n        var _this = _super.call(this) || this;\n        _this._converterFactory = _converterFactory;\n        return _this;\n    }\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    _BuiltinAstConverter.prototype.visitPipe = function (ast, context) {\n        var _this = this;\n        var /** @type {?} */ args = [ast.exp].concat(ast.args).map(function (ast) { return ast.visit(_this, context); });\n        return new BuiltinFunctionCall(ast.span, args, this._converterFactory.createPipeConverter(ast.name, args.length));\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    _BuiltinAstConverter.prototype.visitLiteralArray = function (ast, context) {\n        var _this = this;\n        var /** @type {?} */ args = ast.expressions.map(function (ast) { return ast.visit(_this, context); });\n        return new BuiltinFunctionCall(ast.span, args, this._converterFactory.createLiteralArrayConverter(ast.expressions.length));\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    _BuiltinAstConverter.prototype.visitLiteralMap = function (ast, context) {\n        var _this = this;\n        var /** @type {?} */ args = ast.values.map(function (ast) { return ast.visit(_this, context); });\n        return new BuiltinFunctionCall(ast.span, args, this._converterFactory.createLiteralMapConverter(ast.keys));\n    };\n    return _BuiltinAstConverter;\n}(AstTransformer));\nvar _AstToIrVisitor = (function () {\n    /**\n     * @param {?} _localResolver\n     * @param {?} _implicitReceiver\n     * @param {?} bindingId\n     */\n    function _AstToIrVisitor(_localResolver, _implicitReceiver, bindingId) {\n        this._localResolver = _localResolver;\n        this._implicitReceiver = _implicitReceiver;\n        this.bindingId = bindingId;\n        this._nodeMap = new Map();\n        this._resultMap = new Map();\n        this._currentTemporary = 0;\n        this.temporaryCount = 0;\n    }\n    /**\n     * @param {?} ast\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visitBinary = function (ast, mode) {\n        var /** @type {?} */ op;\n        switch (ast.operation) {\n            case '+':\n                op = BinaryOperator.Plus;\n                break;\n            case '-':\n                op = BinaryOperator.Minus;\n                break;\n            case '*':\n                op = BinaryOperator.Multiply;\n                break;\n            case '/':\n                op = BinaryOperator.Divide;\n                break;\n            case '%':\n                op = BinaryOperator.Modulo;\n                break;\n            case '&&':\n                op = BinaryOperator.And;\n                break;\n            case '||':\n                op = BinaryOperator.Or;\n                break;\n            case '==':\n                op = BinaryOperator.Equals;\n                break;\n            case '!=':\n                op = BinaryOperator.NotEquals;\n                break;\n            case '===':\n                op = BinaryOperator.Identical;\n                break;\n            case '!==':\n                op = BinaryOperator.NotIdentical;\n                break;\n            case '<':\n                op = BinaryOperator.Lower;\n                break;\n            case '>':\n                op = BinaryOperator.Bigger;\n                break;\n            case '<=':\n                op = BinaryOperator.LowerEquals;\n                break;\n            case '>=':\n                op = BinaryOperator.BiggerEquals;\n                break;\n            default:\n                throw new Error(\"Unsupported operation \" + ast.operation);\n        }\n        return convertToStatementIfNeeded(mode, new BinaryOperatorExpr(op, this.visit(ast.left, _Mode.Expression), this.visit(ast.right, _Mode.Expression)));\n    };\n    /**\n     * @param {?} ast\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visitChain = function (ast, mode) {\n        ensureStatementMode(mode, ast);\n        return this.visitAll(ast.expressions, mode);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visitConditional = function (ast, mode) {\n        var /** @type {?} */ value = this.visit(ast.condition, _Mode.Expression);\n        return convertToStatementIfNeeded(mode, value.conditional(this.visit(ast.trueExp, _Mode.Expression), this.visit(ast.falseExp, _Mode.Expression)));\n    };\n    /**\n     * @param {?} ast\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visitPipe = function (ast, mode) {\n        throw new Error(\"Illegal state: Pipes should have been converted into functions. Pipe: \" + ast.name);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visitFunctionCall = function (ast, mode) {\n        var /** @type {?} */ convertedArgs = this.visitAll(ast.args, _Mode.Expression);\n        var /** @type {?} */ fnResult;\n        if (ast instanceof BuiltinFunctionCall) {\n            fnResult = ast.converter(convertedArgs);\n        }\n        else {\n            fnResult = this.visit(ast.target, _Mode.Expression).callFn(convertedArgs);\n        }\n        return convertToStatementIfNeeded(mode, fnResult);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visitImplicitReceiver = function (ast, mode) {\n        ensureExpressionMode(mode, ast);\n        return this._implicitReceiver;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visitInterpolation = function (ast, mode) {\n        ensureExpressionMode(mode, ast);\n        var /** @type {?} */ args = [literal(ast.expressions.length)];\n        for (var /** @type {?} */ i = 0; i < ast.strings.length - 1; i++) {\n            args.push(literal(ast.strings[i]));\n            args.push(this.visit(ast.expressions[i], _Mode.Expression));\n        }\n        args.push(literal(ast.strings[ast.strings.length - 1]));\n        return ast.expressions.length <= 9 ?\n            importExpr(createIdentifier(Identifiers.inlineInterpolate)).callFn(args) :\n            importExpr(createIdentifier(Identifiers.interpolate)).callFn([\n                args[0], literalArr(args.slice(1))\n            ]);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visitKeyedRead = function (ast, mode) {\n        var /** @type {?} */ leftMostSafe = this.leftMostSafeNode(ast);\n        if (leftMostSafe) {\n            return this.convertSafeAccess(ast, leftMostSafe, mode);\n        }\n        else {\n            return convertToStatementIfNeeded(mode, this.visit(ast.obj, _Mode.Expression).key(this.visit(ast.key, _Mode.Expression)));\n        }\n    };\n    /**\n     * @param {?} ast\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visitKeyedWrite = function (ast, mode) {\n        var /** @type {?} */ obj = this.visit(ast.obj, _Mode.Expression);\n        var /** @type {?} */ key = this.visit(ast.key, _Mode.Expression);\n        var /** @type {?} */ value = this.visit(ast.value, _Mode.Expression);\n        return convertToStatementIfNeeded(mode, obj.key(key).set(value));\n    };\n    /**\n     * @param {?} ast\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visitLiteralArray = function (ast, mode) {\n        throw new Error(\"Illegal State: literal arrays should have been converted into functions\");\n    };\n    /**\n     * @param {?} ast\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visitLiteralMap = function (ast, mode) {\n        throw new Error(\"Illegal State: literal maps should have been converted into functions\");\n    };\n    /**\n     * @param {?} ast\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visitLiteralPrimitive = function (ast, mode) {\n        return convertToStatementIfNeeded(mode, literal(ast.value));\n    };\n    /**\n     * @param {?} name\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype._getLocal = function (name) { return this._localResolver.getLocal(name); };\n    /**\n     * @param {?} ast\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visitMethodCall = function (ast, mode) {\n        var /** @type {?} */ leftMostSafe = this.leftMostSafeNode(ast);\n        if (leftMostSafe) {\n            return this.convertSafeAccess(ast, leftMostSafe, mode);\n        }\n        else {\n            var /** @type {?} */ args = this.visitAll(ast.args, _Mode.Expression);\n            var /** @type {?} */ result = null;\n            var /** @type {?} */ receiver = this.visit(ast.receiver, _Mode.Expression);\n            if (receiver === this._implicitReceiver) {\n                var /** @type {?} */ varExpr = this._getLocal(ast.name);\n                if (varExpr) {\n                    result = varExpr.callFn(args);\n                }\n            }\n            if (result == null) {\n                result = receiver.callMethod(ast.name, args);\n            }\n            return convertToStatementIfNeeded(mode, result);\n        }\n    };\n    /**\n     * @param {?} ast\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visitPrefixNot = function (ast, mode) {\n        return convertToStatementIfNeeded(mode, not(this.visit(ast.expression, _Mode.Expression)));\n    };\n    /**\n     * @param {?} ast\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visitPropertyRead = function (ast, mode) {\n        var /** @type {?} */ leftMostSafe = this.leftMostSafeNode(ast);\n        if (leftMostSafe) {\n            return this.convertSafeAccess(ast, leftMostSafe, mode);\n        }\n        else {\n            var /** @type {?} */ result = null;\n            var /** @type {?} */ receiver = this.visit(ast.receiver, _Mode.Expression);\n            if (receiver === this._implicitReceiver) {\n                result = this._getLocal(ast.name);\n            }\n            if (result == null) {\n                result = receiver.prop(ast.name);\n            }\n            return convertToStatementIfNeeded(mode, result);\n        }\n    };\n    /**\n     * @param {?} ast\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visitPropertyWrite = function (ast, mode) {\n        var /** @type {?} */ receiver = this.visit(ast.receiver, _Mode.Expression);\n        if (receiver === this._implicitReceiver) {\n            var /** @type {?} */ varExpr = this._getLocal(ast.name);\n            if (varExpr) {\n                throw new Error('Cannot assign to a reference or variable!');\n            }\n        }\n        return convertToStatementIfNeeded(mode, receiver.prop(ast.name).set(this.visit(ast.value, _Mode.Expression)));\n    };\n    /**\n     * @param {?} ast\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visitSafePropertyRead = function (ast, mode) {\n        return this.convertSafeAccess(ast, this.leftMostSafeNode(ast), mode);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visitSafeMethodCall = function (ast, mode) {\n        return this.convertSafeAccess(ast, this.leftMostSafeNode(ast), mode);\n    };\n    /**\n     * @param {?} asts\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visitAll = function (asts, mode) {\n        var _this = this;\n        return asts.map(function (ast) { return _this.visit(ast, mode); });\n    };\n    /**\n     * @param {?} ast\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visitQuote = function (ast, mode) {\n        throw new Error(\"Quotes are not supported for evaluation!\\n        Statement: \" + ast.uninterpretedExpression + \" located at \" + ast.location);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.visit = function (ast, mode) {\n        var /** @type {?} */ result = this._resultMap.get(ast);\n        if (result)\n            return result;\n        return (this._nodeMap.get(ast) || ast).visit(this, mode);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} leftMostSafe\n     * @param {?} mode\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.convertSafeAccess = function (ast, leftMostSafe, mode) {\n        // If the expression contains a safe access node on the left it needs to be converted to\n        // an expression that guards the access to the member by checking the receiver for blank. As\n        // execution proceeds from left to right, the left most part of the expression must be guarded\n        // first but, because member access is left associative, the right side of the expression is at\n        // the top of the AST. The desired result requires lifting a copy of the the left part of the\n        // expression up to test it for blank before generating the unguarded version.\n        // Consider, for example the following expression: a?.b.c?.d.e\n        // This results in the ast:\n        //         .\n        //        / \\\n        //       ?.   e\n        //      /  \\\n        //     .    d\n        //    / \\\n        //   ?.  c\n        //  /  \\\n        // a    b\n        // The following tree should be generated:\n        //\n        //        /---- ? ----\\\n        //       /      |      \\\n        //     a   /--- ? ---\\  null\n        //        /     |     \\\n        //       .      .     null\n        //      / \\    / \\\n        //     .  c   .   e\n        //    / \\    / \\\n        //   a   b  ,   d\n        //         / \\\n        //        .   c\n        //       / \\\n        //      a   b\n        //\n        // Notice that the first guard condition is the left hand of the left most safe access node\n        // which comes in as leftMostSafe to this routine.\n        var /** @type {?} */ guardedExpression = this.visit(leftMostSafe.receiver, _Mode.Expression);\n        var /** @type {?} */ temporary;\n        if (this.needsTemporary(leftMostSafe.receiver)) {\n            // If the expression has method calls or pipes then we need to save the result into a\n            // temporary variable to avoid calling stateful or impure code more than once.\n            temporary = this.allocateTemporary();\n            // Preserve the result in the temporary variable\n            guardedExpression = temporary.set(guardedExpression);\n            // Ensure all further references to the guarded expression refer to the temporary instead.\n            this._resultMap.set(leftMostSafe.receiver, temporary);\n        }\n        var /** @type {?} */ condition = guardedExpression.isBlank();\n        // Convert the ast to an unguarded access to the receiver's member. The map will substitute\n        // leftMostNode with its unguarded version in the call to `this.visit()`.\n        if (leftMostSafe instanceof SafeMethodCall) {\n            this._nodeMap.set(leftMostSafe, new MethodCall(leftMostSafe.span, leftMostSafe.receiver, leftMostSafe.name, leftMostSafe.args));\n        }\n        else {\n            this._nodeMap.set(leftMostSafe, new PropertyRead(leftMostSafe.span, leftMostSafe.receiver, leftMostSafe.name));\n        }\n        // Recursively convert the node now without the guarded member access.\n        var /** @type {?} */ access = this.visit(ast, _Mode.Expression);\n        // Remove the mapping. This is not strictly required as the converter only traverses each node\n        // once but is safer if the conversion is changed to traverse the nodes more than once.\n        this._nodeMap.delete(leftMostSafe);\n        // If we allocated a temporary, release it.\n        if (temporary) {\n            this.releaseTemporary(temporary);\n        }\n        // Produce the conditional\n        return convertToStatementIfNeeded(mode, condition.conditional(literal(null), access));\n    };\n    /**\n     * @param {?} ast\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.leftMostSafeNode = function (ast) {\n        var _this = this;\n        var /** @type {?} */ visit = function (visitor, ast) {\n            return (_this._nodeMap.get(ast) || ast).visit(visitor);\n        };\n        return ast.visit({\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitBinary: function (ast) { return null; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitChain: function (ast) { return null; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitConditional: function (ast) { return null; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitFunctionCall: function (ast) { return null; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitImplicitReceiver: function (ast) { return null; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitInterpolation: function (ast) { return null; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitKeyedRead: function (ast) { return visit(this, ast.obj); },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitKeyedWrite: function (ast) { return null; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitLiteralArray: function (ast) { return null; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitLiteralMap: function (ast) { return null; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitLiteralPrimitive: function (ast) { return null; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitMethodCall: function (ast) { return visit(this, ast.receiver); },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitPipe: function (ast) { return null; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitPrefixNot: function (ast) { return null; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitPropertyRead: function (ast) { return visit(this, ast.receiver); },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitPropertyWrite: function (ast) { return null; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitQuote: function (ast) { return null; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitSafeMethodCall: function (ast) { return visit(this, ast.receiver) || ast; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitSafePropertyRead: function (ast) {\n                return visit(this, ast.receiver) || ast;\n            }\n        });\n    };\n    /**\n     * @param {?} ast\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.needsTemporary = function (ast) {\n        var _this = this;\n        var /** @type {?} */ visit = function (visitor, ast) {\n            return ast && (_this._nodeMap.get(ast) || ast).visit(visitor);\n        };\n        var /** @type {?} */ visitSome = function (visitor, ast) {\n            return ast.some(function (ast) { return visit(visitor, ast); });\n        };\n        return ast.visit({\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitBinary: function (ast) { return visit(this, ast.left) || visit(this, ast.right); },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitChain: function (ast) { return false; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitConditional: function (ast) {\n                return visit(this, ast.condition) || visit(this, ast.trueExp) ||\n                    visit(this, ast.falseExp);\n            },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitFunctionCall: function (ast) { return true; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitImplicitReceiver: function (ast) { return false; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitInterpolation: function (ast) { return visitSome(this, ast.expressions); },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitKeyedRead: function (ast) { return false; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitKeyedWrite: function (ast) { return false; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitLiteralArray: function (ast) { return true; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitLiteralMap: function (ast) { return true; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitLiteralPrimitive: function (ast) { return false; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitMethodCall: function (ast) { return true; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitPipe: function (ast) { return true; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitPrefixNot: function (ast) { return visit(this, ast.expression); },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitPropertyRead: function (ast) { return false; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitPropertyWrite: function (ast) { return false; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitQuote: function (ast) { return false; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitSafeMethodCall: function (ast) { return true; },\n            /**\n             * @param {?} ast\n             * @return {?}\n             */\n            visitSafePropertyRead: function (ast) { return false; }\n        });\n    };\n    /**\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.allocateTemporary = function () {\n        var /** @type {?} */ tempNumber = this._currentTemporary++;\n        this.temporaryCount = Math.max(this._currentTemporary, this.temporaryCount);\n        return new ReadVarExpr(temporaryName(this.bindingId, tempNumber));\n    };\n    /**\n     * @param {?} temporary\n     * @return {?}\n     */\n    _AstToIrVisitor.prototype.releaseTemporary = function (temporary) {\n        this._currentTemporary--;\n        if (temporary.name != temporaryName(this.bindingId, this._currentTemporary)) {\n            throw new Error(\"Temporary \" + temporary.name + \" released out of order\");\n        }\n    };\n    return _AstToIrVisitor;\n}());\n/**\n * @param {?} arg\n * @param {?} output\n * @return {?}\n */\nfunction flattenStatements(arg, output) {\n    if (Array.isArray(arg)) {\n        ((arg)).forEach(function (entry) { return flattenStatements(entry, output); });\n    }\n    else {\n        output.push(arg);\n    }\n}\nvar DefaultLocalResolver = (function () {\n    function DefaultLocalResolver() {\n    }\n    /**\n     * @param {?} name\n     * @return {?}\n     */\n    DefaultLocalResolver.prototype.getLocal = function (name) {\n        if (name === EventHandlerVars.event.name) {\n            return EventHandlerVars.event;\n        }\n        return null;\n    };\n    return DefaultLocalResolver;\n}());\n/**\n * @param {?} bindingId\n * @return {?}\n */\nfunction createCurrValueExpr(bindingId) {\n    return variable(\"currVal_\" + bindingId); // fix syntax highlighting: `\n}\n/**\n * @param {?} bindingId\n * @return {?}\n */\nfunction createPreventDefaultVar(bindingId) {\n    return variable(\"pd_\" + bindingId);\n}\n/**\n * @param {?} stmt\n * @return {?}\n */\nfunction convertStmtIntoExpression(stmt) {\n    if (stmt instanceof ExpressionStatement) {\n        return stmt.expr;\n    }\n    else if (stmt instanceof ReturnStatement) {\n        return stmt.value;\n    }\n    return null;\n}\nvar BuiltinFunctionCall = (function (_super) {\n    __extends(BuiltinFunctionCall, _super);\n    /**\n     * @param {?} span\n     * @param {?} args\n     * @param {?} converter\n     */\n    function BuiltinFunctionCall(span, args, converter) {\n        var _this = _super.call(this, span, null, args) || this;\n        _this.args = args;\n        _this.converter = converter;\n        return _this;\n    }\n    return BuiltinFunctionCall;\n}(FunctionCall));\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar CLASS_ATTR$1 = 'class';\nvar STYLE_ATTR = 'style';\nvar IMPLICIT_TEMPLATE_VAR = '\\$implicit';\nvar NG_CONTAINER_TAG = 'ng-container';\nvar ViewCompileResult = (function () {\n    /**\n     * @param {?} statements\n     * @param {?} viewClassVar\n     * @param {?} rendererTypeVar\n     */\n    function ViewCompileResult(statements, viewClassVar, rendererTypeVar) {\n        this.statements = statements;\n        this.viewClassVar = viewClassVar;\n        this.rendererTypeVar = rendererTypeVar;\n    }\n    return ViewCompileResult;\n}());\nvar ViewCompiler = (function () {\n    /**\n     * @param {?} _genConfigNext\n     * @param {?} _schemaRegistry\n     */\n    function ViewCompiler(_genConfigNext, _schemaRegistry) {\n        this._genConfigNext = _genConfigNext;\n        this._schemaRegistry = _schemaRegistry;\n    }\n    /**\n     * @param {?} component\n     * @param {?} template\n     * @param {?} styles\n     * @param {?} usedPipes\n     * @return {?}\n     */\n    ViewCompiler.prototype.compileComponent = function (component, template, styles, usedPipes) {\n        var /** @type {?} */ embeddedViewCount = 0;\n        var /** @type {?} */ staticQueryIds = findStaticQueryIds(template);\n        var /** @type {?} */ statements = [];\n        var /** @type {?} */ renderComponentVarName;\n        if (!component.isHost) {\n            var /** @type {?} */ customRenderData = [];\n            if (component.template.animations && component.template.animations.length) {\n                customRenderData.push(new LiteralMapEntry('animation', convertValueToOutputAst(component.template.animations), true));\n            }\n            var /** @type {?} */ renderComponentVar = variable(rendererTypeName(component.type.reference));\n            renderComponentVarName = renderComponentVar.name;\n            statements.push(renderComponentVar\n                .set(importExpr(createIdentifier(Identifiers.createRendererType2))\n                .callFn([new LiteralMapExpr([\n                    new LiteralMapEntry('encapsulation', literal(component.template.encapsulation)),\n                    new LiteralMapEntry('styles', styles),\n                    new LiteralMapEntry('data', new LiteralMapExpr(customRenderData))\n                ])]))\n                .toDeclStmt(importType(createIdentifier(Identifiers.RendererType2)), [StmtModifier.Final]));\n        }\n        var /** @type {?} */ viewBuilderFactory = function (parent) {\n            var /** @type {?} */ embeddedViewIndex = embeddedViewCount++;\n            return new ViewBuilder(parent, component, embeddedViewIndex, usedPipes, staticQueryIds, viewBuilderFactory);\n        };\n        var /** @type {?} */ visitor = viewBuilderFactory(null);\n        visitor.visitAll([], template);\n        statements.push.apply(statements, visitor.build());\n        return new ViewCompileResult(statements, visitor.viewName, renderComponentVarName);\n    };\n    return ViewCompiler;\n}());\nViewCompiler.decorators = [\n    { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nViewCompiler.ctorParameters = function () { return [\n    { type: CompilerConfig, },\n    { type: ElementSchemaRegistry, },\n]; };\nvar LOG_VAR = variable('l');\nvar VIEW_VAR = variable('v');\nvar CHECK_VAR = variable('ck');\nvar COMP_VAR = variable('co');\nvar EVENT_NAME_VAR = variable('en');\nvar ALLOW_DEFAULT_VAR = variable(\"ad\");\nvar ViewBuilder = (function () {\n    /**\n     * @param {?} parent\n     * @param {?} component\n     * @param {?} embeddedViewIndex\n     * @param {?} usedPipes\n     * @param {?} staticQueryIds\n     * @param {?} viewBuilderFactory\n     */\n    function ViewBuilder(parent, component, embeddedViewIndex, usedPipes, staticQueryIds, viewBuilderFactory) {\n        this.parent = parent;\n        this.component = component;\n        this.embeddedViewIndex = embeddedViewIndex;\n        this.usedPipes = usedPipes;\n        this.staticQueryIds = staticQueryIds;\n        this.viewBuilderFactory = viewBuilderFactory;\n        this.nodes = [];\n        this.purePipeNodeIndices = Object.create(null);\n        this.refNodeIndices = Object.create(null);\n        this.variables = [];\n        this.children = [];\n        // TODO(tbosch): The old view compiler used to use an `any` type\n        // for the context in any embedded view. We keep this behaivor for now\n        // to be able to introduce the new view compiler without too many errors.\n        this.compType = this.embeddedViewIndex > 0 ? DYNAMIC_TYPE : importType(this.component.type);\n    }\n    Object.defineProperty(ViewBuilder.prototype, \"viewName\", {\n        /**\n         * @return {?}\n         */\n        get: function () {\n            return viewClassName(this.component.type.reference, this.embeddedViewIndex);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @param {?} variables\n     * @param {?} astNodes\n     * @return {?}\n     */\n    ViewBuilder.prototype.visitAll = function (variables, astNodes) {\n        var _this = this;\n        this.variables = variables;\n        // create the pipes for the pure pipes immediately, so that we know their indices.\n        if (!this.parent) {\n            this.usedPipes.forEach(function (pipe) {\n                if (pipe.pure) {\n                    _this.purePipeNodeIndices[pipe.name] = _this._createPipe(null, pipe);\n                }\n            });\n        }\n        if (!this.parent) {\n            var /** @type {?} */ queryIds_1 = staticViewQueryIds(this.staticQueryIds);\n            this.component.viewQueries.forEach(function (query, queryIndex) {\n                // Note: queries start with id 1 so we can use the number in a Bloom filter!\n                var /** @type {?} */ queryId = queryIndex + 1;\n                var /** @type {?} */ bindingType = query.first ? 0 /* First */ : 1;\n                var /** @type {?} */ flags = 67108864 /* TypeViewQuery */ | calcStaticDynamicQueryFlags(queryIds_1, queryId, query.first);\n                _this.nodes.push(function () { return ({\n                    sourceSpan: null,\n                    nodeFlags: flags,\n                    nodeDef: importExpr(createIdentifier(Identifiers.queryDef)).callFn([\n                        literal(flags), literal(queryId),\n                        new LiteralMapExpr([new LiteralMapEntry(query.propertyName, literal(bindingType))])\n                    ])\n                }); });\n            });\n        }\n        templateVisitAll(this, astNodes);\n        if (this.parent && (astNodes.length === 0 || needsAdditionalRootNode(astNodes))) {\n            // if the view is an embedded view, then we need to add an additional root node in some cases\n            this.nodes.push(function () { return ({\n                sourceSpan: null,\n                nodeFlags: 1 /* TypeElement */,\n                nodeDef: importExpr(createIdentifier(Identifiers.anchorDef)).callFn([\n                    literal(0 /* None */), NULL_EXPR, NULL_EXPR, literal(0)\n                ])\n            }); });\n        }\n    };\n    /**\n     * @param {?=} targetStatements\n     * @return {?}\n     */\n    ViewBuilder.prototype.build = function (targetStatements) {\n        if (targetStatements === void 0) { targetStatements = []; }\n        this.children.forEach(function (child) { return child.build(targetStatements); });\n        var _a = this._createNodeExpressions(), updateRendererStmts = _a.updateRendererStmts, updateDirectivesStmts = _a.updateDirectivesStmts, nodeDefExprs = _a.nodeDefExprs;\n        var /** @type {?} */ updateRendererFn = this._createUpdateFn(updateRendererStmts);\n        var /** @type {?} */ updateDirectivesFn = this._createUpdateFn(updateDirectivesStmts);\n        var /** @type {?} */ viewFlags = 0;\n        if (!this.parent && this.component.changeDetection === ChangeDetectionStrategy.OnPush) {\n            viewFlags |= 2 /* OnPush */;\n        }\n        var /** @type {?} */ viewFactory = new DeclareFunctionStmt(this.viewName, [new FnParam(LOG_VAR.name)], [new ReturnStatement(importExpr(createIdentifier(Identifiers.viewDef)).callFn([\n                literal(viewFlags),\n                literalArr(nodeDefExprs),\n                updateDirectivesFn,\n                updateRendererFn,\n            ]))], importType(createIdentifier(Identifiers.ViewDefinition)));\n        targetStatements.push(viewFactory);\n        return targetStatements;\n    };\n    /**\n     * @param {?} updateStmts\n     * @return {?}\n     */\n    ViewBuilder.prototype._createUpdateFn = function (updateStmts) {\n        var /** @type {?} */ updateFn;\n        if (updateStmts.length > 0) {\n            var /** @type {?} */ preStmts = [];\n            if (!this.component.isHost && findReadVarNames(updateStmts).has(COMP_VAR.name)) {\n                preStmts.push(COMP_VAR.set(VIEW_VAR.prop('component')).toDeclStmt(this.compType));\n            }\n            updateFn = fn([\n                new FnParam(CHECK_VAR.name, INFERRED_TYPE),\n                new FnParam(VIEW_VAR.name, INFERRED_TYPE)\n            ], preStmts.concat(updateStmts), INFERRED_TYPE);\n        }\n        else {\n            updateFn = NULL_EXPR;\n        }\n        return updateFn;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    ViewBuilder.prototype.visitNgContent = function (ast, context) {\n        // ngContentDef(ngContentIndex: number, index: number): NodeDef;\n        this.nodes.push(function () { return ({\n            sourceSpan: ast.sourceSpan,\n            nodeFlags: 4 /* TypeNgContent */,\n            nodeDef: importExpr(createIdentifier(Identifiers.ngContentDef)).callFn([\n                literal(ast.ngContentIndex), literal(ast.index)\n            ])\n        }); });\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    ViewBuilder.prototype.visitText = function (ast, context) {\n        // textDef(ngContentIndex: number, constants: string[]): NodeDef;\n        this.nodes.push(function () { return ({\n            sourceSpan: ast.sourceSpan,\n            nodeFlags: 2 /* TypeText */,\n            nodeDef: importExpr(createIdentifier(Identifiers.textDef)).callFn([\n                literal(ast.ngContentIndex), literalArr([literal(ast.value)])\n            ])\n        }); });\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    ViewBuilder.prototype.visitBoundText = function (ast, context) {\n        var _this = this;\n        var /** @type {?} */ nodeIndex = this.nodes.length;\n        // reserve the space in the nodeDefs array\n        this.nodes.push(null);\n        var /** @type {?} */ astWithSource = (ast.value);\n        var /** @type {?} */ inter = (astWithSource.ast);\n        var /** @type {?} */ updateRendererExpressions = inter.expressions.map(function (expr, bindingIndex) { return _this._preprocessUpdateExpression({ nodeIndex: nodeIndex, bindingIndex: bindingIndex, sourceSpan: ast.sourceSpan, context: COMP_VAR, value: expr }); });\n        // textDef(ngContentIndex: number, constants: string[]): NodeDef;\n        this.nodes[nodeIndex] = function () { return ({\n            sourceSpan: ast.sourceSpan,\n            nodeFlags: 2 /* TypeText */,\n            nodeDef: importExpr(createIdentifier(Identifiers.textDef)).callFn([\n                literal(ast.ngContentIndex), literalArr(inter.strings.map(function (s) { return literal(s); }))\n            ]),\n            updateRenderer: updateRendererExpressions\n        }); };\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    ViewBuilder.prototype.visitEmbeddedTemplate = function (ast, context) {\n        var _this = this;\n        var /** @type {?} */ nodeIndex = this.nodes.length;\n        // reserve the space in the nodeDefs array\n        this.nodes.push(null);\n        var _a = this._visitElementOrTemplate(nodeIndex, ast), flags = _a.flags, queryMatchesExpr = _a.queryMatchesExpr, hostEvents = _a.hostEvents;\n        var /** @type {?} */ childVisitor = this.viewBuilderFactory(this);\n        this.children.push(childVisitor);\n        childVisitor.visitAll(ast.variables, ast.children);\n        var /** @type {?} */ childCount = this.nodes.length - nodeIndex - 1;\n        // anchorDef(\n        //   flags: NodeFlags, matchedQueries: [string, QueryValueType][], ngContentIndex: number,\n        //   childCount: number, handleEventFn?: ElementHandleEventFn, templateFactory?:\n        //   ViewDefinitionFactory): NodeDef;\n        this.nodes[nodeIndex] = function () { return ({\n            sourceSpan: ast.sourceSpan,\n            nodeFlags: 1 /* TypeElement */ | flags,\n            nodeDef: importExpr(createIdentifier(Identifiers.anchorDef)).callFn([\n                literal(flags),\n                queryMatchesExpr,\n                literal(ast.ngContentIndex),\n                literal(childCount),\n                _this._createElementHandleEventFn(nodeIndex, hostEvents),\n                variable(childVisitor.viewName),\n            ])\n        }); };\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    ViewBuilder.prototype.visitElement = function (ast, context) {\n        var _this = this;\n        var /** @type {?} */ nodeIndex = this.nodes.length;\n        // reserve the space in the nodeDefs array so we can add children\n        this.nodes.push(null);\n        var /** @type {?} */ elName = ast.name;\n        if (ast.name === NG_CONTAINER_TAG) {\n            // Using a null element name creates an anchor.\n            elName = null;\n        }\n        var _a = this._visitElementOrTemplate(nodeIndex, ast), flags = _a.flags, usedEvents = _a.usedEvents, queryMatchesExpr = _a.queryMatchesExpr, dirHostBindings = _a.hostBindings, hostEvents = _a.hostEvents;\n        var /** @type {?} */ inputDefs = [];\n        var /** @type {?} */ updateRendererExpressions = [];\n        var /** @type {?} */ outputDefs = [];\n        if (elName) {\n            var /** @type {?} */ hostBindings = ast.inputs\n                .map(function (inputAst) { return ({\n                context: /** @type {?} */ (COMP_VAR),\n                inputAst: inputAst,\n                dirAst: null,\n            }); })\n                .concat(dirHostBindings);\n            if (hostBindings.length) {\n                updateRendererExpressions =\n                    hostBindings.map(function (hostBinding, bindingIndex) { return _this._preprocessUpdateExpression({\n                        context: hostBinding.context,\n                        nodeIndex: nodeIndex,\n                        bindingIndex: bindingIndex,\n                        sourceSpan: hostBinding.inputAst.sourceSpan,\n                        value: hostBinding.inputAst.value\n                    }); });\n                inputDefs = hostBindings.map(function (hostBinding) { return elementBindingDef(hostBinding.inputAst, hostBinding.dirAst); });\n            }\n            outputDefs = usedEvents.map(function (_a) {\n                var target = _a[0], eventName = _a[1];\n                return literalArr([literal(target), literal(eventName)]);\n            });\n        }\n        templateVisitAll(this, ast.children);\n        var /** @type {?} */ childCount = this.nodes.length - nodeIndex - 1;\n        var /** @type {?} */ compAst = ast.directives.find(function (dirAst) { return dirAst.directive.isComponent; });\n        var /** @type {?} */ compRendererType = NULL_EXPR;\n        var /** @type {?} */ compView = NULL_EXPR;\n        if (compAst) {\n            compView = importExpr({ reference: compAst.directive.componentViewType });\n            compRendererType = importExpr({ reference: compAst.directive.rendererType });\n        }\n        // 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][],\n        //   outputs?: ([OutputType.ElementOutput | OutputType.DirectiveHostOutput, string, string])[],\n        //   handleEvent?: ElementHandleEventFn,\n        //   componentView?: () => ViewDefinition, componentRendererType?: RendererType2): NodeDef;\n        this.nodes[nodeIndex] = function () { return ({\n            sourceSpan: ast.sourceSpan,\n            nodeFlags: 1 /* TypeElement */ | flags,\n            nodeDef: importExpr(createIdentifier(Identifiers.elementDef)).callFn([\n                literal(flags),\n                queryMatchesExpr,\n                literal(ast.ngContentIndex),\n                literal(childCount),\n                literal(elName),\n                elName ? fixedAttrsDef(ast) : NULL_EXPR,\n                inputDefs.length ? literalArr(inputDefs) : NULL_EXPR,\n                outputDefs.length ? literalArr(outputDefs) : NULL_EXPR,\n                _this._createElementHandleEventFn(nodeIndex, hostEvents),\n                compView,\n                compRendererType,\n            ]),\n            updateRenderer: updateRendererExpressions\n        }); };\n    };\n    /**\n     * @param {?} nodeIndex\n     * @param {?} ast\n     * @return {?}\n     */\n    ViewBuilder.prototype._visitElementOrTemplate = function (nodeIndex, ast) {\n        var _this = this;\n        var /** @type {?} */ flags = 0;\n        if (ast.hasViewContainer) {\n            flags |= 8388608 /* EmbeddedViews */;\n        }\n        var /** @type {?} */ usedEvents = new Map();\n        ast.outputs.forEach(function (event) {\n            var _a = elementEventNameAndTarget(event, null), name = _a.name, target = _a.target;\n            usedEvents.set(ɵelementEventFullName(target, name), [target, name]);\n        });\n        ast.directives.forEach(function (dirAst) {\n            dirAst.hostEvents.forEach(function (event) {\n                var _a = elementEventNameAndTarget(event, dirAst), name = _a.name, target = _a.target;\n                usedEvents.set(ɵelementEventFullName(target, name), [target, name]);\n            });\n        });\n        var /** @type {?} */ hostBindings = [];\n        var /** @type {?} */ hostEvents = [];\n        var /** @type {?} */ componentFactoryResolverProvider = createComponentFactoryResolver(ast.directives);\n        if (componentFactoryResolverProvider) {\n            this._visitProvider(componentFactoryResolverProvider, ast.queryMatches);\n        }\n        ast.providers.forEach(function (providerAst, providerIndex) {\n            var /** @type {?} */ dirAst;\n            var /** @type {?} */ dirIndex;\n            ast.directives.forEach(function (localDirAst, i) {\n                if (localDirAst.directive.type.reference === tokenReference(providerAst.token)) {\n                    dirAst = localDirAst;\n                    dirIndex = i;\n                }\n            });\n            if (dirAst) {\n                var _a = _this._visitDirective(providerAst, dirAst, dirIndex, nodeIndex, ast.references, ast.queryMatches, usedEvents, _this.staticQueryIds.get(/** @type {?} */ (ast))), dirHostBindings = _a.hostBindings, dirHostEvents = _a.hostEvents;\n                hostBindings.push.apply(hostBindings, dirHostBindings);\n                hostEvents.push.apply(hostEvents, dirHostEvents);\n            }\n            else {\n                _this._visitProvider(providerAst, ast.queryMatches);\n            }\n        });\n        var /** @type {?} */ queryMatchExprs = [];\n        ast.queryMatches.forEach(function (match) {\n            var /** @type {?} */ valueType;\n            if (tokenReference(match.value) === resolveIdentifier(Identifiers.ElementRef)) {\n                valueType = 0 /* ElementRef */;\n            }\n            else if (tokenReference(match.value) === resolveIdentifier(Identifiers.ViewContainerRef)) {\n                valueType = 3 /* ViewContainerRef */;\n            }\n            else if (tokenReference(match.value) === resolveIdentifier(Identifiers.TemplateRef)) {\n                valueType = 2 /* TemplateRef */;\n            }\n            if (valueType != null) {\n                queryMatchExprs.push(literalArr([literal(match.queryId), literal(valueType)]));\n            }\n        });\n        ast.references.forEach(function (ref) {\n            var /** @type {?} */ valueType;\n            if (!ref.value) {\n                valueType = 1 /* RenderElement */;\n            }\n            else if (tokenReference(ref.value) === resolveIdentifier(Identifiers.TemplateRef)) {\n                valueType = 2 /* TemplateRef */;\n            }\n            if (valueType != null) {\n                _this.refNodeIndices[ref.name] = nodeIndex;\n                queryMatchExprs.push(literalArr([literal(ref.name), literal(valueType)]));\n            }\n        });\n        ast.outputs.forEach(function (outputAst) {\n            hostEvents.push({ context: COMP_VAR, eventAst: outputAst, dirAst: null });\n        });\n        return {\n            flags: flags,\n            usedEvents: Array.from(usedEvents.values()),\n            queryMatchesExpr: queryMatchExprs.length ? literalArr(queryMatchExprs) : NULL_EXPR,\n            hostBindings: hostBindings,\n            hostEvents: hostEvents\n        };\n    };\n    /**\n     * @param {?} providerAst\n     * @param {?} dirAst\n     * @param {?} directiveIndex\n     * @param {?} elementNodeIndex\n     * @param {?} refs\n     * @param {?} queryMatches\n     * @param {?} usedEvents\n     * @param {?} queryIds\n     * @return {?}\n     */\n    ViewBuilder.prototype._visitDirective = function (providerAst, dirAst, directiveIndex, elementNodeIndex, refs, queryMatches, usedEvents, queryIds) {\n        var _this = this;\n        var /** @type {?} */ nodeIndex = this.nodes.length;\n        // reserve the space in the nodeDefs array so we can add children\n        this.nodes.push(null);\n        dirAst.directive.queries.forEach(function (query, queryIndex) {\n            var /** @type {?} */ queryId = dirAst.contentQueryStartId + queryIndex;\n            var /** @type {?} */ flags = 33554432 /* TypeContentQuery */ | calcStaticDynamicQueryFlags(queryIds, queryId, query.first);\n            var /** @type {?} */ bindingType = query.first ? 0 /* First */ : 1;\n            _this.nodes.push(function () { return ({\n                sourceSpan: dirAst.sourceSpan,\n                nodeFlags: flags,\n                nodeDef: importExpr(createIdentifier(Identifiers.queryDef)).callFn([\n                    literal(flags), literal(queryId),\n                    new LiteralMapExpr([new LiteralMapEntry(query.propertyName, literal(bindingType))])\n                ]),\n            }); });\n        });\n        // Note: the operation below might also create new nodeDefs,\n        // but we don't want them to be a child of a directive,\n        // as they might be a provider/pipe on their own.\n        // I.e. we only allow queries as children of directives nodes.\n        var /** @type {?} */ childCount = this.nodes.length - nodeIndex - 1;\n        var _a = this._visitProviderOrDirective(providerAst, queryMatches), flags = _a.flags, queryMatchExprs = _a.queryMatchExprs, providerExpr = _a.providerExpr, depsExpr = _a.depsExpr;\n        refs.forEach(function (ref) {\n            if (ref.value && tokenReference(ref.value) === tokenReference(providerAst.token)) {\n                _this.refNodeIndices[ref.name] = nodeIndex;\n                queryMatchExprs.push(literalArr([literal(ref.name), literal(4 /* Provider */)]));\n            }\n        });\n        if (dirAst.directive.isComponent) {\n            flags |= 16384 /* Component */;\n        }\n        var /** @type {?} */ inputDefs = dirAst.inputs.map(function (inputAst, inputIndex) {\n            var /** @type {?} */ mapValue = literalArr([literal(inputIndex), literal(inputAst.directiveName)]);\n            // Note: it's important to not quote the key so that we can capture renames by minifiers!\n            return new LiteralMapEntry(inputAst.directiveName, mapValue, false);\n        });\n        var /** @type {?} */ outputDefs = [];\n        var /** @type {?} */ dirMeta = dirAst.directive;\n        Object.keys(dirMeta.outputs).forEach(function (propName) {\n            var /** @type {?} */ eventName = dirMeta.outputs[propName];\n            if (usedEvents.has(eventName)) {\n                // Note: it's important to not quote the key so that we can capture renames by minifiers!\n                outputDefs.push(new LiteralMapEntry(propName, literal(eventName), false));\n            }\n        });\n        var /** @type {?} */ updateDirectiveExpressions = [];\n        if (dirAst.inputs.length || (flags & (131072 /* DoCheck */ | 32768 /* OnInit */)) > 0) {\n            updateDirectiveExpressions =\n                dirAst.inputs.map(function (input, bindingIndex) { return _this._preprocessUpdateExpression({\n                    nodeIndex: nodeIndex,\n                    bindingIndex: bindingIndex,\n                    sourceSpan: input.sourceSpan,\n                    context: COMP_VAR,\n                    value: input.value\n                }); });\n        }\n        var /** @type {?} */ dirContextExpr = importExpr(createIdentifier(Identifiers.nodeValue)).callFn([\n            VIEW_VAR, literal(nodeIndex)\n        ]);\n        var /** @type {?} */ hostBindings = dirAst.hostProperties.map(function (inputAst) { return ({\n            context: dirContextExpr,\n            dirAst: dirAst,\n            inputAst: inputAst,\n        }); });\n        var /** @type {?} */ hostEvents = dirAst.hostEvents.map(function (hostEventAst) { return ({\n            context: dirContextExpr,\n            eventAst: hostEventAst, dirAst: dirAst,\n        }); });\n        // directiveDef(\n        //   flags: NodeFlags, matchedQueries: [string, QueryValueType][], childCount: number, ctor:\n        //   any,\n        //   deps: ([DepFlags, any] | any)[], props?: {[name: string]: [number, string]},\n        //   outputs?: {[name: string]: string}, component?: () => ViewDefinition): NodeDef;\n        this.nodes[nodeIndex] = function () { return ({\n            sourceSpan: dirAst.sourceSpan,\n            nodeFlags: 8192 /* TypeDirective */ | flags,\n            nodeDef: importExpr(createIdentifier(Identifiers.directiveDef)).callFn([\n                literal(flags), queryMatchExprs.length ? literalArr(queryMatchExprs) : NULL_EXPR,\n                literal(childCount), providerExpr, depsExpr,\n                inputDefs.length ? new LiteralMapExpr(inputDefs) : NULL_EXPR,\n                outputDefs.length ? new LiteralMapExpr(outputDefs) : NULL_EXPR\n            ]),\n            updateDirectives: updateDirectiveExpressions,\n            directive: dirAst.directive.type,\n        }); };\n        return { hostBindings: hostBindings, hostEvents: hostEvents };\n    };\n    /**\n     * @param {?} providerAst\n     * @param {?} queryMatches\n     * @return {?}\n     */\n    ViewBuilder.prototype._visitProvider = function (providerAst, queryMatches) {\n        var /** @type {?} */ nodeIndex = this.nodes.length;\n        // reserve the space in the nodeDefs array so we can add children\n        this.nodes.push(null);\n        var _a = this._visitProviderOrDirective(providerAst, queryMatches), flags = _a.flags, queryMatchExprs = _a.queryMatchExprs, providerExpr = _a.providerExpr, depsExpr = _a.depsExpr;\n        // providerDef(\n        //   flags: NodeFlags, matchedQueries: [string, QueryValueType][], token:any,\n        //   value: any, deps: ([DepFlags, any] | any)[]): NodeDef;\n        this.nodes[nodeIndex] = function () { return ({\n            sourceSpan: providerAst.sourceSpan,\n            nodeFlags: flags,\n            nodeDef: importExpr(createIdentifier(Identifiers.providerDef)).callFn([\n                literal(flags), queryMatchExprs.length ? literalArr(queryMatchExprs) : NULL_EXPR,\n                tokenExpr(providerAst.token), providerExpr, depsExpr\n            ])\n        }); };\n    };\n    /**\n     * @param {?} providerAst\n     * @param {?} queryMatches\n     * @return {?}\n     */\n    ViewBuilder.prototype._visitProviderOrDirective = function (providerAst, queryMatches) {\n        var /** @type {?} */ flags = 0;\n        if (!providerAst.eager) {\n            flags |= 2048 /* LazyProvider */;\n        }\n        if (providerAst.providerType === ProviderAstType.PrivateService) {\n            flags |= 4096 /* PrivateProvider */;\n        }\n        providerAst.lifecycleHooks.forEach(function (lifecycleHook) {\n            // for regular providers, we only support ngOnDestroy\n            if (lifecycleHook === ɵLifecycleHooks.OnDestroy ||\n                providerAst.providerType === ProviderAstType.Directive ||\n                providerAst.providerType === ProviderAstType.Component) {\n                flags |= lifecycleHookToNodeFlag(lifecycleHook);\n            }\n        });\n        var /** @type {?} */ queryMatchExprs = [];\n        queryMatches.forEach(function (match) {\n            if (tokenReference(match.value) === tokenReference(providerAst.token)) {\n                queryMatchExprs.push(literalArr([literal(match.queryId), literal(4 /* Provider */)]));\n            }\n        });\n        var _a = providerDef(providerAst), providerExpr = _a.providerExpr, depsExpr = _a.depsExpr, providerType = _a.flags;\n        return { flags: flags | providerType, queryMatchExprs: queryMatchExprs, providerExpr: providerExpr, depsExpr: depsExpr };\n    };\n    /**\n     * @param {?} name\n     * @return {?}\n     */\n    ViewBuilder.prototype.getLocal = function (name) {\n        if (name == EventHandlerVars.event.name) {\n            return EventHandlerVars.event;\n        }\n        var /** @type {?} */ currViewExpr = VIEW_VAR;\n        for (var /** @type {?} */ currBuilder = this; currBuilder; currBuilder = currBuilder.parent,\n            currViewExpr = currViewExpr.prop('parent').cast(DYNAMIC_TYPE)) {\n            // check references\n            var /** @type {?} */ refNodeIndex = currBuilder.refNodeIndices[name];\n            if (refNodeIndex != null) {\n                return importExpr(createIdentifier(Identifiers.nodeValue)).callFn([\n                    currViewExpr, literal(refNodeIndex)\n                ]);\n            }\n            // check variables\n            var /** @type {?} */ varAst = currBuilder.variables.find(function (varAst) { return varAst.name === name; });\n            if (varAst) {\n                var /** @type {?} */ varValue = varAst.value || IMPLICIT_TEMPLATE_VAR;\n                return currViewExpr.prop('context').prop(varValue);\n            }\n        }\n        return null;\n    };\n    /**\n     * @param {?} sourceSpan\n     * @param {?} argCount\n     * @return {?}\n     */\n    ViewBuilder.prototype.createLiteralArrayConverter = function (sourceSpan, argCount) {\n        if (argCount === 0) {\n            var /** @type {?} */ valueExpr_1 = importExpr(createIdentifier(Identifiers.EMPTY_ARRAY));\n            return function () { return valueExpr_1; };\n        }\n        var /** @type {?} */ nodeIndex = this.nodes.length;\n        // pureArrayDef(argCount: number): NodeDef;\n        this.nodes.push(function () { return ({\n            sourceSpan: sourceSpan,\n            nodeFlags: 16 /* TypePureArray */,\n            nodeDef: importExpr(createIdentifier(Identifiers.pureArrayDef)).callFn([literal(argCount)])\n        }); });\n        return function (args) { return callCheckStmt(nodeIndex, args); };\n    };\n    /**\n     * @param {?} sourceSpan\n     * @param {?} keys\n     * @return {?}\n     */\n    ViewBuilder.prototype.createLiteralMapConverter = function (sourceSpan, keys) {\n        if (keys.length === 0) {\n            var /** @type {?} */ valueExpr_2 = importExpr(createIdentifier(Identifiers.EMPTY_MAP));\n            return function () { return valueExpr_2; };\n        }\n        var /** @type {?} */ nodeIndex = this.nodes.length;\n        // function pureObjectDef(propertyNames: string[]): NodeDef\n        this.nodes.push(function () { return ({\n            sourceSpan: sourceSpan,\n            nodeFlags: 32 /* TypePureObject */,\n            nodeDef: importExpr(createIdentifier(Identifiers.pureObjectDef))\n                .callFn([literalArr(keys.map(function (key) { return literal(key); }))])\n        }); });\n        return function (args) { return callCheckStmt(nodeIndex, args); };\n    };\n    /**\n     * @param {?} expression\n     * @param {?} name\n     * @param {?} argCount\n     * @return {?}\n     */\n    ViewBuilder.prototype.createPipeConverter = function (expression, name, argCount) {\n        var /** @type {?} */ pipe = this.usedPipes.find(function (pipeSummary) { return pipeSummary.name === name; });\n        if (pipe.pure) {\n            var /** @type {?} */ nodeIndex_1 = this.nodes.length;\n            // function purePipeDef(argCount: number): NodeDef;\n            this.nodes.push(function () { return ({\n                sourceSpan: expression.sourceSpan,\n                nodeFlags: 64 /* TypePurePipe */,\n                nodeDef: importExpr(createIdentifier(Identifiers.purePipeDef))\n                    .callFn([literal(argCount)])\n            }); });\n            // find underlying pipe in the component view\n            var /** @type {?} */ compViewExpr = VIEW_VAR;\n            var /** @type {?} */ compBuilder = this;\n            while (compBuilder.parent) {\n                compBuilder = compBuilder.parent;\n                compViewExpr = compViewExpr.prop('parent').cast(DYNAMIC_TYPE);\n            }\n            var /** @type {?} */ pipeNodeIndex = compBuilder.purePipeNodeIndices[name];\n            var /** @type {?} */ pipeValueExpr_1 = importExpr(createIdentifier(Identifiers.nodeValue)).callFn([\n                compViewExpr, literal(pipeNodeIndex)\n            ]);\n            return function (args) { return callUnwrapValue(expression.nodeIndex, expression.bindingIndex, callCheckStmt(nodeIndex_1, [pipeValueExpr_1].concat(args))); };\n        }\n        else {\n            var /** @type {?} */ nodeIndex = this._createPipe(expression.sourceSpan, pipe);\n            var /** @type {?} */ nodeValueExpr_1 = importExpr(createIdentifier(Identifiers.nodeValue)).callFn([\n                VIEW_VAR, literal(nodeIndex)\n            ]);\n            return function (args) { return callUnwrapValue(expression.nodeIndex, expression.bindingIndex, nodeValueExpr_1.callMethod('transform', args)); };\n        }\n    };\n    /**\n     * @param {?} sourceSpan\n     * @param {?} pipe\n     * @return {?}\n     */\n    ViewBuilder.prototype._createPipe = function (sourceSpan, pipe) {\n        var /** @type {?} */ nodeIndex = this.nodes.length;\n        var /** @type {?} */ flags = 0;\n        pipe.type.lifecycleHooks.forEach(function (lifecycleHook) {\n            // for pipes, we only support ngOnDestroy\n            if (lifecycleHook === ɵLifecycleHooks.OnDestroy) {\n                flags |= lifecycleHookToNodeFlag(lifecycleHook);\n            }\n        });\n        var /** @type {?} */ depExprs = pipe.type.diDeps.map(depDef);\n        // function pipeDef(\n        //   flags: NodeFlags, ctor: any, deps: ([DepFlags, any] | any)[]): NodeDef\n        this.nodes.push(function () { return ({\n            sourceSpan: sourceSpan,\n            nodeFlags: 8 /* TypePipe */,\n            nodeDef: importExpr(createIdentifier(Identifiers.pipeDef)).callFn([\n                literal(flags), importExpr(pipe.type), literalArr(depExprs)\n            ])\n        }); });\n        return nodeIndex;\n    };\n    /**\n     * @param {?} expression\n     * @return {?}\n     */\n    ViewBuilder.prototype._preprocessUpdateExpression = function (expression) {\n        var _this = this;\n        return {\n            nodeIndex: expression.nodeIndex,\n            bindingIndex: expression.bindingIndex,\n            sourceSpan: expression.sourceSpan,\n            context: expression.context,\n            value: convertPropertyBindingBuiltins({\n                createLiteralArrayConverter: function (argCount) { return _this.createLiteralArrayConverter(expression.sourceSpan, argCount); },\n                createLiteralMapConverter: function (keys) { return _this.createLiteralMapConverter(expression.sourceSpan, keys); },\n                createPipeConverter: function (name, argCount) { return _this.createPipeConverter(expression, name, argCount); }\n            }, expression.value)\n        };\n    };\n    /**\n     * @return {?}\n     */\n    ViewBuilder.prototype._createNodeExpressions = function () {\n        var /** @type {?} */ self = this;\n        var /** @type {?} */ updateBindingCount = 0;\n        var /** @type {?} */ updateRendererStmts = [];\n        var /** @type {?} */ updateDirectivesStmts = [];\n        var /** @type {?} */ nodeDefExprs = this.nodes.map(function (factory, nodeIndex) {\n            var _a = factory(), nodeDef = _a.nodeDef, nodeFlags = _a.nodeFlags, updateDirectives = _a.updateDirectives, updateRenderer = _a.updateRenderer, sourceSpan = _a.sourceSpan;\n            if (updateRenderer) {\n                updateRendererStmts.push.apply(updateRendererStmts, createUpdateStatements(nodeIndex, sourceSpan, updateRenderer, false));\n            }\n            if (updateDirectives) {\n                updateDirectivesStmts.push.apply(updateDirectivesStmts, createUpdateStatements(nodeIndex, sourceSpan, updateDirectives, (nodeFlags & (131072 /* DoCheck */ | 32768 /* OnInit */)) > 0));\n            }\n            // We use a comma expression to call the log function before\n            // the nodeDef function, but still use the result of the nodeDef function\n            // as the value.\n            // Note: We only add the logger to elements / text nodes,\n            // so we don't generate too much code.\n            var /** @type {?} */ logWithNodeDef = nodeFlags & 3 /* CatRenderNode */ ?\n                new CommaExpr([LOG_VAR.callFn([]).callFn([]), nodeDef]) :\n                nodeDef;\n            return applySourceSpanToExpressionIfNeeded(logWithNodeDef, sourceSpan);\n        });\n        return { updateRendererStmts: updateRendererStmts, updateDirectivesStmts: updateDirectivesStmts, nodeDefExprs: nodeDefExprs };\n        /**\n         * @param {?} nodeIndex\n         * @param {?} sourceSpan\n         * @param {?} expressions\n         * @param {?} allowEmptyExprs\n         * @return {?}\n         */\n        function createUpdateStatements(nodeIndex, sourceSpan, expressions, allowEmptyExprs) {\n            var /** @type {?} */ updateStmts = [];\n            var /** @type {?} */ exprs = expressions.map(function (_a) {\n                var sourceSpan = _a.sourceSpan, context = _a.context, value = _a.value;\n                var /** @type {?} */ bindingId = \"\" + updateBindingCount++;\n                var /** @type {?} */ nameResolver = context === COMP_VAR ? self : null;\n                var _b = convertPropertyBinding(nameResolver, context, value, bindingId), stmts = _b.stmts, currValExpr = _b.currValExpr;\n                updateStmts.push.apply(updateStmts, stmts.map(function (stmt) { return applySourceSpanToStatementIfNeeded(stmt, sourceSpan); }));\n                return applySourceSpanToExpressionIfNeeded(currValExpr, sourceSpan);\n            });\n            if (expressions.length || allowEmptyExprs) {\n                updateStmts.push(applySourceSpanToStatementIfNeeded(callCheckStmt(nodeIndex, exprs).toStmt(), sourceSpan));\n            }\n            return updateStmts;\n        }\n    };\n    /**\n     * @param {?} nodeIndex\n     * @param {?} handlers\n     * @return {?}\n     */\n    ViewBuilder.prototype._createElementHandleEventFn = function (nodeIndex, handlers) {\n        var _this = this;\n        var /** @type {?} */ handleEventStmts = [];\n        var /** @type {?} */ handleEventBindingCount = 0;\n        handlers.forEach(function (_a) {\n            var context = _a.context, eventAst = _a.eventAst, dirAst = _a.dirAst;\n            var /** @type {?} */ bindingId = \"\" + handleEventBindingCount++;\n            var /** @type {?} */ nameResolver = context === COMP_VAR ? _this : null;\n            var _b = convertActionBinding(nameResolver, context, eventAst.handler, bindingId), stmts = _b.stmts, allowDefault = _b.allowDefault;\n            var /** @type {?} */ trueStmts = stmts;\n            if (allowDefault) {\n                trueStmts.push(ALLOW_DEFAULT_VAR.set(allowDefault.and(ALLOW_DEFAULT_VAR)).toStmt());\n            }\n            var _c = elementEventNameAndTarget(eventAst, dirAst), eventTarget = _c.target, eventName = _c.name;\n            var /** @type {?} */ fullEventName = ɵelementEventFullName(eventTarget, eventName);\n            handleEventStmts.push(applySourceSpanToStatementIfNeeded(new IfStmt(literal(fullEventName).identical(EVENT_NAME_VAR), trueStmts), eventAst.sourceSpan));\n        });\n        var /** @type {?} */ handleEventFn;\n        if (handleEventStmts.length > 0) {\n            var /** @type {?} */ preStmts = [ALLOW_DEFAULT_VAR.set(literal(true)).toDeclStmt(BOOL_TYPE)];\n            if (!this.component.isHost && findReadVarNames(handleEventStmts).has(COMP_VAR.name)) {\n                preStmts.push(COMP_VAR.set(VIEW_VAR.prop('component')).toDeclStmt(this.compType));\n            }\n            handleEventFn = fn([\n                new FnParam(VIEW_VAR.name, INFERRED_TYPE),\n                new FnParam(EVENT_NAME_VAR.name, INFERRED_TYPE),\n                new FnParam(EventHandlerVars.event.name, INFERRED_TYPE)\n            ], preStmts.concat(handleEventStmts, [new ReturnStatement(ALLOW_DEFAULT_VAR)]), INFERRED_TYPE);\n        }\n        else {\n            handleEventFn = NULL_EXPR;\n        }\n        return handleEventFn;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    ViewBuilder.prototype.visitDirective = function (ast, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    ViewBuilder.prototype.visitDirectiveProperty = function (ast, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    ViewBuilder.prototype.visitReference = function (ast, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    ViewBuilder.prototype.visitVariable = function (ast, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    ViewBuilder.prototype.visitEvent = function (ast, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    ViewBuilder.prototype.visitElementProperty = function (ast, context) { };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    ViewBuilder.prototype.visitAttr = function (ast, context) { };\n    return ViewBuilder;\n}());\n/**\n * @param {?} providerAst\n * @return {?}\n */\nfunction providerDef(providerAst) {\n    return providerAst.multiProvider ?\n        multiProviderDef(providerAst.providers) :\n        singleProviderDef(providerAst.providerType, providerAst.providers[0]);\n}\n/**\n * @param {?} providers\n * @return {?}\n */\nfunction multiProviderDef(providers) {\n    var /** @type {?} */ allDepDefs = [];\n    var /** @type {?} */ allParams = [];\n    var /** @type {?} */ exprs = providers.map(function (provider, providerIndex) {\n        var /** @type {?} */ expr;\n        if (provider.useClass) {\n            var /** @type {?} */ depExprs = convertDeps(providerIndex, provider.deps || provider.useClass.diDeps);\n            expr = importExpr(provider.useClass).instantiate(depExprs);\n        }\n        else if (provider.useFactory) {\n            var /** @type {?} */ depExprs = convertDeps(providerIndex, provider.deps || provider.useFactory.diDeps);\n            expr = importExpr(provider.useFactory).callFn(depExprs);\n        }\n        else if (provider.useExisting) {\n            var /** @type {?} */ depExprs = convertDeps(providerIndex, [{ token: provider.useExisting }]);\n            expr = depExprs[0];\n        }\n        else {\n            expr = convertValueToOutputAst(provider.useValue);\n        }\n        return expr;\n    });\n    var /** @type {?} */ providerExpr = fn(allParams, [new ReturnStatement(literalArr(exprs))], INFERRED_TYPE);\n    return { providerExpr: providerExpr, flags: 512 /* TypeFactoryProvider */, depsExpr: literalArr(allDepDefs) };\n    /**\n     * @param {?} providerIndex\n     * @param {?} deps\n     * @return {?}\n     */\n    function convertDeps(providerIndex, deps) {\n        return deps.map(function (dep, depIndex) {\n            var /** @type {?} */ paramName = \"p\" + providerIndex + \"_\" + depIndex;\n            allParams.push(new FnParam(paramName, DYNAMIC_TYPE));\n            allDepDefs.push(depDef(dep));\n            return variable(paramName);\n        });\n    }\n}\n/**\n * @param {?} providerType\n * @param {?} providerMeta\n * @return {?}\n */\nfunction singleProviderDef(providerType, providerMeta) {\n    var /** @type {?} */ providerExpr;\n    var /** @type {?} */ flags;\n    var /** @type {?} */ deps;\n    if (providerType === ProviderAstType.Directive || providerType === ProviderAstType.Component) {\n        providerExpr = importExpr(providerMeta.useClass);\n        flags = 8192 /* TypeDirective */;\n        deps = providerMeta.deps || providerMeta.useClass.diDeps;\n    }\n    else {\n        if (providerMeta.useClass) {\n            providerExpr = importExpr(providerMeta.useClass);\n            flags = 256 /* TypeClassProvider */;\n            deps = providerMeta.deps || providerMeta.useClass.diDeps;\n        }\n        else if (providerMeta.useFactory) {\n            providerExpr = importExpr(providerMeta.useFactory);\n            flags = 512 /* TypeFactoryProvider */;\n            deps = providerMeta.deps || providerMeta.useFactory.diDeps;\n        }\n        else if (providerMeta.useExisting) {\n            providerExpr = NULL_EXPR;\n            flags = 1024 /* TypeUseExistingProvider */;\n            deps = [{ token: providerMeta.useExisting }];\n        }\n        else {\n            providerExpr = convertValueToOutputAst(providerMeta.useValue);\n            flags = 128 /* TypeValueProvider */;\n            deps = [];\n        }\n    }\n    var /** @type {?} */ depsExpr = literalArr(deps.map(function (dep) { return depDef(dep); }));\n    return { providerExpr: providerExpr, flags: flags, depsExpr: depsExpr };\n}\n/**\n * @param {?} tokenMeta\n * @return {?}\n */\nfunction tokenExpr(tokenMeta) {\n    return tokenMeta.identifier ? importExpr(tokenMeta.identifier) : literal(tokenMeta.value);\n}\n/**\n * @param {?} dep\n * @return {?}\n */\nfunction depDef(dep) {\n    // Note: the following fields have already been normalized out by provider_analyzer:\n    // - isAttribute, isSelf, isHost\n    var /** @type {?} */ expr = dep.isValue ? convertValueToOutputAst(dep.value) : tokenExpr(dep.token);\n    var /** @type {?} */ flags = 0;\n    if (dep.isSkipSelf) {\n        flags |= 1 /* SkipSelf */;\n    }\n    if (dep.isOptional) {\n        flags |= 2 /* Optional */;\n    }\n    if (dep.isValue) {\n        flags |= 8 /* Value */;\n    }\n    return flags === 0 /* None */ ? expr : literalArr([literal(flags), expr]);\n}\n/**\n * @param {?} astNodes\n * @return {?}\n */\nfunction needsAdditionalRootNode(astNodes) {\n    var /** @type {?} */ lastAstNode = astNodes[astNodes.length - 1];\n    if (lastAstNode instanceof EmbeddedTemplateAst) {\n        return lastAstNode.hasViewContainer;\n    }\n    if (lastAstNode instanceof ElementAst) {\n        if (lastAstNode.name === NG_CONTAINER_TAG && lastAstNode.children.length) {\n            return needsAdditionalRootNode(lastAstNode.children);\n        }\n        return lastAstNode.hasViewContainer;\n    }\n    return lastAstNode instanceof NgContentAst;\n}\n/**\n * @param {?} lifecycleHook\n * @return {?}\n */\nfunction lifecycleHookToNodeFlag(lifecycleHook) {\n    var /** @type {?} */ nodeFlag = 0;\n    switch (lifecycleHook) {\n        case ɵLifecycleHooks.AfterContentChecked:\n            nodeFlag = 1048576 /* AfterContentChecked */;\n            break;\n        case ɵLifecycleHooks.AfterContentInit:\n            nodeFlag = 524288 /* AfterContentInit */;\n            break;\n        case ɵLifecycleHooks.AfterViewChecked:\n            nodeFlag = 4194304 /* AfterViewChecked */;\n            break;\n        case ɵLifecycleHooks.AfterViewInit:\n            nodeFlag = 2097152 /* AfterViewInit */;\n            break;\n        case ɵLifecycleHooks.DoCheck:\n            nodeFlag = 131072 /* DoCheck */;\n            break;\n        case ɵLifecycleHooks.OnChanges:\n            nodeFlag = 262144 /* OnChanges */;\n            break;\n        case ɵLifecycleHooks.OnDestroy:\n            nodeFlag = 65536 /* OnDestroy */;\n            break;\n        case ɵLifecycleHooks.OnInit:\n            nodeFlag = 32768 /* OnInit */;\n            break;\n    }\n    return nodeFlag;\n}\n/**\n * @param {?} inputAst\n * @param {?} dirAst\n * @return {?}\n */\nfunction elementBindingDef(inputAst, dirAst) {\n    switch (inputAst.type) {\n        case PropertyBindingType.Attribute:\n            return literalArr([\n                literal(1 /* TypeElementAttribute */), literal(inputAst.name),\n                literal(inputAst.securityContext)\n            ]);\n        case PropertyBindingType.Property:\n            return literalArr([\n                literal(8 /* TypeProperty */), literal(inputAst.name),\n                literal(inputAst.securityContext)\n            ]);\n        case PropertyBindingType.Animation:\n            var /** @type {?} */ bindingType = 8 /* TypeProperty */ |\n                (dirAst && dirAst.directive.isComponent ? 32 /* SyntheticHostProperty */ :\n                    16 /* SyntheticProperty */);\n            return literalArr([\n                literal(bindingType), literal('@' + inputAst.name), literal(inputAst.securityContext)\n            ]);\n        case PropertyBindingType.Class:\n            return literalArr([literal(2 /* TypeElementClass */), literal(inputAst.name), NULL_EXPR]);\n        case PropertyBindingType.Style:\n            return literalArr([\n                literal(4 /* TypeElementStyle */), literal(inputAst.name), literal(inputAst.unit)\n            ]);\n    }\n}\n/**\n * @param {?} elementAst\n * @return {?}\n */\nfunction fixedAttrsDef(elementAst) {\n    var /** @type {?} */ mapResult = Object.create(null);\n    elementAst.attrs.forEach(function (attrAst) { mapResult[attrAst.name] = attrAst.value; });\n    elementAst.directives.forEach(function (dirAst) {\n        Object.keys(dirAst.directive.hostAttributes).forEach(function (name) {\n            var /** @type {?} */ value = dirAst.directive.hostAttributes[name];\n            var /** @type {?} */ prevValue = mapResult[name];\n            mapResult[name] = prevValue != null ? mergeAttributeValue(name, prevValue, value) : value;\n        });\n    });\n    var /** @type {?} */ mapEntries = [];\n    // Note: We need to sort to get a defined output order\n    // for tests and for caching generated artifacts...\n    return literalArr(Object.keys(mapResult).sort().map(function (attrName) { return literalArr([literal(attrName), literal(mapResult[attrName])]); }));\n}\n/**\n * @param {?} attrName\n * @param {?} attrValue1\n * @param {?} attrValue2\n * @return {?}\n */\nfunction mergeAttributeValue(attrName, attrValue1, attrValue2) {\n    if (attrName == CLASS_ATTR$1 || attrName == STYLE_ATTR) {\n        return attrValue1 + \" \" + attrValue2;\n    }\n    else {\n        return attrValue2;\n    }\n}\n/**\n * @param {?} nodeIndex\n * @param {?} exprs\n * @return {?}\n */\nfunction callCheckStmt(nodeIndex, exprs) {\n    if (exprs.length > 10) {\n        return CHECK_VAR.callFn([VIEW_VAR, literal(nodeIndex), literal(1 /* Dynamic */), literalArr(exprs)]);\n    }\n    else {\n        return CHECK_VAR.callFn([VIEW_VAR, literal(nodeIndex), literal(0 /* Inline */)].concat(exprs));\n    }\n}\n/**\n * @param {?} nodeIndex\n * @param {?} bindingIdx\n * @param {?} expr\n * @return {?}\n */\nfunction callUnwrapValue(nodeIndex, bindingIdx, expr) {\n    return importExpr(createIdentifier(Identifiers.unwrapValue)).callFn([\n        VIEW_VAR, literal(nodeIndex), literal(bindingIdx), expr\n    ]);\n}\n/**\n * @param {?} nodes\n * @param {?=} result\n * @return {?}\n */\nfunction findStaticQueryIds(nodes, result) {\n    if (result === void 0) { result = new Map(); }\n    nodes.forEach(function (node) {\n        var /** @type {?} */ staticQueryIds = new Set();\n        var /** @type {?} */ dynamicQueryIds = new Set();\n        var /** @type {?} */ queryMatches;\n        if (node instanceof ElementAst) {\n            findStaticQueryIds(node.children, result);\n            node.children.forEach(function (child) {\n                var /** @type {?} */ childData = result.get(child);\n                childData.staticQueryIds.forEach(function (queryId) { return staticQueryIds.add(queryId); });\n                childData.dynamicQueryIds.forEach(function (queryId) { return dynamicQueryIds.add(queryId); });\n            });\n            queryMatches = node.queryMatches;\n        }\n        else if (node instanceof EmbeddedTemplateAst) {\n            findStaticQueryIds(node.children, result);\n            node.children.forEach(function (child) {\n                var /** @type {?} */ childData = result.get(child);\n                childData.staticQueryIds.forEach(function (queryId) { return dynamicQueryIds.add(queryId); });\n                childData.dynamicQueryIds.forEach(function (queryId) { return dynamicQueryIds.add(queryId); });\n            });\n            queryMatches = node.queryMatches;\n        }\n        if (queryMatches) {\n            queryMatches.forEach(function (match) { return staticQueryIds.add(match.queryId); });\n        }\n        dynamicQueryIds.forEach(function (queryId) { return staticQueryIds.delete(queryId); });\n        result.set(node, { staticQueryIds: staticQueryIds, dynamicQueryIds: dynamicQueryIds });\n    });\n    return result;\n}\n/**\n * @param {?} nodeStaticQueryIds\n * @return {?}\n */\nfunction staticViewQueryIds(nodeStaticQueryIds) {\n    var /** @type {?} */ staticQueryIds = new Set();\n    var /** @type {?} */ dynamicQueryIds = new Set();\n    Array.from(nodeStaticQueryIds.values()).forEach(function (entry) {\n        entry.staticQueryIds.forEach(function (queryId) { return staticQueryIds.add(queryId); });\n        entry.dynamicQueryIds.forEach(function (queryId) { return dynamicQueryIds.add(queryId); });\n    });\n    dynamicQueryIds.forEach(function (queryId) { return staticQueryIds.delete(queryId); });\n    return { staticQueryIds: staticQueryIds, dynamicQueryIds: dynamicQueryIds };\n}\n/**\n * @param {?} directives\n * @return {?}\n */\nfunction createComponentFactoryResolver(directives) {\n    var /** @type {?} */ componentDirMeta = directives.find(function (dirAst) { return dirAst.directive.isComponent; });\n    if (componentDirMeta && componentDirMeta.directive.entryComponents.length) {\n        var /** @type {?} */ entryComponentFactories = componentDirMeta.directive.entryComponents.map(function (entryComponent) { return importExpr({ reference: entryComponent.componentFactory }); });\n        var /** @type {?} */ token = createIdentifierToken(Identifiers.ComponentFactoryResolver);\n        var /** @type {?} */ classMeta = {\n            diDeps: [\n                { isValue: true, value: literalArr(entryComponentFactories) },\n                { token: token, isSkipSelf: true, isOptional: true },\n                { token: createIdentifierToken(Identifiers.NgModuleRef) },\n            ],\n            lifecycleHooks: [],\n            reference: resolveIdentifier(Identifiers.CodegenComponentFactoryResolver)\n        };\n        return new ProviderAst(token, false, true, [{ token: token, multi: false, useClass: classMeta }], ProviderAstType.PrivateService, [], componentDirMeta.sourceSpan);\n    }\n    return null;\n}\n/**\n * @param {?} eventAst\n * @param {?} dirAst\n * @return {?}\n */\nfunction elementEventNameAndTarget(eventAst, dirAst) {\n    if (eventAst.isAnimation) {\n        return {\n            name: \"@\" + eventAst.name + \".\" + eventAst.phase,\n            target: dirAst && dirAst.directive.isComponent ? 'component' : null\n        };\n    }\n    else {\n        return eventAst;\n    }\n}\n/**\n * @param {?} queryIds\n * @param {?} queryId\n * @param {?} isFirst\n * @return {?}\n */\nfunction calcStaticDynamicQueryFlags(queryIds, queryId, isFirst) {\n    var /** @type {?} */ flags = 0;\n    // Note: We only make queries static that query for a single item.\n    // This is because of backwards compatibility with the old view compiler...\n    if (isFirst && (queryIds.staticQueryIds.has(queryId) || !queryIds.dynamicQueryIds.has(queryId))) {\n        flags |= 134217728 /* StaticQuery */;\n    }\n    else {\n        flags |= 268435456 /* DynamicQuery */;\n    }\n    return flags;\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar GeneratedFile = (function () {\n    /**\n     * @param {?} srcFileUrl\n     * @param {?} genFileUrl\n     * @param {?} source\n     */\n    function GeneratedFile(srcFileUrl, genFileUrl, source) {\n        this.srcFileUrl = srcFileUrl;\n        this.genFileUrl = genFileUrl;\n        this.source = source;\n    }\n    return GeneratedFile;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @param {?} summaryResolver\n * @param {?} symbolResolver\n * @param {?} symbols\n * @param {?} types\n * @return {?}\n */\nfunction serializeSummaries(summaryResolver, symbolResolver, symbols, types) {\n    var /** @type {?} */ serializer = new Serializer$1(symbolResolver, summaryResolver);\n    // for symbols, we use everything except for the class metadata itself\n    // (we keep the statics though), as the class metadata is contained in the\n    // CompileTypeSummary.\n    symbols.forEach(function (resolvedSymbol) { return serializer.addOrMergeSummary({ symbol: resolvedSymbol.symbol, metadata: resolvedSymbol.metadata }); });\n    // Add summaries that are referenced by the given symbols (transitively)\n    // Note: the serializer.symbols array might be growing while\n    // we execute the loop!\n    for (var /** @type {?} */ processedIndex = 0; processedIndex < serializer.symbols.length; processedIndex++) {\n        var /** @type {?} */ symbol = serializer.symbols[processedIndex];\n        if (summaryResolver.isLibraryFile(symbol.filePath)) {\n            var /** @type {?} */ summary = summaryResolver.resolveSummary(symbol);\n            if (!summary) {\n                // some symbols might originate from a plain typescript library\n                // that just exported .d.ts and .metadata.json files, i.e. where no summary\n                // files were created.\n                var /** @type {?} */ resolvedSymbol = symbolResolver.resolveSymbol(symbol);\n                if (resolvedSymbol) {\n                    summary = { symbol: resolvedSymbol.symbol, metadata: resolvedSymbol.metadata };\n                }\n            }\n            if (summary) {\n                serializer.addOrMergeSummary(summary);\n            }\n        }\n    }\n    // Add type summaries.\n    // Note: We don't add the summaries of all referenced symbols as for the ResolvedSymbols,\n    // as the type summaries already contain the transitive data that they require\n    // (in a minimal way).\n    types.forEach(function (typeSummary) {\n        serializer.addOrMergeSummary({ symbol: typeSummary.type.reference, metadata: null, type: typeSummary });\n        if (typeSummary.summaryKind === CompileSummaryKind.NgModule) {\n            var /** @type {?} */ ngModuleSummary = (typeSummary);\n            ngModuleSummary.exportedDirectives.concat(ngModuleSummary.exportedPipes).forEach(function (id) {\n                var /** @type {?} */ symbol = id.reference;\n                if (summaryResolver.isLibraryFile(symbol.filePath)) {\n                    var /** @type {?} */ summary = summaryResolver.resolveSummary(symbol);\n                    if (summary) {\n                        serializer.addOrMergeSummary(summary);\n                    }\n                }\n            });\n        }\n    });\n    return serializer.serialize();\n}\n/**\n * @param {?} symbolCache\n * @param {?} json\n * @return {?}\n */\nfunction deserializeSummaries(symbolCache, json) {\n    var /** @type {?} */ deserializer = new Deserializer(symbolCache);\n    return deserializer.deserialize(json);\n}\nvar Serializer$1 = (function (_super) {\n    __extends(Serializer$1, _super);\n    /**\n     * @param {?} symbolResolver\n     * @param {?} summaryResolver\n     */\n    function Serializer$1(symbolResolver, summaryResolver) {\n        var _this = _super.call(this) || this;\n        _this.symbolResolver = symbolResolver;\n        _this.summaryResolver = summaryResolver;\n        // Note: This only contains symbols without members.\n        _this.symbols = [];\n        _this.indexBySymbol = new Map();\n        _this.processedSummaryBySymbol = new Map();\n        _this.processedSummaries = [];\n        return _this;\n    }\n    /**\n     * @param {?} summary\n     * @return {?}\n     */\n    Serializer$1.prototype.addOrMergeSummary = function (summary) {\n        var /** @type {?} */ symbolMeta = summary.metadata;\n        if (symbolMeta && symbolMeta.__symbolic === 'class') {\n            // For classes, we keep everything except their class decorators.\n            // We need to keep e.g. the ctor args, method names, method decorators\n            // so that the class can be extended in another compilation unit.\n            // We don't keep the class decorators as\n            // 1) they refer to data\n            //   that should not cause a rebuild of downstream compilation units\n            //   (e.g. inline templates of @Component, or @NgModule.declarations)\n            // 2) their data is already captured in TypeSummaries, e.g. DirectiveSummary.\n            var /** @type {?} */ clone_1 = {};\n            Object.keys(symbolMeta).forEach(function (propName) {\n                if (propName !== 'decorators') {\n                    clone_1[propName] = symbolMeta[propName];\n                }\n            });\n            symbolMeta = clone_1;\n        }\n        var /** @type {?} */ processedSummary = this.processedSummaryBySymbol.get(summary.symbol);\n        if (!processedSummary) {\n            processedSummary = this.processValue({ symbol: summary.symbol });\n            this.processedSummaries.push(processedSummary);\n            this.processedSummaryBySymbol.set(summary.symbol, processedSummary);\n        }\n        // Note: == on purpose to compare with undefined!\n        if (processedSummary.metadata == null && symbolMeta != null) {\n            processedSummary.metadata = this.processValue(symbolMeta);\n        }\n        // Note: == on purpose to compare with undefined!\n        if (processedSummary.type == null && summary.type != null) {\n            processedSummary.type = this.processValue(summary.type);\n        }\n    };\n    /**\n     * @return {?}\n     */\n    Serializer$1.prototype.serialize = function () {\n        var _this = this;\n        var /** @type {?} */ exportAs = [];\n        var /** @type {?} */ json = JSON.stringify({\n            summaries: this.processedSummaries,\n            symbols: this.symbols.map(function (symbol, index) {\n                symbol.assertNoMembers();\n                var /** @type {?} */ importAs;\n                if (_this.summaryResolver.isLibraryFile(symbol.filePath)) {\n                    importAs = symbol.name + \"_\" + index;\n                    exportAs.push({ symbol: symbol, exportAs: importAs });\n                }\n                return {\n                    __symbol: index,\n                    name: symbol.name,\n                    // We convert the source filenames tinto output filenames,\n                    // as the generated summary file will be used when teh current\n                    // compilation unit is used as a library\n                    filePath: _this.summaryResolver.getLibraryFileName(symbol.filePath),\n                    importAs: importAs\n                };\n            })\n        });\n        return { json: json, exportAs: exportAs };\n    };\n    /**\n     * @param {?} value\n     * @return {?}\n     */\n    Serializer$1.prototype.processValue = function (value) { return visitValue(value, this, null); };\n    /**\n     * @param {?} value\n     * @param {?} context\n     * @return {?}\n     */\n    Serializer$1.prototype.visitOther = function (value, context) {\n        if (value instanceof StaticSymbol) {\n            var /** @type {?} */ baseSymbol = this.symbolResolver.getStaticSymbol(value.filePath, value.name);\n            var /** @type {?} */ index = this.indexBySymbol.get(baseSymbol);\n            // Note: == on purpose to compare with undefined!\n            if (index == null) {\n                index = this.indexBySymbol.size;\n                this.indexBySymbol.set(baseSymbol, index);\n                this.symbols.push(baseSymbol);\n            }\n            return { __symbol: index, members: value.members };\n        }\n    };\n    return Serializer$1;\n}(ValueTransformer));\nvar Deserializer = (function (_super) {\n    __extends(Deserializer, _super);\n    /**\n     * @param {?} symbolCache\n     */\n    function Deserializer(symbolCache) {\n        var _this = _super.call(this) || this;\n        _this.symbolCache = symbolCache;\n        return _this;\n    }\n    /**\n     * @param {?} json\n     * @return {?}\n     */\n    Deserializer.prototype.deserialize = function (json) {\n        var _this = this;\n        var /** @type {?} */ data = JSON.parse(json);\n        var /** @type {?} */ importAs = [];\n        this.symbols = [];\n        data.symbols.forEach(function (serializedSymbol) {\n            var /** @type {?} */ symbol = _this.symbolCache.get(serializedSymbol.filePath, serializedSymbol.name);\n            _this.symbols.push(symbol);\n            if (serializedSymbol.importAs) {\n                importAs.push({ symbol: symbol, importAs: serializedSymbol.importAs });\n            }\n        });\n        var /** @type {?} */ summaries = visitValue(data.summaries, this, null);\n        return { summaries: summaries, importAs: importAs };\n    };\n    /**\n     * @param {?} map\n     * @param {?} context\n     * @return {?}\n     */\n    Deserializer.prototype.visitStringMap = function (map, context) {\n        if ('__symbol' in map) {\n            var /** @type {?} */ baseSymbol = this.symbols[map['__symbol']];\n            var /** @type {?} */ members = map['members'];\n            return members.length ? this.symbolCache.get(baseSymbol.filePath, baseSymbol.name, members) :\n                baseSymbol;\n        }\n        else {\n            return _super.prototype.visitStringMap.call(this, map, context);\n        }\n    };\n    return Deserializer;\n}(ValueTransformer));\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar AotCompiler = (function () {\n    /**\n     * @param {?} _config\n     * @param {?} _host\n     * @param {?} _metadataResolver\n     * @param {?} _templateParser\n     * @param {?} _styleCompiler\n     * @param {?} _viewCompiler\n     * @param {?} _ngModuleCompiler\n     * @param {?} _outputEmitter\n     * @param {?} _summaryResolver\n     * @param {?} _localeId\n     * @param {?} _translationFormat\n     * @param {?} _genFilePreamble\n     * @param {?} _symbolResolver\n     */\n    function AotCompiler(_config, _host, _metadataResolver, _templateParser, _styleCompiler, _viewCompiler, _ngModuleCompiler, _outputEmitter, _summaryResolver, _localeId, _translationFormat, _genFilePreamble, _symbolResolver) {\n        this._config = _config;\n        this._host = _host;\n        this._metadataResolver = _metadataResolver;\n        this._templateParser = _templateParser;\n        this._styleCompiler = _styleCompiler;\n        this._viewCompiler = _viewCompiler;\n        this._ngModuleCompiler = _ngModuleCompiler;\n        this._outputEmitter = _outputEmitter;\n        this._summaryResolver = _summaryResolver;\n        this._localeId = _localeId;\n        this._translationFormat = _translationFormat;\n        this._genFilePreamble = _genFilePreamble;\n        this._symbolResolver = _symbolResolver;\n    }\n    /**\n     * @return {?}\n     */\n    AotCompiler.prototype.clearCache = function () { this._metadataResolver.clearCache(); };\n    /**\n     * @param {?} rootFiles\n     * @return {?}\n     */\n    AotCompiler.prototype.compileAll = function (rootFiles) {\n        var _this = this;\n        var /** @type {?} */ programSymbols = extractProgramSymbols(this._symbolResolver, rootFiles, this._host);\n        var _a = analyzeAndValidateNgModules(programSymbols, this._host, this._metadataResolver), ngModuleByPipeOrDirective = _a.ngModuleByPipeOrDirective, files = _a.files, ngModules = _a.ngModules;\n        return Promise\n            .all(ngModules.map(function (ngModule) { return _this._metadataResolver.loadNgModuleDirectiveAndPipeMetadata(ngModule.type.reference, false); }))\n            .then(function () {\n            var /** @type {?} */ sourceModules = files.map(function (file) { return _this._compileSrcFile(file.srcUrl, ngModuleByPipeOrDirective, file.directives, file.pipes, file.ngModules, file.injectables); });\n            return flatten(sourceModules);\n        });\n    };\n    /**\n     * @param {?} srcFileUrl\n     * @param {?} ngModuleByPipeOrDirective\n     * @param {?} directives\n     * @param {?} pipes\n     * @param {?} ngModules\n     * @param {?} injectables\n     * @return {?}\n     */\n    AotCompiler.prototype._compileSrcFile = function (srcFileUrl, ngModuleByPipeOrDirective, directives, pipes, ngModules, injectables) {\n        var _this = this;\n        var /** @type {?} */ fileSuffix = splitTypescriptSuffix(srcFileUrl)[1];\n        var /** @type {?} */ statements = [];\n        var /** @type {?} */ exportedVars = [];\n        var /** @type {?} */ generatedFiles = [];\n        generatedFiles.push(this._createSummary(srcFileUrl, directives, pipes, ngModules, injectables, statements, exportedVars));\n        // compile all ng modules\n        exportedVars.push.apply(exportedVars, ngModules.map(function (ngModuleType) { return _this._compileModule(ngModuleType, statements); }));\n        // compile components\n        directives.forEach(function (dirType) {\n            var /** @type {?} */ compMeta = _this._metadataResolver.getDirectiveMetadata(/** @type {?} */ (dirType));\n            if (!compMeta.isComponent) {\n                return Promise.resolve(null);\n            }\n            var /** @type {?} */ ngModule = ngModuleByPipeOrDirective.get(dirType);\n            if (!ngModule) {\n                throw new Error(\"Internal Error: cannot determine the module for component \" + identifierName(compMeta.type) + \"!\");\n            }\n            _assertComponent(compMeta);\n            // compile styles\n            var /** @type {?} */ stylesCompileResults = _this._styleCompiler.compileComponent(compMeta);\n            stylesCompileResults.externalStylesheets.forEach(function (compiledStyleSheet) {\n                generatedFiles.push(_this._codgenStyles(srcFileUrl, compiledStyleSheet, fileSuffix));\n            });\n            // compile components\n            var /** @type {?} */ compViewVars = _this._compileComponent(compMeta, ngModule, ngModule.transitiveModule.directives, stylesCompileResults.componentStylesheet, fileSuffix, statements);\n            exportedVars.push(_this._compileComponentFactory(compMeta, ngModule, fileSuffix, statements), compViewVars.viewClassVar, compViewVars.compRenderTypeVar);\n        });\n        if (statements.length > 0) {\n            var /** @type {?} */ srcModule = this._codegenSourceModule(srcFileUrl, ngfactoryFilePath(srcFileUrl), statements, exportedVars);\n            generatedFiles.unshift(srcModule);\n        }\n        return generatedFiles;\n    };\n    /**\n     * @param {?} srcFileUrl\n     * @param {?} directives\n     * @param {?} pipes\n     * @param {?} ngModules\n     * @param {?} injectables\n     * @param {?} targetStatements\n     * @param {?} targetExportedVars\n     * @return {?}\n     */\n    AotCompiler.prototype._createSummary = function (srcFileUrl, directives, pipes, ngModules, injectables, targetStatements, targetExportedVars) {\n        var _this = this;\n        var /** @type {?} */ symbolSummaries = this._symbolResolver.getSymbolsOf(srcFileUrl)\n            .map(function (symbol) { return _this._symbolResolver.resolveSymbol(symbol); });\n        var /** @type {?} */ typeSummaries = ngModules.map(function (ref) { return _this._metadataResolver.getNgModuleSummary(ref); }).concat(directives.map(function (ref) { return _this._metadataResolver.getDirectiveSummary(ref); }), pipes.map(function (ref) { return _this._metadataResolver.getPipeSummary(ref); }), injectables.map(function (ref) { return _this._metadataResolver.getInjectableSummary(ref); }));\n        var _a = serializeSummaries(this._summaryResolver, this._symbolResolver, symbolSummaries, typeSummaries), json = _a.json, exportAs = _a.exportAs;\n        exportAs.forEach(function (entry) {\n            targetStatements.push(variable(entry.exportAs).set(importExpr({ reference: entry.symbol })).toDeclStmt());\n            targetExportedVars.push(entry.exportAs);\n        });\n        return new GeneratedFile(srcFileUrl, summaryFileName(srcFileUrl), json);\n    };\n    /**\n     * @param {?} ngModuleType\n     * @param {?} targetStatements\n     * @return {?}\n     */\n    AotCompiler.prototype._compileModule = function (ngModuleType, targetStatements) {\n        var /** @type {?} */ ngModule = this._metadataResolver.getNgModuleMetadata(ngModuleType);\n        var /** @type {?} */ providers = [];\n        if (this._localeId) {\n            providers.push({\n                token: createIdentifierToken(Identifiers.LOCALE_ID),\n                useValue: this._localeId,\n            });\n        }\n        if (this._translationFormat) {\n            providers.push({\n                token: createIdentifierToken(Identifiers.TRANSLATIONS_FORMAT),\n                useValue: this._translationFormat\n            });\n        }\n        var /** @type {?} */ appCompileResult = this._ngModuleCompiler.compile(ngModule, providers);\n        targetStatements.push.apply(targetStatements, appCompileResult.statements);\n        return appCompileResult.ngModuleFactoryVar;\n    };\n    /**\n     * @param {?} compMeta\n     * @param {?} ngModule\n     * @param {?} fileSuffix\n     * @param {?} targetStatements\n     * @return {?}\n     */\n    AotCompiler.prototype._compileComponentFactory = function (compMeta, ngModule, fileSuffix, targetStatements) {\n        var /** @type {?} */ hostType = this._metadataResolver.getHostComponentType(compMeta.type.reference);\n        var /** @type {?} */ hostMeta = createHostComponentMeta(hostType, compMeta, this._metadataResolver.getHostComponentViewClass(hostType));\n        var /** @type {?} */ hostViewFactoryVar = this._compileComponent(hostMeta, ngModule, [compMeta.type], null, fileSuffix, targetStatements)\n            .viewClassVar;\n        var /** @type {?} */ compFactoryVar = componentFactoryName(compMeta.type.reference);\n        var /** @type {?} */ inputsExprs = [];\n        for (var /** @type {?} */ propName in compMeta.inputs) {\n            var /** @type {?} */ templateName = compMeta.inputs[propName];\n            // Don't quote so that the key gets minified...\n            inputsExprs.push(new LiteralMapEntry(propName, literal(templateName), false));\n        }\n        var /** @type {?} */ outputsExprs = [];\n        for (var /** @type {?} */ propName in compMeta.outputs) {\n            var /** @type {?} */ templateName = compMeta.outputs[propName];\n            // Don't quote so that the key gets minified...\n            outputsExprs.push(new LiteralMapEntry(propName, literal(templateName), false));\n        }\n        targetStatements.push(variable(compFactoryVar)\n            .set(importExpr(createIdentifier(Identifiers.createComponentFactory)).callFn([\n            literal(compMeta.selector), importExpr(compMeta.type),\n            variable(hostViewFactoryVar), new LiteralMapExpr(inputsExprs),\n            new LiteralMapExpr(outputsExprs),\n            literalArr(compMeta.template.ngContentSelectors.map(function (selector) { return literal(selector); }))\n        ]))\n            .toDeclStmt(importType(createIdentifier(Identifiers.ComponentFactory), [importType(compMeta.type)], [TypeModifier.Const]), [StmtModifier.Final]));\n        return compFactoryVar;\n    };\n    /**\n     * @param {?} compMeta\n     * @param {?} ngModule\n     * @param {?} directiveIdentifiers\n     * @param {?} componentStyles\n     * @param {?} fileSuffix\n     * @param {?} targetStatements\n     * @return {?}\n     */\n    AotCompiler.prototype._compileComponent = function (compMeta, ngModule, directiveIdentifiers, componentStyles, fileSuffix, targetStatements) {\n        var _this = this;\n        var /** @type {?} */ directives = directiveIdentifiers.map(function (dir) { return _this._metadataResolver.getDirectiveSummary(dir.reference); });\n        var /** @type {?} */ pipes = ngModule.transitiveModule.pipes.map(function (pipe) { return _this._metadataResolver.getPipeSummary(pipe.reference); });\n        var _a = this._templateParser.parse(compMeta, compMeta.template.template, directives, pipes, ngModule.schemas, templateSourceUrl(ngModule.type, compMeta, compMeta.template)), parsedTemplate = _a.template, usedPipes = _a.pipes;\n        var /** @type {?} */ stylesExpr = componentStyles ? variable(componentStyles.stylesVar) : literalArr([]);\n        var /** @type {?} */ viewResult = this._viewCompiler.compileComponent(compMeta, parsedTemplate, stylesExpr, usedPipes);\n        if (componentStyles) {\n            targetStatements.push.apply(targetStatements, _resolveStyleStatements(this._symbolResolver, componentStyles, fileSuffix));\n        }\n        targetStatements.push.apply(targetStatements, viewResult.statements);\n        return { viewClassVar: viewResult.viewClassVar, compRenderTypeVar: viewResult.rendererTypeVar };\n    };\n    /**\n     * @param {?} fileUrl\n     * @param {?} stylesCompileResult\n     * @param {?} fileSuffix\n     * @return {?}\n     */\n    AotCompiler.prototype._codgenStyles = function (fileUrl, stylesCompileResult, fileSuffix) {\n        _resolveStyleStatements(this._symbolResolver, stylesCompileResult, fileSuffix);\n        return this._codegenSourceModule(fileUrl, _stylesModuleUrl(stylesCompileResult.meta.moduleUrl, stylesCompileResult.isShimmed, fileSuffix), stylesCompileResult.statements, [stylesCompileResult.stylesVar]);\n    };\n    /**\n     * @param {?} srcFileUrl\n     * @param {?} genFileUrl\n     * @param {?} statements\n     * @param {?} exportedVars\n     * @return {?}\n     */\n    AotCompiler.prototype._codegenSourceModule = function (srcFileUrl, genFileUrl, statements, exportedVars) {\n        return new GeneratedFile(srcFileUrl, genFileUrl, this._outputEmitter.emitStatements(sourceUrl(srcFileUrl), genFileUrl, statements, exportedVars, this._genFilePreamble));\n    };\n    return AotCompiler;\n}());\n/**\n * @param {?} reflector\n * @param {?} compileResult\n * @param {?} fileSuffix\n * @return {?}\n */\nfunction _resolveStyleStatements(reflector, compileResult, fileSuffix) {\n    compileResult.dependencies.forEach(function (dep) {\n        dep.valuePlaceholder.reference = reflector.getStaticSymbol(_stylesModuleUrl(dep.moduleUrl, dep.isShimmed, fileSuffix), dep.name);\n    });\n    return compileResult.statements;\n}\n/**\n * @param {?} stylesheetUrl\n * @param {?} shim\n * @param {?} suffix\n * @return {?}\n */\nfunction _stylesModuleUrl(stylesheetUrl, shim, suffix) {\n    return \"\" + stylesheetUrl + (shim ? '.shim' : '') + \".ngstyle\" + suffix;\n}\n/**\n * @param {?} meta\n * @return {?}\n */\nfunction _assertComponent(meta) {\n    if (!meta.isComponent) {\n        throw new Error(\"Could not compile '\" + identifierName(meta.type) + \"' because it is not a component.\");\n    }\n}\n/**\n * @param {?} programStaticSymbols\n * @param {?} host\n * @param {?} metadataResolver\n * @return {?}\n */\nfunction analyzeNgModules(programStaticSymbols, host, metadataResolver) {\n    var _a = _createNgModules(programStaticSymbols, host, metadataResolver), ngModules = _a.ngModules, symbolsMissingModule = _a.symbolsMissingModule;\n    return _analyzeNgModules(programStaticSymbols, ngModules, symbolsMissingModule, metadataResolver);\n}\n/**\n * @param {?} programStaticSymbols\n * @param {?} host\n * @param {?} metadataResolver\n * @return {?}\n */\nfunction analyzeAndValidateNgModules(programStaticSymbols, host, metadataResolver) {\n    var /** @type {?} */ result = analyzeNgModules(programStaticSymbols, host, metadataResolver);\n    if (result.symbolsMissingModule && result.symbolsMissingModule.length) {\n        var /** @type {?} */ messages = result.symbolsMissingModule.map(function (s) { return \"Cannot determine the module for class \" + s.name + \" in \" + s.filePath + \"! Add \" + s.name + \" to the NgModule to fix it.\"; });\n        throw syntaxError(messages.join('\\n'));\n    }\n    return result;\n}\n/**\n * @param {?} programSymbols\n * @param {?} ngModuleMetas\n * @param {?} symbolsMissingModule\n * @param {?} metadataResolver\n * @return {?}\n */\nfunction _analyzeNgModules(programSymbols, ngModuleMetas, symbolsMissingModule, metadataResolver) {\n    var /** @type {?} */ moduleMetasByRef = new Map();\n    ngModuleMetas.forEach(function (ngModule) { return moduleMetasByRef.set(ngModule.type.reference, ngModule); });\n    var /** @type {?} */ ngModuleByPipeOrDirective = new Map();\n    var /** @type {?} */ ngModulesByFile = new Map();\n    var /** @type {?} */ ngDirectivesByFile = new Map();\n    var /** @type {?} */ ngPipesByFile = new Map();\n    var /** @type {?} */ ngInjectablesByFile = new Map();\n    var /** @type {?} */ filePaths = new Set();\n    // Make sure we produce an analyzed file for each input file\n    programSymbols.forEach(function (symbol) {\n        var /** @type {?} */ filePath = symbol.filePath;\n        filePaths.add(filePath);\n        if (metadataResolver.isInjectable(symbol)) {\n            ngInjectablesByFile.set(filePath, (ngInjectablesByFile.get(filePath) || []).concat(symbol));\n        }\n    });\n    // Looping over all modules to construct:\n    // - a map from file to modules `ngModulesByFile`,\n    // - a map from file to directives `ngDirectivesByFile`,\n    // - a map from file to pipes `ngPipesByFile`,\n    // - a map from directive/pipe to module `ngModuleByPipeOrDirective`.\n    ngModuleMetas.forEach(function (ngModuleMeta) {\n        var /** @type {?} */ srcFileUrl = ngModuleMeta.type.reference.filePath;\n        filePaths.add(srcFileUrl);\n        ngModulesByFile.set(srcFileUrl, (ngModulesByFile.get(srcFileUrl) || []).concat(ngModuleMeta.type.reference));\n        ngModuleMeta.declaredDirectives.forEach(function (dirIdentifier) {\n            var /** @type {?} */ fileUrl = dirIdentifier.reference.filePath;\n            filePaths.add(fileUrl);\n            ngDirectivesByFile.set(fileUrl, (ngDirectivesByFile.get(fileUrl) || []).concat(dirIdentifier.reference));\n            ngModuleByPipeOrDirective.set(dirIdentifier.reference, ngModuleMeta);\n        });\n        ngModuleMeta.declaredPipes.forEach(function (pipeIdentifier) {\n            var /** @type {?} */ fileUrl = pipeIdentifier.reference.filePath;\n            filePaths.add(fileUrl);\n            ngPipesByFile.set(fileUrl, (ngPipesByFile.get(fileUrl) || []).concat(pipeIdentifier.reference));\n            ngModuleByPipeOrDirective.set(pipeIdentifier.reference, ngModuleMeta);\n        });\n    });\n    var /** @type {?} */ files = [];\n    filePaths.forEach(function (srcUrl) {\n        var /** @type {?} */ directives = ngDirectivesByFile.get(srcUrl) || [];\n        var /** @type {?} */ pipes = ngPipesByFile.get(srcUrl) || [];\n        var /** @type {?} */ ngModules = ngModulesByFile.get(srcUrl) || [];\n        var /** @type {?} */ injectables = ngInjectablesByFile.get(srcUrl) || [];\n        files.push({ srcUrl: srcUrl, directives: directives, pipes: pipes, ngModules: ngModules, injectables: injectables });\n    });\n    return {\n        // map directive/pipe to module\n        ngModuleByPipeOrDirective: ngModuleByPipeOrDirective,\n        // list modules and directives for every source file\n        files: files,\n        ngModules: ngModuleMetas, symbolsMissingModule: symbolsMissingModule\n    };\n}\n/**\n * @param {?} staticSymbolResolver\n * @param {?} files\n * @param {?} host\n * @return {?}\n */\nfunction extractProgramSymbols(staticSymbolResolver, files, host) {\n    var /** @type {?} */ staticSymbols = [];\n    files.filter(function (fileName) { return host.isSourceFile(fileName); }).forEach(function (sourceFile) {\n        staticSymbolResolver.getSymbolsOf(sourceFile).forEach(function (symbol) {\n            var /** @type {?} */ resolvedSymbol = staticSymbolResolver.resolveSymbol(symbol);\n            var /** @type {?} */ symbolMeta = resolvedSymbol.metadata;\n            if (symbolMeta) {\n                if (symbolMeta.__symbolic != 'error') {\n                    // Ignore symbols that are only included to record error information.\n                    staticSymbols.push(resolvedSymbol.symbol);\n                }\n            }\n        });\n    });\n    return staticSymbols;\n}\n/**\n * @param {?} programStaticSymbols\n * @param {?} host\n * @param {?} metadataResolver\n * @return {?}\n */\nfunction _createNgModules(programStaticSymbols, host, metadataResolver) {\n    var /** @type {?} */ ngModules = new Map();\n    var /** @type {?} */ programPipesAndDirectives = [];\n    var /** @type {?} */ ngModulePipesAndDirective = new Set();\n    var /** @type {?} */ addNgModule = function (staticSymbol) {\n        if (ngModules.has(staticSymbol) || !host.isSourceFile(staticSymbol.filePath)) {\n            return false;\n        }\n        var /** @type {?} */ ngModule = metadataResolver.getNgModuleMetadata(staticSymbol, false);\n        if (ngModule) {\n            ngModules.set(ngModule.type.reference, ngModule);\n            ngModule.declaredDirectives.forEach(function (dir) { return ngModulePipesAndDirective.add(dir.reference); });\n            ngModule.declaredPipes.forEach(function (pipe) { return ngModulePipesAndDirective.add(pipe.reference); });\n            // For every input module add the list of transitively included modules\n            ngModule.transitiveModule.modules.forEach(function (modMeta) { return addNgModule(modMeta.reference); });\n        }\n        return !!ngModule;\n    };\n    programStaticSymbols.forEach(function (staticSymbol) {\n        if (!addNgModule(staticSymbol) &&\n            (metadataResolver.isDirective(staticSymbol) || metadataResolver.isPipe(staticSymbol))) {\n            programPipesAndDirectives.push(staticSymbol);\n        }\n    });\n    // Throw an error if any of the program pipe or directives is not declared by a module\n    var /** @type {?} */ symbolsMissingModule = programPipesAndDirectives.filter(function (s) { return !ngModulePipesAndDirective.has(s); });\n    return { ngModules: Array.from(ngModules.values()), symbolsMissingModule: symbolsMissingModule };\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar StaticAndDynamicReflectionCapabilities = (function () {\n    /**\n     * @param {?} staticDelegate\n     */\n    function StaticAndDynamicReflectionCapabilities(staticDelegate) {\n        this.staticDelegate = staticDelegate;\n        this.dynamicDelegate = new ɵReflectionCapabilities();\n    }\n    /**\n     * @param {?} staticDelegate\n     * @return {?}\n     */\n    StaticAndDynamicReflectionCapabilities.install = function (staticDelegate) {\n        ɵreflector.updateCapabilities(new StaticAndDynamicReflectionCapabilities(staticDelegate));\n    };\n    /**\n     * @return {?}\n     */\n    StaticAndDynamicReflectionCapabilities.prototype.isReflectionEnabled = function () { return true; };\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    StaticAndDynamicReflectionCapabilities.prototype.factory = function (type) { return this.dynamicDelegate.factory(type); };\n    /**\n     * @param {?} type\n     * @param {?} lcProperty\n     * @return {?}\n     */\n    StaticAndDynamicReflectionCapabilities.prototype.hasLifecycleHook = function (type, lcProperty) {\n        return isStaticType(type) ? this.staticDelegate.hasLifecycleHook(type, lcProperty) :\n            this.dynamicDelegate.hasLifecycleHook(type, lcProperty);\n    };\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    StaticAndDynamicReflectionCapabilities.prototype.parameters = function (type) {\n        return isStaticType(type) ? this.staticDelegate.parameters(type) :\n            this.dynamicDelegate.parameters(type);\n    };\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    StaticAndDynamicReflectionCapabilities.prototype.annotations = function (type) {\n        return isStaticType(type) ? this.staticDelegate.annotations(type) :\n            this.dynamicDelegate.annotations(type);\n    };\n    /**\n     * @param {?} typeOrFunc\n     * @return {?}\n     */\n    StaticAndDynamicReflectionCapabilities.prototype.propMetadata = function (typeOrFunc) {\n        return isStaticType(typeOrFunc) ? this.staticDelegate.propMetadata(typeOrFunc) :\n            this.dynamicDelegate.propMetadata(typeOrFunc);\n    };\n    /**\n     * @param {?} name\n     * @return {?}\n     */\n    StaticAndDynamicReflectionCapabilities.prototype.getter = function (name) { return this.dynamicDelegate.getter(name); };\n    /**\n     * @param {?} name\n     * @return {?}\n     */\n    StaticAndDynamicReflectionCapabilities.prototype.setter = function (name) { return this.dynamicDelegate.setter(name); };\n    /**\n     * @param {?} name\n     * @return {?}\n     */\n    StaticAndDynamicReflectionCapabilities.prototype.method = function (name) { return this.dynamicDelegate.method(name); };\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    StaticAndDynamicReflectionCapabilities.prototype.importUri = function (type) { return this.staticDelegate.importUri(type); };\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    StaticAndDynamicReflectionCapabilities.prototype.resourceUri = function (type) { return this.staticDelegate.resourceUri(type); };\n    /**\n     * @param {?} name\n     * @param {?} moduleUrl\n     * @param {?} members\n     * @param {?} runtime\n     * @return {?}\n     */\n    StaticAndDynamicReflectionCapabilities.prototype.resolveIdentifier = function (name, moduleUrl, members, runtime) {\n        return this.staticDelegate.resolveIdentifier(name, moduleUrl, members);\n    };\n    /**\n     * @param {?} enumIdentifier\n     * @param {?} name\n     * @return {?}\n     */\n    StaticAndDynamicReflectionCapabilities.prototype.resolveEnum = function (enumIdentifier, name) {\n        if (isStaticType(enumIdentifier)) {\n            return this.staticDelegate.resolveEnum(enumIdentifier, name);\n        }\n        else {\n            return null;\n        }\n    };\n    return StaticAndDynamicReflectionCapabilities;\n}());\n/**\n * @param {?} type\n * @return {?}\n */\nfunction isStaticType(type) {\n    return typeof type === 'object' && type.name && type.filePath;\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar ANGULAR_CORE = '@angular/core';\nvar HIDDEN_KEY = /^\\$.*\\$$/;\nvar IGNORE = {\n    __symbolic: 'ignore'\n};\n/**\n * @param {?} value\n * @return {?}\n */\nfunction shouldIgnore(value) {\n    return value && value.__symbolic == 'ignore';\n}\n/**\n * A static reflector implements enough of the Reflector API that is necessary to compile\n * templates statically.\n */\nvar StaticReflector = (function () {\n    /**\n     * @param {?} summaryResolver\n     * @param {?} symbolResolver\n     * @param {?=} knownMetadataClasses\n     * @param {?=} knownMetadataFunctions\n     * @param {?=} errorRecorder\n     */\n    function StaticReflector(summaryResolver, symbolResolver, knownMetadataClasses, knownMetadataFunctions, errorRecorder) {\n        if (knownMetadataClasses === void 0) { knownMetadataClasses = []; }\n        if (knownMetadataFunctions === void 0) { knownMetadataFunctions = []; }\n        var _this = this;\n        this.summaryResolver = summaryResolver;\n        this.symbolResolver = symbolResolver;\n        this.errorRecorder = errorRecorder;\n        this.annotationCache = new Map();\n        this.propertyCache = new Map();\n        this.parameterCache = new Map();\n        this.methodCache = new Map();\n        this.conversionMap = new Map();\n        this.annotationForParentClassWithSummaryKind = new Map();\n        this.annotationNames = new Map();\n        this.initializeConversionMap();\n        knownMetadataClasses.forEach(function (kc) { return _this._registerDecoratorOrConstructor(_this.getStaticSymbol(kc.filePath, kc.name), kc.ctor); });\n        knownMetadataFunctions.forEach(function (kf) { return _this._registerFunction(_this.getStaticSymbol(kf.filePath, kf.name), kf.fn); });\n        this.annotationForParentClassWithSummaryKind.set(CompileSummaryKind.Directive, [Directive, Component]);\n        this.annotationForParentClassWithSummaryKind.set(CompileSummaryKind.Pipe, [Pipe]);\n        this.annotationForParentClassWithSummaryKind.set(CompileSummaryKind.NgModule, [NgModule]);\n        this.annotationForParentClassWithSummaryKind.set(CompileSummaryKind.Injectable, [Injectable, Pipe, Directive, Component, NgModule]);\n        this.annotationNames.set(Directive, 'Directive');\n        this.annotationNames.set(Component, 'Component');\n        this.annotationNames.set(Pipe, 'Pipe');\n        this.annotationNames.set(NgModule, 'NgModule');\n        this.annotationNames.set(Injectable, 'Injectable');\n    }\n    /**\n     * @param {?} typeOrFunc\n     * @return {?}\n     */\n    StaticReflector.prototype.importUri = function (typeOrFunc) {\n        var /** @type {?} */ staticSymbol = this.findSymbolDeclaration(typeOrFunc);\n        return staticSymbol ? staticSymbol.filePath : null;\n    };\n    /**\n     * @param {?} typeOrFunc\n     * @return {?}\n     */\n    StaticReflector.prototype.resourceUri = function (typeOrFunc) {\n        var /** @type {?} */ staticSymbol = this.findSymbolDeclaration(typeOrFunc);\n        return this.symbolResolver.getResourcePath(staticSymbol);\n    };\n    /**\n     * @param {?} name\n     * @param {?} moduleUrl\n     * @param {?} members\n     * @return {?}\n     */\n    StaticReflector.prototype.resolveIdentifier = function (name, moduleUrl, members) {\n        var /** @type {?} */ importSymbol = this.getStaticSymbol(moduleUrl, name);\n        var /** @type {?} */ rootSymbol = this.findDeclaration(moduleUrl, name);\n        if (importSymbol != rootSymbol) {\n            this.symbolResolver.recordImportAs(rootSymbol, importSymbol);\n        }\n        if (members && members.length) {\n            return this.getStaticSymbol(rootSymbol.filePath, rootSymbol.name, members);\n        }\n        return rootSymbol;\n    };\n    /**\n     * @param {?} moduleUrl\n     * @param {?} name\n     * @param {?=} containingFile\n     * @return {?}\n     */\n    StaticReflector.prototype.findDeclaration = function (moduleUrl, name, containingFile) {\n        return this.findSymbolDeclaration(this.symbolResolver.getSymbolByModule(moduleUrl, name, containingFile));\n    };\n    /**\n     * @param {?} symbol\n     * @return {?}\n     */\n    StaticReflector.prototype.findSymbolDeclaration = function (symbol) {\n        var /** @type {?} */ resolvedSymbol = this.symbolResolver.resolveSymbol(symbol);\n        if (resolvedSymbol && resolvedSymbol.metadata instanceof StaticSymbol) {\n            return this.findSymbolDeclaration(resolvedSymbol.metadata);\n        }\n        else {\n            return symbol;\n        }\n    };\n    /**\n     * @param {?} enumIdentifier\n     * @param {?} name\n     * @return {?}\n     */\n    StaticReflector.prototype.resolveEnum = function (enumIdentifier, name) {\n        var /** @type {?} */ staticSymbol = enumIdentifier;\n        var /** @type {?} */ members = (staticSymbol.members || []).concat(name);\n        return this.getStaticSymbol(staticSymbol.filePath, staticSymbol.name, members);\n    };\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    StaticReflector.prototype.annotations = function (type) {\n        var _this = this;\n        var /** @type {?} */ annotations = this.annotationCache.get(type);\n        if (!annotations) {\n            annotations = [];\n            var /** @type {?} */ classMetadata = this.getTypeMetadata(type);\n            var /** @type {?} */ parentType = this.findParentType(type, classMetadata);\n            if (parentType) {\n                var /** @type {?} */ parentAnnotations = this.annotations(parentType);\n                annotations.push.apply(annotations, parentAnnotations);\n            }\n            var /** @type {?} */ ownAnnotations_1 = [];\n            if (classMetadata['decorators']) {\n                ownAnnotations_1 = this.simplify(type, classMetadata['decorators']);\n                annotations.push.apply(annotations, ownAnnotations_1);\n            }\n            if (parentType && !this.summaryResolver.isLibraryFile(type.filePath) &&\n                this.summaryResolver.isLibraryFile(parentType.filePath)) {\n                var /** @type {?} */ summary = this.summaryResolver.resolveSummary(parentType);\n                if (summary && summary.type) {\n                    var /** @type {?} */ requiredAnnotationTypes = this.annotationForParentClassWithSummaryKind.get(summary.type.summaryKind);\n                    var /** @type {?} */ typeHasRequiredAnnotation = requiredAnnotationTypes.some(function (requiredType) { return ownAnnotations_1.some(function (ann) { return ann instanceof requiredType; }); });\n                    if (!typeHasRequiredAnnotation) {\n                        this.reportError(syntaxError(\"Class \" + type.name + \" in \" + type.filePath + \" extends from a \" + CompileSummaryKind[summary.type.summaryKind] + \" in another compilation unit without duplicating the decorator. \" +\n                            (\"Please add a \" + requiredAnnotationTypes.map(function (type) { return _this.annotationNames.get(type); }).join(' or ') + \" decorator to the class.\")), type);\n                    }\n                }\n            }\n            this.annotationCache.set(type, annotations.filter(function (ann) { return !!ann; }));\n        }\n        return annotations;\n    };\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    StaticReflector.prototype.propMetadata = function (type) {\n        var _this = this;\n        var /** @type {?} */ propMetadata = this.propertyCache.get(type);\n        if (!propMetadata) {\n            var /** @type {?} */ classMetadata = this.getTypeMetadata(type);\n            propMetadata = {};\n            var /** @type {?} */ parentType = this.findParentType(type, classMetadata);\n            if (parentType) {\n                var /** @type {?} */ parentPropMetadata_1 = this.propMetadata(parentType);\n                Object.keys(parentPropMetadata_1).forEach(function (parentProp) {\n                    propMetadata[parentProp] = parentPropMetadata_1[parentProp];\n                });\n            }\n            var /** @type {?} */ members_1 = classMetadata['members'] || {};\n            Object.keys(members_1).forEach(function (propName) {\n                var /** @type {?} */ propData = members_1[propName];\n                var /** @type {?} */ prop = ((propData))\n                    .find(function (a) { return a['__symbolic'] == 'property' || a['__symbolic'] == 'method'; });\n                var /** @type {?} */ decorators = [];\n                if (propMetadata[propName]) {\n                    decorators.push.apply(decorators, propMetadata[propName]);\n                }\n                propMetadata[propName] = decorators;\n                if (prop && prop['decorators']) {\n                    decorators.push.apply(decorators, _this.simplify(type, prop['decorators']));\n                }\n            });\n            this.propertyCache.set(type, propMetadata);\n        }\n        return propMetadata;\n    };\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    StaticReflector.prototype.parameters = function (type) {\n        if (!(type instanceof StaticSymbol)) {\n            this.reportError(new Error(\"parameters received \" + JSON.stringify(type) + \" which is not a StaticSymbol\"), type);\n            return [];\n        }\n        try {\n            var /** @type {?} */ parameters_1 = this.parameterCache.get(type);\n            if (!parameters_1) {\n                var /** @type {?} */ classMetadata = this.getTypeMetadata(type);\n                var /** @type {?} */ parentType = this.findParentType(type, classMetadata);\n                var /** @type {?} */ members = classMetadata ? classMetadata['members'] : null;\n                var /** @type {?} */ ctorData = members ? members['__ctor__'] : null;\n                if (ctorData) {\n                    var /** @type {?} */ ctor = ((ctorData)).find(function (a) { return a['__symbolic'] == 'constructor'; });\n                    var /** @type {?} */ parameterTypes = (this.simplify(type, ctor['parameters'] || []));\n                    var /** @type {?} */ parameterDecorators_1 = (this.simplify(type, ctor['parameterDecorators'] || []));\n                    parameters_1 = [];\n                    parameterTypes.forEach(function (paramType, index) {\n                        var /** @type {?} */ nestedResult = [];\n                        if (paramType) {\n                            nestedResult.push(paramType);\n                        }\n                        var /** @type {?} */ decorators = parameterDecorators_1 ? parameterDecorators_1[index] : null;\n                        if (decorators) {\n                            nestedResult.push.apply(nestedResult, decorators);\n                        }\n                        parameters_1.push(nestedResult);\n                    });\n                }\n                else if (parentType) {\n                    parameters_1 = this.parameters(parentType);\n                }\n                if (!parameters_1) {\n                    parameters_1 = [];\n                }\n                this.parameterCache.set(type, parameters_1);\n            }\n            return parameters_1;\n        }\n        catch (e) {\n            console.error(\"Failed on type \" + JSON.stringify(type) + \" with error \" + e);\n            throw e;\n        }\n    };\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    StaticReflector.prototype._methodNames = function (type) {\n        var /** @type {?} */ methodNames = this.methodCache.get(type);\n        if (!methodNames) {\n            var /** @type {?} */ classMetadata = this.getTypeMetadata(type);\n            methodNames = {};\n            var /** @type {?} */ parentType = this.findParentType(type, classMetadata);\n            if (parentType) {\n                var /** @type {?} */ parentMethodNames_1 = this._methodNames(parentType);\n                Object.keys(parentMethodNames_1).forEach(function (parentProp) {\n                    methodNames[parentProp] = parentMethodNames_1[parentProp];\n                });\n            }\n            var /** @type {?} */ members_2 = classMetadata['members'] || {};\n            Object.keys(members_2).forEach(function (propName) {\n                var /** @type {?} */ propData = members_2[propName];\n                var /** @type {?} */ isMethod = ((propData)).some(function (a) { return a['__symbolic'] == 'method'; });\n                methodNames[propName] = methodNames[propName] || isMethod;\n            });\n            this.methodCache.set(type, methodNames);\n        }\n        return methodNames;\n    };\n    /**\n     * @param {?} type\n     * @param {?} classMetadata\n     * @return {?}\n     */\n    StaticReflector.prototype.findParentType = function (type, classMetadata) {\n        var /** @type {?} */ parentType = this.trySimplify(type, classMetadata['extends']);\n        if (parentType instanceof StaticSymbol) {\n            return parentType;\n        }\n    };\n    /**\n     * @param {?} type\n     * @param {?} lcProperty\n     * @return {?}\n     */\n    StaticReflector.prototype.hasLifecycleHook = function (type, lcProperty) {\n        if (!(type instanceof StaticSymbol)) {\n            this.reportError(new Error(\"hasLifecycleHook received \" + JSON.stringify(type) + \" which is not a StaticSymbol\"), type);\n        }\n        try {\n            return !!this._methodNames(type)[lcProperty];\n        }\n        catch (e) {\n            console.error(\"Failed on type \" + JSON.stringify(type) + \" with error \" + e);\n            throw e;\n        }\n    };\n    /**\n     * @param {?} type\n     * @param {?} ctor\n     * @return {?}\n     */\n    StaticReflector.prototype._registerDecoratorOrConstructor = function (type, ctor) {\n        this.conversionMap.set(type, function (context, args) { return new (ctor.bind.apply(ctor, [void 0].concat(args)))(); });\n    };\n    /**\n     * @param {?} type\n     * @param {?} fn\n     * @return {?}\n     */\n    StaticReflector.prototype._registerFunction = function (type, fn) {\n        this.conversionMap.set(type, function (context, args) { return fn.apply(undefined, args); });\n    };\n    /**\n     * @return {?}\n     */\n    StaticReflector.prototype.initializeConversionMap = function () {\n        this.injectionToken = this.findDeclaration(ANGULAR_CORE, 'InjectionToken');\n        this.opaqueToken = this.findDeclaration(ANGULAR_CORE, 'OpaqueToken');\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Host'), Host);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Injectable'), Injectable);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Self'), Self);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'SkipSelf'), SkipSelf);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Inject'), Inject);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Optional'), Optional);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Attribute'), Attribute);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'ContentChild'), ContentChild);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'ContentChildren'), ContentChildren);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'ViewChild'), ViewChild);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'ViewChildren'), ViewChildren);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Input'), Input);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Output'), Output);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Pipe'), Pipe);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'HostBinding'), HostBinding);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'HostListener'), HostListener);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Directive'), Directive);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Component'), Component);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'NgModule'), NgModule);\n        // Note: Some metadata classes can be used directly with Provider.deps.\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Host'), Host);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Self'), Self);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'SkipSelf'), SkipSelf);\n        this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Optional'), Optional);\n        this._registerFunction(this.findDeclaration(ANGULAR_CORE, 'trigger'), trigger);\n        this._registerFunction(this.findDeclaration(ANGULAR_CORE, 'state'), state);\n        this._registerFunction(this.findDeclaration(ANGULAR_CORE, 'transition'), transition);\n        this._registerFunction(this.findDeclaration(ANGULAR_CORE, 'style'), style);\n        this._registerFunction(this.findDeclaration(ANGULAR_CORE, 'animate'), animate);\n        this._registerFunction(this.findDeclaration(ANGULAR_CORE, 'keyframes'), keyframes);\n        this._registerFunction(this.findDeclaration(ANGULAR_CORE, 'sequence'), sequence);\n        this._registerFunction(this.findDeclaration(ANGULAR_CORE, 'group'), group);\n    };\n    /**\n     * getStaticSymbol produces a Type whose metadata is known but whose implementation is not loaded.\n     * All types passed to the StaticResolver should be pseudo-types returned by this method.\n     *\n     * @param {?} declarationFile the absolute path of the file where the symbol is declared\n     * @param {?} name the name of the type.\n     * @param {?=} members\n     * @return {?}\n     */\n    StaticReflector.prototype.getStaticSymbol = function (declarationFile, name, members) {\n        return this.symbolResolver.getStaticSymbol(declarationFile, name, members);\n    };\n    /**\n     * @param {?} error\n     * @param {?} context\n     * @param {?=} path\n     * @return {?}\n     */\n    StaticReflector.prototype.reportError = function (error, context, path) {\n        if (this.errorRecorder) {\n            this.errorRecorder(error, (context && context.filePath) || path);\n        }\n        else {\n            throw error;\n        }\n    };\n    /**\n     * Simplify but discard any errors\n     * @param {?} context\n     * @param {?} value\n     * @return {?}\n     */\n    StaticReflector.prototype.trySimplify = function (context, value) {\n        var /** @type {?} */ originalRecorder = this.errorRecorder;\n        this.errorRecorder = function (error, fileName) { };\n        var /** @type {?} */ result = this.simplify(context, value);\n        this.errorRecorder = originalRecorder;\n        return result;\n    };\n    /**\n     * \\@internal\n     * @param {?} context\n     * @param {?} value\n     * @return {?}\n     */\n    StaticReflector.prototype.simplify = function (context, value) {\n        var _this = this;\n        var /** @type {?} */ self = this;\n        var /** @type {?} */ scope = BindingScope.empty;\n        var /** @type {?} */ calling = new Map();\n        /**\n         * @param {?} context\n         * @param {?} value\n         * @param {?} depth\n         * @return {?}\n         */\n        function simplifyInContext(context, value, depth) {\n            /**\n             * @param {?} staticSymbol\n             * @return {?}\n             */\n            function resolveReferenceValue(staticSymbol) {\n                var /** @type {?} */ resolvedSymbol = self.symbolResolver.resolveSymbol(staticSymbol);\n                return resolvedSymbol ? resolvedSymbol.metadata : null;\n            }\n            /**\n             * @param {?} functionSymbol\n             * @param {?} targetFunction\n             * @param {?} args\n             * @return {?}\n             */\n            function simplifyCall(functionSymbol, targetFunction, args) {\n                if (targetFunction && targetFunction['__symbolic'] == 'function') {\n                    if (calling.get(functionSymbol)) {\n                        throw new Error('Recursion not supported');\n                    }\n                    calling.set(functionSymbol, true);\n                    try {\n                        var /** @type {?} */ value_1 = targetFunction['value'];\n                        if (value_1 && (depth != 0 || value_1.__symbolic != 'error')) {\n                            var /** @type {?} */ parameters = targetFunction['parameters'];\n                            var /** @type {?} */ defaults = targetFunction.defaults;\n                            args = args.map(function (arg) { return simplifyInContext(context, arg, depth + 1); })\n                                .map(function (arg) { return shouldIgnore(arg) ? undefined : arg; });\n                            if (defaults && defaults.length > args.length) {\n                                args.push.apply(args, defaults.slice(args.length).map(function (value) { return simplify(value); }));\n                            }\n                            var /** @type {?} */ functionScope = BindingScope.build();\n                            for (var /** @type {?} */ i = 0; i < parameters.length; i++) {\n                                functionScope.define(parameters[i], args[i]);\n                            }\n                            var /** @type {?} */ oldScope = scope;\n                            var /** @type {?} */ result_1;\n                            try {\n                                scope = functionScope.done();\n                                result_1 = simplifyInContext(functionSymbol, value_1, depth + 1);\n                            }\n                            finally {\n                                scope = oldScope;\n                            }\n                            return result_1;\n                        }\n                    }\n                    finally {\n                        calling.delete(functionSymbol);\n                    }\n                }\n                if (depth === 0) {\n                    // If depth is 0 we are evaluating the top level expression that is describing element\n                    // decorator. In this case, it is a decorator we don't understand, such as a custom\n                    // non-angular decorator, and we should just ignore it.\n                    return IGNORE;\n                }\n                return simplify({ __symbolic: 'error', message: 'Function call not supported', context: functionSymbol });\n            }\n            /**\n             * @param {?} expression\n             * @return {?}\n             */\n            function simplify(expression) {\n                if (isPrimitive(expression)) {\n                    return expression;\n                }\n                if (expression instanceof Array) {\n                    var /** @type {?} */ result_2 = [];\n                    for (var _i = 0, _a = ((expression)); _i < _a.length; _i++) {\n                        var item = _a[_i];\n                        // Check for a spread expression\n                        if (item && item.__symbolic === 'spread') {\n                            var /** @type {?} */ spreadArray = simplify(item.expression);\n                            if (Array.isArray(spreadArray)) {\n                                for (var _b = 0, spreadArray_1 = spreadArray; _b < spreadArray_1.length; _b++) {\n                                    var spreadItem = spreadArray_1[_b];\n                                    result_2.push(spreadItem);\n                                }\n                                continue;\n                            }\n                        }\n                        var /** @type {?} */ value_2 = simplify(item);\n                        if (shouldIgnore(value_2)) {\n                            continue;\n                        }\n                        result_2.push(value_2);\n                    }\n                    return result_2;\n                }\n                if (expression instanceof StaticSymbol) {\n                    // Stop simplification at builtin symbols\n                    if (expression === self.injectionToken || expression === self.opaqueToken ||\n                        self.conversionMap.has(expression)) {\n                        return expression;\n                    }\n                    else {\n                        var /** @type {?} */ staticSymbol = expression;\n                        var /** @type {?} */ declarationValue = resolveReferenceValue(staticSymbol);\n                        if (declarationValue) {\n                            return simplifyInContext(staticSymbol, declarationValue, depth + 1);\n                        }\n                        else {\n                            return staticSymbol;\n                        }\n                    }\n                }\n                if (expression) {\n                    if (expression['__symbolic']) {\n                        var /** @type {?} */ staticSymbol = void 0;\n                        switch (expression['__symbolic']) {\n                            case 'binop':\n                                var /** @type {?} */ left = simplify(expression['left']);\n                                if (shouldIgnore(left))\n                                    return left;\n                                var /** @type {?} */ right = simplify(expression['right']);\n                                if (shouldIgnore(right))\n                                    return right;\n                                switch (expression['operator']) {\n                                    case '&&':\n                                        return left && right;\n                                    case '||':\n                                        return left || right;\n                                    case '|':\n                                        return left | right;\n                                    case '^':\n                                        return left ^ right;\n                                    case '&':\n                                        return left & right;\n                                    case '==':\n                                        return left == right;\n                                    case '!=':\n                                        return left != right;\n                                    case '===':\n                                        return left === right;\n                                    case '!==':\n                                        return left !== right;\n                                    case '<':\n                                        return left < right;\n                                    case '>':\n                                        return left > right;\n                                    case '<=':\n                                        return left <= right;\n                                    case '>=':\n                                        return left >= right;\n                                    case '<<':\n                                        return left << right;\n                                    case '>>':\n                                        return left >> right;\n                                    case '+':\n                                        return left + right;\n                                    case '-':\n                                        return left - right;\n                                    case '*':\n                                        return left * right;\n                                    case '/':\n                                        return left / right;\n                                    case '%':\n                                        return left % right;\n                                }\n                                return null;\n                            case 'if':\n                                var /** @type {?} */ condition = simplify(expression['condition']);\n                                return condition ? simplify(expression['thenExpression']) :\n                                    simplify(expression['elseExpression']);\n                            case 'pre':\n                                var /** @type {?} */ operand = simplify(expression['operand']);\n                                if (shouldIgnore(operand))\n                                    return operand;\n                                switch (expression['operator']) {\n                                    case '+':\n                                        return operand;\n                                    case '-':\n                                        return -operand;\n                                    case '!':\n                                        return !operand;\n                                    case '~':\n                                        return ~operand;\n                                }\n                                return null;\n                            case 'index':\n                                var /** @type {?} */ indexTarget = simplify(expression['expression']);\n                                var /** @type {?} */ index = simplify(expression['index']);\n                                if (indexTarget && isPrimitive(index))\n                                    return indexTarget[index];\n                                return null;\n                            case 'select':\n                                var /** @type {?} */ member = expression['member'];\n                                var /** @type {?} */ selectContext = context;\n                                var /** @type {?} */ selectTarget = simplify(expression['expression']);\n                                if (selectTarget instanceof StaticSymbol) {\n                                    var /** @type {?} */ members = selectTarget.members.concat(member);\n                                    selectContext =\n                                        self.getStaticSymbol(selectTarget.filePath, selectTarget.name, members);\n                                    var /** @type {?} */ declarationValue = resolveReferenceValue(selectContext);\n                                    if (declarationValue) {\n                                        return simplifyInContext(selectContext, declarationValue, depth + 1);\n                                    }\n                                    else {\n                                        return selectContext;\n                                    }\n                                }\n                                if (selectTarget && isPrimitive(member))\n                                    return simplifyInContext(selectContext, selectTarget[member], depth + 1);\n                                return null;\n                            case 'reference':\n                                // Note: This only has to deal with variable references,\n                                // as symbol references have been converted into StaticSymbols already\n                                // in the StaticSymbolResolver!\n                                var /** @type {?} */ name = expression['name'];\n                                var /** @type {?} */ localValue = scope.resolve(name);\n                                if (localValue != BindingScope.missing) {\n                                    return localValue;\n                                }\n                                break;\n                            case 'class':\n                                return context;\n                            case 'function':\n                                return context;\n                            case 'new':\n                            case 'call':\n                                // Determine if the function is a built-in conversion\n                                staticSymbol = simplifyInContext(context, expression['expression'], depth + 1);\n                                if (staticSymbol instanceof StaticSymbol) {\n                                    if (staticSymbol === self.injectionToken || staticSymbol === self.opaqueToken) {\n                                        // if somebody calls new InjectionToken, don't create an InjectionToken,\n                                        // but rather return the symbol to which the InjectionToken is assigned to.\n                                        return context;\n                                    }\n                                    var /** @type {?} */ argExpressions = expression['arguments'] || [];\n                                    var /** @type {?} */ converter = self.conversionMap.get(staticSymbol);\n                                    if (converter) {\n                                        var /** @type {?} */ args = argExpressions.map(function (arg) { return simplifyInContext(context, arg, depth + 1); })\n                                            .map(function (arg) { return shouldIgnore(arg) ? undefined : arg; });\n                                        return converter(context, args);\n                                    }\n                                    else {\n                                        // Determine if the function is one we can simplify.\n                                        var /** @type {?} */ targetFunction = resolveReferenceValue(staticSymbol);\n                                        return simplifyCall(staticSymbol, targetFunction, argExpressions);\n                                    }\n                                }\n                                return IGNORE;\n                            case 'error':\n                                var /** @type {?} */ message = produceErrorMessage(expression);\n                                if (expression['line']) {\n                                    message =\n                                        message + \" (position \" + (expression['line'] + 1) + \":\" + (expression['character'] + 1) + \" in the original .ts file)\";\n                                    self.reportError(positionalError(message, context.filePath, expression['line'], expression['character']), context);\n                                }\n                                else {\n                                    self.reportError(new Error(message), context);\n                                }\n                                return IGNORE;\n                            case 'ignore':\n                                return expression;\n                        }\n                        return null;\n                    }\n                    return mapStringMap(expression, function (value, name) { return simplify(value); });\n                }\n                return IGNORE;\n            }\n            try {\n                return simplify(value);\n            }\n            catch (e) {\n                var /** @type {?} */ members = context.members.length ? \".\" + context.members.join('.') : '';\n                var /** @type {?} */ message = e.message + \", resolving symbol \" + context.name + members + \" in \" + context.filePath;\n                if (e.fileName) {\n                    throw positionalError(message, e.fileName, e.line, e.column);\n                }\n                throw syntaxError(message);\n            }\n        }\n        var /** @type {?} */ recordedSimplifyInContext = function (context, value, depth) {\n            try {\n                return simplifyInContext(context, value, depth);\n            }\n            catch (e) {\n                _this.reportError(e, context);\n            }\n        };\n        var /** @type {?} */ result = this.errorRecorder ? recordedSimplifyInContext(context, value, 0) :\n            simplifyInContext(context, value, 0);\n        if (shouldIgnore(result)) {\n            return undefined;\n        }\n        return result;\n    };\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    StaticReflector.prototype.getTypeMetadata = function (type) {\n        var /** @type {?} */ resolvedSymbol = this.symbolResolver.resolveSymbol(type);\n        return resolvedSymbol && resolvedSymbol.metadata ? resolvedSymbol.metadata :\n            { __symbolic: 'class' };\n    };\n    return StaticReflector;\n}());\n/**\n * @param {?} error\n * @return {?}\n */\nfunction expandedMessage(error) {\n    switch (error.message) {\n        case 'Reference to non-exported class':\n            if (error.context && error.context.className) {\n                return \"Reference to a non-exported class \" + error.context.className + \". Consider exporting the class\";\n            }\n            break;\n        case 'Variable not initialized':\n            return 'Only initialized variables and constants can be referenced because the value of this variable is needed by the template compiler';\n        case 'Destructuring not supported':\n            return 'Referencing an exported destructured variable or constant is not supported by the template compiler. Consider simplifying this to avoid destructuring';\n        case 'Could not resolve type':\n            if (error.context && error.context.typeName) {\n                return \"Could not resolve type \" + error.context.typeName;\n            }\n            break;\n        case 'Function call not supported':\n            var /** @type {?} */ prefix = error.context && error.context.name ? \"Calling function '\" + error.context.name + \"', f\" : 'F';\n            return prefix +\n                'unction calls are not supported. Consider replacing the function or lambda with a reference to an exported function';\n        case 'Reference to a local symbol':\n            if (error.context && error.context.name) {\n                return \"Reference to a local (non-exported) symbol '\" + error.context.name + \"'. Consider exporting the symbol\";\n            }\n            break;\n    }\n    return error.message;\n}\n/**\n * @param {?} error\n * @return {?}\n */\nfunction produceErrorMessage(error) {\n    return \"Error encountered resolving symbol values statically. \" + expandedMessage(error);\n}\n/**\n * @param {?} input\n * @param {?} transform\n * @return {?}\n */\nfunction mapStringMap(input, transform) {\n    if (!input)\n        return {};\n    var /** @type {?} */ result = {};\n    Object.keys(input).forEach(function (key) {\n        var /** @type {?} */ value = transform(input[key], key);\n        if (!shouldIgnore(value)) {\n            if (HIDDEN_KEY.test(key)) {\n                Object.defineProperty(result, key, { enumerable: false, configurable: true, value: value });\n            }\n            else {\n                result[key] = value;\n            }\n        }\n    });\n    return result;\n}\n/**\n * @param {?} o\n * @return {?}\n */\nfunction isPrimitive(o) {\n    return o === null || (typeof o !== 'function' && typeof o !== 'object');\n}\n/**\n * @abstract\n */\nvar BindingScope = (function () {\n    function BindingScope() {\n    }\n    /**\n     * @abstract\n     * @param {?} name\n     * @return {?}\n     */\n    BindingScope.prototype.resolve = function (name) { };\n    /**\n     * @return {?}\n     */\n    BindingScope.build = function () {\n        var /** @type {?} */ current = new Map();\n        return {\n            define: function (name, value) {\n                current.set(name, value);\n                return this;\n            },\n            done: function () {\n                return current.size > 0 ? new PopulatedScope(current) : BindingScope.empty;\n            }\n        };\n    };\n    return BindingScope;\n}());\nBindingScope.missing = {};\nBindingScope.empty = { resolve: function (name) { return BindingScope.missing; } };\nvar PopulatedScope = (function (_super) {\n    __extends(PopulatedScope, _super);\n    /**\n     * @param {?} bindings\n     */\n    function PopulatedScope(bindings) {\n        var _this = _super.call(this) || this;\n        _this.bindings = bindings;\n        return _this;\n    }\n    /**\n     * @param {?} name\n     * @return {?}\n     */\n    PopulatedScope.prototype.resolve = function (name) {\n        return this.bindings.has(name) ? this.bindings.get(name) : BindingScope.missing;\n    };\n    return PopulatedScope;\n}(BindingScope));\n/**\n * @param {?} message\n * @param {?} fileName\n * @param {?} line\n * @param {?} column\n * @return {?}\n */\nfunction positionalError(message, fileName, line, column) {\n    var /** @type {?} */ result = new Error(message);\n    ((result)).fileName = fileName;\n    ((result)).line = line;\n    ((result)).column = column;\n    return result;\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar ResolvedStaticSymbol = (function () {\n    /**\n     * @param {?} symbol\n     * @param {?} metadata\n     */\n    function ResolvedStaticSymbol(symbol, metadata) {\n        this.symbol = symbol;\n        this.metadata = metadata;\n    }\n    return ResolvedStaticSymbol;\n}());\nvar SUPPORTED_SCHEMA_VERSION = 3;\n/**\n * This class is responsible for loading metadata per symbol,\n * and normalizing references between symbols.\n *\n * Internally, it only uses symbols without members,\n * and deduces the values for symbols with members based\n * on these symbols.\n */\nvar StaticSymbolResolver = (function () {\n    /**\n     * @param {?} host\n     * @param {?} staticSymbolCache\n     * @param {?} summaryResolver\n     * @param {?=} errorRecorder\n     */\n    function StaticSymbolResolver(host, staticSymbolCache, summaryResolver, errorRecorder) {\n        this.host = host;\n        this.staticSymbolCache = staticSymbolCache;\n        this.summaryResolver = summaryResolver;\n        this.errorRecorder = errorRecorder;\n        this.metadataCache = new Map();\n        this.resolvedSymbols = new Map();\n        this.resolvedFilePaths = new Set();\n        this.importAs = new Map();\n        this.symbolResourcePaths = new Map();\n        this.symbolFromFile = new Map();\n    }\n    /**\n     * @param {?} staticSymbol\n     * @return {?}\n     */\n    StaticSymbolResolver.prototype.resolveSymbol = function (staticSymbol) {\n        if (staticSymbol.members.length > 0) {\n            return this._resolveSymbolMembers(staticSymbol);\n        }\n        var /** @type {?} */ result = this.resolvedSymbols.get(staticSymbol);\n        if (result) {\n            return result;\n        }\n        result = this._resolveSymbolFromSummary(staticSymbol);\n        if (result) {\n            return result;\n        }\n        // Note: Some users use libraries that were not compiled with ngc, i.e. they don't\n        // have summaries, only .d.ts files. So we always need to check both, the summary\n        // and metadata.\n        this._createSymbolsOf(staticSymbol.filePath);\n        result = this.resolvedSymbols.get(staticSymbol);\n        return result;\n    };\n    /**\n     * getImportAs produces a symbol that can be used to import the given symbol.\n     * The import might be different than the symbol if the symbol is exported from\n     * a library with a summary; in which case we want to import the symbol from the\n     * ngfactory re-export instead of directly to avoid introducing a direct dependency\n     * on an otherwise indirect dependency.\n     *\n     * @param {?} staticSymbol the symbol for which to generate a import symbol\n     * @return {?}\n     */\n    StaticSymbolResolver.prototype.getImportAs = function (staticSymbol) {\n        if (staticSymbol.members.length) {\n            var /** @type {?} */ baseSymbol = this.getStaticSymbol(staticSymbol.filePath, staticSymbol.name);\n            var /** @type {?} */ baseImportAs = this.getImportAs(baseSymbol);\n            return baseImportAs ?\n                this.getStaticSymbol(baseImportAs.filePath, baseImportAs.name, staticSymbol.members) :\n                null;\n        }\n        var /** @type {?} */ result = this.summaryResolver.getImportAs(staticSymbol);\n        if (!result) {\n            result = this.importAs.get(staticSymbol);\n        }\n        return result;\n    };\n    /**\n     * getResourcePath produces the path to the original location of the symbol and should\n     * be used to determine the relative location of resource references recorded in\n     * symbol metadata.\n     * @param {?} staticSymbol\n     * @return {?}\n     */\n    StaticSymbolResolver.prototype.getResourcePath = function (staticSymbol) {\n        return this.symbolResourcePaths.get(staticSymbol) || staticSymbol.filePath;\n    };\n    /**\n     * getTypeArity returns the number of generic type parameters the given symbol\n     * has. If the symbol is not a type the result is null.\n     * @param {?} staticSymbol\n     * @return {?}\n     */\n    StaticSymbolResolver.prototype.getTypeArity = function (staticSymbol) {\n        // If the file is a factory file, don't resolve the symbol as doing so would\n        // cause the metadata for an factory file to be loaded which doesn't exist.\n        // All references to generated classes must include the correct arity whenever\n        // generating code.\n        if (isNgFactoryFile(staticSymbol.filePath)) {\n            return null;\n        }\n        var /** @type {?} */ resolvedSymbol = this.resolveSymbol(staticSymbol);\n        while (resolvedSymbol && resolvedSymbol.metadata instanceof StaticSymbol) {\n            resolvedSymbol = this.resolveSymbol(resolvedSymbol.metadata);\n        }\n        return (resolvedSymbol && resolvedSymbol.metadata && resolvedSymbol.metadata.arity) || null;\n    };\n    /**\n     * @param {?} sourceSymbol\n     * @param {?} targetSymbol\n     * @return {?}\n     */\n    StaticSymbolResolver.prototype.recordImportAs = function (sourceSymbol, targetSymbol) {\n        sourceSymbol.assertNoMembers();\n        targetSymbol.assertNoMembers();\n        this.importAs.set(sourceSymbol, targetSymbol);\n    };\n    /**\n     * Invalidate all information derived from the given file.\n     *\n     * @param {?} fileName the file to invalidate\n     * @return {?}\n     */\n    StaticSymbolResolver.prototype.invalidateFile = function (fileName) {\n        this.metadataCache.delete(fileName);\n        this.resolvedFilePaths.delete(fileName);\n        var /** @type {?} */ symbols = this.symbolFromFile.get(fileName);\n        if (symbols) {\n            this.symbolFromFile.delete(fileName);\n            for (var _i = 0, symbols_1 = symbols; _i < symbols_1.length; _i++) {\n                var symbol = symbols_1[_i];\n                this.resolvedSymbols.delete(symbol);\n                this.importAs.delete(symbol);\n                this.symbolResourcePaths.delete(symbol);\n            }\n        }\n    };\n    /**\n     * @param {?} staticSymbol\n     * @return {?}\n     */\n    StaticSymbolResolver.prototype._resolveSymbolMembers = function (staticSymbol) {\n        var /** @type {?} */ members = staticSymbol.members;\n        var /** @type {?} */ baseResolvedSymbol = this.resolveSymbol(this.getStaticSymbol(staticSymbol.filePath, staticSymbol.name));\n        if (!baseResolvedSymbol) {\n            return null;\n        }\n        var /** @type {?} */ baseMetadata = baseResolvedSymbol.metadata;\n        if (baseMetadata instanceof StaticSymbol) {\n            return new ResolvedStaticSymbol(staticSymbol, this.getStaticSymbol(baseMetadata.filePath, baseMetadata.name, members));\n        }\n        else if (baseMetadata && baseMetadata.__symbolic === 'class') {\n            if (baseMetadata.statics && members.length === 1) {\n                return new ResolvedStaticSymbol(staticSymbol, baseMetadata.statics[members[0]]);\n            }\n        }\n        else {\n            var /** @type {?} */ value = baseMetadata;\n            for (var /** @type {?} */ i = 0; i < members.length && value; i++) {\n                value = value[members[i]];\n            }\n            return new ResolvedStaticSymbol(staticSymbol, value);\n        }\n        return null;\n    };\n    /**\n     * @param {?} staticSymbol\n     * @return {?}\n     */\n    StaticSymbolResolver.prototype._resolveSymbolFromSummary = function (staticSymbol) {\n        var /** @type {?} */ summary = this.summaryResolver.resolveSummary(staticSymbol);\n        return summary ? new ResolvedStaticSymbol(staticSymbol, summary.metadata) : null;\n    };\n    /**\n     * getStaticSymbol produces a Type whose metadata is known but whose implementation is not loaded.\n     * All types passed to the StaticResolver should be pseudo-types returned by this method.\n     *\n     * @param {?} declarationFile the absolute path of the file where the symbol is declared\n     * @param {?} name the name of the type.\n     * @param {?=} members a symbol for a static member of the named type\n     * @return {?}\n     */\n    StaticSymbolResolver.prototype.getStaticSymbol = function (declarationFile, name, members) {\n        return this.staticSymbolCache.get(declarationFile, name, members);\n    };\n    /**\n     * @param {?} filePath\n     * @return {?}\n     */\n    StaticSymbolResolver.prototype.getSymbolsOf = function (filePath) {\n        // Note: Some users use libraries that were not compiled with ngc, i.e. they don't\n        // have summaries, only .d.ts files. So we always need to check both, the summary\n        // and metadata.\n        var /** @type {?} */ symbols = new Set(this.summaryResolver.getSymbolsOf(filePath));\n        this._createSymbolsOf(filePath);\n        this.resolvedSymbols.forEach(function (resolvedSymbol) {\n            if (resolvedSymbol.symbol.filePath === filePath) {\n                symbols.add(resolvedSymbol.symbol);\n            }\n        });\n        return Array.from(symbols);\n    };\n    /**\n     * @param {?} filePath\n     * @return {?}\n     */\n    StaticSymbolResolver.prototype._createSymbolsOf = function (filePath) {\n        var _this = this;\n        if (this.resolvedFilePaths.has(filePath)) {\n            return;\n        }\n        this.resolvedFilePaths.add(filePath);\n        var /** @type {?} */ resolvedSymbols = [];\n        var /** @type {?} */ metadata = this.getModuleMetadata(filePath);\n        if (metadata['metadata']) {\n            // handle direct declarations of the symbol\n            var /** @type {?} */ topLevelSymbolNames_1 = new Set(Object.keys(metadata['metadata']).map(unescapeIdentifier));\n            var /** @type {?} */ origins_1 = metadata['origins'] || {};\n            Object.keys(metadata['metadata']).forEach(function (metadataKey) {\n                var /** @type {?} */ symbolMeta = metadata['metadata'][metadataKey];\n                var /** @type {?} */ name = unescapeIdentifier(metadataKey);\n                var /** @type {?} */ symbol = _this.getStaticSymbol(filePath, name);\n                var /** @type {?} */ importSymbol = undefined;\n                if (metadata['importAs']) {\n                    // Index bundle indexes should use the importAs module name instead of a reference\n                    // to the .d.ts file directly.\n                    importSymbol = _this.getStaticSymbol(metadata['importAs'], name);\n                    _this.recordImportAs(symbol, importSymbol);\n                }\n                var /** @type {?} */ origin = origins_1.hasOwnProperty(metadataKey) && origins_1[metadataKey];\n                if (origin) {\n                    // If the symbol is from a bundled index, use the declaration location of the\n                    // symbol so relative references (such as './my.html') will be calculated\n                    // correctly.\n                    var /** @type {?} */ originFilePath = _this.resolveModule(origin, filePath);\n                    if (!originFilePath) {\n                        _this.reportError(new Error(\"Couldn't resolve original symbol for \" + origin + \" from \" + filePath), null);\n                    }\n                    else {\n                        _this.symbolResourcePaths.set(symbol, originFilePath);\n                    }\n                }\n                resolvedSymbols.push(_this.createResolvedSymbol(symbol, filePath, topLevelSymbolNames_1, symbolMeta));\n            });\n        }\n        // handle the symbols in one of the re-export location\n        if (metadata['exports']) {\n            var _loop_1 = function (moduleExport) {\n                // handle the symbols in the list of explicitly re-exported symbols.\n                if (moduleExport.export) {\n                    moduleExport.export.forEach(function (exportSymbol) {\n                        var /** @type {?} */ symbolName;\n                        if (typeof exportSymbol === 'string') {\n                            symbolName = exportSymbol;\n                        }\n                        else {\n                            symbolName = exportSymbol.as;\n                        }\n                        symbolName = unescapeIdentifier(symbolName);\n                        var /** @type {?} */ symName = symbolName;\n                        if (typeof exportSymbol !== 'string') {\n                            symName = unescapeIdentifier(exportSymbol.name);\n                        }\n                        var /** @type {?} */ resolvedModule = _this.resolveModule(moduleExport.from, filePath);\n                        if (resolvedModule) {\n                            var /** @type {?} */ targetSymbol = _this.getStaticSymbol(resolvedModule, symName);\n                            var /** @type {?} */ sourceSymbol = _this.getStaticSymbol(filePath, symbolName);\n                            resolvedSymbols.push(_this.createExport(sourceSymbol, targetSymbol));\n                        }\n                    });\n                }\n                else {\n                    // handle the symbols via export * directives.\n                    var /** @type {?} */ resolvedModule = this_1.resolveModule(moduleExport.from, filePath);\n                    if (resolvedModule) {\n                        var /** @type {?} */ nestedExports = this_1.getSymbolsOf(resolvedModule);\n                        nestedExports.forEach(function (targetSymbol) {\n                            var /** @type {?} */ sourceSymbol = _this.getStaticSymbol(filePath, targetSymbol.name);\n                            resolvedSymbols.push(_this.createExport(sourceSymbol, targetSymbol));\n                        });\n                    }\n                }\n            };\n            var this_1 = this;\n            for (var _i = 0, _a = metadata['exports']; _i < _a.length; _i++) {\n                var moduleExport = _a[_i];\n                _loop_1(/** @type {?} */ moduleExport);\n            }\n        }\n        resolvedSymbols.forEach(function (resolvedSymbol) { return _this.resolvedSymbols.set(resolvedSymbol.symbol, resolvedSymbol); });\n        this.symbolFromFile.set(filePath, resolvedSymbols.map(function (resolvedSymbol) { return resolvedSymbol.symbol; }));\n    };\n    /**\n     * @param {?} sourceSymbol\n     * @param {?} topLevelPath\n     * @param {?} topLevelSymbolNames\n     * @param {?} metadata\n     * @return {?}\n     */\n    StaticSymbolResolver.prototype.createResolvedSymbol = function (sourceSymbol, topLevelPath, topLevelSymbolNames, metadata) {\n        // For classes that don't have Angular summaries / metadata,\n        // we only keep their arity, but nothing else\n        // (e.g. their constructor parameters).\n        // We do this to prevent introducing deep imports\n        // as we didn't generate .ngfactory.ts files with proper reexports.\n        if (this.summaryResolver.isLibraryFile(sourceSymbol.filePath) && metadata &&\n            metadata['__symbolic'] === 'class') {\n            var /** @type {?} */ transformedMeta_1 = { __symbolic: 'class', arity: metadata.arity };\n            return new ResolvedStaticSymbol(sourceSymbol, transformedMeta_1);\n        }\n        var /** @type {?} */ self = this;\n        var ReferenceTransformer = (function (_super) {\n            __extends(ReferenceTransformer, _super);\n            function ReferenceTransformer() {\n                return _super !== null && _super.apply(this, arguments) || this;\n            }\n            /**\n             * @param {?} map\n             * @param {?} functionParams\n             * @return {?}\n             */\n            ReferenceTransformer.prototype.visitStringMap = function (map, functionParams) {\n                var /** @type {?} */ symbolic = map['__symbolic'];\n                if (symbolic === 'function') {\n                    var /** @type {?} */ oldLen = functionParams.length;\n                    functionParams.push.apply(functionParams, (map['parameters'] || []));\n                    var /** @type {?} */ result = _super.prototype.visitStringMap.call(this, map, functionParams);\n                    functionParams.length = oldLen;\n                    return result;\n                }\n                else if (symbolic === 'reference') {\n                    var /** @type {?} */ module_1 = map['module'];\n                    var /** @type {?} */ name = map['name'] ? unescapeIdentifier(map['name']) : map['name'];\n                    if (!name) {\n                        return null;\n                    }\n                    var /** @type {?} */ filePath = void 0;\n                    if (module_1) {\n                        filePath = self.resolveModule(module_1, sourceSymbol.filePath);\n                        if (!filePath) {\n                            return {\n                                __symbolic: 'error',\n                                message: \"Could not resolve \" + module_1 + \" relative to \" + sourceSymbol.filePath + \".\"\n                            };\n                        }\n                        return self.getStaticSymbol(filePath, name);\n                    }\n                    else if (functionParams.indexOf(name) >= 0) {\n                        // reference to a function parameter\n                        return { __symbolic: 'reference', name: name };\n                    }\n                    else {\n                        if (topLevelSymbolNames.has(name)) {\n                            return self.getStaticSymbol(topLevelPath, name);\n                        }\n                        // ambient value\n                        null;\n                    }\n                }\n                else {\n                    return _super.prototype.visitStringMap.call(this, map, functionParams);\n                }\n            };\n            return ReferenceTransformer;\n        }(ValueTransformer));\n        var /** @type {?} */ transformedMeta = visitValue(metadata, new ReferenceTransformer(), []);\n        if (transformedMeta instanceof StaticSymbol) {\n            return this.createExport(sourceSymbol, transformedMeta);\n        }\n        return new ResolvedStaticSymbol(sourceSymbol, transformedMeta);\n    };\n    /**\n     * @param {?} sourceSymbol\n     * @param {?} targetSymbol\n     * @return {?}\n     */\n    StaticSymbolResolver.prototype.createExport = function (sourceSymbol, targetSymbol) {\n        sourceSymbol.assertNoMembers();\n        targetSymbol.assertNoMembers();\n        if (this.summaryResolver.isLibraryFile(sourceSymbol.filePath)) {\n            // This case is for an ng library importing symbols from a plain ts library\n            // transitively.\n            // Note: We rely on the fact that we discover symbols in the direction\n            // from source files to library files\n            this.importAs.set(targetSymbol, this.getImportAs(sourceSymbol) || sourceSymbol);\n        }\n        return new ResolvedStaticSymbol(sourceSymbol, targetSymbol);\n    };\n    /**\n     * @param {?} error\n     * @param {?} context\n     * @param {?=} path\n     * @return {?}\n     */\n    StaticSymbolResolver.prototype.reportError = function (error, context, path) {\n        if (this.errorRecorder) {\n            this.errorRecorder(error, (context && context.filePath) || path);\n        }\n        else {\n            throw error;\n        }\n    };\n    /**\n     * @param {?} module an absolute path to a module file.\n     * @return {?}\n     */\n    StaticSymbolResolver.prototype.getModuleMetadata = function (module) {\n        var /** @type {?} */ moduleMetadata = this.metadataCache.get(module);\n        if (!moduleMetadata) {\n            var /** @type {?} */ moduleMetadatas = this.host.getMetadataFor(module);\n            if (moduleMetadatas) {\n                var /** @type {?} */ maxVersion_1 = -1;\n                moduleMetadatas.forEach(function (md) {\n                    if (md['version'] > maxVersion_1) {\n                        maxVersion_1 = md['version'];\n                        moduleMetadata = md;\n                    }\n                });\n            }\n            if (!moduleMetadata) {\n                moduleMetadata =\n                    { __symbolic: 'module', version: SUPPORTED_SCHEMA_VERSION, module: module, metadata: {} };\n            }\n            if (moduleMetadata['version'] != SUPPORTED_SCHEMA_VERSION) {\n                var /** @type {?} */ errorMessage = moduleMetadata['version'] == 2 ?\n                    \"Unsupported metadata version \" + moduleMetadata['version'] + \" for module \" + module + \". This module should be compiled with a newer version of ngc\" :\n                    \"Metadata version mismatch for module \" + module + \", found version \" + moduleMetadata['version'] + \", expected \" + SUPPORTED_SCHEMA_VERSION;\n                this.reportError(new Error(errorMessage), null);\n            }\n            this.metadataCache.set(module, moduleMetadata);\n        }\n        return moduleMetadata;\n    };\n    /**\n     * @param {?} module\n     * @param {?} symbolName\n     * @param {?=} containingFile\n     * @return {?}\n     */\n    StaticSymbolResolver.prototype.getSymbolByModule = function (module, symbolName, containingFile) {\n        var /** @type {?} */ filePath = this.resolveModule(module, containingFile);\n        if (!filePath) {\n            this.reportError(new Error(\"Could not resolve module \" + module + (containingFile ? \" relative to $ {\\n            containingFile\\n          } \" : '')), null);\n            return this.getStaticSymbol(\"ERROR:\" + module, symbolName);\n        }\n        return this.getStaticSymbol(filePath, symbolName);\n    };\n    /**\n     * @param {?} module\n     * @param {?} containingFile\n     * @return {?}\n     */\n    StaticSymbolResolver.prototype.resolveModule = function (module, containingFile) {\n        try {\n            return this.host.moduleNameToFileName(module, containingFile);\n        }\n        catch (e) {\n            console.error(\"Could not resolve module '\" + module + \"' relative to file \" + containingFile);\n            this.reportError(e, null, containingFile);\n        }\n    };\n    return StaticSymbolResolver;\n}());\n/**\n * @param {?} identifier\n * @return {?}\n */\nfunction unescapeIdentifier(identifier) {\n    return identifier.startsWith('___') ? identifier.substr(1) : identifier;\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar AotSummaryResolver = (function () {\n    /**\n     * @param {?} host\n     * @param {?} staticSymbolCache\n     */\n    function AotSummaryResolver(host, staticSymbolCache) {\n        this.host = host;\n        this.staticSymbolCache = staticSymbolCache;\n        this.summaryCache = new Map();\n        this.loadedFilePaths = new Set();\n        this.importAs = new Map();\n    }\n    /**\n     * @param {?} filePath\n     * @return {?}\n     */\n    AotSummaryResolver.prototype.isLibraryFile = function (filePath) {\n        // Note: We need to strip the .ngfactory. file path,\n        // so this method also works for generated files\n        // (for which host.isSourceFile will always return false).\n        return !this.host.isSourceFile(stripNgFactory(filePath));\n    };\n    /**\n     * @param {?} filePath\n     * @return {?}\n     */\n    AotSummaryResolver.prototype.getLibraryFileName = function (filePath) { return this.host.getOutputFileName(filePath); };\n    /**\n     * @param {?} staticSymbol\n     * @return {?}\n     */\n    AotSummaryResolver.prototype.resolveSummary = function (staticSymbol) {\n        staticSymbol.assertNoMembers();\n        var /** @type {?} */ summary = this.summaryCache.get(staticSymbol);\n        if (!summary) {\n            this._loadSummaryFile(staticSymbol.filePath);\n            summary = this.summaryCache.get(staticSymbol);\n        }\n        return summary;\n    };\n    /**\n     * @param {?} filePath\n     * @return {?}\n     */\n    AotSummaryResolver.prototype.getSymbolsOf = function (filePath) {\n        this._loadSummaryFile(filePath);\n        return Array.from(this.summaryCache.keys()).filter(function (symbol) { return symbol.filePath === filePath; });\n    };\n    /**\n     * @param {?} staticSymbol\n     * @return {?}\n     */\n    AotSummaryResolver.prototype.getImportAs = function (staticSymbol) {\n        staticSymbol.assertNoMembers();\n        return this.importAs.get(staticSymbol);\n    };\n    /**\n     * @param {?} filePath\n     * @return {?}\n     */\n    AotSummaryResolver.prototype._loadSummaryFile = function (filePath) {\n        var _this = this;\n        if (this.loadedFilePaths.has(filePath)) {\n            return;\n        }\n        this.loadedFilePaths.add(filePath);\n        if (this.isLibraryFile(filePath)) {\n            var /** @type {?} */ summaryFilePath = summaryFileName(filePath);\n            var /** @type {?} */ json = void 0;\n            try {\n                json = this.host.loadSummary(summaryFilePath);\n            }\n            catch (e) {\n                console.error(\"Error loading summary file \" + summaryFilePath);\n                throw e;\n            }\n            if (json) {\n                var _a = deserializeSummaries(this.staticSymbolCache, json), summaries = _a.summaries, importAs = _a.importAs;\n                summaries.forEach(function (summary) { return _this.summaryCache.set(summary.symbol, summary); });\n                importAs.forEach(function (importAs) {\n                    _this.importAs.set(importAs.symbol, _this.staticSymbolCache.get(ngfactoryFilePath(filePath), importAs.importAs));\n                });\n            }\n        }\n    };\n    return AotSummaryResolver;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Creates a new AotCompiler based on options and a host.\n * @param {?} compilerHost\n * @param {?} options\n * @return {?}\n */\nfunction createAotCompiler(compilerHost, options) {\n    var /** @type {?} */ translations = options.translations || '';\n    var /** @type {?} */ urlResolver = createOfflineCompileUrlResolver();\n    var /** @type {?} */ symbolCache = new StaticSymbolCache();\n    var /** @type {?} */ summaryResolver = new AotSummaryResolver(compilerHost, symbolCache);\n    var /** @type {?} */ symbolResolver = new StaticSymbolResolver(compilerHost, symbolCache, summaryResolver);\n    var /** @type {?} */ staticReflector = new StaticReflector(summaryResolver, symbolResolver);\n    StaticAndDynamicReflectionCapabilities.install(staticReflector);\n    var /** @type {?} */ console = new ɵConsole();\n    var /** @type {?} */ htmlParser = new I18NHtmlParser(new HtmlParser(), translations, options.i18nFormat, MissingTranslationStrategy.Warning, console);\n    var /** @type {?} */ config = new CompilerConfig({\n        defaultEncapsulation: ViewEncapsulation.Emulated,\n        useJit: false,\n        enableLegacyTemplate: options.enableLegacyTemplate !== false,\n    });\n    var /** @type {?} */ normalizer = new DirectiveNormalizer({ get: function (url) { return compilerHost.loadResource(url); } }, urlResolver, htmlParser, config);\n    var /** @type {?} */ expressionParser = new Parser(new Lexer());\n    var /** @type {?} */ elementSchemaRegistry = new DomElementSchemaRegistry();\n    var /** @type {?} */ tmplParser = new TemplateParser(config, expressionParser, elementSchemaRegistry, htmlParser, console, []);\n    var /** @type {?} */ resolver = new CompileMetadataResolver(config, new NgModuleResolver(staticReflector), new DirectiveResolver(staticReflector), new PipeResolver(staticReflector), summaryResolver, elementSchemaRegistry, normalizer, console, symbolCache, staticReflector);\n    // TODO(vicb): do not pass options.i18nFormat here\n    var /** @type {?} */ importResolver = {\n        getImportAs: function (symbol) { return symbolResolver.getImportAs(symbol); },\n        fileNameToModuleName: function (fileName, containingFilePath) { return compilerHost.fileNameToModuleName(fileName, containingFilePath); },\n        getTypeArity: function (symbol) { return symbolResolver.getTypeArity(symbol); }\n    };\n    var /** @type {?} */ viewCompiler = new ViewCompiler(config, elementSchemaRegistry);\n    var /** @type {?} */ compiler = new AotCompiler(config, compilerHost, resolver, tmplParser, new StyleCompiler(urlResolver), viewCompiler, new NgModuleCompiler(), new TypeScriptEmitter(importResolver), summaryResolver, options.locale, options.i18nFormat, options.genFilePreamble, symbolResolver);\n    return { compiler: compiler, reflector: staticReflector };\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @param {?} statements\n * @param {?} resultVars\n * @return {?}\n */\nfunction interpretStatements(statements, resultVars) {\n    var /** @type {?} */ stmtsWithReturn = statements.concat([new ReturnStatement(literalArr(resultVars.map(function (resultVar) { return variable(resultVar); })))]);\n    var /** @type {?} */ ctx = new _ExecutionContext(null, null, null, new Map());\n    var /** @type {?} */ visitor = new StatementInterpreter();\n    var /** @type {?} */ result = visitor.visitAllStatements(stmtsWithReturn, ctx);\n    return result != null ? result.value : null;\n}\n/**\n * @param {?} varNames\n * @param {?} varValues\n * @param {?} statements\n * @param {?} ctx\n * @param {?} visitor\n * @return {?}\n */\nfunction _executeFunctionStatements(varNames, varValues, statements, ctx, visitor) {\n    var /** @type {?} */ childCtx = ctx.createChildWihtLocalVars();\n    for (var /** @type {?} */ i = 0; i < varNames.length; i++) {\n        childCtx.vars.set(varNames[i], varValues[i]);\n    }\n    var /** @type {?} */ result = visitor.visitAllStatements(statements, childCtx);\n    return result ? result.value : null;\n}\nvar _ExecutionContext = (function () {\n    /**\n     * @param {?} parent\n     * @param {?} instance\n     * @param {?} className\n     * @param {?} vars\n     */\n    function _ExecutionContext(parent, instance, className, vars) {\n        this.parent = parent;\n        this.instance = instance;\n        this.className = className;\n        this.vars = vars;\n    }\n    /**\n     * @return {?}\n     */\n    _ExecutionContext.prototype.createChildWihtLocalVars = function () {\n        return new _ExecutionContext(this, this.instance, this.className, new Map());\n    };\n    return _ExecutionContext;\n}());\nvar ReturnValue = (function () {\n    /**\n     * @param {?} value\n     */\n    function ReturnValue(value) {\n        this.value = value;\n    }\n    return ReturnValue;\n}());\n/**\n * @param {?} _classStmt\n * @param {?} _ctx\n * @param {?} _visitor\n * @return {?}\n */\nfunction createDynamicClass(_classStmt, _ctx, _visitor) {\n    var /** @type {?} */ propertyDescriptors = {};\n    _classStmt.getters.forEach(function (getter) {\n        // Note: use `function` instead of arrow function to capture `this`\n        propertyDescriptors[getter.name] = {\n            configurable: false,\n            get: function () {\n                var /** @type {?} */ instanceCtx = new _ExecutionContext(_ctx, this, _classStmt.name, _ctx.vars);\n                return _executeFunctionStatements([], [], getter.body, instanceCtx, _visitor);\n            }\n        };\n    });\n    _classStmt.methods.forEach(function (method) {\n        var /** @type {?} */ paramNames = method.params.map(function (param) { return param.name; });\n        // Note: use `function` instead of arrow function to capture `this`\n        propertyDescriptors[method.name] = {\n            writable: false,\n            configurable: false,\n            value: function () {\n                var args = [];\n                for (var _i = 0; _i < arguments.length; _i++) {\n                    args[_i] = arguments[_i];\n                }\n                var /** @type {?} */ instanceCtx = new _ExecutionContext(_ctx, this, _classStmt.name, _ctx.vars);\n                return _executeFunctionStatements(paramNames, args, method.body, instanceCtx, _visitor);\n            }\n        };\n    });\n    var /** @type {?} */ ctorParamNames = _classStmt.constructorMethod.params.map(function (param) { return param.name; });\n    // Note: use `function` instead of arrow function to capture `this`\n    var /** @type {?} */ ctor = function () {\n        var _this = this;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var /** @type {?} */ instanceCtx = new _ExecutionContext(_ctx, this, _classStmt.name, _ctx.vars);\n        _classStmt.fields.forEach(function (field) { _this[field.name] = undefined; });\n        _executeFunctionStatements(ctorParamNames, args, _classStmt.constructorMethod.body, instanceCtx, _visitor);\n    };\n    var /** @type {?} */ superClass = _classStmt.parent ? _classStmt.parent.visitExpression(_visitor, _ctx) : Object;\n    ctor.prototype = Object.create(superClass.prototype, propertyDescriptors);\n    return ctor;\n}\nvar StatementInterpreter = (function () {\n    function StatementInterpreter() {\n    }\n    /**\n     * @param {?} ast\n     * @return {?}\n     */\n    StatementInterpreter.prototype.debugAst = function (ast) { return debugOutputAstAsTypeScript(ast); };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitDeclareVarStmt = function (stmt, ctx) {\n        ctx.vars.set(stmt.name, stmt.value.visitExpression(this, ctx));\n        return null;\n    };\n    /**\n     * @param {?} expr\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitWriteVarExpr = function (expr, ctx) {\n        var /** @type {?} */ value = expr.value.visitExpression(this, ctx);\n        var /** @type {?} */ currCtx = ctx;\n        while (currCtx != null) {\n            if (currCtx.vars.has(expr.name)) {\n                currCtx.vars.set(expr.name, value);\n                return value;\n            }\n            currCtx = currCtx.parent;\n        }\n        throw new Error(\"Not declared variable \" + expr.name);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitReadVarExpr = function (ast, ctx) {\n        var /** @type {?} */ varName = ast.name;\n        if (ast.builtin != null) {\n            switch (ast.builtin) {\n                case BuiltinVar.Super:\n                    return ctx.instance.__proto__;\n                case BuiltinVar.This:\n                    return ctx.instance;\n                case BuiltinVar.CatchError:\n                    varName = CATCH_ERROR_VAR$2;\n                    break;\n                case BuiltinVar.CatchStack:\n                    varName = CATCH_STACK_VAR$2;\n                    break;\n                default:\n                    throw new Error(\"Unknown builtin variable \" + ast.builtin);\n            }\n        }\n        var /** @type {?} */ currCtx = ctx;\n        while (currCtx != null) {\n            if (currCtx.vars.has(varName)) {\n                return currCtx.vars.get(varName);\n            }\n            currCtx = currCtx.parent;\n        }\n        throw new Error(\"Not declared variable \" + varName);\n    };\n    /**\n     * @param {?} expr\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitWriteKeyExpr = function (expr, ctx) {\n        var /** @type {?} */ receiver = expr.receiver.visitExpression(this, ctx);\n        var /** @type {?} */ index = expr.index.visitExpression(this, ctx);\n        var /** @type {?} */ value = expr.value.visitExpression(this, ctx);\n        receiver[index] = value;\n        return value;\n    };\n    /**\n     * @param {?} expr\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitWritePropExpr = function (expr, ctx) {\n        var /** @type {?} */ receiver = expr.receiver.visitExpression(this, ctx);\n        var /** @type {?} */ value = expr.value.visitExpression(this, ctx);\n        receiver[expr.name] = value;\n        return value;\n    };\n    /**\n     * @param {?} expr\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitInvokeMethodExpr = function (expr, ctx) {\n        var /** @type {?} */ receiver = expr.receiver.visitExpression(this, ctx);\n        var /** @type {?} */ args = this.visitAllExpressions(expr.args, ctx);\n        var /** @type {?} */ result;\n        if (expr.builtin != null) {\n            switch (expr.builtin) {\n                case BuiltinMethod.ConcatArray:\n                    result = receiver.concat.apply(receiver, args);\n                    break;\n                case BuiltinMethod.SubscribeObservable:\n                    result = receiver.subscribe({ next: args[0] });\n                    break;\n                case BuiltinMethod.Bind:\n                    result = receiver.bind.apply(receiver, args);\n                    break;\n                default:\n                    throw new Error(\"Unknown builtin method \" + expr.builtin);\n            }\n        }\n        else {\n            result = receiver[expr.name].apply(receiver, args);\n        }\n        return result;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitInvokeFunctionExpr = function (stmt, ctx) {\n        var /** @type {?} */ args = this.visitAllExpressions(stmt.args, ctx);\n        var /** @type {?} */ fnExpr = stmt.fn;\n        if (fnExpr instanceof ReadVarExpr && fnExpr.builtin === BuiltinVar.Super) {\n            ctx.instance.constructor.prototype.constructor.apply(ctx.instance, args);\n            return null;\n        }\n        else {\n            var /** @type {?} */ fn$$1 = stmt.fn.visitExpression(this, ctx);\n            return fn$$1.apply(null, args);\n        }\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitReturnStmt = function (stmt, ctx) {\n        return new ReturnValue(stmt.value.visitExpression(this, ctx));\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitDeclareClassStmt = function (stmt, ctx) {\n        var /** @type {?} */ clazz = createDynamicClass(stmt, ctx, this);\n        ctx.vars.set(stmt.name, clazz);\n        return null;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitExpressionStmt = function (stmt, ctx) {\n        return stmt.expr.visitExpression(this, ctx);\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitIfStmt = function (stmt, ctx) {\n        var /** @type {?} */ condition = stmt.condition.visitExpression(this, ctx);\n        if (condition) {\n            return this.visitAllStatements(stmt.trueCase, ctx);\n        }\n        else if (stmt.falseCase != null) {\n            return this.visitAllStatements(stmt.falseCase, ctx);\n        }\n        return null;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitTryCatchStmt = function (stmt, ctx) {\n        try {\n            return this.visitAllStatements(stmt.bodyStmts, ctx);\n        }\n        catch (e) {\n            var /** @type {?} */ childCtx = ctx.createChildWihtLocalVars();\n            childCtx.vars.set(CATCH_ERROR_VAR$2, e);\n            childCtx.vars.set(CATCH_STACK_VAR$2, e.stack);\n            return this.visitAllStatements(stmt.catchStmts, childCtx);\n        }\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitThrowStmt = function (stmt, ctx) {\n        throw stmt.error.visitExpression(this, ctx);\n    };\n    /**\n     * @param {?} stmt\n     * @param {?=} context\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitCommentStmt = function (stmt, context) { return null; };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitInstantiateExpr = function (ast, ctx) {\n        var /** @type {?} */ args = this.visitAllExpressions(ast.args, ctx);\n        var /** @type {?} */ clazz = ast.classExpr.visitExpression(this, ctx);\n        return new (clazz.bind.apply(clazz, [void 0].concat(args)))();\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitLiteralExpr = function (ast, ctx) { return ast.value; };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitExternalExpr = function (ast, ctx) {\n        return ast.value.reference;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitConditionalExpr = function (ast, ctx) {\n        if (ast.condition.visitExpression(this, ctx)) {\n            return ast.trueCase.visitExpression(this, ctx);\n        }\n        else if (ast.falseCase != null) {\n            return ast.falseCase.visitExpression(this, ctx);\n        }\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitNotExpr = function (ast, ctx) {\n        return !ast.condition.visitExpression(this, ctx);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitCastExpr = function (ast, ctx) {\n        return ast.value.visitExpression(this, ctx);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitFunctionExpr = function (ast, ctx) {\n        var /** @type {?} */ paramNames = ast.params.map(function (param) { return param.name; });\n        return _declareFn(paramNames, ast.statements, ctx, this);\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitDeclareFunctionStmt = function (stmt, ctx) {\n        var /** @type {?} */ paramNames = stmt.params.map(function (param) { return param.name; });\n        ctx.vars.set(stmt.name, _declareFn(paramNames, stmt.statements, ctx, this));\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitBinaryOperatorExpr = function (ast, ctx) {\n        var _this = this;\n        var /** @type {?} */ lhs = function () { return ast.lhs.visitExpression(_this, ctx); };\n        var /** @type {?} */ rhs = function () { return ast.rhs.visitExpression(_this, ctx); };\n        switch (ast.operator) {\n            case BinaryOperator.Equals:\n                return lhs() == rhs();\n            case BinaryOperator.Identical:\n                return lhs() === rhs();\n            case BinaryOperator.NotEquals:\n                return lhs() != rhs();\n            case BinaryOperator.NotIdentical:\n                return lhs() !== rhs();\n            case BinaryOperator.And:\n                return lhs() && rhs();\n            case BinaryOperator.Or:\n                return lhs() || rhs();\n            case BinaryOperator.Plus:\n                return lhs() + rhs();\n            case BinaryOperator.Minus:\n                return lhs() - rhs();\n            case BinaryOperator.Divide:\n                return lhs() / rhs();\n            case BinaryOperator.Multiply:\n                return lhs() * rhs();\n            case BinaryOperator.Modulo:\n                return lhs() % rhs();\n            case BinaryOperator.Lower:\n                return lhs() < rhs();\n            case BinaryOperator.LowerEquals:\n                return lhs() <= rhs();\n            case BinaryOperator.Bigger:\n                return lhs() > rhs();\n            case BinaryOperator.BiggerEquals:\n                return lhs() >= rhs();\n            default:\n                throw new Error(\"Unknown operator \" + ast.operator);\n        }\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitReadPropExpr = function (ast, ctx) {\n        var /** @type {?} */ result;\n        var /** @type {?} */ receiver = ast.receiver.visitExpression(this, ctx);\n        result = receiver[ast.name];\n        return result;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitReadKeyExpr = function (ast, ctx) {\n        var /** @type {?} */ receiver = ast.receiver.visitExpression(this, ctx);\n        var /** @type {?} */ prop = ast.index.visitExpression(this, ctx);\n        return receiver[prop];\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitLiteralArrayExpr = function (ast, ctx) {\n        return this.visitAllExpressions(ast.entries, ctx);\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitLiteralMapExpr = function (ast, ctx) {\n        var _this = this;\n        var /** @type {?} */ result = {};\n        ast.entries.forEach(function (entry) { return ((result))[entry.key] = entry.value.visitExpression(_this, ctx); });\n        return result;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} context\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitCommaExpr = function (ast, context) {\n        var /** @type {?} */ values = this.visitAllExpressions(ast.parts, context);\n        return values[values.length - 1];\n    };\n    /**\n     * @param {?} expressions\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitAllExpressions = function (expressions, ctx) {\n        var _this = this;\n        return expressions.map(function (expr) { return expr.visitExpression(_this, ctx); });\n    };\n    /**\n     * @param {?} statements\n     * @param {?} ctx\n     * @return {?}\n     */\n    StatementInterpreter.prototype.visitAllStatements = function (statements, ctx) {\n        for (var /** @type {?} */ i = 0; i < statements.length; i++) {\n            var /** @type {?} */ stmt = statements[i];\n            var /** @type {?} */ val = stmt.visitStatement(this, ctx);\n            if (val instanceof ReturnValue) {\n                return val;\n            }\n        }\n        return null;\n    };\n    return StatementInterpreter;\n}());\n/**\n * @param {?} varNames\n * @param {?} statements\n * @param {?} ctx\n * @param {?} visitor\n * @return {?}\n */\nfunction _declareFn(varNames, statements, ctx, visitor) {\n    return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        return _executeFunctionStatements(varNames, args, statements, ctx, visitor);\n    };\n}\nvar CATCH_ERROR_VAR$2 = 'error';\nvar CATCH_STACK_VAR$2 = 'stack';\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this 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 * @abstract\n */\nvar AbstractJsEmitterVisitor = (function (_super) {\n    __extends(AbstractJsEmitterVisitor, _super);\n    function AbstractJsEmitterVisitor() {\n        return _super.call(this, false) || this;\n    }\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractJsEmitterVisitor.prototype.visitDeclareClassStmt = function (stmt, ctx) {\n        var _this = this;\n        ctx.pushClass(stmt);\n        this._visitClassConstructor(stmt, ctx);\n        if (stmt.parent != null) {\n            ctx.print(stmt, stmt.name + \".prototype = Object.create(\");\n            stmt.parent.visitExpression(this, ctx);\n            ctx.println(stmt, \".prototype);\");\n        }\n        stmt.getters.forEach(function (getter) { return _this._visitClassGetter(stmt, getter, ctx); });\n        stmt.methods.forEach(function (method) { return _this._visitClassMethod(stmt, method, ctx); });\n        ctx.popClass();\n        return null;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractJsEmitterVisitor.prototype._visitClassConstructor = function (stmt, ctx) {\n        ctx.print(stmt, \"function \" + stmt.name + \"(\");\n        if (stmt.constructorMethod != null) {\n            this._visitParams(stmt.constructorMethod.params, ctx);\n        }\n        ctx.println(stmt, \") {\");\n        ctx.incIndent();\n        if (stmt.constructorMethod != null) {\n            if (stmt.constructorMethod.body.length > 0) {\n                ctx.println(stmt, \"var self = this;\");\n                this.visitAllStatements(stmt.constructorMethod.body, ctx);\n            }\n        }\n        ctx.decIndent();\n        ctx.println(stmt, \"}\");\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} getter\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractJsEmitterVisitor.prototype._visitClassGetter = function (stmt, getter, ctx) {\n        ctx.println(stmt, \"Object.defineProperty(\" + stmt.name + \".prototype, '\" + getter.name + \"', { get: function() {\");\n        ctx.incIndent();\n        if (getter.body.length > 0) {\n            ctx.println(stmt, \"var self = this;\");\n            this.visitAllStatements(getter.body, ctx);\n        }\n        ctx.decIndent();\n        ctx.println(stmt, \"}});\");\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} method\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractJsEmitterVisitor.prototype._visitClassMethod = function (stmt, method, ctx) {\n        ctx.print(stmt, stmt.name + \".prototype.\" + method.name + \" = function(\");\n        this._visitParams(method.params, ctx);\n        ctx.println(stmt, \") {\");\n        ctx.incIndent();\n        if (method.body.length > 0) {\n            ctx.println(stmt, \"var self = this;\");\n            this.visitAllStatements(method.body, ctx);\n        }\n        ctx.decIndent();\n        ctx.println(stmt, \"};\");\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractJsEmitterVisitor.prototype.visitReadVarExpr = function (ast, ctx) {\n        if (ast.builtin === BuiltinVar.This) {\n            ctx.print(ast, 'self');\n        }\n        else if (ast.builtin === BuiltinVar.Super) {\n            throw new Error(\"'super' needs to be handled at a parent ast node, not at the variable level!\");\n        }\n        else {\n            _super.prototype.visitReadVarExpr.call(this, ast, ctx);\n        }\n        return null;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractJsEmitterVisitor.prototype.visitDeclareVarStmt = function (stmt, ctx) {\n        ctx.print(stmt, \"var \" + stmt.name + \" = \");\n        stmt.value.visitExpression(this, ctx);\n        ctx.println(stmt, \";\");\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractJsEmitterVisitor.prototype.visitCastExpr = function (ast, ctx) {\n        ast.value.visitExpression(this, ctx);\n        return null;\n    };\n    /**\n     * @param {?} expr\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractJsEmitterVisitor.prototype.visitInvokeFunctionExpr = function (expr, ctx) {\n        var /** @type {?} */ fnExpr = expr.fn;\n        if (fnExpr instanceof ReadVarExpr && fnExpr.builtin === BuiltinVar.Super) {\n            ctx.currentClass.parent.visitExpression(this, ctx);\n            ctx.print(expr, \".call(this\");\n            if (expr.args.length > 0) {\n                ctx.print(expr, \", \");\n                this.visitAllExpressions(expr.args, ctx, ',');\n            }\n            ctx.print(expr, \")\");\n        }\n        else {\n            _super.prototype.visitInvokeFunctionExpr.call(this, expr, ctx);\n        }\n        return null;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractJsEmitterVisitor.prototype.visitFunctionExpr = function (ast, ctx) {\n        ctx.print(ast, \"function(\");\n        this._visitParams(ast.params, ctx);\n        ctx.println(ast, \") {\");\n        ctx.incIndent();\n        this.visitAllStatements(ast.statements, ctx);\n        ctx.decIndent();\n        ctx.print(ast, \"}\");\n        return null;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractJsEmitterVisitor.prototype.visitDeclareFunctionStmt = function (stmt, ctx) {\n        ctx.print(stmt, \"function \" + stmt.name + \"(\");\n        this._visitParams(stmt.params, ctx);\n        ctx.println(stmt, \") {\");\n        ctx.incIndent();\n        this.visitAllStatements(stmt.statements, ctx);\n        ctx.decIndent();\n        ctx.println(stmt, \"}\");\n        return null;\n    };\n    /**\n     * @param {?} stmt\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractJsEmitterVisitor.prototype.visitTryCatchStmt = function (stmt, ctx) {\n        ctx.println(stmt, \"try {\");\n        ctx.incIndent();\n        this.visitAllStatements(stmt.bodyStmts, ctx);\n        ctx.decIndent();\n        ctx.println(stmt, \"} catch (\" + CATCH_ERROR_VAR$1.name + \") {\");\n        ctx.incIndent();\n        var /** @type {?} */ catchStmts = [/** @type {?} */ (CATCH_STACK_VAR$1.set(CATCH_ERROR_VAR$1.prop('stack')).toDeclStmt(null, [\n                StmtModifier.Final\n            ]))].concat(stmt.catchStmts);\n        this.visitAllStatements(catchStmts, ctx);\n        ctx.decIndent();\n        ctx.println(stmt, \"}\");\n        return null;\n    };\n    /**\n     * @param {?} params\n     * @param {?} ctx\n     * @return {?}\n     */\n    AbstractJsEmitterVisitor.prototype._visitParams = function (params, ctx) {\n        this.visitAllObjects(function (param) { return ctx.print(null, param.name); }, params, ctx, ',');\n    };\n    /**\n     * @param {?} method\n     * @return {?}\n     */\n    AbstractJsEmitterVisitor.prototype.getBuiltinMethodName = function (method) {\n        var /** @type {?} */ name;\n        switch (method) {\n            case BuiltinMethod.ConcatArray:\n                name = 'concat';\n                break;\n            case BuiltinMethod.SubscribeObservable:\n                name = 'subscribe';\n                break;\n            case BuiltinMethod.Bind:\n                name = 'bind';\n                break;\n            default:\n                throw new Error(\"Unknown builtin method: \" + method);\n        }\n        return name;\n    };\n    return AbstractJsEmitterVisitor;\n}(AbstractEmitterVisitor));\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @param {?} sourceUrl\n * @param {?} ctx\n * @param {?} vars\n * @return {?}\n */\nfunction evalExpression(sourceUrl$$1, ctx, vars) {\n    var /** @type {?} */ fnBody = ctx.toSource() + \"\\n//# sourceURL=\" + sourceUrl$$1;\n    var /** @type {?} */ fnArgNames = [];\n    var /** @type {?} */ fnArgValues = [];\n    for (var /** @type {?} */ argName in vars) {\n        fnArgNames.push(argName);\n        fnArgValues.push(vars[argName]);\n    }\n    if (isDevMode()) {\n        // using `new Function(...)` generates a header, 1 line of no arguments, 2 lines otherwise\n        // E.g. ```\n        // function anonymous(a,b,c\n        // /**/) { ... }```\n        // We don't want to hard code this fact, so we auto detect it via an empty function first.\n        var /** @type {?} */ emptyFn = new (Function.bind.apply(Function, [void 0].concat(fnArgNames.concat('return null;'))))().toString();\n        var /** @type {?} */ headerLines = emptyFn.slice(0, emptyFn.indexOf('return null;')).split('\\n').length - 1;\n        fnBody += \"\\n\" + ctx.toSourceMapGenerator(sourceUrl$$1, sourceUrl$$1, headerLines).toJsComment();\n    }\n    return new (Function.bind.apply(Function, [void 0].concat(fnArgNames.concat(fnBody))))().apply(void 0, fnArgValues);\n}\n/**\n * @param {?} sourceUrl\n * @param {?} statements\n * @param {?} resultVars\n * @return {?}\n */\nfunction jitStatements(sourceUrl$$1, statements, resultVars) {\n    var /** @type {?} */ converter = new JitEmitterVisitor();\n    var /** @type {?} */ ctx = EmitterVisitorContext.createRoot(resultVars);\n    var /** @type {?} */ returnStmt = new ReturnStatement(literalArr(resultVars.map(function (resultVar) { return variable(resultVar); })));\n    converter.visitAllStatements(statements.concat([returnStmt]), ctx);\n    return evalExpression(sourceUrl$$1, ctx, converter.getArgs());\n}\nvar JitEmitterVisitor = (function (_super) {\n    __extends(JitEmitterVisitor, _super);\n    function JitEmitterVisitor() {\n        var _this = _super.apply(this, arguments) || this;\n        _this._evalArgNames = [];\n        _this._evalArgValues = [];\n        return _this;\n    }\n    /**\n     * @return {?}\n     */\n    JitEmitterVisitor.prototype.getArgs = function () {\n        var /** @type {?} */ result = {};\n        for (var /** @type {?} */ i = 0; i < this._evalArgNames.length; i++) {\n            result[this._evalArgNames[i]] = this._evalArgValues[i];\n        }\n        return result;\n    };\n    /**\n     * @param {?} ast\n     * @param {?} ctx\n     * @return {?}\n     */\n    JitEmitterVisitor.prototype.visitExternalExpr = function (ast, ctx) {\n        var /** @type {?} */ value = ast.value.reference;\n        var /** @type {?} */ id = this._evalArgValues.indexOf(value);\n        if (id === -1) {\n            id = this._evalArgValues.length;\n            this._evalArgValues.push(value);\n            var /** @type {?} */ name = identifierName(ast.value) || 'val';\n            this._evalArgNames.push(\"jit_\" + name + id);\n        }\n        ctx.print(ast, this._evalArgNames[id]);\n        return null;\n    };\n    return JitEmitterVisitor;\n}(AbstractJsEmitterVisitor));\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * An internal module of the Angular compiler that begins with component types,\n * extracts templates, and eventually produces a compiled version of the component\n * ready for linking into an application.\n *\n * \\@security When compiling templates at runtime, you must ensure that the entire template comes\n * from a trusted source. Attacker-controlled data introduced by a template could expose your\n * application to XSS risks.  For more detail, see the [Security Guide](http://g.co/ng/security).\n */\nvar JitCompiler = (function () {\n    /**\n     * @param {?} _injector\n     * @param {?} _metadataResolver\n     * @param {?} _templateParser\n     * @param {?} _styleCompiler\n     * @param {?} _viewCompiler\n     * @param {?} _ngModuleCompiler\n     * @param {?} _compilerConfig\n     * @param {?} _console\n     */\n    function JitCompiler(_injector, _metadataResolver, _templateParser, _styleCompiler, _viewCompiler, _ngModuleCompiler, _compilerConfig, _console) {\n        this._injector = _injector;\n        this._metadataResolver = _metadataResolver;\n        this._templateParser = _templateParser;\n        this._styleCompiler = _styleCompiler;\n        this._viewCompiler = _viewCompiler;\n        this._ngModuleCompiler = _ngModuleCompiler;\n        this._compilerConfig = _compilerConfig;\n        this._console = _console;\n        this._compiledTemplateCache = new Map();\n        this._compiledHostTemplateCache = new Map();\n        this._compiledDirectiveWrapperCache = new Map();\n        this._compiledNgModuleCache = new Map();\n        this._sharedStylesheetCount = 0;\n    }\n    Object.defineProperty(JitCompiler.prototype, \"injector\", {\n        /**\n         * @return {?}\n         */\n        get: function () { return this._injector; },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @template T\n     * @param {?} moduleType\n     * @return {?}\n     */\n    JitCompiler.prototype.compileModuleSync = function (moduleType) {\n        return this._compileModuleAndComponents(moduleType, true).syncResult;\n    };\n    /**\n     * @template T\n     * @param {?} moduleType\n     * @return {?}\n     */\n    JitCompiler.prototype.compileModuleAsync = function (moduleType) {\n        return this._compileModuleAndComponents(moduleType, false).asyncResult;\n    };\n    /**\n     * @template T\n     * @param {?} moduleType\n     * @return {?}\n     */\n    JitCompiler.prototype.compileModuleAndAllComponentsSync = function (moduleType) {\n        return this._compileModuleAndAllComponents(moduleType, true).syncResult;\n    };\n    /**\n     * @template T\n     * @param {?} moduleType\n     * @return {?}\n     */\n    JitCompiler.prototype.compileModuleAndAllComponentsAsync = function (moduleType) {\n        return this._compileModuleAndAllComponents(moduleType, false).asyncResult;\n    };\n    /**\n     * @param {?} component\n     * @return {?}\n     */\n    JitCompiler.prototype.getNgContentSelectors = function (component) {\n        this._console.warn('Compiler.getNgContentSelectors is deprecated. Use ComponentFactory.ngContentSelectors instead!');\n        var /** @type {?} */ template = this._compiledTemplateCache.get(component);\n        if (!template) {\n            throw new Error(\"The component \" + ɵstringify(component) + \" is not yet compiled!\");\n        }\n        return template.compMeta.template.ngContentSelectors;\n    };\n    /**\n     * @template T\n     * @param {?} moduleType\n     * @param {?} isSync\n     * @return {?}\n     */\n    JitCompiler.prototype._compileModuleAndComponents = function (moduleType, isSync) {\n        var _this = this;\n        var /** @type {?} */ loadingPromise = this._loadModules(moduleType, isSync);\n        var /** @type {?} */ createResult = function () {\n            _this._compileComponents(moduleType, null);\n            return _this._compileModule(moduleType);\n        };\n        if (isSync) {\n            return new SyncAsyncResult(createResult());\n        }\n        else {\n            return new SyncAsyncResult(null, loadingPromise.then(createResult));\n        }\n    };\n    /**\n     * @template T\n     * @param {?} moduleType\n     * @param {?} isSync\n     * @return {?}\n     */\n    JitCompiler.prototype._compileModuleAndAllComponents = function (moduleType, isSync) {\n        var _this = this;\n        var /** @type {?} */ loadingPromise = this._loadModules(moduleType, isSync);\n        var /** @type {?} */ createResult = function () {\n            var /** @type {?} */ componentFactories = [];\n            _this._compileComponents(moduleType, componentFactories);\n            return new ModuleWithComponentFactories(_this._compileModule(moduleType), componentFactories);\n        };\n        if (isSync) {\n            return new SyncAsyncResult(createResult());\n        }\n        else {\n            return new SyncAsyncResult(null, loadingPromise.then(createResult));\n        }\n    };\n    /**\n     * @param {?} mainModule\n     * @param {?} isSync\n     * @return {?}\n     */\n    JitCompiler.prototype._loadModules = function (mainModule, isSync) {\n        var _this = this;\n        var /** @type {?} */ loadingPromises = [];\n        var /** @type {?} */ ngModule = this._metadataResolver.getNgModuleMetadata(mainModule);\n        // Note: the loadingPromise for a module only includes the loading of the exported directives\n        // of imported modules.\n        // However, for runtime compilation, we want to transitively compile all modules,\n        // so we also need to call loadNgModuleDirectiveAndPipeMetadata for all nested modules.\n        ngModule.transitiveModule.modules.forEach(function (localModuleMeta) {\n            loadingPromises.push(_this._metadataResolver.loadNgModuleDirectiveAndPipeMetadata(localModuleMeta.reference, isSync));\n        });\n        return Promise.all(loadingPromises);\n    };\n    /**\n     * @template T\n     * @param {?} moduleType\n     * @return {?}\n     */\n    JitCompiler.prototype._compileModule = function (moduleType) {\n        var _this = this;\n        var /** @type {?} */ ngModuleFactory = this._compiledNgModuleCache.get(moduleType);\n        if (!ngModuleFactory) {\n            var /** @type {?} */ moduleMeta_1 = this._metadataResolver.getNgModuleMetadata(moduleType);\n            // Always provide a bound Compiler\n            var /** @type {?} */ extraProviders = [this._metadataResolver.getProviderMetadata(new ProviderMeta(Compiler, { useFactory: function () { return new ModuleBoundCompiler(_this, moduleMeta_1.type.reference); } }))];\n            var /** @type {?} */ compileResult = this._ngModuleCompiler.compile(moduleMeta_1, extraProviders);\n            if (!this._compilerConfig.useJit) {\n                ngModuleFactory =\n                    interpretStatements(compileResult.statements, [compileResult.ngModuleFactoryVar])[0];\n            }\n            else {\n                ngModuleFactory = jitStatements(ngModuleJitUrl(moduleMeta_1), compileResult.statements, [compileResult.ngModuleFactoryVar])[0];\n            }\n            this._compiledNgModuleCache.set(moduleMeta_1.type.reference, ngModuleFactory);\n        }\n        return ngModuleFactory;\n    };\n    /**\n     * \\@internal\n     * @param {?} mainModule\n     * @param {?} allComponentFactories\n     * @return {?}\n     */\n    JitCompiler.prototype._compileComponents = function (mainModule, allComponentFactories) {\n        var _this = this;\n        var /** @type {?} */ ngModule = this._metadataResolver.getNgModuleMetadata(mainModule);\n        var /** @type {?} */ moduleByDirective = new Map();\n        var /** @type {?} */ templates = new Set();\n        ngModule.transitiveModule.modules.forEach(function (localModuleSummary) {\n            var /** @type {?} */ localModuleMeta = _this._metadataResolver.getNgModuleMetadata(localModuleSummary.reference);\n            localModuleMeta.declaredDirectives.forEach(function (dirIdentifier) {\n                moduleByDirective.set(dirIdentifier.reference, localModuleMeta);\n                var /** @type {?} */ dirMeta = _this._metadataResolver.getDirectiveMetadata(dirIdentifier.reference);\n                if (dirMeta.isComponent) {\n                    templates.add(_this._createCompiledTemplate(dirMeta, localModuleMeta));\n                    if (allComponentFactories) {\n                        var /** @type {?} */ template = _this._createCompiledHostTemplate(dirMeta.type.reference, localModuleMeta);\n                        templates.add(template);\n                        allComponentFactories.push(/** @type {?} */ (dirMeta.componentFactory));\n                    }\n                }\n            });\n        });\n        ngModule.transitiveModule.modules.forEach(function (localModuleSummary) {\n            var /** @type {?} */ localModuleMeta = _this._metadataResolver.getNgModuleMetadata(localModuleSummary.reference);\n            localModuleMeta.declaredDirectives.forEach(function (dirIdentifier) {\n                var /** @type {?} */ dirMeta = _this._metadataResolver.getDirectiveMetadata(dirIdentifier.reference);\n                if (dirMeta.isComponent) {\n                    dirMeta.entryComponents.forEach(function (entryComponentType) {\n                        var /** @type {?} */ moduleMeta = moduleByDirective.get(entryComponentType.componentType);\n                        templates.add(_this._createCompiledHostTemplate(entryComponentType.componentType, moduleMeta));\n                    });\n                }\n            });\n            localModuleMeta.entryComponents.forEach(function (entryComponentType) {\n                var /** @type {?} */ moduleMeta = moduleByDirective.get(entryComponentType.componentType);\n                templates.add(_this._createCompiledHostTemplate(entryComponentType.componentType, moduleMeta));\n            });\n        });\n        templates.forEach(function (template) { return _this._compileTemplate(template); });\n    };\n    /**\n     * @param {?} type\n     * @return {?}\n     */\n    JitCompiler.prototype.clearCacheFor = function (type) {\n        this._compiledNgModuleCache.delete(type);\n        this._metadataResolver.clearCacheFor(type);\n        this._compiledHostTemplateCache.delete(type);\n        var /** @type {?} */ compiledTemplate = this._compiledTemplateCache.get(type);\n        if (compiledTemplate) {\n            this._compiledTemplateCache.delete(type);\n        }\n    };\n    /**\n     * @return {?}\n     */\n    JitCompiler.prototype.clearCache = function () {\n        this._metadataResolver.clearCache();\n        this._compiledTemplateCache.clear();\n        this._compiledHostTemplateCache.clear();\n        this._compiledNgModuleCache.clear();\n    };\n    /**\n     * @param {?} compType\n     * @param {?} ngModule\n     * @return {?}\n     */\n    JitCompiler.prototype._createCompiledHostTemplate = function (compType, ngModule) {\n        if (!ngModule) {\n            throw new Error(\"Component \" + ɵstringify(compType) + \" is not part of any NgModule or the module has not been imported into your module.\");\n        }\n        var /** @type {?} */ compiledTemplate = this._compiledHostTemplateCache.get(compType);\n        if (!compiledTemplate) {\n            var /** @type {?} */ compMeta = this._metadataResolver.getDirectiveMetadata(compType);\n            assertComponent(compMeta);\n            var /** @type {?} */ componentFactory = (compMeta.componentFactory);\n            var /** @type {?} */ hostClass = this._metadataResolver.getHostComponentType(compType);\n            var /** @type {?} */ hostMeta = createHostComponentMeta(hostClass, compMeta, /** @type {?} */ (ɵgetComponentViewDefinitionFactory(componentFactory)));\n            compiledTemplate =\n                new CompiledTemplate(true, compMeta.type, hostMeta, ngModule, [compMeta.type]);\n            this._compiledHostTemplateCache.set(compType, compiledTemplate);\n        }\n        return compiledTemplate;\n    };\n    /**\n     * @param {?} compMeta\n     * @param {?} ngModule\n     * @return {?}\n     */\n    JitCompiler.prototype._createCompiledTemplate = function (compMeta, ngModule) {\n        var /** @type {?} */ compiledTemplate = this._compiledTemplateCache.get(compMeta.type.reference);\n        if (!compiledTemplate) {\n            assertComponent(compMeta);\n            compiledTemplate = new CompiledTemplate(false, compMeta.type, compMeta, ngModule, ngModule.transitiveModule.directives);\n            this._compiledTemplateCache.set(compMeta.type.reference, compiledTemplate);\n        }\n        return compiledTemplate;\n    };\n    /**\n     * @param {?} template\n     * @return {?}\n     */\n    JitCompiler.prototype._compileTemplate = function (template) {\n        var _this = this;\n        if (template.isCompiled) {\n            return;\n        }\n        var /** @type {?} */ compMeta = template.compMeta;\n        var /** @type {?} */ externalStylesheetsByModuleUrl = new Map();\n        var /** @type {?} */ stylesCompileResult = this._styleCompiler.compileComponent(compMeta);\n        stylesCompileResult.externalStylesheets.forEach(function (r) { externalStylesheetsByModuleUrl.set(r.meta.moduleUrl, r); });\n        this._resolveStylesCompileResult(stylesCompileResult.componentStylesheet, externalStylesheetsByModuleUrl);\n        var /** @type {?} */ directives = template.directives.map(function (dir) { return _this._metadataResolver.getDirectiveSummary(dir.reference); });\n        var /** @type {?} */ pipes = template.ngModule.transitiveModule.pipes.map(function (pipe) { return _this._metadataResolver.getPipeSummary(pipe.reference); });\n        var _a = this._templateParser.parse(compMeta, compMeta.template.template, directives, pipes, template.ngModule.schemas, templateSourceUrl(template.ngModule.type, template.compMeta, template.compMeta.template)), parsedTemplate = _a.template, usedPipes = _a.pipes;\n        var /** @type {?} */ compileResult = this._viewCompiler.compileComponent(compMeta, parsedTemplate, variable(stylesCompileResult.componentStylesheet.stylesVar), usedPipes);\n        var /** @type {?} */ statements = stylesCompileResult.componentStylesheet.statements.concat(compileResult.statements);\n        var /** @type {?} */ viewClassAndRendererTypeVars = compMeta.isHost ?\n            [compileResult.viewClassVar] :\n            [compileResult.viewClassVar, compileResult.rendererTypeVar];\n        var /** @type {?} */ viewClass;\n        var /** @type {?} */ rendererType;\n        if (!this._compilerConfig.useJit) {\n            _b = interpretStatements(statements, viewClassAndRendererTypeVars), viewClass = _b[0], rendererType = _b[1];\n        }\n        else {\n            _c = jitStatements(templateJitUrl(template.ngModule.type, template.compMeta), statements, viewClassAndRendererTypeVars), viewClass = _c[0], rendererType = _c[1];\n        }\n        template.compiled(viewClass, rendererType);\n        var _b, _c;\n    };\n    /**\n     * @param {?} result\n     * @param {?} externalStylesheetsByModuleUrl\n     * @return {?}\n     */\n    JitCompiler.prototype._resolveStylesCompileResult = function (result, externalStylesheetsByModuleUrl) {\n        var _this = this;\n        result.dependencies.forEach(function (dep, i) {\n            var /** @type {?} */ nestedCompileResult = externalStylesheetsByModuleUrl.get(dep.moduleUrl);\n            var /** @type {?} */ nestedStylesArr = _this._resolveAndEvalStylesCompileResult(nestedCompileResult, externalStylesheetsByModuleUrl);\n            dep.valuePlaceholder.reference = nestedStylesArr;\n        });\n    };\n    /**\n     * @param {?} result\n     * @param {?} externalStylesheetsByModuleUrl\n     * @return {?}\n     */\n    JitCompiler.prototype._resolveAndEvalStylesCompileResult = function (result, externalStylesheetsByModuleUrl) {\n        this._resolveStylesCompileResult(result, externalStylesheetsByModuleUrl);\n        if (!this._compilerConfig.useJit) {\n            return interpretStatements(result.statements, [result.stylesVar])[0];\n        }\n        else {\n            return jitStatements(sharedStylesheetJitUrl(result.meta, this._sharedStylesheetCount++), result.statements, [result.stylesVar])[0];\n        }\n    };\n    return JitCompiler;\n}());\nJitCompiler.decorators = [\n    { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nJitCompiler.ctorParameters = function () { return [\n    { type: Injector, },\n    { type: CompileMetadataResolver, },\n    { type: TemplateParser, },\n    { type: StyleCompiler, },\n    { type: ViewCompiler, },\n    { type: NgModuleCompiler, },\n    { type: CompilerConfig, },\n    { type: ɵConsole, },\n]; };\nvar CompiledTemplate = (function () {\n    /**\n     * @param {?} isHost\n     * @param {?} compType\n     * @param {?} compMeta\n     * @param {?} ngModule\n     * @param {?} directives\n     */\n    function CompiledTemplate(isHost, compType, compMeta, ngModule, directives) {\n        this.isHost = isHost;\n        this.compType = compType;\n        this.compMeta = compMeta;\n        this.ngModule = ngModule;\n        this.directives = directives;\n        this._viewClass = null;\n        this.isCompiled = false;\n    }\n    /**\n     * @param {?} viewClass\n     * @param {?} rendererType\n     * @return {?}\n     */\n    CompiledTemplate.prototype.compiled = function (viewClass, rendererType) {\n        this._viewClass = viewClass;\n        ((this.compMeta.componentViewType)).setDelegate(viewClass);\n        for (var /** @type {?} */ prop in rendererType) {\n            ((this.compMeta.rendererType))[prop] = rendererType[prop];\n        }\n        this.isCompiled = true;\n    };\n    return CompiledTemplate;\n}());\n/**\n * @param {?} meta\n * @return {?}\n */\nfunction assertComponent(meta) {\n    if (!meta.isComponent) {\n        throw new Error(\"Could not compile '\" + identifierName(meta.type) + \"' because it is not a component.\");\n    }\n}\n/**\n * Implements `Compiler` by delegating to the JitCompiler using a known module.\n */\nvar ModuleBoundCompiler = (function () {\n    /**\n     * @param {?} _delegate\n     * @param {?} _ngModule\n     */\n    function ModuleBoundCompiler(_delegate, _ngModule) {\n        this._delegate = _delegate;\n        this._ngModule = _ngModule;\n    }\n    Object.defineProperty(ModuleBoundCompiler.prototype, \"_injector\", {\n        /**\n         * @return {?}\n         */\n        get: function () { return this._delegate.injector; },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @template T\n     * @param {?} moduleType\n     * @return {?}\n     */\n    ModuleBoundCompiler.prototype.compileModuleSync = function (moduleType) {\n        return this._delegate.compileModuleSync(moduleType);\n    };\n    /**\n     * @template T\n     * @param {?} moduleType\n     * @return {?}\n     */\n    ModuleBoundCompiler.prototype.compileModuleAsync = function (moduleType) {\n        return this._delegate.compileModuleAsync(moduleType);\n    };\n    /**\n     * @template T\n     * @param {?} moduleType\n     * @return {?}\n     */\n    ModuleBoundCompiler.prototype.compileModuleAndAllComponentsSync = function (moduleType) {\n        return this._delegate.compileModuleAndAllComponentsSync(moduleType);\n    };\n    /**\n     * @template T\n     * @param {?} moduleType\n     * @return {?}\n     */\n    ModuleBoundCompiler.prototype.compileModuleAndAllComponentsAsync = function (moduleType) {\n        return this._delegate.compileModuleAndAllComponentsAsync(moduleType);\n    };\n    /**\n     * @param {?} component\n     * @return {?}\n     */\n    ModuleBoundCompiler.prototype.getNgContentSelectors = function (component) {\n        return this._delegate.getNgContentSelectors(component);\n    };\n    /**\n     * Clears all caches\n     * @return {?}\n     */\n    ModuleBoundCompiler.prototype.clearCache = function () { this._delegate.clearCache(); };\n    /**\n     * Clears the cache for the given component/ngModule.\n     * @param {?} type\n     * @return {?}\n     */\n    ModuleBoundCompiler.prototype.clearCacheFor = function (type) { this._delegate.clearCacheFor(type); };\n    return ModuleBoundCompiler;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A container for message extracted from the templates.\n */\nvar MessageBundle = (function () {\n    /**\n     * @param {?} _htmlParser\n     * @param {?} _implicitTags\n     * @param {?} _implicitAttrs\n     * @param {?=} _locale\n     */\n    function MessageBundle(_htmlParser, _implicitTags, _implicitAttrs, _locale) {\n        if (_locale === void 0) { _locale = null; }\n        this._htmlParser = _htmlParser;\n        this._implicitTags = _implicitTags;\n        this._implicitAttrs = _implicitAttrs;\n        this._locale = _locale;\n        this._messages = [];\n    }\n    /**\n     * @param {?} html\n     * @param {?} url\n     * @param {?} interpolationConfig\n     * @return {?}\n     */\n    MessageBundle.prototype.updateFromTemplate = function (html, url, interpolationConfig) {\n        var /** @type {?} */ htmlParserResult = this._htmlParser.parse(html, url, true, interpolationConfig);\n        if (htmlParserResult.errors.length) {\n            return htmlParserResult.errors;\n        }\n        var /** @type {?} */ i18nParserResult = extractMessages(htmlParserResult.rootNodes, interpolationConfig, this._implicitTags, this._implicitAttrs);\n        if (i18nParserResult.errors.length) {\n            return i18nParserResult.errors;\n        }\n        (_a = this._messages).push.apply(_a, i18nParserResult.messages);\n        var _a;\n    };\n    /**\n     * @return {?}\n     */\n    MessageBundle.prototype.getMessages = function () { return this._messages; };\n    /**\n     * @param {?} serializer\n     * @return {?}\n     */\n    MessageBundle.prototype.write = function (serializer) {\n        var /** @type {?} */ messages = {};\n        var /** @type {?} */ mapperVisitor = new MapPlaceholderNames();\n        // Deduplicate messages based on their ID\n        this._messages.forEach(function (message) {\n            var /** @type {?} */ id = serializer.digest(message);\n            if (!messages.hasOwnProperty(id)) {\n                messages[id] = message;\n            }\n        });\n        // Transform placeholder names using the serializer mapping\n        var /** @type {?} */ msgList = Object.keys(messages).map(function (id) {\n            var /** @type {?} */ mapper = serializer.createNameMapper(messages[id]);\n            var /** @type {?} */ src = messages[id];\n            var /** @type {?} */ nodes = mapper ? mapperVisitor.convert(src.nodes, mapper) : src.nodes;\n            return new Message(nodes, {}, {}, src.meaning, src.description, id);\n        });\n        return serializer.write(msgList, this._locale);\n    };\n    return MessageBundle;\n}());\nvar MapPlaceholderNames = (function (_super) {\n    __extends(MapPlaceholderNames, _super);\n    function MapPlaceholderNames() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /**\n     * @param {?} nodes\n     * @param {?} mapper\n     * @return {?}\n     */\n    MapPlaceholderNames.prototype.convert = function (nodes, mapper) {\n        var _this = this;\n        return mapper ? nodes.map(function (n) { return n.visit(_this, mapper); }) : nodes;\n    };\n    /**\n     * @param {?} ph\n     * @param {?} mapper\n     * @return {?}\n     */\n    MapPlaceholderNames.prototype.visitTagPlaceholder = function (ph, mapper) {\n        var _this = this;\n        var /** @type {?} */ startName = mapper.toPublicName(ph.startName);\n        var /** @type {?} */ closeName = ph.closeName ? mapper.toPublicName(ph.closeName) : ph.closeName;\n        var /** @type {?} */ children = ph.children.map(function (n) { return n.visit(_this, mapper); });\n        return new TagPlaceholder(ph.tag, ph.attrs, startName, closeName, children, ph.isVoid, ph.sourceSpan);\n    };\n    /**\n     * @param {?} ph\n     * @param {?} mapper\n     * @return {?}\n     */\n    MapPlaceholderNames.prototype.visitPlaceholder = function (ph, mapper) {\n        return new Placeholder(ph.value, mapper.toPublicName(ph.name), ph.sourceSpan);\n    };\n    /**\n     * @param {?} ph\n     * @param {?} mapper\n     * @return {?}\n     */\n    MapPlaceholderNames.prototype.visitIcuPlaceholder = function (ph, mapper) {\n        return new IcuPlaceholder(ph.value, mapper.toPublicName(ph.name), ph.sourceSpan);\n    };\n    return MapPlaceholderNames;\n}(CloneVisitor));\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this 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 * Extract i18n messages from source code\n */\nvar Extractor = (function () {\n    /**\n     * @param {?} host\n     * @param {?} staticSymbolResolver\n     * @param {?} messageBundle\n     * @param {?} metadataResolver\n     */\n    function Extractor(host, staticSymbolResolver, messageBundle, metadataResolver) {\n        this.host = host;\n        this.staticSymbolResolver = staticSymbolResolver;\n        this.messageBundle = messageBundle;\n        this.metadataResolver = metadataResolver;\n    }\n    /**\n     * @param {?} rootFiles\n     * @return {?}\n     */\n    Extractor.prototype.extract = function (rootFiles) {\n        var _this = this;\n        var /** @type {?} */ programSymbols = extractProgramSymbols(this.staticSymbolResolver, rootFiles, this.host);\n        var _a = analyzeAndValidateNgModules(programSymbols, this.host, this.metadataResolver), files = _a.files, ngModules = _a.ngModules;\n        return Promise\n            .all(ngModules.map(function (ngModule) { return _this.metadataResolver.loadNgModuleDirectiveAndPipeMetadata(ngModule.type.reference, false); }))\n            .then(function () {\n            var /** @type {?} */ errors = [];\n            files.forEach(function (file) {\n                var /** @type {?} */ compMetas = [];\n                file.directives.forEach(function (directiveType) {\n                    var /** @type {?} */ dirMeta = _this.metadataResolver.getDirectiveMetadata(directiveType);\n                    if (dirMeta && dirMeta.isComponent) {\n                        compMetas.push(dirMeta);\n                    }\n                });\n                compMetas.forEach(function (compMeta) {\n                    var /** @type {?} */ html = compMeta.template.template;\n                    var /** @type {?} */ interpolationConfig = InterpolationConfig.fromArray(compMeta.template.interpolation);\n                    errors.push.apply(errors, _this.messageBundle.updateFromTemplate(html, file.srcUrl, interpolationConfig));\n                });\n            });\n            if (errors.length) {\n                throw new Error(errors.map(function (e) { return e.toString(); }).join('\\n'));\n            }\n            return _this.messageBundle;\n        });\n    };\n    /**\n     * @param {?} host\n     * @param {?} locale\n     * @return {?}\n     */\n    Extractor.create = function (host, locale) {\n        var /** @type {?} */ htmlParser = new I18NHtmlParser(new HtmlParser());\n        var /** @type {?} */ urlResolver = createOfflineCompileUrlResolver();\n        var /** @type {?} */ symbolCache = new StaticSymbolCache();\n        var /** @type {?} */ summaryResolver = new AotSummaryResolver(host, symbolCache);\n        var /** @type {?} */ staticSymbolResolver = new StaticSymbolResolver(host, symbolCache, summaryResolver);\n        var /** @type {?} */ staticReflector = new StaticReflector(summaryResolver, staticSymbolResolver);\n        StaticAndDynamicReflectionCapabilities.install(staticReflector);\n        var /** @type {?} */ config = new CompilerConfig({ defaultEncapsulation: ViewEncapsulation.Emulated, useJit: false });\n        var /** @type {?} */ normalizer = new DirectiveNormalizer({ get: function (url) { return host.loadResource(url); } }, urlResolver, htmlParser, config);\n        var /** @type {?} */ elementSchemaRegistry = new DomElementSchemaRegistry();\n        var /** @type {?} */ resolver = new CompileMetadataResolver(config, new NgModuleResolver(staticReflector), new DirectiveResolver(staticReflector), new PipeResolver(staticReflector), summaryResolver, elementSchemaRegistry, normalizer, new ɵConsole(), symbolCache, staticReflector);\n        // TODO(vicb): implicit tags & attributes\n        var /** @type {?} */ messageBundle = new MessageBundle(htmlParser, [], {}, locale);\n        var /** @type {?} */ extractor = new Extractor(host, staticSymbolResolver, messageBundle, resolver);\n        return { extractor: extractor, staticReflector: staticReflector };\n    };\n    return Extractor;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this 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 * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar _NO_RESOURCE_LOADER = {\n    /**\n     * @param {?} url\n     * @return {?}\n     */\n    get: function (url) {\n        throw new Error(\"No ResourceLoader implementation has been provided. Can't read the url \\\"\" + url + \"\\\"\");\n    }\n};\nvar baseHtmlParser = new InjectionToken('HtmlParser');\n/**\n * A set of providers that provide `JitCompiler` and its dependencies to use for\n * template compilation.\n */\nvar COMPILER_PROVIDERS = [\n    { provide: ɵReflector, useValue: ɵreflector },\n    { provide: ɵReflectorReader, useExisting: ɵReflector },\n    { provide: ResourceLoader, useValue: _NO_RESOURCE_LOADER },\n    SummaryResolver,\n    ɵConsole,\n    Lexer,\n    Parser,\n    {\n        provide: baseHtmlParser,\n        useClass: HtmlParser,\n    },\n    {\n        provide: I18NHtmlParser,\n        useFactory: function (parser, translations, format, config, console) { return new I18NHtmlParser(parser, translations, format, config.missingTranslation, console); },\n        deps: [\n            baseHtmlParser,\n            [new Optional(), new Inject(TRANSLATIONS)],\n            [new Optional(), new Inject(TRANSLATIONS_FORMAT)],\n            [CompilerConfig],\n            [ɵConsole],\n        ]\n    },\n    {\n        provide: HtmlParser,\n        useExisting: I18NHtmlParser,\n    },\n    TemplateParser,\n    DirectiveNormalizer,\n    CompileMetadataResolver,\n    DEFAULT_PACKAGE_URL_PROVIDER,\n    StyleCompiler,\n    ViewCompiler,\n    NgModuleCompiler,\n    { provide: CompilerConfig, useValue: new CompilerConfig() },\n    JitCompiler,\n    { provide: Compiler, useExisting: JitCompiler },\n    DomElementSchemaRegistry,\n    { provide: ElementSchemaRegistry, useExisting: DomElementSchemaRegistry },\n    UrlResolver,\n    DirectiveResolver,\n    PipeResolver,\n    NgModuleResolver,\n];\nvar JitCompilerFactory = (function () {\n    /**\n     * @param {?} defaultOptions\n     */\n    function JitCompilerFactory(defaultOptions) {\n        var compilerOptions = {\n            useDebug: isDevMode(),\n            useJit: true,\n            defaultEncapsulation: ViewEncapsulation.Emulated,\n            missingTranslation: MissingTranslationStrategy.Warning,\n            enableLegacyTemplate: true,\n        };\n        this._defaultOptions = [compilerOptions].concat(defaultOptions);\n    }\n    /**\n     * @param {?=} options\n     * @return {?}\n     */\n    JitCompilerFactory.prototype.createCompiler = function (options) {\n        if (options === void 0) { options = []; }\n        var /** @type {?} */ opts = _mergeOptions(this._defaultOptions.concat(options));\n        var /** @type {?} */ injector = ReflectiveInjector.resolveAndCreate([\n            COMPILER_PROVIDERS, {\n                provide: CompilerConfig,\n                useFactory: function () {\n                    return new CompilerConfig({\n                        // let explicit values from the compiler options overwrite options\n                        // from the app providers\n                        useJit: opts.useJit,\n                        // let explicit values from the compiler options overwrite options\n                        // from the app providers\n                        defaultEncapsulation: opts.defaultEncapsulation,\n                        missingTranslation: opts.missingTranslation,\n                        enableLegacyTemplate: opts.enableLegacyTemplate,\n                    });\n                },\n                deps: []\n            },\n            opts.providers\n        ]);\n        return injector.get(Compiler);\n    };\n    return JitCompilerFactory;\n}());\nJitCompilerFactory.decorators = [\n    { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nJitCompilerFactory.ctorParameters = function () { return [\n    { type: Array, decorators: [{ type: Inject, args: [COMPILER_OPTIONS,] },] },\n]; };\n/**\n * @return {?}\n */\nfunction _initReflector() {\n    ɵreflector.reflectionCapabilities = new ɵReflectionCapabilities();\n}\n/**\n * A platform that included corePlatform and the compiler.\n *\n * \\@experimental\n */\nvar platformCoreDynamic = createPlatformFactory(platformCore, 'coreDynamic', [\n    { provide: COMPILER_OPTIONS, useValue: {}, multi: true },\n    { provide: CompilerFactory, useClass: JitCompilerFactory },\n    { provide: PLATFORM_INITIALIZER, useValue: _initReflector, multi: true },\n]);\n/**\n * @param {?} optionsArr\n * @return {?}\n */\nfunction _mergeOptions(optionsArr) {\n    return {\n        useJit: _lastDefined(optionsArr.map(function (options) { return options.useJit; })),\n        defaultEncapsulation: _lastDefined(optionsArr.map(function (options) { return options.defaultEncapsulation; })),\n        providers: _mergeArrays(optionsArr.map(function (options) { return options.providers; })),\n        missingTranslation: _lastDefined(optionsArr.map(function (options) { return options.missingTranslation; })),\n    };\n}\n/**\n * @template T\n * @param {?} args\n * @return {?}\n */\nfunction _lastDefined(args) {\n    for (var /** @type {?} */ i = args.length - 1; i >= 0; i--) {\n        if (args[i] !== undefined) {\n            return args[i];\n        }\n    }\n    return undefined;\n}\n/**\n * @param {?} parts\n * @return {?}\n */\nfunction _mergeArrays(parts) {\n    var /** @type {?} */ result = [];\n    parts.forEach(function (part) { return part && result.push.apply(result, part); });\n    return result;\n}\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this 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 * Interface that defines how import statements should be generated.\n * @abstract\n */\nvar ImportResolver = (function () {\n    function ImportResolver() {\n    }\n    /**\n     * Converts a file path to a module name that can be used as an `import.\n     * I.e. `path/to/importedFile.ts` should be imported by `path/to/containingFile.ts`.\n     * @abstract\n     * @param {?} importedFilePath\n     * @param {?} containingFilePath\n     * @return {?}\n     */\n    ImportResolver.prototype.fileNameToModuleName = function (importedFilePath, containingFilePath) { };\n    /**\n     * Converts the given StaticSymbol into another StaticSymbol that should be used\n     * to generate the import from.\n     * @abstract\n     * @param {?} symbol\n     * @return {?}\n     */\n    ImportResolver.prototype.getImportAs = function (symbol) { };\n    /**\n     * Determine the arity of a type.\n     * @abstract\n     * @param {?} symbol\n     * @return {?}\n     */\n    ImportResolver.prototype.getTypeArity = function (symbol) { };\n    return ImportResolver;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @module\n * @description\n * Entry point for all APIs of the compiler package.\n *\n * <div class=\"callout is-critical\">\n *   <header>Unstable APIs</header>\n *   <p>\n *     All compiler apis are currently considered experimental and private!\n *   </p>\n *   <p>\n *     We expect the APIs in this package to keep on changing. Do not rely on them.\n *   </p>\n * </div>\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 * @module\n * @description\n * Entry point for all public APIs of the compiler package.\n */\n// This file only reexports content of the `src` folder. Keep it that way.\nexport { VERSION, TEMPLATE_TRANSFORMS, CompilerConfig, JitCompiler, DirectiveResolver, PipeResolver, NgModuleResolver, DEFAULT_INTERPOLATION_CONFIG, InterpolationConfig, NgModuleCompiler, ViewCompiler, isSyntaxError, syntaxError, TextAst, BoundTextAst, AttrAst, BoundElementPropertyAst, BoundEventAst, ReferenceAst, VariableAst, ElementAst, EmbeddedTemplateAst, BoundDirectivePropertyAst, DirectiveAst, ProviderAst, ProviderAstType, NgContentAst, PropertyBindingType, templateVisitAll, CompileAnimationEntryMetadata, CompileAnimationStateMetadata, CompileAnimationStateDeclarationMetadata, CompileAnimationStateTransitionMetadata, CompileAnimationMetadata, CompileAnimationKeyframesSequenceMetadata, CompileAnimationStyleMetadata, CompileAnimationAnimateMetadata, CompileAnimationWithStepsMetadata, CompileAnimationSequenceMetadata, CompileAnimationGroupMetadata, identifierName, identifierModuleUrl, viewClassName, rendererTypeName, hostViewClassName, dirWrapperClassName, componentFactoryName, CompileSummaryKind, tokenName, tokenReference, CompileStylesheetMetadata, CompileTemplateMetadata, CompileDirectiveMetadata, createHostComponentMeta, CompilePipeMetadata, CompileNgModuleMetadata, TransitiveCompileNgModuleMetadata, ProviderMeta, flatten, sourceUrl, templateSourceUrl, sharedStylesheetJitUrl, ngModuleJitUrl, templateJitUrl, createAotCompiler, AotCompiler, analyzeNgModules, analyzeAndValidateNgModules, extractProgramSymbols, GeneratedFile, StaticReflector, StaticAndDynamicReflectionCapabilities, StaticSymbol, StaticSymbolCache, ResolvedStaticSymbol, StaticSymbolResolver, unescapeIdentifier, AotSummaryResolver, SummaryResolver, COMPILER_PROVIDERS, JitCompilerFactory, platformCoreDynamic, createUrlResolverWithoutPackagePrefix, createOfflineCompileUrlResolver, DEFAULT_PACKAGE_URL_PROVIDER, UrlResolver, getUrlScheme, ResourceLoader, ElementSchemaRegistry, Extractor, I18NHtmlParser, MessageBundle, Serializer, Xliff, Xliff2, Xmb, Xtb, DirectiveNormalizer, ParserError, ParseSpan, AST, Quote, EmptyExpr, ImplicitReceiver, Chain, Conditional, PropertyRead, PropertyWrite, SafePropertyRead, KeyedRead, KeyedWrite, BindingPipe, LiteralPrimitive, LiteralArray, LiteralMap, Interpolation, Binary, PrefixNot, MethodCall, SafeMethodCall, FunctionCall, ASTWithSource, TemplateBinding, RecursiveAstVisitor, AstTransformer, TokenType, Lexer, Token, EOF, isIdentifier, isQuote, SplitInterpolation, TemplateBindingParseResult, Parser, _ParseAST, ERROR_COLLECTOR_TOKEN, CompileMetadataResolver, componentModuleUrl, Text, Expansion, ExpansionCase, Attribute$1 as Attribute, Element, Comment, visitAll, ParseTreeResult, TreeError, HtmlParser, HtmlTagDefinition, getHtmlTagDefinition, TagContentType, splitNsName, getNsPrefix, mergeNsAndName, NAMED_ENTITIES, ImportResolver, debugOutputAstAsTypeScript, TypeScriptEmitter, ParseLocation, ParseSourceFile, ParseSourceSpan, ParseErrorLevel, ParseError, typeSourceSpan, DomElementSchemaRegistry, CssSelector, SelectorMatcher, SelectorListContext, SelectorContext, StylesCompileDependency, StylesCompileResult, CompiledStylesheet, StyleCompiler, TemplateParseError, TemplateParseResult, TemplateParser, splitClasses, createElementCssSelector, removeSummaryDuplicates };\n//# sourceMappingURL=compiler.js.map\n//# sourceMappingURL=compiler.es5.js.map"],"names":["this","Version","ɵstringify","ɵreflector","ViewEncapsulation","ChangeDetectionStrategy","isDevMode","MissingTranslationStrategy","ANALYZE_FOR_ENTRY_COMPONENTS","ElementRef","NgModuleRef","ViewContainerRef","ChangeDetectorRef","QueryList","TemplateRef","ɵCodegenComponentFactoryResolver","ComponentFactoryResolver","ComponentFactory","ComponentRef","NgModuleFactory","ɵNgModuleInjector","ɵregisterModuleFactory","Injector","SecurityContext","LOCALE_ID","TRANSLATIONS_FORMAT","ɵinlineInterpolate","ɵinterpolate","ɵEMPTY_ARRAY","ɵEMPTY_MAP","Renderer","ɵvid","ɵeld","ɵand","ɵted","ɵdid","ɵprd","ɵqud","ɵpad","ɵpod","ɵppd","ɵpid","ɵnov","ɵncd","ɵunv","ɵcrt","ɵccf","InjectionToken","ɵConsole","Optional","Inject","PACKAGE_ROOT_URL","resolveForwardRef","Input","Output","HostBinding","HostListener","Query","Component","Directive","ɵReflectorReader","ɵLifecycleHooks","NgModule","Pipe","Injectable","ɵLIFECYCLE_HOOKS_VALUES","Host","Self","SkipSelf","Attribute","Type","ɵERROR_COMPONENT_TYPE","NO_ERRORS_SCHEMA","CUSTOM_ELEMENTS_SCHEMA","ɵelementEventFullName","ɵReflectionCapabilities","ContentChild","ContentChildren","ViewChild","ViewChildren","trigger","state","transition","style","animate","keyframes","sequence","group","ModuleWithComponentFactories","Compiler","ɵgetComponentViewDefinitionFactory","ɵReflector","TRANSLATIONS","ReflectiveInjector","COMPILER_OPTIONS","createPlatformFactory","platformCore","CompilerFactory","PLATFORM_INITIALIZER"],"mappings":"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"}