ember-source 3.28.8 → 3.28.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["license.js","loader.js","@ember/-internals/browser-environment/index.js","@ember/-internals/environment/index.js","@ember/-internals/utils/index.js","@ember/canary-features/index.js","@ember/debug/container-debug-adapter.js","@ember/debug/data-adapter.js","@ember/debug/index.js","@ember/debug/lib/capture-render-tree.js","@ember/debug/lib/deprecate.js","@ember/debug/lib/handlers.js","@ember/debug/lib/testing.js","@ember/debug/lib/warn.js","@ember/deprecated-features/index.js","@ember/error/index.js","@ember/polyfills/index.js","@ember/polyfills/lib/assign.js","@ember/polyfills/lib/merge.js","@glimmer/compiler.js","@glimmer/env.js","@glimmer/syntax.js","@glimmer/util.js","@glimmer/wire-format.js","@handlebars/parser/index.js","ember-babel.js","ember-template-compiler/index.js","ember-template-compiler/lib/plugins/assert-against-dynamic-helpers-modifiers.js","ember-template-compiler/lib/plugins/assert-against-named-blocks.js","ember-template-compiler/lib/plugins/assert-input-helper-without-block.js","ember-template-compiler/lib/plugins/assert-reserved-named-arguments.js","ember-template-compiler/lib/plugins/assert-splattribute-expression.js","ember-template-compiler/lib/plugins/deprecate-send-action.js","ember-template-compiler/lib/plugins/deprecate-with.js","ember-template-compiler/lib/plugins/index.js","ember-template-compiler/lib/plugins/transform-action-syntax.js","ember-template-compiler/lib/plugins/transform-attrs-into-args.js","ember-template-compiler/lib/plugins/transform-each-in-into-each.js","ember-template-compiler/lib/plugins/transform-each-track-array.js","ember-template-compiler/lib/plugins/transform-has-block-syntax.js","ember-template-compiler/lib/plugins/transform-in-element.js","ember-template-compiler/lib/plugins/transform-link-to.js","ember-template-compiler/lib/plugins/transform-old-class-binding-syntax.js","ember-template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.js","ember-template-compiler/lib/plugins/transform-resolutions.js","ember-template-compiler/lib/plugins/transform-wrap-mount-and-outlet.js","ember-template-compiler/lib/plugins/utils.js","ember-template-compiler/lib/system/bootstrap.js","ember-template-compiler/lib/system/calculate-location-display.js","ember-template-compiler/lib/system/compile-options.js","ember-template-compiler/lib/system/compile.js","ember-template-compiler/lib/system/dasherize-component-name.js","ember-template-compiler/lib/system/initializer.js","ember-template-compiler/lib/system/precompile.js","ember/version.js","simple-html-tokenizer.js"],"sourcesContent":["/*!\n * @overview Ember - JavaScript Application Framework\n * @copyright Copyright 2011-2021 Tilde Inc. and contributors\n * Portions Copyright 2006-2011 Strobe Inc.\n * Portions Copyright 2008-2011 Apple Inc. All rights reserved.\n * @license Licensed under MIT license\n * See https://raw.github.com/emberjs/ember.js/master/LICENSE\n * @version 3.28.8\n */\n","/* eslint-disable no-var */\n/* globals global globalThis self */\nvar define, require;\n\n(function () {\n var globalObj =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : null;\n\n if (globalObj === null) {\n throw new Error('unable to locate global object');\n }\n\n if (typeof globalObj.define === 'function' && typeof globalObj.require === 'function') {\n define = globalObj.define;\n require = globalObj.require;\n\n return;\n }\n\n var registry = Object.create(null);\n var seen = Object.create(null);\n\n function missingModule(name, referrerName) {\n if (referrerName) {\n throw new Error('Could not find module ' + name + ' required by: ' + referrerName);\n } else {\n throw new Error('Could not find module ' + name);\n }\n }\n\n function internalRequire(_name, referrerName) {\n var name = _name;\n var mod = registry[name];\n\n if (!mod) {\n name = name + '/index';\n mod = registry[name];\n }\n\n var exports = seen[name];\n\n if (exports !== undefined) {\n return exports;\n }\n\n exports = seen[name] = {};\n\n if (!mod) {\n missingModule(_name, referrerName);\n }\n\n var deps = mod.deps;\n var callback = mod.callback;\n var reified = new Array(deps.length);\n\n for (var i = 0; i < deps.length; i++) {\n if (deps[i] === 'exports') {\n reified[i] = exports;\n } else if (deps[i] === 'require') {\n reified[i] = require;\n } else {\n reified[i] = require(deps[i], name);\n }\n }\n\n callback.apply(this, reified);\n\n return exports;\n }\n\n require = function (name) {\n return internalRequire(name, null);\n };\n\n // eslint-disable-next-line no-unused-vars\n define = function (name, deps, callback) {\n registry[name] = { deps: deps, callback: callback };\n };\n\n // setup `require` module\n require['default'] = require;\n\n require.has = function registryHas(moduleName) {\n return Boolean(registry[moduleName]) || Boolean(registry[moduleName + '/index']);\n };\n\n require._eak_seen = require.entries = registry;\n})();\n","define(\"@ember/-internals/browser-environment/index\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.hasDOM = _exports.isIE = _exports.isFirefox = _exports.isChrome = _exports.userAgent = _exports.history = _exports.location = _exports.window = void 0;\n // check if window exists and actually is the global\n var hasDom = typeof self === 'object' && self !== null && self.Object === Object && typeof Window !== 'undefined' && self.constructor === Window && typeof document === 'object' && document !== null && self.document === document && typeof location === 'object' && location !== null && self.location === location && typeof history === 'object' && history !== null && self.history === history && typeof navigator === 'object' && navigator !== null && self.navigator === navigator && typeof navigator.userAgent === 'string';\n _exports.hasDOM = hasDom;\n var window = hasDom ? self : null;\n _exports.window = window;\n var location$1 = hasDom ? self.location : null;\n _exports.location = location$1;\n var history$1 = hasDom ? self.history : null;\n _exports.history = history$1;\n var userAgent = hasDom ? self.navigator.userAgent : 'Lynx (textmode)';\n _exports.userAgent = userAgent;\n var isChrome = hasDom ? typeof chrome === 'object' && !(typeof opera === 'object') : false;\n _exports.isChrome = isChrome;\n var isFirefox = hasDom ? typeof InstallTrigger !== 'undefined' : false;\n _exports.isFirefox = isFirefox;\n var isIE = hasDom ? typeof MSInputMethodContext !== 'undefined' && typeof documentMode !== 'undefined' : false;\n _exports.isIE = isIE;\n});","define(\"@ember/-internals/environment/index\", [\"exports\", \"@ember/deprecated-features\"], function (_exports, _deprecatedFeatures) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.getLookup = getLookup;\n _exports.setLookup = setLookup;\n _exports.getENV = getENV;\n _exports.ENV = _exports.context = _exports.global = void 0;\n\n // from lodash to catch fake globals\n function checkGlobal(value) {\n return value && value.Object === Object ? value : undefined;\n } // element ids can ruin global miss checks\n\n\n function checkElementIdShadowing(value) {\n return value && value.nodeType === undefined ? value : undefined;\n } // export real global\n\n\n var global$1 = checkGlobal(checkElementIdShadowing(typeof global === 'object' && global)) || checkGlobal(typeof self === 'object' && self) || checkGlobal(typeof window === 'object' && window) || typeof mainContext !== 'undefined' && mainContext || // set before strict mode in Ember loader/wrapper\n new Function('return this')(); // eval outside of strict mode\n\n _exports.global = global$1;\n\n var context = function (global, Ember) {\n return Ember === undefined ? {\n imports: global,\n exports: global,\n lookup: global\n } : {\n // import jQuery\n imports: Ember.imports || global,\n // export Ember\n exports: Ember.exports || global,\n // search for Namespaces\n lookup: Ember.lookup || global\n };\n }(global$1, global$1.Ember);\n\n _exports.context = context;\n\n function getLookup() {\n return context.lookup;\n }\n\n function setLookup(value) {\n context.lookup = value;\n }\n /**\n The hash of environment variables used to control various configuration\n settings. To specify your own or override default settings, add the\n desired properties to a global hash named `EmberENV` (or `ENV` for\n backwards compatibility with earlier versions of Ember). The `EmberENV`\n hash must be created before loading Ember.\n \n @class EmberENV\n @type Object\n @public\n */\n\n\n var ENV = {\n ENABLE_OPTIONAL_FEATURES: false,\n\n /**\n Determines whether Ember should add to `Array`, `Function`, and `String`\n native object prototypes, a few extra methods in order to provide a more\n friendly API.\n We generally recommend leaving this option set to true however, if you need\n to turn it off, you can add the configuration property\n `EXTEND_PROTOTYPES` to `EmberENV` and set it to `false`.\n Note, when disabled (the default configuration for Ember Addons), you will\n instead have to access all methods and functions from the Ember\n namespace.\n @property EXTEND_PROTOTYPES\n @type Boolean\n @default true\n @for EmberENV\n @public\n */\n EXTEND_PROTOTYPES: {\n Array: true,\n Function: true,\n String: true\n },\n\n /**\n The `LOG_STACKTRACE_ON_DEPRECATION` property, when true, tells Ember to log\n a full stack trace during deprecation warnings.\n @property LOG_STACKTRACE_ON_DEPRECATION\n @type Boolean\n @default true\n @for EmberENV\n @public\n */\n LOG_STACKTRACE_ON_DEPRECATION: true,\n\n /**\n The `LOG_VERSION` property, when true, tells Ember to log versions of all\n dependent libraries in use.\n @property LOG_VERSION\n @type Boolean\n @default true\n @for EmberENV\n @public\n */\n LOG_VERSION: true,\n RAISE_ON_DEPRECATION: false,\n STRUCTURED_PROFILE: false,\n\n /**\n Whether to insert a `<div class=\"ember-view\" />` wrapper around the\n application template. See RFC #280.\n This is not intended to be set directly, as the implementation may change in\n the future. Use `@ember/optional-features` instead.\n @property _APPLICATION_TEMPLATE_WRAPPER\n @for EmberENV\n @type Boolean\n @default true\n @private\n */\n _APPLICATION_TEMPLATE_WRAPPER: true,\n\n /**\n Whether to use Glimmer Component semantics (as opposed to the classic \"Curly\"\n components semantics) for template-only components. See RFC #278.\n This is not intended to be set directly, as the implementation may change in\n the future. Use `@ember/optional-features` instead.\n @property _TEMPLATE_ONLY_GLIMMER_COMPONENTS\n @for EmberENV\n @type Boolean\n @default false\n @private\n */\n _TEMPLATE_ONLY_GLIMMER_COMPONENTS: false,\n\n /**\n Whether to perform extra bookkeeping needed to make the `captureRenderTree`\n API work.\n This has to be set before the ember JavaScript code is evaluated. This is\n usually done by setting `window.EmberENV = { _DEBUG_RENDER_TREE: true };`\n before the \"vendor\" `<script>` tag in `index.html`.\n Setting the flag after Ember is already loaded will not work correctly. It\n may appear to work somewhat, but fundamentally broken.\n This is not intended to be set directly. Ember Inspector will enable the\n flag on behalf of the user as needed.\n This flag is always on in development mode.\n The flag is off by default in production mode, due to the cost associated\n with the the bookkeeping work.\n The expected flow is that Ember Inspector will ask the user to refresh the\n page after enabling the feature. It could also offer a feature where the\n user add some domains to the \"always on\" list. In either case, Ember\n Inspector will inject the code on the page to set the flag if needed.\n @property _DEBUG_RENDER_TREE\n @for EmberENV\n @type Boolean\n @default false\n @private\n */\n _DEBUG_RENDER_TREE: true\n /* DEBUG */\n ,\n\n /**\n Whether the app is using jQuery. See RFC #294.\n This is not intended to be set directly, as the implementation may change in\n the future. Use `@ember/optional-features` instead.\n @property _JQUERY_INTEGRATION\n @for EmberENV\n @type Boolean\n @default true\n @private\n */\n _JQUERY_INTEGRATION: true,\n\n /**\n Whether the app defaults to using async observers.\n This is not intended to be set directly, as the implementation may change in\n the future. Use `@ember/optional-features` instead.\n @property _DEFAULT_ASYNC_OBSERVERS\n @for EmberENV\n @type Boolean\n @default false\n @private\n */\n _DEFAULT_ASYNC_OBSERVERS: false,\n\n /**\n Controls the maximum number of scheduled rerenders without \"settling\". In general,\n applications should not need to modify this environment variable, but please\n open an issue so that we can determine if a better default value is needed.\n @property _RERENDER_LOOP_LIMIT\n @for EmberENV\n @type number\n @default 1000\n @private\n */\n _RERENDER_LOOP_LIMIT: 1000,\n\n /**\n Allows disabling the implicit this property fallback deprecation. This could be useful\n as a way to control the volume of deprecations that are issued by temporarily disabling\n the implicit this fallback deprecations, which would allow the other deprecations to be more easily\n identified in the console).\n NOTE: The fallback behavior **will be removed** in Ember 4.0.0, disabling **_IS NOT_**\n a viable strategy for handling this deprecation.\n @property _DISABLE_PROPERTY_FALLBACK_DEPRECATION\n @for EmberENV\n @type boolean\n @default false\n @private\n */\n _DISABLE_PROPERTY_FALLBACK_DEPRECATION: false,\n EMBER_LOAD_HOOKS: {},\n FEATURES: {}\n };\n _exports.ENV = ENV;\n\n (function (EmberENV) {\n if (typeof EmberENV !== 'object' || EmberENV === null) return;\n\n for (var flag in EmberENV) {\n if (!Object.prototype.hasOwnProperty.call(EmberENV, flag) || flag === 'EXTEND_PROTOTYPES' || flag === 'EMBER_LOAD_HOOKS') continue;\n var defaultValue = ENV[flag];\n\n if (defaultValue === true) {\n ENV[flag] = EmberENV[flag] !== false;\n } else if (defaultValue === false) {\n ENV[flag] = EmberENV[flag] === true;\n }\n }\n\n var EXTEND_PROTOTYPES = EmberENV.EXTEND_PROTOTYPES;\n\n if (EXTEND_PROTOTYPES !== undefined) {\n if (typeof EXTEND_PROTOTYPES === 'object' && EXTEND_PROTOTYPES !== null) {\n ENV.EXTEND_PROTOTYPES.String = EXTEND_PROTOTYPES.String !== false;\n\n if (_deprecatedFeatures.FUNCTION_PROTOTYPE_EXTENSIONS) {\n ENV.EXTEND_PROTOTYPES.Function = EXTEND_PROTOTYPES.Function !== false;\n }\n\n ENV.EXTEND_PROTOTYPES.Array = EXTEND_PROTOTYPES.Array !== false;\n } else {\n var isEnabled = EXTEND_PROTOTYPES !== false;\n ENV.EXTEND_PROTOTYPES.String = isEnabled;\n\n if (_deprecatedFeatures.FUNCTION_PROTOTYPE_EXTENSIONS) {\n ENV.EXTEND_PROTOTYPES.Function = isEnabled;\n }\n\n ENV.EXTEND_PROTOTYPES.Array = isEnabled;\n }\n } // TODO this does not seem to be used by anything,\n // can we remove it? do we need to deprecate it?\n\n\n var EMBER_LOAD_HOOKS = EmberENV.EMBER_LOAD_HOOKS;\n\n if (typeof EMBER_LOAD_HOOKS === 'object' && EMBER_LOAD_HOOKS !== null) {\n for (var hookName in EMBER_LOAD_HOOKS) {\n if (!Object.prototype.hasOwnProperty.call(EMBER_LOAD_HOOKS, hookName)) continue;\n var hooks = EMBER_LOAD_HOOKS[hookName];\n\n if (Array.isArray(hooks)) {\n ENV.EMBER_LOAD_HOOKS[hookName] = hooks.filter(function (hook) {\n return typeof hook === 'function';\n });\n }\n }\n }\n\n var FEATURES = EmberENV.FEATURES;\n\n if (typeof FEATURES === 'object' && FEATURES !== null) {\n for (var feature in FEATURES) {\n if (!Object.prototype.hasOwnProperty.call(FEATURES, feature)) continue;\n ENV.FEATURES[feature] = FEATURES[feature] === true;\n }\n }\n\n if (true\n /* DEBUG */\n ) {\n ENV._DEBUG_RENDER_TREE = true;\n }\n })(global$1.EmberENV);\n\n function getENV() {\n return ENV;\n }\n});","define(\"@ember/-internals/utils/index\", [\"exports\", \"@glimmer/util\", \"@ember/debug\"], function (_exports, _util, _debug) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.enumerableSymbol = enumerableSymbol;\n _exports.isInternalSymbol = isInternalSymbol;\n _exports.dictionary = makeDictionary;\n _exports.uuid = uuid;\n _exports.generateGuid = generateGuid;\n _exports.guidFor = guidFor;\n _exports.intern = intern;\n _exports.wrap = wrap;\n _exports.observerListenerMetaFor = observerListenerMetaFor;\n _exports.setObservers = setObservers;\n _exports.setListeners = setListeners;\n _exports.inspect = inspect;\n _exports.lookupDescriptor = lookupDescriptor;\n _exports.canInvoke = canInvoke;\n _exports.tryInvoke = tryInvoke;\n _exports.makeArray = makeArray;\n _exports.getName = getName;\n _exports.setName = setName;\n _exports.toString = toString;\n _exports.isObject = isObject;\n _exports.isProxy = isProxy;\n _exports.setProxy = setProxy;\n _exports.setEmberArray = setEmberArray;\n _exports.isEmberArray = isEmberArray;\n _exports.setWithMandatorySetter = _exports.teardownMandatorySetter = _exports.setupMandatorySetter = _exports.Cache = _exports.HAS_NATIVE_PROXY = _exports.HAS_NATIVE_SYMBOL = _exports.ROOT = _exports.checkHasSuper = _exports.GUID_KEY = _exports.getDebugName = _exports.symbol = void 0;\n\n /**\n Strongly hint runtimes to intern the provided string.\n \n When do I need to use this function?\n \n For the most part, never. Pre-mature optimization is bad, and often the\n runtime does exactly what you need it to, and more often the trade-off isn't\n worth it.\n \n Why?\n \n Runtimes store strings in at least 2 different representations:\n Ropes and Symbols (interned strings). The Rope provides a memory efficient\n data-structure for strings created from concatenation or some other string\n manipulation like splitting.\n \n Unfortunately checking equality of different ropes can be quite costly as\n runtimes must resort to clever string comparison algorithms. These\n algorithms typically cost in proportion to the length of the string.\n Luckily, this is where the Symbols (interned strings) shine. As Symbols are\n unique by their string content, equality checks can be done by pointer\n comparison.\n \n How do I know if my string is a rope or symbol?\n \n Typically (warning general sweeping statement, but truthy in runtimes at\n present) static strings created as part of the JS source are interned.\n Strings often used for comparisons can be interned at runtime if some\n criteria are met. One of these criteria can be the size of the entire rope.\n For example, in chrome 38 a rope longer then 12 characters will not\n intern, nor will segments of that rope.\n \n Some numbers: http://jsperf.com/eval-vs-keys/8\n \n Known Trick™\n \n @private\n @return {String} interned version of the provided string\n */\n function intern(str) {\n var obj = {};\n obj[str] = 1;\n\n for (var key in obj) {\n if (key === str) {\n return key;\n }\n }\n\n return str;\n }\n /**\n Returns whether Type(value) is Object.\n \n Useful for checking whether a value is a valid WeakMap key.\n \n Refs: https://tc39.github.io/ecma262/#sec-typeof-operator-runtime-semantics-evaluation\n https://tc39.github.io/ecma262/#sec-weakmap.prototype.set\n \n @private\n @function isObject\n */\n\n\n function isObject(value) {\n return value !== null && (typeof value === 'object' || typeof value === 'function');\n }\n /**\n @module @ember/object\n */\n\n /**\n Previously we used `Ember.$.uuid`, however `$.uuid` has been removed from\n jQuery master. We'll just bootstrap our own uuid now.\n \n @private\n @return {Number} the uuid\n */\n\n\n var _uuid = 0;\n /**\n Generates a universally unique identifier. This method\n is used internally by Ember for assisting with\n the generation of GUID's and other unique identifiers.\n \n @public\n @return {Number} [description]\n */\n\n function uuid() {\n return ++_uuid;\n }\n /**\n Prefix used for guids through out Ember.\n @private\n @property GUID_PREFIX\n @for Ember\n @type String\n @final\n */\n\n\n var GUID_PREFIX = 'ember'; // Used for guid generation...\n\n var OBJECT_GUIDS = new WeakMap();\n var NON_OBJECT_GUIDS = new Map();\n /**\n A unique key used to assign guids and other private metadata to objects.\n If you inspect an object in your browser debugger you will often see these.\n They can be safely ignored.\n \n On browsers that support it, these properties are added with enumeration\n disabled so they won't show up when you iterate over your properties.\n \n @private\n @property GUID_KEY\n @for Ember\n @type String\n @final\n */\n\n var GUID_KEY = intern(\"__ember\" + Date.now());\n /**\n Generates a new guid, optionally saving the guid to the object that you\n pass in. You will rarely need to use this method. Instead you should\n call `guidFor(obj)`, which return an existing guid if available.\n \n @private\n @method generateGuid\n @static\n @for @ember/object/internals\n @param {Object} [obj] Object the guid will be used for. If passed in, the guid will\n be saved on the object and reused whenever you pass the same object\n again.\n \n If no object is passed, just generate a new guid.\n @param {String} [prefix] Prefix to place in front of the guid. Useful when you want to\n separate the guid into separate namespaces.\n @return {String} the guid\n */\n\n _exports.GUID_KEY = GUID_KEY;\n\n function generateGuid(obj, prefix) {\n if (prefix === void 0) {\n prefix = GUID_PREFIX;\n }\n\n var guid = prefix + uuid();\n\n if (isObject(obj)) {\n OBJECT_GUIDS.set(obj, guid);\n }\n\n return guid;\n }\n /**\n Returns a unique id for the object. If the object does not yet have a guid,\n one will be assigned to it. You can call this on any object,\n `EmberObject`-based or not.\n \n You can also use this method on DOM Element objects.\n \n @public\n @static\n @method guidFor\n @for @ember/object/internals\n @param {Object} obj any object, string, number, Element, or primitive\n @return {String} the unique guid for this instance.\n */\n\n\n function guidFor(value) {\n var guid;\n\n if (isObject(value)) {\n guid = OBJECT_GUIDS.get(value);\n\n if (guid === undefined) {\n guid = GUID_PREFIX + uuid();\n OBJECT_GUIDS.set(value, guid);\n }\n } else {\n guid = NON_OBJECT_GUIDS.get(value);\n\n if (guid === undefined) {\n var type = typeof value;\n\n if (type === 'string') {\n guid = 'st' + uuid();\n } else if (type === 'number') {\n guid = 'nu' + uuid();\n } else if (type === 'symbol') {\n guid = 'sy' + uuid();\n } else {\n guid = '(' + value + ')';\n }\n\n NON_OBJECT_GUIDS.set(value, guid);\n }\n }\n\n return guid;\n }\n\n var HAS_NATIVE_SYMBOL = function () {\n if (typeof Symbol !== 'function') {\n return false;\n }\n\n return typeof Symbol() === 'symbol';\n }();\n\n _exports.HAS_NATIVE_SYMBOL = HAS_NATIVE_SYMBOL;\n var GENERATED_SYMBOLS = [];\n\n function isInternalSymbol(possibleSymbol) {\n return GENERATED_SYMBOLS.indexOf(possibleSymbol) !== -1;\n } // Some legacy symbols still need to be enumerable for a variety of reasons.\n // This code exists for that, and as a fallback in IE11. In general, prefer\n // `symbol` below when creating a new symbol.\n\n\n function enumerableSymbol(debugName) {\n // TODO: Investigate using platform symbols, but we do not\n // want to require non-enumerability for this API, which\n // would introduce a large cost.\n var id = GUID_KEY + Math.floor(Math.random() * Date.now());\n var symbol = intern(\"__\" + debugName + id + \"__\");\n\n if (true\n /* DEBUG */\n ) {\n GENERATED_SYMBOLS.push(symbol);\n }\n\n return symbol;\n }\n\n var symbol = HAS_NATIVE_SYMBOL ? Symbol : enumerableSymbol; // the delete is meant to hint at runtimes that this object should remain in\n // dictionary mode. This is clearly a runtime specific hack, but currently it\n // appears worthwhile in some usecases. Please note, these deletes do increase\n // the cost of creation dramatically over a plain Object.create. And as this\n // only makes sense for long-lived dictionaries that aren't instantiated often.\n\n _exports.symbol = symbol;\n\n function makeDictionary(parent) {\n var dict = Object.create(parent);\n dict['_dict'] = null;\n delete dict['_dict'];\n return dict;\n }\n\n var getDebugName;\n\n if (true\n /* DEBUG */\n ) {\n var getFunctionName = function getFunctionName(fn) {\n var functionName = fn.name;\n\n if (functionName === undefined) {\n var match = Function.prototype.toString.call(fn).match(/function (\\w+)\\s*\\(/);\n functionName = match && match[1] || '';\n }\n\n return functionName.replace(/^bound /, '');\n };\n\n var getObjectName = function getObjectName(obj) {\n var name;\n var className;\n\n if (obj.constructor && obj.constructor !== Object) {\n className = getFunctionName(obj.constructor);\n }\n\n if ('toString' in obj && obj.toString !== Object.prototype.toString && obj.toString !== Function.prototype.toString) {\n name = obj.toString();\n } // If the class has a decent looking name, and the `toString` is one of the\n // default Ember toStrings, replace the constructor portion of the toString\n // with the class name. We check the length of the class name to prevent doing\n // this when the value is minified.\n\n\n if (name && name.match(/<.*:ember\\d+>/) && className && className[0] !== '_' && className.length > 2 && className !== 'Class') {\n return name.replace(/<.*:/, \"<\" + className + \":\");\n }\n\n return name || className;\n };\n\n var getPrimitiveName = function getPrimitiveName(value) {\n return String(value);\n };\n\n getDebugName = function getDebugName(value) {\n if (typeof value === 'function') {\n return getFunctionName(value) || \"(unknown function)\";\n } else if (typeof value === 'object' && value !== null) {\n return getObjectName(value) || \"(unknown object)\";\n } else {\n return getPrimitiveName(value);\n }\n };\n }\n\n var getDebugName$1 = getDebugName;\n _exports.getDebugName = getDebugName$1;\n var HAS_SUPER_PATTERN = /\\.(_super|call\\(this|apply\\(this)/;\n var fnToString = Function.prototype.toString;\n\n var checkHasSuper = function () {\n var sourceAvailable = fnToString.call(function () {\n return this;\n }).indexOf('return this') > -1;\n\n if (sourceAvailable) {\n return function checkHasSuper(func) {\n return HAS_SUPER_PATTERN.test(fnToString.call(func));\n };\n }\n\n return function checkHasSuper() {\n return true;\n };\n }();\n\n _exports.checkHasSuper = checkHasSuper;\n var HAS_SUPER_MAP = new WeakMap();\n var ROOT = Object.freeze(function () {});\n _exports.ROOT = ROOT;\n HAS_SUPER_MAP.set(ROOT, false);\n\n function hasSuper(func) {\n var hasSuper = HAS_SUPER_MAP.get(func);\n\n if (hasSuper === undefined) {\n hasSuper = checkHasSuper(func);\n HAS_SUPER_MAP.set(func, hasSuper);\n }\n\n return hasSuper;\n }\n\n var ObserverListenerMeta = function ObserverListenerMeta() {\n this.listeners = undefined;\n this.observers = undefined;\n };\n\n var OBSERVERS_LISTENERS_MAP = new WeakMap();\n\n function createObserverListenerMetaFor(fn) {\n var meta = OBSERVERS_LISTENERS_MAP.get(fn);\n\n if (meta === undefined) {\n meta = new ObserverListenerMeta();\n OBSERVERS_LISTENERS_MAP.set(fn, meta);\n }\n\n return meta;\n }\n\n function observerListenerMetaFor(fn) {\n return OBSERVERS_LISTENERS_MAP.get(fn);\n }\n\n function setObservers(func, observers) {\n var meta = createObserverListenerMetaFor(func);\n meta.observers = observers;\n }\n\n function setListeners(func, listeners) {\n var meta = createObserverListenerMetaFor(func);\n meta.listeners = listeners;\n }\n\n var IS_WRAPPED_FUNCTION_SET = new _util._WeakSet();\n /**\n Wraps the passed function so that `this._super` will point to the superFunc\n when the function is invoked. This is the primitive we use to implement\n calls to super.\n \n @private\n @method wrap\n @for Ember\n @param {Function} func The function to call\n @param {Function} superFunc The super function.\n @return {Function} wrapped function.\n */\n\n function wrap(func, superFunc) {\n if (!hasSuper(func)) {\n return func;\n } // ensure an unwrapped super that calls _super is wrapped with a terminal _super\n\n\n if (!IS_WRAPPED_FUNCTION_SET.has(superFunc) && hasSuper(superFunc)) {\n return _wrap(func, _wrap(superFunc, ROOT));\n }\n\n return _wrap(func, superFunc);\n }\n\n function _wrap(func, superFunc) {\n function superWrapper() {\n var orig = this._super;\n this._super = superFunc;\n var ret = func.apply(this, arguments);\n this._super = orig;\n return ret;\n }\n\n IS_WRAPPED_FUNCTION_SET.add(superWrapper);\n var meta = OBSERVERS_LISTENERS_MAP.get(func);\n\n if (meta !== undefined) {\n OBSERVERS_LISTENERS_MAP.set(superWrapper, meta);\n }\n\n return superWrapper;\n }\n\n var objectToString = Object.prototype.toString;\n var functionToString = Function.prototype.toString;\n var isArray = Array.isArray;\n var objectKeys = Object.keys;\n var stringify = JSON.stringify;\n var LIST_LIMIT = 100;\n var DEPTH_LIMIT = 4;\n var SAFE_KEY = /^[\\w$]+$/;\n /**\n @module @ember/debug\n */\n\n /**\n Convenience method to inspect an object. This method will attempt to\n convert the object into a useful string description.\n \n It is a pretty simple implementation. If you want something more robust,\n use something like JSDump: https://github.com/NV/jsDump\n \n @method inspect\n @static\n @param {Object} obj The object you want to inspect.\n @return {String} A description of the object\n @since 1.4.0\n @private\n */\n\n function inspect(obj) {\n // detect Node util.inspect call inspect(depth: number, opts: object)\n if (typeof obj === 'number' && arguments.length === 2) {\n return this;\n }\n\n return inspectValue(obj, 0);\n }\n\n function inspectValue(value, depth, seen) {\n var valueIsArray = false;\n\n switch (typeof value) {\n case 'undefined':\n return 'undefined';\n\n case 'object':\n if (value === null) return 'null';\n\n if (isArray(value)) {\n valueIsArray = true;\n break;\n } // is toString Object.prototype.toString or undefined then traverse\n\n\n if (value.toString === objectToString || value.toString === undefined) {\n break;\n } // custom toString\n\n\n return value.toString();\n\n case 'function':\n return value.toString === functionToString ? value.name ? \"[Function:\" + value.name + \"]\" : \"[Function]\" : value.toString();\n\n case 'string':\n return stringify(value);\n\n case 'symbol':\n case 'boolean':\n case 'number':\n default:\n return value.toString();\n }\n\n if (seen === undefined) {\n seen = new _util._WeakSet();\n } else {\n if (seen.has(value)) return \"[Circular]\";\n }\n\n seen.add(value);\n return valueIsArray ? inspectArray(value, depth + 1, seen) : inspectObject(value, depth + 1, seen);\n }\n\n function inspectKey(key) {\n return SAFE_KEY.test(key) ? key : stringify(key);\n }\n\n function inspectObject(obj, depth, seen) {\n if (depth > DEPTH_LIMIT) {\n return '[Object]';\n }\n\n var s = '{';\n var keys = objectKeys(obj);\n\n for (var i = 0; i < keys.length; i++) {\n s += i === 0 ? ' ' : ', ';\n\n if (i >= LIST_LIMIT) {\n s += \"... \" + (keys.length - LIST_LIMIT) + \" more keys\";\n break;\n }\n\n var key = keys[i];\n s += inspectKey(key) + ': ' + inspectValue(obj[key], depth, seen);\n }\n\n s += ' }';\n return s;\n }\n\n function inspectArray(arr, depth, seen) {\n if (depth > DEPTH_LIMIT) {\n return '[Array]';\n }\n\n var s = '[';\n\n for (var i = 0; i < arr.length; i++) {\n s += i === 0 ? ' ' : ', ';\n\n if (i >= LIST_LIMIT) {\n s += \"... \" + (arr.length - LIST_LIMIT) + \" more items\";\n break;\n }\n\n s += inspectValue(arr[i], depth, seen);\n }\n\n s += ' ]';\n return s;\n }\n\n function lookupDescriptor(obj, keyName) {\n var current = obj;\n\n do {\n var descriptor = Object.getOwnPropertyDescriptor(current, keyName);\n\n if (descriptor !== undefined) {\n return descriptor;\n }\n\n current = Object.getPrototypeOf(current);\n } while (current !== null);\n\n return null;\n }\n /**\n Checks to see if the `methodName` exists on the `obj`.\n \n ```javascript\n let foo = { bar: function() { return 'bar'; }, baz: null };\n \n Ember.canInvoke(foo, 'bar'); // true\n Ember.canInvoke(foo, 'baz'); // false\n Ember.canInvoke(foo, 'bat'); // false\n ```\n \n @method canInvoke\n @for Ember\n @param {Object} obj The object to check for the method\n @param {String} methodName The method name to check for\n @return {Boolean}\n @private\n */\n\n\n function canInvoke(obj, methodName) {\n return obj !== null && obj !== undefined && typeof obj[methodName] === 'function';\n }\n /**\n @module @ember/utils\n */\n\n /**\n Checks to see if the `methodName` exists on the `obj`,\n and if it does, invokes it with the arguments passed.\n \n ```javascript\n import { tryInvoke } from '@ember/utils';\n \n let d = new Date('03/15/2013');\n \n tryInvoke(d, 'getTime'); // 1363320000000\n tryInvoke(d, 'setFullYear', [2014]); // 1394856000000\n tryInvoke(d, 'noSuchMethod', [2014]); // undefined\n ```\n \n @method tryInvoke\n @for @ember/utils\n @static\n @param {Object} obj The object to check for the method\n @param {String} methodName The method name to check for\n @param {Array} [args] The arguments to pass to the method\n @return {*} the return value of the invoked method or undefined if it cannot be invoked\n @public\n @deprecated Use Javascript's optional chaining instead.\n */\n\n\n function tryInvoke(obj, methodName, args) {\n (true && !(false) && (0, _debug.deprecate)(\"Use of tryInvoke is deprecated. Instead, consider using JavaScript's optional chaining.\", false, {\n id: 'ember-utils.try-invoke',\n until: '4.0.0',\n for: 'ember-source',\n since: {\n enabled: '3.24.0'\n },\n url: 'https://deprecations.emberjs.com/v3.x#toc_ember-utils-try-invoke'\n }));\n\n if (canInvoke(obj, methodName)) {\n var method = obj[methodName];\n return method.apply(obj, args);\n }\n }\n\n var isArray$1 = Array.isArray;\n\n function makeArray(obj) {\n if (obj === null || obj === undefined) {\n return [];\n }\n\n return isArray$1(obj) ? obj : [obj];\n }\n\n var NAMES = new WeakMap();\n\n function setName(obj, name) {\n if (isObject(obj)) NAMES.set(obj, name);\n }\n\n function getName(obj) {\n return NAMES.get(obj);\n }\n\n var objectToString$1 = Object.prototype.toString;\n\n function isNone(obj) {\n return obj === null || obj === undefined;\n }\n /*\n A `toString` util function that supports objects without a `toString`\n method, e.g. an object created with `Object.create(null)`.\n */\n\n\n function toString(obj) {\n if (typeof obj === 'string') {\n return obj;\n }\n\n if (null === obj) return 'null';\n if (undefined === obj) return 'undefined';\n\n if (Array.isArray(obj)) {\n // Reimplement Array.prototype.join according to spec (22.1.3.13)\n // Changing ToString(element) with this safe version of ToString.\n var r = '';\n\n for (var k = 0; k < obj.length; k++) {\n if (k > 0) {\n r += ',';\n }\n\n if (!isNone(obj[k])) {\n r += toString(obj[k]);\n }\n }\n\n return r;\n }\n\n if (typeof obj.toString === 'function') {\n return obj.toString();\n }\n\n return objectToString$1.call(obj);\n }\n\n var HAS_NATIVE_PROXY = typeof Proxy === 'function';\n _exports.HAS_NATIVE_PROXY = HAS_NATIVE_PROXY;\n var PROXIES = new _util._WeakSet();\n\n function isProxy(value) {\n if (isObject(value)) {\n return PROXIES.has(value);\n }\n\n return false;\n }\n\n function setProxy(object) {\n if (isObject(object)) {\n PROXIES.add(object);\n }\n }\n\n var Cache = /*#__PURE__*/function () {\n function Cache(limit, func, store) {\n this.limit = limit;\n this.func = func;\n this.store = store;\n this.size = 0;\n this.misses = 0;\n this.hits = 0;\n this.store = store || new Map();\n }\n\n var _proto = Cache.prototype;\n\n _proto.get = function get(key) {\n if (this.store.has(key)) {\n this.hits++;\n return this.store.get(key);\n } else {\n this.misses++;\n return this.set(key, this.func(key));\n }\n };\n\n _proto.set = function set(key, value) {\n if (this.limit > this.size) {\n this.size++;\n this.store.set(key, value);\n }\n\n return value;\n };\n\n _proto.purge = function purge() {\n this.store.clear();\n this.size = 0;\n this.hits = 0;\n this.misses = 0;\n };\n\n return Cache;\n }();\n\n _exports.Cache = Cache;\n var EMBER_ARRAYS = new _util._WeakSet();\n\n function setEmberArray(obj) {\n EMBER_ARRAYS.add(obj);\n }\n\n function isEmberArray(obj) {\n return EMBER_ARRAYS.has(obj);\n }\n\n var setupMandatorySetter;\n _exports.setupMandatorySetter = setupMandatorySetter;\n var teardownMandatorySetter;\n _exports.teardownMandatorySetter = teardownMandatorySetter;\n var setWithMandatorySetter;\n _exports.setWithMandatorySetter = setWithMandatorySetter;\n\n function isElementKey(key) {\n return typeof key === 'number' ? isPositiveInt(key) : isStringInt(key);\n }\n\n function isStringInt(str) {\n var num = parseInt(str, 10);\n return isPositiveInt(num) && str === String(num);\n }\n\n function isPositiveInt(num) {\n return num >= 0 && num % 1 === 0;\n }\n\n if (true\n /* DEBUG */\n ) {\n var SEEN_TAGS = new _util._WeakSet();\n var MANDATORY_SETTERS = new WeakMap();\n\n var _propertyIsEnumerable = function _propertyIsEnumerable(obj, key) {\n return Object.prototype.propertyIsEnumerable.call(obj, key);\n };\n\n _exports.setupMandatorySetter = setupMandatorySetter = function setupMandatorySetter(tag, obj, keyName) {\n if (SEEN_TAGS.has(tag)) {\n return;\n }\n\n SEEN_TAGS.add(tag);\n\n if (Array.isArray(obj) && isElementKey(keyName)) {\n return;\n }\n\n var desc = lookupDescriptor(obj, keyName) || {};\n\n if (desc.get || desc.set) {\n // if it has a getter or setter, we can't install the mandatory setter.\n // native setters are allowed, we have to assume that they will resolve\n // to tracked properties.\n return;\n }\n\n if (desc && (!desc.configurable || !desc.writable)) {\n // if it isn't writable anyways, so we shouldn't provide the setter.\n // if it isn't configurable, we can't overwrite it anyways.\n return;\n }\n\n var setters = MANDATORY_SETTERS.get(obj);\n\n if (setters === undefined) {\n setters = {};\n MANDATORY_SETTERS.set(obj, setters);\n }\n\n desc.hadOwnProperty = Object.hasOwnProperty.call(obj, keyName);\n setters[keyName] = desc;\n Object.defineProperty(obj, keyName, {\n configurable: true,\n enumerable: _propertyIsEnumerable(obj, keyName),\n get: function get() {\n if (desc.get) {\n return desc.get.call(this);\n } else {\n return desc.value;\n }\n },\n set: function set(value) {\n (true && !(false) && (0, _debug.assert)(\"You attempted to update \" + this + \".\" + String(keyName) + \" to \\\"\" + String(value) + \"\\\", but it is being tracked by a tracking context, such as a template, computed property, or observer. In order to make sure the context updates properly, you must invalidate the property when updating it. You can mark the property as `@tracked`, or use `@ember/object#set` to do this.\"));\n }\n });\n };\n\n _exports.teardownMandatorySetter = teardownMandatorySetter = function teardownMandatorySetter(obj, keyName) {\n var setters = MANDATORY_SETTERS.get(obj);\n\n if (setters !== undefined && setters[keyName] !== undefined) {\n Object.defineProperty(obj, keyName, setters[keyName]);\n setters[keyName] = undefined;\n }\n };\n\n _exports.setWithMandatorySetter = setWithMandatorySetter = function setWithMandatorySetter(obj, keyName, value) {\n var setters = MANDATORY_SETTERS.get(obj);\n\n if (setters !== undefined && setters[keyName] !== undefined) {\n var setter = setters[keyName];\n\n if (setter.set) {\n setter.set.call(obj, value);\n } else {\n setter.value = value; // If the object didn't have own property before, it would have changed\n // the enumerability after setting the value the first time.\n\n if (!setter.hadOwnProperty) {\n var desc = lookupDescriptor(obj, keyName);\n desc.enumerable = true;\n Object.defineProperty(obj, keyName, desc);\n }\n }\n } else {\n obj[keyName] = value;\n }\n };\n }\n /*\n This package will be eagerly parsed and should have no dependencies on external\n packages.\n \n It is intended to be used to share utility methods that will be needed\n by every Ember application (and is **not** a dumping ground of useful utilities).\n \n Utility methods that are needed in < 80% of cases should be placed\n elsewhere (so they can be lazily evaluated / parsed).\n */\n\n});","define(\"@ember/canary-features/index\", [\"exports\", \"@ember/-internals/environment\", \"@ember/polyfills\"], function (_exports, _environment, _polyfills) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.isEnabled = isEnabled;\n _exports.EMBER_DYNAMIC_HELPERS_AND_MODIFIERS = _exports.EMBER_STRICT_MODE = _exports.EMBER_MODERNIZED_BUILT_IN_COMPONENTS = _exports.EMBER_GLIMMER_INVOKE_HELPER = _exports.EMBER_GLIMMER_HELPER_MANAGER = _exports.EMBER_NAMED_BLOCKS = _exports.EMBER_IMPROVED_INSTRUMENTATION = _exports.EMBER_LIBRARIES_ISREGISTERED = _exports.FEATURES = _exports.DEFAULT_FEATURES = void 0;\n\n /**\n Set `EmberENV.FEATURES` in your application's `config/environment.js` file\n to enable canary features in your application.\n \n See the [feature flag guide](https://guides.emberjs.com/release/configuring-ember/feature-flags/)\n for more details.\n \n @module @ember/canary-features\n @public\n */\n var DEFAULT_FEATURES = {\n EMBER_LIBRARIES_ISREGISTERED: false,\n EMBER_IMPROVED_INSTRUMENTATION: false,\n EMBER_NAMED_BLOCKS: true,\n EMBER_GLIMMER_HELPER_MANAGER: true,\n EMBER_GLIMMER_INVOKE_HELPER: true,\n EMBER_MODERNIZED_BUILT_IN_COMPONENTS: true,\n EMBER_STRICT_MODE: true,\n EMBER_DYNAMIC_HELPERS_AND_MODIFIERS: true\n };\n /**\n The hash of enabled Canary features. Add to this, any canary features\n before creating your application.\n \n @class FEATURES\n @static\n @since 1.1.0\n @public\n */\n\n _exports.DEFAULT_FEATURES = DEFAULT_FEATURES;\n var FEATURES = (0, _polyfills.assign)(DEFAULT_FEATURES, _environment.ENV.FEATURES);\n /**\n Determine whether the specified `feature` is enabled. Used by Ember's\n build tools to exclude experimental features from beta/stable builds.\n \n You can define the following configuration options:\n \n * `EmberENV.ENABLE_OPTIONAL_FEATURES` - enable any features that have not been explicitly\n enabled/disabled.\n \n @method isEnabled\n @param {String} feature The feature to check\n @return {Boolean}\n @since 1.1.0\n @public\n */\n\n _exports.FEATURES = FEATURES;\n\n function isEnabled(feature) {\n var value = FEATURES[feature];\n\n if (value === true || value === false) {\n return value;\n } else if (_environment.ENV.ENABLE_OPTIONAL_FEATURES) {\n return true;\n } else {\n return false;\n }\n }\n\n function featureValue(value) {\n if (_environment.ENV.ENABLE_OPTIONAL_FEATURES && value === null) {\n return true;\n }\n\n return value;\n }\n\n var EMBER_LIBRARIES_ISREGISTERED = featureValue(FEATURES.EMBER_LIBRARIES_ISREGISTERED);\n _exports.EMBER_LIBRARIES_ISREGISTERED = EMBER_LIBRARIES_ISREGISTERED;\n var EMBER_IMPROVED_INSTRUMENTATION = featureValue(FEATURES.EMBER_IMPROVED_INSTRUMENTATION);\n _exports.EMBER_IMPROVED_INSTRUMENTATION = EMBER_IMPROVED_INSTRUMENTATION;\n var EMBER_NAMED_BLOCKS = featureValue(FEATURES.EMBER_NAMED_BLOCKS);\n _exports.EMBER_NAMED_BLOCKS = EMBER_NAMED_BLOCKS;\n var EMBER_GLIMMER_HELPER_MANAGER = featureValue(FEATURES.EMBER_GLIMMER_HELPER_MANAGER);\n _exports.EMBER_GLIMMER_HELPER_MANAGER = EMBER_GLIMMER_HELPER_MANAGER;\n var EMBER_GLIMMER_INVOKE_HELPER = featureValue(FEATURES.EMBER_GLIMMER_INVOKE_HELPER);\n _exports.EMBER_GLIMMER_INVOKE_HELPER = EMBER_GLIMMER_INVOKE_HELPER;\n var EMBER_MODERNIZED_BUILT_IN_COMPONENTS = featureValue(FEATURES.EMBER_MODERNIZED_BUILT_IN_COMPONENTS);\n _exports.EMBER_MODERNIZED_BUILT_IN_COMPONENTS = EMBER_MODERNIZED_BUILT_IN_COMPONENTS;\n var EMBER_STRICT_MODE = featureValue(FEATURES.EMBER_STRICT_MODE);\n _exports.EMBER_STRICT_MODE = EMBER_STRICT_MODE;\n var EMBER_DYNAMIC_HELPERS_AND_MODIFIERS = featureValue(FEATURES.EMBER_DYNAMIC_HELPERS_AND_MODIFIERS);\n _exports.EMBER_DYNAMIC_HELPERS_AND_MODIFIERS = EMBER_DYNAMIC_HELPERS_AND_MODIFIERS;\n});","define(\"@ember/debug/container-debug-adapter\", [\"exports\", \"@ember/-internals/extension-support\"], function (_exports, _extensionSupport) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n Object.defineProperty(_exports, \"default\", {\n enumerable: true,\n get: function get() {\n return _extensionSupport.ContainerDebugAdapter;\n }\n });\n});","define(\"@ember/debug/data-adapter\", [\"exports\", \"@ember/-internals/extension-support\"], function (_exports, _extensionSupport) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n Object.defineProperty(_exports, \"default\", {\n enumerable: true,\n get: function get() {\n return _extensionSupport.DataAdapter;\n }\n });\n});","define(\"@ember/debug/index\", [\"exports\", \"@ember/-internals/browser-environment\", \"@ember/error\", \"@ember/debug/lib/deprecate\", \"@ember/debug/lib/testing\", \"@ember/debug/lib/warn\", \"@ember/-internals/utils\", \"@ember/debug/lib/capture-render-tree\"], function (_exports, _browserEnvironment, _error, _deprecate2, _testing, _warn2, _utils, _captureRenderTree) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n Object.defineProperty(_exports, \"registerDeprecationHandler\", {\n enumerable: true,\n get: function get() {\n return _deprecate2.registerHandler;\n }\n });\n Object.defineProperty(_exports, \"isTesting\", {\n enumerable: true,\n get: function get() {\n return _testing.isTesting;\n }\n });\n Object.defineProperty(_exports, \"setTesting\", {\n enumerable: true,\n get: function get() {\n return _testing.setTesting;\n }\n });\n Object.defineProperty(_exports, \"registerWarnHandler\", {\n enumerable: true,\n get: function get() {\n return _warn2.registerHandler;\n }\n });\n Object.defineProperty(_exports, \"inspect\", {\n enumerable: true,\n get: function get() {\n return _utils.inspect;\n }\n });\n Object.defineProperty(_exports, \"captureRenderTree\", {\n enumerable: true,\n get: function get() {\n return _captureRenderTree.default;\n }\n });\n _exports._warnIfUsingStrippedFeatureFlags = _exports.getDebugFunction = _exports.setDebugFunction = _exports.deprecateFunc = _exports.runInDebug = _exports.debugFreeze = _exports.debugSeal = _exports.deprecate = _exports.debug = _exports.warn = _exports.info = _exports.assert = void 0;\n\n // These are the default production build versions:\n var noop = function noop() {};\n\n var assert = noop;\n _exports.assert = assert;\n var info = noop;\n _exports.info = info;\n var warn = noop;\n _exports.warn = warn;\n var debug = noop;\n _exports.debug = debug;\n var deprecate = noop;\n _exports.deprecate = deprecate;\n var debugSeal = noop;\n _exports.debugSeal = debugSeal;\n var debugFreeze = noop;\n _exports.debugFreeze = debugFreeze;\n var runInDebug = noop;\n _exports.runInDebug = runInDebug;\n var setDebugFunction = noop;\n _exports.setDebugFunction = setDebugFunction;\n var getDebugFunction = noop;\n _exports.getDebugFunction = getDebugFunction;\n\n var deprecateFunc = function deprecateFunc() {\n return arguments[arguments.length - 1];\n };\n\n _exports.deprecateFunc = deprecateFunc;\n\n if (true\n /* DEBUG */\n ) {\n _exports.setDebugFunction = setDebugFunction = function setDebugFunction(type, callback) {\n switch (type) {\n case 'assert':\n return _exports.assert = assert = callback;\n\n case 'info':\n return _exports.info = info = callback;\n\n case 'warn':\n return _exports.warn = warn = callback;\n\n case 'debug':\n return _exports.debug = debug = callback;\n\n case 'deprecate':\n return _exports.deprecate = deprecate = callback;\n\n case 'debugSeal':\n return _exports.debugSeal = debugSeal = callback;\n\n case 'debugFreeze':\n return _exports.debugFreeze = debugFreeze = callback;\n\n case 'runInDebug':\n return _exports.runInDebug = runInDebug = callback;\n\n case 'deprecateFunc':\n return _exports.deprecateFunc = deprecateFunc = callback;\n }\n };\n\n _exports.getDebugFunction = getDebugFunction = function getDebugFunction(type) {\n switch (type) {\n case 'assert':\n return assert;\n\n case 'info':\n return info;\n\n case 'warn':\n return warn;\n\n case 'debug':\n return debug;\n\n case 'deprecate':\n return deprecate;\n\n case 'debugSeal':\n return debugSeal;\n\n case 'debugFreeze':\n return debugFreeze;\n\n case 'runInDebug':\n return runInDebug;\n\n case 'deprecateFunc':\n return deprecateFunc;\n }\n };\n }\n /**\n @module @ember/debug\n */\n\n\n if (true\n /* DEBUG */\n ) {\n /**\n Verify that a certain expectation is met, or throw a exception otherwise.\n This is useful for communicating assumptions in the code to other human\n readers as well as catching bugs that accidentally violates these\n expectations.\n Assertions are removed from production builds, so they can be freely added\n for documentation and debugging purposes without worries of incuring any\n performance penalty. However, because of that, they should not be used for\n checks that could reasonably fail during normal usage. Furthermore, care\n should be taken to avoid accidentally relying on side-effects produced from\n evaluating the condition itself, since the code will not run in production.\n ```javascript\n import { assert } from '@ember/debug';\n // Test for truthiness\n assert('Must pass a string', typeof str === 'string');\n // Fail unconditionally\n assert('This code path should never be run');\n ```\n @method assert\n @static\n @for @ember/debug\n @param {String} description Describes the expectation. This will become the\n text of the Error thrown if the assertion fails.\n @param {any} condition Must be truthy for the assertion to pass. If\n falsy, an exception will be thrown.\n @public\n @since 1.0.0\n */\n setDebugFunction('assert', function assert(desc, test) {\n if (!test) {\n throw new _error.default(\"Assertion Failed: \" + desc);\n }\n });\n /**\n Display a debug notice.\n Calls to this function are not invoked in production builds.\n ```javascript\n import { debug } from '@ember/debug';\n debug('I\\'m a debug notice!');\n ```\n @method debug\n @for @ember/debug\n @static\n @param {String} message A debug message to display.\n @public\n */\n\n setDebugFunction('debug', function debug(message) {\n /* eslint-disable no-console */\n if (console.debug) {\n console.debug(\"DEBUG: \" + message);\n } else {\n console.log(\"DEBUG: \" + message);\n }\n /* eslint-ensable no-console */\n\n });\n /**\n Display an info notice.\n Calls to this function are removed from production builds, so they can be\n freely added for documentation and debugging purposes without worries of\n incuring any performance penalty.\n @method info\n @private\n */\n\n setDebugFunction('info', function info() {\n var _console;\n\n (_console = console).info.apply(_console, arguments);\n /* eslint-disable-line no-console */\n\n });\n /**\n @module @ember/debug\n @public\n */\n\n /**\n Alias an old, deprecated method with its new counterpart.\n Display a deprecation warning with the provided message and a stack trace\n (Chrome and Firefox only) when the assigned method is called.\n Calls to this function are removed from production builds, so they can be\n freely added for documentation and debugging purposes without worries of\n incuring any performance penalty.\n ```javascript\n import { deprecateFunc } from '@ember/debug';\n Ember.oldMethod = deprecateFunc('Please use the new, updated method', options, Ember.newMethod);\n ```\n @method deprecateFunc\n @static\n @for @ember/debug\n @param {String} message A description of the deprecation.\n @param {Object} [options] The options object for `deprecate`.\n @param {Function} func The new function called to replace its deprecated counterpart.\n @return {Function} A new function that wraps the original function with a deprecation warning\n @private\n */\n\n setDebugFunction('deprecateFunc', function deprecateFunc() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 3) {\n var message = args[0],\n options = args[1],\n func = args[2];\n return function () {\n deprecate(message, false, options);\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return func.apply(this, args);\n };\n } else {\n var _message = args[0],\n _func = args[1];\n return function () {\n deprecate(_message);\n return _func.apply(this, arguments);\n };\n }\n });\n /**\n @module @ember/debug\n @public\n */\n\n /**\n Run a function meant for debugging.\n Calls to this function are removed from production builds, so they can be\n freely added for documentation and debugging purposes without worries of\n incuring any performance penalty.\n ```javascript\n import Component from '@ember/component';\n import { runInDebug } from '@ember/debug';\n runInDebug(() => {\n Component.reopen({\n didInsertElement() {\n console.log(\"I'm happy\");\n }\n });\n });\n ```\n @method runInDebug\n @for @ember/debug\n @static\n @param {Function} func The function to be executed.\n @since 1.5.0\n @public\n */\n\n setDebugFunction('runInDebug', function runInDebug(func) {\n func();\n });\n setDebugFunction('debugSeal', function debugSeal(obj) {\n Object.seal(obj);\n });\n setDebugFunction('debugFreeze', function debugFreeze(obj) {\n // re-freezing an already frozen object introduces a significant\n // performance penalty on Chrome (tested through 59).\n //\n // See: https://bugs.chromium.org/p/v8/issues/detail?id=6450\n if (!Object.isFrozen(obj)) {\n Object.freeze(obj);\n }\n });\n setDebugFunction('deprecate', _deprecate2.default);\n setDebugFunction('warn', _warn2.default);\n }\n\n var _warnIfUsingStrippedFeatureFlags;\n\n _exports._warnIfUsingStrippedFeatureFlags = _warnIfUsingStrippedFeatureFlags;\n\n if (true\n /* DEBUG */\n && !(0, _testing.isTesting)()) {\n if (typeof window !== 'undefined' && (_browserEnvironment.isFirefox || _browserEnvironment.isChrome) && window.addEventListener) {\n window.addEventListener('load', function () {\n if (document.documentElement && document.documentElement.dataset && !document.documentElement.dataset.emberExtension) {\n var downloadURL;\n\n if (_browserEnvironment.isChrome) {\n downloadURL = 'https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi';\n } else if (_browserEnvironment.isFirefox) {\n downloadURL = 'https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/';\n }\n\n debug(\"For more advanced debugging, install the Ember Inspector from \" + downloadURL);\n }\n }, false);\n }\n }\n});","define(\"@ember/debug/lib/capture-render-tree\", [\"exports\", \"@glimmer/util\"], function (_exports, _util) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = captureRenderTree;\n\n /**\n @module @ember/debug\n */\n\n /**\n Ember Inspector calls this function to capture the current render tree.\n \n In production mode, this requires turning on `ENV._DEBUG_RENDER_TREE`\n before loading Ember.\n \n @private\n @static\n @method captureRenderTree\n @for @ember/debug\n @param app {ApplicationInstance} An `ApplicationInstance`.\n @since 3.14.0\n */\n function captureRenderTree(app) {\n var renderer = (0, _util.expect)(app.lookup('renderer:-dom'), \"BUG: owner is missing renderer\");\n return renderer.debugRenderTree.capture();\n }\n});","define(\"@ember/debug/lib/deprecate\", [\"exports\", \"@ember/-internals/environment\", \"@ember/debug/index\", \"@ember/debug/lib/handlers\"], function (_exports, _environment, _index, _handlers) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.SINCE_MISSING_DEPRECATIONS = _exports.FOR_MISSING_DEPRECATIONS = _exports.missingOptionsSinceDeprecation = _exports.missingOptionsForDeprecation = _exports.missingOptionsUntilDeprecation = _exports.missingOptionsIdDeprecation = _exports.missingOptionsDeprecation = _exports.registerHandler = _exports.default = void 0;\n\n /**\n @module @ember/debug\n @public\n */\n\n /**\n Allows for runtime registration of handler functions that override the default deprecation behavior.\n Deprecations are invoked by calls to [@ember/debug/deprecate](/ember/release/classes/@ember%2Fdebug/methods/deprecate?anchor=deprecate).\n The following example demonstrates its usage by registering a handler that throws an error if the\n message contains the word \"should\", otherwise defers to the default handler.\n \n ```javascript\n import { registerDeprecationHandler } from '@ember/debug';\n \n registerDeprecationHandler((message, options, next) => {\n if (message.indexOf('should') !== -1) {\n throw new Error(`Deprecation message with should: ${message}`);\n } else {\n // defer to whatever handler was registered before this one\n next(message, options);\n }\n });\n ```\n \n The handler function takes the following arguments:\n \n <ul>\n <li> <code>message</code> - The message received from the deprecation call.</li>\n <li> <code>options</code> - An object passed in with the deprecation call containing additional information including:</li>\n <ul>\n <li> <code>id</code> - An id of the deprecation in the form of <code>package-name.specific-deprecation</code>.</li>\n <li> <code>until</code> - The Ember version number the feature and deprecation will be removed in.</li>\n </ul>\n <li> <code>next</code> - A function that calls into the previously registered handler.</li>\n </ul>\n \n @public\n @static\n @method registerDeprecationHandler\n @for @ember/debug\n @param handler {Function} A function to handle deprecation calls.\n @since 2.1.0\n */\n var registerHandler = function registerHandler() {};\n\n _exports.registerHandler = registerHandler;\n var missingOptionsDeprecation;\n _exports.missingOptionsDeprecation = missingOptionsDeprecation;\n var missingOptionsIdDeprecation;\n _exports.missingOptionsIdDeprecation = missingOptionsIdDeprecation;\n var missingOptionsUntilDeprecation;\n _exports.missingOptionsUntilDeprecation = missingOptionsUntilDeprecation;\n\n var missingOptionsForDeprecation = function missingOptionsForDeprecation() {\n return '';\n };\n\n _exports.missingOptionsForDeprecation = missingOptionsForDeprecation;\n\n var missingOptionsSinceDeprecation = function missingOptionsSinceDeprecation() {\n return '';\n };\n\n _exports.missingOptionsSinceDeprecation = missingOptionsSinceDeprecation;\n\n var deprecate = function deprecate() {};\n\n var FOR_MISSING_DEPRECATIONS = new Set();\n _exports.FOR_MISSING_DEPRECATIONS = FOR_MISSING_DEPRECATIONS;\n var SINCE_MISSING_DEPRECATIONS = new Set();\n _exports.SINCE_MISSING_DEPRECATIONS = SINCE_MISSING_DEPRECATIONS;\n\n if (true\n /* DEBUG */\n ) {\n _exports.registerHandler = registerHandler = function registerHandler(handler) {\n (0, _handlers.registerHandler)('deprecate', handler);\n };\n\n var formatMessage = function formatMessage(_message, options) {\n var message = _message;\n\n if (options && options.id) {\n message = message + (\" [deprecation id: \" + options.id + \"]\");\n }\n\n if (options && options.url) {\n message += \" See \" + options.url + \" for more details.\";\n }\n\n return message;\n };\n\n registerHandler(function logDeprecationToConsole(message, options) {\n var updatedMessage = formatMessage(message, options);\n console.warn(\"DEPRECATION: \" + updatedMessage); // eslint-disable-line no-console\n });\n var captureErrorForStack;\n\n if (new Error().stack) {\n captureErrorForStack = function captureErrorForStack() {\n return new Error();\n };\n } else {\n captureErrorForStack = function captureErrorForStack() {\n try {\n __fail__.fail();\n } catch (e) {\n return e;\n }\n };\n }\n\n registerHandler(function logDeprecationStackTrace(message, options, next) {\n if (_environment.ENV.LOG_STACKTRACE_ON_DEPRECATION) {\n var stackStr = '';\n var error = captureErrorForStack();\n var stack;\n\n if (error.stack) {\n if (error['arguments']) {\n // Chrome\n stack = error.stack.replace(/^\\s+at\\s+/gm, '').replace(/^([^(]+?)([\\n$])/gm, '{anonymous}($1)$2').replace(/^Object.<anonymous>\\s*\\(([^)]+)\\)/gm, '{anonymous}($1)').split('\\n');\n stack.shift();\n } else {\n // Firefox\n stack = error.stack.replace(/(?:\\n@:0)?\\s+$/m, '').replace(/^\\(/gm, '{anonymous}(').split('\\n');\n }\n\n stackStr = \"\\n \" + stack.slice(2).join('\\n ');\n }\n\n var updatedMessage = formatMessage(message, options);\n console.warn(\"DEPRECATION: \" + updatedMessage + stackStr); // eslint-disable-line no-console\n } else {\n next(message, options);\n }\n });\n registerHandler(function raiseOnDeprecation(message, options, next) {\n if (_environment.ENV.RAISE_ON_DEPRECATION) {\n var updatedMessage = formatMessage(message);\n throw new Error(updatedMessage);\n } else {\n next(message, options);\n }\n });\n _exports.missingOptionsDeprecation = missingOptionsDeprecation = 'When calling `deprecate` you ' + 'must provide an `options` hash as the third parameter. ' + '`options` should include `id` and `until` properties.';\n _exports.missingOptionsIdDeprecation = missingOptionsIdDeprecation = 'When calling `deprecate` you must provide `id` in options.';\n _exports.missingOptionsUntilDeprecation = missingOptionsUntilDeprecation = 'When calling `deprecate` you must provide `until` in options.';\n\n _exports.missingOptionsForDeprecation = missingOptionsForDeprecation = function missingOptionsForDeprecation(id) {\n return \"When calling `deprecate` you must provide `for` in options. Missing options.for in \\\"\" + id + \"\\\" deprecation\";\n };\n\n _exports.missingOptionsSinceDeprecation = missingOptionsSinceDeprecation = function missingOptionsSinceDeprecation(id) {\n return \"When calling `deprecate` you must provide `since` in options. Missing options.since in \\\"\" + id + \"\\\" deprecation\";\n };\n /**\n @module @ember/debug\n @public\n */\n\n /**\n Display a deprecation warning with the provided message and a stack trace\n (Chrome and Firefox only).\n * In a production build, this method is defined as an empty function (NOP).\n Uses of this method in Ember itself are stripped from the ember.prod.js build.\n @method deprecate\n @for @ember/debug\n @param {String} message A description of the deprecation.\n @param {Boolean} test A boolean. If falsy, the deprecation will be displayed.\n @param {Object} options\n @param {String} options.id A unique id for this deprecation. The id can be\n used by Ember debugging tools to change the behavior (raise, log or silence)\n for that specific deprecation. The id should be namespaced by dots, e.g.\n \"view.helper.select\".\n @param {string} options.until The version of Ember when this deprecation\n warning will be removed.\n @param {String} options.for A namespace for the deprecation, usually the package name\n @param {Object} options.since Describes when the deprecation became available and enabled.\n @param {String} [options.url] An optional url to the transition guide on the\n emberjs.com website.\n @static\n @public\n @since 1.0.0\n */\n\n\n deprecate = function deprecate(message, test, options) {\n (0, _index.assert)(missingOptionsDeprecation, Boolean(options && (options.id || options.until)));\n (0, _index.assert)(missingOptionsIdDeprecation, Boolean(options.id));\n (0, _index.assert)(missingOptionsUntilDeprecation, Boolean(options.until));\n\n if (!options.for && !FOR_MISSING_DEPRECATIONS.has(options.id)) {\n FOR_MISSING_DEPRECATIONS.add(options.id);\n deprecate(missingOptionsForDeprecation(options.id), Boolean(options.for), {\n id: 'ember-source.deprecation-without-for',\n until: '4.0.0',\n for: 'ember-source',\n since: {\n enabled: '3.24.0'\n }\n });\n }\n\n if (!options.since && !SINCE_MISSING_DEPRECATIONS.has(options.id)) {\n SINCE_MISSING_DEPRECATIONS.add(options.id);\n deprecate(missingOptionsSinceDeprecation(options.id), Boolean(options.since), {\n id: 'ember-source.deprecation-without-since',\n until: '4.0.0',\n for: 'ember-source',\n since: {\n enabled: '3.24.0'\n }\n });\n }\n\n (0, _handlers.invoke)('deprecate', message, test, options);\n };\n }\n\n var _default = deprecate;\n _exports.default = _default;\n});","define(\"@ember/debug/lib/handlers\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.invoke = _exports.registerHandler = _exports.HANDLERS = void 0;\n var HANDLERS = {};\n _exports.HANDLERS = HANDLERS;\n\n var registerHandler = function registerHandler() {};\n\n _exports.registerHandler = registerHandler;\n\n var invoke = function invoke() {};\n\n _exports.invoke = invoke;\n\n if (true\n /* DEBUG */\n ) {\n _exports.registerHandler = registerHandler = function registerHandler(type, callback) {\n var nextHandler = HANDLERS[type] || function () {};\n\n HANDLERS[type] = function (message, options) {\n callback(message, options, nextHandler);\n };\n };\n\n _exports.invoke = invoke = function invoke(type, message, test, options) {\n if (test) {\n return;\n }\n\n var handlerForType = HANDLERS[type];\n\n if (handlerForType) {\n handlerForType(message, options);\n }\n };\n }\n});","define(\"@ember/debug/lib/testing\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.isTesting = isTesting;\n _exports.setTesting = setTesting;\n var testing = false;\n\n function isTesting() {\n return testing;\n }\n\n function setTesting(value) {\n testing = Boolean(value);\n }\n});","define(\"@ember/debug/lib/warn\", [\"exports\", \"@ember/debug/index\", \"@ember/debug/lib/handlers\"], function (_exports, _index, _handlers) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.missingOptionsDeprecation = _exports.missingOptionsIdDeprecation = _exports.registerHandler = _exports.default = void 0;\n\n var registerHandler = function registerHandler() {};\n\n _exports.registerHandler = registerHandler;\n\n var warn = function warn() {};\n\n var missingOptionsDeprecation;\n _exports.missingOptionsDeprecation = missingOptionsDeprecation;\n var missingOptionsIdDeprecation;\n /**\n @module @ember/debug\n */\n\n _exports.missingOptionsIdDeprecation = missingOptionsIdDeprecation;\n\n if (true\n /* DEBUG */\n ) {\n /**\n Allows for runtime registration of handler functions that override the default warning behavior.\n Warnings are invoked by calls made to [@ember/debug/warn](/ember/release/classes/@ember%2Fdebug/methods/warn?anchor=warn).\n The following example demonstrates its usage by registering a handler that does nothing overriding Ember's\n default warning behavior.\n ```javascript\n import { registerWarnHandler } from '@ember/debug';\n // next is not called, so no warnings get the default behavior\n registerWarnHandler(() => {});\n ```\n The handler function takes the following arguments:\n <ul>\n <li> <code>message</code> - The message received from the warn call. </li>\n <li> <code>options</code> - An object passed in with the warn call containing additional information including:</li>\n <ul>\n <li> <code>id</code> - An id of the warning in the form of <code>package-name.specific-warning</code>.</li>\n </ul>\n <li> <code>next</code> - A function that calls into the previously registered handler.</li>\n </ul>\n @public\n @static\n @method registerWarnHandler\n @for @ember/debug\n @param handler {Function} A function to handle warnings.\n @since 2.1.0\n */\n _exports.registerHandler = registerHandler = function registerHandler(handler) {\n (0, _handlers.registerHandler)('warn', handler);\n };\n\n registerHandler(function logWarning(message) {\n /* eslint-disable no-console */\n console.warn(\"WARNING: \" + message);\n /* eslint-enable no-console */\n });\n _exports.missingOptionsDeprecation = missingOptionsDeprecation = 'When calling `warn` you ' + 'must provide an `options` hash as the third parameter. ' + '`options` should include an `id` property.';\n _exports.missingOptionsIdDeprecation = missingOptionsIdDeprecation = 'When calling `warn` you must provide `id` in options.';\n /**\n Display a warning with the provided message.\n * In a production build, this method is defined as an empty function (NOP).\n Uses of this method in Ember itself are stripped from the ember.prod.js build.\n ```javascript\n import { warn } from '@ember/debug';\n import tomsterCount from './tomster-counter'; // a module in my project\n // Log a warning if we have more than 3 tomsters\n warn('Too many tomsters!', tomsterCount <= 3, {\n id: 'ember-debug.too-many-tomsters'\n });\n ```\n @method warn\n @for @ember/debug\n @static\n @param {String} message A warning to display.\n @param {Boolean} test An optional boolean. If falsy, the warning\n will be displayed.\n @param {Object} options An object that can be used to pass a unique\n `id` for this warning. The `id` can be used by Ember debugging tools\n to change the behavior (raise, log, or silence) for that specific warning.\n The `id` should be namespaced by dots, e.g. \"ember-debug.feature-flag-with-features-stripped\"\n @public\n @since 1.0.0\n */\n\n warn = function warn(message, test, options) {\n if (arguments.length === 2 && typeof test === 'object') {\n options = test;\n test = false;\n }\n\n (0, _index.assert)(missingOptionsDeprecation, Boolean(options));\n (0, _index.assert)(missingOptionsIdDeprecation, Boolean(options && options.id));\n (0, _handlers.invoke)('warn', message, test, options);\n };\n }\n\n var _default = warn;\n _exports.default = _default;\n});","define(\"@ember/deprecated-features/index\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.GLOBALS_RESOLVER = _exports.PARTIALS = _exports.EMBER_COMPONENT_IS_VISIBLE = _exports.MOUSE_ENTER_LEAVE_MOVE_EVENTS = _exports.FUNCTION_PROTOTYPE_EXTENSIONS = _exports.APP_CTRL_ROUTER_PROPS = _exports.ALIAS_METHOD = _exports.JQUERY_INTEGRATION = _exports.COMPONENT_MANAGER_STRING_LOOKUP = _exports.ROUTER_EVENTS = _exports.MERGE = _exports.LOGGER = _exports.EMBER_EXTEND_PROTOTYPES = _exports.SEND_ACTION = void 0;\n\n /* eslint-disable no-implicit-coercion */\n // These versions should be the version that the deprecation was _introduced_,\n // not the version that the feature will be removed.\n var SEND_ACTION = !!'3.4.0';\n _exports.SEND_ACTION = SEND_ACTION;\n var EMBER_EXTEND_PROTOTYPES = !!'3.2.0-beta.5';\n _exports.EMBER_EXTEND_PROTOTYPES = EMBER_EXTEND_PROTOTYPES;\n var LOGGER = !!'3.2.0-beta.1';\n _exports.LOGGER = LOGGER;\n var MERGE = !!'3.6.0-beta.1';\n _exports.MERGE = MERGE;\n var ROUTER_EVENTS = !!'4.0.0';\n _exports.ROUTER_EVENTS = ROUTER_EVENTS;\n var COMPONENT_MANAGER_STRING_LOOKUP = !!'3.8.0';\n _exports.COMPONENT_MANAGER_STRING_LOOKUP = COMPONENT_MANAGER_STRING_LOOKUP;\n var JQUERY_INTEGRATION = !!'3.9.0';\n _exports.JQUERY_INTEGRATION = JQUERY_INTEGRATION;\n var ALIAS_METHOD = !!'3.9.0';\n _exports.ALIAS_METHOD = ALIAS_METHOD;\n var APP_CTRL_ROUTER_PROPS = !!'3.10.0-beta.1';\n _exports.APP_CTRL_ROUTER_PROPS = APP_CTRL_ROUTER_PROPS;\n var FUNCTION_PROTOTYPE_EXTENSIONS = !!'3.11.0-beta.1';\n _exports.FUNCTION_PROTOTYPE_EXTENSIONS = FUNCTION_PROTOTYPE_EXTENSIONS;\n var MOUSE_ENTER_LEAVE_MOVE_EVENTS = !!'3.13.0-beta.1';\n _exports.MOUSE_ENTER_LEAVE_MOVE_EVENTS = MOUSE_ENTER_LEAVE_MOVE_EVENTS;\n var EMBER_COMPONENT_IS_VISIBLE = !!'3.15.0-beta.1';\n _exports.EMBER_COMPONENT_IS_VISIBLE = EMBER_COMPONENT_IS_VISIBLE;\n var PARTIALS = !!'3.15.0-beta.1';\n _exports.PARTIALS = PARTIALS;\n var GLOBALS_RESOLVER = !!'3.16.0-beta.1';\n _exports.GLOBALS_RESOLVER = GLOBALS_RESOLVER;\n});","define(\"@ember/error/index\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n\n /**\n @module @ember/error\n */\n\n /**\n The JavaScript Error object used by Ember.assert.\n \n @class Error\n @namespace Ember\n @extends Error\n @constructor\n @public\n */\n var _default = Error;\n _exports.default = _default;\n});","define(\"@ember/polyfills/index\", [\"exports\", \"@ember/deprecated-features\", \"@ember/polyfills/lib/merge\", \"@ember/polyfills/lib/assign\"], function (_exports, _deprecatedFeatures, _merge, _assign) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n Object.defineProperty(_exports, \"assign\", {\n enumerable: true,\n get: function get() {\n return _assign.default;\n }\n });\n Object.defineProperty(_exports, \"assignPolyfill\", {\n enumerable: true,\n get: function get() {\n return _assign.assign;\n }\n });\n _exports.hasPropertyAccessors = _exports.merge = void 0;\n var merge = _deprecatedFeatures.MERGE ? _merge.default : undefined; // Export `assignPolyfill` for testing\n\n _exports.merge = merge;\n var hasPropertyAccessors = true;\n _exports.hasPropertyAccessors = hasPropertyAccessors;\n});","define(\"@ember/polyfills/lib/assign\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.assign = assign;\n _exports.default = void 0;\n\n /**\n @module @ember/polyfills\n */\n\n /**\n Copy properties from a source object to a target object. Source arguments remain unchanged.\n \n ```javascript\n import { assign } from '@ember/polyfills';\n \n var a = { first: 'Yehuda' };\n var b = { last: 'Katz' };\n var c = { company: 'Other Company' };\n var d = { company: 'Tilde Inc.' };\n assign(a, b, c, d); // a === { first: 'Yehuda', last: 'Katz', company: 'Tilde Inc.' };\n ```\n \n @method assign\n @for @ember/polyfills\n @param {Object} target The object to assign into\n @param {Object} ...args The objects to copy properties from\n @return {Object}\n @public\n @static\n */\n function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var arg = arguments[i];\n\n if (!arg) {\n continue;\n }\n\n var updates = Object.keys(arg);\n\n for (var _i = 0; _i < updates.length; _i++) {\n var prop = updates[_i];\n target[prop] = arg[prop];\n }\n }\n\n return target;\n } // Note: We use the bracket notation so\n // that the babel plugin does not\n // transform it.\n // https://www.npmjs.com/package/babel-plugin-transform-object-assign\n\n\n var _assign = Object.assign;\n\n var _default = _assign || assign;\n\n _exports.default = _default;\n});","define(\"@ember/polyfills/lib/merge\", [\"exports\", \"@ember/debug\"], function (_exports, _debug) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n\n /**\n Merge the contents of two objects together into the first object.\n \n ```javascript\n import { merge } from '@ember/polyfills';\n \n merge({ first: 'Tom' }, { last: 'Dale' }); // { first: 'Tom', last: 'Dale' }\n var a = { first: 'Yehuda' };\n var b = { last: 'Katz' };\n merge(a, b); // a == { first: 'Yehuda', last: 'Katz' }, b == { last: 'Katz' }\n ```\n \n @method merge\n @static\n @for @ember/polyfills\n @param {Object} original The object to merge into\n @param {Object} updates The object to copy properties from\n @return {Object}\n @deprecated\n @public\n */\n function merge(original, updates) {\n (true && !(false) && (0, _debug.deprecate)('Use of `merge` has been deprecated. Please use `assign` instead.', false, {\n id: 'ember-polyfills.deprecate-merge',\n until: '4.0.0',\n url: 'https://deprecations.emberjs.com/v3.x/#toc_ember-polyfills-deprecate-merge',\n for: 'ember-source',\n since: {\n enabled: '3.6.0-beta.1'\n }\n }));\n\n if (updates === null || typeof updates !== 'object') {\n return original;\n }\n\n var props = Object.keys(updates);\n var prop;\n\n for (var i = 0; i < props.length; i++) {\n prop = props[i];\n original[prop] = updates[prop];\n }\n\n return original;\n }\n\n var _default = merge;\n _exports.default = _default;\n});","define(\"@glimmer/compiler\", [\"exports\", \"ember-babel\", \"@glimmer/syntax\", \"@glimmer/util\"], function (_exports, _emberBabel, _syntax, _util) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.precompile = precompile;\n _exports.precompileJSON = precompileJSON;\n _exports.buildStatement = buildStatement;\n _exports.buildStatements = buildStatements;\n _exports.s = s;\n _exports.c = c;\n _exports.unicode = unicode;\n _exports.WireFormatDebugger = _exports.NEWLINE = _exports.ProgramSymbols = _exports.defaultId = void 0;\n\n var _CurriedTypeToReadabl;\n\n var Template = /*#__PURE__*/function (_node$fields) {\n (0, _emberBabel.inheritsLoose)(Template, _node$fields);\n\n function Template() {\n return _node$fields.apply(this, arguments) || this;\n }\n\n return Template;\n }((0, _syntax.node)('Template').fields());\n\n var InElement = /*#__PURE__*/function (_node$fields2) {\n (0, _emberBabel.inheritsLoose)(InElement, _node$fields2);\n\n function InElement() {\n return _node$fields2.apply(this, arguments) || this;\n }\n\n return InElement;\n }((0, _syntax.node)('InElement').fields());\n\n var Not = /*#__PURE__*/function (_node$fields3) {\n (0, _emberBabel.inheritsLoose)(Not, _node$fields3);\n\n function Not() {\n return _node$fields3.apply(this, arguments) || this;\n }\n\n return Not;\n }((0, _syntax.node)('Not').fields());\n\n var If = /*#__PURE__*/function (_node$fields4) {\n (0, _emberBabel.inheritsLoose)(If, _node$fields4);\n\n function If() {\n return _node$fields4.apply(this, arguments) || this;\n }\n\n return If;\n }((0, _syntax.node)('If').fields());\n\n var IfInline = /*#__PURE__*/function (_node$fields5) {\n (0, _emberBabel.inheritsLoose)(IfInline, _node$fields5);\n\n function IfInline() {\n return _node$fields5.apply(this, arguments) || this;\n }\n\n return IfInline;\n }((0, _syntax.node)('IfInline').fields());\n\n var Each = /*#__PURE__*/function (_node$fields6) {\n (0, _emberBabel.inheritsLoose)(Each, _node$fields6);\n\n function Each() {\n return _node$fields6.apply(this, arguments) || this;\n }\n\n return Each;\n }((0, _syntax.node)('Each').fields());\n\n var With = /*#__PURE__*/function (_node$fields7) {\n (0, _emberBabel.inheritsLoose)(With, _node$fields7);\n\n function With() {\n return _node$fields7.apply(this, arguments) || this;\n }\n\n return With;\n }((0, _syntax.node)('With').fields());\n\n var Let = /*#__PURE__*/function (_node$fields8) {\n (0, _emberBabel.inheritsLoose)(Let, _node$fields8);\n\n function Let() {\n return _node$fields8.apply(this, arguments) || this;\n }\n\n return Let;\n }((0, _syntax.node)('Let').fields());\n\n var WithDynamicVars = /*#__PURE__*/function (_node$fields9) {\n (0, _emberBabel.inheritsLoose)(WithDynamicVars, _node$fields9);\n\n function WithDynamicVars() {\n return _node$fields9.apply(this, arguments) || this;\n }\n\n return WithDynamicVars;\n }((0, _syntax.node)('WithDynamicVars').fields());\n\n var GetDynamicVar = /*#__PURE__*/function (_node$fields10) {\n (0, _emberBabel.inheritsLoose)(GetDynamicVar, _node$fields10);\n\n function GetDynamicVar() {\n return _node$fields10.apply(this, arguments) || this;\n }\n\n return GetDynamicVar;\n }((0, _syntax.node)('GetDynamicVar').fields());\n\n var Log = /*#__PURE__*/function (_node$fields11) {\n (0, _emberBabel.inheritsLoose)(Log, _node$fields11);\n\n function Log() {\n return _node$fields11.apply(this, arguments) || this;\n }\n\n return Log;\n }((0, _syntax.node)('Log').fields());\n\n var InvokeComponent = /*#__PURE__*/function (_node$fields12) {\n (0, _emberBabel.inheritsLoose)(InvokeComponent, _node$fields12);\n\n function InvokeComponent() {\n return _node$fields12.apply(this, arguments) || this;\n }\n\n return InvokeComponent;\n }((0, _syntax.node)('InvokeComponent').fields());\n\n var _NamedBlocks = /*#__PURE__*/function (_node$fields13) {\n (0, _emberBabel.inheritsLoose)(NamedBlocks, _node$fields13);\n\n function NamedBlocks() {\n return _node$fields13.apply(this, arguments) || this;\n }\n\n return NamedBlocks;\n }((0, _syntax.node)('NamedBlocks').fields());\n\n var _NamedBlock = /*#__PURE__*/function (_node$fields14) {\n (0, _emberBabel.inheritsLoose)(NamedBlock, _node$fields14);\n\n function NamedBlock() {\n return _node$fields14.apply(this, arguments) || this;\n }\n\n return NamedBlock;\n }((0, _syntax.node)('NamedBlock').fields());\n\n var EndBlock = /*#__PURE__*/function (_node$fields15) {\n (0, _emberBabel.inheritsLoose)(EndBlock, _node$fields15);\n\n function EndBlock() {\n return _node$fields15.apply(this, arguments) || this;\n }\n\n return EndBlock;\n }((0, _syntax.node)('EndBlock').fields());\n\n var AppendTrustedHTML = /*#__PURE__*/function (_node$fields16) {\n (0, _emberBabel.inheritsLoose)(AppendTrustedHTML, _node$fields16);\n\n function AppendTrustedHTML() {\n return _node$fields16.apply(this, arguments) || this;\n }\n\n return AppendTrustedHTML;\n }((0, _syntax.node)('AppendTrustedHTML').fields());\n\n var AppendTextNode = /*#__PURE__*/function (_node$fields17) {\n (0, _emberBabel.inheritsLoose)(AppendTextNode, _node$fields17);\n\n function AppendTextNode() {\n return _node$fields17.apply(this, arguments) || this;\n }\n\n return AppendTextNode;\n }((0, _syntax.node)('AppendTextNode').fields());\n\n var AppendComment = /*#__PURE__*/function (_node$fields18) {\n (0, _emberBabel.inheritsLoose)(AppendComment, _node$fields18);\n\n function AppendComment() {\n return _node$fields18.apply(this, arguments) || this;\n }\n\n return AppendComment;\n }((0, _syntax.node)('AppendComment').fields());\n\n var Component = /*#__PURE__*/function (_node$fields19) {\n (0, _emberBabel.inheritsLoose)(Component, _node$fields19);\n\n function Component() {\n return _node$fields19.apply(this, arguments) || this;\n }\n\n return Component;\n }((0, _syntax.node)('Component').fields());\n\n var StaticAttr = /*#__PURE__*/function (_node$fields20) {\n (0, _emberBabel.inheritsLoose)(StaticAttr, _node$fields20);\n\n function StaticAttr() {\n return _node$fields20.apply(this, arguments) || this;\n }\n\n return StaticAttr;\n }((0, _syntax.node)('StaticAttr').fields());\n\n var DynamicAttr = /*#__PURE__*/function (_node$fields21) {\n (0, _emberBabel.inheritsLoose)(DynamicAttr, _node$fields21);\n\n function DynamicAttr() {\n return _node$fields21.apply(this, arguments) || this;\n }\n\n return DynamicAttr;\n }((0, _syntax.node)('DynamicAttr').fields());\n\n var SimpleElement = /*#__PURE__*/function (_node$fields22) {\n (0, _emberBabel.inheritsLoose)(SimpleElement, _node$fields22);\n\n function SimpleElement() {\n return _node$fields22.apply(this, arguments) || this;\n }\n\n return SimpleElement;\n }((0, _syntax.node)('SimpleElement').fields());\n\n var ElementParameters = /*#__PURE__*/function (_node$fields23) {\n (0, _emberBabel.inheritsLoose)(ElementParameters, _node$fields23);\n\n function ElementParameters() {\n return _node$fields23.apply(this, arguments) || this;\n }\n\n return ElementParameters;\n }((0, _syntax.node)('ElementParameters').fields());\n\n var Yield = /*#__PURE__*/function (_node$fields24) {\n (0, _emberBabel.inheritsLoose)(Yield, _node$fields24);\n\n function Yield() {\n return _node$fields24.apply(this, arguments) || this;\n }\n\n return Yield;\n }((0, _syntax.node)('Yield').fields());\n\n var Partial = /*#__PURE__*/function (_node$fields25) {\n (0, _emberBabel.inheritsLoose)(Partial, _node$fields25);\n\n function Partial() {\n return _node$fields25.apply(this, arguments) || this;\n }\n\n return Partial;\n }((0, _syntax.node)('Partial').fields());\n\n var Debugger = /*#__PURE__*/function (_node$fields26) {\n (0, _emberBabel.inheritsLoose)(Debugger, _node$fields26);\n\n function Debugger() {\n return _node$fields26.apply(this, arguments) || this;\n }\n\n return Debugger;\n }((0, _syntax.node)('Debugger').fields());\n\n var _CallExpression = /*#__PURE__*/function (_node$fields27) {\n (0, _emberBabel.inheritsLoose)(CallExpression, _node$fields27);\n\n function CallExpression() {\n return _node$fields27.apply(this, arguments) || this;\n }\n\n return CallExpression;\n }((0, _syntax.node)('CallExpression').fields());\n\n var DeprecatedCallExpression = /*#__PURE__*/function (_node$fields28) {\n (0, _emberBabel.inheritsLoose)(DeprecatedCallExpression, _node$fields28);\n\n function DeprecatedCallExpression() {\n return _node$fields28.apply(this, arguments) || this;\n }\n\n return DeprecatedCallExpression;\n }((0, _syntax.node)('DeprecatedCallExpression').fields());\n\n var Modifier = /*#__PURE__*/function (_node$fields29) {\n (0, _emberBabel.inheritsLoose)(Modifier, _node$fields29);\n\n function Modifier() {\n return _node$fields29.apply(this, arguments) || this;\n }\n\n return Modifier;\n }((0, _syntax.node)('Modifier').fields());\n\n var _InvokeBlock = /*#__PURE__*/function (_node$fields30) {\n (0, _emberBabel.inheritsLoose)(InvokeBlock, _node$fields30);\n\n function InvokeBlock() {\n return _node$fields30.apply(this, arguments) || this;\n }\n\n return InvokeBlock;\n }((0, _syntax.node)('InvokeBlock').fields());\n\n var SplatAttr = /*#__PURE__*/function (_node$fields31) {\n (0, _emberBabel.inheritsLoose)(SplatAttr, _node$fields31);\n\n function SplatAttr() {\n return _node$fields31.apply(this, arguments) || this;\n }\n\n return SplatAttr;\n }((0, _syntax.node)('SplatAttr').fields());\n\n var _PathExpression = /*#__PURE__*/function (_node$fields32) {\n (0, _emberBabel.inheritsLoose)(PathExpression, _node$fields32);\n\n function PathExpression() {\n return _node$fields32.apply(this, arguments) || this;\n }\n\n return PathExpression;\n }((0, _syntax.node)('PathExpression').fields());\n\n var GetWithResolver = /*#__PURE__*/function (_node$fields33) {\n (0, _emberBabel.inheritsLoose)(GetWithResolver, _node$fields33);\n\n function GetWithResolver() {\n return _node$fields33.apply(this, arguments) || this;\n }\n\n return GetWithResolver;\n }((0, _syntax.node)('GetWithResolver').fields());\n\n var GetSymbol = /*#__PURE__*/function (_node$fields34) {\n (0, _emberBabel.inheritsLoose)(GetSymbol, _node$fields34);\n\n function GetSymbol() {\n return _node$fields34.apply(this, arguments) || this;\n }\n\n return GetSymbol;\n }((0, _syntax.node)('GetSymbol').fields());\n\n var GetFreeWithContext = /*#__PURE__*/function (_node$fields35) {\n (0, _emberBabel.inheritsLoose)(GetFreeWithContext, _node$fields35);\n\n function GetFreeWithContext() {\n return _node$fields35.apply(this, arguments) || this;\n }\n\n return GetFreeWithContext;\n }((0, _syntax.node)('GetFreeWithContext').fields());\n /** strict mode */\n\n\n var GetFree = /*#__PURE__*/function (_node$fields36) {\n (0, _emberBabel.inheritsLoose)(GetFree, _node$fields36);\n\n function GetFree() {\n return _node$fields36.apply(this, arguments) || this;\n }\n\n return GetFree;\n }((0, _syntax.node)('GetFree').fields());\n\n var Missing = /*#__PURE__*/function (_node$fields37) {\n (0, _emberBabel.inheritsLoose)(Missing, _node$fields37);\n\n function Missing() {\n return _node$fields37.apply(this, arguments) || this;\n }\n\n return Missing;\n }((0, _syntax.node)('Missing').fields());\n\n var InterpolateExpression = /*#__PURE__*/function (_node$fields38) {\n (0, _emberBabel.inheritsLoose)(InterpolateExpression, _node$fields38);\n\n function InterpolateExpression() {\n return _node$fields38.apply(this, arguments) || this;\n }\n\n return InterpolateExpression;\n }((0, _syntax.node)('InterpolateExpression').fields());\n\n var HasBlock = /*#__PURE__*/function (_node$fields39) {\n (0, _emberBabel.inheritsLoose)(HasBlock, _node$fields39);\n\n function HasBlock() {\n return _node$fields39.apply(this, arguments) || this;\n }\n\n return HasBlock;\n }((0, _syntax.node)('HasBlock').fields());\n\n var HasBlockParams = /*#__PURE__*/function (_node$fields40) {\n (0, _emberBabel.inheritsLoose)(HasBlockParams, _node$fields40);\n\n function HasBlockParams() {\n return _node$fields40.apply(this, arguments) || this;\n }\n\n return HasBlockParams;\n }((0, _syntax.node)('HasBlockParams').fields());\n\n var Curry = /*#__PURE__*/function (_node$fields41) {\n (0, _emberBabel.inheritsLoose)(Curry, _node$fields41);\n\n function Curry() {\n return _node$fields41.apply(this, arguments) || this;\n }\n\n return Curry;\n }((0, _syntax.node)('Curry').fields());\n\n var _Positional = /*#__PURE__*/function (_node$fields42) {\n (0, _emberBabel.inheritsLoose)(Positional, _node$fields42);\n\n function Positional() {\n return _node$fields42.apply(this, arguments) || this;\n }\n\n return Positional;\n }((0, _syntax.node)('Positional').fields());\n\n var _NamedArguments = /*#__PURE__*/function (_node$fields43) {\n (0, _emberBabel.inheritsLoose)(NamedArguments, _node$fields43);\n\n function NamedArguments() {\n return _node$fields43.apply(this, arguments) || this;\n }\n\n return NamedArguments;\n }((0, _syntax.node)('NamedArguments').fields());\n\n var NamedArgument = /*#__PURE__*/function (_node$fields44) {\n (0, _emberBabel.inheritsLoose)(NamedArgument, _node$fields44);\n\n function NamedArgument() {\n return _node$fields44.apply(this, arguments) || this;\n }\n\n return NamedArgument;\n }((0, _syntax.node)('NamedArgument').fields());\n\n var _Args = /*#__PURE__*/function (_node$fields45) {\n (0, _emberBabel.inheritsLoose)(Args, _node$fields45);\n\n function Args() {\n return _node$fields45.apply(this, arguments) || this;\n }\n\n return Args;\n }((0, _syntax.node)('Args').fields());\n\n var Tail = /*#__PURE__*/function (_node$fields46) {\n (0, _emberBabel.inheritsLoose)(Tail, _node$fields46);\n\n function Tail() {\n return _node$fields46.apply(this, arguments) || this;\n }\n\n return Tail;\n }((0, _syntax.node)('Tail').fields());\n\n var PresentList = /*#__PURE__*/function () {\n function PresentList(list) {\n this.list = list;\n }\n\n var _proto = PresentList.prototype;\n\n _proto.toArray = function toArray() {\n return this.list;\n };\n\n _proto.map = function map(callback) {\n var result = (0, _util.mapPresent)(this.list, callback);\n return new PresentList(result);\n };\n\n _proto.filter = function filter(predicate) {\n var out = [];\n\n for (var _iterator = (0, _emberBabel.createForOfIteratorHelperLoose)(this.list), _step; !(_step = _iterator()).done;) {\n var _item = _step.value;\n\n if (predicate(_item)) {\n out.push(_item);\n }\n }\n\n return OptionalList(out);\n };\n\n _proto.toPresentArray = function toPresentArray() {\n return this.list;\n };\n\n _proto.into = function into(_ref) {\n var ifPresent = _ref.ifPresent;\n return ifPresent(this);\n };\n\n return PresentList;\n }();\n\n var EmptyList = /*#__PURE__*/function () {\n function EmptyList() {\n this.list = [];\n }\n\n var _proto2 = EmptyList.prototype;\n\n _proto2.map = function map(_callback) {\n return new EmptyList();\n };\n\n _proto2.filter = function filter(_predicate) {\n return new EmptyList();\n };\n\n _proto2.toArray = function toArray() {\n return this.list;\n };\n\n _proto2.toPresentArray = function toPresentArray() {\n return null;\n };\n\n _proto2.into = function into(_ref2) {\n var ifEmpty = _ref2.ifEmpty;\n return ifEmpty();\n };\n\n return EmptyList;\n }(); // export type OptionalList<T> = PresentList<T> | EmptyList<T>;\n\n\n function OptionalList(value) {\n if ((0, _util.isPresent)(value)) {\n return new PresentList(value);\n } else {\n return new EmptyList();\n }\n }\n\n var ResultImpl = /*#__PURE__*/function () {\n function ResultImpl() {}\n\n ResultImpl.all = function all() {\n var out = [];\n\n for (var _len = arguments.length, results = new Array(_len), _key = 0; _key < _len; _key++) {\n results[_key] = arguments[_key];\n }\n\n for (var _i = 0, _results = results; _i < _results.length; _i++) {\n var _result = _results[_i];\n\n if (_result.isErr) {\n return _result.cast();\n } else {\n out.push(_result.value);\n }\n }\n\n return Ok(out);\n };\n\n return ResultImpl;\n }();\n\n var Result = ResultImpl;\n\n var OkImpl = /*#__PURE__*/function (_ResultImpl) {\n (0, _emberBabel.inheritsLoose)(OkImpl, _ResultImpl);\n\n function OkImpl(value) {\n var _this;\n\n _this = _ResultImpl.call(this) || this;\n _this.value = value;\n _this.isOk = true;\n _this.isErr = false;\n return _this;\n }\n\n var _proto3 = OkImpl.prototype;\n\n _proto3.expect = function expect(_message) {\n return this.value;\n };\n\n _proto3.ifOk = function ifOk(callback) {\n callback(this.value);\n return this;\n };\n\n _proto3.andThen = function andThen(callback) {\n return callback(this.value);\n };\n\n _proto3.mapOk = function mapOk(callback) {\n return Ok(callback(this.value));\n };\n\n _proto3.ifErr = function ifErr(_callback) {\n return this;\n };\n\n _proto3.mapErr = function mapErr(_callback) {\n return this;\n };\n\n return OkImpl;\n }(ResultImpl);\n\n var ErrImpl = /*#__PURE__*/function (_ResultImpl2) {\n (0, _emberBabel.inheritsLoose)(ErrImpl, _ResultImpl2);\n\n function ErrImpl(reason) {\n var _this2;\n\n _this2 = _ResultImpl2.call(this) || this;\n _this2.reason = reason;\n _this2.isOk = false;\n _this2.isErr = true;\n return _this2;\n }\n\n var _proto4 = ErrImpl.prototype;\n\n _proto4.expect = function expect(message) {\n throw new Error(message || 'expected an Ok, got Err');\n };\n\n _proto4.andThen = function andThen(_callback) {\n return this.cast();\n };\n\n _proto4.mapOk = function mapOk(_callback) {\n return this.cast();\n };\n\n _proto4.ifOk = function ifOk(_callback) {\n return this;\n };\n\n _proto4.mapErr = function mapErr(callback) {\n return Err(callback(this.reason));\n };\n\n _proto4.ifErr = function ifErr(callback) {\n callback(this.reason);\n return this;\n };\n\n _proto4.cast = function cast() {\n return this;\n };\n\n return ErrImpl;\n }(ResultImpl);\n\n function Ok(value) {\n return new OkImpl(value);\n }\n\n function Err(reason) {\n return new ErrImpl(reason);\n }\n\n var ResultArray = /*#__PURE__*/function () {\n function ResultArray(items) {\n if (items === void 0) {\n items = [];\n }\n\n this.items = items;\n }\n\n var _proto5 = ResultArray.prototype;\n\n _proto5.add = function add(item) {\n this.items.push(item);\n };\n\n _proto5.toArray = function toArray() {\n var err = this.items.filter(function (item) {\n return item instanceof ErrImpl;\n })[0];\n\n if (err !== undefined) {\n return err.cast();\n } else {\n return Ok(this.items.map(function (item) {\n return item.value;\n }));\n }\n };\n\n _proto5.toOptionalList = function toOptionalList() {\n return this.toArray().mapOk(function (arr) {\n return OptionalList(arr);\n });\n };\n\n return ResultArray;\n }();\n\n var KeywordImpl = /*#__PURE__*/function () {\n function KeywordImpl(keyword, type, delegate) {\n this.keyword = keyword;\n this.delegate = delegate;\n var nodes = new Set();\n\n for (var _iterator2 = (0, _emberBabel.createForOfIteratorHelperLoose)(KEYWORD_NODES[type]), _step2; !(_step2 = _iterator2()).done;) {\n var _nodeType = _step2.value;\n nodes.add(_nodeType);\n }\n\n this.types = nodes;\n }\n\n var _proto6 = KeywordImpl.prototype;\n\n _proto6.match = function match(node$$1) {\n if (!this.types.has(node$$1.type)) {\n return false;\n }\n\n var path = getCalleeExpression(node$$1);\n\n if (path !== null && path.type === 'Path' && path.ref.type === 'Free') {\n if (path.tail.length > 0) {\n if (path.ref.resolution.serialize() === 'Loose') {\n // cannot be a keyword reference, keywords do not allow paths (must be\n // relying on implicit this fallback)\n return false;\n }\n }\n\n return path.ref.name === this.keyword;\n } else {\n return false;\n }\n };\n\n _proto6.translate = function translate(node$$1, state) {\n var _this3 = this;\n\n if (this.match(node$$1)) {\n var path = getCalleeExpression(node$$1);\n\n if (path !== null && path.type === 'Path' && path.tail.length > 0) {\n return Err((0, _syntax.generateSyntaxError)(\"The `\" + this.keyword + \"` keyword was used incorrectly. It was used as `\" + path.loc.asString() + \"`, but it cannot be used with additional path segments. \\n\\nError caused by\", node$$1.loc));\n }\n\n var param = this.delegate.assert(node$$1, state);\n return param.andThen(function (param) {\n return _this3.delegate.translate({\n node: node$$1,\n state: state\n }, param);\n });\n } else {\n return null;\n }\n };\n\n return KeywordImpl;\n }();\n\n var KEYWORD_NODES = {\n Call: ['Call'],\n Block: ['InvokeBlock'],\n Append: ['AppendContent'],\n Modifier: ['ElementModifier']\n };\n\n function keyword(keyword, type, delegate) {\n return new KeywordImpl(keyword, type, delegate);\n }\n\n function getCalleeExpression(node$$1) {\n switch (node$$1.type) {\n // This covers the inside of attributes and expressions, as well as the callee\n // of call nodes\n case 'Path':\n return node$$1;\n\n case 'AppendContent':\n return getCalleeExpression(node$$1.value);\n\n case 'Call':\n case 'InvokeBlock':\n case 'ElementModifier':\n return node$$1.callee;\n\n default:\n return null;\n }\n }\n\n var Keywords = /*#__PURE__*/function () {\n function Keywords(type) {\n this._keywords = [];\n this._type = type;\n }\n\n var _proto7 = Keywords.prototype;\n\n _proto7.kw = function kw(name, delegate) {\n this._keywords.push(keyword(name, this._type, delegate));\n\n return this;\n };\n\n _proto7.translate = function translate(node$$1, state) {\n for (var _iterator3 = (0, _emberBabel.createForOfIteratorHelperLoose)(this._keywords), _step3; !(_step3 = _iterator3()).done;) {\n var _keyword2 = _step3.value;\n\n var _result2 = _keyword2.translate(node$$1, state);\n\n if (_result2 !== null) {\n return _result2;\n }\n }\n\n var path = getCalleeExpression(node$$1);\n\n if (path && path.type === 'Path' && path.ref.type === 'Free' && (0, _syntax.isKeyword)(path.ref.name)) {\n var name = path.ref.name;\n var usedType = this._type;\n var validTypes = _syntax.KEYWORDS_TYPES[name];\n\n if (validTypes.indexOf(usedType) === -1) {\n return Err((0, _syntax.generateSyntaxError)(\"The `\" + name + \"` keyword was used incorrectly. It was used as \" + typesToReadableName[usedType] + \", but its valid usages are:\\n\\n\" + generateTypesMessage(name, validTypes) + \"\\n\\nError caused by\", node$$1.loc));\n }\n }\n\n return null;\n };\n\n return Keywords;\n }();\n\n var typesToReadableName = {\n Append: 'an append statement',\n Block: 'a block statement',\n Call: 'a call expression',\n Modifier: 'a modifier'\n };\n\n function generateTypesMessage(name, types) {\n return types.map(function (type) {\n switch (type) {\n case 'Append':\n return \"- As an append statement, as in: {{\" + name + \"}}\";\n\n case 'Block':\n return \"- As a block statement, as in: {{#\" + name + \"}}{{/\" + name + \"}}\";\n\n case 'Call':\n return \"- As an expression, as in: (\" + name + \")\";\n\n case 'Modifier':\n return \"- As a modifier, as in: <div {{\" + name + \"}}></div>\";\n\n default:\n return (0, _util.exhausted)(type);\n }\n }).join('\\n\\n');\n }\n /**\n * This function builds keyword definitions for a particular type of AST node (`KeywordType`).\n *\n * You can build keyword definitions for:\n *\n * - `Expr`: A `SubExpression` or `PathExpression`\n * - `Block`: A `BlockStatement`\n * - A `BlockStatement` is a keyword candidate if its head is a\n * `PathExpression`\n * - `Append`: An `AppendStatement`\n *\n * A node is a keyword candidate if:\n *\n * - A `PathExpression` is a keyword candidate if it has no tail, and its\n * head expression is a `LocalVarHead` or `FreeVarHead` whose name is\n * the keyword's name.\n * - A `SubExpression`, `AppendStatement`, or `BlockStatement` is a keyword\n * candidate if its head is a keyword candidate.\n *\n * The keyword infrastructure guarantees that:\n *\n * - If a node is not a keyword candidate, it is never passed to any keyword's\n * `assert` method.\n * - If a node is not the `KeywordType` for a particular keyword, it will not\n * be passed to the keyword's `assert` method.\n *\n * `Expr` keywords are used in expression positions and should return HIR\n * expressions. `Block` and `Append` keywords are used in statement\n * positions and should return HIR statements.\n *\n * A keyword definition has two parts:\n *\n * - `match`, which determines whether an AST node matches the keyword, and can\n * optionally return some information extracted from the AST node.\n * - `translate`, which takes a matching AST node as well as the extracted\n * information and returns an appropriate HIR instruction.\n *\n * # Example\n *\n * This keyword:\n *\n * - turns `(hello)` into `\"hello\"`\n * - as long as `hello` is not in scope\n * - makes it an error to pass any arguments (such as `(hello world)`)\n *\n * ```ts\n * keywords('SubExpr').kw('hello', {\n * assert(node: ExprKeywordNode): Result<void> | false {\n * // we don't want to transform `hello` as a `PathExpression`\n * if (node.type !== 'SubExpression') {\n * return false;\n * }\n *\n * // node.head would be `LocalVarHead` if `hello` was in scope\n * if (node.head.type !== 'FreeVarHead') {\n * return false;\n * }\n *\n * if (node.params.length || node.hash) {\n * return Err(generateSyntaxError(`(hello) does not take any arguments`), node.loc);\n * } else {\n * return Ok();\n * }\n * },\n *\n * translate(node: ASTv2.SubExpression): hir.Expression {\n * return ASTv2.builders.literal(\"hello\", node.loc)\n * }\n * })\n * ```\n *\n * The keyword infrastructure checks to make sure that the node is the right\n * type before calling `assert`, so you only need to consider `SubExpression`\n * and `PathExpression` here. It also checks to make sure that the node passed\n * to `assert` has the keyword name in the right place.\n *\n * Note the important difference between returning `false` from `assert`,\n * which just means that the node didn't match, and returning `Err`, which\n * means that the node matched, but there was a keyword-specific syntax\n * error.\n */\n\n\n function keywords(type) {\n return new Keywords(type);\n }\n\n function hasPath(node$$1) {\n return node$$1.callee.type === 'Path';\n }\n\n function isHelperInvocation(node$$1) {\n if (!hasPath(node$$1)) {\n return false;\n }\n\n return !node$$1.args.isEmpty();\n }\n\n function isSimplePath(path) {\n if (path.type === 'Path') {\n var head = path.ref,\n parts = path.tail;\n return head.type === 'Free' && head.resolution !== _syntax.ASTv2.STRICT_RESOLUTION && parts.length === 0;\n } else {\n return false;\n }\n }\n\n function isStrictHelper(expr) {\n if (expr.callee.type !== 'Path') {\n return true;\n }\n\n if (expr.callee.ref.type !== 'Free') {\n return true;\n }\n\n return expr.callee.ref.resolution === _syntax.ASTv2.STRICT_RESOLUTION;\n }\n\n function assertIsValidModifier(helper) {\n if (isStrictHelper(helper) || isSimplePath(helper.callee)) {\n return;\n }\n\n throw (0, _syntax.generateSyntaxError)(\"`\" + printPath(helper.callee) + \"` is not a valid name for a modifier\", helper.loc);\n }\n\n function printPath(path) {\n switch (path.type) {\n case 'Literal':\n return JSON.stringify(path.value);\n\n case 'Path':\n {\n var printedPath = [printPathHead(path.ref)];\n printedPath.push.apply(printedPath, path.tail.map(function (t) {\n return t.chars;\n }));\n return printedPath.join('.');\n }\n\n case 'Call':\n return \"(\" + printPath(path.callee) + \" ...)\";\n\n case 'DeprecatedCall':\n return \"\" + path.callee.name;\n\n case 'Interpolate':\n throw (0, _util.unreachable)('a concat statement cannot appear as the head of an expression');\n }\n }\n\n function printPathHead(head) {\n switch (head.type) {\n case 'Arg':\n return head.name.chars;\n\n case 'Free':\n case 'Local':\n return head.name;\n\n case 'This':\n return 'this';\n }\n }\n\n var NormalizeExpressions = /*#__PURE__*/function () {\n function NormalizeExpressions() {}\n\n var _proto8 = NormalizeExpressions.prototype;\n\n _proto8.visit = function visit(node$$1, state) {\n switch (node$$1.type) {\n case 'Literal':\n return Ok(this.Literal(node$$1));\n\n case 'Interpolate':\n return this.Interpolate(node$$1, state);\n\n case 'Path':\n return this.PathExpression(node$$1);\n\n case 'Call':\n var translated = CALL_KEYWORDS.translate(node$$1, state);\n\n if (translated !== null) {\n return translated;\n }\n\n return this.CallExpression(node$$1, state);\n\n case 'DeprecatedCall':\n return this.DeprecaedCallExpression(node$$1, state);\n }\n };\n\n _proto8.visitList = function visitList(nodes, state) {\n return new ResultArray(nodes.map(function (e) {\n return VISIT_EXPRS.visit(e, state);\n })).toOptionalList();\n }\n /**\n * Normalize paths into `hir.Path` or a `hir.Expr` that corresponds to the ref.\n *\n * TODO since keywords don't support tails anyway, distinguish PathExpression from\n * VariableReference in ASTv2.\n */\n ;\n\n _proto8.PathExpression = function PathExpression(path) {\n var ref = this.VariableReference(path.ref);\n var tail = path.tail;\n\n if ((0, _util.isPresent)(tail)) {\n var tailLoc = tail[0].loc.extend(tail[tail.length - 1].loc);\n return Ok(new _PathExpression({\n loc: path.loc,\n head: ref,\n tail: new Tail({\n loc: tailLoc,\n members: tail\n })\n }));\n } else {\n return Ok(ref);\n }\n };\n\n _proto8.VariableReference = function VariableReference(ref) {\n return ref;\n };\n\n _proto8.Literal = function Literal(literal) {\n return literal;\n };\n\n _proto8.Interpolate = function Interpolate(expr, state) {\n var parts = expr.parts.map(convertPathToCallIfKeyword);\n return VISIT_EXPRS.visitList(parts, state).mapOk(function (parts) {\n return new InterpolateExpression({\n loc: expr.loc,\n parts: parts\n });\n });\n };\n\n _proto8.CallExpression = function CallExpression(expr, state) {\n if (!hasPath(expr)) {\n throw new Error(\"unimplemented subexpression at the head of a subexpression\");\n } else {\n return Result.all(VISIT_EXPRS.visit(expr.callee, state), VISIT_EXPRS.Args(expr.args, state)).mapOk(function (_ref3) {\n var callee = _ref3[0],\n args = _ref3[1];\n return new _CallExpression({\n loc: expr.loc,\n callee: callee,\n args: args\n });\n });\n }\n };\n\n _proto8.DeprecaedCallExpression = function DeprecaedCallExpression(_ref4, _state) {\n var arg = _ref4.arg,\n callee = _ref4.callee,\n loc = _ref4.loc;\n return Ok(new DeprecatedCallExpression({\n loc: loc,\n arg: arg,\n callee: callee\n }));\n };\n\n _proto8.Args = function Args(_ref5, state) {\n var positional = _ref5.positional,\n named = _ref5.named,\n loc = _ref5.loc;\n return Result.all(this.Positional(positional, state), this.NamedArguments(named, state)).mapOk(function (_ref6) {\n var positional = _ref6[0],\n named = _ref6[1];\n return new _Args({\n loc: loc,\n positional: positional,\n named: named\n });\n });\n };\n\n _proto8.Positional = function Positional(positional, state) {\n return VISIT_EXPRS.visitList(positional.exprs, state).mapOk(function (list) {\n return new _Positional({\n loc: positional.loc,\n list: list\n });\n });\n };\n\n _proto8.NamedArguments = function NamedArguments(named, state) {\n var pairs = named.entries.map(function (arg) {\n var value = convertPathToCallIfKeyword(arg.value);\n return VISIT_EXPRS.visit(value, state).mapOk(function (value) {\n return new NamedArgument({\n loc: arg.loc,\n key: arg.name,\n value: value\n });\n });\n });\n return new ResultArray(pairs).toOptionalList().mapOk(function (pairs) {\n return new _NamedArguments({\n loc: named.loc,\n entries: pairs\n });\n });\n };\n\n return NormalizeExpressions;\n }();\n\n function convertPathToCallIfKeyword(path) {\n if (path.type === 'Path' && path.ref.type === 'Free' && path.ref.name in _syntax.KEYWORDS_TYPES) {\n return new _syntax.ASTv2.CallExpression({\n callee: path,\n args: _syntax.ASTv2.Args.empty(path.loc),\n loc: path.loc\n });\n }\n\n return path;\n }\n\n var VISIT_EXPRS = new NormalizeExpressions();\n var CurriedTypeToReadableType = (_CurriedTypeToReadabl = {}, _CurriedTypeToReadabl[0\n /* Component */\n ] = 'component', _CurriedTypeToReadabl[1\n /* Helper */\n ] = 'helper', _CurriedTypeToReadabl[2\n /* Modifier */\n ] = 'modifier', _CurriedTypeToReadabl);\n\n function assertCurryKeyword(curriedType) {\n return function (node$$1, state) {\n var readableType = CurriedTypeToReadableType[curriedType];\n var stringsAllowed = curriedType === 0\n /* Component */\n ;\n var args = node$$1.args;\n var definition = args.nth(0);\n\n if (definition === null) {\n return Err((0, _syntax.generateSyntaxError)(\"(\" + readableType + \") requires a \" + readableType + \" definition or identifier as its first positional parameter, did not receive any parameters.\", args.loc));\n }\n\n if (definition.type === 'Literal') {\n if (stringsAllowed && state.isStrict) {\n return Err((0, _syntax.generateSyntaxError)(\"(\" + readableType + \") cannot resolve string values in strict mode templates\", node$$1.loc));\n } else if (!stringsAllowed) {\n return Err((0, _syntax.generateSyntaxError)(\"(\" + readableType + \") cannot resolve string values, you must pass a \" + readableType + \" definition directly\", node$$1.loc));\n }\n }\n\n args = new _syntax.ASTv2.Args({\n positional: new _syntax.ASTv2.PositionalArguments({\n exprs: args.positional.exprs.slice(1),\n loc: args.positional.loc\n }),\n named: args.named,\n loc: args.loc\n });\n return Ok({\n definition: definition,\n args: args\n });\n };\n }\n\n function translateCurryKeyword(curriedType) {\n return function (_ref7, _ref8) {\n var node$$1 = _ref7.node,\n state = _ref7.state;\n var definition = _ref8.definition,\n args = _ref8.args;\n var definitionResult = VISIT_EXPRS.visit(definition, state);\n var argsResult = VISIT_EXPRS.Args(args, state);\n return Result.all(definitionResult, argsResult).mapOk(function (_ref9) {\n var definition = _ref9[0],\n args = _ref9[1];\n return new Curry({\n loc: node$$1.loc,\n curriedType: curriedType,\n definition: definition,\n args: args\n });\n });\n };\n }\n\n function curryKeyword(curriedType) {\n return {\n assert: assertCurryKeyword(curriedType),\n translate: translateCurryKeyword(curriedType)\n };\n }\n\n function assertGetDynamicVarKeyword(node$$1) {\n var call = node$$1.type === 'AppendContent' ? node$$1.value : node$$1;\n var named = call.type === 'Call' ? call.args.named : null;\n var positionals = call.type === 'Call' ? call.args.positional : null;\n\n if (named && !named.isEmpty()) {\n return Err((0, _syntax.generateSyntaxError)(\"(-get-dynamic-vars) does not take any named arguments\", node$$1.loc));\n }\n\n var varName = positionals === null || positionals === void 0 ? void 0 : positionals.nth(0);\n\n if (!varName) {\n return Err((0, _syntax.generateSyntaxError)(\"(-get-dynamic-vars) requires a var name to get\", node$$1.loc));\n }\n\n if (positionals && positionals.size > 1) {\n return Err((0, _syntax.generateSyntaxError)(\"(-get-dynamic-vars) only receives one positional arg\", node$$1.loc));\n }\n\n return Ok(varName);\n }\n\n function translateGetDynamicVarKeyword(_ref10, name) {\n var node$$1 = _ref10.node,\n state = _ref10.state;\n return VISIT_EXPRS.visit(name, state).mapOk(function (name) {\n return new GetDynamicVar({\n name: name,\n loc: node$$1.loc\n });\n });\n }\n\n var getDynamicVarKeyword = {\n assert: assertGetDynamicVarKeyword,\n translate: translateGetDynamicVarKeyword\n };\n\n function assertHasBlockKeyword(type) {\n return function (node$$1) {\n var call = node$$1.type === 'AppendContent' ? node$$1.value : node$$1;\n var named = call.type === 'Call' ? call.args.named : null;\n var positionals = call.type === 'Call' ? call.args.positional : null;\n\n if (named && !named.isEmpty()) {\n return Err((0, _syntax.generateSyntaxError)(\"(\" + type + \") does not take any named arguments\", call.loc));\n }\n\n if (!positionals || positionals.isEmpty()) {\n return Ok(_syntax.SourceSlice.synthetic('default'));\n } else if (positionals.exprs.length === 1) {\n var positional = positionals.exprs[0];\n\n if (_syntax.ASTv2.isLiteral(positional, 'string')) {\n return Ok(positional.toSlice());\n } else {\n return Err((0, _syntax.generateSyntaxError)(\"(\" + type + \") can only receive a string literal as its first argument\", call.loc));\n }\n } else {\n return Err((0, _syntax.generateSyntaxError)(\"(\" + type + \") only takes a single positional argument\", call.loc));\n }\n };\n }\n\n function translateHasBlockKeyword(type) {\n return function (_ref11, target) {\n var node$$1 = _ref11.node,\n scope = _ref11.state.scope;\n var block = type === 'has-block' ? new HasBlock({\n loc: node$$1.loc,\n target: target,\n symbol: scope.allocateBlock(target.chars)\n }) : new HasBlockParams({\n loc: node$$1.loc,\n target: target,\n symbol: scope.allocateBlock(target.chars)\n });\n return Ok(block);\n };\n }\n\n function hasBlockKeyword(type) {\n return {\n assert: assertHasBlockKeyword(type),\n translate: translateHasBlockKeyword(type)\n };\n }\n\n function assertIfUnlessInlineKeyword(type) {\n return function (originalNode) {\n var _a;\n\n var inverted = type === 'unless';\n var node$$1 = originalNode.type === 'AppendContent' ? originalNode.value : originalNode;\n var named = node$$1.type === 'Call' ? node$$1.args.named : null;\n var positional = node$$1.type === 'Call' ? node$$1.args.positional : null;\n\n if (named && !named.isEmpty()) {\n return Err((0, _syntax.generateSyntaxError)(\"(\" + type + \") cannot receive named parameters, received \" + named.entries.map(function (e) {\n return e.name.chars;\n }).join(', '), originalNode.loc));\n }\n\n var condition = positional === null || positional === void 0 ? void 0 : positional.nth(0);\n\n if (!positional || !condition) {\n return Err((0, _syntax.generateSyntaxError)(\"When used inline, (\" + type + \") requires at least two parameters 1. the condition that determines the state of the (\" + type + \"), and 2. the value to return if the condition is \" + (inverted ? 'false' : 'true') + \". Did not receive any parameters\", originalNode.loc));\n }\n\n var truthy = positional.nth(1);\n var falsy = positional.nth(2);\n\n if (truthy === null) {\n return Err((0, _syntax.generateSyntaxError)(\"When used inline, (\" + type + \") requires at least two parameters 1. the condition that determines the state of the (\" + type + \"), and 2. the value to return if the condition is \" + (inverted ? 'false' : 'true') + \". Received only one parameter, the condition\", originalNode.loc));\n }\n\n if (positional.size > 3) {\n return Err((0, _syntax.generateSyntaxError)(\"When used inline, (\" + type + \") can receive a maximum of three positional parameters 1. the condition that determines the state of the (\" + type + \"), 2. the value to return if the condition is \" + (inverted ? 'false' : 'true') + \", and 3. the value to return if the condition is \" + (inverted ? 'true' : 'false') + \". Received \" + ((_a = positional === null || positional === void 0 ? void 0 : positional.size) !== null && _a !== void 0 ? _a : 0) + \" parameters\", originalNode.loc));\n }\n\n return Ok({\n condition: condition,\n truthy: truthy,\n falsy: falsy\n });\n };\n }\n\n function translateIfUnlessInlineKeyword(type) {\n var inverted = type === 'unless';\n return function (_ref12, _ref13) {\n var node$$1 = _ref12.node,\n state = _ref12.state;\n var condition = _ref13.condition,\n truthy = _ref13.truthy,\n falsy = _ref13.falsy;\n var conditionResult = VISIT_EXPRS.visit(condition, state);\n var truthyResult = VISIT_EXPRS.visit(truthy, state);\n var falsyResult = falsy ? VISIT_EXPRS.visit(falsy, state) : Ok(null);\n return Result.all(conditionResult, truthyResult, falsyResult).mapOk(function (_ref14) {\n var condition = _ref14[0],\n truthy = _ref14[1],\n falsy = _ref14[2];\n\n if (inverted) {\n condition = new Not({\n value: condition,\n loc: node$$1.loc\n });\n }\n\n return new IfInline({\n loc: node$$1.loc,\n condition: condition,\n truthy: truthy,\n falsy: falsy\n });\n });\n };\n }\n\n function ifUnlessInlineKeyword(type) {\n return {\n assert: assertIfUnlessInlineKeyword(type),\n translate: translateIfUnlessInlineKeyword(type)\n };\n }\n\n function assertLogKeyword(node$$1) {\n var _node$$1$args = node$$1.args,\n named = _node$$1$args.named,\n positional = _node$$1$args.positional;\n\n if (named && !named.isEmpty()) {\n return Err((0, _syntax.generateSyntaxError)(\"(log) does not take any named arguments\", node$$1.loc));\n }\n\n return Ok(positional);\n }\n\n function translateLogKeyword(_ref15, positional) {\n var node$$1 = _ref15.node,\n state = _ref15.state;\n return VISIT_EXPRS.Positional(positional, state).mapOk(function (positional) {\n return new Log({\n positional: positional,\n loc: node$$1.loc\n });\n });\n }\n\n var logKeyword = {\n assert: assertLogKeyword,\n translate: translateLogKeyword\n };\n var CALL_KEYWORDS = keywords('Call').kw('has-block', hasBlockKeyword('has-block')).kw('has-block-params', hasBlockKeyword('has-block-params')).kw('-get-dynamic-var', getDynamicVarKeyword).kw('log', logKeyword).kw('if', ifUnlessInlineKeyword('if')).kw('unless', ifUnlessInlineKeyword('unless')).kw('component', curryKeyword(0\n /* Component */\n )).kw('helper', curryKeyword(1\n /* Helper */\n )).kw('modifier', curryKeyword(2\n /* Modifier */\n ));\n\n function toAppend(_ref16) {\n var assert = _ref16.assert,\n _translate = _ref16.translate;\n return {\n assert: assert,\n translate: function translate(_ref17, value) {\n var node$$1 = _ref17.node,\n state = _ref17.state;\n\n var result = _translate({\n node: node$$1,\n state: state\n }, value);\n\n return result.mapOk(function (text) {\n return new AppendTextNode({\n text: text,\n loc: node$$1.loc\n });\n });\n }\n };\n }\n\n var APPEND_KEYWORDS = keywords('Append').kw('has-block', toAppend(hasBlockKeyword('has-block'))).kw('has-block-params', toAppend(hasBlockKeyword('has-block-params'))).kw('-get-dynamic-var', toAppend(getDynamicVarKeyword)).kw('log', toAppend(logKeyword)).kw('if', toAppend(ifUnlessInlineKeyword('if'))).kw('unless', toAppend(ifUnlessInlineKeyword('unless'))).kw('yield', {\n assert: function assert(node$$1) {\n var args = node$$1.args;\n\n if (args.named.isEmpty()) {\n return Ok({\n target: _syntax.SourceSpan.synthetic('default').toSlice(),\n positional: args.positional\n });\n } else {\n var target = args.named.get('to');\n\n if (args.named.size > 1 || target === null) {\n return Err((0, _syntax.generateSyntaxError)(\"yield only takes a single named argument: 'to'\", args.named.loc));\n }\n\n if (_syntax.ASTv2.isLiteral(target, 'string')) {\n return Ok({\n target: target.toSlice(),\n positional: args.positional\n });\n } else {\n return Err((0, _syntax.generateSyntaxError)(\"you can only yield to a literal string value\", target.loc));\n }\n }\n },\n translate: function translate(_ref18, _ref19) {\n var node$$1 = _ref18.node,\n state = _ref18.state;\n var target = _ref19.target,\n positional = _ref19.positional;\n return VISIT_EXPRS.Positional(positional, state).mapOk(function (positional) {\n return new Yield({\n loc: node$$1.loc,\n target: target,\n to: state.scope.allocateBlock(target.chars),\n positional: positional\n });\n });\n }\n }).kw('partial', {\n assert: function assert(node$$1, state) {\n if (state.isStrict) {\n return Err((0, _syntax.generateSyntaxError)('{{partial}} is not allowed in strict mode templates', node$$1.loc));\n }\n\n var _node$$1$args2 = node$$1.args,\n positional = _node$$1$args2.positional,\n named = _node$$1$args2.named;\n var trusting = node$$1.trusting;\n\n if (positional.isEmpty()) {\n return Err((0, _syntax.generateSyntaxError)(\"Partial found with no arguments. You must specify a template name\", node$$1.loc));\n } else if (positional.size !== 1) {\n return Err((0, _syntax.generateSyntaxError)(\"Partial found with \" + positional.exprs.length + \" arguments. You must specify a template name\", node$$1.loc));\n }\n\n if (named.isEmpty()) {\n if (trusting) {\n return Err((0, _syntax.generateSyntaxError)(\"{{{partial ...}}} is not supported, please use {{partial ...}} instead\", node$$1.loc));\n }\n\n return Ok(positional.nth(0));\n } else {\n return Err((0, _syntax.generateSyntaxError)(\"Partial does not take any named argument\", node$$1.loc));\n }\n },\n translate: function translate(_ref20, expr) {\n var node$$1 = _ref20.node,\n state = _ref20.state;\n state.scope.setHasEval();\n var visited = expr === undefined ? Ok(new _syntax.ASTv2.LiteralExpression({\n loc: _syntax.SourceSpan.synthetic('undefined'),\n value: undefined\n })) : VISIT_EXPRS.visit(expr, state);\n return visited.mapOk(function (target) {\n return new Partial({\n loc: node$$1.loc,\n scope: state.scope,\n target: target\n });\n });\n }\n }).kw('debugger', {\n assert: function assert(node$$1) {\n var args = node$$1.args;\n var positional = args.positional;\n\n if (args.isEmpty()) {\n return Ok(undefined);\n } else {\n if (positional.isEmpty()) {\n return Err((0, _syntax.generateSyntaxError)(\"debugger does not take any named arguments\", node$$1.loc));\n } else {\n return Err((0, _syntax.generateSyntaxError)(\"debugger does not take any positional arguments\", node$$1.loc));\n }\n }\n },\n translate: function translate(_ref21) {\n var node$$1 = _ref21.node,\n scope = _ref21.state.scope;\n scope.setHasEval();\n return Ok(new Debugger({\n loc: node$$1.loc,\n scope: scope\n }));\n }\n }).kw('component', {\n assert: assertCurryKeyword(0\n /* Component */\n ),\n translate: function translate(_ref22, _ref23) {\n var node$$1 = _ref22.node,\n state = _ref22.state;\n var definition = _ref23.definition,\n args = _ref23.args;\n var definitionResult = VISIT_EXPRS.visit(definition, state);\n var argsResult = VISIT_EXPRS.Args(args, state);\n return Result.all(definitionResult, argsResult).mapOk(function (_ref24) {\n var definition = _ref24[0],\n args = _ref24[1];\n return new InvokeComponent({\n loc: node$$1.loc,\n definition: definition,\n args: args,\n blocks: null\n });\n });\n }\n }).kw('helper', {\n assert: assertCurryKeyword(1\n /* Helper */\n ),\n translate: function translate(_ref25, _ref26) {\n var node$$1 = _ref25.node,\n state = _ref25.state;\n var definition = _ref26.definition,\n args = _ref26.args;\n var definitionResult = VISIT_EXPRS.visit(definition, state);\n var argsResult = VISIT_EXPRS.Args(args, state);\n return Result.all(definitionResult, argsResult).mapOk(function (_ref27) {\n var definition = _ref27[0],\n args = _ref27[1];\n var text = new _CallExpression({\n callee: definition,\n args: args,\n loc: node$$1.loc\n });\n return new AppendTextNode({\n loc: node$$1.loc,\n text: text\n });\n });\n }\n });\n var BLOCK_KEYWORDS = keywords('Block').kw('in-element', {\n assert: function assert(node$$1) {\n var args = node$$1.args;\n var guid = args.get('guid');\n\n if (guid) {\n return Err((0, _syntax.generateSyntaxError)(\"Cannot pass `guid` to `{{#in-element}}`\", guid.loc));\n }\n\n var insertBefore = args.get('insertBefore');\n var destination = args.nth(0);\n\n if (destination === null) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#in-element}} requires a target element as its first positional parameter\", args.loc));\n } // TODO Better syntax checks\n\n\n return Ok({\n insertBefore: insertBefore,\n destination: destination\n });\n },\n translate: function translate(_ref28, _ref29) {\n var node$$1 = _ref28.node,\n state = _ref28.state;\n var insertBefore = _ref29.insertBefore,\n destination = _ref29.destination;\n var named = node$$1.blocks.get('default');\n var body = VISIT_STMTS.NamedBlock(named, state);\n var destinationResult = VISIT_EXPRS.visit(destination, state);\n return Result.all(body, destinationResult).andThen(function (_ref30) {\n var body = _ref30[0],\n destination = _ref30[1];\n\n if (insertBefore) {\n return VISIT_EXPRS.visit(insertBefore, state).mapOk(function (insertBefore) {\n return {\n body: body,\n destination: destination,\n insertBefore: insertBefore\n };\n });\n } else {\n return Ok({\n body: body,\n destination: destination,\n insertBefore: new Missing({\n loc: node$$1.callee.loc.collapse('end')\n })\n });\n }\n }).mapOk(function (_ref31) {\n var body = _ref31.body,\n destination = _ref31.destination,\n insertBefore = _ref31.insertBefore;\n return new InElement({\n loc: node$$1.loc,\n block: body,\n insertBefore: insertBefore,\n guid: state.generateUniqueCursor(),\n destination: destination\n });\n });\n }\n }).kw('if', {\n assert: function assert(node$$1) {\n var args = node$$1.args;\n\n if (!args.named.isEmpty()) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#if}} cannot receive named parameters, received \" + args.named.entries.map(function (e) {\n return e.name.chars;\n }).join(', '), node$$1.loc));\n }\n\n if (args.positional.size > 1) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#if}} can only receive one positional parameter in block form, the conditional value. Received \" + args.positional.size + \" parameters\", node$$1.loc));\n }\n\n var condition = args.nth(0);\n\n if (condition === null) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#if}} requires a condition as its first positional parameter, did not receive any parameters\", node$$1.loc));\n }\n\n return Ok({\n condition: condition\n });\n },\n translate: function translate(_ref32, _ref33) {\n var node$$1 = _ref32.node,\n state = _ref32.state;\n var condition = _ref33.condition;\n var block = node$$1.blocks.get('default');\n var inverse = node$$1.blocks.get('else');\n var conditionResult = VISIT_EXPRS.visit(condition, state);\n var blockResult = VISIT_STMTS.NamedBlock(block, state);\n var inverseResult = inverse ? VISIT_STMTS.NamedBlock(inverse, state) : Ok(null);\n return Result.all(conditionResult, blockResult, inverseResult).mapOk(function (_ref34) {\n var condition = _ref34[0],\n block = _ref34[1],\n inverse = _ref34[2];\n return new If({\n loc: node$$1.loc,\n condition: condition,\n block: block,\n inverse: inverse\n });\n });\n }\n }).kw('unless', {\n assert: function assert(node$$1) {\n var args = node$$1.args;\n\n if (!args.named.isEmpty()) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#unless}} cannot receive named parameters, received \" + args.named.entries.map(function (e) {\n return e.name.chars;\n }).join(', '), node$$1.loc));\n }\n\n if (args.positional.size > 1) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#unless}} can only receive one positional parameter in block form, the conditional value. Received \" + args.positional.size + \" parameters\", node$$1.loc));\n }\n\n var condition = args.nth(0);\n\n if (condition === null) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#unless}} requires a condition as its first positional parameter, did not receive any parameters\", node$$1.loc));\n }\n\n return Ok({\n condition: condition\n });\n },\n translate: function translate(_ref35, _ref36) {\n var node$$1 = _ref35.node,\n state = _ref35.state;\n var condition = _ref36.condition;\n var block = node$$1.blocks.get('default');\n var inverse = node$$1.blocks.get('else');\n var conditionResult = VISIT_EXPRS.visit(condition, state);\n var blockResult = VISIT_STMTS.NamedBlock(block, state);\n var inverseResult = inverse ? VISIT_STMTS.NamedBlock(inverse, state) : Ok(null);\n return Result.all(conditionResult, blockResult, inverseResult).mapOk(function (_ref37) {\n var condition = _ref37[0],\n block = _ref37[1],\n inverse = _ref37[2];\n return new If({\n loc: node$$1.loc,\n condition: new Not({\n value: condition,\n loc: node$$1.loc\n }),\n block: block,\n inverse: inverse\n });\n });\n }\n }).kw('each', {\n assert: function assert(node$$1) {\n var args = node$$1.args;\n\n if (!args.named.entries.every(function (e) {\n return e.name.chars === 'key';\n })) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#each}} can only receive the 'key' named parameter, received \" + args.named.entries.filter(function (e) {\n return e.name.chars !== 'key';\n }).map(function (e) {\n return e.name.chars;\n }).join(', '), args.named.loc));\n }\n\n if (args.positional.size > 1) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#each}} can only receive one positional parameter, the collection being iterated. Received \" + args.positional.size + \" parameters\", args.positional.loc));\n }\n\n var value = args.nth(0);\n var key = args.get('key');\n\n if (value === null) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#each}} requires an iterable value to be passed as its first positional parameter, did not receive any parameters\", args.loc));\n }\n\n return Ok({\n value: value,\n key: key\n });\n },\n translate: function translate(_ref38, _ref39) {\n var node$$1 = _ref38.node,\n state = _ref38.state;\n var value = _ref39.value,\n key = _ref39.key;\n var block = node$$1.blocks.get('default');\n var inverse = node$$1.blocks.get('else');\n var valueResult = VISIT_EXPRS.visit(value, state);\n var keyResult = key ? VISIT_EXPRS.visit(key, state) : Ok(null);\n var blockResult = VISIT_STMTS.NamedBlock(block, state);\n var inverseResult = inverse ? VISIT_STMTS.NamedBlock(inverse, state) : Ok(null);\n return Result.all(valueResult, keyResult, blockResult, inverseResult).mapOk(function (_ref40) {\n var value = _ref40[0],\n key = _ref40[1],\n block = _ref40[2],\n inverse = _ref40[3];\n return new Each({\n loc: node$$1.loc,\n value: value,\n key: key,\n block: block,\n inverse: inverse\n });\n });\n }\n }).kw('with', {\n assert: function assert(node$$1) {\n var args = node$$1.args;\n\n if (!args.named.isEmpty()) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#with}} cannot receive named parameters, received \" + args.named.entries.map(function (e) {\n return e.name.chars;\n }).join(', '), args.named.loc));\n }\n\n if (args.positional.size > 1) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#with}} can only receive one positional parameter. Received \" + args.positional.size + \" parameters\", args.positional.loc));\n }\n\n var value = args.nth(0);\n\n if (value === null) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#with}} requires a value as its first positional parameter, did not receive any parameters\", args.loc));\n }\n\n return Ok({\n value: value\n });\n },\n translate: function translate(_ref41, _ref42) {\n var node$$1 = _ref41.node,\n state = _ref41.state;\n var value = _ref42.value;\n var block = node$$1.blocks.get('default');\n var inverse = node$$1.blocks.get('else');\n var valueResult = VISIT_EXPRS.visit(value, state);\n var blockResult = VISIT_STMTS.NamedBlock(block, state);\n var inverseResult = inverse ? VISIT_STMTS.NamedBlock(inverse, state) : Ok(null);\n return Result.all(valueResult, blockResult, inverseResult).mapOk(function (_ref43) {\n var value = _ref43[0],\n block = _ref43[1],\n inverse = _ref43[2];\n return new With({\n loc: node$$1.loc,\n value: value,\n block: block,\n inverse: inverse\n });\n });\n }\n }).kw('let', {\n assert: function assert(node$$1) {\n var args = node$$1.args;\n\n if (!args.named.isEmpty()) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#let}} cannot receive named parameters, received \" + args.named.entries.map(function (e) {\n return e.name.chars;\n }).join(', '), args.named.loc));\n }\n\n if (args.positional.size === 0) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#let}} requires at least one value as its first positional parameter, did not receive any parameters\", args.positional.loc));\n }\n\n if (node$$1.blocks.get('else')) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#let}} cannot receive an {{else}} block\", args.positional.loc));\n }\n\n return Ok({\n positional: args.positional\n });\n },\n translate: function translate(_ref44, _ref45) {\n var node$$1 = _ref44.node,\n state = _ref44.state;\n var positional = _ref45.positional;\n var block = node$$1.blocks.get('default');\n var positionalResult = VISIT_EXPRS.Positional(positional, state);\n var blockResult = VISIT_STMTS.NamedBlock(block, state);\n return Result.all(positionalResult, blockResult).mapOk(function (_ref46) {\n var positional = _ref46[0],\n block = _ref46[1];\n return new Let({\n loc: node$$1.loc,\n positional: positional,\n block: block\n });\n });\n }\n }).kw('-with-dynamic-vars', {\n assert: function assert(node$$1) {\n return Ok({\n named: node$$1.args.named\n });\n },\n translate: function translate(_ref47, _ref48) {\n var node$$1 = _ref47.node,\n state = _ref47.state;\n var named = _ref48.named;\n var block = node$$1.blocks.get('default');\n var namedResult = VISIT_EXPRS.NamedArguments(named, state);\n var blockResult = VISIT_STMTS.NamedBlock(block, state);\n return Result.all(namedResult, blockResult).mapOk(function (_ref49) {\n var named = _ref49[0],\n block = _ref49[1];\n return new WithDynamicVars({\n loc: node$$1.loc,\n named: named,\n block: block\n });\n });\n }\n }).kw('component', {\n assert: assertCurryKeyword(0\n /* Component */\n ),\n translate: function translate(_ref50, _ref51) {\n var node$$1 = _ref50.node,\n state = _ref50.state;\n var definition = _ref51.definition,\n args = _ref51.args;\n var definitionResult = VISIT_EXPRS.visit(definition, state);\n var argsResult = VISIT_EXPRS.Args(args, state);\n var blocksResult = VISIT_STMTS.NamedBlocks(node$$1.blocks, state);\n return Result.all(definitionResult, argsResult, blocksResult).mapOk(function (_ref52) {\n var definition = _ref52[0],\n args = _ref52[1],\n blocks = _ref52[2];\n return new InvokeComponent({\n loc: node$$1.loc,\n definition: definition,\n args: args,\n blocks: blocks\n });\n });\n }\n });\n var MODIFIER_KEYWORDS = keywords('Modifier'); // There is a small whitelist of namespaced attributes specially\n // enumerated in\n // https://www.w3.org/TR/html/syntax.html#attributes-0\n //\n // > When a foreign element has one of the namespaced attributes given by\n // > the local name and namespace of the first and second cells of a row\n // > from the following table, it must be written using the name given by\n // > the third cell from the same row.\n //\n // In all other cases, colons are interpreted as a regular character\n // with no special meaning:\n //\n // > No other namespaced attribute can be expressed in the HTML syntax.\n\n var XLINK = 'http://www.w3.org/1999/xlink';\n var XML = 'http://www.w3.org/XML/1998/namespace';\n var XMLNS = 'http://www.w3.org/2000/xmlns/';\n var WHITELIST = {\n 'xlink:actuate': XLINK,\n 'xlink:arcrole': XLINK,\n 'xlink:href': XLINK,\n 'xlink:role': XLINK,\n 'xlink:show': XLINK,\n 'xlink:title': XLINK,\n 'xlink:type': XLINK,\n 'xml:base': XML,\n 'xml:lang': XML,\n 'xml:space': XML,\n xmlns: XMLNS,\n 'xmlns:xlink': XMLNS\n };\n\n function getAttrNamespace(attrName) {\n return WHITELIST[attrName];\n }\n\n var DEFLATE_TAG_TABLE = {\n div: 0\n /* div */\n ,\n span: 1\n /* span */\n ,\n p: 2\n /* p */\n ,\n a: 3\n /* a */\n\n };\n var INFLATE_TAG_TABLE = ['div', 'span', 'p', 'a'];\n\n function deflateTagName(tagName) {\n var _a;\n\n return (_a = DEFLATE_TAG_TABLE[tagName]) !== null && _a !== void 0 ? _a : tagName;\n }\n\n function inflateTagName(tagName) {\n return typeof tagName === 'string' ? tagName : INFLATE_TAG_TABLE[tagName];\n }\n\n var DEFLATE_ATTR_TABLE = {\n class: 0\n /* class */\n ,\n id: 1\n /* id */\n ,\n value: 2\n /* value */\n ,\n name: 3\n /* name */\n ,\n type: 4\n /* type */\n ,\n style: 5\n /* style */\n ,\n href: 6\n /* href */\n\n };\n var INFLATE_ATTR_TABLE = ['class', 'id', 'value', 'name', 'type', 'style', 'href'];\n\n function deflateAttrName(attrName) {\n var _a;\n\n return (_a = DEFLATE_ATTR_TABLE[attrName]) !== null && _a !== void 0 ? _a : attrName;\n }\n\n function inflateAttrName(attrName) {\n return typeof attrName === 'string' ? attrName : INFLATE_ATTR_TABLE[attrName];\n }\n\n var ClassifiedElement = /*#__PURE__*/function () {\n function ClassifiedElement(element, delegate, state) {\n this.element = element;\n this.state = state;\n this.delegate = delegate;\n }\n\n var _proto9 = ClassifiedElement.prototype;\n\n _proto9.toStatement = function toStatement() {\n var _this4 = this;\n\n return this.prepare().andThen(function (prepared) {\n return _this4.delegate.toStatement(_this4, prepared);\n });\n };\n\n _proto9.attr = function attr(_attr) {\n var _this5 = this;\n\n var name = _attr.name;\n var rawValue = _attr.value;\n var namespace = getAttrNamespace(name.chars) || undefined;\n\n if (_syntax.ASTv2.isLiteral(rawValue, 'string')) {\n return Ok(new StaticAttr({\n loc: _attr.loc,\n name: name,\n value: rawValue.toSlice(),\n namespace: namespace,\n kind: {\n component: this.delegate.dynamicFeatures\n }\n }));\n }\n\n return VISIT_EXPRS.visit(convertPathToCallIfKeyword(rawValue), this.state).mapOk(function (value) {\n var isTrusting = _attr.trusting;\n return new DynamicAttr({\n loc: _attr.loc,\n name: name,\n value: value,\n namespace: namespace,\n kind: {\n trusting: isTrusting,\n component: _this5.delegate.dynamicFeatures\n }\n });\n });\n };\n\n _proto9.modifier = function modifier(_modifier) {\n if (isHelperInvocation(_modifier)) {\n assertIsValidModifier(_modifier);\n }\n\n var translated = MODIFIER_KEYWORDS.translate(_modifier, this.state);\n\n if (translated !== null) {\n return translated;\n }\n\n var head = VISIT_EXPRS.visit(_modifier.callee, this.state);\n var args = VISIT_EXPRS.Args(_modifier.args, this.state);\n return Result.all(head, args).mapOk(function (_ref53) {\n var head = _ref53[0],\n args = _ref53[1];\n return new Modifier({\n loc: _modifier.loc,\n callee: head,\n args: args\n });\n });\n };\n\n _proto9.attrs = function attrs() {\n var attrs = new ResultArray();\n var args = new ResultArray(); // Unlike most attributes, the `type` attribute can change how\n // subsequent attributes are interpreted by the browser. To address\n // this, in simple cases, we special case the `type` attribute to be set\n // last. For elements with splattributes, where attribute order affects\n // precedence, this re-ordering happens at runtime instead.\n // See https://github.com/glimmerjs/glimmer-vm/pull/726\n\n var typeAttr = null;\n var simple = this.element.attrs.filter(function (attr) {\n return attr.type === 'SplatAttr';\n }).length === 0;\n\n for (var _iterator4 = (0, _emberBabel.createForOfIteratorHelperLoose)(this.element.attrs), _step4; !(_step4 = _iterator4()).done;) {\n var _attr2 = _step4.value;\n\n if (_attr2.type === 'SplatAttr') {\n attrs.add(Ok(new SplatAttr({\n loc: _attr2.loc,\n symbol: this.state.scope.allocateBlock('attrs')\n })));\n } else if (_attr2.name.chars === 'type' && simple) {\n typeAttr = _attr2;\n } else {\n attrs.add(this.attr(_attr2));\n }\n }\n\n for (var _iterator5 = (0, _emberBabel.createForOfIteratorHelperLoose)(this.element.componentArgs), _step5; !(_step5 = _iterator5()).done;) {\n var _arg = _step5.value;\n args.add(this.delegate.arg(_arg, this));\n }\n\n if (typeAttr) {\n attrs.add(this.attr(typeAttr));\n }\n\n return Result.all(args.toArray(), attrs.toArray()).mapOk(function (_ref54) {\n var args = _ref54[0],\n attrs = _ref54[1];\n return {\n attrs: attrs,\n args: new _NamedArguments({\n loc: (0, _syntax.maybeLoc)(args, _syntax.SourceSpan.NON_EXISTENT),\n entries: OptionalList(args)\n })\n };\n });\n };\n\n _proto9.prepare = function prepare() {\n var _this6 = this;\n\n var attrs = this.attrs();\n var modifiers = new ResultArray(this.element.modifiers.map(function (m) {\n return _this6.modifier(m);\n })).toArray();\n return Result.all(attrs, modifiers).mapOk(function (_ref55) {\n var result = _ref55[0],\n modifiers = _ref55[1];\n var attrs = result.attrs,\n args = result.args;\n var elementParams = [].concat(attrs, modifiers);\n var params = new ElementParameters({\n loc: (0, _syntax.maybeLoc)(elementParams, _syntax.SourceSpan.NON_EXISTENT),\n body: OptionalList(elementParams)\n });\n return {\n args: args,\n params: params\n };\n });\n };\n\n return ClassifiedElement;\n }();\n\n function hasDynamicFeatures(_ref56) {\n var attrs = _ref56.attrs,\n modifiers = _ref56.modifiers;\n\n // ElementModifier needs the special ComponentOperations\n if (modifiers.length > 0) {\n return true;\n } // Splattributes need the special ComponentOperations to merge into\n\n\n return !!attrs.filter(function (attr) {\n return attr.type === 'SplatAttr';\n })[0];\n }\n\n var ClassifiedComponent = /*#__PURE__*/function () {\n function ClassifiedComponent(tag, element) {\n this.tag = tag;\n this.element = element;\n this.dynamicFeatures = true;\n }\n\n var _proto10 = ClassifiedComponent.prototype;\n\n _proto10.arg = function arg(attr, _ref57) {\n var state = _ref57.state;\n var name = attr.name;\n return VISIT_EXPRS.visit(convertPathToCallIfKeyword(attr.value), state).mapOk(function (value) {\n return new NamedArgument({\n loc: attr.loc,\n key: name,\n value: value\n });\n });\n };\n\n _proto10.toStatement = function toStatement(component, _ref58) {\n var _this7 = this;\n\n var args = _ref58.args,\n params = _ref58.params;\n var element = component.element,\n state = component.state;\n return this.blocks(state).mapOk(function (blocks) {\n return new Component({\n loc: element.loc,\n tag: _this7.tag,\n params: params,\n args: args,\n blocks: blocks\n });\n });\n };\n\n _proto10.blocks = function blocks(state) {\n return VISIT_STMTS.NamedBlocks(this.element.blocks, state);\n };\n\n return ClassifiedComponent;\n }();\n\n var ClassifiedSimpleElement = /*#__PURE__*/function () {\n function ClassifiedSimpleElement(tag, element, dynamicFeatures) {\n this.tag = tag;\n this.element = element;\n this.dynamicFeatures = dynamicFeatures;\n this.isComponent = false;\n }\n\n var _proto11 = ClassifiedSimpleElement.prototype;\n\n _proto11.arg = function arg(attr) {\n return Err((0, _syntax.generateSyntaxError)(attr.name.chars + \" is not a valid attribute name. @arguments are only allowed on components, but the tag for this element (`\" + this.tag.chars + \"`) is a regular, non-component HTML element.\", attr.loc));\n };\n\n _proto11.toStatement = function toStatement(classified, _ref59) {\n var _this8 = this;\n\n var params = _ref59.params;\n var state = classified.state,\n element = classified.element;\n var body = VISIT_STMTS.visitList(this.element.body, state);\n return body.mapOk(function (body) {\n return new SimpleElement({\n loc: element.loc,\n tag: _this8.tag,\n params: params,\n body: body.toArray(),\n dynamicFeatures: _this8.dynamicFeatures\n });\n });\n };\n\n return ClassifiedSimpleElement;\n }();\n\n var NormalizationStatements = /*#__PURE__*/function () {\n function NormalizationStatements() {}\n\n var _proto12 = NormalizationStatements.prototype;\n\n _proto12.visitList = function visitList(nodes, state) {\n return new ResultArray(nodes.map(function (e) {\n return VISIT_STMTS.visit(e, state);\n })).toOptionalList().mapOk(function (list) {\n return list.filter(function (s) {\n return s !== null;\n });\n });\n };\n\n _proto12.visit = function visit(node$$1, state) {\n switch (node$$1.type) {\n case 'GlimmerComment':\n return Ok(null);\n\n case 'AppendContent':\n return this.AppendContent(node$$1, state);\n\n case 'HtmlText':\n return Ok(this.TextNode(node$$1));\n\n case 'HtmlComment':\n return Ok(this.HtmlComment(node$$1));\n\n case 'InvokeBlock':\n return this.InvokeBlock(node$$1, state);\n\n case 'InvokeComponent':\n return this.Component(node$$1, state);\n\n case 'SimpleElement':\n return this.SimpleElement(node$$1, state);\n }\n };\n\n _proto12.InvokeBlock = function InvokeBlock(node$$1, state) {\n var _this9 = this;\n\n var translated = BLOCK_KEYWORDS.translate(node$$1, state);\n\n if (translated !== null) {\n return translated;\n }\n\n var head = VISIT_EXPRS.visit(node$$1.callee, state);\n var args = VISIT_EXPRS.Args(node$$1.args, state);\n return Result.all(head, args).andThen(function (_ref60) {\n var head = _ref60[0],\n args = _ref60[1];\n return _this9.NamedBlocks(node$$1.blocks, state).mapOk(function (blocks) {\n return new _InvokeBlock({\n loc: node$$1.loc,\n head: head,\n args: args,\n blocks: blocks\n });\n });\n });\n };\n\n _proto12.NamedBlocks = function NamedBlocks(blocks, state) {\n var _this10 = this;\n\n var list = new ResultArray(blocks.blocks.map(function (b) {\n return _this10.NamedBlock(b, state);\n }));\n return list.toArray().mapOk(function (list) {\n return new _NamedBlocks({\n loc: blocks.loc,\n blocks: OptionalList(list)\n });\n });\n };\n\n _proto12.NamedBlock = function NamedBlock(named, state) {\n var body = state.visitBlock(named.block);\n return body.mapOk(function (body) {\n return new _NamedBlock({\n loc: named.loc,\n name: named.name,\n body: body.toArray(),\n scope: named.block.scope\n });\n });\n };\n\n _proto12.SimpleElement = function SimpleElement(element, state) {\n return new ClassifiedElement(element, new ClassifiedSimpleElement(element.tag, element, hasDynamicFeatures(element)), state).toStatement();\n };\n\n _proto12.Component = function Component(component, state) {\n return VISIT_EXPRS.visit(component.callee, state).andThen(function (callee) {\n return new ClassifiedElement(component, new ClassifiedComponent(callee, component), state).toStatement();\n });\n };\n\n _proto12.AppendContent = function AppendContent(append, state) {\n var translated = APPEND_KEYWORDS.translate(append, state);\n\n if (translated !== null) {\n return translated;\n }\n\n var value = VISIT_EXPRS.visit(append.value, state);\n return value.mapOk(function (value) {\n if (append.trusting) {\n return new AppendTrustedHTML({\n loc: append.loc,\n html: value\n });\n } else {\n return new AppendTextNode({\n loc: append.loc,\n text: value\n });\n }\n });\n };\n\n _proto12.TextNode = function TextNode(text) {\n return new AppendTextNode({\n loc: text.loc,\n text: new _syntax.ASTv2.LiteralExpression({\n loc: text.loc,\n value: text.chars\n })\n });\n };\n\n _proto12.HtmlComment = function HtmlComment(comment) {\n return new AppendComment({\n loc: comment.loc,\n value: comment.text\n });\n };\n\n return NormalizationStatements;\n }();\n\n var VISIT_STMTS = new NormalizationStatements();\n /**\n * This is the mutable state for this compiler pass.\n */\n\n var NormalizationState = /*#__PURE__*/function () {\n function NormalizationState(block, isStrict) {\n this.isStrict = isStrict;\n this._cursorCount = 0;\n this._currentScope = block;\n }\n\n var _proto13 = NormalizationState.prototype;\n\n _proto13.generateUniqueCursor = function generateUniqueCursor() {\n return \"%cursor:\" + this._cursorCount++ + \"%\";\n };\n\n _proto13.visitBlock = function visitBlock(block) {\n var oldBlock = this._currentScope;\n this._currentScope = block.scope;\n\n try {\n return VISIT_STMTS.visitList(block.body, this);\n } finally {\n this._currentScope = oldBlock;\n }\n };\n\n (0, _emberBabel.createClass)(NormalizationState, [{\n key: \"scope\",\n get: function get() {\n return this._currentScope;\n }\n }]);\n return NormalizationState;\n }();\n /**\n * Normalize the AST from @glimmer/syntax into the HIR. The HIR has special\n * instructions for keywords like `{{yield}}`, `(has-block)` and\n * `{{#in-element}}`.\n *\n * Most importantly, it also classifies HTML element syntax into:\n *\n * 1. simple HTML element (with optional splattributes)\n * 2. component invocation\n *\n * Because the @glimmer/syntax AST gives us a string for an element's tag,\n * this pass also normalizes that string into an expression.\n *\n * ```\n * // normalized into a path expression whose head is `this` and tail is\n * // `[\"x\"]`\n * <this.x />\n *\n * {{#let expr as |t|}}\n * // `\"t\"` is normalized into a variable lookup.\n * <t />\n *\n * // normalized into a path expression whose head is the variable lookup\n * // `t` and tail is `[\"input\"]`.\n * <t.input />\n * {{/let}}\n *\n * // normalized into a free variable lookup for `SomeComponent` (with the\n * // context `ComponentHead`).\n * <SomeComponent />\n *\n * // normalized into a path expression whose head is the free variable\n * // `notInScope` (with the context `Expression`), and whose tail is\n * // `[\"SomeComponent\"]`. In resolver mode, this path will be rejected later,\n * // since it cannot serve as an input to the resolver.\n * <notInScope.SomeComponent />\n * ```\n */\n\n\n function normalize$1(source, root, isStrict) {\n // create a new context for the normalization pass\n var state = new NormalizationState(root.table, isStrict);\n var body = VISIT_STMTS.visitList(root.body, state);\n return body.mapOk(function (body) {\n return new Template({\n loc: root.loc,\n scope: root.table,\n body: body.toArray()\n });\n });\n }\n\n var WireFormatDebugger = /*#__PURE__*/function () {\n function WireFormatDebugger(_ref61) {\n var _statements = _ref61[0],\n symbols = _ref61[1],\n _hasEval = _ref61[2],\n upvars = _ref61[3];\n this.upvars = upvars;\n this.symbols = symbols;\n }\n\n var _proto14 = WireFormatDebugger.prototype;\n\n _proto14.format = function format(program) {\n var out = [];\n\n for (var _iterator6 = (0, _emberBabel.createForOfIteratorHelperLoose)(program[0]), _step6; !(_step6 = _iterator6()).done;) {\n var _statement = _step6.value;\n out.push(this.formatOpcode(_statement));\n }\n\n return out;\n };\n\n _proto14.formatOpcode = function formatOpcode(opcode) {\n if (Array.isArray(opcode)) {\n switch (opcode[0]) {\n case 1\n /* Append */\n :\n return ['append', this.formatOpcode(opcode[1])];\n\n case 2\n /* TrustingAppend */\n :\n return ['trusting-append', this.formatOpcode(opcode[1])];\n\n case 6\n /* Block */\n :\n return ['block', this.formatOpcode(opcode[1]), this.formatParams(opcode[2]), this.formatHash(opcode[3]), this.formatBlocks(opcode[4])];\n\n case 40\n /* InElement */\n :\n return ['in-element', opcode[1], this.formatOpcode(opcode[2]), opcode[3] ? this.formatOpcode(opcode[3]) : undefined];\n\n case 10\n /* OpenElement */\n :\n return ['open-element', inflateTagName(opcode[1])];\n\n case 11\n /* OpenElementWithSplat */\n :\n return ['open-element-with-splat', inflateTagName(opcode[1])];\n\n case 13\n /* CloseElement */\n :\n return ['close-element'];\n\n case 12\n /* FlushElement */\n :\n return ['flush-element'];\n\n case 14\n /* StaticAttr */\n :\n return ['static-attr', inflateAttrName(opcode[1]), opcode[2], opcode[3]];\n\n case 24\n /* StaticComponentAttr */\n :\n return ['static-component-attr', inflateAttrName(opcode[1]), opcode[2], opcode[3]];\n\n case 15\n /* DynamicAttr */\n :\n return ['dynamic-attr', inflateAttrName(opcode[1]), this.formatOpcode(opcode[2]), opcode[3]];\n\n case 16\n /* ComponentAttr */\n :\n return ['component-attr', inflateAttrName(opcode[1]), this.formatOpcode(opcode[2]), opcode[3]];\n\n case 17\n /* AttrSplat */\n :\n return ['attr-splat'];\n\n case 18\n /* Yield */\n :\n return ['yield', opcode[1], this.formatParams(opcode[2])];\n\n case 19\n /* Partial */\n :\n return ['partial', this.formatOpcode(opcode[1]), opcode[2]];\n\n case 20\n /* DynamicArg */\n :\n return ['dynamic-arg', opcode[1], this.formatOpcode(opcode[2])];\n\n case 21\n /* StaticArg */\n :\n return ['static-arg', opcode[1], this.formatOpcode(opcode[2])];\n\n case 22\n /* TrustingDynamicAttr */\n :\n return ['trusting-dynamic-attr', inflateAttrName(opcode[1]), this.formatOpcode(opcode[2]), opcode[3]];\n\n case 23\n /* TrustingComponentAttr */\n :\n return ['trusting-component-attr', inflateAttrName(opcode[1]), this.formatOpcode(opcode[2]), opcode[3]];\n\n case 26\n /* Debugger */\n :\n return ['debugger', opcode[1]];\n\n case 3\n /* Comment */\n :\n return ['comment', opcode[1]];\n\n case 4\n /* Modifier */\n :\n return ['modifier', this.formatOpcode(opcode[1]), this.formatParams(opcode[2]), this.formatHash(opcode[3])];\n\n case 8\n /* Component */\n :\n return ['component', this.formatOpcode(opcode[1]), this.formatElementParams(opcode[2]), this.formatHash(opcode[3]), this.formatBlocks(opcode[4])];\n\n case 48\n /* HasBlock */\n :\n return ['has-block', this.formatOpcode(opcode[1])];\n\n case 49\n /* HasBlockParams */\n :\n return ['has-block-params', this.formatOpcode(opcode[1])];\n\n case 50\n /* Curry */\n :\n return ['curry', this.formatOpcode(opcode[1]), this.formatCurryType(opcode[2]), this.formatParams(opcode[3]), this.formatHash(opcode[4])];\n\n case 27\n /* Undefined */\n :\n return ['undefined'];\n\n case 28\n /* Call */\n :\n return ['call', this.formatOpcode(opcode[1]), this.formatParams(opcode[2]), this.formatHash(opcode[3])];\n\n case 29\n /* Concat */\n :\n return ['concat', this.formatParams(opcode[1])];\n\n case 31\n /* GetStrictFree */\n :\n return ['get-strict-free', this.upvars[opcode[1]], opcode[2]];\n\n case 33\n /* GetFreeAsFallback */\n :\n return ['GetFreeAsFallback', this.upvars[opcode[1]], opcode[2]];\n\n case 34\n /* GetFreeAsComponentOrHelperHeadOrThisFallback */\n :\n return ['GetFreeAsComponentOrHelperHeadOrThisFallback', this.upvars[opcode[1]], opcode[2]];\n\n case 35\n /* GetFreeAsComponentOrHelperHead */\n :\n return ['GetFreeAsComponentOrHelperHead', this.upvars[opcode[1]], opcode[2]];\n\n case 36\n /* GetFreeAsHelperHeadOrThisFallback */\n :\n return ['GetFreeAsHelperHeadOrThisFallback', this.upvars[opcode[1]], opcode[2]];\n\n case 99\n /* GetFreeAsDeprecatedHelperHeadOrThisFallback */\n :\n return ['GetFreeAsDeprecatedHelperHeadOrThisFallback', this.upvars[opcode[1]]];\n\n case 37\n /* GetFreeAsHelperHead */\n :\n return ['GetFreeAsHelperHead', this.upvars[opcode[1]], opcode[2]];\n\n case 39\n /* GetFreeAsComponentHead */\n :\n return ['GetFreeAsComponentHead', this.upvars[opcode[1]], opcode[2]];\n\n case 38\n /* GetFreeAsModifierHead */\n :\n return ['GetFreeAsModifierHead', this.upvars[opcode[1]], opcode[2]];\n\n case 30\n /* GetSymbol */\n :\n {\n if (opcode[1] === 0) {\n return ['get-symbol', 'this', opcode[2]];\n } else {\n return ['get-symbol', this.symbols[opcode[1] - 1], opcode[2]];\n }\n }\n\n case 32\n /* GetTemplateSymbol */\n :\n {\n return ['get-template-symbol', opcode[1], opcode[2]];\n }\n\n case 41\n /* If */\n :\n return ['if', this.formatOpcode(opcode[1]), this.formatBlock(opcode[2]), opcode[3] ? this.formatBlock(opcode[3]) : null];\n\n case 52\n /* IfInline */\n :\n return ['if-inline'];\n\n case 51\n /* Not */\n :\n return ['not'];\n\n case 42\n /* Each */\n :\n return ['each', this.formatOpcode(opcode[1]), opcode[2] ? this.formatOpcode(opcode[2]) : null, this.formatBlock(opcode[3]), opcode[4] ? this.formatBlock(opcode[4]) : null];\n\n case 43\n /* With */\n :\n return ['with', this.formatOpcode(opcode[1]), this.formatBlock(opcode[2]), opcode[3] ? this.formatBlock(opcode[3]) : null];\n\n case 44\n /* Let */\n :\n return ['let', this.formatParams(opcode[1]), this.formatBlock(opcode[2])];\n\n case 54\n /* Log */\n :\n return ['log', this.formatParams(opcode[1])];\n\n case 45\n /* WithDynamicVars */\n :\n return ['-with-dynamic-vars', this.formatHash(opcode[1]), this.formatBlock(opcode[2])];\n\n case 53\n /* GetDynamicVar */\n :\n return ['-get-dynamic-vars', this.formatOpcode(opcode[1])];\n\n case 46\n /* InvokeComponent */\n :\n return ['component', this.formatOpcode(opcode[1]), this.formatParams(opcode[2]), this.formatHash(opcode[3]), this.formatBlocks(opcode[4])];\n }\n } else {\n return opcode;\n }\n };\n\n _proto14.formatCurryType = function formatCurryType(value) {\n switch (value) {\n case 0\n /* Component */\n :\n return 'component';\n\n case 1\n /* Helper */\n :\n return 'helper';\n\n case 2\n /* Modifier */\n :\n return 'modifier';\n\n default:\n throw (0, _util.exhausted)(value);\n }\n };\n\n _proto14.formatElementParams = function formatElementParams(opcodes) {\n var _this11 = this;\n\n if (opcodes === null) return null;\n return opcodes.map(function (o) {\n return _this11.formatOpcode(o);\n });\n };\n\n _proto14.formatParams = function formatParams(opcodes) {\n var _this12 = this;\n\n if (opcodes === null) return null;\n return opcodes.map(function (o) {\n return _this12.formatOpcode(o);\n });\n };\n\n _proto14.formatHash = function formatHash(hash) {\n var _this13 = this;\n\n if (hash === null) return null;\n return hash[0].reduce(function (accum, key, index) {\n accum[key] = _this13.formatOpcode(hash[1][index]);\n return accum;\n }, (0, _util.dict)());\n };\n\n _proto14.formatBlocks = function formatBlocks(blocks) {\n var _this14 = this;\n\n if (blocks === null) return null;\n return blocks[0].reduce(function (accum, key, index) {\n accum[key] = _this14.formatBlock(blocks[1][index]);\n return accum;\n }, (0, _util.dict)());\n };\n\n _proto14.formatBlock = function formatBlock(block) {\n var _this15 = this;\n\n return {\n statements: block[0].map(function (s) {\n return _this15.formatOpcode(s);\n }),\n parameters: block[1]\n };\n };\n\n return WireFormatDebugger;\n }();\n\n _exports.WireFormatDebugger = WireFormatDebugger;\n\n var ExpressionEncoder = /*#__PURE__*/function () {\n function ExpressionEncoder() {}\n\n var _proto15 = ExpressionEncoder.prototype;\n\n _proto15.expr = function expr(_expr) {\n switch (_expr.type) {\n case 'Missing':\n return undefined;\n\n case 'Literal':\n return this.Literal(_expr);\n\n case 'CallExpression':\n return this.CallExpression(_expr);\n\n case 'DeprecatedCallExpression':\n return this.DeprecatedCallExpression(_expr);\n\n case 'PathExpression':\n return this.PathExpression(_expr);\n\n case 'Arg':\n return [30\n /* GetSymbol */\n , _expr.symbol];\n\n case 'Local':\n return this.Local(_expr);\n\n case 'This':\n return [30\n /* GetSymbol */\n , 0];\n\n case 'Free':\n return [_expr.resolution.resolution(), _expr.symbol];\n\n case 'HasBlock':\n return this.HasBlock(_expr);\n\n case 'HasBlockParams':\n return this.HasBlockParams(_expr);\n\n case 'Curry':\n return this.Curry(_expr);\n\n case 'Not':\n return this.Not(_expr);\n\n case 'IfInline':\n return this.IfInline(_expr);\n\n case 'InterpolateExpression':\n return this.InterpolateExpression(_expr);\n\n case 'GetDynamicVar':\n return this.GetDynamicVar(_expr);\n\n case 'Log':\n return this.Log(_expr);\n }\n };\n\n _proto15.Literal = function Literal(_ref62) {\n var value = _ref62.value;\n\n if (value === undefined) {\n return [27\n /* Undefined */\n ];\n } else {\n return value;\n }\n };\n\n _proto15.Missing = function Missing() {\n return undefined;\n };\n\n _proto15.HasBlock = function HasBlock(_ref63) {\n var symbol = _ref63.symbol;\n return [48\n /* HasBlock */\n , [30\n /* GetSymbol */\n , symbol]];\n };\n\n _proto15.HasBlockParams = function HasBlockParams(_ref64) {\n var symbol = _ref64.symbol;\n return [49\n /* HasBlockParams */\n , [30\n /* GetSymbol */\n , symbol]];\n };\n\n _proto15.Curry = function Curry(_ref65) {\n var definition = _ref65.definition,\n curriedType = _ref65.curriedType,\n args = _ref65.args;\n return [50\n /* Curry */\n , EXPR.expr(definition), curriedType, EXPR.Positional(args.positional), EXPR.NamedArguments(args.named)];\n };\n\n _proto15.Local = function Local(_ref66) {\n var isTemplateLocal = _ref66.isTemplateLocal,\n symbol = _ref66.symbol;\n return [isTemplateLocal ? 32\n /* GetTemplateSymbol */\n : 30\n /* GetSymbol */\n , symbol];\n };\n\n _proto15.GetWithResolver = function GetWithResolver(_ref67) {\n var symbol = _ref67.symbol;\n return [34\n /* GetFreeAsComponentOrHelperHeadOrThisFallback */\n , symbol];\n };\n\n _proto15.PathExpression = function PathExpression(_ref68) {\n var head = _ref68.head,\n tail = _ref68.tail;\n var getOp = EXPR.expr(head);\n return [].concat(getOp, [EXPR.Tail(tail)]);\n };\n\n _proto15.InterpolateExpression = function InterpolateExpression(_ref69) {\n var parts = _ref69.parts;\n return [29\n /* Concat */\n , parts.map(function (e) {\n return EXPR.expr(e);\n }).toArray()];\n };\n\n _proto15.CallExpression = function CallExpression(_ref70) {\n var callee = _ref70.callee,\n args = _ref70.args;\n return [28\n /* Call */\n , EXPR.expr(callee)].concat(EXPR.Args(args));\n };\n\n _proto15.DeprecatedCallExpression = function DeprecatedCallExpression(_ref71) {\n var arg = _ref71.arg,\n callee = _ref71.callee;\n return [99\n /* GetFreeAsDeprecatedHelperHeadOrThisFallback */\n , callee.symbol, [arg.chars]];\n };\n\n _proto15.Tail = function Tail(_ref72) {\n var members = _ref72.members;\n return (0, _util.mapPresent)(members, function (member) {\n return member.chars;\n });\n };\n\n _proto15.Args = function Args(_ref73) {\n var positional = _ref73.positional,\n named = _ref73.named;\n return [this.Positional(positional), this.NamedArguments(named)];\n };\n\n _proto15.Positional = function Positional(_ref74) {\n var list = _ref74.list;\n return list.map(function (l) {\n return EXPR.expr(l);\n }).toPresentArray();\n };\n\n _proto15.NamedArgument = function NamedArgument(_ref75) {\n var key = _ref75.key,\n value = _ref75.value;\n return [key.chars, EXPR.expr(value)];\n };\n\n _proto15.NamedArguments = function NamedArguments(_ref76) {\n var pairs = _ref76.entries;\n var list = pairs.toArray();\n\n if ((0, _util.isPresent)(list)) {\n var names = [];\n var values$$1 = [];\n\n for (var _iterator7 = (0, _emberBabel.createForOfIteratorHelperLoose)(list), _step7; !(_step7 = _iterator7()).done;) {\n var _pair = _step7.value;\n\n var _EXPR$NamedArgument = EXPR.NamedArgument(_pair),\n _name2 = _EXPR$NamedArgument[0],\n _value = _EXPR$NamedArgument[1];\n\n names.push(_name2);\n values$$1.push(_value);\n }\n\n (0, _util.assertPresent)(names);\n (0, _util.assertPresent)(values$$1);\n return [names, values$$1];\n } else {\n return null;\n }\n };\n\n _proto15.Not = function Not(_ref77) {\n var value = _ref77.value;\n return [51\n /* Not */\n , EXPR.expr(value)];\n };\n\n _proto15.IfInline = function IfInline(_ref78) {\n var condition = _ref78.condition,\n truthy = _ref78.truthy,\n falsy = _ref78.falsy;\n var expr = [52\n /* IfInline */\n , EXPR.expr(condition), EXPR.expr(truthy)];\n\n if (falsy) {\n expr.push(EXPR.expr(falsy));\n }\n\n return expr;\n };\n\n _proto15.GetDynamicVar = function GetDynamicVar(_ref79) {\n var name = _ref79.name;\n return [53\n /* GetDynamicVar */\n , EXPR.expr(name)];\n };\n\n _proto15.Log = function Log(_ref80) {\n var positional = _ref80.positional;\n return [54\n /* Log */\n , this.Positional(positional)];\n };\n\n return ExpressionEncoder;\n }();\n\n var EXPR = new ExpressionEncoder();\n\n var WireStatements = /*#__PURE__*/function () {\n function WireStatements(statements) {\n this.statements = statements;\n }\n\n var _proto16 = WireStatements.prototype;\n\n _proto16.toArray = function toArray() {\n return this.statements;\n };\n\n return WireStatements;\n }();\n\n var ContentEncoder = /*#__PURE__*/function () {\n function ContentEncoder() {}\n\n var _proto17 = ContentEncoder.prototype;\n\n _proto17.list = function list(statements) {\n var out = [];\n\n for (var _iterator8 = (0, _emberBabel.createForOfIteratorHelperLoose)(statements), _step8; !(_step8 = _iterator8()).done;) {\n var _statement2 = _step8.value;\n\n var _result3 = CONTENT.content(_statement2);\n\n if (_result3 && _result3 instanceof WireStatements) {\n out.push.apply(out, _result3.toArray());\n } else {\n out.push(_result3);\n }\n }\n\n return out;\n };\n\n _proto17.content = function content(stmt) {\n return this.visitContent(stmt);\n };\n\n _proto17.visitContent = function visitContent(stmt) {\n switch (stmt.type) {\n case 'Debugger':\n return [26\n /* Debugger */\n , stmt.scope.getEvalInfo()];\n\n case 'Partial':\n return this.Partial(stmt);\n\n case 'AppendComment':\n return this.AppendComment(stmt);\n\n case 'AppendTextNode':\n return this.AppendTextNode(stmt);\n\n case 'AppendTrustedHTML':\n return this.AppendTrustedHTML(stmt);\n\n case 'Yield':\n return this.Yield(stmt);\n\n case 'Component':\n return this.Component(stmt);\n\n case 'SimpleElement':\n return this.SimpleElement(stmt);\n\n case 'InElement':\n return this.InElement(stmt);\n\n case 'InvokeBlock':\n return this.InvokeBlock(stmt);\n\n case 'If':\n return this.If(stmt);\n\n case 'Each':\n return this.Each(stmt);\n\n case 'With':\n return this.With(stmt);\n\n case 'Let':\n return this.Let(stmt);\n\n case 'WithDynamicVars':\n return this.WithDynamicVars(stmt);\n\n case 'InvokeComponent':\n return this.InvokeComponent(stmt);\n\n default:\n return (0, _util.exhausted)(stmt);\n }\n };\n\n _proto17.Partial = function Partial(_ref81) {\n var target = _ref81.target,\n scope = _ref81.scope;\n return [19\n /* Partial */\n , EXPR.expr(target), scope.getEvalInfo()];\n };\n\n _proto17.Yield = function Yield(_ref82) {\n var to = _ref82.to,\n positional = _ref82.positional;\n return [18\n /* Yield */\n , to, EXPR.Positional(positional)];\n };\n\n _proto17.InElement = function InElement(_ref83) {\n var guid = _ref83.guid,\n insertBefore = _ref83.insertBefore,\n destination = _ref83.destination,\n block = _ref83.block;\n var wireBlock = CONTENT.NamedBlock(block)[1]; // let guid = args.guid;\n\n var wireDestination = EXPR.expr(destination);\n var wireInsertBefore = EXPR.expr(insertBefore);\n\n if (wireInsertBefore === undefined) {\n return [40\n /* InElement */\n , wireBlock, guid, wireDestination];\n } else {\n return [40\n /* InElement */\n , wireBlock, guid, wireDestination, wireInsertBefore];\n }\n };\n\n _proto17.InvokeBlock = function InvokeBlock(_ref84) {\n var head = _ref84.head,\n args = _ref84.args,\n blocks = _ref84.blocks;\n return [6\n /* Block */\n , EXPR.expr(head)].concat(EXPR.Args(args), [CONTENT.NamedBlocks(blocks)]);\n };\n\n _proto17.AppendTrustedHTML = function AppendTrustedHTML(_ref85) {\n var html = _ref85.html;\n return [2\n /* TrustingAppend */\n , EXPR.expr(html)];\n };\n\n _proto17.AppendTextNode = function AppendTextNode(_ref86) {\n var text = _ref86.text;\n return [1\n /* Append */\n , EXPR.expr(text)];\n };\n\n _proto17.AppendComment = function AppendComment(_ref87) {\n var value = _ref87.value;\n return [3\n /* Comment */\n , value.chars];\n };\n\n _proto17.SimpleElement = function SimpleElement(_ref88) {\n var tag = _ref88.tag,\n params = _ref88.params,\n body = _ref88.body,\n dynamicFeatures = _ref88.dynamicFeatures;\n var op = dynamicFeatures ? 11\n /* OpenElementWithSplat */\n : 10\n /* OpenElement */\n ;\n return new WireStatements([[op, deflateTagName(tag.chars)]].concat(CONTENT.ElementParameters(params).toArray(), [[12\n /* FlushElement */\n ]], CONTENT.list(body), [[13\n /* CloseElement */\n ]]));\n };\n\n _proto17.Component = function Component(_ref89) {\n var tag = _ref89.tag,\n params = _ref89.params,\n args = _ref89.args,\n blocks = _ref89.blocks;\n var wireTag = EXPR.expr(tag);\n var wirePositional = CONTENT.ElementParameters(params);\n var wireNamed = EXPR.NamedArguments(args);\n var wireNamedBlocks = CONTENT.NamedBlocks(blocks);\n return [8\n /* Component */\n , wireTag, wirePositional.toPresentArray(), wireNamed, wireNamedBlocks];\n };\n\n _proto17.ElementParameters = function ElementParameters(_ref90) {\n var body = _ref90.body;\n return body.map(function (p) {\n return CONTENT.ElementParameter(p);\n });\n };\n\n _proto17.ElementParameter = function ElementParameter(param) {\n switch (param.type) {\n case 'SplatAttr':\n return [17\n /* AttrSplat */\n , param.symbol];\n\n case 'DynamicAttr':\n return [dynamicAttrOp(param.kind)].concat(dynamicAttr(param));\n\n case 'StaticAttr':\n return [staticAttrOp(param.kind)].concat(staticAttr(param));\n\n case 'Modifier':\n return [4\n /* Modifier */\n , EXPR.expr(param.callee)].concat(EXPR.Args(param.args));\n }\n };\n\n _proto17.NamedBlocks = function NamedBlocks(_ref91) {\n var blocks = _ref91.blocks;\n var names = [];\n var serializedBlocks = [];\n\n for (var _iterator9 = (0, _emberBabel.createForOfIteratorHelperLoose)(blocks.toArray()), _step9; !(_step9 = _iterator9()).done;) {\n var _block = _step9.value;\n\n var _CONTENT$NamedBlock = CONTENT.NamedBlock(_block),\n _name3 = _CONTENT$NamedBlock[0],\n _serializedBlock = _CONTENT$NamedBlock[1];\n\n names.push(_name3);\n serializedBlocks.push(_serializedBlock);\n }\n\n return names.length > 0 ? [names, serializedBlocks] : null;\n };\n\n _proto17.NamedBlock = function NamedBlock(_ref92) {\n var name = _ref92.name,\n body = _ref92.body,\n scope = _ref92.scope;\n var nameChars = name.chars;\n\n if (nameChars === 'inverse') {\n nameChars = 'else';\n }\n\n return [nameChars, [CONTENT.list(body), scope.slots]];\n };\n\n _proto17.If = function If(_ref93) {\n var condition = _ref93.condition,\n block = _ref93.block,\n inverse = _ref93.inverse;\n return [41\n /* If */\n , EXPR.expr(condition), CONTENT.NamedBlock(block)[1], inverse ? CONTENT.NamedBlock(inverse)[1] : null];\n };\n\n _proto17.Each = function Each(_ref94) {\n var value = _ref94.value,\n key = _ref94.key,\n block = _ref94.block,\n inverse = _ref94.inverse;\n return [42\n /* Each */\n , EXPR.expr(value), key ? EXPR.expr(key) : null, CONTENT.NamedBlock(block)[1], inverse ? CONTENT.NamedBlock(inverse)[1] : null];\n };\n\n _proto17.With = function With(_ref95) {\n var value = _ref95.value,\n block = _ref95.block,\n inverse = _ref95.inverse;\n return [43\n /* With */\n , EXPR.expr(value), CONTENT.NamedBlock(block)[1], inverse ? CONTENT.NamedBlock(inverse)[1] : null];\n };\n\n _proto17.Let = function Let(_ref96) {\n var positional = _ref96.positional,\n block = _ref96.block;\n return [44\n /* Let */\n , EXPR.Positional(positional), CONTENT.NamedBlock(block)[1]];\n };\n\n _proto17.WithDynamicVars = function WithDynamicVars(_ref97) {\n var named = _ref97.named,\n block = _ref97.block;\n return [45\n /* WithDynamicVars */\n , EXPR.NamedArguments(named), CONTENT.NamedBlock(block)[1]];\n };\n\n _proto17.InvokeComponent = function InvokeComponent(_ref98) {\n var definition = _ref98.definition,\n args = _ref98.args,\n blocks = _ref98.blocks;\n return [46\n /* InvokeComponent */\n , EXPR.expr(definition), EXPR.Positional(args.positional), EXPR.NamedArguments(args.named), blocks ? CONTENT.NamedBlocks(blocks) : null];\n };\n\n return ContentEncoder;\n }();\n\n var CONTENT = new ContentEncoder();\n\n function staticAttr(_ref99) {\n var name = _ref99.name,\n value = _ref99.value,\n namespace = _ref99.namespace;\n var out = [deflateAttrName(name.chars), value.chars];\n\n if (namespace) {\n out.push(namespace);\n }\n\n return out;\n }\n\n function dynamicAttr(_ref100) {\n var name = _ref100.name,\n value = _ref100.value,\n namespace = _ref100.namespace;\n var out = [deflateAttrName(name.chars), EXPR.expr(value)];\n\n if (namespace) {\n out.push(namespace);\n }\n\n return out;\n }\n\n function staticAttrOp(kind) {\n if (kind.component) {\n return 24\n /* StaticComponentAttr */\n ;\n } else {\n return 14\n /* StaticAttr */\n ;\n }\n }\n\n function dynamicAttrOp(kind) {\n if (kind.component) {\n return kind.trusting ? 23\n /* TrustingComponentAttr */\n : 16\n /* ComponentAttr */\n ;\n } else {\n return kind.trusting ? 22\n /* TrustingDynamicAttr */\n : 15\n /* DynamicAttr */\n ;\n }\n }\n\n function visit(template) {\n var statements = CONTENT.list(template.body);\n var scope = template.scope;\n var block = [statements, scope.symbols, scope.hasEval, scope.upvars];\n return block;\n }\n\n var defaultId = function () {\n var req = typeof module === 'object' && typeof module.require === 'function' ? module.require : require;\n\n if (req) {\n try {\n var crypto = req('crypto');\n\n var idFn = function idFn(src) {\n var hash = crypto.createHash('sha1');\n hash.update(src, 'utf8'); // trim to 6 bytes of data (2^48 - 1)\n\n return hash.digest('base64').substring(0, 8);\n };\n\n idFn('test');\n return idFn;\n } catch (e) {}\n }\n\n return function idFn() {\n return null;\n };\n }();\n\n _exports.defaultId = defaultId;\n var defaultOptions = {\n id: defaultId\n };\n /*\n * Compile a string into a template javascript string.\n *\n * Example usage:\n * import { precompile } from '@glimmer/compiler';\n * import { templateFactory } from 'glimmer-runtime';\n * let templateJs = precompile(\"Howdy {{name}}\");\n * let factory = templateFactory(new Function(\"return \" + templateJs)());\n * let template = factory.create(env);\n *\n * @method precompile\n * @param {string} string a Glimmer template string\n * @return {string} a template javascript string\n */\n\n function precompileJSON(string, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var _a, _b;\n\n var source = new _syntax.Source(string, (_a = options.meta) === null || _a === void 0 ? void 0 : _a.moduleName);\n\n var _normalize = (0, _syntax.normalize)(source, options),\n ast = _normalize[0],\n locals = _normalize[1];\n\n var block = normalize$1(source, ast, (_b = options.strictMode) !== null && _b !== void 0 ? _b : false).mapOk(function (pass2In) {\n return visit(pass2In);\n });\n\n if (block.isOk) {\n return [block.value, locals];\n } else {\n throw block.reason;\n }\n } // UUID used as a unique placeholder for placing a snippet of JS code into\n // the otherwise JSON stringified value below.\n\n\n var SCOPE_PLACEHOLDER = '796d24e6-2450-4fb0-8cdf-b65638b5ef70';\n /*\n * Compile a string into a template javascript string.\n *\n * Example usage:\n * import { precompile } from '@glimmer/compiler';\n * import { templateFactory } from 'glimmer-runtime';\n * let templateJs = precompile(\"Howdy {{name}}\");\n * let factory = templateFactory(new Function(\"return \" + templateJs)());\n * let template = factory.create(env);\n *\n * @method precompile\n * @param {string} string a Glimmer template string\n * @return {string} a template javascript string\n */\n\n function precompile(source, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var _a, _b;\n\n var _precompileJSON = precompileJSON(source, options),\n block = _precompileJSON[0],\n usedLocals = _precompileJSON[1];\n\n var moduleName = (_a = options.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n var idFn = options.id || defaultId;\n var blockJSON = JSON.stringify(block);\n var templateJSONObject = {\n id: idFn(JSON.stringify(options.meta) + blockJSON),\n block: blockJSON,\n moduleName: moduleName !== null && moduleName !== void 0 ? moduleName : '(unknown template module)',\n // lying to the type checker here because we're going to\n // replace it just below, after stringification\n scope: SCOPE_PLACEHOLDER,\n isStrictMode: (_b = options.strictMode) !== null && _b !== void 0 ? _b : false\n };\n\n if (usedLocals.length === 0) {\n delete templateJSONObject.scope;\n } // JSON is javascript\n\n\n var stringified = JSON.stringify(templateJSONObject);\n\n if (usedLocals.length > 0) {\n var scopeFn = \"()=>[\" + usedLocals.join(',') + \"]\";\n stringified = stringified.replace(\"\\\"\" + SCOPE_PLACEHOLDER + \"\\\"\", scopeFn);\n }\n\n return stringified;\n }\n\n var VariableKind;\n\n (function (VariableKind) {\n VariableKind[\"Local\"] = \"Local\";\n VariableKind[\"Free\"] = \"Free\";\n VariableKind[\"Arg\"] = \"Arg\";\n VariableKind[\"Block\"] = \"Block\";\n VariableKind[\"This\"] = \"This\";\n })(VariableKind || (VariableKind = {}));\n\n function normalizeStatement(statement) {\n if (Array.isArray(statement)) {\n if (statementIsExpression(statement)) {\n return normalizeAppendExpression(statement);\n } else if (isSugaryArrayStatement(statement)) {\n return normalizeSugaryArrayStatement(statement);\n } else {\n return normalizeVerboseStatement(statement);\n }\n } else if (typeof statement === 'string') {\n return normalizeAppendHead(normalizeDottedPath(statement), false);\n } else {\n throw (0, _util.assertNever)(statement);\n }\n }\n\n function normalizeAppendHead(head, trusted) {\n if (head.type === \"GetPath\"\n /* GetPath */\n ) {\n return {\n kind: \"AppendPath\"\n /* AppendPath */\n ,\n path: head,\n trusted: trusted\n };\n } else {\n return {\n kind: \"AppendExpr\"\n /* AppendExpr */\n ,\n expr: head,\n trusted: trusted\n };\n }\n }\n\n function isSugaryArrayStatement(statement) {\n if (Array.isArray(statement) && typeof statement[0] === 'string') {\n switch (statement[0][0]) {\n case '(':\n case '#':\n case '<':\n case '!':\n return true;\n\n default:\n return false;\n }\n }\n\n return false;\n }\n\n function normalizeSugaryArrayStatement(statement) {\n var name = statement[0];\n\n switch (name[0]) {\n case '(':\n {\n var params = null;\n var hash = null;\n\n if (statement.length === 3) {\n params = normalizeParams(statement[1]);\n hash = normalizeHash(statement[2]);\n } else if (statement.length === 2) {\n if (Array.isArray(statement[1])) {\n params = normalizeParams(statement[1]);\n } else {\n hash = normalizeHash(statement[1]);\n }\n }\n\n return {\n kind: \"Call\"\n /* Call */\n ,\n head: normalizeCallHead(name),\n params: params,\n hash: hash,\n trusted: false\n };\n }\n\n case '#':\n {\n var _normalizeBuilderBloc = normalizeBuilderBlockStatement(statement),\n path = _normalizeBuilderBloc.head,\n _params = _normalizeBuilderBloc.params,\n _hash = _normalizeBuilderBloc.hash,\n blocks = _normalizeBuilderBloc.blocks,\n blockParams = _normalizeBuilderBloc.blockParams;\n\n return {\n kind: \"Block\"\n /* Block */\n ,\n head: path,\n params: _params,\n hash: _hash,\n blocks: blocks,\n blockParams: blockParams\n };\n }\n\n case '!':\n {\n var _name4 = statement[0].slice(1);\n\n var _normalizeBuilderBloc2 = normalizeBuilderBlockStatement(statement),\n _params2 = _normalizeBuilderBloc2.params,\n _hash2 = _normalizeBuilderBloc2.hash,\n _blocks = _normalizeBuilderBloc2.blocks,\n _blockParams = _normalizeBuilderBloc2.blockParams;\n\n return {\n kind: \"Keyword\"\n /* Keyword */\n ,\n name: _name4,\n params: _params2,\n hash: _hash2,\n blocks: _blocks,\n blockParams: _blockParams\n };\n }\n\n case '<':\n {\n var attrs = (0, _util.dict)();\n var block = [];\n\n if (statement.length === 3) {\n attrs = normalizeAttrs(statement[1]);\n block = normalizeBlock(statement[2]);\n } else if (statement.length === 2) {\n if (Array.isArray(statement[1])) {\n block = normalizeBlock(statement[1]);\n } else {\n attrs = normalizeAttrs(statement[1]);\n }\n }\n\n return {\n kind: \"Element\"\n /* Element */\n ,\n name: extractElement(name),\n attrs: attrs,\n block: block\n };\n }\n\n default:\n throw new Error(\"Unreachable \" + JSON.stringify(statement) + \" in normalizeSugaryArrayStatement\");\n }\n }\n\n function normalizeVerboseStatement(statement) {\n switch (statement[0]) {\n case 0\n /* Literal */\n :\n {\n return {\n kind: \"Literal\"\n /* Literal */\n ,\n value: statement[1]\n };\n }\n\n case 2\n /* Append */\n :\n {\n return normalizeAppendExpression(statement[1], statement[2]);\n }\n\n case 3\n /* Modifier */\n :\n {\n return {\n kind: \"Modifier\"\n /* Modifier */\n ,\n params: normalizeParams(statement[1]),\n hash: normalizeHash(statement[2])\n };\n }\n\n case 4\n /* DynamicComponent */\n :\n {\n return {\n kind: \"DynamicComponent\"\n /* DynamicComponent */\n ,\n expr: normalizeExpression(statement[1]),\n hash: normalizeHash(statement[2]),\n block: normalizeBlock(statement[3])\n };\n }\n\n case 1\n /* Comment */\n :\n {\n return {\n kind: \"Comment\"\n /* Comment */\n ,\n value: statement[1]\n };\n }\n }\n }\n\n function extractBlockHead(name) {\n var result = /^(#|!)(.*)$/.exec(name);\n\n if (result === null) {\n throw new Error(\"Unexpected missing # in block head\");\n }\n\n return normalizeDottedPath(result[2]);\n }\n\n function normalizeCallHead(name) {\n var result = /^\\((.*)\\)$/.exec(name);\n\n if (result === null) {\n throw new Error(\"Unexpected missing () in call head\");\n }\n\n return normalizeDottedPath(result[1]);\n }\n\n function normalizePath(head, tail) {\n if (tail === void 0) {\n tail = [];\n }\n\n var pathHead = normalizePathHead(head);\n\n if ((0, _util.isPresent)(tail)) {\n return {\n type: \"GetPath\"\n /* GetPath */\n ,\n path: {\n head: pathHead,\n tail: tail\n }\n };\n } else {\n return {\n type: \"GetVar\"\n /* GetVar */\n ,\n variable: pathHead\n };\n }\n }\n\n function normalizeDottedPath(whole) {\n var _normalizePathHead = normalizePathHead(whole),\n kind = _normalizePathHead.kind,\n rest = _normalizePathHead.name;\n\n var _rest$split = rest.split('.'),\n name = _rest$split[0],\n tail = _rest$split.slice(1);\n\n var variable = {\n kind: kind,\n name: name,\n mode: 'loose'\n };\n\n if ((0, _util.isPresent)(tail)) {\n return {\n type: \"GetPath\"\n /* GetPath */\n ,\n path: {\n head: variable,\n tail: tail\n }\n };\n } else {\n return {\n type: \"GetVar\"\n /* GetVar */\n ,\n variable: variable\n };\n }\n }\n\n function normalizePathHead(whole) {\n var kind;\n var name;\n\n if (/^this(\\.|$)/.exec(whole)) {\n return {\n kind: VariableKind.This,\n name: whole,\n mode: 'loose'\n };\n }\n\n switch (whole[0]) {\n case '^':\n kind = VariableKind.Free;\n name = whole.slice(1);\n break;\n\n case '@':\n kind = VariableKind.Arg;\n name = whole.slice(1);\n break;\n\n case '&':\n kind = VariableKind.Block;\n name = whole.slice(1);\n break;\n\n default:\n kind = VariableKind.Local;\n name = whole;\n }\n\n return {\n kind: kind,\n name: name,\n mode: 'loose'\n };\n }\n\n function normalizeBuilderBlockStatement(statement) {\n var head = statement[0];\n var blocks = (0, _util.dict)();\n var params = null;\n var hash = null;\n var blockParams = null;\n\n if (statement.length === 2) {\n blocks = normalizeBlocks(statement[1]);\n } else if (statement.length === 3) {\n if (Array.isArray(statement[1])) {\n params = normalizeParams(statement[1]);\n } else {\n var _normalizeBlockHash = normalizeBlockHash(statement[1]);\n\n hash = _normalizeBlockHash.hash;\n blockParams = _normalizeBlockHash.blockParams;\n }\n\n blocks = normalizeBlocks(statement[2]);\n } else if (statement.length === 4) {\n params = normalizeParams(statement[1]);\n\n var _normalizeBlockHash2 = normalizeBlockHash(statement[2]);\n\n hash = _normalizeBlockHash2.hash;\n blockParams = _normalizeBlockHash2.blockParams;\n blocks = normalizeBlocks(statement[3]);\n }\n\n return {\n head: extractBlockHead(head),\n params: params,\n hash: hash,\n blockParams: blockParams,\n blocks: blocks\n };\n }\n\n function normalizeBlockHash(hash) {\n if (hash === null) {\n return {\n hash: null,\n blockParams: null\n };\n }\n\n var out = null;\n var blockParams = null;\n entries(hash, function (key, value) {\n if (key === 'as') {\n blockParams = Array.isArray(value) ? value : [value];\n } else {\n out = out || (0, _util.dict)();\n out[key] = normalizeExpression(value);\n }\n });\n return {\n hash: out,\n blockParams: blockParams\n };\n }\n\n function entries(dict$$1, callback) {\n Object.keys(dict$$1).forEach(function (key) {\n var value = dict$$1[key];\n callback(key, value);\n });\n }\n\n function normalizeBlocks(value) {\n if (Array.isArray(value)) {\n return {\n default: normalizeBlock(value)\n };\n } else {\n return mapObject(value, normalizeBlock);\n }\n }\n\n function normalizeBlock(block) {\n return block.map(function (s) {\n return normalizeStatement(s);\n });\n }\n\n function normalizeAttrs(attrs) {\n return mapObject(attrs, function (a) {\n return normalizeAttr(a).expr;\n });\n }\n\n function normalizeAttr(attr) {\n if (attr === 'splat') {\n return {\n expr: \"Splat\"\n /* Splat */\n ,\n trusted: false\n };\n } else {\n var expr = normalizeExpression(attr);\n return {\n expr: expr,\n trusted: false\n };\n }\n }\n\n function mapObject(object, callback) {\n var out = (0, _util.dict)();\n Object.keys(object).forEach(function (k) {\n out[k] = callback(object[k], k);\n });\n return out;\n }\n\n function extractElement(input) {\n var match = /^<([a-z0-9\\-][a-zA-Z0-9\\-]*)>$/.exec(input);\n return match ? match[1] : null;\n }\n\n function normalizeAppendExpression(expression, forceTrusted) {\n if (forceTrusted === void 0) {\n forceTrusted = false;\n }\n\n if (expression === null || expression === undefined) {\n return {\n expr: {\n type: \"Literal\"\n /* Literal */\n ,\n value: expression\n },\n kind: \"AppendExpr\"\n /* AppendExpr */\n ,\n trusted: false\n };\n } else if (Array.isArray(expression)) {\n switch (expression[0]) {\n case 0\n /* Literal */\n :\n return {\n expr: {\n type: \"Literal\"\n /* Literal */\n ,\n value: expression[1]\n },\n kind: \"AppendExpr\"\n /* AppendExpr */\n ,\n trusted: false\n };\n\n case 5\n /* Get */\n :\n {\n return normalizeAppendHead(normalizePath(expression[1], expression[2]), forceTrusted);\n }\n\n case 6\n /* Concat */\n :\n {\n var expr = {\n type: \"Concat\"\n /* Concat */\n ,\n params: normalizeParams(expression.slice(1))\n };\n return {\n expr: expr,\n kind: \"AppendExpr\"\n /* AppendExpr */\n ,\n trusted: forceTrusted\n };\n }\n\n case 7\n /* HasBlock */\n :\n return {\n expr: {\n type: \"HasBlock\"\n /* HasBlock */\n ,\n name: expression[1]\n },\n kind: \"AppendExpr\"\n /* AppendExpr */\n ,\n trusted: forceTrusted\n };\n\n case 8\n /* HasBlockParams */\n :\n return {\n expr: {\n type: \"HasBlockParams\"\n /* HasBlockParams */\n ,\n name: expression[1]\n },\n kind: \"AppendExpr\"\n /* AppendExpr */\n ,\n trusted: forceTrusted\n };\n\n default:\n {\n if (isBuilderCallExpression(expression)) {\n return {\n expr: normalizeCallExpression(expression),\n kind: \"AppendExpr\"\n /* AppendExpr */\n ,\n trusted: forceTrusted\n };\n } else {\n throw new Error(\"Unexpected array in expression position (wasn't a tuple expression and \" + expression[0] + \" isn't wrapped in parens, so it isn't a call): \" + JSON.stringify(expression));\n }\n }\n // BuilderCallExpression\n }\n } else if (typeof expression !== 'object') {\n switch (typeof expression) {\n case 'string':\n {\n return normalizeAppendHead(normalizeDottedPath(expression), forceTrusted);\n }\n\n case 'boolean':\n case 'number':\n return {\n expr: {\n type: \"Literal\"\n /* Literal */\n ,\n value: expression\n },\n kind: \"AppendExpr\"\n /* AppendExpr */\n ,\n trusted: true\n };\n\n default:\n throw (0, _util.assertNever)(expression);\n }\n } else {\n throw (0, _util.assertNever)(expression);\n }\n }\n\n function normalizeExpression(expression) {\n if (expression === null || expression === undefined) {\n return {\n type: \"Literal\"\n /* Literal */\n ,\n value: expression\n };\n } else if (Array.isArray(expression)) {\n switch (expression[0]) {\n case 0\n /* Literal */\n :\n return {\n type: \"Literal\"\n /* Literal */\n ,\n value: expression[1]\n };\n\n case 5\n /* Get */\n :\n {\n return normalizePath(expression[1], expression[2]);\n }\n\n case 6\n /* Concat */\n :\n {\n var expr = {\n type: \"Concat\"\n /* Concat */\n ,\n params: normalizeParams(expression.slice(1))\n };\n return expr;\n }\n\n case 7\n /* HasBlock */\n :\n return {\n type: \"HasBlock\"\n /* HasBlock */\n ,\n name: expression[1]\n };\n\n case 8\n /* HasBlockParams */\n :\n return {\n type: \"HasBlockParams\"\n /* HasBlockParams */\n ,\n name: expression[1]\n };\n\n default:\n {\n if (isBuilderCallExpression(expression)) {\n return normalizeCallExpression(expression);\n } else {\n throw new Error(\"Unexpected array in expression position (wasn't a tuple expression and \" + expression[0] + \" isn't wrapped in parens, so it isn't a call): \" + JSON.stringify(expression));\n }\n }\n // BuilderCallExpression\n }\n } else if (typeof expression !== 'object') {\n switch (typeof expression) {\n case 'string':\n {\n return normalizeDottedPath(expression);\n }\n\n case 'boolean':\n case 'number':\n return {\n type: \"Literal\"\n /* Literal */\n ,\n value: expression\n };\n\n default:\n throw (0, _util.assertNever)(expression);\n }\n } else {\n throw (0, _util.assertNever)(expression);\n }\n }\n\n function statementIsExpression(statement) {\n if (!Array.isArray(statement)) {\n return false;\n }\n\n var name = statement[0];\n\n if (typeof name === 'number') {\n switch (name) {\n case 0\n /* Literal */\n :\n case 5\n /* Get */\n :\n case 6\n /* Concat */\n :\n case 7\n /* HasBlock */\n :\n case 8\n /* HasBlockParams */\n :\n return true;\n\n default:\n return false;\n }\n }\n\n if (name[0] === '(') {\n return true;\n }\n\n return false;\n }\n\n function isBuilderCallExpression(value) {\n return typeof value[0] === 'string' && value[0][0] === '(';\n }\n\n function normalizeParams(input) {\n return input.map(normalizeExpression);\n }\n\n function normalizeHash(input) {\n if (input === null) return null;\n return mapObject(input, normalizeExpression);\n }\n\n function normalizeCallExpression(expr) {\n switch (expr.length) {\n case 1:\n return {\n type: \"Call\"\n /* Call */\n ,\n head: normalizeCallHead(expr[0]),\n params: null,\n hash: null\n };\n\n case 2:\n {\n if (Array.isArray(expr[1])) {\n return {\n type: \"Call\"\n /* Call */\n ,\n head: normalizeCallHead(expr[0]),\n params: normalizeParams(expr[1]),\n hash: null\n };\n } else {\n return {\n type: \"Call\"\n /* Call */\n ,\n head: normalizeCallHead(expr[0]),\n params: null,\n hash: normalizeHash(expr[1])\n };\n }\n }\n\n case 3:\n return {\n type: \"Call\"\n /* Call */\n ,\n head: normalizeCallHead(expr[0]),\n params: normalizeParams(expr[1]),\n hash: normalizeHash(expr[2])\n };\n }\n }\n\n var ProgramSymbols = /*#__PURE__*/function () {\n function ProgramSymbols() {\n this._freeVariables = [];\n this._symbols = ['this'];\n this.top = this;\n }\n\n var _proto18 = ProgramSymbols.prototype;\n\n _proto18.toSymbols = function toSymbols() {\n return this._symbols.slice(1);\n };\n\n _proto18.toUpvars = function toUpvars() {\n return this._freeVariables;\n };\n\n _proto18.freeVar = function freeVar(name) {\n return addString(this._freeVariables, name);\n };\n\n _proto18.block = function block(name) {\n return this.symbol(name);\n };\n\n _proto18.arg = function arg(name) {\n return addString(this._symbols, name);\n };\n\n _proto18.local = function local(name) {\n throw new Error(\"No local \" + name + \" was found. Maybe you meant ^\" + name + \" for upvar, or !\" + name + \" for keyword?\");\n };\n\n _proto18.this = function _this() {\n return 0;\n };\n\n _proto18.hasLocal = function hasLocal(_name) {\n return false;\n } // any symbol\n ;\n\n _proto18.symbol = function symbol(name) {\n return addString(this._symbols, name);\n };\n\n _proto18.child = function child(locals) {\n return new LocalSymbols(this, locals);\n };\n\n return ProgramSymbols;\n }();\n\n _exports.ProgramSymbols = ProgramSymbols;\n\n var LocalSymbols = /*#__PURE__*/function () {\n function LocalSymbols(parent, locals) {\n this.parent = parent;\n this.locals = (0, _util.dict)();\n\n for (var _iterator10 = (0, _emberBabel.createForOfIteratorHelperLoose)(locals), _step10; !(_step10 = _iterator10()).done;) {\n var _local = _step10.value;\n this.locals[_local] = parent.top.symbol(_local);\n }\n }\n\n var _proto19 = LocalSymbols.prototype;\n\n _proto19.freeVar = function freeVar(name) {\n return this.parent.freeVar(name);\n };\n\n _proto19.arg = function arg(name) {\n return this.parent.arg(name);\n };\n\n _proto19.block = function block(name) {\n return this.parent.block(name);\n };\n\n _proto19.local = function local(name) {\n if (name in this.locals) {\n return this.locals[name];\n } else {\n return this.parent.local(name);\n }\n };\n\n _proto19.this = function _this() {\n return this.parent.this();\n };\n\n _proto19.hasLocal = function hasLocal(name) {\n if (name in this.locals) {\n return true;\n } else {\n return this.parent.hasLocal(name);\n }\n };\n\n _proto19.child = function child(locals) {\n return new LocalSymbols(this, locals);\n };\n\n (0, _emberBabel.createClass)(LocalSymbols, [{\n key: \"paramSymbols\",\n get: function get() {\n return (0, _util.values)(this.locals);\n }\n }, {\n key: \"top\",\n get: function get() {\n return this.parent.top;\n }\n }]);\n return LocalSymbols;\n }();\n\n function addString(array, item) {\n var index = array.indexOf(item);\n\n if (index === -1) {\n index = array.length;\n array.push(item);\n return index;\n } else {\n return index;\n }\n }\n\n function unimpl(message) {\n return new Error(\"unimplemented \" + message);\n }\n\n function buildStatements(statements, symbols) {\n var out = [];\n statements.forEach(function (s) {\n return out.push.apply(out, buildStatement(normalizeStatement(s), symbols));\n });\n return out;\n }\n\n function buildNormalizedStatements(statements, symbols) {\n var out = [];\n statements.forEach(function (s) {\n return out.push.apply(out, buildStatement(s, symbols));\n });\n return out;\n }\n\n function buildStatement(normalized, symbols) {\n if (symbols === void 0) {\n symbols = new ProgramSymbols();\n }\n\n switch (normalized.kind) {\n case \"AppendPath\"\n /* AppendPath */\n :\n {\n return [[normalized.trusted ? 2\n /* TrustingAppend */\n : 1\n /* Append */\n , buildGetPath(normalized.path, symbols)]];\n }\n\n case \"AppendExpr\"\n /* AppendExpr */\n :\n {\n return [[normalized.trusted ? 2\n /* TrustingAppend */\n : 1\n /* Append */\n , buildExpression(normalized.expr, normalized.trusted ? 'TrustedAppend' : 'Append', symbols)]];\n }\n\n case \"Call\"\n /* Call */\n :\n {\n var path = normalized.head,\n params = normalized.params,\n hash = normalized.hash,\n trusted = normalized.trusted;\n var builtParams = params ? buildParams(params, symbols) : null;\n var builtHash = hash ? buildHash(hash, symbols) : null;\n var builtExpr = buildCallHead(path, trusted ? 3\n /* AmbiguousInvoke */\n : 2\n /* AmbiguousAppendInvoke */\n , symbols);\n return [[trusted ? 2\n /* TrustingAppend */\n : 1\n /* Append */\n , [28\n /* Call */\n , builtExpr, builtParams, builtHash]]];\n }\n\n case \"Literal\"\n /* Literal */\n :\n {\n return [[1\n /* Append */\n , normalized.value]];\n }\n\n case \"Comment\"\n /* Comment */\n :\n {\n return [[3\n /* Comment */\n , normalized.value]];\n }\n\n case \"Block\"\n /* Block */\n :\n {\n var blocks = buildBlocks(normalized.blocks, normalized.blockParams, symbols);\n\n var _hash3 = buildHash(normalized.hash, symbols);\n\n var _params3 = buildParams(normalized.params, symbols);\n\n var _path = buildCallHead(normalized.head, 7\n /* ResolveAsComponentHead */\n , symbols);\n\n return [[6\n /* Block */\n , _path, _params3, _hash3, blocks]];\n }\n\n case \"Keyword\"\n /* Keyword */\n :\n {\n return [buildKeyword(normalized, symbols)];\n }\n\n case \"Element\"\n /* Element */\n :\n return buildElement(normalized, symbols);\n\n case \"Modifier\"\n /* Modifier */\n :\n throw unimpl('modifier');\n\n case \"DynamicComponent\"\n /* DynamicComponent */\n :\n throw unimpl('dynamic component');\n\n default:\n throw (0, _util.assertNever)(normalized);\n }\n }\n\n function s(arr) {\n for (var _len2 = arguments.length, interpolated = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n interpolated[_key2 - 1] = arguments[_key2];\n }\n\n var result = arr.reduce(function (result, string, i) {\n return result + (\"\" + string + (interpolated[i] ? String(interpolated[i]) : ''));\n }, '');\n return [0\n /* Literal */\n , result];\n }\n\n function c(arr) {\n for (var _len3 = arguments.length, interpolated = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n interpolated[_key3 - 1] = arguments[_key3];\n }\n\n var result = arr.reduce(function (result, string, i) {\n return result + (\"\" + string + (interpolated[i] ? String(interpolated[i]) : ''));\n }, '');\n return [1\n /* Comment */\n , result];\n }\n\n function unicode(charCode) {\n return String.fromCharCode(parseInt(charCode, 16));\n }\n\n var NEWLINE = '\\n';\n _exports.NEWLINE = NEWLINE;\n\n function buildKeyword(normalized, symbols) {\n var name = normalized.name;\n var params = buildParams(normalized.params, symbols);\n var childSymbols = symbols.child(normalized.blockParams || []);\n var block = buildBlock(normalized.blocks.default, childSymbols, childSymbols.paramSymbols);\n var inverse = normalized.blocks.else ? buildBlock(normalized.blocks.else, symbols, []) : null;\n\n switch (name) {\n case 'with':\n return [43\n /* With */\n , params[0], block, inverse];\n\n case 'if':\n return [41\n /* If */\n , params[0], block, inverse];\n\n case 'each':\n var keyExpr = normalized.hash ? normalized.hash['key'] : null;\n var key = keyExpr ? buildExpression(keyExpr, 'Generic', symbols) : null;\n return [42\n /* Each */\n , params[0], key, block, inverse];\n\n default:\n throw new Error('unimplemented keyword');\n }\n }\n\n function buildElement(_ref101, symbols) {\n var name = _ref101.name,\n attrs = _ref101.attrs,\n block = _ref101.block;\n var out = [hasSplat(attrs) ? [11\n /* OpenElementWithSplat */\n , name] : [10\n /* OpenElement */\n , name]];\n\n if (attrs) {\n var _buildElementParams = buildElementParams(attrs, symbols),\n params = _buildElementParams.params,\n args = _buildElementParams.args;\n\n out.push.apply(out, params);\n }\n\n out.push([12\n /* FlushElement */\n ]);\n\n if (Array.isArray(block)) {\n block.forEach(function (s) {\n return out.push.apply(out, buildStatement(s, symbols));\n });\n } else if (block === null) {// do nothing\n } else {\n throw (0, _util.assertNever)(block);\n }\n\n out.push([13\n /* CloseElement */\n ]);\n return out;\n }\n\n function hasSplat(attrs) {\n if (attrs === null) return false;\n return Object.keys(attrs).some(function (a) {\n return attrs[a] === \"Splat\";\n }\n /* Splat */\n );\n }\n\n function buildElementParams(attrs, symbols) {\n var params = [];\n var keys = [];\n var values$$1 = [];\n Object.keys(attrs).forEach(function (key) {\n var value = attrs[key];\n\n if (value === \"Splat\"\n /* Splat */\n ) {\n params.push([17\n /* AttrSplat */\n , symbols.block('&attrs')]);\n } else if (key[0] === '@') {\n keys.push(key);\n values$$1.push(buildExpression(value, 'Strict', symbols));\n } else {\n params.push.apply(params, buildAttributeValue(key, value, // TODO: extract namespace from key\n extractNamespace(key), symbols));\n }\n });\n return {\n params: params,\n args: (0, _util.isPresent)(keys) && (0, _util.isPresent)(values$$1) ? [keys, values$$1] : null\n };\n }\n\n function extractNamespace(name) {\n if (name === 'xmlns') {\n return \"http://www.w3.org/2000/xmlns/\"\n /* XMLNS */\n ;\n }\n\n var match = /^([^:]*):([^:]*)$/.exec(name);\n\n if (match === null) {\n return null;\n }\n\n var namespace = match[1];\n\n switch (namespace) {\n case 'xlink':\n return \"http://www.w3.org/1999/xlink\"\n /* XLink */\n ;\n\n case 'xml':\n return \"http://www.w3.org/XML/1998/namespace\"\n /* XML */\n ;\n\n case 'xmlns':\n return \"http://www.w3.org/2000/xmlns/\"\n /* XMLNS */\n ;\n }\n\n return null;\n }\n\n function buildAttributeValue(name, value, namespace, symbols) {\n switch (value.type) {\n case \"Literal\"\n /* Literal */\n :\n {\n var val = value.value;\n\n if (val === false) {\n return [];\n } else if (val === true) {\n return [[14\n /* StaticAttr */\n , name, '', namespace !== null && namespace !== void 0 ? namespace : undefined]];\n } else if (typeof val === 'string') {\n return [[14\n /* StaticAttr */\n , name, val, namespace !== null && namespace !== void 0 ? namespace : undefined]];\n } else {\n throw new Error(\"Unexpected/unimplemented literal attribute \" + JSON.stringify(val));\n }\n }\n\n default:\n return [[15\n /* DynamicAttr */\n , name, buildExpression(value, 'AttrValue', symbols), namespace !== null && namespace !== void 0 ? namespace : undefined]];\n }\n }\n\n function varContext(context, bare) {\n switch (context) {\n case 'Append':\n return bare ? 'AppendBare' : 'AppendInvoke';\n\n case 'TrustedAppend':\n return bare ? 'TrustedAppendBare' : 'TrustedAppendInvoke';\n\n case 'AttrValue':\n return bare ? 'AttrValueBare' : 'AttrValueInvoke';\n\n default:\n return context;\n }\n }\n\n function buildExpression(expr, context, symbols) {\n switch (expr.type) {\n case \"GetPath\"\n /* GetPath */\n :\n {\n return buildGetPath(expr, symbols);\n }\n\n case \"GetVar\"\n /* GetVar */\n :\n {\n return buildVar(expr.variable, varContext(context, true), symbols);\n }\n\n case \"Concat\"\n /* Concat */\n :\n {\n return [29\n /* Concat */\n , buildConcat(expr.params, symbols)];\n }\n\n case \"Call\"\n /* Call */\n :\n {\n var builtParams = buildParams(expr.params, symbols);\n var builtHash = buildHash(expr.hash, symbols);\n var builtExpr = buildCallHead(expr.head, context === 'Generic' ? 'SubExpression' : varContext(context, false), symbols);\n return [28\n /* Call */\n , builtExpr, builtParams, builtHash];\n }\n\n case \"HasBlock\"\n /* HasBlock */\n :\n {\n return [48\n /* HasBlock */\n , buildVar({\n kind: VariableKind.Block,\n name: expr.name,\n mode: 'loose'\n }, 4\n /* LooseFreeVariable */\n , symbols)];\n }\n\n case \"HasBlockParams\"\n /* HasBlockParams */\n :\n {\n return [49\n /* HasBlockParams */\n , buildVar({\n kind: VariableKind.Block,\n name: expr.name,\n mode: 'loose'\n }, 4\n /* LooseFreeVariable */\n , symbols)];\n }\n\n case \"Literal\"\n /* Literal */\n :\n {\n if (expr.value === undefined) {\n return [27\n /* Undefined */\n ];\n } else {\n return expr.value;\n }\n }\n\n default:\n (0, _util.assertNever)(expr);\n }\n }\n\n function buildCallHead(callHead, context, symbols) {\n if (callHead.type === \"GetVar\"\n /* GetVar */\n ) {\n return buildVar(callHead.variable, context, symbols);\n } else {\n return buildGetPath(callHead, symbols);\n }\n }\n\n function buildGetPath(head, symbols) {\n return buildVar(head.path.head, 4\n /* LooseFreeVariable */\n , symbols, head.path.tail);\n }\n\n function buildVar(head, context, symbols, path) {\n var op = 30\n /* GetSymbol */\n ;\n var sym;\n\n switch (head.kind) {\n case VariableKind.Free:\n if (context === 'Strict') {\n op = 31\n /* GetStrictFree */\n ;\n } else if (context === 'AppendBare') {\n op = 34\n /* GetFreeAsComponentOrHelperHeadOrThisFallback */\n ;\n } else if (context === 'AppendInvoke') {\n op = 35\n /* GetFreeAsComponentOrHelperHead */\n ;\n } else if (context === 'TrustedAppendBare') {\n op = 36\n /* GetFreeAsHelperHeadOrThisFallback */\n ;\n } else if (context === 'TrustedAppendInvoke') {\n op = 37\n /* GetFreeAsHelperHead */\n ;\n } else if (context === 'AttrValueBare') {\n op = 36\n /* GetFreeAsHelperHeadOrThisFallback */\n ;\n } else if (context === 'AttrValueInvoke') {\n op = 37\n /* GetFreeAsHelperHead */\n ;\n } else if (context === 'SubExpression') {\n op = 37\n /* GetFreeAsHelperHead */\n ;\n } else if (context === 'Generic') {\n op = 33\n /* GetFreeAsFallback */\n ;\n } else {\n op = expressionContextOp(context);\n }\n\n sym = symbols.freeVar(head.name);\n break;\n\n default:\n op = 30\n /* GetSymbol */\n ;\n sym = getSymbolForVar(head.kind, symbols, head.name);\n }\n\n if (path === undefined || path.length === 0) {\n return [op, sym];\n } else {\n return [op, sym, path];\n }\n }\n\n function getSymbolForVar(kind, symbols, name) {\n switch (kind) {\n case VariableKind.Arg:\n return symbols.arg(name);\n\n case VariableKind.Block:\n return symbols.block(name);\n\n case VariableKind.Local:\n return symbols.local(name);\n\n case VariableKind.This:\n return symbols.this();\n\n default:\n return (0, _util.exhausted)(kind);\n }\n }\n\n function expressionContextOp(context) {\n switch (context) {\n case 0\n /* Strict */\n :\n return 31\n /* GetStrictFree */\n ;\n\n case 1\n /* AmbiguousAppend */\n :\n return 34\n /* GetFreeAsComponentOrHelperHeadOrThisFallback */\n ;\n\n case 2\n /* AmbiguousAppendInvoke */\n :\n return 35\n /* GetFreeAsComponentOrHelperHead */\n ;\n\n case 3\n /* AmbiguousInvoke */\n :\n return 36\n /* GetFreeAsHelperHeadOrThisFallback */\n ;\n\n case 4\n /* LooseFreeVariable */\n :\n return 33\n /* GetFreeAsFallback */\n ;\n\n case 5\n /* ResolveAsCallHead */\n :\n return 37\n /* GetFreeAsHelperHead */\n ;\n\n case 6\n /* ResolveAsModifierHead */\n :\n return 38\n /* GetFreeAsModifierHead */\n ;\n\n case 7\n /* ResolveAsComponentHead */\n :\n return 39\n /* GetFreeAsComponentHead */\n ;\n\n default:\n return (0, _util.exhausted)(context);\n }\n }\n\n function buildParams(exprs, symbols) {\n if (exprs === null || !(0, _util.isPresent)(exprs)) return null;\n return exprs.map(function (e) {\n return buildExpression(e, 'Generic', symbols);\n });\n }\n\n function buildConcat(exprs, symbols) {\n return exprs.map(function (e) {\n return buildExpression(e, 'AttrValue', symbols);\n });\n }\n\n function buildHash(exprs, symbols) {\n if (exprs === null) return null;\n var out = [[], []];\n Object.keys(exprs).forEach(function (key) {\n out[0].push(key);\n out[1].push(buildExpression(exprs[key], 'Generic', symbols));\n });\n return out;\n }\n\n function buildBlocks(blocks, blockParams, parent) {\n var keys = [];\n var values$$1 = [];\n Object.keys(blocks).forEach(function (name) {\n keys.push(name);\n\n if (name === 'default') {\n var symbols = parent.child(blockParams || []);\n values$$1.push(buildBlock(blocks[name], symbols, symbols.paramSymbols));\n } else {\n values$$1.push(buildBlock(blocks[name], parent, []));\n }\n });\n return [keys, values$$1];\n }\n\n function buildBlock(block, symbols, locals) {\n if (locals === void 0) {\n locals = [];\n }\n\n return [buildNormalizedStatements(block, symbols), locals];\n }\n});","define(\"@glimmer/env\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.CI = _exports.DEBUG = void 0;\n var DEBUG = false;\n _exports.DEBUG = DEBUG;\n var CI = false;\n _exports.CI = CI;\n});","define(\"@glimmer/syntax\", [\"exports\", \"ember-babel\", \"@glimmer/util\", \"simple-html-tokenizer\", \"@handlebars/parser\"], function (_exports, _emberBabel, _util, _simpleHtmlTokenizer, _parser) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.normalize = normalize;\n _exports.generateSyntaxError = generateSyntaxError;\n _exports.preprocess = preprocess;\n _exports.print = build;\n _exports.sortByLoc = sortByLoc;\n _exports.traverse = traverse;\n _exports.cannotRemoveNode = cannotRemoveNode;\n _exports.cannotReplaceNode = cannotReplaceNode;\n _exports.isKeyword = isKeyword;\n _exports.getTemplateLocals = getTemplateLocals;\n _exports.maybeLoc = maybeLoc;\n _exports.loc = loc;\n _exports.hasSpan = hasSpan;\n _exports.node = node;\n _exports.SpanList = _exports.SourceSpan = _exports.SourceSlice = _exports.KEYWORDS_TYPES = _exports.WalkerPath = _exports.Path = _exports.Walker = _exports.ProgramSymbolTable = _exports.BlockSymbolTable = _exports.SymbolTable = _exports.builders = _exports.Source = _exports.ASTv2 = _exports.AST = _exports.ASTv1 = void 0;\n var UNKNOWN_POSITION = Object.freeze({\n line: 1,\n column: 0\n });\n var SYNTHETIC_LOCATION = Object.freeze({\n source: '(synthetic)',\n start: UNKNOWN_POSITION,\n end: UNKNOWN_POSITION\n });\n var TEMPORARY_LOCATION = Object.freeze({\n source: '(temporary)',\n start: UNKNOWN_POSITION,\n end: UNKNOWN_POSITION\n });\n var NON_EXISTENT_LOCATION = Object.freeze({\n source: '(nonexistent)',\n start: UNKNOWN_POSITION,\n end: UNKNOWN_POSITION\n });\n var BROKEN_LOCATION = Object.freeze({\n source: '(broken)',\n start: UNKNOWN_POSITION,\n end: UNKNOWN_POSITION\n });\n\n var SourceSlice = /*#__PURE__*/function () {\n function SourceSlice(options) {\n this.loc = options.loc;\n this.chars = options.chars;\n }\n\n SourceSlice.synthetic = function synthetic(chars) {\n var offsets = SourceSpan.synthetic(chars);\n return new SourceSlice({\n loc: offsets,\n chars: chars\n });\n };\n\n SourceSlice.load = function load(source, slice) {\n return new SourceSlice({\n loc: SourceSpan.load(source, slice[1]),\n chars: slice[0]\n });\n };\n\n var _proto = SourceSlice.prototype;\n\n _proto.getString = function getString() {\n return this.chars;\n };\n\n _proto.serialize = function serialize() {\n return [this.chars, this.loc.serialize()];\n };\n\n return SourceSlice;\n }();\n /**\n * This file implements the DSL used by span and offset in places where they need to exhaustively\n * consider all combinations of states (Handlebars offsets, character offsets and invisible/broken\n * offsets).\n *\n * It's probably overkill, but it makes the code that uses it clear. It could be refactored or\n * removed.\n */\n\n\n _exports.SourceSlice = SourceSlice;\n var MatchAny = 'MATCH_ANY';\n var IsInvisible = 'IS_INVISIBLE';\n\n var WhenList = /*#__PURE__*/function () {\n function WhenList(whens) {\n this._whens = whens;\n }\n\n var _proto2 = WhenList.prototype;\n\n _proto2.first = function first(kind) {\n for (var _iterator = (0, _emberBabel.createForOfIteratorHelperLoose)(this._whens), _step; !(_step = _iterator()).done;) {\n var _when = _step.value;\n\n var _value = _when.match(kind);\n\n if ((0, _util.isPresent)(_value)) {\n return _value[0];\n }\n }\n\n return null;\n };\n\n return WhenList;\n }();\n\n var When = /*#__PURE__*/function () {\n function When() {\n this._map = new Map();\n }\n\n var _proto3 = When.prototype;\n\n _proto3.get = function get(pattern, or) {\n var value = this._map.get(pattern);\n\n if (value) {\n return value;\n }\n\n value = or();\n\n this._map.set(pattern, value);\n\n return value;\n };\n\n _proto3.add = function add(pattern, out) {\n this._map.set(pattern, out);\n };\n\n _proto3.match = function match(kind) {\n var pattern = patternFor(kind);\n var out = [];\n\n var exact = this._map.get(pattern);\n\n var fallback = this._map.get(MatchAny);\n\n if (exact) {\n out.push(exact);\n }\n\n if (fallback) {\n out.push(fallback);\n }\n\n return out;\n };\n\n return When;\n }();\n\n function match(callback) {\n return callback(new Matcher()).check();\n }\n\n var Matcher = /*#__PURE__*/function () {\n function Matcher() {\n this._whens = new When();\n }\n /**\n * You didn't exhaustively match all possibilities.\n */\n\n\n var _proto4 = Matcher.prototype;\n\n _proto4.check = function check() {\n var _this = this;\n\n return function (left, right) {\n return _this.matchFor(left.kind, right.kind)(left, right);\n };\n };\n\n _proto4.matchFor = function matchFor(left, right) {\n var nesteds = this._whens.match(left);\n\n var callback = new WhenList(nesteds).first(right);\n return callback;\n };\n\n _proto4.when = function when(left, right, // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback) {\n this._whens.get(left, function () {\n return new When();\n }).add(right, callback);\n\n return this;\n };\n\n return Matcher;\n }();\n\n function patternFor(kind) {\n switch (kind) {\n case \"Broken\"\n /* Broken */\n :\n case \"InternalsSynthetic\"\n /* InternalsSynthetic */\n :\n case \"NonExistent\"\n /* NonExistent */\n :\n return IsInvisible;\n\n default:\n return kind;\n }\n } // eslint-disable-next-line import/no-extraneous-dependencies\n\n /**\n * Used to indicate that an attempt to convert a `SourcePosition` to a character offset failed. It\n * is separate from `null` so that `null` can be used to indicate that the computation wasn't yet\n * attempted (and therefore to cache the failure)\n */\n\n\n var BROKEN = 'BROKEN';\n /**\n * A `SourceOffset` represents a single position in the source.\n *\n * There are three kinds of backing data for `SourceOffset` objects:\n *\n * - `CharPosition`, which contains a character offset into the raw source string\n * - `HbsPosition`, which contains a `SourcePosition` from the Handlebars AST, which can be\n * converted to a `CharPosition` on demand.\n * - `InvisiblePosition`, which represents a position not in source (@see {InvisiblePosition})\n */\n\n var SourceOffset = /*#__PURE__*/function () {\n function SourceOffset(data) {\n this.data = data;\n }\n /**\n * Create a `SourceOffset` from a Handlebars `SourcePosition`. It's stored as-is, and converted\n * into a character offset on demand, which avoids unnecessarily computing the offset of every\n * `SourceLocation`, but also means that broken `SourcePosition`s are not always detected.\n */\n\n\n SourceOffset.forHbsPos = function forHbsPos(source, pos) {\n return new HbsPosition(source, pos, null).wrap();\n }\n /**\n * Create a `SourceOffset` that corresponds to a broken `SourcePosition`. This means that the\n * calling code determined (or knows) that the `SourceLocation` doesn't correspond correctly to\n * any part of the source.\n */\n ;\n\n SourceOffset.broken = function broken(pos) {\n if (pos === void 0) {\n pos = UNKNOWN_POSITION;\n }\n\n return new InvisiblePosition(\"Broken\"\n /* Broken */\n , pos).wrap();\n }\n /**\n * Get the character offset for this `SourceOffset`, if possible.\n */\n ;\n\n var _proto5 = SourceOffset.prototype;\n\n /**\n * Compare this offset with another one.\n *\n * If both offsets are `HbsPosition`s, they're equivalent as long as their lines and columns are\n * the same. This avoids computing offsets unnecessarily.\n *\n * Otherwise, two `SourceOffset`s are equivalent if their successfully computed character offsets\n * are the same.\n */\n _proto5.eql = function eql(right) {\n return _eql(this.data, right.data);\n }\n /**\n * Create a span that starts from this source offset and ends with another source offset. Avoid\n * computing character offsets if both `SourceOffset`s are still lazy.\n */\n ;\n\n _proto5.until = function until(other) {\n return span(this.data, other.data);\n }\n /**\n * Create a `SourceOffset` by moving the character position represented by this source offset\n * forward or backward (if `by` is negative), if possible.\n *\n * If this `SourceOffset` can't compute a valid character offset, `move` returns a broken offset.\n *\n * If the resulting character offset is less than 0 or greater than the size of the source, `move`\n * returns a broken offset.\n */\n ;\n\n _proto5.move = function move(by) {\n var charPos = this.data.toCharPos();\n\n if (charPos === null) {\n return SourceOffset.broken();\n } else {\n var result = charPos.offset + by;\n\n if (charPos.source.check(result)) {\n return new CharPosition(charPos.source, result).wrap();\n } else {\n return SourceOffset.broken();\n }\n }\n }\n /**\n * Create a new `SourceSpan` that represents a collapsed range at this source offset. Avoid\n * computing the character offset if it has not already been computed.\n */\n ;\n\n _proto5.collapsed = function collapsed() {\n return span(this.data, this.data);\n }\n /**\n * Convert this `SourceOffset` into a Handlebars {@see SourcePosition} for compatibility with\n * existing plugins.\n */\n ;\n\n _proto5.toJSON = function toJSON() {\n return this.data.toJSON();\n };\n\n (0, _emberBabel.createClass)(SourceOffset, [{\n key: \"offset\",\n get: function get() {\n var charPos = this.data.toCharPos();\n return charPos === null ? null : charPos.offset;\n }\n }]);\n return SourceOffset;\n }();\n\n var CharPosition = /*#__PURE__*/function () {\n function CharPosition(source, charPos) {\n this.source = source;\n this.charPos = charPos;\n this.kind = \"CharPosition\"\n /* CharPosition */\n ;\n /** Computed from char offset */\n\n this._locPos = null;\n }\n /**\n * This is already a `CharPosition`.\n *\n * {@see HbsPosition} for the alternative.\n *\n * @implements {PositionData}\n */\n\n\n var _proto6 = CharPosition.prototype;\n\n _proto6.toCharPos = function toCharPos() {\n return this;\n }\n /**\n * Produce a Handlebars {@see SourcePosition} for this `CharPosition`. If this `CharPosition` was\n * computed using {@see SourceOffset#move}, this will compute the `SourcePosition` for the offset.\n *\n * @implements {PositionData}\n */\n ;\n\n _proto6.toJSON = function toJSON() {\n var hbs = this.toHbsPos();\n return hbs === null ? UNKNOWN_POSITION : hbs.toJSON();\n };\n\n _proto6.wrap = function wrap() {\n return new SourceOffset(this);\n }\n /**\n * A `CharPosition` always has an offset it can produce without any additional computation.\n */\n ;\n\n /**\n * Convert the current character offset to an `HbsPosition`, if it was not already computed. Once\n * a `CharPosition` has computed its `HbsPosition`, it will not need to do compute it again, and\n * the same `CharPosition` is retained when used as one of the ends of a `SourceSpan`, so\n * computing the `HbsPosition` should be a one-time operation.\n */\n _proto6.toHbsPos = function toHbsPos() {\n var locPos = this._locPos;\n\n if (locPos === null) {\n var hbsPos = this.source.hbsPosFor(this.charPos);\n\n if (hbsPos === null) {\n this._locPos = locPos = BROKEN;\n } else {\n this._locPos = locPos = new HbsPosition(this.source, hbsPos, this.charPos);\n }\n }\n\n return locPos === BROKEN ? null : locPos;\n };\n\n (0, _emberBabel.createClass)(CharPosition, [{\n key: \"offset\",\n get: function get() {\n return this.charPos;\n }\n }]);\n return CharPosition;\n }();\n\n var HbsPosition = /*#__PURE__*/function () {\n function HbsPosition(source, hbsPos, charPos) {\n if (charPos === void 0) {\n charPos = null;\n }\n\n this.source = source;\n this.hbsPos = hbsPos;\n this.kind = \"HbsPosition\"\n /* HbsPosition */\n ;\n this._charPos = charPos === null ? null : new CharPosition(source, charPos);\n }\n /**\n * Lazily compute the character offset from the {@see SourcePosition}. Once an `HbsPosition` has\n * computed its `CharPosition`, it will not need to do compute it again, and the same\n * `HbsPosition` is retained when used as one of the ends of a `SourceSpan`, so computing the\n * `CharPosition` should be a one-time operation.\n *\n * @implements {PositionData}\n */\n\n\n var _proto7 = HbsPosition.prototype;\n\n _proto7.toCharPos = function toCharPos() {\n var charPos = this._charPos;\n\n if (charPos === null) {\n var charPosNumber = this.source.charPosFor(this.hbsPos);\n\n if (charPosNumber === null) {\n this._charPos = charPos = BROKEN;\n } else {\n this._charPos = charPos = new CharPosition(this.source, charPosNumber);\n }\n }\n\n return charPos === BROKEN ? null : charPos;\n }\n /**\n * Return the {@see SourcePosition} that this `HbsPosition` was instantiated with. This operation\n * does not need to compute anything.\n *\n * @implements {PositionData}\n */\n ;\n\n _proto7.toJSON = function toJSON() {\n return this.hbsPos;\n };\n\n _proto7.wrap = function wrap() {\n return new SourceOffset(this);\n }\n /**\n * This is already an `HbsPosition`.\n *\n * {@see CharPosition} for the alternative.\n */\n ;\n\n _proto7.toHbsPos = function toHbsPos() {\n return this;\n };\n\n return HbsPosition;\n }();\n\n var InvisiblePosition = /*#__PURE__*/function () {\n function InvisiblePosition(kind, // whatever was provided, possibly broken\n pos) {\n this.kind = kind;\n this.pos = pos;\n }\n /**\n * A broken position cannot be turned into a {@see CharacterPosition}.\n */\n\n\n var _proto8 = InvisiblePosition.prototype;\n\n _proto8.toCharPos = function toCharPos() {\n return null;\n }\n /**\n * The serialization of an `InvisiblePosition is whatever Handlebars {@see SourcePosition} was\n * originally identified as broken, non-existent or synthetic.\n *\n * If an `InvisiblePosition` never had an source offset at all, this method returns\n * {@see UNKNOWN_POSITION} for compatibility.\n */\n ;\n\n _proto8.toJSON = function toJSON() {\n return this.pos;\n };\n\n _proto8.wrap = function wrap() {\n return new SourceOffset(this);\n };\n\n (0, _emberBabel.createClass)(InvisiblePosition, [{\n key: \"offset\",\n get: function get() {\n return null;\n }\n }]);\n return InvisiblePosition;\n }();\n /**\n * Compare two {@see AnyPosition} and determine whether they are equal.\n *\n * @see {SourceOffset#eql}\n */\n\n\n var _eql = match(function (m) {\n return m.when(\"HbsPosition\"\n /* HbsPosition */\n , \"HbsPosition\"\n /* HbsPosition */\n , function (_ref, _ref2) {\n var left = _ref.hbsPos;\n var right = _ref2.hbsPos;\n return left.column === right.column && left.line === right.line;\n }).when(\"CharPosition\"\n /* CharPosition */\n , \"CharPosition\"\n /* CharPosition */\n , function (_ref3, _ref4) {\n var left = _ref3.charPos;\n var right = _ref4.charPos;\n return left === right;\n }).when(\"CharPosition\"\n /* CharPosition */\n , \"HbsPosition\"\n /* HbsPosition */\n , function (_ref5, right) {\n var left = _ref5.offset;\n\n var _a;\n\n return left === ((_a = right.toCharPos()) === null || _a === void 0 ? void 0 : _a.offset);\n }).when(\"HbsPosition\"\n /* HbsPosition */\n , \"CharPosition\"\n /* CharPosition */\n , function (left, _ref6) {\n var right = _ref6.offset;\n\n var _a;\n\n return ((_a = left.toCharPos()) === null || _a === void 0 ? void 0 : _a.offset) === right;\n }).when(MatchAny, MatchAny, function () {\n return false;\n });\n }); // eslint-disable-next-line import/no-extraneous-dependencies\n\n /**\n * A `SourceSpan` object represents a span of characters inside of a template source.\n *\n * There are three kinds of `SourceSpan` objects:\n *\n * - `ConcreteSourceSpan`, which contains byte offsets\n * - `LazySourceSpan`, which contains `SourceLocation`s from the Handlebars AST, which can be\n * converted to byte offsets on demand.\n * - `InvisibleSourceSpan`, which represent source strings that aren't present in the source,\n * because:\n * - they were created synthetically\n * - their location is nonsensical (the span is broken)\n * - they represent nothing in the source (this currently happens only when a bug in the\n * upstream Handlebars parser fails to assign a location to empty blocks)\n *\n * At a high level, all `SourceSpan` objects provide:\n *\n * - byte offsets\n * - source in column and line format\n *\n * And you can do these operations on `SourceSpan`s:\n *\n * - collapse it to a `SourceSpan` representing its starting or ending position\n * - slice out some characters, optionally skipping some characters at the beginning or end\n * - create a new `SourceSpan` with a different starting or ending offset\n *\n * All SourceSpan objects implement `SourceLocation`, for compatibility. All SourceSpan\n * objects have a `toJSON` that emits `SourceLocation`, also for compatibility.\n *\n * For compatibility, subclasses of `AbstractSourceSpan` must implement `locDidUpdate`, which\n * happens when an AST plugin attempts to modify the `start` or `end` of a span directly.\n *\n * The goal is to avoid creating any problems for use-cases like AST Explorer.\n */\n\n\n var SourceSpan = /*#__PURE__*/function () {\n function SourceSpan(data) {\n this.data = data;\n this.isInvisible = data.kind !== \"CharPosition\"\n /* CharPosition */\n && data.kind !== \"HbsPosition\"\n /* HbsPosition */\n ;\n }\n\n SourceSpan.load = function load(source, serialized) {\n if (typeof serialized === 'number') {\n return SourceSpan.forCharPositions(source, serialized, serialized);\n } else if (typeof serialized === 'string') {\n return SourceSpan.synthetic(serialized);\n } else if (Array.isArray(serialized)) {\n return SourceSpan.forCharPositions(source, serialized[0], serialized[1]);\n } else if (serialized === \"NonExistent\"\n /* NonExistent */\n ) {\n return SourceSpan.NON_EXISTENT;\n } else if (serialized === \"Broken\"\n /* Broken */\n ) {\n return SourceSpan.broken(BROKEN_LOCATION);\n }\n\n (0, _util.assertNever)(serialized);\n };\n\n SourceSpan.forHbsLoc = function forHbsLoc(source, loc) {\n var start = new HbsPosition(source, loc.start);\n var end = new HbsPosition(source, loc.end);\n return new HbsSpan(source, {\n start: start,\n end: end\n }, loc).wrap();\n };\n\n SourceSpan.forCharPositions = function forCharPositions(source, startPos, endPos) {\n var start = new CharPosition(source, startPos);\n var end = new CharPosition(source, endPos);\n return new CharPositionSpan(source, {\n start: start,\n end: end\n }).wrap();\n };\n\n SourceSpan.synthetic = function synthetic(chars) {\n return new InvisibleSpan(\"InternalsSynthetic\"\n /* InternalsSynthetic */\n , NON_EXISTENT_LOCATION, chars).wrap();\n };\n\n SourceSpan.broken = function broken(pos) {\n if (pos === void 0) {\n pos = BROKEN_LOCATION;\n }\n\n return new InvisibleSpan(\"Broken\"\n /* Broken */\n , pos).wrap();\n };\n\n var _proto9 = SourceSpan.prototype;\n\n _proto9.getStart = function getStart() {\n return this.data.getStart().wrap();\n };\n\n _proto9.getEnd = function getEnd() {\n return this.data.getEnd().wrap();\n };\n\n /**\n * Support converting ASTv1 nodes into a serialized format using JSON.stringify.\n */\n _proto9.toJSON = function toJSON() {\n return this.loc;\n }\n /**\n * Create a new span with the current span's end and a new beginning.\n */\n ;\n\n _proto9.withStart = function withStart(other) {\n return span(other.data, this.data.getEnd());\n }\n /**\n * Create a new span with the current span's beginning and a new ending.\n */\n ;\n\n _proto9.withEnd = function withEnd(other) {\n return span(this.data.getStart(), other.data);\n };\n\n _proto9.asString = function asString() {\n return this.data.asString();\n }\n /**\n * Convert this `SourceSpan` into a `SourceSlice`. In debug mode, this method optionally checks\n * that the byte offsets represented by this `SourceSpan` actually correspond to the expected\n * string.\n */\n ;\n\n _proto9.toSlice = function toSlice(expected) {\n var chars = this.data.asString();\n\n if (true\n /* DEBUG */\n ) {\n if (expected !== undefined && chars !== expected) {\n // eslint-disable-next-line no-console\n console.warn(\"unexpectedly found \" + JSON.stringify(chars) + \" when slicing source, but expected \" + JSON.stringify(expected));\n }\n }\n\n return new SourceSlice({\n loc: this,\n chars: expected || chars\n });\n }\n /**\n * For compatibility with SourceLocation in AST plugins\n *\n * @deprecated use startPosition instead\n */\n ;\n\n _proto9.collapse = function collapse(where) {\n switch (where) {\n case 'start':\n return this.getStart().collapsed();\n\n case 'end':\n return this.getEnd().collapsed();\n }\n };\n\n _proto9.extend = function extend(other) {\n return span(this.data.getStart(), other.data.getEnd());\n };\n\n _proto9.serialize = function serialize() {\n return this.data.serialize();\n };\n\n _proto9.slice = function slice(_ref7) {\n var _ref7$skipStart = _ref7.skipStart,\n skipStart = _ref7$skipStart === void 0 ? 0 : _ref7$skipStart,\n _ref7$skipEnd = _ref7.skipEnd,\n skipEnd = _ref7$skipEnd === void 0 ? 0 : _ref7$skipEnd;\n return span(this.getStart().move(skipStart).data, this.getEnd().move(-skipEnd).data);\n };\n\n _proto9.sliceStartChars = function sliceStartChars(_ref8) {\n var _ref8$skipStart = _ref8.skipStart,\n skipStart = _ref8$skipStart === void 0 ? 0 : _ref8$skipStart,\n chars = _ref8.chars;\n return span(this.getStart().move(skipStart).data, this.getStart().move(skipStart + chars).data);\n };\n\n _proto9.sliceEndChars = function sliceEndChars(_ref9) {\n var _ref9$skipEnd = _ref9.skipEnd,\n skipEnd = _ref9$skipEnd === void 0 ? 0 : _ref9$skipEnd,\n chars = _ref9.chars;\n return span(this.getEnd().move(skipEnd - chars).data, this.getStart().move(-skipEnd).data);\n };\n\n (0, _emberBabel.createClass)(SourceSpan, [{\n key: \"loc\",\n get: function get() {\n var span = this.data.toHbsSpan();\n return span === null ? BROKEN_LOCATION : span.toHbsLoc();\n }\n }, {\n key: \"module\",\n get: function get() {\n return this.data.getModule();\n }\n /**\n * Get the starting `SourcePosition` for this `SourceSpan`, lazily computing it if needed.\n */\n\n }, {\n key: \"startPosition\",\n get: function get() {\n return this.loc.start;\n }\n /**\n * Get the ending `SourcePosition` for this `SourceSpan`, lazily computing it if needed.\n */\n\n }, {\n key: \"endPosition\",\n get: function get() {\n return this.loc.end;\n }\n }, {\n key: \"start\",\n get: function get() {\n return this.loc.start;\n }\n /**\n * For compatibility with SourceLocation in AST plugins\n *\n * @deprecated use withStart instead\n */\n ,\n set: function set(position) {\n this.data.locDidUpdate({\n start: position\n });\n }\n /**\n * For compatibility with SourceLocation in AST plugins\n *\n * @deprecated use endPosition instead\n */\n\n }, {\n key: \"end\",\n get: function get() {\n return this.loc.end;\n }\n /**\n * For compatibility with SourceLocation in AST plugins\n *\n * @deprecated use withEnd instead\n */\n ,\n set: function set(position) {\n this.data.locDidUpdate({\n end: position\n });\n }\n /**\n * For compatibility with SourceLocation in AST plugins\n *\n * @deprecated use module instead\n */\n\n }, {\n key: \"source\",\n get: function get() {\n return this.module;\n }\n }], [{\n key: \"NON_EXISTENT\",\n get: function get() {\n return new InvisibleSpan(\"NonExistent\"\n /* NonExistent */\n , NON_EXISTENT_LOCATION).wrap();\n }\n }]);\n return SourceSpan;\n }();\n\n _exports.SourceSpan = SourceSpan;\n\n var CharPositionSpan = /*#__PURE__*/function () {\n function CharPositionSpan(source, charPositions) {\n this.source = source;\n this.charPositions = charPositions;\n this.kind = \"CharPosition\"\n /* CharPosition */\n ;\n this._locPosSpan = null;\n }\n\n var _proto10 = CharPositionSpan.prototype;\n\n _proto10.wrap = function wrap() {\n return new SourceSpan(this);\n };\n\n _proto10.asString = function asString() {\n return this.source.slice(this.charPositions.start.charPos, this.charPositions.end.charPos);\n };\n\n _proto10.getModule = function getModule() {\n return this.source.module;\n };\n\n _proto10.getStart = function getStart() {\n return this.charPositions.start;\n };\n\n _proto10.getEnd = function getEnd() {\n return this.charPositions.end;\n };\n\n _proto10.locDidUpdate = function locDidUpdate() {};\n\n _proto10.toHbsSpan = function toHbsSpan() {\n var locPosSpan = this._locPosSpan;\n\n if (locPosSpan === null) {\n var start = this.charPositions.start.toHbsPos();\n var end = this.charPositions.end.toHbsPos();\n\n if (start === null || end === null) {\n locPosSpan = this._locPosSpan = BROKEN;\n } else {\n locPosSpan = this._locPosSpan = new HbsSpan(this.source, {\n start: start,\n end: end\n });\n }\n }\n\n return locPosSpan === BROKEN ? null : locPosSpan;\n };\n\n _proto10.serialize = function serialize() {\n var _this$charPositions = this.charPositions,\n start = _this$charPositions.start.charPos,\n end = _this$charPositions.end.charPos;\n\n if (start === end) {\n return start;\n } else {\n return [start, end];\n }\n };\n\n _proto10.toCharPosSpan = function toCharPosSpan() {\n return this;\n };\n\n return CharPositionSpan;\n }();\n\n var HbsSpan = /*#__PURE__*/function () {\n function HbsSpan(source, hbsPositions, providedHbsLoc) {\n if (providedHbsLoc === void 0) {\n providedHbsLoc = null;\n }\n\n this.source = source;\n this.hbsPositions = hbsPositions;\n this.kind = \"HbsPosition\"\n /* HbsPosition */\n ;\n this._charPosSpan = null;\n this._providedHbsLoc = providedHbsLoc;\n }\n\n var _proto11 = HbsSpan.prototype;\n\n _proto11.serialize = function serialize() {\n var charPos = this.toCharPosSpan();\n return charPos === null ? \"Broken\"\n /* Broken */\n : charPos.wrap().serialize();\n };\n\n _proto11.wrap = function wrap() {\n return new SourceSpan(this);\n };\n\n _proto11.updateProvided = function updateProvided(pos, edge) {\n if (this._providedHbsLoc) {\n this._providedHbsLoc[edge] = pos;\n } // invalidate computed character offsets\n\n\n this._charPosSpan = null;\n this._providedHbsLoc = {\n start: pos,\n end: pos\n };\n };\n\n _proto11.locDidUpdate = function locDidUpdate(_ref10) {\n var start = _ref10.start,\n end = _ref10.end;\n\n if (start !== undefined) {\n this.updateProvided(start, 'start');\n this.hbsPositions.start = new HbsPosition(this.source, start, null);\n }\n\n if (end !== undefined) {\n this.updateProvided(end, 'end');\n this.hbsPositions.end = new HbsPosition(this.source, end, null);\n }\n };\n\n _proto11.asString = function asString() {\n var span = this.toCharPosSpan();\n return span === null ? '' : span.asString();\n };\n\n _proto11.getModule = function getModule() {\n return this.source.module;\n };\n\n _proto11.getStart = function getStart() {\n return this.hbsPositions.start;\n };\n\n _proto11.getEnd = function getEnd() {\n return this.hbsPositions.end;\n };\n\n _proto11.toHbsLoc = function toHbsLoc() {\n return {\n start: this.hbsPositions.start.hbsPos,\n end: this.hbsPositions.end.hbsPos\n };\n };\n\n _proto11.toHbsSpan = function toHbsSpan() {\n return this;\n };\n\n _proto11.toCharPosSpan = function toCharPosSpan() {\n var charPosSpan = this._charPosSpan;\n\n if (charPosSpan === null) {\n var start = this.hbsPositions.start.toCharPos();\n var end = this.hbsPositions.end.toCharPos();\n\n if (start && end) {\n charPosSpan = this._charPosSpan = new CharPositionSpan(this.source, {\n start: start,\n end: end\n });\n } else {\n charPosSpan = this._charPosSpan = BROKEN;\n return null;\n }\n }\n\n return charPosSpan === BROKEN ? null : charPosSpan;\n };\n\n return HbsSpan;\n }();\n\n var InvisibleSpan = /*#__PURE__*/function () {\n function InvisibleSpan(kind, // whatever was provided, possibly broken\n loc, // if the span represents a synthetic string\n string) {\n if (string === void 0) {\n string = null;\n }\n\n this.kind = kind;\n this.loc = loc;\n this.string = string;\n }\n\n var _proto12 = InvisibleSpan.prototype;\n\n _proto12.serialize = function serialize() {\n switch (this.kind) {\n case \"Broken\"\n /* Broken */\n :\n case \"NonExistent\"\n /* NonExistent */\n :\n return this.kind;\n\n case \"InternalsSynthetic\"\n /* InternalsSynthetic */\n :\n return this.string || '';\n }\n };\n\n _proto12.wrap = function wrap() {\n return new SourceSpan(this);\n };\n\n _proto12.asString = function asString() {\n return this.string || '';\n };\n\n _proto12.locDidUpdate = function locDidUpdate(_ref11) {\n var start = _ref11.start,\n end = _ref11.end;\n\n if (start !== undefined) {\n this.loc.start = start;\n }\n\n if (end !== undefined) {\n this.loc.end = end;\n }\n };\n\n _proto12.getModule = function getModule() {\n // TODO: Make this reflect the actual module this span originated from\n return 'an unknown module';\n };\n\n _proto12.getStart = function getStart() {\n return new InvisiblePosition(this.kind, this.loc.start);\n };\n\n _proto12.getEnd = function getEnd() {\n return new InvisiblePosition(this.kind, this.loc.end);\n };\n\n _proto12.toCharPosSpan = function toCharPosSpan() {\n return this;\n };\n\n _proto12.toHbsSpan = function toHbsSpan() {\n return null;\n };\n\n _proto12.toHbsLoc = function toHbsLoc() {\n return BROKEN_LOCATION;\n };\n\n return InvisibleSpan;\n }();\n\n var span = match(function (m) {\n return m.when(\"HbsPosition\"\n /* HbsPosition */\n , \"HbsPosition\"\n /* HbsPosition */\n , function (left, right) {\n return new HbsSpan(left.source, {\n start: left,\n end: right\n }).wrap();\n }).when(\"CharPosition\"\n /* CharPosition */\n , \"CharPosition\"\n /* CharPosition */\n , function (left, right) {\n return new CharPositionSpan(left.source, {\n start: left,\n end: right\n }).wrap();\n }).when(\"CharPosition\"\n /* CharPosition */\n , \"HbsPosition\"\n /* HbsPosition */\n , function (left, right) {\n var rightCharPos = right.toCharPos();\n\n if (rightCharPos === null) {\n return new InvisibleSpan(\"Broken\"\n /* Broken */\n , BROKEN_LOCATION).wrap();\n } else {\n return span(left, rightCharPos);\n }\n }).when(\"HbsPosition\"\n /* HbsPosition */\n , \"CharPosition\"\n /* CharPosition */\n , function (left, right) {\n var leftCharPos = left.toCharPos();\n\n if (leftCharPos === null) {\n return new InvisibleSpan(\"Broken\"\n /* Broken */\n , BROKEN_LOCATION).wrap();\n } else {\n return span(leftCharPos, right);\n }\n }).when(IsInvisible, MatchAny, function (left) {\n return new InvisibleSpan(left.kind, BROKEN_LOCATION).wrap();\n }).when(MatchAny, IsInvisible, function (_, right) {\n return new InvisibleSpan(right.kind, BROKEN_LOCATION).wrap();\n });\n }); // eslint-disable-next-line import/no-extraneous-dependencies\n\n var Source = /*#__PURE__*/function () {\n function Source(source, module) {\n if (module === void 0) {\n module = 'an unknown module';\n }\n\n this.source = source;\n this.module = module;\n }\n /**\n * Validate that the character offset represents a position in the source string.\n */\n\n\n var _proto13 = Source.prototype;\n\n _proto13.check = function check(offset) {\n return offset >= 0 && offset <= this.source.length;\n };\n\n _proto13.slice = function slice(start, end) {\n return this.source.slice(start, end);\n };\n\n _proto13.offsetFor = function offsetFor(line, column) {\n return SourceOffset.forHbsPos(this, {\n line: line,\n column: column\n });\n };\n\n _proto13.spanFor = function spanFor(_ref12) {\n var start = _ref12.start,\n end = _ref12.end;\n return SourceSpan.forHbsLoc(this, {\n start: {\n line: start.line,\n column: start.column\n },\n end: {\n line: end.line,\n column: end.column\n }\n });\n };\n\n _proto13.hbsPosFor = function hbsPosFor(offset) {\n var seenLines = 0;\n var seenChars = 0;\n\n if (offset > this.source.length) {\n return null;\n }\n\n while (true) {\n var nextLine = this.source.indexOf('\\n', seenChars);\n\n if (offset <= nextLine || nextLine === -1) {\n return {\n line: seenLines + 1,\n column: offset - seenChars\n };\n } else {\n seenLines += 1;\n seenChars = nextLine + 1;\n }\n }\n };\n\n _proto13.charPosFor = function charPosFor(position) {\n var line = position.line,\n column = position.column;\n var sourceString = this.source;\n var sourceLength = sourceString.length;\n var seenLines = 0;\n var seenChars = 0;\n\n while (true) {\n if (seenChars >= sourceLength) return sourceLength;\n var nextLine = this.source.indexOf('\\n', seenChars);\n if (nextLine === -1) nextLine = this.source.length;\n\n if (seenLines === line - 1) {\n if (seenChars + column > nextLine) return nextLine;\n\n if (true\n /* DEBUG */\n ) {\n var roundTrip = this.hbsPosFor(seenChars + column);\n }\n\n return seenChars + column;\n } else if (nextLine === -1) {\n return 0;\n } else {\n seenLines += 1;\n seenChars = nextLine + 1;\n }\n }\n };\n\n return Source;\n }();\n\n _exports.Source = Source;\n\n var PathExpressionImplV1 = /*#__PURE__*/function () {\n function PathExpressionImplV1(original, head, tail, loc) {\n this.original = original;\n this.loc = loc;\n this.type = 'PathExpression';\n this.this = false;\n this.data = false; // Cache for the head value.\n\n this._head = undefined;\n var parts = tail.slice();\n\n if (head.type === 'ThisHead') {\n this.this = true;\n } else if (head.type === 'AtHead') {\n this.data = true;\n parts.unshift(head.name.slice(1));\n } else {\n parts.unshift(head.name);\n }\n\n this.parts = parts;\n }\n\n (0, _emberBabel.createClass)(PathExpressionImplV1, [{\n key: \"head\",\n get: function get() {\n if (this._head) {\n return this._head;\n }\n\n var firstPart;\n\n if (this.this) {\n firstPart = 'this';\n } else if (this.data) {\n firstPart = \"@\" + this.parts[0];\n } else {\n firstPart = this.parts[0];\n }\n\n var firstPartLoc = this.loc.collapse('start').sliceStartChars({\n chars: firstPart.length\n }).loc;\n return this._head = publicBuilder.head(firstPart, firstPartLoc);\n }\n }, {\n key: \"tail\",\n get: function get() {\n return this.this ? this.parts : this.parts.slice(1);\n }\n }]);\n return PathExpressionImplV1;\n }();\n\n var _SOURCE;\n\n function SOURCE() {\n if (!_SOURCE) {\n _SOURCE = new Source('', '(synthetic)');\n }\n\n return _SOURCE;\n }\n\n function buildMustache(path, params, hash, raw, loc, strip) {\n if (typeof path === 'string') {\n path = buildPath(path);\n }\n\n return {\n type: 'MustacheStatement',\n path: path,\n params: params || [],\n hash: hash || buildHash([]),\n escaped: !raw,\n trusting: !!raw,\n loc: buildLoc(loc || null),\n strip: strip || {\n open: false,\n close: false\n }\n };\n }\n\n function buildBlock(path, params, hash, _defaultBlock, _elseBlock, loc, openStrip, inverseStrip, closeStrip) {\n var defaultBlock;\n var elseBlock;\n\n if (_defaultBlock.type === 'Template') {\n defaultBlock = (0, _util.assign)({}, _defaultBlock, {\n type: 'Block'\n });\n } else {\n defaultBlock = _defaultBlock;\n }\n\n if (_elseBlock !== undefined && _elseBlock !== null && _elseBlock.type === 'Template') {\n elseBlock = (0, _util.assign)({}, _elseBlock, {\n type: 'Block'\n });\n } else {\n elseBlock = _elseBlock;\n }\n\n return {\n type: 'BlockStatement',\n path: buildPath(path),\n params: params || [],\n hash: hash || buildHash([]),\n program: defaultBlock || null,\n inverse: elseBlock || null,\n loc: buildLoc(loc || null),\n openStrip: openStrip || {\n open: false,\n close: false\n },\n inverseStrip: inverseStrip || {\n open: false,\n close: false\n },\n closeStrip: closeStrip || {\n open: false,\n close: false\n }\n };\n }\n\n function buildElementModifier(path, params, hash, loc) {\n return {\n type: 'ElementModifierStatement',\n path: buildPath(path),\n params: params || [],\n hash: hash || buildHash([]),\n loc: buildLoc(loc || null)\n };\n }\n\n function buildPartial(name, params, hash, indent, loc) {\n return {\n type: 'PartialStatement',\n name: name,\n params: params || [],\n hash: hash || buildHash([]),\n indent: indent || '',\n strip: {\n open: false,\n close: false\n },\n loc: buildLoc(loc || null)\n };\n }\n\n function buildComment(value, loc) {\n return {\n type: 'CommentStatement',\n value: value,\n loc: buildLoc(loc || null)\n };\n }\n\n function buildMustacheComment(value, loc) {\n return {\n type: 'MustacheCommentStatement',\n value: value,\n loc: buildLoc(loc || null)\n };\n }\n\n function buildConcat(parts, loc) {\n if (!(0, _util.isPresent)(parts)) {\n throw new Error(\"b.concat requires at least one part\");\n }\n\n return {\n type: 'ConcatStatement',\n parts: parts || [],\n loc: buildLoc(loc || null)\n };\n }\n\n function buildElement(tag, options) {\n var attrs = options.attrs,\n blockParams = options.blockParams,\n modifiers = options.modifiers,\n comments = options.comments,\n children = options.children,\n loc = options.loc;\n var tagName; // this is used for backwards compat, prior to `selfClosing` being part of the ElementNode AST\n\n var selfClosing = false;\n\n if (typeof tag === 'object') {\n selfClosing = tag.selfClosing;\n tagName = tag.name;\n } else if (tag.slice(-1) === '/') {\n tagName = tag.slice(0, -1);\n selfClosing = true;\n } else {\n tagName = tag;\n }\n\n return {\n type: 'ElementNode',\n tag: tagName,\n selfClosing: selfClosing,\n attributes: attrs || [],\n blockParams: blockParams || [],\n modifiers: modifiers || [],\n comments: comments || [],\n children: children || [],\n loc: buildLoc(loc || null)\n };\n }\n\n function buildAttr(name, value, loc) {\n return {\n type: 'AttrNode',\n name: name,\n value: value,\n loc: buildLoc(loc || null)\n };\n }\n\n function buildText(chars, loc) {\n return {\n type: 'TextNode',\n chars: chars || '',\n loc: buildLoc(loc || null)\n };\n } // Expressions\n\n\n function buildSexpr(path, params, hash, loc) {\n return {\n type: 'SubExpression',\n path: buildPath(path),\n params: params || [],\n hash: hash || buildHash([]),\n loc: buildLoc(loc || null)\n };\n }\n\n function headToString(head) {\n switch (head.type) {\n case 'AtHead':\n return {\n original: head.name,\n parts: [head.name]\n };\n\n case 'ThisHead':\n return {\n original: \"this\",\n parts: []\n };\n\n case 'VarHead':\n return {\n original: head.name,\n parts: [head.name]\n };\n }\n }\n\n function buildHead(original, loc) {\n var _original$split = original.split('.'),\n head = _original$split[0],\n tail = _original$split.slice(1);\n\n var headNode;\n\n if (head === 'this') {\n headNode = {\n type: 'ThisHead',\n loc: buildLoc(loc || null)\n };\n } else if (head[0] === '@') {\n headNode = {\n type: 'AtHead',\n name: head,\n loc: buildLoc(loc || null)\n };\n } else {\n headNode = {\n type: 'VarHead',\n name: head,\n loc: buildLoc(loc || null)\n };\n }\n\n return {\n head: headNode,\n tail: tail\n };\n }\n\n function buildThis(loc) {\n return {\n type: 'ThisHead',\n loc: buildLoc(loc || null)\n };\n }\n\n function buildAtName(name, loc) {\n return {\n type: 'AtHead',\n name: name,\n loc: buildLoc(loc || null)\n };\n }\n\n function buildVar(name, loc) {\n return {\n type: 'VarHead',\n name: name,\n loc: buildLoc(loc || null)\n };\n }\n\n function buildHeadFromString(head, loc) {\n if (head[0] === '@') {\n return buildAtName(head, loc);\n } else if (head === 'this') {\n return buildThis(loc);\n } else {\n return buildVar(head, loc);\n }\n }\n\n function buildNamedBlockName(name, loc) {\n return {\n type: 'NamedBlockName',\n name: name,\n loc: buildLoc(loc || null)\n };\n }\n\n function buildCleanPath(head, tail, loc) {\n var _headToString = headToString(head),\n originalHead = _headToString.original,\n headParts = _headToString.parts;\n\n var parts = [].concat(headParts, tail);\n var original = [].concat(originalHead, parts).join('.');\n return new PathExpressionImplV1(original, head, tail, buildLoc(loc || null));\n }\n\n function buildPath(path, loc) {\n if (typeof path !== 'string') {\n if ('type' in path) {\n return path;\n } else {\n var _buildHead = buildHead(path.head, SourceSpan.broken()),\n _head = _buildHead.head,\n _tail = _buildHead.tail;\n\n var _headToString2 = headToString(_head),\n originalHead = _headToString2.original;\n\n return new PathExpressionImplV1([originalHead].concat(_tail).join('.'), _head, _tail, buildLoc(loc || null));\n }\n }\n\n var _buildHead2 = buildHead(path, SourceSpan.broken()),\n head = _buildHead2.head,\n tail = _buildHead2.tail;\n\n return new PathExpressionImplV1(path, head, tail, buildLoc(loc || null));\n }\n\n function buildLiteral(type, value, loc) {\n return {\n type: type,\n value: value,\n original: value,\n loc: buildLoc(loc || null)\n };\n } // Miscellaneous\n\n\n function buildHash(pairs, loc) {\n return {\n type: 'Hash',\n pairs: pairs || [],\n loc: buildLoc(loc || null)\n };\n }\n\n function buildPair(key, value, loc) {\n return {\n type: 'HashPair',\n key: key,\n value: value,\n loc: buildLoc(loc || null)\n };\n }\n\n function buildProgram(body, blockParams, loc) {\n return {\n type: 'Template',\n body: body || [],\n blockParams: blockParams || [],\n loc: buildLoc(loc || null)\n };\n }\n\n function buildBlockItself(body, blockParams, chained, loc) {\n if (chained === void 0) {\n chained = false;\n }\n\n return {\n type: 'Block',\n body: body || [],\n blockParams: blockParams || [],\n chained: chained,\n loc: buildLoc(loc || null)\n };\n }\n\n function buildTemplate(body, blockParams, loc) {\n return {\n type: 'Template',\n body: body || [],\n blockParams: blockParams || [],\n loc: buildLoc(loc || null)\n };\n }\n\n function buildPosition(line, column) {\n return {\n line: line,\n column: column\n };\n }\n\n function buildLoc() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 1) {\n var _loc = args[0];\n\n if (_loc && typeof _loc === 'object') {\n return SourceSpan.forHbsLoc(SOURCE(), _loc);\n } else {\n return SourceSpan.forHbsLoc(SOURCE(), SYNTHETIC_LOCATION);\n }\n } else {\n var startLine = args[0],\n startColumn = args[1],\n endLine = args[2],\n endColumn = args[3],\n _source = args[4];\n var source = _source ? new Source('', _source) : SOURCE();\n return SourceSpan.forHbsLoc(source, {\n start: {\n line: startLine,\n column: startColumn\n },\n end: {\n line: endLine,\n column: endColumn\n }\n });\n }\n }\n\n var publicBuilder = {\n mustache: buildMustache,\n block: buildBlock,\n partial: buildPartial,\n comment: buildComment,\n mustacheComment: buildMustacheComment,\n element: buildElement,\n elementModifier: buildElementModifier,\n attr: buildAttr,\n text: buildText,\n sexpr: buildSexpr,\n concat: buildConcat,\n hash: buildHash,\n pair: buildPair,\n literal: buildLiteral,\n program: buildProgram,\n blockItself: buildBlockItself,\n template: buildTemplate,\n loc: buildLoc,\n pos: buildPosition,\n path: buildPath,\n fullPath: buildCleanPath,\n head: buildHeadFromString,\n at: buildAtName,\n var: buildVar,\n this: buildThis,\n blockName: buildNamedBlockName,\n string: literal('StringLiteral'),\n boolean: literal('BooleanLiteral'),\n number: literal('NumberLiteral'),\n undefined: function (_undefined) {\n function undefined() {\n return _undefined.apply(this, arguments);\n }\n\n undefined.toString = function () {\n return _undefined.toString();\n };\n\n return undefined;\n }(function () {\n return buildLiteral('UndefinedLiteral', undefined);\n }),\n null: function _null() {\n return buildLiteral('NullLiteral', null);\n }\n };\n _exports.builders = publicBuilder;\n\n function literal(type) {\n return function (value, loc) {\n return buildLiteral(type, value, loc);\n };\n }\n\n var api = /*#__PURE__*/Object.freeze({});\n /**\n * A free variable is resolved according to a resolution rule:\n *\n * 1. Strict resolution\n * 2. Namespaced resolution\n * 3. Fallback resolution\n */\n\n /**\n * Strict resolution is used:\n *\n * 1. in a strict mode template\n * 2. in an unambiguous invocation with dot paths\n */\n\n _exports.AST = _exports.ASTv1 = api;\n\n var StrictResolution = /*#__PURE__*/function () {\n function StrictResolution() {\n this.isAngleBracket = false;\n }\n\n var _proto14 = StrictResolution.prototype;\n\n _proto14.resolution = function resolution() {\n return 31\n /* GetStrictFree */\n ;\n };\n\n _proto14.serialize = function serialize() {\n return 'Strict';\n };\n\n return StrictResolution;\n }();\n\n var STRICT_RESOLUTION = new StrictResolution();\n /**\n * A `LooseModeResolution` includes:\n *\n * - 0 or more namespaces to resolve the variable in\n * - optional fallback behavior\n *\n * In practice, there are a limited number of possible combinations of these degrees of freedom,\n * and they are captured by the `Ambiguity` union below.\n */\n\n var LooseModeResolution = /*#__PURE__*/function () {\n function LooseModeResolution(ambiguity, isAngleBracket) {\n if (isAngleBracket === void 0) {\n isAngleBracket = false;\n }\n\n this.ambiguity = ambiguity;\n this.isAngleBracket = isAngleBracket;\n }\n /**\n * Namespaced resolution is used in an unambiguous syntax position:\n *\n * 1. `(sexp)` (namespace: `Helper`)\n * 2. `{{#block}}` (namespace: `Component`)\n * 3. `<a {{modifier}}>` (namespace: `Modifier`)\n * 4. `<Component />` (namespace: `Component`)\n *\n * @see {NamespacedAmbiguity}\n */\n\n\n LooseModeResolution.namespaced = function namespaced(namespace, isAngleBracket) {\n if (isAngleBracket === void 0) {\n isAngleBracket = false;\n }\n\n return new LooseModeResolution({\n namespaces: [namespace],\n fallback: false\n }, isAngleBracket);\n }\n /**\n * Fallback resolution is used when no namespaced resolutions are possible, but fallback\n * resolution is still allowed.\n *\n * ```hbs\n * {{x.y}}\n * ```\n *\n * @see {FallbackAmbiguity}\n */\n ;\n\n LooseModeResolution.fallback = function fallback() {\n return new LooseModeResolution({\n namespaces: [],\n fallback: true\n });\n }\n /**\n * Append resolution is used when the variable should be resolved in both the `component` and\n * `helper` namespaces. Fallback resolution is optional.\n *\n * ```hbs\n * {{x}}\n * ```\n *\n * ^ `x` should be resolved in the `component` and `helper` namespaces with fallback resolution.\n *\n * ```hbs\n * {{x y}}\n * ```\n *\n * ^ `x` should be resolved in the `component` and `helper` namespaces without fallback\n * resolution.\n *\n * @see {ComponentOrHelperAmbiguity}\n */\n ;\n\n LooseModeResolution.append = function append(_ref13) {\n var invoke = _ref13.invoke;\n return new LooseModeResolution({\n namespaces: [\"Component\"\n /* Component */\n , \"Helper\"\n /* Helper */\n ],\n fallback: !invoke\n });\n }\n /**\n * Trusting append resolution is used when the variable should be resolved in both the `component` and\n * `helper` namespaces. Fallback resolution is optional.\n *\n * ```hbs\n * {{{x}}}\n * ```\n *\n * ^ `x` should be resolved in the `component` and `helper` namespaces with fallback resolution.\n *\n * ```hbs\n * {{{x y}}}\n * ```\n *\n * ^ `x` should be resolved in the `component` and `helper` namespaces without fallback\n * resolution.\n *\n * @see {HelperAmbiguity}\n */\n ;\n\n LooseModeResolution.trustingAppend = function trustingAppend(_ref14) {\n var invoke = _ref14.invoke;\n return new LooseModeResolution({\n namespaces: [\"Helper\"\n /* Helper */\n ],\n fallback: !invoke\n });\n }\n /**\n * Attribute resolution is used when the variable should be resolved as a `helper` with fallback\n * resolution.\n *\n * ```hbs\n * <a href={{x}} />\n * <a href=\"{{x}}.html\" />\n * ```\n *\n * ^ resolved in the `helper` namespace with fallback\n *\n * @see {HelperAmbiguity}\n */\n ;\n\n LooseModeResolution.attr = function attr() {\n return new LooseModeResolution({\n namespaces: [\"Helper\"\n /* Helper */\n ],\n fallback: true\n });\n };\n\n var _proto15 = LooseModeResolution.prototype;\n\n _proto15.resolution = function resolution() {\n if (this.ambiguity.namespaces.length === 0) {\n return 33\n /* GetFreeAsFallback */\n ;\n } else if (this.ambiguity.namespaces.length === 1) {\n if (this.ambiguity.fallback) {\n // simple namespaced resolution with fallback must be attr={{x}}\n return 36\n /* GetFreeAsHelperHeadOrThisFallback */\n ;\n } else {\n // simple namespaced resolution without fallback\n switch (this.ambiguity.namespaces[0]) {\n case \"Helper\"\n /* Helper */\n :\n return 37\n /* GetFreeAsHelperHead */\n ;\n\n case \"Modifier\"\n /* Modifier */\n :\n return 38\n /* GetFreeAsModifierHead */\n ;\n\n case \"Component\"\n /* Component */\n :\n return 39\n /* GetFreeAsComponentHead */\n ;\n }\n }\n } else if (this.ambiguity.fallback) {\n // component or helper + fallback ({{something}})\n return 34\n /* GetFreeAsComponentOrHelperHeadOrThisFallback */\n ;\n } else {\n // component or helper without fallback ({{something something}})\n return 35\n /* GetFreeAsComponentOrHelperHead */\n ;\n }\n };\n\n _proto15.serialize = function serialize() {\n if (this.ambiguity.namespaces.length === 0) {\n return 'Loose';\n } else if (this.ambiguity.namespaces.length === 1) {\n if (this.ambiguity.fallback) {\n // simple namespaced resolution with fallback must be attr={{x}}\n return ['ambiguous', \"Attr\"\n /* Attr */\n ];\n } else {\n return ['ns', this.ambiguity.namespaces[0]];\n }\n } else if (this.ambiguity.fallback) {\n // component or helper + fallback ({{something}})\n return ['ambiguous', \"Append\"\n /* Append */\n ];\n } else {\n // component or helper without fallback ({{something something}})\n return ['ambiguous', \"Invoke\"\n /* Invoke */\n ];\n }\n };\n\n return LooseModeResolution;\n }();\n\n var ARGUMENT_RESOLUTION = LooseModeResolution.fallback();\n\n function loadResolution(resolution) {\n if (typeof resolution === 'string') {\n switch (resolution) {\n case 'Loose':\n return LooseModeResolution.fallback();\n\n case 'Strict':\n return STRICT_RESOLUTION;\n }\n }\n\n switch (resolution[0]) {\n case 'ambiguous':\n switch (resolution[1]) {\n case \"Append\"\n /* Append */\n :\n return LooseModeResolution.append({\n invoke: false\n });\n\n case \"Attr\"\n /* Attr */\n :\n return LooseModeResolution.attr();\n\n case \"Invoke\"\n /* Invoke */\n :\n return LooseModeResolution.append({\n invoke: true\n });\n }\n\n case 'ns':\n return LooseModeResolution.namespaced(resolution[1]);\n }\n }\n\n function node(name) {\n if (name !== undefined) {\n var type = name;\n return {\n fields: function fields() {\n return /*#__PURE__*/function () {\n function _class(fields) {\n this.type = type;\n (0, _util.assign)(this, fields);\n }\n\n return _class;\n }();\n }\n };\n } else {\n return {\n fields: function fields() {\n return /*#__PURE__*/function () {\n function _class2(fields) {\n (0, _util.assign)(this, fields);\n }\n\n return _class2;\n }();\n }\n };\n }\n }\n /**\n * Corresponds to syntaxes with positional and named arguments:\n *\n * - SubExpression\n * - Invoking Append\n * - Invoking attributes\n * - InvokeBlock\n *\n * If `Args` is empty, the `SourceOffsets` for this node should be the collapsed position\n * immediately after the parent call node's `callee`.\n */\n\n\n var Args = /*#__PURE__*/function (_node$fields) {\n (0, _emberBabel.inheritsLoose)(Args, _node$fields);\n\n function Args() {\n return _node$fields.apply(this, arguments) || this;\n }\n\n Args.empty = function empty(loc) {\n return new Args({\n loc: loc,\n positional: PositionalArguments.empty(loc),\n named: NamedArguments.empty(loc)\n });\n };\n\n Args.named = function named(_named) {\n return new Args({\n loc: _named.loc,\n positional: PositionalArguments.empty(_named.loc.collapse('end')),\n named: _named\n });\n };\n\n var _proto16 = Args.prototype;\n\n _proto16.nth = function nth(offset) {\n return this.positional.nth(offset);\n };\n\n _proto16.get = function get(name) {\n return this.named.get(name);\n };\n\n _proto16.isEmpty = function isEmpty() {\n return this.positional.isEmpty() && this.named.isEmpty();\n };\n\n return Args;\n }(node().fields());\n /**\n * Corresponds to positional arguments.\n *\n * If `PositionalArguments` is empty, the `SourceOffsets` for this node should be the collapsed\n * position immediately after the parent call node's `callee`.\n */\n\n\n var PositionalArguments = /*#__PURE__*/function (_node$fields2) {\n (0, _emberBabel.inheritsLoose)(PositionalArguments, _node$fields2);\n\n function PositionalArguments() {\n return _node$fields2.apply(this, arguments) || this;\n }\n\n PositionalArguments.empty = function empty(loc) {\n return new PositionalArguments({\n loc: loc,\n exprs: []\n });\n };\n\n var _proto17 = PositionalArguments.prototype;\n\n _proto17.nth = function nth(offset) {\n return this.exprs[offset] || null;\n };\n\n _proto17.isEmpty = function isEmpty() {\n return this.exprs.length === 0;\n };\n\n (0, _emberBabel.createClass)(PositionalArguments, [{\n key: \"size\",\n get: function get() {\n return this.exprs.length;\n }\n }]);\n return PositionalArguments;\n }(node().fields());\n /**\n * Corresponds to named arguments.\n *\n * If `PositionalArguments` and `NamedArguments` are empty, the `SourceOffsets` for this node should\n * be the same as the `Args` node that contains this node.\n *\n * If `PositionalArguments` is not empty but `NamedArguments` is empty, the `SourceOffsets` for this\n * node should be the collapsed position immediately after the last positional argument.\n */\n\n\n var NamedArguments = /*#__PURE__*/function (_node$fields3) {\n (0, _emberBabel.inheritsLoose)(NamedArguments, _node$fields3);\n\n function NamedArguments() {\n return _node$fields3.apply(this, arguments) || this;\n }\n\n NamedArguments.empty = function empty(loc) {\n return new NamedArguments({\n loc: loc,\n entries: []\n });\n };\n\n var _proto18 = NamedArguments.prototype;\n\n _proto18.get = function get(name) {\n var entry = this.entries.filter(function (e) {\n return e.name.chars === name;\n })[0];\n return entry ? entry.value : null;\n };\n\n _proto18.isEmpty = function isEmpty() {\n return this.entries.length === 0;\n };\n\n (0, _emberBabel.createClass)(NamedArguments, [{\n key: \"size\",\n get: function get() {\n return this.entries.length;\n }\n }]);\n return NamedArguments;\n }(node().fields());\n /**\n * Corresponds to a single named argument.\n *\n * ```hbs\n * x=<expr>\n * ```\n */\n\n\n var NamedArgument = function NamedArgument(options) {\n this.loc = options.name.loc.extend(options.value.loc);\n this.name = options.name;\n this.value = options.value;\n };\n /**\n * `HtmlAttr` nodes are valid HTML attributes, with or without a value.\n *\n * Exceptions:\n *\n * - `...attributes` is `SplatAttr`\n * - `@x=<value>` is `ComponentArg`\n */\n\n\n var HtmlAttr = /*#__PURE__*/function (_node$fields4) {\n (0, _emberBabel.inheritsLoose)(HtmlAttr, _node$fields4);\n\n function HtmlAttr() {\n return _node$fields4.apply(this, arguments) || this;\n }\n\n return HtmlAttr;\n }(node('HtmlAttr').fields());\n\n var SplatAttr = /*#__PURE__*/function (_node$fields5) {\n (0, _emberBabel.inheritsLoose)(SplatAttr, _node$fields5);\n\n function SplatAttr() {\n return _node$fields5.apply(this, arguments) || this;\n }\n\n return SplatAttr;\n }(node('SplatAttr').fields());\n /**\n * Corresponds to an argument passed by a component (`@x=<value>`)\n */\n\n\n var ComponentArg = /*#__PURE__*/function (_node$fields6) {\n (0, _emberBabel.inheritsLoose)(ComponentArg, _node$fields6);\n\n function ComponentArg() {\n return _node$fields6.apply(this, arguments) || this;\n }\n\n var _proto19 = ComponentArg.prototype;\n\n /**\n * Convert the component argument into a named argument node\n */\n _proto19.toNamedArgument = function toNamedArgument() {\n return new NamedArgument({\n name: this.name,\n value: this.value\n });\n };\n\n return ComponentArg;\n }(node().fields());\n /**\n * An `ElementModifier` is just a normal call node in modifier position.\n */\n\n\n var ElementModifier = /*#__PURE__*/function (_node$fields7) {\n (0, _emberBabel.inheritsLoose)(ElementModifier, _node$fields7);\n\n function ElementModifier() {\n return _node$fields7.apply(this, arguments) || this;\n }\n\n return ElementModifier;\n }(node('ElementModifier').fields());\n\n var SpanList = /*#__PURE__*/function () {\n function SpanList(span) {\n if (span === void 0) {\n span = [];\n }\n\n this._span = span;\n }\n\n SpanList.range = function range(span, fallback) {\n if (fallback === void 0) {\n fallback = SourceSpan.NON_EXISTENT;\n }\n\n return new SpanList(span.map(loc)).getRangeOffset(fallback);\n };\n\n var _proto20 = SpanList.prototype;\n\n _proto20.add = function add(offset) {\n this._span.push(offset);\n };\n\n _proto20.getRangeOffset = function getRangeOffset(fallback) {\n if (this._span.length === 0) {\n return fallback;\n } else {\n var first = this._span[0];\n var last = this._span[this._span.length - 1];\n return first.extend(last);\n }\n };\n\n return SpanList;\n }();\n\n _exports.SpanList = SpanList;\n\n function loc(span) {\n if (Array.isArray(span)) {\n var first = span[0];\n var last = span[span.length - 1];\n return loc(first).extend(loc(last));\n } else if (span instanceof SourceSpan) {\n return span;\n } else {\n return span.loc;\n }\n }\n\n function hasSpan(span) {\n if (Array.isArray(span) && span.length === 0) {\n return false;\n }\n\n return true;\n }\n\n function maybeLoc(location, fallback) {\n if (hasSpan(location)) {\n return loc(location);\n } else {\n return fallback;\n }\n }\n\n var GlimmerComment = /*#__PURE__*/function (_node$fields8) {\n (0, _emberBabel.inheritsLoose)(GlimmerComment, _node$fields8);\n\n function GlimmerComment() {\n return _node$fields8.apply(this, arguments) || this;\n }\n\n return GlimmerComment;\n }(node('GlimmerComment').fields());\n\n var HtmlText = /*#__PURE__*/function (_node$fields9) {\n (0, _emberBabel.inheritsLoose)(HtmlText, _node$fields9);\n\n function HtmlText() {\n return _node$fields9.apply(this, arguments) || this;\n }\n\n return HtmlText;\n }(node('HtmlText').fields());\n\n var HtmlComment = /*#__PURE__*/function (_node$fields10) {\n (0, _emberBabel.inheritsLoose)(HtmlComment, _node$fields10);\n\n function HtmlComment() {\n return _node$fields10.apply(this, arguments) || this;\n }\n\n return HtmlComment;\n }(node('HtmlComment').fields());\n\n var AppendContent = /*#__PURE__*/function (_node$fields11) {\n (0, _emberBabel.inheritsLoose)(AppendContent, _node$fields11);\n\n function AppendContent() {\n return _node$fields11.apply(this, arguments) || this;\n }\n\n (0, _emberBabel.createClass)(AppendContent, [{\n key: \"callee\",\n get: function get() {\n if (this.value.type === 'Call') {\n return this.value.callee;\n } else {\n return this.value;\n }\n }\n }, {\n key: \"args\",\n get: function get() {\n if (this.value.type === 'Call') {\n return this.value.args;\n } else {\n return Args.empty(this.value.loc.collapse('end'));\n }\n }\n }]);\n return AppendContent;\n }(node('AppendContent').fields());\n\n var InvokeBlock = /*#__PURE__*/function (_node$fields12) {\n (0, _emberBabel.inheritsLoose)(InvokeBlock, _node$fields12);\n\n function InvokeBlock() {\n return _node$fields12.apply(this, arguments) || this;\n }\n\n return InvokeBlock;\n }(node('InvokeBlock').fields());\n /**\n * Corresponds to a component invocation. When the content of a component invocation contains no\n * named blocks, `blocks` contains a single named block named `\"default\"`. When a component\n * invocation is self-closing, `blocks` is empty.\n */\n\n\n var InvokeComponent = /*#__PURE__*/function (_node$fields13) {\n (0, _emberBabel.inheritsLoose)(InvokeComponent, _node$fields13);\n\n function InvokeComponent() {\n return _node$fields13.apply(this, arguments) || this;\n }\n\n (0, _emberBabel.createClass)(InvokeComponent, [{\n key: \"args\",\n get: function get() {\n var entries = this.componentArgs.map(function (a) {\n return a.toNamedArgument();\n });\n return Args.named(new NamedArguments({\n loc: SpanList.range(entries, this.callee.loc.collapse('end')),\n entries: entries\n }));\n }\n }]);\n return InvokeComponent;\n }(node('InvokeComponent').fields());\n /**\n * Corresponds to a simple HTML element. The AST allows component arguments and modifiers to support\n * future extensions.\n */\n\n\n var SimpleElement = /*#__PURE__*/function (_node$fields14) {\n (0, _emberBabel.inheritsLoose)(SimpleElement, _node$fields14);\n\n function SimpleElement() {\n return _node$fields14.apply(this, arguments) || this;\n }\n\n (0, _emberBabel.createClass)(SimpleElement, [{\n key: \"args\",\n get: function get() {\n var entries = this.componentArgs.map(function (a) {\n return a.toNamedArgument();\n });\n return Args.named(new NamedArguments({\n loc: SpanList.range(entries, this.tag.loc.collapse('end')),\n entries: entries\n }));\n }\n }]);\n return SimpleElement;\n }(node('SimpleElement').fields());\n /**\n * Corresponds to a Handlebars literal.\n *\n * @see {LiteralValue}\n */\n\n\n var LiteralExpression = /*#__PURE__*/function (_node$fields15) {\n (0, _emberBabel.inheritsLoose)(LiteralExpression, _node$fields15);\n\n function LiteralExpression() {\n return _node$fields15.apply(this, arguments) || this;\n }\n\n var _proto21 = LiteralExpression.prototype;\n\n _proto21.toSlice = function toSlice() {\n return new SourceSlice({\n loc: this.loc,\n chars: this.value\n });\n };\n\n return LiteralExpression;\n }(node('Literal').fields());\n /**\n * Returns true if an input {@see ExpressionNode} is a literal.\n */\n\n\n function isLiteral(node$$1, kind) {\n if (node$$1.type === 'Literal') {\n if (kind === undefined) {\n return true;\n } else if (kind === 'null') {\n return node$$1.value === null;\n } else {\n return typeof node$$1.value === kind;\n }\n } else {\n return false;\n }\n }\n /**\n * Corresponds to a path in expression position.\n *\n * ```hbs\n * this\n * this.x\n * @x\n * @x.y\n * x\n * x.y\n * ```\n */\n\n\n var PathExpression = /*#__PURE__*/function (_node$fields16) {\n (0, _emberBabel.inheritsLoose)(PathExpression, _node$fields16);\n\n function PathExpression() {\n return _node$fields16.apply(this, arguments) || this;\n }\n\n return PathExpression;\n }(node('Path').fields());\n /**\n * Corresponds to a parenthesized call expression.\n *\n * ```hbs\n * (x)\n * (x.y)\n * (x y)\n * (x.y z)\n * ```\n */\n\n\n var CallExpression = /*#__PURE__*/function (_node$fields17) {\n (0, _emberBabel.inheritsLoose)(CallExpression, _node$fields17);\n\n function CallExpression() {\n return _node$fields17.apply(this, arguments) || this;\n }\n\n return CallExpression;\n }(node('Call').fields());\n /**\n * Corresponds to a possible deprecated helper call. Must be:\n *\n * 1. A free variable (not this.foo, not @foo, not local).\n * 2. Argument-less.\n * 3. In a component invocation's named argument position.\n * 4. Not parenthesized (not @bar={{(helper)}}).\n * 5. Not interpolated (not @bar=\"{{helper}}\").\n *\n * ```hbs\n * <Foo @bar={{helper}} />\n * ```\n */\n\n\n var DeprecatedCallExpression = /*#__PURE__*/function (_node$fields18) {\n (0, _emberBabel.inheritsLoose)(DeprecatedCallExpression, _node$fields18);\n\n function DeprecatedCallExpression() {\n return _node$fields18.apply(this, arguments) || this;\n }\n\n return DeprecatedCallExpression;\n }(node('DeprecatedCall').fields());\n /**\n * Corresponds to an interpolation in attribute value position.\n *\n * ```hbs\n * <a href=\"{{url}}.html\"\n * ```\n */\n\n\n var InterpolateExpression = /*#__PURE__*/function (_node$fields19) {\n (0, _emberBabel.inheritsLoose)(InterpolateExpression, _node$fields19);\n\n function InterpolateExpression() {\n return _node$fields19.apply(this, arguments) || this;\n }\n\n return InterpolateExpression;\n }(node('Interpolate').fields());\n /**\n * Corresponds to `this` at the head of an expression.\n */\n\n\n var ThisReference = /*#__PURE__*/function (_node$fields20) {\n (0, _emberBabel.inheritsLoose)(ThisReference, _node$fields20);\n\n function ThisReference() {\n return _node$fields20.apply(this, arguments) || this;\n }\n\n return ThisReference;\n }(node('This').fields());\n /**\n * Corresponds to `@<ident>` at the beginning of an expression.\n */\n\n\n var ArgReference = /*#__PURE__*/function (_node$fields21) {\n (0, _emberBabel.inheritsLoose)(ArgReference, _node$fields21);\n\n function ArgReference() {\n return _node$fields21.apply(this, arguments) || this;\n }\n\n return ArgReference;\n }(node('Arg').fields());\n /**\n * Corresponds to `<ident>` at the beginning of an expression, when `<ident>` is in the current\n * block's scope.\n */\n\n\n var LocalVarReference = /*#__PURE__*/function (_node$fields22) {\n (0, _emberBabel.inheritsLoose)(LocalVarReference, _node$fields22);\n\n function LocalVarReference() {\n return _node$fields22.apply(this, arguments) || this;\n }\n\n return LocalVarReference;\n }(node('Local').fields());\n /**\n * Corresponds to `<ident>` at the beginning of an expression, when `<ident>` is *not* in the\n * current block's scope.\n *\n * The `resolution: FreeVarResolution` field describes how to resolve the free variable.\n *\n * Note: In strict mode, it must always be a variable that is in a concrete JavaScript scope that\n * the template will be installed into.\n */\n\n\n var FreeVarReference = /*#__PURE__*/function (_node$fields23) {\n (0, _emberBabel.inheritsLoose)(FreeVarReference, _node$fields23);\n\n function FreeVarReference() {\n return _node$fields23.apply(this, arguments) || this;\n }\n\n return FreeVarReference;\n }(node('Free').fields());\n /**\n * Corresponds to an entire template.\n */\n\n\n var Template = /*#__PURE__*/function (_node$fields24) {\n (0, _emberBabel.inheritsLoose)(Template, _node$fields24);\n\n function Template() {\n return _node$fields24.apply(this, arguments) || this;\n }\n\n return Template;\n }(node().fields());\n /**\n * Represents a block. In principle this could be merged with `NamedBlock`, because all cases\n * involving blocks have at least a notional name.\n */\n\n\n var Block = /*#__PURE__*/function (_node$fields25) {\n (0, _emberBabel.inheritsLoose)(Block, _node$fields25);\n\n function Block() {\n return _node$fields25.apply(this, arguments) || this;\n }\n\n return Block;\n }(node().fields());\n /**\n * Corresponds to a collection of named blocks.\n */\n\n\n var NamedBlocks = /*#__PURE__*/function (_node$fields26) {\n (0, _emberBabel.inheritsLoose)(NamedBlocks, _node$fields26);\n\n function NamedBlocks() {\n return _node$fields26.apply(this, arguments) || this;\n }\n\n var _proto22 = NamedBlocks.prototype;\n\n _proto22.get = function get(name) {\n return this.blocks.filter(function (block) {\n return block.name.chars === name;\n })[0] || null;\n };\n\n return NamedBlocks;\n }(node().fields());\n /**\n * Corresponds to a single named block. This is used for anonymous named blocks (`default` and\n * `else`).\n */\n\n\n var NamedBlock = /*#__PURE__*/function (_node$fields27) {\n (0, _emberBabel.inheritsLoose)(NamedBlock, _node$fields27);\n\n function NamedBlock() {\n return _node$fields27.apply(this, arguments) || this;\n }\n\n (0, _emberBabel.createClass)(NamedBlock, [{\n key: \"args\",\n get: function get() {\n var entries = this.componentArgs.map(function (a) {\n return a.toNamedArgument();\n });\n return Args.named(new NamedArguments({\n loc: SpanList.range(entries, this.name.loc.collapse('end')),\n entries: entries\n }));\n }\n }]);\n return NamedBlock;\n }(node().fields());\n\n var api$1 = /*#__PURE__*/Object.freeze({\n StrictResolution: StrictResolution,\n STRICT_RESOLUTION: STRICT_RESOLUTION,\n LooseModeResolution: LooseModeResolution,\n ARGUMENT_RESOLUTION: ARGUMENT_RESOLUTION,\n loadResolution: loadResolution,\n node: node,\n Args: Args,\n PositionalArguments: PositionalArguments,\n NamedArguments: NamedArguments,\n NamedArgument: NamedArgument,\n HtmlAttr: HtmlAttr,\n SplatAttr: SplatAttr,\n ComponentArg: ComponentArg,\n ElementModifier: ElementModifier,\n GlimmerComment: GlimmerComment,\n HtmlText: HtmlText,\n HtmlComment: HtmlComment,\n AppendContent: AppendContent,\n InvokeBlock: InvokeBlock,\n InvokeComponent: InvokeComponent,\n SimpleElement: SimpleElement,\n LiteralExpression: LiteralExpression,\n isLiteral: isLiteral,\n PathExpression: PathExpression,\n CallExpression: CallExpression,\n DeprecatedCallExpression: DeprecatedCallExpression,\n InterpolateExpression: InterpolateExpression,\n ThisReference: ThisReference,\n ArgReference: ArgReference,\n LocalVarReference: LocalVarReference,\n FreeVarReference: FreeVarReference,\n Template: Template,\n Block: Block,\n NamedBlocks: NamedBlocks,\n NamedBlock: NamedBlock\n });\n _exports.ASTv2 = api$1;\n var ATTR_VALUE_REGEX_TEST = /[\\xA0\"&]/;\n var ATTR_VALUE_REGEX_REPLACE = new RegExp(ATTR_VALUE_REGEX_TEST.source, 'g');\n var TEXT_REGEX_TEST = /[\\xA0&<>]/;\n var TEXT_REGEX_REPLACE = new RegExp(TEXT_REGEX_TEST.source, 'g');\n\n function attrValueReplacer(char) {\n switch (char.charCodeAt(0)) {\n case 160\n /* NBSP */\n :\n return '&nbsp;';\n\n case 34\n /* QUOT */\n :\n return '&quot;';\n\n case 38\n /* AMP */\n :\n return '&amp;';\n\n default:\n return char;\n }\n }\n\n function textReplacer(char) {\n switch (char.charCodeAt(0)) {\n case 160\n /* NBSP */\n :\n return '&nbsp;';\n\n case 38\n /* AMP */\n :\n return '&amp;';\n\n case 60\n /* LT */\n :\n return '&lt;';\n\n case 62\n /* GT */\n :\n return '&gt;';\n\n default:\n return char;\n }\n }\n\n function escapeAttrValue(attrValue) {\n if (ATTR_VALUE_REGEX_TEST.test(attrValue)) {\n return attrValue.replace(ATTR_VALUE_REGEX_REPLACE, attrValueReplacer);\n }\n\n return attrValue;\n }\n\n function escapeText(text) {\n if (TEXT_REGEX_TEST.test(text)) {\n return text.replace(TEXT_REGEX_REPLACE, textReplacer);\n }\n\n return text;\n }\n\n function sortByLoc(a, b) {\n // If either is invisible, don't try to order them\n if (a.loc.isInvisible || b.loc.isInvisible) {\n return 0;\n }\n\n if (a.loc.startPosition.line < b.loc.startPosition.line) {\n return -1;\n }\n\n if (a.loc.startPosition.line === b.loc.startPosition.line && a.loc.startPosition.column < b.loc.startPosition.column) {\n return -1;\n }\n\n if (a.loc.startPosition.line === b.loc.startPosition.line && a.loc.startPosition.column === b.loc.startPosition.column) {\n return 0;\n }\n\n return 1;\n }\n\n var voidMap = Object.create(null);\n var voidTagNames = 'area base br col command embed hr img input keygen link meta param source track wbr';\n voidTagNames.split(' ').forEach(function (tagName) {\n voidMap[tagName] = true;\n });\n var NON_WHITESPACE = /\\S/;\n\n var Printer = /*#__PURE__*/function () {\n function Printer(options) {\n this.buffer = '';\n this.options = options;\n }\n /*\n This is used by _all_ methods on this Printer class that add to `this.buffer`,\n it allows consumers of the printer to use alternate string representations for\n a given node.\n The primary use case for this are things like source -> source codemod utilities.\n For example, ember-template-recast attempts to always preserve the original string\n formatting in each AST node if no modifications are made to it.\n */\n\n\n var _proto23 = Printer.prototype;\n\n _proto23.handledByOverride = function handledByOverride(node, ensureLeadingWhitespace) {\n if (ensureLeadingWhitespace === void 0) {\n ensureLeadingWhitespace = false;\n }\n\n if (this.options.override !== undefined) {\n var result = this.options.override(node, this.options);\n\n if (typeof result === 'string') {\n if (ensureLeadingWhitespace && result !== '' && NON_WHITESPACE.test(result[0])) {\n result = \" \" + result;\n }\n\n this.buffer += result;\n return true;\n }\n }\n\n return false;\n };\n\n _proto23.Node = function Node(node) {\n switch (node.type) {\n case 'MustacheStatement':\n case 'BlockStatement':\n case 'PartialStatement':\n case 'MustacheCommentStatement':\n case 'CommentStatement':\n case 'TextNode':\n case 'ElementNode':\n case 'AttrNode':\n case 'Block':\n case 'Template':\n return this.TopLevelStatement(node);\n\n case 'StringLiteral':\n case 'BooleanLiteral':\n case 'NumberLiteral':\n case 'UndefinedLiteral':\n case 'NullLiteral':\n case 'PathExpression':\n case 'SubExpression':\n return this.Expression(node);\n\n case 'Program':\n return this.Block(node);\n\n case 'ConcatStatement':\n // should have an AttrNode parent\n return this.ConcatStatement(node);\n\n case 'Hash':\n return this.Hash(node);\n\n case 'HashPair':\n return this.HashPair(node);\n\n case 'ElementModifierStatement':\n return this.ElementModifierStatement(node);\n }\n };\n\n _proto23.Expression = function Expression(expression) {\n switch (expression.type) {\n case 'StringLiteral':\n case 'BooleanLiteral':\n case 'NumberLiteral':\n case 'UndefinedLiteral':\n case 'NullLiteral':\n return this.Literal(expression);\n\n case 'PathExpression':\n return this.PathExpression(expression);\n\n case 'SubExpression':\n return this.SubExpression(expression);\n }\n };\n\n _proto23.Literal = function Literal(literal) {\n switch (literal.type) {\n case 'StringLiteral':\n return this.StringLiteral(literal);\n\n case 'BooleanLiteral':\n return this.BooleanLiteral(literal);\n\n case 'NumberLiteral':\n return this.NumberLiteral(literal);\n\n case 'UndefinedLiteral':\n return this.UndefinedLiteral(literal);\n\n case 'NullLiteral':\n return this.NullLiteral(literal);\n }\n };\n\n _proto23.TopLevelStatement = function TopLevelStatement(statement) {\n switch (statement.type) {\n case 'MustacheStatement':\n return this.MustacheStatement(statement);\n\n case 'BlockStatement':\n return this.BlockStatement(statement);\n\n case 'PartialStatement':\n return this.PartialStatement(statement);\n\n case 'MustacheCommentStatement':\n return this.MustacheCommentStatement(statement);\n\n case 'CommentStatement':\n return this.CommentStatement(statement);\n\n case 'TextNode':\n return this.TextNode(statement);\n\n case 'ElementNode':\n return this.ElementNode(statement);\n\n case 'Block':\n case 'Template':\n return this.Block(statement);\n\n case 'AttrNode':\n // should have element\n return this.AttrNode(statement);\n }\n };\n\n _proto23.Block = function Block(block) {\n /*\n When processing a template like:\n ```hbs\n {{#if whatever}}\n whatever\n {{else if somethingElse}}\n something else\n {{else}}\n fallback\n {{/if}}\n ```\n The AST still _effectively_ looks like:\n ```hbs\n {{#if whatever}}\n whatever\n {{else}}{{#if somethingElse}}\n something else\n {{else}}\n fallback\n {{/if}}{{/if}}\n ```\n The only way we can tell if that is the case is by checking for\n `block.chained`, but unfortunately when the actual statements are\n processed the `block.body[0]` node (which will always be a\n `BlockStatement`) has no clue that its ancestor `Block` node was\n chained.\n This \"forwards\" the `chained` setting so that we can check\n it later when processing the `BlockStatement`.\n */\n if (block.chained) {\n var firstChild = block.body[0];\n firstChild.chained = true;\n }\n\n if (this.handledByOverride(block)) {\n return;\n }\n\n this.TopLevelStatements(block.body);\n };\n\n _proto23.TopLevelStatements = function TopLevelStatements(statements) {\n var _this2 = this;\n\n statements.forEach(function (statement) {\n return _this2.TopLevelStatement(statement);\n });\n };\n\n _proto23.ElementNode = function ElementNode(el) {\n if (this.handledByOverride(el)) {\n return;\n }\n\n this.OpenElementNode(el);\n this.TopLevelStatements(el.children);\n this.CloseElementNode(el);\n };\n\n _proto23.OpenElementNode = function OpenElementNode(el) {\n this.buffer += \"<\" + el.tag;\n var parts = [].concat(el.attributes, el.modifiers, el.comments).sort(sortByLoc);\n\n for (var _iterator2 = (0, _emberBabel.createForOfIteratorHelperLoose)(parts), _step2; !(_step2 = _iterator2()).done;) {\n var _part = _step2.value;\n this.buffer += ' ';\n\n switch (_part.type) {\n case 'AttrNode':\n this.AttrNode(_part);\n break;\n\n case 'ElementModifierStatement':\n this.ElementModifierStatement(_part);\n break;\n\n case 'MustacheCommentStatement':\n this.MustacheCommentStatement(_part);\n break;\n }\n }\n\n if (el.blockParams.length) {\n this.BlockParams(el.blockParams);\n }\n\n if (el.selfClosing) {\n this.buffer += ' /';\n }\n\n this.buffer += '>';\n };\n\n _proto23.CloseElementNode = function CloseElementNode(el) {\n if (el.selfClosing || voidMap[el.tag.toLowerCase()]) {\n return;\n }\n\n this.buffer += \"</\" + el.tag + \">\";\n };\n\n _proto23.AttrNode = function AttrNode(attr) {\n if (this.handledByOverride(attr)) {\n return;\n }\n\n var name = attr.name,\n value = attr.value;\n this.buffer += name;\n\n if (value.type !== 'TextNode' || value.chars.length > 0) {\n this.buffer += '=';\n this.AttrNodeValue(value);\n }\n };\n\n _proto23.AttrNodeValue = function AttrNodeValue(value) {\n if (value.type === 'TextNode') {\n this.buffer += '\"';\n this.TextNode(value, true);\n this.buffer += '\"';\n } else {\n this.Node(value);\n }\n };\n\n _proto23.TextNode = function TextNode(text, isAttr) {\n if (this.handledByOverride(text)) {\n return;\n }\n\n if (this.options.entityEncoding === 'raw') {\n this.buffer += text.chars;\n } else if (isAttr) {\n this.buffer += escapeAttrValue(text.chars);\n } else {\n this.buffer += escapeText(text.chars);\n }\n };\n\n _proto23.MustacheStatement = function MustacheStatement(mustache) {\n if (this.handledByOverride(mustache)) {\n return;\n }\n\n this.buffer += mustache.escaped ? '{{' : '{{{';\n\n if (mustache.strip.open) {\n this.buffer += '~';\n }\n\n this.Expression(mustache.path);\n this.Params(mustache.params);\n this.Hash(mustache.hash);\n\n if (mustache.strip.close) {\n this.buffer += '~';\n }\n\n this.buffer += mustache.escaped ? '}}' : '}}}';\n };\n\n _proto23.BlockStatement = function BlockStatement(block) {\n if (this.handledByOverride(block)) {\n return;\n }\n\n if (block.chained) {\n this.buffer += block.inverseStrip.open ? '{{~' : '{{';\n this.buffer += 'else ';\n } else {\n this.buffer += block.openStrip.open ? '{{~#' : '{{#';\n }\n\n this.Expression(block.path);\n this.Params(block.params);\n this.Hash(block.hash);\n\n if (block.program.blockParams.length) {\n this.BlockParams(block.program.blockParams);\n }\n\n if (block.chained) {\n this.buffer += block.inverseStrip.close ? '~}}' : '}}';\n } else {\n this.buffer += block.openStrip.close ? '~}}' : '}}';\n }\n\n this.Block(block.program);\n\n if (block.inverse) {\n if (!block.inverse.chained) {\n this.buffer += block.inverseStrip.open ? '{{~' : '{{';\n this.buffer += 'else';\n this.buffer += block.inverseStrip.close ? '~}}' : '}}';\n }\n\n this.Block(block.inverse);\n }\n\n if (!block.chained) {\n this.buffer += block.closeStrip.open ? '{{~/' : '{{/';\n this.Expression(block.path);\n this.buffer += block.closeStrip.close ? '~}}' : '}}';\n }\n };\n\n _proto23.BlockParams = function BlockParams(blockParams) {\n this.buffer += \" as |\" + blockParams.join(' ') + \"|\";\n };\n\n _proto23.PartialStatement = function PartialStatement(partial) {\n if (this.handledByOverride(partial)) {\n return;\n }\n\n this.buffer += '{{>';\n this.Expression(partial.name);\n this.Params(partial.params);\n this.Hash(partial.hash);\n this.buffer += '}}';\n };\n\n _proto23.ConcatStatement = function ConcatStatement(concat) {\n var _this3 = this;\n\n if (this.handledByOverride(concat)) {\n return;\n }\n\n this.buffer += '\"';\n concat.parts.forEach(function (part) {\n if (part.type === 'TextNode') {\n _this3.TextNode(part, true);\n } else {\n _this3.Node(part);\n }\n });\n this.buffer += '\"';\n };\n\n _proto23.MustacheCommentStatement = function MustacheCommentStatement(comment) {\n if (this.handledByOverride(comment)) {\n return;\n }\n\n this.buffer += \"{{!--\" + comment.value + \"--}}\";\n };\n\n _proto23.ElementModifierStatement = function ElementModifierStatement(mod) {\n if (this.handledByOverride(mod)) {\n return;\n }\n\n this.buffer += '{{';\n this.Expression(mod.path);\n this.Params(mod.params);\n this.Hash(mod.hash);\n this.buffer += '}}';\n };\n\n _proto23.CommentStatement = function CommentStatement(comment) {\n if (this.handledByOverride(comment)) {\n return;\n }\n\n this.buffer += \"<!--\" + comment.value + \"-->\";\n };\n\n _proto23.PathExpression = function PathExpression(path) {\n if (this.handledByOverride(path)) {\n return;\n }\n\n this.buffer += path.original;\n };\n\n _proto23.SubExpression = function SubExpression(sexp) {\n if (this.handledByOverride(sexp)) {\n return;\n }\n\n this.buffer += '(';\n this.Expression(sexp.path);\n this.Params(sexp.params);\n this.Hash(sexp.hash);\n this.buffer += ')';\n };\n\n _proto23.Params = function Params(params) {\n var _this4 = this;\n\n // TODO: implement a top level Params AST node (just like the Hash object)\n // so that this can also be overridden\n if (params.length) {\n params.forEach(function (param) {\n _this4.buffer += ' ';\n\n _this4.Expression(param);\n });\n }\n };\n\n _proto23.Hash = function Hash(hash) {\n var _this5 = this;\n\n if (this.handledByOverride(hash, true)) {\n return;\n }\n\n hash.pairs.forEach(function (pair) {\n _this5.buffer += ' ';\n\n _this5.HashPair(pair);\n });\n };\n\n _proto23.HashPair = function HashPair(pair) {\n if (this.handledByOverride(pair)) {\n return;\n }\n\n this.buffer += pair.key;\n this.buffer += '=';\n this.Node(pair.value);\n };\n\n _proto23.StringLiteral = function StringLiteral(str) {\n if (this.handledByOverride(str)) {\n return;\n }\n\n this.buffer += JSON.stringify(str.value);\n };\n\n _proto23.BooleanLiteral = function BooleanLiteral(bool) {\n if (this.handledByOverride(bool)) {\n return;\n }\n\n this.buffer += bool.value;\n };\n\n _proto23.NumberLiteral = function NumberLiteral(number) {\n if (this.handledByOverride(number)) {\n return;\n }\n\n this.buffer += number.value;\n };\n\n _proto23.UndefinedLiteral = function UndefinedLiteral(node) {\n if (this.handledByOverride(node)) {\n return;\n }\n\n this.buffer += 'undefined';\n };\n\n _proto23.NullLiteral = function NullLiteral(node) {\n if (this.handledByOverride(node)) {\n return;\n }\n\n this.buffer += 'null';\n };\n\n _proto23.print = function print(node) {\n var options = this.options;\n\n if (options.override) {\n var result = options.override(node, options);\n\n if (result !== undefined) {\n return result;\n }\n }\n\n this.buffer = '';\n this.Node(node);\n return this.buffer;\n };\n\n return Printer;\n }();\n\n function build(ast, options) {\n if (options === void 0) {\n options = {\n entityEncoding: 'transformed'\n };\n }\n\n if (!ast) {\n return '';\n }\n\n var printer = new Printer(options);\n return printer.print(ast);\n }\n\n function generateSyntaxError(message, location) {\n var module = location.module,\n loc = location.loc;\n var _loc$start = loc.start,\n line = _loc$start.line,\n column = _loc$start.column;\n var code = location.asString();\n var quotedCode = code ? \"\\n\\n|\\n| \" + code.split('\\n').join('\\n| ') + \"\\n|\\n\\n\" : '';\n var error = new Error(message + \": \" + quotedCode + \"(error occurred in '\" + module + \"' @ line \" + line + \" : column \" + column + \")\");\n error.name = 'SyntaxError';\n error.location = location;\n error.code = code;\n return error;\n } // ParentNode and ChildKey types are derived from VisitorKeysMap\n\n\n var visitorKeys = {\n Program: (0, _util.tuple)('body'),\n Template: (0, _util.tuple)('body'),\n Block: (0, _util.tuple)('body'),\n MustacheStatement: (0, _util.tuple)('path', 'params', 'hash'),\n BlockStatement: (0, _util.tuple)('path', 'params', 'hash', 'program', 'inverse'),\n ElementModifierStatement: (0, _util.tuple)('path', 'params', 'hash'),\n PartialStatement: (0, _util.tuple)('name', 'params', 'hash'),\n CommentStatement: (0, _util.tuple)(),\n MustacheCommentStatement: (0, _util.tuple)(),\n ElementNode: (0, _util.tuple)('attributes', 'modifiers', 'children', 'comments'),\n AttrNode: (0, _util.tuple)('value'),\n TextNode: (0, _util.tuple)(),\n ConcatStatement: (0, _util.tuple)('parts'),\n SubExpression: (0, _util.tuple)('path', 'params', 'hash'),\n PathExpression: (0, _util.tuple)(),\n PathHead: (0, _util.tuple)(),\n StringLiteral: (0, _util.tuple)(),\n BooleanLiteral: (0, _util.tuple)(),\n NumberLiteral: (0, _util.tuple)(),\n NullLiteral: (0, _util.tuple)(),\n UndefinedLiteral: (0, _util.tuple)(),\n Hash: (0, _util.tuple)('pairs'),\n HashPair: (0, _util.tuple)('value'),\n // v2 new nodes\n NamedBlock: (0, _util.tuple)('attributes', 'modifiers', 'children', 'comments'),\n SimpleElement: (0, _util.tuple)('attributes', 'modifiers', 'children', 'comments'),\n Component: (0, _util.tuple)('head', 'attributes', 'modifiers', 'children', 'comments')\n };\n\n var TraversalError = function () {\n TraversalError.prototype = Object.create(Error.prototype);\n TraversalError.prototype.constructor = TraversalError;\n\n function TraversalError(message, node, parent, key) {\n var error = Error.call(this, message);\n this.key = key;\n this.message = message;\n this.node = node;\n this.parent = parent;\n this.stack = error.stack;\n }\n\n return TraversalError;\n }();\n\n function cannotRemoveNode(node, parent, key) {\n return new TraversalError('Cannot remove a node unless it is part of an array', node, parent, key);\n }\n\n function cannotReplaceNode(node, parent, key) {\n return new TraversalError('Cannot replace a node with multiple nodes unless it is part of an array', node, parent, key);\n }\n\n function cannotReplaceOrRemoveInKeyHandlerYet(node, key) {\n return new TraversalError('Replacing and removing in key handlers is not yet supported.', node, null, key);\n }\n\n var WalkerPath = /*#__PURE__*/function () {\n function WalkerPath(node, parent, parentKey) {\n if (parent === void 0) {\n parent = null;\n }\n\n if (parentKey === void 0) {\n parentKey = null;\n }\n\n this.node = node;\n this.parent = parent;\n this.parentKey = parentKey;\n }\n\n var _proto24 = WalkerPath.prototype;\n\n _proto24.parents = function parents() {\n var _this6 = this,\n _ref15;\n\n return _ref15 = {}, _ref15[Symbol.iterator] = function () {\n return new PathParentsIterator(_this6);\n }, _ref15;\n };\n\n (0, _emberBabel.createClass)(WalkerPath, [{\n key: \"parentNode\",\n get: function get() {\n return this.parent ? this.parent.node : null;\n }\n }]);\n return WalkerPath;\n }();\n\n _exports.WalkerPath = WalkerPath;\n\n var PathParentsIterator = /*#__PURE__*/function () {\n function PathParentsIterator(path) {\n this.path = path;\n }\n\n var _proto25 = PathParentsIterator.prototype;\n\n _proto25.next = function next() {\n if (this.path.parent) {\n this.path = this.path.parent;\n return {\n done: false,\n value: this.path\n };\n } else {\n return {\n done: true,\n value: null\n };\n }\n };\n\n return PathParentsIterator;\n }();\n\n function getEnterFunction(handler) {\n if (typeof handler === 'function') {\n return handler;\n } else {\n return handler.enter;\n }\n }\n\n function getExitFunction(handler) {\n if (typeof handler === 'function') {\n return undefined;\n } else {\n return handler.exit;\n }\n }\n\n function getKeyHandler(handler, key) {\n var keyVisitor = typeof handler !== 'function' ? handler.keys : undefined;\n if (keyVisitor === undefined) return;\n var keyHandler = keyVisitor[key];\n\n if (keyHandler !== undefined) {\n return keyHandler;\n }\n\n return keyVisitor.All;\n }\n\n function getNodeHandler(visitor, nodeType) {\n if (nodeType === 'Template' || nodeType === 'Block') {\n if (visitor.Program) {\n return visitor.Program;\n }\n }\n\n var handler = visitor[nodeType];\n\n if (handler !== undefined) {\n return handler;\n }\n\n return visitor.All;\n }\n\n function visitNode(visitor, path) {\n var node = path.node,\n parent = path.parent,\n parentKey = path.parentKey;\n var handler = getNodeHandler(visitor, node.type);\n var enter;\n var exit;\n\n if (handler !== undefined) {\n enter = getEnterFunction(handler);\n exit = getExitFunction(handler);\n }\n\n var result;\n\n if (enter !== undefined) {\n result = enter(node, path);\n }\n\n if (result !== undefined && result !== null) {\n if (JSON.stringify(node) === JSON.stringify(result)) {\n result = undefined;\n } else if (Array.isArray(result)) {\n visitArray(visitor, result, parent, parentKey);\n return result;\n } else {\n var _path = new WalkerPath(result, parent, parentKey);\n\n return visitNode(visitor, _path) || result;\n }\n }\n\n if (result === undefined) {\n var keys = visitorKeys[node.type];\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]; // we know if it has child keys we can widen to a ParentNode\n\n visitKey(visitor, handler, path, key);\n }\n\n if (exit !== undefined) {\n result = exit(node, path);\n }\n }\n\n return result;\n }\n\n function get(node, key) {\n return node[key];\n }\n\n function set(node, key, value) {\n node[key] = value;\n }\n\n function visitKey(visitor, handler, path, key) {\n var node = path.node;\n var value = get(node, key);\n\n if (!value) {\n return;\n }\n\n var keyEnter;\n var keyExit;\n\n if (handler !== undefined) {\n var keyHandler = getKeyHandler(handler, key);\n\n if (keyHandler !== undefined) {\n keyEnter = getEnterFunction(keyHandler);\n keyExit = getExitFunction(keyHandler);\n }\n }\n\n if (keyEnter !== undefined) {\n if (keyEnter(node, key) !== undefined) {\n throw cannotReplaceOrRemoveInKeyHandlerYet(node, key);\n }\n }\n\n if (Array.isArray(value)) {\n visitArray(visitor, value, path, key);\n } else {\n var keyPath = new WalkerPath(value, path, key);\n var result = visitNode(visitor, keyPath);\n\n if (result !== undefined) {\n // TODO: dynamically check the results by having a table of\n // expected node types in value space, not just type space\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n assignKey(node, key, value, result);\n }\n }\n\n if (keyExit !== undefined) {\n if (keyExit(node, key) !== undefined) {\n throw cannotReplaceOrRemoveInKeyHandlerYet(node, key);\n }\n }\n }\n\n function visitArray(visitor, array, parent, parentKey) {\n for (var i = 0; i < array.length; i++) {\n var _node = array[i];\n var path = new WalkerPath(_node, parent, parentKey);\n var result = visitNode(visitor, path);\n\n if (result !== undefined) {\n i += spliceArray(array, i, result) - 1;\n }\n }\n }\n\n function assignKey(node, key, value, result) {\n if (result === null) {\n throw cannotRemoveNode(value, node, key);\n } else if (Array.isArray(result)) {\n if (result.length === 1) {\n set(node, key, result[0]);\n } else {\n if (result.length === 0) {\n throw cannotRemoveNode(value, node, key);\n } else {\n throw cannotReplaceNode(value, node, key);\n }\n }\n } else {\n set(node, key, result);\n }\n }\n\n function spliceArray(array, index, result) {\n if (result === null) {\n array.splice(index, 1);\n return 0;\n } else if (Array.isArray(result)) {\n array.splice.apply(array, [index, 1].concat(result));\n return result.length;\n } else {\n array.splice(index, 1, result);\n return 1;\n }\n }\n\n function traverse(node, visitor) {\n var path = new WalkerPath(node);\n visitNode(visitor, path);\n }\n\n var Walker = /*#__PURE__*/function () {\n function Walker(order) {\n this.order = order;\n this.stack = [];\n }\n\n var _proto26 = Walker.prototype;\n\n _proto26.visit = function visit(node, callback) {\n if (!node) {\n return;\n }\n\n this.stack.push(node);\n\n if (this.order === 'post') {\n this.children(node, callback);\n callback(node, this);\n } else {\n callback(node, this);\n this.children(node, callback);\n }\n\n this.stack.pop();\n };\n\n _proto26.children = function children(node, callback) {\n switch (node.type) {\n case 'Block':\n case 'Template':\n return visitors.Program(this, node, callback);\n\n case 'ElementNode':\n return visitors.ElementNode(this, node, callback);\n\n case 'BlockStatement':\n return visitors.BlockStatement(this, node, callback);\n\n default:\n return;\n }\n };\n\n return Walker;\n }();\n\n _exports.Path = _exports.Walker = Walker;\n var visitors = {\n Program: function Program(walker, node, callback) {\n for (var i = 0; i < node.body.length; i++) {\n walker.visit(node.body[i], callback);\n }\n },\n Template: function Template(walker, node, callback) {\n for (var i = 0; i < node.body.length; i++) {\n walker.visit(node.body[i], callback);\n }\n },\n Block: function Block(walker, node, callback) {\n for (var i = 0; i < node.body.length; i++) {\n walker.visit(node.body[i], callback);\n }\n },\n ElementNode: function ElementNode(walker, node, callback) {\n for (var i = 0; i < node.children.length; i++) {\n walker.visit(node.children[i], callback);\n }\n },\n BlockStatement: function BlockStatement(walker, node, callback) {\n walker.visit(node.program, callback);\n walker.visit(node.inverse || null, callback);\n }\n }; // Based on the ID validation regex in Handlebars.\n\n var ID_INVERSE_PATTERN = /[!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]/; // Checks the element's attributes to see if it uses block params.\n // If it does, registers the block params with the program and\n // removes the corresponding attributes from the element.\n\n function parseElementBlockParams(element) {\n var params = parseBlockParams(element);\n if (params) element.blockParams = params;\n }\n\n function parseBlockParams(element) {\n var l = element.attributes.length;\n var attrNames = [];\n\n for (var i = 0; i < l; i++) {\n attrNames.push(element.attributes[i].name);\n }\n\n var asIndex = attrNames.indexOf('as');\n\n if (asIndex === -1 && attrNames.length > 0 && attrNames[attrNames.length - 1].charAt(0) === '|') {\n throw generateSyntaxError('Block parameters must be preceded by the `as` keyword, detected block parameters without `as`', element.loc);\n }\n\n if (asIndex !== -1 && l > asIndex && attrNames[asIndex + 1].charAt(0) === '|') {\n // Some basic validation, since we're doing the parsing ourselves\n var paramsString = attrNames.slice(asIndex).join(' ');\n\n if (paramsString.charAt(paramsString.length - 1) !== '|' || paramsString.match(/\\|/g).length !== 2) {\n throw generateSyntaxError(\"Invalid block parameters syntax, '\" + paramsString + \"'\", element.loc);\n }\n\n var params = [];\n\n for (var _i = asIndex + 1; _i < l; _i++) {\n var param = attrNames[_i].replace(/\\|/g, '');\n\n if (param !== '') {\n if (ID_INVERSE_PATTERN.test(param)) {\n throw generateSyntaxError(\"Invalid identifier for block parameters, '\" + param + \"'\", element.loc);\n }\n\n params.push(param);\n }\n }\n\n if (params.length === 0) {\n throw generateSyntaxError('Cannot use zero block parameters', element.loc);\n }\n\n element.attributes = element.attributes.slice(0, asIndex);\n return params;\n }\n\n return null;\n }\n\n function childrenFor(node) {\n switch (node.type) {\n case 'Block':\n case 'Template':\n return node.body;\n\n case 'ElementNode':\n return node.children;\n }\n }\n\n function appendChild(parent, node) {\n childrenFor(parent).push(node);\n }\n\n function isHBSLiteral(path) {\n return path.type === 'StringLiteral' || path.type === 'BooleanLiteral' || path.type === 'NumberLiteral' || path.type === 'NullLiteral' || path.type === 'UndefinedLiteral';\n }\n\n function printLiteral(literal) {\n if (literal.type === 'UndefinedLiteral') {\n return 'undefined';\n } else {\n return JSON.stringify(literal.value);\n }\n }\n\n function isUpperCase(tag) {\n return tag[0] === tag[0].toUpperCase() && tag[0] !== tag[0].toLowerCase();\n }\n\n function isLowerCase(tag) {\n return tag[0] === tag[0].toLowerCase() && tag[0] !== tag[0].toUpperCase();\n }\n\n var DEFAULT_STRIP = {\n close: false,\n open: false\n };\n /**\n * The Parser Builder differentiates from the public builder API by:\n *\n * 1. Offering fewer different ways to instantiate nodes\n * 2. Mandating source locations\n */\n\n var Builders = /*#__PURE__*/function () {\n function Builders() {}\n\n var _proto27 = Builders.prototype;\n\n _proto27.pos = function pos(line, column) {\n return {\n line: line,\n column: column\n };\n };\n\n _proto27.blockItself = function blockItself(_ref16) {\n var body = _ref16.body,\n blockParams = _ref16.blockParams,\n _ref16$chained = _ref16.chained,\n chained = _ref16$chained === void 0 ? false : _ref16$chained,\n loc = _ref16.loc;\n return {\n type: 'Block',\n body: body || [],\n blockParams: blockParams || [],\n chained: chained,\n loc: loc\n };\n };\n\n _proto27.template = function template(_ref17) {\n var body = _ref17.body,\n blockParams = _ref17.blockParams,\n loc = _ref17.loc;\n return {\n type: 'Template',\n body: body || [],\n blockParams: blockParams || [],\n loc: loc\n };\n };\n\n _proto27.mustache = function mustache(_ref18) {\n var path = _ref18.path,\n params = _ref18.params,\n hash = _ref18.hash,\n trusting = _ref18.trusting,\n loc = _ref18.loc,\n _ref18$strip = _ref18.strip,\n strip = _ref18$strip === void 0 ? DEFAULT_STRIP : _ref18$strip;\n return {\n type: 'MustacheStatement',\n path: path,\n params: params,\n hash: hash,\n escaped: !trusting,\n trusting: trusting,\n loc: loc,\n strip: strip || {\n open: false,\n close: false\n }\n };\n };\n\n _proto27.block = function block(_ref19) {\n var path = _ref19.path,\n params = _ref19.params,\n hash = _ref19.hash,\n defaultBlock = _ref19.defaultBlock,\n _ref19$elseBlock = _ref19.elseBlock,\n elseBlock = _ref19$elseBlock === void 0 ? null : _ref19$elseBlock,\n loc = _ref19.loc,\n _ref19$openStrip = _ref19.openStrip,\n openStrip = _ref19$openStrip === void 0 ? DEFAULT_STRIP : _ref19$openStrip,\n _ref19$inverseStrip = _ref19.inverseStrip,\n inverseStrip = _ref19$inverseStrip === void 0 ? DEFAULT_STRIP : _ref19$inverseStrip,\n _ref19$closeStrip = _ref19.closeStrip,\n closeStrip = _ref19$closeStrip === void 0 ? DEFAULT_STRIP : _ref19$closeStrip;\n return {\n type: 'BlockStatement',\n path: path,\n params: params,\n hash: hash,\n program: defaultBlock,\n inverse: elseBlock,\n loc: loc,\n openStrip: openStrip,\n inverseStrip: inverseStrip,\n closeStrip: closeStrip\n };\n };\n\n _proto27.comment = function comment(value, loc) {\n return {\n type: 'CommentStatement',\n value: value,\n loc: loc\n };\n };\n\n _proto27.mustacheComment = function mustacheComment(value, loc) {\n return {\n type: 'MustacheCommentStatement',\n value: value,\n loc: loc\n };\n };\n\n _proto27.concat = function concat(parts, loc) {\n return {\n type: 'ConcatStatement',\n parts: parts,\n loc: loc\n };\n };\n\n _proto27.element = function element(_ref20) {\n var tag = _ref20.tag,\n selfClosing = _ref20.selfClosing,\n attrs = _ref20.attrs,\n blockParams = _ref20.blockParams,\n modifiers = _ref20.modifiers,\n comments = _ref20.comments,\n children = _ref20.children,\n loc = _ref20.loc;\n return {\n type: 'ElementNode',\n tag: tag,\n selfClosing: selfClosing,\n attributes: attrs || [],\n blockParams: blockParams || [],\n modifiers: modifiers || [],\n comments: comments || [],\n children: children || [],\n loc: loc\n };\n };\n\n _proto27.elementModifier = function elementModifier(_ref21) {\n var path = _ref21.path,\n params = _ref21.params,\n hash = _ref21.hash,\n loc = _ref21.loc;\n return {\n type: 'ElementModifierStatement',\n path: path,\n params: params,\n hash: hash,\n loc: loc\n };\n };\n\n _proto27.attr = function attr(_ref22) {\n var name = _ref22.name,\n value = _ref22.value,\n loc = _ref22.loc;\n return {\n type: 'AttrNode',\n name: name,\n value: value,\n loc: loc\n };\n };\n\n _proto27.text = function text(_ref23) {\n var chars = _ref23.chars,\n loc = _ref23.loc;\n return {\n type: 'TextNode',\n chars: chars,\n loc: loc\n };\n };\n\n _proto27.sexpr = function sexpr(_ref24) {\n var path = _ref24.path,\n params = _ref24.params,\n hash = _ref24.hash,\n loc = _ref24.loc;\n return {\n type: 'SubExpression',\n path: path,\n params: params,\n hash: hash,\n loc: loc\n };\n };\n\n _proto27.path = function path(_ref25) {\n var head = _ref25.head,\n tail = _ref25.tail,\n loc = _ref25.loc;\n\n var _headToString$ = headToString$1(head),\n originalHead = _headToString$.original;\n\n var original = [].concat(originalHead, tail).join('.');\n return new PathExpressionImplV1(original, head, tail, loc);\n };\n\n _proto27.head = function head(_head2, loc) {\n if (_head2[0] === '@') {\n return this.atName(_head2, loc);\n } else if (_head2 === 'this') {\n return this.this(loc);\n } else {\n return this.var(_head2, loc);\n }\n };\n\n _proto27.this = function _this(loc) {\n return {\n type: 'ThisHead',\n loc: loc\n };\n };\n\n _proto27.atName = function atName(name, loc) {\n return {\n type: 'AtHead',\n name: name,\n loc: loc\n };\n };\n\n _proto27.var = function _var(name, loc) {\n return {\n type: 'VarHead',\n name: name,\n loc: loc\n };\n };\n\n _proto27.hash = function hash(pairs, loc) {\n return {\n type: 'Hash',\n pairs: pairs || [],\n loc: loc\n };\n };\n\n _proto27.pair = function pair(_ref26) {\n var key = _ref26.key,\n value = _ref26.value,\n loc = _ref26.loc;\n return {\n type: 'HashPair',\n key: key,\n value: value,\n loc: loc\n };\n };\n\n _proto27.literal = function literal(_ref27) {\n var type = _ref27.type,\n value = _ref27.value,\n loc = _ref27.loc;\n return {\n type: type,\n value: value,\n original: value,\n loc: loc\n };\n };\n\n _proto27.undefined = function (_undefined2) {\n function undefined() {\n return _undefined2.apply(this, arguments);\n }\n\n undefined.toString = function () {\n return _undefined2.toString();\n };\n\n return undefined;\n }(function () {\n return this.literal({\n type: 'UndefinedLiteral',\n value: undefined\n });\n });\n\n _proto27.null = function _null() {\n return this.literal({\n type: 'NullLiteral',\n value: null\n });\n };\n\n _proto27.string = function string(value, loc) {\n return this.literal({\n type: 'StringLiteral',\n value: value,\n loc: loc\n });\n };\n\n _proto27.boolean = function boolean(value, loc) {\n return this.literal({\n type: 'BooleanLiteral',\n value: value,\n loc: loc\n });\n };\n\n _proto27.number = function number(value, loc) {\n return this.literal({\n type: 'NumberLiteral',\n value: value,\n loc: loc\n });\n };\n\n return Builders;\n }(); // Expressions\n\n\n function headToString$1(head) {\n switch (head.type) {\n case 'AtHead':\n return {\n original: head.name,\n parts: [head.name]\n };\n\n case 'ThisHead':\n return {\n original: \"this\",\n parts: []\n };\n\n case 'VarHead':\n return {\n original: head.name,\n parts: [head.name]\n };\n }\n }\n\n var b = new Builders();\n\n var Parser = /*#__PURE__*/function () {\n function Parser(source, entityParser, mode) {\n if (entityParser === void 0) {\n entityParser = new _simpleHtmlTokenizer.EntityParser(_simpleHtmlTokenizer.HTML5NamedCharRefs);\n }\n\n if (mode === void 0) {\n mode = 'precompile';\n }\n\n this.elementStack = [];\n this.currentAttribute = null;\n this.currentNode = null;\n this.source = source;\n this.lines = source.source.split(/(?:\\r\\n?|\\n)/g);\n this.tokenizer = new _simpleHtmlTokenizer.EventedTokenizer(this, entityParser, mode);\n }\n\n var _proto28 = Parser.prototype;\n\n _proto28.offset = function offset() {\n var _this$tokenizer = this.tokenizer,\n line = _this$tokenizer.line,\n column = _this$tokenizer.column;\n return this.source.offsetFor(line, column);\n };\n\n _proto28.pos = function pos(_ref28) {\n var line = _ref28.line,\n column = _ref28.column;\n return this.source.offsetFor(line, column);\n };\n\n _proto28.finish = function finish(node) {\n return (0, _util.assign)({}, node, {\n loc: node.loc.until(this.offset())\n }); // node.loc = node.loc.withEnd(end);\n };\n\n _proto28.acceptTemplate = function acceptTemplate(node) {\n return this[node.type](node);\n };\n\n _proto28.acceptNode = function acceptNode(node) {\n return this[node.type](node);\n };\n\n _proto28.currentElement = function currentElement() {\n return this.elementStack[this.elementStack.length - 1];\n };\n\n _proto28.sourceForNode = function sourceForNode(node, endNode) {\n var firstLine = node.loc.start.line - 1;\n var currentLine = firstLine - 1;\n var firstColumn = node.loc.start.column;\n var string = [];\n var line;\n var lastLine;\n var lastColumn;\n\n if (endNode) {\n lastLine = endNode.loc.end.line - 1;\n lastColumn = endNode.loc.end.column;\n } else {\n lastLine = node.loc.end.line - 1;\n lastColumn = node.loc.end.column;\n }\n\n while (currentLine < lastLine) {\n currentLine++;\n line = this.lines[currentLine];\n\n if (currentLine === firstLine) {\n if (firstLine === lastLine) {\n string.push(line.slice(firstColumn, lastColumn));\n } else {\n string.push(line.slice(firstColumn));\n }\n } else if (currentLine === lastLine) {\n string.push(line.slice(0, lastColumn));\n } else {\n string.push(line);\n }\n }\n\n return string.join('\\n');\n };\n\n (0, _emberBabel.createClass)(Parser, [{\n key: \"currentAttr\",\n get: function get() {\n return this.currentAttribute;\n }\n }, {\n key: \"currentTag\",\n get: function get() {\n var node = this.currentNode;\n return node;\n }\n }, {\n key: \"currentStartTag\",\n get: function get() {\n var node = this.currentNode;\n return node;\n }\n }, {\n key: \"currentEndTag\",\n get: function get() {\n var node = this.currentNode;\n return node;\n }\n }, {\n key: \"currentComment\",\n get: function get() {\n var node = this.currentNode;\n return node;\n }\n }, {\n key: \"currentData\",\n get: function get() {\n var node = this.currentNode;\n return node;\n }\n }]);\n return Parser;\n }();\n\n var HandlebarsNodeVisitors = /*#__PURE__*/function (_Parser) {\n (0, _emberBabel.inheritsLoose)(HandlebarsNodeVisitors, _Parser);\n\n function HandlebarsNodeVisitors() {\n return _Parser.apply(this, arguments) || this;\n }\n\n var _proto29 = HandlebarsNodeVisitors.prototype;\n\n _proto29.Program = function Program(program) {\n var body = [];\n var node;\n\n if (this.isTopLevel) {\n node = b.template({\n body: body,\n blockParams: program.blockParams,\n loc: this.source.spanFor(program.loc)\n });\n } else {\n node = b.blockItself({\n body: body,\n blockParams: program.blockParams,\n chained: program.chained,\n loc: this.source.spanFor(program.loc)\n });\n }\n\n var i,\n l = program.body.length;\n this.elementStack.push(node);\n\n if (l === 0) {\n return this.elementStack.pop();\n }\n\n for (i = 0; i < l; i++) {\n this.acceptNode(program.body[i]);\n } // Ensure that that the element stack is balanced properly.\n\n\n var poppedNode = this.elementStack.pop();\n\n if (poppedNode !== node) {\n var elementNode = poppedNode;\n throw generateSyntaxError(\"Unclosed element `\" + elementNode.tag + \"`\", elementNode.loc);\n }\n\n return node;\n };\n\n _proto29.BlockStatement = function BlockStatement(block) {\n if (this.tokenizer.state === \"comment\"\n /* comment */\n ) {\n this.appendToCommentData(this.sourceForNode(block));\n return;\n }\n\n if (this.tokenizer.state !== \"data\"\n /* data */\n && this.tokenizer.state !== \"beforeData\"\n /* beforeData */\n ) {\n throw generateSyntaxError('A block may only be used inside an HTML element or another block.', this.source.spanFor(block.loc));\n }\n\n var _acceptCallNodes = acceptCallNodes(this, block),\n path = _acceptCallNodes.path,\n params = _acceptCallNodes.params,\n hash = _acceptCallNodes.hash; // These are bugs in Handlebars upstream\n\n\n if (!block.program.loc) {\n block.program.loc = NON_EXISTENT_LOCATION;\n }\n\n if (block.inverse && !block.inverse.loc) {\n block.inverse.loc = NON_EXISTENT_LOCATION;\n }\n\n var program = this.Program(block.program);\n var inverse = block.inverse ? this.Program(block.inverse) : null;\n var node = b.block({\n path: path,\n params: params,\n hash: hash,\n defaultBlock: program,\n elseBlock: inverse,\n loc: this.source.spanFor(block.loc),\n openStrip: block.openStrip,\n inverseStrip: block.inverseStrip,\n closeStrip: block.closeStrip\n });\n var parentProgram = this.currentElement();\n appendChild(parentProgram, node);\n };\n\n _proto29.MustacheStatement = function MustacheStatement(rawMustache) {\n var tokenizer = this.tokenizer;\n\n if (tokenizer.state === 'comment') {\n this.appendToCommentData(this.sourceForNode(rawMustache));\n return;\n }\n\n var mustache;\n var escaped = rawMustache.escaped,\n loc = rawMustache.loc,\n strip = rawMustache.strip;\n\n if (isHBSLiteral(rawMustache.path)) {\n mustache = b.mustache({\n path: this.acceptNode(rawMustache.path),\n params: [],\n hash: b.hash([], this.source.spanFor(rawMustache.path.loc).collapse('end')),\n trusting: !escaped,\n loc: this.source.spanFor(loc),\n strip: strip\n });\n } else {\n var _acceptCallNodes2 = acceptCallNodes(this, rawMustache),\n path = _acceptCallNodes2.path,\n params = _acceptCallNodes2.params,\n hash = _acceptCallNodes2.hash;\n\n mustache = b.mustache({\n path: path,\n params: params,\n hash: hash,\n trusting: !escaped,\n loc: this.source.spanFor(loc),\n strip: strip\n });\n }\n\n switch (tokenizer.state) {\n // Tag helpers\n case \"tagOpen\"\n /* tagOpen */\n :\n case \"tagName\"\n /* tagName */\n :\n throw generateSyntaxError(\"Cannot use mustaches in an elements tagname\", mustache.loc);\n\n case \"beforeAttributeName\"\n /* beforeAttributeName */\n :\n addElementModifier(this.currentStartTag, mustache);\n break;\n\n case \"attributeName\"\n /* attributeName */\n :\n case \"afterAttributeName\"\n /* afterAttributeName */\n :\n this.beginAttributeValue(false);\n this.finishAttributeValue();\n addElementModifier(this.currentStartTag, mustache);\n tokenizer.transitionTo(\"beforeAttributeName\"\n /* beforeAttributeName */\n );\n break;\n\n case \"afterAttributeValueQuoted\"\n /* afterAttributeValueQuoted */\n :\n addElementModifier(this.currentStartTag, mustache);\n tokenizer.transitionTo(\"beforeAttributeName\"\n /* beforeAttributeName */\n );\n break;\n // Attribute values\n\n case \"beforeAttributeValue\"\n /* beforeAttributeValue */\n :\n this.beginAttributeValue(false);\n this.appendDynamicAttributeValuePart(mustache);\n tokenizer.transitionTo(\"attributeValueUnquoted\"\n /* attributeValueUnquoted */\n );\n break;\n\n case \"attributeValueDoubleQuoted\"\n /* attributeValueDoubleQuoted */\n :\n case \"attributeValueSingleQuoted\"\n /* attributeValueSingleQuoted */\n :\n case \"attributeValueUnquoted\"\n /* attributeValueUnquoted */\n :\n this.appendDynamicAttributeValuePart(mustache);\n break;\n // TODO: Only append child when the tokenizer state makes\n // sense to do so, otherwise throw an error.\n\n default:\n appendChild(this.currentElement(), mustache);\n }\n\n return mustache;\n };\n\n _proto29.appendDynamicAttributeValuePart = function appendDynamicAttributeValuePart(part) {\n this.finalizeTextPart();\n var attr = this.currentAttr;\n attr.isDynamic = true;\n attr.parts.push(part);\n };\n\n _proto29.finalizeTextPart = function finalizeTextPart() {\n var attr = this.currentAttr;\n var text = attr.currentPart;\n\n if (text !== null) {\n this.currentAttr.parts.push(text);\n this.startTextPart();\n }\n };\n\n _proto29.startTextPart = function startTextPart() {\n this.currentAttr.currentPart = null;\n };\n\n _proto29.ContentStatement = function ContentStatement(content) {\n updateTokenizerLocation(this.tokenizer, content);\n this.tokenizer.tokenizePart(content.value);\n this.tokenizer.flushData();\n };\n\n _proto29.CommentStatement = function CommentStatement(rawComment) {\n var tokenizer = this.tokenizer;\n\n if (tokenizer.state === \"comment\"\n /* comment */\n ) {\n this.appendToCommentData(this.sourceForNode(rawComment));\n return null;\n }\n\n var value = rawComment.value,\n loc = rawComment.loc;\n var comment = b.mustacheComment(value, this.source.spanFor(loc));\n\n switch (tokenizer.state) {\n case \"beforeAttributeName\"\n /* beforeAttributeName */\n :\n case \"afterAttributeName\"\n /* afterAttributeName */\n :\n this.currentStartTag.comments.push(comment);\n break;\n\n case \"beforeData\"\n /* beforeData */\n :\n case \"data\"\n /* data */\n :\n appendChild(this.currentElement(), comment);\n break;\n\n default:\n throw generateSyntaxError(\"Using a Handlebars comment when in the `\" + tokenizer['state'] + \"` state is not supported\", this.source.spanFor(rawComment.loc));\n }\n\n return comment;\n };\n\n _proto29.PartialStatement = function PartialStatement(partial) {\n throw generateSyntaxError(\"Handlebars partials are not supported\", this.source.spanFor(partial.loc));\n };\n\n _proto29.PartialBlockStatement = function PartialBlockStatement(partialBlock) {\n throw generateSyntaxError(\"Handlebars partial blocks are not supported\", this.source.spanFor(partialBlock.loc));\n };\n\n _proto29.Decorator = function Decorator(decorator) {\n throw generateSyntaxError(\"Handlebars decorators are not supported\", this.source.spanFor(decorator.loc));\n };\n\n _proto29.DecoratorBlock = function DecoratorBlock(decoratorBlock) {\n throw generateSyntaxError(\"Handlebars decorator blocks are not supported\", this.source.spanFor(decoratorBlock.loc));\n };\n\n _proto29.SubExpression = function SubExpression(sexpr) {\n var _acceptCallNodes3 = acceptCallNodes(this, sexpr),\n path = _acceptCallNodes3.path,\n params = _acceptCallNodes3.params,\n hash = _acceptCallNodes3.hash;\n\n return b.sexpr({\n path: path,\n params: params,\n hash: hash,\n loc: this.source.spanFor(sexpr.loc)\n });\n };\n\n _proto29.PathExpression = function PathExpression(path) {\n var original = path.original;\n var parts;\n\n if (original.indexOf('/') !== -1) {\n if (original.slice(0, 2) === './') {\n throw generateSyntaxError(\"Using \\\"./\\\" is not supported in Glimmer and unnecessary\", this.source.spanFor(path.loc));\n }\n\n if (original.slice(0, 3) === '../') {\n throw generateSyntaxError(\"Changing context using \\\"../\\\" is not supported in Glimmer\", this.source.spanFor(path.loc));\n }\n\n if (original.indexOf('.') !== -1) {\n throw generateSyntaxError(\"Mixing '.' and '/' in paths is not supported in Glimmer; use only '.' to separate property paths\", this.source.spanFor(path.loc));\n }\n\n parts = [path.parts.join('/')];\n } else if (original === '.') {\n throw generateSyntaxError(\"'.' is not a supported path in Glimmer; check for a path with a trailing '.'\", this.source.spanFor(path.loc));\n } else {\n parts = path.parts;\n }\n\n var thisHead = false; // This is to fix a bug in the Handlebars AST where the path expressions in\n // `{{this.foo}}` (and similarly `{{foo-bar this.foo named=this.foo}}` etc)\n // are simply turned into `{{foo}}`. The fix is to push it back onto the\n // parts array and let the runtime see the difference. However, we cannot\n // simply use the string `this` as it means literally the property called\n // \"this\" in the current context (it can be expressed in the syntax as\n // `{{[this]}}`, where the square bracket are generally for this kind of\n // escaping – such as `{{foo.[\"bar.baz\"]}}` would mean lookup a property\n // named literally \"bar.baz\" on `this.foo`). By convention, we use `null`\n // for this purpose.\n\n if (original.match(/^this(\\..+)?$/)) {\n thisHead = true;\n }\n\n var pathHead;\n\n if (thisHead) {\n pathHead = {\n type: 'ThisHead',\n loc: {\n start: path.loc.start,\n end: {\n line: path.loc.start.line,\n column: path.loc.start.column + 4\n }\n }\n };\n } else if (path.data) {\n var head = parts.shift();\n\n if (head === undefined) {\n throw generateSyntaxError(\"Attempted to parse a path expression, but it was not valid. Paths beginning with @ must start with a-z.\", this.source.spanFor(path.loc));\n }\n\n pathHead = {\n type: 'AtHead',\n name: \"@\" + head,\n loc: {\n start: path.loc.start,\n end: {\n line: path.loc.start.line,\n column: path.loc.start.column + head.length + 1\n }\n }\n };\n } else {\n var _head3 = parts.shift();\n\n if (_head3 === undefined) {\n throw generateSyntaxError(\"Attempted to parse a path expression, but it was not valid. Paths must start with a-z or A-Z.\", this.source.spanFor(path.loc));\n }\n\n pathHead = {\n type: 'VarHead',\n name: _head3,\n loc: {\n start: path.loc.start,\n end: {\n line: path.loc.start.line,\n column: path.loc.start.column + _head3.length\n }\n }\n };\n }\n\n return new PathExpressionImplV1(path.original, pathHead, parts, this.source.spanFor(path.loc));\n };\n\n _proto29.Hash = function Hash(hash) {\n var pairs = [];\n\n for (var i = 0; i < hash.pairs.length; i++) {\n var pair = hash.pairs[i];\n pairs.push(b.pair({\n key: pair.key,\n value: this.acceptNode(pair.value),\n loc: this.source.spanFor(pair.loc)\n }));\n }\n\n return b.hash(pairs, this.source.spanFor(hash.loc));\n };\n\n _proto29.StringLiteral = function StringLiteral(string) {\n return b.literal({\n type: 'StringLiteral',\n value: string.value,\n loc: string.loc\n });\n };\n\n _proto29.BooleanLiteral = function BooleanLiteral(boolean) {\n return b.literal({\n type: 'BooleanLiteral',\n value: boolean.value,\n loc: boolean.loc\n });\n };\n\n _proto29.NumberLiteral = function NumberLiteral(number) {\n return b.literal({\n type: 'NumberLiteral',\n value: number.value,\n loc: number.loc\n });\n };\n\n _proto29.UndefinedLiteral = function UndefinedLiteral(undef) {\n return b.literal({\n type: 'UndefinedLiteral',\n value: undefined,\n loc: undef.loc\n });\n };\n\n _proto29.NullLiteral = function NullLiteral(nul) {\n return b.literal({\n type: 'NullLiteral',\n value: null,\n loc: nul.loc\n });\n };\n\n (0, _emberBabel.createClass)(HandlebarsNodeVisitors, [{\n key: \"isTopLevel\",\n get: function get() {\n return this.elementStack.length === 0;\n }\n }]);\n return HandlebarsNodeVisitors;\n }(Parser);\n\n function calculateRightStrippedOffsets(original, value) {\n if (value === '') {\n // if it is empty, just return the count of newlines\n // in original\n return {\n lines: original.split('\\n').length - 1,\n columns: 0\n };\n } // otherwise, return the number of newlines prior to\n // `value`\n\n\n var difference = original.split(value)[0];\n var lines = difference.split(/\\n/);\n var lineCount = lines.length - 1;\n return {\n lines: lineCount,\n columns: lines[lineCount].length\n };\n }\n\n function updateTokenizerLocation(tokenizer, content) {\n var line = content.loc.start.line;\n var column = content.loc.start.column;\n var offsets = calculateRightStrippedOffsets(content.original, content.value);\n line = line + offsets.lines;\n\n if (offsets.lines) {\n column = offsets.columns;\n } else {\n column = column + offsets.columns;\n }\n\n tokenizer.line = line;\n tokenizer.column = column;\n }\n\n function acceptCallNodes(compiler, node) {\n var path = node.path.type === 'PathExpression' ? compiler.PathExpression(node.path) : compiler.SubExpression(node.path);\n var params = node.params ? node.params.map(function (e) {\n return compiler.acceptNode(e);\n }) : []; // if there is no hash, position it as a collapsed node immediately after the last param (or the\n // path, if there are also no params)\n\n var end = params.length > 0 ? params[params.length - 1].loc : path.loc;\n var hash = node.hash ? compiler.Hash(node.hash) : {\n type: 'Hash',\n pairs: [],\n loc: compiler.source.spanFor(end).collapse('end')\n };\n return {\n path: path,\n params: params,\n hash: hash\n };\n }\n\n function addElementModifier(element, mustache) {\n var path = mustache.path,\n params = mustache.params,\n hash = mustache.hash,\n loc = mustache.loc;\n\n if (isHBSLiteral(path)) {\n var _modifier = \"{{\" + printLiteral(path) + \"}}\";\n\n var tag = \"<\" + element.name + \" ... \" + _modifier + \" ...\";\n throw generateSyntaxError(\"In \" + tag + \", \" + _modifier + \" is not a valid modifier\", mustache.loc);\n }\n\n var modifier = b.elementModifier({\n path: path,\n params: params,\n hash: hash,\n loc: loc\n });\n element.modifiers.push(modifier);\n }\n\n var TokenizerEventHandlers = /*#__PURE__*/function (_HandlebarsNodeVisito) {\n (0, _emberBabel.inheritsLoose)(TokenizerEventHandlers, _HandlebarsNodeVisito);\n\n function TokenizerEventHandlers() {\n var _this7;\n\n _this7 = _HandlebarsNodeVisito.apply(this, arguments) || this;\n _this7.tagOpenLine = 0;\n _this7.tagOpenColumn = 0;\n return _this7;\n }\n\n var _proto30 = TokenizerEventHandlers.prototype;\n\n _proto30.reset = function reset() {\n this.currentNode = null;\n } // Comment\n ;\n\n _proto30.beginComment = function beginComment() {\n this.currentNode = b.comment('', this.source.offsetFor(this.tagOpenLine, this.tagOpenColumn));\n };\n\n _proto30.appendToCommentData = function appendToCommentData(char) {\n this.currentComment.value += char;\n };\n\n _proto30.finishComment = function finishComment() {\n appendChild(this.currentElement(), this.finish(this.currentComment));\n } // Data\n ;\n\n _proto30.beginData = function beginData() {\n this.currentNode = b.text({\n chars: '',\n loc: this.offset().collapsed()\n });\n };\n\n _proto30.appendToData = function appendToData(char) {\n this.currentData.chars += char;\n };\n\n _proto30.finishData = function finishData() {\n this.currentData.loc = this.currentData.loc.withEnd(this.offset());\n appendChild(this.currentElement(), this.currentData);\n } // Tags - basic\n ;\n\n _proto30.tagOpen = function tagOpen() {\n this.tagOpenLine = this.tokenizer.line;\n this.tagOpenColumn = this.tokenizer.column;\n };\n\n _proto30.beginStartTag = function beginStartTag() {\n this.currentNode = {\n type: 'StartTag',\n name: '',\n attributes: [],\n modifiers: [],\n comments: [],\n selfClosing: false,\n loc: this.source.offsetFor(this.tagOpenLine, this.tagOpenColumn)\n };\n };\n\n _proto30.beginEndTag = function beginEndTag() {\n this.currentNode = {\n type: 'EndTag',\n name: '',\n attributes: [],\n modifiers: [],\n comments: [],\n selfClosing: false,\n loc: this.source.offsetFor(this.tagOpenLine, this.tagOpenColumn)\n };\n };\n\n _proto30.finishTag = function finishTag() {\n var tag = this.finish(this.currentTag);\n\n if (tag.type === 'StartTag') {\n this.finishStartTag();\n\n if (tag.name === ':') {\n throw generateSyntaxError('Invalid named block named detected, you may have created a named block without a name, or you may have began your name with a number. Named blocks must have names that are at least one character long, and begin with a lower case letter', this.source.spanFor({\n start: this.currentTag.loc.toJSON(),\n end: this.offset().toJSON()\n }));\n }\n\n if (voidMap[tag.name] || tag.selfClosing) {\n this.finishEndTag(true);\n }\n } else if (tag.type === 'EndTag') {\n this.finishEndTag(false);\n }\n };\n\n _proto30.finishStartTag = function finishStartTag() {\n var _this$finish = this.finish(this.currentStartTag),\n name = _this$finish.name,\n attrs = _this$finish.attributes,\n modifiers = _this$finish.modifiers,\n comments = _this$finish.comments,\n selfClosing = _this$finish.selfClosing,\n loc = _this$finish.loc;\n\n var element = b.element({\n tag: name,\n selfClosing: selfClosing,\n attrs: attrs,\n modifiers: modifiers,\n comments: comments,\n children: [],\n blockParams: [],\n loc: loc\n });\n this.elementStack.push(element);\n };\n\n _proto30.finishEndTag = function finishEndTag(isVoid) {\n var tag = this.finish(this.currentTag);\n var element = this.elementStack.pop();\n var parent = this.currentElement();\n this.validateEndTag(tag, element, isVoid);\n element.loc = element.loc.withEnd(this.offset());\n parseElementBlockParams(element);\n appendChild(parent, element);\n };\n\n _proto30.markTagAsSelfClosing = function markTagAsSelfClosing() {\n this.currentTag.selfClosing = true;\n } // Tags - name\n ;\n\n _proto30.appendToTagName = function appendToTagName(char) {\n this.currentTag.name += char;\n } // Tags - attributes\n ;\n\n _proto30.beginAttribute = function beginAttribute() {\n var offset = this.offset();\n this.currentAttribute = {\n name: '',\n parts: [],\n currentPart: null,\n isQuoted: false,\n isDynamic: false,\n start: offset,\n valueSpan: offset.collapsed()\n };\n };\n\n _proto30.appendToAttributeName = function appendToAttributeName(char) {\n this.currentAttr.name += char;\n };\n\n _proto30.beginAttributeValue = function beginAttributeValue(isQuoted) {\n this.currentAttr.isQuoted = isQuoted;\n this.startTextPart();\n this.currentAttr.valueSpan = this.offset().collapsed();\n };\n\n _proto30.appendToAttributeValue = function appendToAttributeValue(char) {\n var parts = this.currentAttr.parts;\n var lastPart = parts[parts.length - 1];\n var current = this.currentAttr.currentPart;\n\n if (current) {\n current.chars += char; // update end location for each added char\n\n current.loc = current.loc.withEnd(this.offset());\n } else {\n // initially assume the text node is a single char\n var _loc2 = this.offset(); // the tokenizer line/column have already been advanced, correct location info\n\n\n if (char === '\\n') {\n _loc2 = lastPart ? lastPart.loc.getEnd() : this.currentAttr.valueSpan.getStart();\n } else {\n _loc2 = _loc2.move(-1);\n }\n\n this.currentAttr.currentPart = b.text({\n chars: char,\n loc: _loc2.collapsed()\n });\n }\n };\n\n _proto30.finishAttributeValue = function finishAttributeValue() {\n this.finalizeTextPart();\n var tag = this.currentTag;\n var tokenizerPos = this.offset();\n\n if (tag.type === 'EndTag') {\n throw generateSyntaxError(\"Invalid end tag: closing tag must not have attributes\", this.source.spanFor({\n start: tag.loc.toJSON(),\n end: tokenizerPos.toJSON()\n }));\n }\n\n var _this$currentAttr = this.currentAttr,\n name = _this$currentAttr.name,\n parts = _this$currentAttr.parts,\n start = _this$currentAttr.start,\n isQuoted = _this$currentAttr.isQuoted,\n isDynamic = _this$currentAttr.isDynamic,\n valueSpan = _this$currentAttr.valueSpan;\n var value = this.assembleAttributeValue(parts, isQuoted, isDynamic, start.until(tokenizerPos));\n value.loc = valueSpan.withEnd(tokenizerPos);\n var attribute = b.attr({\n name: name,\n value: value,\n loc: start.until(tokenizerPos)\n });\n this.currentStartTag.attributes.push(attribute);\n };\n\n _proto30.reportSyntaxError = function reportSyntaxError(message) {\n throw generateSyntaxError(message, this.offset().collapsed());\n };\n\n _proto30.assembleConcatenatedValue = function assembleConcatenatedValue(parts) {\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n\n if (part.type !== 'MustacheStatement' && part.type !== 'TextNode') {\n throw generateSyntaxError('Unsupported node in quoted attribute value: ' + part['type'], part.loc);\n }\n }\n\n (0, _util.assertPresent)(parts, \"the concatenation parts of an element should not be empty\");\n var first = parts[0];\n var last = parts[parts.length - 1];\n return b.concat(parts, this.source.spanFor(first.loc).extend(this.source.spanFor(last.loc)));\n };\n\n _proto30.validateEndTag = function validateEndTag(tag, element, selfClosing) {\n var error;\n\n if (voidMap[tag.name] && !selfClosing) {\n // EngTag is also called by StartTag for void and self-closing tags (i.e.\n // <input> or <br />, so we need to check for that here. Otherwise, we would\n // throw an error for those cases.\n error = \"<\" + tag.name + \"> elements do not need end tags. You should remove it\";\n } else if (element.tag === undefined) {\n error = \"Closing tag </\" + tag.name + \"> without an open tag\";\n } else if (element.tag !== tag.name) {\n error = \"Closing tag </\" + tag.name + \"> did not match last open tag <\" + element.tag + \"> (on line \" + element.loc.startPosition.line + \")\";\n }\n\n if (error) {\n throw generateSyntaxError(error, tag.loc);\n }\n };\n\n _proto30.assembleAttributeValue = function assembleAttributeValue(parts, isQuoted, isDynamic, span) {\n if (isDynamic) {\n if (isQuoted) {\n return this.assembleConcatenatedValue(parts);\n } else {\n if (parts.length === 1 || parts.length === 2 && parts[1].type === 'TextNode' && parts[1].chars === '/') {\n return parts[0];\n } else {\n throw generateSyntaxError(\"An unquoted attribute value must be a string or a mustache, \" + \"preceded by whitespace or a '=' character, and \" + \"followed by whitespace, a '>' character, or '/>'\", span);\n }\n }\n } else {\n return parts.length > 0 ? parts[0] : b.text({\n chars: '',\n loc: span\n });\n }\n };\n\n return TokenizerEventHandlers;\n }(HandlebarsNodeVisitors);\n\n var syntax = {\n parse: preprocess,\n builders: publicBuilder,\n print: build,\n traverse: traverse,\n Walker: Walker\n };\n\n var CodemodEntityParser = /*#__PURE__*/function (_EntityParser) {\n (0, _emberBabel.inheritsLoose)(CodemodEntityParser, _EntityParser);\n\n // match upstream types, but never match an entity\n function CodemodEntityParser() {\n return _EntityParser.call(this, {}) || this;\n }\n\n var _proto31 = CodemodEntityParser.prototype;\n\n _proto31.parse = function parse() {\n return undefined;\n };\n\n return CodemodEntityParser;\n }(_simpleHtmlTokenizer.EntityParser);\n\n function preprocess(input, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _a, _b, _c;\n\n var mode = options.mode || 'precompile';\n var source;\n var ast;\n\n if (typeof input === 'string') {\n source = new Source(input, (_a = options.meta) === null || _a === void 0 ? void 0 : _a.moduleName);\n\n if (mode === 'codemod') {\n ast = (0, _parser.parseWithoutProcessing)(input, options.parseOptions);\n } else {\n ast = (0, _parser.parse)(input, options.parseOptions);\n }\n } else if (input instanceof Source) {\n source = input;\n\n if (mode === 'codemod') {\n ast = (0, _parser.parseWithoutProcessing)(input.source, options.parseOptions);\n } else {\n ast = (0, _parser.parse)(input.source, options.parseOptions);\n }\n } else {\n source = new Source('', (_b = options.meta) === null || _b === void 0 ? void 0 : _b.moduleName);\n ast = input;\n }\n\n var entityParser = undefined;\n\n if (mode === 'codemod') {\n entityParser = new CodemodEntityParser();\n }\n\n var offsets = SourceSpan.forCharPositions(source, 0, source.source.length);\n ast.loc = {\n source: '(program)',\n start: offsets.startPosition,\n end: offsets.endPosition\n };\n var program = new TokenizerEventHandlers(source, entityParser, mode).acceptTemplate(ast);\n\n if (options.strictMode) {\n program.blockParams = (_c = options.locals) !== null && _c !== void 0 ? _c : [];\n }\n\n if (options && options.plugins && options.plugins.ast) {\n for (var i = 0, l = options.plugins.ast.length; i < l; i++) {\n var transform = options.plugins.ast[i];\n var env = (0, _util.assign)({}, options, {\n syntax: syntax\n }, {\n plugins: undefined\n });\n var pluginResult = transform(env);\n traverse(program, pluginResult.visitor);\n }\n }\n\n return program;\n }\n\n var SymbolTable = /*#__PURE__*/function () {\n function SymbolTable() {}\n\n SymbolTable.top = function top(locals, customizeComponentName) {\n return new ProgramSymbolTable(locals, customizeComponentName);\n };\n\n var _proto32 = SymbolTable.prototype;\n\n _proto32.child = function child(locals) {\n var _this8 = this;\n\n var symbols = locals.map(function (name) {\n return _this8.allocate(name);\n });\n return new BlockSymbolTable(this, locals, symbols);\n };\n\n return SymbolTable;\n }();\n\n _exports.SymbolTable = SymbolTable;\n\n var ProgramSymbolTable = /*#__PURE__*/function (_SymbolTable) {\n (0, _emberBabel.inheritsLoose)(ProgramSymbolTable, _SymbolTable);\n\n function ProgramSymbolTable(templateLocals, customizeComponentName) {\n var _this9;\n\n _this9 = _SymbolTable.call(this) || this;\n _this9.templateLocals = templateLocals;\n _this9.customizeComponentName = customizeComponentName;\n _this9.symbols = [];\n _this9.upvars = [];\n _this9.size = 1;\n _this9.named = (0, _util.dict)();\n _this9.blocks = (0, _util.dict)();\n _this9.usedTemplateLocals = [];\n _this9._hasEval = false;\n return _this9;\n }\n\n var _proto33 = ProgramSymbolTable.prototype;\n\n _proto33.getUsedTemplateLocals = function getUsedTemplateLocals() {\n return this.usedTemplateLocals;\n };\n\n _proto33.setHasEval = function setHasEval() {\n this._hasEval = true;\n };\n\n _proto33.has = function has(name) {\n return this.templateLocals.indexOf(name) !== -1;\n };\n\n _proto33.get = function get(name) {\n var index = this.usedTemplateLocals.indexOf(name);\n\n if (index !== -1) {\n return [index, true];\n }\n\n index = this.usedTemplateLocals.length;\n this.usedTemplateLocals.push(name);\n return [index, true];\n };\n\n _proto33.getLocalsMap = function getLocalsMap() {\n return (0, _util.dict)();\n };\n\n _proto33.getEvalInfo = function getEvalInfo() {\n var locals = this.getLocalsMap();\n return Object.keys(locals).map(function (symbol) {\n return locals[symbol];\n });\n };\n\n _proto33.allocateFree = function allocateFree(name, resolution) {\n // If the name in question is an uppercase (i.e. angle-bracket) component invocation, run\n // the optional `customizeComponentName` function provided to the precompiler.\n if (resolution.resolution() === 39\n /* GetFreeAsComponentHead */\n && resolution.isAngleBracket && isUpperCase(name)) {\n name = this.customizeComponentName(name);\n }\n\n var index = this.upvars.indexOf(name);\n\n if (index !== -1) {\n return index;\n }\n\n index = this.upvars.length;\n this.upvars.push(name);\n return index;\n };\n\n _proto33.allocateNamed = function allocateNamed(name) {\n var named = this.named[name];\n\n if (!named) {\n named = this.named[name] = this.allocate(name);\n }\n\n return named;\n };\n\n _proto33.allocateBlock = function allocateBlock(name) {\n if (name === 'inverse') {\n name = 'else';\n }\n\n var block = this.blocks[name];\n\n if (!block) {\n block = this.blocks[name] = this.allocate(\"&\" + name);\n }\n\n return block;\n };\n\n _proto33.allocate = function allocate(identifier) {\n this.symbols.push(identifier);\n return this.size++;\n };\n\n (0, _emberBabel.createClass)(ProgramSymbolTable, [{\n key: \"hasEval\",\n get: function get() {\n return this._hasEval;\n }\n }]);\n return ProgramSymbolTable;\n }(SymbolTable);\n\n _exports.ProgramSymbolTable = ProgramSymbolTable;\n\n var BlockSymbolTable = /*#__PURE__*/function (_SymbolTable2) {\n (0, _emberBabel.inheritsLoose)(BlockSymbolTable, _SymbolTable2);\n\n function BlockSymbolTable(parent, symbols, slots) {\n var _this10;\n\n _this10 = _SymbolTable2.call(this) || this;\n _this10.parent = parent;\n _this10.symbols = symbols;\n _this10.slots = slots;\n return _this10;\n }\n\n var _proto34 = BlockSymbolTable.prototype;\n\n _proto34.has = function has(name) {\n return this.symbols.indexOf(name) !== -1 || this.parent.has(name);\n };\n\n _proto34.get = function get(name) {\n var slot = this.symbols.indexOf(name);\n return slot === -1 ? this.parent.get(name) : [this.slots[slot], false];\n };\n\n _proto34.getLocalsMap = function getLocalsMap() {\n var _this11 = this;\n\n var dict$$1 = this.parent.getLocalsMap();\n this.symbols.forEach(function (symbol) {\n return dict$$1[symbol] = _this11.get(symbol)[0];\n });\n return dict$$1;\n };\n\n _proto34.getEvalInfo = function getEvalInfo() {\n var locals = this.getLocalsMap();\n return Object.keys(locals).map(function (symbol) {\n return locals[symbol];\n });\n };\n\n _proto34.setHasEval = function setHasEval() {\n this.parent.setHasEval();\n };\n\n _proto34.allocateFree = function allocateFree(name, resolution) {\n return this.parent.allocateFree(name, resolution);\n };\n\n _proto34.allocateNamed = function allocateNamed(name) {\n return this.parent.allocateNamed(name);\n };\n\n _proto34.allocateBlock = function allocateBlock(name) {\n return this.parent.allocateBlock(name);\n };\n\n _proto34.allocate = function allocate(identifier) {\n return this.parent.allocate(identifier);\n };\n\n (0, _emberBabel.createClass)(BlockSymbolTable, [{\n key: \"locals\",\n get: function get() {\n return this.symbols;\n }\n }]);\n return BlockSymbolTable;\n }(SymbolTable);\n\n _exports.BlockSymbolTable = BlockSymbolTable;\n\n var __rest = undefined && undefined.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n };\n\n var Builder = /*#__PURE__*/function () {\n function Builder() {}\n\n var _proto35 = Builder.prototype;\n\n // TEMPLATE //\n _proto35.template = function template(symbols, body, loc$$1) {\n return new Template({\n table: symbols,\n body: body,\n loc: loc$$1\n });\n } // INTERNAL (these nodes cannot be reached when doing general-purpose visiting) //\n ;\n\n _proto35.block = function block(symbols, body, loc$$1) {\n return new Block({\n scope: symbols,\n body: body,\n loc: loc$$1\n });\n };\n\n _proto35.namedBlock = function namedBlock(name, block, loc$$1) {\n return new NamedBlock({\n name: name,\n block: block,\n attrs: [],\n componentArgs: [],\n modifiers: [],\n loc: loc$$1\n });\n };\n\n _proto35.simpleNamedBlock = function simpleNamedBlock(name, block, loc$$1) {\n return new BuildElement({\n selfClosing: false,\n attrs: [],\n componentArgs: [],\n modifiers: [],\n comments: []\n }).named(name, block, loc$$1);\n };\n\n _proto35.slice = function slice(chars, loc$$1) {\n return new SourceSlice({\n loc: loc$$1,\n chars: chars\n });\n };\n\n _proto35.args = function args(positional, named, loc$$1) {\n return new Args({\n loc: loc$$1,\n positional: positional,\n named: named\n });\n };\n\n _proto35.positional = function positional(exprs, loc$$1) {\n return new PositionalArguments({\n loc: loc$$1,\n exprs: exprs\n });\n };\n\n _proto35.namedArgument = function namedArgument(key, value) {\n return new NamedArgument({\n name: key,\n value: value\n });\n };\n\n _proto35.named = function named(entries, loc$$1) {\n return new NamedArguments({\n loc: loc$$1,\n entries: entries\n });\n };\n\n _proto35.attr = function attr(_ref29, loc$$1) {\n var name = _ref29.name,\n value = _ref29.value,\n trusting = _ref29.trusting;\n return new HtmlAttr({\n loc: loc$$1,\n name: name,\n value: value,\n trusting: trusting\n });\n };\n\n _proto35.splatAttr = function splatAttr(symbol, loc$$1) {\n return new SplatAttr({\n symbol: symbol,\n loc: loc$$1\n });\n };\n\n _proto35.arg = function arg(_ref30, loc$$1) {\n var name = _ref30.name,\n value = _ref30.value,\n trusting = _ref30.trusting;\n return new ComponentArg({\n name: name,\n value: value,\n trusting: trusting,\n loc: loc$$1\n });\n } // EXPRESSIONS //\n ;\n\n _proto35.path = function path(head, tail, loc$$1) {\n return new PathExpression({\n loc: loc$$1,\n ref: head,\n tail: tail\n });\n };\n\n _proto35.self = function self(loc$$1) {\n return new ThisReference({\n loc: loc$$1\n });\n };\n\n _proto35.at = function at(name, symbol, loc$$1) {\n return new ArgReference({\n loc: loc$$1,\n name: new SourceSlice({\n loc: loc$$1,\n chars: name\n }),\n symbol: symbol\n });\n };\n\n _proto35.freeVar = function freeVar(_ref31) {\n var name = _ref31.name,\n context = _ref31.context,\n symbol = _ref31.symbol,\n loc$$1 = _ref31.loc;\n return new FreeVarReference({\n name: name,\n resolution: context,\n symbol: symbol,\n loc: loc$$1\n });\n };\n\n _proto35.localVar = function localVar(name, symbol, isTemplateLocal, loc$$1) {\n return new LocalVarReference({\n loc: loc$$1,\n name: name,\n isTemplateLocal: isTemplateLocal,\n symbol: symbol\n });\n };\n\n _proto35.sexp = function sexp(parts, loc$$1) {\n return new CallExpression({\n loc: loc$$1,\n callee: parts.callee,\n args: parts.args\n });\n };\n\n _proto35.deprecatedCall = function deprecatedCall(arg, callee, loc$$1) {\n return new DeprecatedCallExpression({\n loc: loc$$1,\n arg: arg,\n callee: callee\n });\n };\n\n _proto35.interpolate = function interpolate(parts, loc$$1) {\n (0, _util.assertPresent)(parts);\n return new InterpolateExpression({\n loc: loc$$1,\n parts: parts\n });\n };\n\n _proto35.literal = function literal(value, loc$$1) {\n return new LiteralExpression({\n loc: loc$$1,\n value: value\n });\n } // STATEMENTS //\n ;\n\n _proto35.append = function append(_ref32, loc$$1) {\n var table = _ref32.table,\n trusting = _ref32.trusting,\n value = _ref32.value;\n return new AppendContent({\n table: table,\n trusting: trusting,\n value: value,\n loc: loc$$1\n });\n };\n\n _proto35.modifier = function modifier(_ref33, loc$$1) {\n var callee = _ref33.callee,\n args = _ref33.args;\n return new ElementModifier({\n loc: loc$$1,\n callee: callee,\n args: args\n });\n };\n\n _proto35.namedBlocks = function namedBlocks(blocks, loc$$1) {\n return new NamedBlocks({\n loc: loc$$1,\n blocks: blocks\n });\n };\n\n _proto35.blockStatement = function blockStatement(_a, loc$$1) {\n var symbols = _a.symbols,\n program = _a.program,\n _a$inverse = _a.inverse,\n inverse = _a$inverse === void 0 ? null : _a$inverse,\n call = __rest(_a, [\"symbols\", \"program\", \"inverse\"]);\n\n var blocksLoc = program.loc;\n var blocks = [this.namedBlock(SourceSlice.synthetic('default'), program, program.loc)];\n\n if (inverse) {\n blocksLoc = blocksLoc.extend(inverse.loc);\n blocks.push(this.namedBlock(SourceSlice.synthetic('else'), inverse, inverse.loc));\n }\n\n return new InvokeBlock({\n loc: loc$$1,\n blocks: this.namedBlocks(blocks, blocksLoc),\n callee: call.callee,\n args: call.args\n });\n };\n\n _proto35.element = function element(options) {\n return new BuildElement(options);\n };\n\n return Builder;\n }();\n\n var BuildElement = /*#__PURE__*/function () {\n function BuildElement(base) {\n this.base = base;\n this.builder = new Builder();\n }\n\n var _proto36 = BuildElement.prototype;\n\n _proto36.simple = function simple(tag, body, loc$$1) {\n return new SimpleElement((0, _util.assign)({\n tag: tag,\n body: body,\n componentArgs: [],\n loc: loc$$1\n }, this.base));\n };\n\n _proto36.named = function named(name, block, loc$$1) {\n return new NamedBlock((0, _util.assign)({\n name: name,\n block: block,\n componentArgs: [],\n loc: loc$$1\n }, this.base));\n };\n\n _proto36.selfClosingComponent = function selfClosingComponent(callee, loc$$1) {\n return new InvokeComponent((0, _util.assign)({\n loc: loc$$1,\n callee: callee,\n // point the empty named blocks at the `/` self-closing tag\n blocks: new NamedBlocks({\n blocks: [],\n loc: loc$$1.sliceEndChars({\n skipEnd: 1,\n chars: 1\n })\n })\n }, this.base));\n };\n\n _proto36.componentWithDefaultBlock = function componentWithDefaultBlock(callee, children, symbols, loc$$1) {\n var block = this.builder.block(symbols, children, loc$$1);\n var namedBlock = this.builder.namedBlock(SourceSlice.synthetic('default'), block, loc$$1); // BUILDER.simpleNamedBlock('default', children, symbols, loc);\n\n return new InvokeComponent((0, _util.assign)({\n loc: loc$$1,\n callee: callee,\n blocks: this.builder.namedBlocks([namedBlock], namedBlock.loc)\n }, this.base));\n };\n\n _proto36.componentWithNamedBlocks = function componentWithNamedBlocks(callee, blocks, loc$$1) {\n return new InvokeComponent((0, _util.assign)({\n loc: loc$$1,\n callee: callee,\n blocks: this.builder.namedBlocks(blocks, SpanList.range(blocks))\n }, this.base));\n };\n\n return BuildElement;\n }();\n\n function SexpSyntaxContext(node$$1) {\n if (isSimpleCallee(node$$1)) {\n return LooseModeResolution.namespaced(\"Helper\"\n /* Helper */\n );\n } else {\n return null;\n }\n }\n\n function ModifierSyntaxContext(node$$1) {\n if (isSimpleCallee(node$$1)) {\n return LooseModeResolution.namespaced(\"Modifier\"\n /* Modifier */\n );\n } else {\n return null;\n }\n }\n\n function BlockSyntaxContext(node$$1) {\n if (isSimpleCallee(node$$1)) {\n return LooseModeResolution.namespaced(\"Component\"\n /* Component */\n );\n } else {\n return LooseModeResolution.fallback();\n }\n }\n\n function ComponentSyntaxContext(node$$1) {\n if (isSimplePath(node$$1)) {\n return LooseModeResolution.namespaced(\"Component\"\n /* Component */\n , true);\n } else {\n return null;\n }\n }\n /**\n * This corresponds to append positions (text curlies or attribute\n * curlies). In strict mode, this also corresponds to arg curlies.\n */\n\n\n function AttrValueSyntaxContext(node$$1) {\n var isSimple = isSimpleCallee(node$$1);\n var isInvoke = isInvokeNode(node$$1);\n\n if (isSimple) {\n return isInvoke ? LooseModeResolution.namespaced(\"Helper\"\n /* Helper */\n ) : LooseModeResolution.attr();\n } else {\n return isInvoke ? STRICT_RESOLUTION : LooseModeResolution.fallback();\n }\n }\n /**\n * This corresponds to append positions (text curlies or attribute\n * curlies). In strict mode, this also corresponds to arg curlies.\n */\n\n\n function AppendSyntaxContext(node$$1) {\n var isSimple = isSimpleCallee(node$$1);\n var isInvoke = isInvokeNode(node$$1);\n var trusting = node$$1.trusting;\n\n if (isSimple) {\n return trusting ? LooseModeResolution.trustingAppend({\n invoke: isInvoke\n }) : LooseModeResolution.append({\n invoke: isInvoke\n });\n } else {\n return LooseModeResolution.fallback();\n }\n } // UTILITIES\n\n /**\n * A call node has a simple callee if its head is:\n *\n * - a `PathExpression`\n * - the `PathExpression`'s head is a `VarHead`\n * - it has no tail\n *\n * Simple heads:\n *\n * ```\n * {{x}}\n * {{x y}}\n * ```\n *\n * Not simple heads:\n *\n * ```\n * {{x.y}}\n * {{x.y z}}\n * {{@x}}\n * {{@x a}}\n * {{this}}\n * {{this a}}\n * ```\n */\n\n\n function isSimpleCallee(node$$1) {\n var path = node$$1.path;\n return isSimplePath(path);\n }\n\n function isSimplePath(node$$1) {\n if (node$$1.type === 'PathExpression' && node$$1.head.type === 'VarHead') {\n return node$$1.tail.length === 0;\n } else {\n return false;\n }\n }\n /**\n * The call expression has at least one argument.\n */\n\n\n function isInvokeNode(node$$1) {\n return node$$1.params.length > 0 || node$$1.hash.pairs.length > 0;\n }\n\n function normalize(source, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _a;\n\n var ast = preprocess(source, options);\n var normalizeOptions = (0, _util.assign)({\n strictMode: false,\n locals: []\n }, options);\n var top = SymbolTable.top(normalizeOptions.locals, (_a = // eslint-disable-next-line @typescript-eslint/unbound-method\n options.customizeComponentName) !== null && _a !== void 0 ? _a : function (name) {\n return name;\n });\n var block = new BlockContext(source, normalizeOptions, top);\n var normalizer = new StatementNormalizer(block);\n var astV2 = new TemplateChildren(block.loc(ast.loc), ast.body.map(function (b$$1) {\n return normalizer.normalize(b$$1);\n }), block).assertTemplate(top);\n var locals = top.getUsedTemplateLocals();\n return [astV2, locals];\n }\n /**\n * A `BlockContext` represents the block that a particular AST node is contained inside of.\n *\n * `BlockContext` is aware of template-wide options (such as strict mode), as well as the bindings\n * that are in-scope within that block.\n *\n * Concretely, it has the `PrecompileOptions` and current `SymbolTable`, and provides\n * facilities for working with those options.\n *\n * `BlockContext` is stateless.\n */\n\n\n var BlockContext = /*#__PURE__*/function () {\n function BlockContext(source, options, table) {\n this.source = source;\n this.options = options;\n this.table = table;\n this.builder = new Builder();\n }\n\n var _proto37 = BlockContext.prototype;\n\n _proto37.loc = function loc(loc$$1) {\n return this.source.spanFor(loc$$1);\n };\n\n _proto37.resolutionFor = function resolutionFor(node$$1, resolution) {\n if (this.strict) {\n return {\n resolution: STRICT_RESOLUTION\n };\n }\n\n if (this.isFreeVar(node$$1)) {\n var r = resolution(node$$1);\n\n if (r === null) {\n return {\n resolution: 'error',\n path: printPath(node$$1),\n head: printHead(node$$1)\n };\n }\n\n return {\n resolution: r\n };\n } else {\n return {\n resolution: STRICT_RESOLUTION\n };\n }\n };\n\n _proto37.isFreeVar = function isFreeVar(callee) {\n if (callee.type === 'PathExpression') {\n if (callee.head.type !== 'VarHead') {\n return false;\n }\n\n return !this.table.has(callee.head.name);\n } else if (callee.path.type === 'PathExpression') {\n return this.isFreeVar(callee.path);\n } else {\n return false;\n }\n };\n\n _proto37.hasBinding = function hasBinding(name) {\n return this.table.has(name);\n };\n\n _proto37.child = function child(blockParams) {\n return new BlockContext(this.source, this.options, this.table.child(blockParams));\n };\n\n _proto37.customizeComponentName = function customizeComponentName(input) {\n if (this.options.customizeComponentName) {\n return this.options.customizeComponentName(input);\n } else {\n return input;\n }\n };\n\n (0, _emberBabel.createClass)(BlockContext, [{\n key: \"strict\",\n get: function get() {\n return this.options.strictMode || false;\n }\n }]);\n return BlockContext;\n }();\n /**\n * An `ExpressionNormalizer` normalizes expressions within a block.\n *\n * `ExpressionNormalizer` is stateless.\n */\n\n\n var ExpressionNormalizer = /*#__PURE__*/function () {\n function ExpressionNormalizer(block) {\n this.block = block;\n }\n\n var _proto38 = ExpressionNormalizer.prototype;\n\n _proto38.normalize = function normalize(expr, resolution) {\n switch (expr.type) {\n case 'NullLiteral':\n case 'BooleanLiteral':\n case 'NumberLiteral':\n case 'StringLiteral':\n case 'UndefinedLiteral':\n return this.block.builder.literal(expr.value, this.block.loc(expr.loc));\n\n case 'PathExpression':\n return this.path(expr, resolution);\n\n case 'SubExpression':\n {\n var _resolution = this.block.resolutionFor(expr, SexpSyntaxContext);\n\n if (_resolution.resolution === 'error') {\n throw generateSyntaxError(\"You attempted to invoke a path (`\" + _resolution.path + \"`) but \" + _resolution.head + \" was not in scope\", expr.loc);\n }\n\n return this.block.builder.sexp(this.callParts(expr, _resolution.resolution), this.block.loc(expr.loc));\n }\n }\n };\n\n _proto38.path = function path(expr, resolution) {\n var headOffsets = this.block.loc(expr.head.loc);\n var tail = []; // start with the head\n\n var offset = headOffsets;\n\n for (var _iterator3 = (0, _emberBabel.createForOfIteratorHelperLoose)(expr.tail), _step3; !(_step3 = _iterator3()).done;) {\n var _part2 = _step3.value;\n offset = offset.sliceStartChars({\n chars: _part2.length,\n skipStart: 1\n });\n tail.push(new SourceSlice({\n loc: offset,\n chars: _part2\n }));\n }\n\n return this.block.builder.path(this.ref(expr.head, resolution), tail, this.block.loc(expr.loc));\n }\n /**\n * The `callParts` method takes ASTv1.CallParts as well as a syntax context and normalizes\n * it to an ASTv2 CallParts.\n */\n ;\n\n _proto38.callParts = function callParts(parts, context) {\n var _this12 = this;\n\n var path = parts.path,\n params = parts.params,\n hash = parts.hash;\n var callee = this.normalize(path, context);\n var paramList = params.map(function (p) {\n return _this12.normalize(p, ARGUMENT_RESOLUTION);\n });\n var paramLoc = SpanList.range(paramList, callee.loc.collapse('end'));\n var namedLoc = this.block.loc(hash.loc);\n var argsLoc = SpanList.range([paramLoc, namedLoc]);\n var positional = this.block.builder.positional(params.map(function (p) {\n return _this12.normalize(p, ARGUMENT_RESOLUTION);\n }), paramLoc);\n var named = this.block.builder.named(hash.pairs.map(function (p) {\n return _this12.namedArgument(p);\n }), this.block.loc(hash.loc));\n return {\n callee: callee,\n args: this.block.builder.args(positional, named, argsLoc)\n };\n };\n\n _proto38.namedArgument = function namedArgument(pair) {\n var offsets = this.block.loc(pair.loc);\n var keyOffsets = offsets.sliceStartChars({\n chars: pair.key.length\n });\n return this.block.builder.namedArgument(new SourceSlice({\n chars: pair.key,\n loc: keyOffsets\n }), this.normalize(pair.value, ARGUMENT_RESOLUTION));\n }\n /**\n * The `ref` method normalizes an `ASTv1.PathHead` into an `ASTv2.VariableReference`.\n * This method is extremely important, because it is responsible for normalizing free\n * variables into an an ASTv2.PathHead *with appropriate context*.\n *\n * The syntax context is originally determined by the syntactic position that this `PathHead`\n * came from, and is ultimately attached to the `ASTv2.VariableReference` here. In ASTv2,\n * the `VariableReference` node bears full responsibility for loose mode rules that control\n * the behavior of free variables.\n */\n ;\n\n _proto38.ref = function ref(head, resolution) {\n var block = this.block;\n var builder = block.builder,\n table = block.table;\n var offsets = block.loc(head.loc);\n\n switch (head.type) {\n case 'ThisHead':\n return builder.self(offsets);\n\n case 'AtHead':\n {\n var symbol = table.allocateNamed(head.name);\n return builder.at(head.name, symbol, offsets);\n }\n\n case 'VarHead':\n {\n if (block.hasBinding(head.name)) {\n var _table$get = table.get(head.name),\n _symbol = _table$get[0],\n isRoot = _table$get[1];\n\n return block.builder.localVar(head.name, _symbol, isRoot, offsets);\n } else {\n var context = block.strict ? STRICT_RESOLUTION : resolution;\n\n var _symbol2 = block.table.allocateFree(head.name, context);\n\n return block.builder.freeVar({\n name: head.name,\n context: context,\n symbol: _symbol2,\n loc: offsets\n });\n }\n }\n }\n };\n\n return ExpressionNormalizer;\n }();\n /**\n * `TemplateNormalizer` normalizes top-level ASTv1 statements to ASTv2.\n */\n\n\n var StatementNormalizer = /*#__PURE__*/function () {\n function StatementNormalizer(block) {\n this.block = block;\n }\n\n var _proto39 = StatementNormalizer.prototype;\n\n _proto39.normalize = function normalize(node$$1) {\n switch (node$$1.type) {\n case 'PartialStatement':\n throw new Error(\"Handlebars partial syntax ({{> ...}}) is not allowed in Glimmer\");\n\n case 'BlockStatement':\n return this.BlockStatement(node$$1);\n\n case 'ElementNode':\n return new ElementNormalizer(this.block).ElementNode(node$$1);\n\n case 'MustacheStatement':\n return this.MustacheStatement(node$$1);\n // These are the same in ASTv2\n\n case 'MustacheCommentStatement':\n return this.MustacheCommentStatement(node$$1);\n\n case 'CommentStatement':\n {\n var loc$$1 = this.block.loc(node$$1.loc);\n return new HtmlComment({\n loc: loc$$1,\n text: loc$$1.slice({\n skipStart: 4,\n skipEnd: 3\n }).toSlice(node$$1.value)\n });\n }\n\n case 'TextNode':\n return new HtmlText({\n loc: this.block.loc(node$$1.loc),\n chars: node$$1.chars\n });\n }\n };\n\n _proto39.MustacheCommentStatement = function MustacheCommentStatement(node$$1) {\n var loc$$1 = this.block.loc(node$$1.loc);\n var textLoc;\n\n if (loc$$1.asString().slice(0, 5) === '{{!--') {\n textLoc = loc$$1.slice({\n skipStart: 5,\n skipEnd: 4\n });\n } else {\n textLoc = loc$$1.slice({\n skipStart: 3,\n skipEnd: 2\n });\n }\n\n return new GlimmerComment({\n loc: loc$$1,\n text: textLoc.toSlice(node$$1.value)\n });\n }\n /**\n * Normalizes an ASTv1.MustacheStatement to an ASTv2.AppendStatement\n */\n ;\n\n _proto39.MustacheStatement = function MustacheStatement(mustache) {\n var escaped = mustache.escaped;\n var loc$$1 = this.block.loc(mustache.loc); // Normalize the call parts in AppendSyntaxContext\n\n var callParts = this.expr.callParts({\n path: mustache.path,\n params: mustache.params,\n hash: mustache.hash\n }, AppendSyntaxContext(mustache));\n var value = callParts.args.isEmpty() ? callParts.callee : this.block.builder.sexp(callParts, loc$$1);\n return this.block.builder.append({\n table: this.block.table,\n trusting: !escaped,\n value: value\n }, loc$$1);\n }\n /**\n * Normalizes a ASTv1.BlockStatement to an ASTv2.BlockStatement\n */\n ;\n\n _proto39.BlockStatement = function BlockStatement(block) {\n var program = block.program,\n inverse = block.inverse;\n var loc$$1 = this.block.loc(block.loc);\n var resolution = this.block.resolutionFor(block, BlockSyntaxContext);\n\n if (resolution.resolution === 'error') {\n throw generateSyntaxError(\"You attempted to invoke a path (`{{#\" + resolution.path + \"}}`) but \" + resolution.head + \" was not in scope\", loc$$1);\n }\n\n var callParts = this.expr.callParts(block, resolution.resolution);\n return this.block.builder.blockStatement((0, _util.assign)({\n symbols: this.block.table,\n program: this.Block(program),\n inverse: inverse ? this.Block(inverse) : null\n }, callParts), loc$$1);\n };\n\n _proto39.Block = function Block(_ref34) {\n var body = _ref34.body,\n loc$$1 = _ref34.loc,\n blockParams = _ref34.blockParams;\n var child = this.block.child(blockParams);\n var normalizer = new StatementNormalizer(child);\n return new BlockChildren(this.block.loc(loc$$1), body.map(function (b$$1) {\n return normalizer.normalize(b$$1);\n }), this.block).assertBlock(child.table);\n };\n\n (0, _emberBabel.createClass)(StatementNormalizer, [{\n key: \"expr\",\n get: function get() {\n return new ExpressionNormalizer(this.block);\n }\n }]);\n return StatementNormalizer;\n }();\n\n var ElementNormalizer = /*#__PURE__*/function () {\n function ElementNormalizer(ctx) {\n this.ctx = ctx;\n }\n /**\n * Normalizes an ASTv1.ElementNode to:\n *\n * - ASTv2.NamedBlock if the tag name begins with `:`\n * - ASTv2.Component if the tag name matches the component heuristics\n * - ASTv2.SimpleElement if the tag name doesn't match the component heuristics\n *\n * A tag name represents a component if:\n *\n * - it begins with `@`\n * - it is exactly `this` or begins with `this.`\n * - the part before the first `.` is a reference to an in-scope variable binding\n * - it begins with an uppercase character\n */\n\n\n var _proto40 = ElementNormalizer.prototype;\n\n _proto40.ElementNode = function ElementNode(element) {\n var _this13 = this;\n\n var tag = element.tag,\n selfClosing = element.selfClosing,\n comments = element.comments;\n var loc$$1 = this.ctx.loc(element.loc);\n\n var _tag$split = tag.split('.'),\n tagHead = _tag$split[0],\n rest = _tag$split.slice(1); // the head, attributes and modifiers are in the current scope\n\n\n var path = this.classifyTag(tagHead, rest, element.loc);\n var attrs = element.attributes.filter(function (a) {\n return a.name[0] !== '@';\n }).map(function (a) {\n return _this13.attr(a);\n });\n var args = element.attributes.filter(function (a) {\n return a.name[0] === '@';\n }).map(function (a) {\n return _this13.arg(a);\n });\n var modifiers = element.modifiers.map(function (m) {\n return _this13.modifier(m);\n }); // the element's block params are in scope for the children\n\n var child = this.ctx.child(element.blockParams);\n var normalizer = new StatementNormalizer(child);\n var childNodes = element.children.map(function (s) {\n return normalizer.normalize(s);\n });\n var el = this.ctx.builder.element({\n selfClosing: selfClosing,\n attrs: attrs,\n componentArgs: args,\n modifiers: modifiers,\n comments: comments.map(function (c) {\n return new StatementNormalizer(_this13.ctx).MustacheCommentStatement(c);\n })\n });\n var children = new ElementChildren(el, loc$$1, childNodes, this.ctx);\n var offsets = this.ctx.loc(element.loc);\n var tagOffsets = offsets.sliceStartChars({\n chars: tag.length,\n skipStart: 1\n });\n\n if (path === 'ElementHead') {\n if (tag[0] === ':') {\n return children.assertNamedBlock(tagOffsets.slice({\n skipStart: 1\n }).toSlice(tag.slice(1)), child.table);\n } else {\n return children.assertElement(tagOffsets.toSlice(tag), element.blockParams.length > 0);\n }\n }\n\n if (element.selfClosing) {\n return el.selfClosingComponent(path, loc$$1);\n } else {\n var blocks = children.assertComponent(tag, child.table, element.blockParams.length > 0);\n return el.componentWithNamedBlocks(path, blocks, loc$$1);\n }\n };\n\n _proto40.modifier = function modifier(m) {\n var resolution = this.ctx.resolutionFor(m, ModifierSyntaxContext);\n\n if (resolution.resolution === 'error') {\n throw generateSyntaxError(\"You attempted to invoke a path (`{{#\" + resolution.path + \"}}`) as a modifier, but \" + resolution.head + \" was not in scope. Try adding `this` to the beginning of the path\", m.loc);\n }\n\n var callParts = this.expr.callParts(m, resolution.resolution);\n return this.ctx.builder.modifier(callParts, this.ctx.loc(m.loc));\n }\n /**\n * This method handles attribute values that are curlies, as well as curlies nested inside of\n * interpolations:\n *\n * ```hbs\n * <a href={{url}} />\n * <a href=\"{{url}}.html\" />\n * ```\n */\n ;\n\n _proto40.mustacheAttr = function mustacheAttr(mustache) {\n // Normalize the call parts in AttrValueSyntaxContext\n var sexp = this.ctx.builder.sexp(this.expr.callParts(mustache, AttrValueSyntaxContext(mustache)), this.ctx.loc(mustache.loc)); // If there are no params or hash, just return the function part as its own expression\n\n if (sexp.args.isEmpty()) {\n return sexp.callee;\n } else {\n return sexp;\n }\n }\n /**\n * attrPart is the narrowed down list of valid attribute values that are also\n * allowed as a concat part (you can't nest concats).\n */\n ;\n\n _proto40.attrPart = function attrPart(part) {\n switch (part.type) {\n case 'MustacheStatement':\n return {\n expr: this.mustacheAttr(part),\n trusting: !part.escaped\n };\n\n case 'TextNode':\n return {\n expr: this.ctx.builder.literal(part.chars, this.ctx.loc(part.loc)),\n trusting: true\n };\n }\n };\n\n _proto40.attrValue = function attrValue(part) {\n var _this14 = this;\n\n switch (part.type) {\n case 'ConcatStatement':\n {\n var parts = part.parts.map(function (p) {\n return _this14.attrPart(p).expr;\n });\n return {\n expr: this.ctx.builder.interpolate(parts, this.ctx.loc(part.loc)),\n trusting: false\n };\n }\n\n default:\n return this.attrPart(part);\n }\n };\n\n _proto40.attr = function attr(m) {\n if (m.name === '...attributes') {\n return this.ctx.builder.splatAttr(this.ctx.table.allocateBlock('attrs'), this.ctx.loc(m.loc));\n }\n\n var offsets = this.ctx.loc(m.loc);\n var nameSlice = offsets.sliceStartChars({\n chars: m.name.length\n }).toSlice(m.name);\n var value = this.attrValue(m.value);\n return this.ctx.builder.attr({\n name: nameSlice,\n value: value.expr,\n trusting: value.trusting\n }, offsets);\n };\n\n _proto40.maybeDeprecatedCall = function maybeDeprecatedCall(arg, part) {\n if (this.ctx.strict) {\n return null;\n }\n\n if (part.type !== 'MustacheStatement') {\n return null;\n }\n\n var path = part.path;\n\n if (path.type !== 'PathExpression') {\n return null;\n }\n\n if (path.head.type !== 'VarHead') {\n return null;\n }\n\n var name = path.head.name;\n\n if (name === 'has-block' || name === 'has-block-params') {\n return null;\n }\n\n if (this.ctx.hasBinding(name)) {\n return null;\n }\n\n if (path.tail.length !== 0) {\n return null;\n }\n\n if (part.params.length !== 0 || part.hash.pairs.length !== 0) {\n return null;\n }\n\n var context = LooseModeResolution.attr();\n var callee = this.ctx.builder.freeVar({\n name: name,\n context: context,\n symbol: this.ctx.table.allocateFree(name, context),\n loc: path.loc\n });\n return {\n expr: this.ctx.builder.deprecatedCall(arg, callee, part.loc),\n trusting: false\n };\n };\n\n _proto40.arg = function arg(_arg) {\n var offsets = this.ctx.loc(_arg.loc);\n var nameSlice = offsets.sliceStartChars({\n chars: _arg.name.length\n }).toSlice(_arg.name);\n var value = this.maybeDeprecatedCall(nameSlice, _arg.value) || this.attrValue(_arg.value);\n return this.ctx.builder.arg({\n name: nameSlice,\n value: value.expr,\n trusting: value.trusting\n }, offsets);\n }\n /**\n * This function classifies the head of an ASTv1.Element into an ASTv2.PathHead (if the\n * element is a component) or `'ElementHead'` (if the element is a simple element).\n *\n * Rules:\n *\n * 1. If the variable is an `@arg`, return an `AtHead`\n * 2. If the variable is `this`, return a `ThisHead`\n * 3. If the variable is in the current scope:\n * a. If the scope is the root scope, then return a Free `LocalVarHead`\n * b. Else, return a standard `LocalVarHead`\n * 4. If the tag name is a path and the variable is not in the current scope, Syntax Error\n * 5. If the variable is uppercase return a FreeVar(ResolveAsComponentHead)\n * 6. Otherwise, return `'ElementHead'`\n */\n ;\n\n _proto40.classifyTag = function classifyTag(variable, tail, loc$$1) {\n var uppercase = isUpperCase(variable);\n var inScope = variable[0] === '@' || variable === 'this' || this.ctx.hasBinding(variable);\n\n if (this.ctx.strict && !inScope) {\n if (uppercase) {\n throw generateSyntaxError(\"Attempted to invoke a component that was not in scope in a strict mode template, `<\" + variable + \">`. If you wanted to create an element with that name, convert it to lowercase - `<\" + variable.toLowerCase() + \">`\", loc$$1);\n } // In strict mode, values are always elements unless they are in scope\n\n\n return 'ElementHead';\n } // Since the parser handed us the HTML element name as a string, we need\n // to convert it into an ASTv1 path so it can be processed using the\n // expression normalizer.\n\n\n var isComponent = inScope || uppercase;\n var variableLoc = loc$$1.sliceStartChars({\n skipStart: 1,\n chars: variable.length\n });\n var tailLength = tail.reduce(function (accum, part) {\n return accum + 1 + part.length;\n }, 0);\n var pathEnd = variableLoc.getEnd().move(tailLength);\n var pathLoc = variableLoc.withEnd(pathEnd);\n\n if (isComponent) {\n var path = b.path({\n head: b.head(variable, variableLoc),\n tail: tail,\n loc: pathLoc\n });\n var resolution = this.ctx.resolutionFor(path, ComponentSyntaxContext);\n\n if (resolution.resolution === 'error') {\n throw generateSyntaxError(\"You attempted to invoke a path (`<\" + resolution.path + \">`) but \" + resolution.head + \" was not in scope\", loc$$1);\n }\n\n return new ExpressionNormalizer(this.ctx).normalize(path, resolution.resolution);\n } // If the tag name wasn't a valid component but contained a `.`, it's\n // a syntax error.\n\n\n if (tail.length > 0) {\n throw generateSyntaxError(\"You used \" + variable + \".\" + tail.join('.') + \" as a tag name, but \" + variable + \" is not in scope\", loc$$1);\n }\n\n return 'ElementHead';\n };\n\n (0, _emberBabel.createClass)(ElementNormalizer, [{\n key: \"expr\",\n get: function get() {\n return new ExpressionNormalizer(this.ctx);\n }\n }]);\n return ElementNormalizer;\n }();\n\n var Children = function Children(loc$$1, children, block) {\n this.loc = loc$$1;\n this.children = children;\n this.block = block;\n this.namedBlocks = children.filter(function (c) {\n return c instanceof NamedBlock;\n });\n this.hasSemanticContent = Boolean(children.filter(function (c) {\n if (c instanceof NamedBlock) {\n return false;\n }\n\n switch (c.type) {\n case 'GlimmerComment':\n case 'HtmlComment':\n return false;\n\n case 'HtmlText':\n return !/^\\s*$/.exec(c.chars);\n\n default:\n return true;\n }\n }).length);\n this.nonBlockChildren = children.filter(function (c) {\n return !(c instanceof NamedBlock);\n });\n };\n\n var TemplateChildren = /*#__PURE__*/function (_Children) {\n (0, _emberBabel.inheritsLoose)(TemplateChildren, _Children);\n\n function TemplateChildren() {\n return _Children.apply(this, arguments) || this;\n }\n\n var _proto41 = TemplateChildren.prototype;\n\n _proto41.assertTemplate = function assertTemplate(table) {\n if ((0, _util.isPresent)(this.namedBlocks)) {\n throw generateSyntaxError(\"Unexpected named block at the top-level of a template\", this.loc);\n }\n\n return this.block.builder.template(table, this.nonBlockChildren, this.block.loc(this.loc));\n };\n\n return TemplateChildren;\n }(Children);\n\n var BlockChildren = /*#__PURE__*/function (_Children2) {\n (0, _emberBabel.inheritsLoose)(BlockChildren, _Children2);\n\n function BlockChildren() {\n return _Children2.apply(this, arguments) || this;\n }\n\n var _proto42 = BlockChildren.prototype;\n\n _proto42.assertBlock = function assertBlock(table) {\n if ((0, _util.isPresent)(this.namedBlocks)) {\n throw generateSyntaxError(\"Unexpected named block nested in a normal block\", this.loc);\n }\n\n return this.block.builder.block(table, this.nonBlockChildren, this.loc);\n };\n\n return BlockChildren;\n }(Children);\n\n var ElementChildren = /*#__PURE__*/function (_Children3) {\n (0, _emberBabel.inheritsLoose)(ElementChildren, _Children3);\n\n function ElementChildren(el, loc$$1, children, block) {\n var _this15;\n\n _this15 = _Children3.call(this, loc$$1, children, block) || this;\n _this15.el = el;\n return _this15;\n }\n\n var _proto43 = ElementChildren.prototype;\n\n _proto43.assertNamedBlock = function assertNamedBlock(name, table) {\n if (this.el.base.selfClosing) {\n throw generateSyntaxError(\"<:\" + name.chars + \"/> is not a valid named block: named blocks cannot be self-closing\", this.loc);\n }\n\n if ((0, _util.isPresent)(this.namedBlocks)) {\n throw generateSyntaxError(\"Unexpected named block inside <:\" + name.chars + \"> named block: named blocks cannot contain nested named blocks\", this.loc);\n }\n\n if (!isLowerCase(name.chars)) {\n throw generateSyntaxError(\"<:\" + name.chars + \"> is not a valid named block, and named blocks must begin with a lowercase letter\", this.loc);\n }\n\n if (this.el.base.attrs.length > 0 || this.el.base.componentArgs.length > 0 || this.el.base.modifiers.length > 0) {\n throw generateSyntaxError(\"named block <:\" + name.chars + \"> cannot have attributes, arguments, or modifiers\", this.loc);\n }\n\n var offsets = SpanList.range(this.nonBlockChildren, this.loc);\n return this.block.builder.namedBlock(name, this.block.builder.block(table, this.nonBlockChildren, offsets), this.loc);\n };\n\n _proto43.assertElement = function assertElement(name, hasBlockParams) {\n if (hasBlockParams) {\n throw generateSyntaxError(\"Unexpected block params in <\" + name + \">: simple elements cannot have block params\", this.loc);\n }\n\n if ((0, _util.isPresent)(this.namedBlocks)) {\n var names = this.namedBlocks.map(function (b$$1) {\n return b$$1.name;\n });\n\n if (names.length === 1) {\n throw generateSyntaxError(\"Unexpected named block <:foo> inside <\" + name.chars + \"> HTML element\", this.loc);\n } else {\n var printedNames = names.map(function (n) {\n return \"<:\" + n.chars + \">\";\n }).join(', ');\n throw generateSyntaxError(\"Unexpected named blocks inside <\" + name.chars + \"> HTML element (\" + printedNames + \")\", this.loc);\n }\n }\n\n return this.el.simple(name, this.nonBlockChildren, this.loc);\n };\n\n _proto43.assertComponent = function assertComponent(name, table, hasBlockParams) {\n if ((0, _util.isPresent)(this.namedBlocks) && this.hasSemanticContent) {\n throw generateSyntaxError(\"Unexpected content inside <\" + name + \"> component invocation: when using named blocks, the tag cannot contain other content\", this.loc);\n }\n\n if ((0, _util.isPresent)(this.namedBlocks)) {\n if (hasBlockParams) {\n throw generateSyntaxError(\"Unexpected block params list on <\" + name + \"> component invocation: when passing named blocks, the invocation tag cannot take block params\", this.loc);\n }\n\n var seenNames = new Set();\n\n for (var _iterator4 = (0, _emberBabel.createForOfIteratorHelperLoose)(this.namedBlocks), _step4; !(_step4 = _iterator4()).done;) {\n var _block = _step4.value;\n var _name2 = _block.name.chars;\n\n if (seenNames.has(_name2)) {\n throw generateSyntaxError(\"Component had two named blocks with the same name, `<:\" + _name2 + \">`. Only one block with a given name may be passed\", this.loc);\n }\n\n if (_name2 === 'inverse' && seenNames.has('else') || _name2 === 'else' && seenNames.has('inverse')) {\n throw generateSyntaxError(\"Component has both <:else> and <:inverse> block. <:inverse> is an alias for <:else>\", this.loc);\n }\n\n seenNames.add(_name2);\n }\n\n return this.namedBlocks;\n } else {\n return [this.block.builder.namedBlock(SourceSlice.synthetic('default'), this.block.builder.block(table, this.nonBlockChildren, this.loc), this.loc)];\n }\n };\n\n return ElementChildren;\n }(Children);\n\n function printPath(node$$1) {\n if (node$$1.type !== 'PathExpression' && node$$1.path.type === 'PathExpression') {\n return printPath(node$$1.path);\n } else {\n return new Printer({\n entityEncoding: 'raw'\n }).print(node$$1);\n }\n }\n\n function printHead(node$$1) {\n if (node$$1.type === 'PathExpression') {\n switch (node$$1.head.type) {\n case 'AtHead':\n case 'VarHead':\n return node$$1.head.name;\n\n case 'ThisHead':\n return 'this';\n }\n } else if (node$$1.path.type === 'PathExpression') {\n return printHead(node$$1.path);\n } else {\n return new Printer({\n entityEncoding: 'raw'\n }).print(node$$1);\n }\n }\n\n function isKeyword(word) {\n return word in KEYWORDS_TYPES;\n }\n /**\n * This includes the full list of keywords currently in use in the template\n * language, and where their valid usages are.\n */\n\n\n var KEYWORDS_TYPES = {\n component: ['Call', 'Append', 'Block'],\n debugger: ['Append'],\n 'each-in': ['Block'],\n each: ['Block'],\n 'has-block-params': ['Call', 'Append'],\n 'has-block': ['Call', 'Append'],\n helper: ['Call', 'Append'],\n if: ['Call', 'Append', 'Block'],\n 'in-element': ['Block'],\n let: ['Block'],\n 'link-to': ['Append', 'Block'],\n log: ['Call', 'Append'],\n modifier: ['Call'],\n mount: ['Append'],\n mut: ['Call', 'Append'],\n outlet: ['Append'],\n 'query-params': ['Call'],\n readonly: ['Call', 'Append'],\n unbound: ['Call', 'Append'],\n unless: ['Call', 'Append', 'Block'],\n with: ['Block'],\n yield: ['Append']\n };\n /**\n * Gets the correct Token from the Node based on it's type\n */\n\n _exports.KEYWORDS_TYPES = KEYWORDS_TYPES;\n\n function tokensFromType(node, scopedTokens, options) {\n if (node.type === 'PathExpression') {\n if (node.head.type === 'AtHead' || node.head.type === 'ThisHead') {\n return;\n }\n\n var possbleToken = node.head.name;\n\n if (scopedTokens.indexOf(possbleToken) === -1) {\n return possbleToken;\n }\n } else if (node.type === 'ElementNode') {\n var tag = node.tag;\n var char = tag.charAt(0);\n\n if (char === ':' || char === '@') {\n return;\n }\n\n if (!options.includeHtmlElements && tag.indexOf('.') === -1 && tag.toLowerCase() === tag) {\n return;\n }\n\n if (tag.substr(0, 5) === 'this.') {\n return;\n }\n\n if (scopedTokens.indexOf(tag) !== -1) {\n return;\n }\n\n return tag;\n }\n }\n /**\n * Adds tokens to the tokensSet based on their node.type\n */\n\n\n function addTokens(tokensSet, node, scopedTokens, options) {\n var maybeTokens = tokensFromType(node, scopedTokens, options);\n (Array.isArray(maybeTokens) ? maybeTokens : [maybeTokens]).forEach(function (maybeToken) {\n if (maybeToken !== undefined && maybeToken[0] !== '@') {\n tokensSet.add(maybeToken.split('.')[0]);\n }\n });\n }\n /**\n * Parses and traverses a given handlebars html template to extract all template locals\n * referenced that could possible come from the praent scope. Can exclude known keywords\n * optionally.\n */\n\n\n function getTemplateLocals(html, options) {\n if (options === void 0) {\n options = {\n includeHtmlElements: false,\n includeKeywords: false\n };\n }\n\n var ast = preprocess(html);\n var tokensSet = new Set();\n var scopedTokens = [];\n traverse(ast, {\n Block: {\n enter: function enter(_ref35) {\n var blockParams = _ref35.blockParams;\n blockParams.forEach(function (param) {\n scopedTokens.push(param);\n });\n },\n exit: function exit(_ref36) {\n var blockParams = _ref36.blockParams;\n blockParams.forEach(function () {\n scopedTokens.pop();\n });\n }\n },\n ElementNode: {\n enter: function enter(node) {\n node.blockParams.forEach(function (param) {\n scopedTokens.push(param);\n });\n addTokens(tokensSet, node, scopedTokens, options);\n },\n exit: function exit(_ref37) {\n var blockParams = _ref37.blockParams;\n blockParams.forEach(function () {\n scopedTokens.pop();\n });\n }\n },\n PathExpression: function PathExpression(node) {\n addTokens(tokensSet, node, scopedTokens, options);\n }\n });\n var tokens = [];\n tokensSet.forEach(function (s) {\n return tokens.push(s);\n });\n\n if (!(options === null || options === void 0 ? void 0 : options.includeKeywords)) {\n tokens = tokens.filter(function (token) {\n return !isKeyword(token);\n });\n }\n\n return tokens;\n }\n});","define(\"@glimmer/util\", [\"exports\", \"ember-babel\"], function (_exports, _emberBabel) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.assertNever = assertNever;\n _exports.assert = debugAssert$$1;\n _exports.deprecate = deprecate$$1;\n _exports.dict = dict;\n _exports.isDict = isDict;\n _exports.isObject = isObject;\n _exports.isSerializationFirstNode = isSerializationFirstNode;\n _exports.fillNulls = fillNulls;\n _exports.values = values;\n _exports.castToSimple = castToSimple;\n _exports.castToBrowser = castToBrowser;\n _exports.checkNode = checkNode;\n _exports.intern = intern;\n _exports.buildUntouchableThis = buildUntouchableThis;\n _exports.emptyArray = emptyArray;\n _exports.isEmptyArray = isEmptyArray;\n _exports.clearElement = clearElement;\n _exports.keys = keys;\n _exports.unwrap = unwrap;\n _exports.expect = expect;\n _exports.unreachable = unreachable;\n _exports.exhausted = exhausted;\n _exports.enumerableSymbol = enumerableSymbol;\n _exports.strip = strip;\n _exports.isHandle = isHandle;\n _exports.isNonPrimitiveHandle = isNonPrimitiveHandle;\n _exports.constants = constants;\n _exports.isSmallInt = isSmallInt;\n _exports.encodeNegative = encodeNegative;\n _exports.decodeNegative = decodeNegative;\n _exports.encodePositive = encodePositive;\n _exports.decodePositive = decodePositive;\n _exports.encodeHandle = encodeHandle;\n _exports.decodeHandle = decodeHandle;\n _exports.encodeImmediate = encodeImmediate;\n _exports.decodeImmediate = decodeImmediate;\n _exports.unwrapHandle = unwrapHandle;\n _exports.unwrapTemplate = unwrapTemplate;\n _exports.extractHandle = extractHandle;\n _exports.isOkHandle = isOkHandle;\n _exports.isErrHandle = isErrHandle;\n _exports.isPresent = isPresent;\n _exports.ifPresent = ifPresent;\n _exports.toPresentOption = toPresentOption;\n _exports.assertPresent = assertPresent;\n _exports.mapPresent = mapPresent;\n _exports.symbol = _exports.tuple = _exports.HAS_NATIVE_SYMBOL = _exports.HAS_NATIVE_PROXY = _exports.EMPTY_NUMBER_ARRAY = _exports.EMPTY_STRING_ARRAY = _exports.EMPTY_ARRAY = _exports.verifySteps = _exports.logStep = _exports.endTestSteps = _exports.beginTestSteps = _exports.debugToString = _exports._WeakSet = _exports.assign = _exports.SERIALIZATION_FIRST_NODE_STRING = _exports.Stack = _exports.LOGGER = _exports.LOCAL_LOGGER = void 0;\n var EMPTY_ARRAY = Object.freeze([]);\n _exports.EMPTY_ARRAY = EMPTY_ARRAY;\n\n function emptyArray() {\n return EMPTY_ARRAY;\n }\n\n var EMPTY_STRING_ARRAY = emptyArray();\n _exports.EMPTY_STRING_ARRAY = EMPTY_STRING_ARRAY;\n var EMPTY_NUMBER_ARRAY = emptyArray();\n /**\n * This function returns `true` if the input array is the special empty array sentinel,\n * which is sometimes used for optimizations.\n */\n\n _exports.EMPTY_NUMBER_ARRAY = EMPTY_NUMBER_ARRAY;\n\n function isEmptyArray(input) {\n return input === EMPTY_ARRAY;\n } // import Logger from './logger';\n\n\n function debugAssert$$1(test, msg) {\n // if (!alreadyWarned) {\n // alreadyWarned = true;\n // Logger.warn(\"Don't leave debug assertions on in public builds\");\n // }\n if (!test) {\n throw new Error(msg || 'assertion failure');\n }\n }\n\n function deprecate$$1(desc) {\n LOCAL_LOGGER.warn(\"DEPRECATION: \" + desc);\n }\n\n function dict() {\n return Object.create(null);\n }\n\n function isDict(u) {\n return u !== null && u !== undefined;\n }\n\n function isObject(u) {\n return typeof u === 'function' || typeof u === 'object' && u !== null;\n }\n\n var StackImpl = /*#__PURE__*/function () {\n function StackImpl(values) {\n if (values === void 0) {\n values = [];\n }\n\n this.current = null;\n this.stack = values;\n }\n\n var _proto = StackImpl.prototype;\n\n _proto.push = function push(item) {\n this.current = item;\n this.stack.push(item);\n };\n\n _proto.pop = function pop() {\n var item = this.stack.pop();\n var len = this.stack.length;\n this.current = len === 0 ? null : this.stack[len - 1];\n return item === undefined ? null : item;\n };\n\n _proto.nth = function nth(from) {\n var len = this.stack.length;\n return len < from ? null : this.stack[len - from];\n };\n\n _proto.isEmpty = function isEmpty() {\n return this.stack.length === 0;\n };\n\n _proto.toArray = function toArray() {\n return this.stack;\n };\n\n (0, _emberBabel.createClass)(StackImpl, [{\n key: \"size\",\n get: function get() {\n return this.stack.length;\n }\n }]);\n return StackImpl;\n }();\n\n _exports.Stack = StackImpl;\n\n function clearElement(parent) {\n var current = parent.firstChild;\n\n while (current) {\n var next = current.nextSibling;\n parent.removeChild(current);\n current = next;\n }\n }\n\n var SERIALIZATION_FIRST_NODE_STRING = '%+b:0%';\n _exports.SERIALIZATION_FIRST_NODE_STRING = SERIALIZATION_FIRST_NODE_STRING;\n\n function isSerializationFirstNode(node) {\n return node.nodeValue === SERIALIZATION_FIRST_NODE_STRING;\n }\n\n var _a;\n\n var objKeys = Object.keys;\n\n function assignFn(obj) {\n for (var i = 1; i < arguments.length; i++) {\n var assignment = arguments[i];\n if (assignment === null || typeof assignment !== 'object') continue;\n\n var _keys = objKeys(assignment);\n\n for (var j = 0; j < _keys.length; j++) {\n var key = _keys[j];\n obj[key] = assignment[key];\n }\n }\n\n return obj;\n }\n\n var assign = (_a = Object.assign) !== null && _a !== void 0 ? _a : assignFn;\n _exports.assign = assign;\n\n function fillNulls(count) {\n var arr = new Array(count);\n\n for (var i = 0; i < count; i++) {\n arr[i] = null;\n }\n\n return arr;\n }\n\n function values(obj) {\n var vals = [];\n\n for (var key in obj) {\n vals.push(obj[key]);\n }\n\n return vals;\n }\n /**\n Strongly hint runtimes to intern the provided string.\n \n When do I need to use this function?\n \n For the most part, never. Pre-mature optimization is bad, and often the\n runtime does exactly what you need it to, and more often the trade-off isn't\n worth it.\n \n Why?\n \n Runtimes store strings in at least 2 different representations:\n Ropes and Symbols (interned strings). The Rope provides a memory efficient\n data-structure for strings created from concatenation or some other string\n manipulation like splitting.\n \n Unfortunately checking equality of different ropes can be quite costly as\n runtimes must resort to clever string comparison algorithms. These\n algorithms typically cost in proportion to the length of the string.\n Luckily, this is where the Symbols (interned strings) shine. As Symbols are\n unique by their string content, equality checks can be done by pointer\n comparison.\n \n How do I know if my string is a rope or symbol?\n \n Typically (warning general sweeping statement, but truthy in runtimes at\n present) static strings created as part of the JS source are interned.\n Strings often used for comparisons can be interned at runtime if some\n criteria are met. One of these criteria can be the size of the entire rope.\n For example, in chrome 38 a rope longer then 12 characters will not\n intern, nor will segments of that rope.\n \n Some numbers: http://jsperf.com/eval-vs-keys/8\n \n Known Trick™\n \n @private\n @return {String} interned version of the provided string\n */\n\n\n function intern(str) {\n var obj = {};\n obj[str] = 1;\n\n for (var key in obj) {\n if (key === str) {\n return key;\n }\n }\n\n return str;\n }\n\n var HAS_NATIVE_PROXY = typeof Proxy === 'function';\n _exports.HAS_NATIVE_PROXY = HAS_NATIVE_PROXY;\n\n var HAS_NATIVE_SYMBOL = function () {\n if (typeof Symbol !== 'function') {\n return false;\n } // eslint-disable-next-line symbol-description\n\n\n return typeof Symbol() === 'symbol';\n }();\n\n _exports.HAS_NATIVE_SYMBOL = HAS_NATIVE_SYMBOL;\n\n function keys(obj) {\n return Object.keys(obj);\n }\n\n function unwrap(val) {\n if (val === null || val === undefined) throw new Error(\"Expected value to be present\");\n return val;\n }\n\n function expect(val, message) {\n if (val === null || val === undefined) throw new Error(message);\n return val;\n }\n\n function unreachable(message) {\n if (message === void 0) {\n message = 'unreachable';\n }\n\n return new Error(message);\n }\n\n function exhausted(value) {\n throw new Error(\"Exhausted \" + value);\n }\n\n var tuple = function tuple() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return args;\n };\n\n _exports.tuple = tuple;\n\n function enumerableSymbol(key) {\n return intern(\"__\" + key + Math.floor(Math.random() * Date.now()) + \"__\");\n }\n\n var symbol = HAS_NATIVE_SYMBOL ? Symbol : enumerableSymbol;\n _exports.symbol = symbol;\n\n function strip(strings) {\n var out = '';\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n for (var i = 0; i < strings.length; i++) {\n var string = strings[i];\n var dynamic = args[i] !== undefined ? String(args[i]) : '';\n out += \"\" + string + dynamic;\n }\n\n var lines = out.split('\\n');\n\n while (lines.length && lines[0].match(/^\\s*$/)) {\n lines.shift();\n }\n\n while (lines.length && lines[lines.length - 1].match(/^\\s*$/)) {\n lines.pop();\n }\n\n var min = Infinity;\n\n for (var _iterator = (0, _emberBabel.createForOfIteratorHelperLoose)(lines), _step; !(_step = _iterator()).done;) {\n var _line2 = _step.value;\n\n var _leading = _line2.match(/^\\s*/)[0].length;\n\n min = Math.min(min, _leading);\n }\n\n var stripped = [];\n\n for (var _iterator2 = (0, _emberBabel.createForOfIteratorHelperLoose)(lines), _step2; !(_step2 = _iterator2()).done;) {\n var _line3 = _step2.value;\n stripped.push(_line3.slice(min));\n }\n\n return stripped.join('\\n');\n }\n\n function isHandle(value) {\n return value >= 0;\n }\n\n function isNonPrimitiveHandle(value) {\n return value > 3\n /* ENCODED_UNDEFINED_HANDLE */\n ;\n }\n\n function constants() {\n for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return [false, true, null, undefined].concat(values);\n }\n\n function isSmallInt(value) {\n return value % 1 === 0 && value <= 536870911\n /* MAX_INT */\n && value >= -536870912\n /* MIN_INT */\n ;\n }\n\n function encodeNegative(num) {\n return num & -536870913\n /* SIGN_BIT */\n ;\n }\n\n function decodeNegative(num) {\n return num | ~-536870913\n /* SIGN_BIT */\n ;\n }\n\n function encodePositive(num) {\n return ~num;\n }\n\n function decodePositive(num) {\n return ~num;\n }\n\n function encodeHandle(num) {\n return num;\n }\n\n function decodeHandle(num) {\n return num;\n }\n\n function encodeImmediate(num) {\n num |= 0;\n return num < 0 ? encodeNegative(num) : encodePositive(num);\n }\n\n function decodeImmediate(num) {\n num |= 0;\n return num > -536870913\n /* SIGN_BIT */\n ? decodePositive(num) : decodeNegative(num);\n } // Warm\n\n\n [1, -1].forEach(function (x) {\n return decodeImmediate(encodeImmediate(x));\n });\n\n function unwrapHandle(handle) {\n if (typeof handle === 'number') {\n return handle;\n } else {\n var error = handle.errors[0];\n throw new Error(\"Compile Error: \" + error.problem + \" @ \" + error.span.start + \"..\" + error.span.end);\n }\n }\n\n function unwrapTemplate(template) {\n if (template.result === 'error') {\n throw new Error(\"Compile Error: \" + template.problem + \" @ \" + template.span.start + \"..\" + template.span.end);\n }\n\n return template;\n }\n\n function extractHandle(handle) {\n if (typeof handle === 'number') {\n return handle;\n } else {\n return handle.handle;\n }\n }\n\n function isOkHandle(handle) {\n return typeof handle === 'number';\n }\n\n function isErrHandle(handle) {\n return typeof handle === 'number';\n }\n\n var weakSet = typeof WeakSet === 'function' ? WeakSet : /*#__PURE__*/function () {\n function WeakSetPolyFill() {\n this._map = new WeakMap();\n }\n\n var _proto2 = WeakSetPolyFill.prototype;\n\n _proto2.add = function add(val) {\n this._map.set(val, true);\n\n return this;\n };\n\n _proto2.delete = function _delete(val) {\n return this._map.delete(val);\n };\n\n _proto2.has = function has(val) {\n return this._map.has(val);\n };\n\n return WeakSetPolyFill;\n }();\n _exports._WeakSet = weakSet;\n\n function castToSimple(node) {\n if (isDocument(node)) {\n return node;\n } else if (isElement(node)) {\n return node;\n } else {\n return node;\n }\n }\n\n function castToBrowser(node, sugaryCheck) {\n if (node === null || node === undefined) {\n return null;\n }\n\n if (typeof document === undefined) {\n throw new Error('Attempted to cast to a browser node in a non-browser context');\n }\n\n if (isDocument(node)) {\n return node;\n }\n\n if (node.ownerDocument !== document) {\n throw new Error('Attempted to cast to a browser node with a node that was not created from this document');\n }\n\n return checkNode(node, sugaryCheck);\n }\n\n function checkError(from, check) {\n return new Error(\"cannot cast a \" + from + \" into \" + check);\n }\n\n function isDocument(node) {\n return node.nodeType === 9\n /* DOCUMENT_NODE */\n ;\n }\n\n function isElement(node) {\n return node.nodeType === 1\n /* ELEMENT_NODE */\n ;\n }\n\n function checkNode(node, check) {\n var isMatch = false;\n\n if (node !== null) {\n if (typeof check === 'string') {\n isMatch = stringCheckNode(node, check);\n } else if (Array.isArray(check)) {\n isMatch = check.some(function (c) {\n return stringCheckNode(node, c);\n });\n } else {\n throw unreachable();\n }\n }\n\n if (isMatch) {\n return node;\n } else {\n throw checkError(\"SimpleElement(\" + node + \")\", check);\n }\n }\n\n function stringCheckNode(node, check) {\n switch (check) {\n case 'NODE':\n return true;\n\n case 'HTML':\n return node instanceof HTMLElement;\n\n case 'SVG':\n return node instanceof SVGElement;\n\n case 'ELEMENT':\n return node instanceof Element;\n\n default:\n if (check.toUpperCase() === check) {\n throw new Error(\"BUG: this code is missing handling for a generic node type\");\n }\n\n return node instanceof Element && node.tagName.toLowerCase() === check;\n }\n }\n\n function isPresent(list) {\n return list.length > 0;\n }\n\n function ifPresent(list, ifPresent, otherwise) {\n if (isPresent(list)) {\n return ifPresent(list);\n } else {\n return otherwise();\n }\n }\n\n function toPresentOption(list) {\n if (isPresent(list)) {\n return list;\n } else {\n return null;\n }\n }\n\n function assertPresent(list, message) {\n if (message === void 0) {\n message = \"unexpected empty list\";\n }\n\n if (!isPresent(list)) {\n throw new Error(message);\n }\n }\n\n function mapPresent(list, callback) {\n if (list === null) {\n return null;\n }\n\n var out = [];\n\n for (var _iterator3 = (0, _emberBabel.createForOfIteratorHelperLoose)(list), _step3; !(_step3 = _iterator3()).done;) {\n var _item = _step3.value;\n out.push(callback(_item));\n }\n\n return out;\n }\n\n function buildUntouchableThis(source) {\n var context = null;\n\n if (true\n /* DEBUG */\n && HAS_NATIVE_PROXY) {\n var assertOnProperty = function assertOnProperty(property) {\n throw new Error(\"You accessed `this.\" + String(property) + \"` from a function passed to the \" + source + \", but the function itself was not bound to a valid `this` context. Consider updating to use a bound function (for instance, use an arrow function, `() => {}`).\");\n };\n\n context = new Proxy({}, {\n get: function get(_target, property) {\n assertOnProperty(property);\n },\n set: function set(_target, property) {\n assertOnProperty(property);\n return false;\n },\n has: function has(_target, property) {\n assertOnProperty(property);\n return false;\n }\n });\n }\n\n return context;\n }\n\n var debugToString;\n\n if (true\n /* DEBUG */\n ) {\n var getFunctionName = function getFunctionName(fn) {\n var functionName = fn.name;\n\n if (functionName === undefined) {\n var match = Function.prototype.toString.call(fn).match(/function (\\w+)\\s*\\(/);\n functionName = match && match[1] || '';\n }\n\n return functionName.replace(/^bound /, '');\n };\n\n var getObjectName = function getObjectName(obj) {\n var name;\n var className;\n\n if (obj.constructor && typeof obj.constructor === 'function') {\n className = getFunctionName(obj.constructor);\n }\n\n if ('toString' in obj && obj.toString !== Object.prototype.toString && obj.toString !== Function.prototype.toString) {\n name = obj.toString();\n } // If the class has a decent looking name, and the `toString` is one of the\n // default Ember toStrings, replace the constructor portion of the toString\n // with the class name. We check the length of the class name to prevent doing\n // this when the value is minified.\n\n\n if (name && name.match(/<.*:ember\\d+>/) && className && className[0] !== '_' && className.length > 2 && className !== 'Class') {\n return name.replace(/<.*:/, \"<\" + className + \":\");\n }\n\n return name || className;\n };\n\n var getPrimitiveName = function getPrimitiveName(value) {\n return String(value);\n };\n\n debugToString = function debugToString(value) {\n if (typeof value === 'function') {\n return getFunctionName(value) || \"(unknown function)\";\n } else if (typeof value === 'object' && value !== null) {\n return getObjectName(value) || \"(unknown object)\";\n } else {\n return getPrimitiveName(value);\n }\n };\n }\n\n var debugToString$1 = debugToString;\n _exports.debugToString = debugToString$1;\n var beginTestSteps;\n _exports.beginTestSteps = beginTestSteps;\n var endTestSteps;\n _exports.endTestSteps = endTestSteps;\n var verifySteps;\n _exports.verifySteps = verifySteps;\n var logStep;\n /**\n * This constant exists to make it easier to differentiate normal logs from\n * errant console.logs. LOCAL_LOGGER should only be used inside a\n * LOCAL_SHOULD_LOG check.\n *\n * It does not alleviate the need to check LOCAL_SHOULD_LOG, which is used\n * for stripping.\n */\n\n _exports.logStep = logStep;\n var LOCAL_LOGGER = console;\n /**\n * This constant exists to make it easier to differentiate normal logs from\n * errant console.logs. LOGGER can be used outside of LOCAL_SHOULD_LOG checks,\n * and is meant to be used in the rare situation where a console.* call is\n * actually appropriate.\n */\n\n _exports.LOCAL_LOGGER = LOCAL_LOGGER;\n var LOGGER = console;\n _exports.LOGGER = LOGGER;\n\n function assertNever(value, desc) {\n if (desc === void 0) {\n desc = 'unexpected unreachable branch';\n }\n\n LOGGER.log('unreachable', value);\n LOGGER.log(desc + \" :: \" + JSON.stringify(value) + \" (\" + value + \")\");\n throw new Error(\"code reached unreachable\");\n }\n});","define(\"@glimmer/wire-format\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.is = is;\n _exports.isAttribute = isAttribute;\n _exports.isStringLiteral = isStringLiteral;\n _exports.getStringFromValue = getStringFromValue;\n _exports.isArgument = isArgument;\n _exports.isHelper = isHelper;\n _exports.isGet = _exports.isFlushElement = void 0;\n\n function is(variant) {\n return function (value) {\n return Array.isArray(value) && value[0] === variant;\n };\n } // Statements\n\n\n var isFlushElement = is(12\n /* FlushElement */\n );\n _exports.isFlushElement = isFlushElement;\n\n function isAttribute(val) {\n return val[0] === 14\n /* StaticAttr */\n || val[0] === 15\n /* DynamicAttr */\n || val[0] === 22\n /* TrustingDynamicAttr */\n || val[0] === 16\n /* ComponentAttr */\n || val[0] === 24\n /* StaticComponentAttr */\n || val[0] === 23\n /* TrustingComponentAttr */\n || val[0] === 17\n /* AttrSplat */\n || val[0] === 4\n /* Modifier */\n ;\n }\n\n function isStringLiteral(expr) {\n return typeof expr === 'string';\n }\n\n function getStringFromValue(expr) {\n return expr;\n }\n\n function isArgument(val) {\n return val[0] === 21\n /* StaticArg */\n || val[0] === 20\n /* DynamicArg */\n ;\n }\n\n function isHelper(expr) {\n return Array.isArray(expr) && expr[0] === 28\n /* Call */\n ;\n } // Expressions\n\n\n var isGet = is(30\n /* GetSymbol */\n );\n _exports.isGet = isGet;\n});","define(\"@handlebars/parser/index\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.Visitor = Visitor;\n _exports.WhitespaceControl = WhitespaceControl;\n _exports.Exception = Exception;\n _exports.print = print;\n _exports.PrintVisitor = PrintVisitor;\n _exports.parse = parse;\n _exports.parseWithoutProcessing = parseWithoutProcessing;\n _exports.parser = void 0;\n var errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];\n\n function Exception(message, node) {\n var loc = node && node.loc,\n line,\n endLineNumber,\n column,\n endColumn;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n message += ' - ' + line + ':' + column;\n }\n\n var tmp = Error.prototype.constructor.call(this, message); // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n /* istanbul ignore else */\n\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber; // Work around issue under safari where we can't directly set the column value\n\n /* istanbul ignore next */\n\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n }\n\n Exception.prototype = new Error();\n\n function Visitor() {\n this.parents = [];\n }\n\n Visitor.prototype = {\n constructor: Visitor,\n mutating: false,\n // Visits a given value. If mutating, will replace the value if necessary.\n acceptKey: function acceptKey(node, name) {\n var value = this.accept(node[name]);\n\n if (this.mutating) {\n // Hacky sanity check: This may have a few false positives for type for the helper\n // methods but will generally do the right thing without a lot of overhead.\n if (value && !Visitor.prototype[value.type]) {\n throw new Exception('Unexpected node type \"' + value.type + '\" found when accepting ' + name + ' on ' + node.type);\n }\n\n node[name] = value;\n }\n },\n // Performs an accept operation with added sanity check to ensure\n // required keys are not removed.\n acceptRequired: function acceptRequired(node, name) {\n this.acceptKey(node, name);\n\n if (!node[name]) {\n throw new Exception(node.type + ' requires ' + name);\n }\n },\n // Traverses a given array. If mutating, empty respnses will be removed\n // for child elements.\n acceptArray: function acceptArray(array) {\n for (var i = 0, l = array.length; i < l; i++) {\n this.acceptKey(array, i);\n\n if (!array[i]) {\n array.splice(i, 1);\n i--;\n l--;\n }\n }\n },\n accept: function accept(object) {\n if (!object) {\n return;\n }\n /* istanbul ignore next: Sanity code */\n\n\n if (!this[object.type]) {\n throw new Exception('Unknown type: ' + object.type, object);\n }\n\n if (this.current) {\n this.parents.unshift(this.current);\n }\n\n this.current = object;\n var ret = this[object.type](object);\n this.current = this.parents.shift();\n\n if (!this.mutating || ret) {\n return ret;\n } else if (ret !== false) {\n return object;\n }\n },\n Program: function Program(program) {\n this.acceptArray(program.body);\n },\n MustacheStatement: visitSubExpression,\n Decorator: visitSubExpression,\n BlockStatement: visitBlock,\n DecoratorBlock: visitBlock,\n PartialStatement: visitPartial,\n PartialBlockStatement: function PartialBlockStatement(partial) {\n visitPartial.call(this, partial);\n this.acceptKey(partial, 'program');\n },\n ContentStatement: function ContentStatement()\n /* content */\n {},\n CommentStatement: function CommentStatement()\n /* comment */\n {},\n SubExpression: visitSubExpression,\n PathExpression: function PathExpression()\n /* path */\n {},\n StringLiteral: function StringLiteral()\n /* string */\n {},\n NumberLiteral: function NumberLiteral()\n /* number */\n {},\n BooleanLiteral: function BooleanLiteral()\n /* bool */\n {},\n UndefinedLiteral: function UndefinedLiteral()\n /* literal */\n {},\n NullLiteral: function NullLiteral()\n /* literal */\n {},\n Hash: function Hash(hash) {\n this.acceptArray(hash.pairs);\n },\n HashPair: function HashPair(pair) {\n this.acceptRequired(pair, 'value');\n }\n };\n\n function visitSubExpression(mustache) {\n this.acceptRequired(mustache, 'path');\n this.acceptArray(mustache.params);\n this.acceptKey(mustache, 'hash');\n }\n\n function visitBlock(block) {\n visitSubExpression.call(this, block);\n this.acceptKey(block, 'program');\n this.acceptKey(block, 'inverse');\n }\n\n function visitPartial(partial) {\n this.acceptRequired(partial, 'name');\n this.acceptArray(partial.params);\n this.acceptKey(partial, 'hash');\n }\n\n function WhitespaceControl(options) {\n if (options === void 0) {\n options = {};\n }\n\n this.options = options;\n }\n\n WhitespaceControl.prototype = new Visitor();\n\n WhitespaceControl.prototype.Program = function (program) {\n var doStandalone = !this.options.ignoreStandalone;\n var isRoot = !this.isRootSeen;\n this.isRootSeen = true;\n var body = program.body;\n\n for (var i = 0, l = body.length; i < l; i++) {\n var current = body[i],\n strip = this.accept(current);\n\n if (!strip) {\n continue;\n }\n\n var _isPrevWhitespace = isPrevWhitespace(body, i, isRoot),\n _isNextWhitespace = isNextWhitespace(body, i, isRoot),\n openStandalone = strip.openStandalone && _isPrevWhitespace,\n closeStandalone = strip.closeStandalone && _isNextWhitespace,\n inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;\n\n if (strip.close) {\n omitRight(body, i, true);\n }\n\n if (strip.open) {\n omitLeft(body, i, true);\n }\n\n if (doStandalone && inlineStandalone) {\n omitRight(body, i);\n\n if (omitLeft(body, i)) {\n // If we are on a standalone node, save the indent info for partials\n if (current.type === 'PartialStatement') {\n // Pull out the whitespace from the final line\n current.indent = /([ \\t]+$)/.exec(body[i - 1].original)[1];\n }\n }\n }\n\n if (doStandalone && openStandalone) {\n omitRight((current.program || current.inverse).body); // Strip out the previous content node if it's whitespace only\n\n omitLeft(body, i);\n }\n\n if (doStandalone && closeStandalone) {\n // Always strip the next node\n omitRight(body, i);\n omitLeft((current.inverse || current.program).body);\n }\n }\n\n return program;\n };\n\n WhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function (block) {\n this.accept(block.program);\n this.accept(block.inverse); // Find the inverse program that is involed with whitespace stripping.\n\n var program = block.program || block.inverse,\n inverse = block.program && block.inverse,\n firstInverse = inverse,\n lastInverse = inverse;\n\n if (inverse && inverse.chained) {\n firstInverse = inverse.body[0].program; // Walk the inverse chain to find the last inverse that is actually in the chain.\n\n while (lastInverse.chained) {\n lastInverse = lastInverse.body[lastInverse.body.length - 1].program;\n }\n }\n\n var strip = {\n open: block.openStrip.open,\n close: block.closeStrip.close,\n // Determine the standalone candiacy. Basically flag our content as being possibly standalone\n // so our parent can determine if we actually are standalone\n openStandalone: isNextWhitespace(program.body),\n closeStandalone: isPrevWhitespace((firstInverse || program).body)\n };\n\n if (block.openStrip.close) {\n omitRight(program.body, null, true);\n }\n\n if (inverse) {\n var inverseStrip = block.inverseStrip;\n\n if (inverseStrip.open) {\n omitLeft(program.body, null, true);\n }\n\n if (inverseStrip.close) {\n omitRight(firstInverse.body, null, true);\n }\n\n if (block.closeStrip.open) {\n omitLeft(lastInverse.body, null, true);\n } // Find standalone else statments\n\n\n if (!this.options.ignoreStandalone && isPrevWhitespace(program.body) && isNextWhitespace(firstInverse.body)) {\n omitLeft(program.body);\n omitRight(firstInverse.body);\n }\n } else if (block.closeStrip.open) {\n omitLeft(program.body, null, true);\n }\n\n return strip;\n };\n\n WhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function (mustache) {\n return mustache.strip;\n };\n\n WhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function (node) {\n /* istanbul ignore next */\n var strip = node.strip || {};\n return {\n inlineStandalone: true,\n open: strip.open,\n close: strip.close\n };\n };\n\n function isPrevWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = body.length;\n } // Nodes that end with newlines are considered whitespace (but are special\n // cased for strip operations)\n\n\n var prev = body[i - 1],\n sibling = body[i - 2];\n\n if (!prev) {\n return isRoot;\n }\n\n if (prev.type === 'ContentStatement') {\n return (sibling || !isRoot ? /\\r?\\n\\s*?$/ : /(^|\\r?\\n)\\s*?$/).test(prev.original);\n }\n }\n\n function isNextWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = -1;\n }\n\n var next = body[i + 1],\n sibling = body[i + 2];\n\n if (!next) {\n return isRoot;\n }\n\n if (next.type === 'ContentStatement') {\n return (sibling || !isRoot ? /^\\s*?\\r?\\n/ : /^\\s*?(\\r?\\n|$)/).test(next.original);\n }\n } // Marks the node to the right of the position as omitted.\n // I.e. {{foo}}' ' will mark the ' ' node as omitted.\n //\n // If i is undefined, then the first child will be marked as such.\n //\n // If multiple is truthy then all whitespace will be stripped out until non-whitespace\n // content is met.\n\n\n function omitRight(body, i, multiple) {\n var current = body[i == null ? 0 : i + 1];\n\n if (!current || current.type !== 'ContentStatement' || !multiple && current.rightStripped) {\n return;\n }\n\n var original = current.value;\n current.value = current.value.replace(multiple ? /^\\s+/ : /^[ \\t]*\\r?\\n?/, '');\n current.rightStripped = current.value !== original;\n } // Marks the node to the left of the position as omitted.\n // I.e. ' '{{foo}} will mark the ' ' node as omitted.\n //\n // If i is undefined then the last child will be marked as such.\n //\n // If multiple is truthy then all whitespace will be stripped out until non-whitespace\n // content is met.\n\n\n function omitLeft(body, i, multiple) {\n var current = body[i == null ? body.length - 1 : i - 1];\n\n if (!current || current.type !== 'ContentStatement' || !multiple && current.leftStripped) {\n return;\n } // We omit the last node if it's whitespace only and not preceded by a non-content node.\n\n\n var original = current.value;\n current.value = current.value.replace(multiple ? /\\s+$/ : /[ \\t]+$/, '');\n current.leftStripped = current.value !== original;\n return current.leftStripped;\n }\n /* parser generated by jison 0.4.18 */\n\n /*\n Returns a Parser object of the following structure:\n \n Parser: {\n yy: {}\n }\n \n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n \n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n \n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n \n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n \n \n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n \n \n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n */\n\n\n var parser = function () {\n var o = function o(k, v, _o, l) {\n for (_o = _o || {}, l = k.length; l--; _o[k[l]] = v) {\n ;\n }\n\n return _o;\n },\n $V0 = [2, 44],\n $V1 = [1, 20],\n $V2 = [5, 14, 15, 19, 29, 34, 39, 44, 47, 48, 52, 56, 60],\n $V3 = [1, 35],\n $V4 = [1, 38],\n $V5 = [1, 30],\n $V6 = [1, 31],\n $V7 = [1, 32],\n $V8 = [1, 33],\n $V9 = [1, 34],\n $Va = [1, 37],\n $Vb = [14, 15, 19, 29, 34, 39, 44, 47, 48, 52, 56, 60],\n $Vc = [14, 15, 19, 29, 34, 44, 47, 48, 52, 56, 60],\n $Vd = [15, 18],\n $Ve = [14, 15, 19, 29, 34, 47, 48, 52, 56, 60],\n $Vf = [33, 64, 71, 79, 80, 81, 82, 83, 84],\n $Vg = [23, 33, 55, 64, 67, 71, 74, 79, 80, 81, 82, 83, 84],\n $Vh = [1, 51],\n $Vi = [23, 33, 55, 64, 67, 71, 74, 79, 80, 81, 82, 83, 84, 86],\n $Vj = [2, 43],\n $Vk = [55, 64, 71, 79, 80, 81, 82, 83, 84],\n $Vl = [1, 58],\n $Vm = [1, 59],\n $Vn = [1, 66],\n $Vo = [33, 64, 71, 74, 79, 80, 81, 82, 83, 84],\n $Vp = [23, 64, 71, 79, 80, 81, 82, 83, 84],\n $Vq = [1, 76],\n $Vr = [64, 67, 71, 79, 80, 81, 82, 83, 84],\n $Vs = [33, 74],\n $Vt = [23, 33, 55, 67, 71, 74],\n $Vu = [1, 106],\n $Vv = [1, 118],\n $Vw = [71, 76];\n\n var parser = {\n trace: function trace() {},\n yy: {},\n symbols_: {\n \"error\": 2,\n \"root\": 3,\n \"program\": 4,\n \"EOF\": 5,\n \"program_repetition0\": 6,\n \"statement\": 7,\n \"mustache\": 8,\n \"block\": 9,\n \"rawBlock\": 10,\n \"partial\": 11,\n \"partialBlock\": 12,\n \"content\": 13,\n \"COMMENT\": 14,\n \"CONTENT\": 15,\n \"openRawBlock\": 16,\n \"rawBlock_repetition0\": 17,\n \"END_RAW_BLOCK\": 18,\n \"OPEN_RAW_BLOCK\": 19,\n \"helperName\": 20,\n \"openRawBlock_repetition0\": 21,\n \"openRawBlock_option0\": 22,\n \"CLOSE_RAW_BLOCK\": 23,\n \"openBlock\": 24,\n \"block_option0\": 25,\n \"closeBlock\": 26,\n \"openInverse\": 27,\n \"block_option1\": 28,\n \"OPEN_BLOCK\": 29,\n \"openBlock_repetition0\": 30,\n \"openBlock_option0\": 31,\n \"openBlock_option1\": 32,\n \"CLOSE\": 33,\n \"OPEN_INVERSE\": 34,\n \"openInverse_repetition0\": 35,\n \"openInverse_option0\": 36,\n \"openInverse_option1\": 37,\n \"openInverseChain\": 38,\n \"OPEN_INVERSE_CHAIN\": 39,\n \"openInverseChain_repetition0\": 40,\n \"openInverseChain_option0\": 41,\n \"openInverseChain_option1\": 42,\n \"inverseAndProgram\": 43,\n \"INVERSE\": 44,\n \"inverseChain\": 45,\n \"inverseChain_option0\": 46,\n \"OPEN_ENDBLOCK\": 47,\n \"OPEN\": 48,\n \"expr\": 49,\n \"mustache_repetition0\": 50,\n \"mustache_option0\": 51,\n \"OPEN_UNESCAPED\": 52,\n \"mustache_repetition1\": 53,\n \"mustache_option1\": 54,\n \"CLOSE_UNESCAPED\": 55,\n \"OPEN_PARTIAL\": 56,\n \"partial_repetition0\": 57,\n \"partial_option0\": 58,\n \"openPartialBlock\": 59,\n \"OPEN_PARTIAL_BLOCK\": 60,\n \"openPartialBlock_repetition0\": 61,\n \"openPartialBlock_option0\": 62,\n \"sexpr\": 63,\n \"OPEN_SEXPR\": 64,\n \"sexpr_repetition0\": 65,\n \"sexpr_option0\": 66,\n \"CLOSE_SEXPR\": 67,\n \"hash\": 68,\n \"hash_repetition_plus0\": 69,\n \"hashSegment\": 70,\n \"ID\": 71,\n \"EQUALS\": 72,\n \"blockParams\": 73,\n \"OPEN_BLOCK_PARAMS\": 74,\n \"blockParams_repetition_plus0\": 75,\n \"CLOSE_BLOCK_PARAMS\": 76,\n \"path\": 77,\n \"dataName\": 78,\n \"STRING\": 79,\n \"NUMBER\": 80,\n \"BOOLEAN\": 81,\n \"UNDEFINED\": 82,\n \"NULL\": 83,\n \"DATA\": 84,\n \"pathSegments\": 85,\n \"SEP\": 86,\n \"$accept\": 0,\n \"$end\": 1\n },\n terminals_: {\n 2: \"error\",\n 5: \"EOF\",\n 14: \"COMMENT\",\n 15: \"CONTENT\",\n 18: \"END_RAW_BLOCK\",\n 19: \"OPEN_RAW_BLOCK\",\n 23: \"CLOSE_RAW_BLOCK\",\n 29: \"OPEN_BLOCK\",\n 33: \"CLOSE\",\n 34: \"OPEN_INVERSE\",\n 39: \"OPEN_INVERSE_CHAIN\",\n 44: \"INVERSE\",\n 47: \"OPEN_ENDBLOCK\",\n 48: \"OPEN\",\n 52: \"OPEN_UNESCAPED\",\n 55: \"CLOSE_UNESCAPED\",\n 56: \"OPEN_PARTIAL\",\n 60: \"OPEN_PARTIAL_BLOCK\",\n 64: \"OPEN_SEXPR\",\n 67: \"CLOSE_SEXPR\",\n 71: \"ID\",\n 72: \"EQUALS\",\n 74: \"OPEN_BLOCK_PARAMS\",\n 76: \"CLOSE_BLOCK_PARAMS\",\n 79: \"STRING\",\n 80: \"NUMBER\",\n 81: \"BOOLEAN\",\n 82: \"UNDEFINED\",\n 83: \"NULL\",\n 84: \"DATA\",\n 86: \"SEP\"\n },\n productions_: [0, [3, 2], [4, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [13, 1], [10, 3], [16, 5], [9, 4], [9, 4], [24, 6], [27, 6], [38, 6], [43, 2], [45, 3], [45, 1], [26, 3], [8, 5], [8, 5], [11, 5], [12, 3], [59, 5], [49, 1], [49, 1], [63, 5], [68, 1], [70, 3], [73, 3], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [78, 2], [77, 1], [85, 3], [85, 1], [6, 0], [6, 2], [17, 0], [17, 2], [21, 0], [21, 2], [22, 0], [22, 1], [25, 0], [25, 1], [28, 0], [28, 1], [30, 0], [30, 2], [31, 0], [31, 1], [32, 0], [32, 1], [35, 0], [35, 2], [36, 0], [36, 1], [37, 0], [37, 1], [40, 0], [40, 2], [41, 0], [41, 1], [42, 0], [42, 1], [46, 0], [46, 1], [50, 0], [50, 2], [51, 0], [51, 1], [53, 0], [53, 2], [54, 0], [54, 1], [57, 0], [57, 2], [58, 0], [58, 1], [61, 0], [61, 2], [62, 0], [62, 1], [65, 0], [65, 2], [66, 0], [66, 1], [69, 1], [69, 2], [75, 1], [75, 2]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate\n /* action[1] */\n , $$\n /* vstack */\n , _$\n /* lstack */\n ) {\n /* this == yyval */\n var $0 = $$.length - 1;\n\n switch (yystate) {\n case 1:\n return $$[$0 - 1];\n break;\n\n case 2:\n this.$ = yy.prepareProgram($$[$0]);\n break;\n\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n case 8:\n case 20:\n case 27:\n case 28:\n case 33:\n case 34:\n this.$ = $$[$0];\n break;\n\n case 9:\n this.$ = {\n type: 'CommentStatement',\n value: yy.stripComment($$[$0]),\n strip: yy.stripFlags($$[$0], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 10:\n this.$ = {\n type: 'ContentStatement',\n original: $$[$0],\n value: $$[$0],\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 11:\n this.$ = yy.prepareRawBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$);\n break;\n\n case 12:\n this.$ = {\n path: $$[$0 - 3],\n params: $$[$0 - 2],\n hash: $$[$0 - 1]\n };\n break;\n\n case 13:\n this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], false, this._$);\n break;\n\n case 14:\n this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], true, this._$);\n break;\n\n case 15:\n this.$ = {\n open: $$[$0 - 5],\n path: $$[$0 - 4],\n params: $$[$0 - 3],\n hash: $$[$0 - 2],\n blockParams: $$[$0 - 1],\n strip: yy.stripFlags($$[$0 - 5], $$[$0])\n };\n break;\n\n case 16:\n case 17:\n this.$ = {\n path: $$[$0 - 4],\n params: $$[$0 - 3],\n hash: $$[$0 - 2],\n blockParams: $$[$0 - 1],\n strip: yy.stripFlags($$[$0 - 5], $$[$0])\n };\n break;\n\n case 18:\n this.$ = {\n strip: yy.stripFlags($$[$0 - 1], $$[$0 - 1]),\n program: $$[$0]\n };\n break;\n\n case 19:\n var inverse = yy.prepareBlock($$[$0 - 2], $$[$0 - 1], $$[$0], $$[$0], false, this._$),\n program = yy.prepareProgram([inverse], $$[$0 - 1].loc);\n program.chained = true;\n this.$ = {\n strip: $$[$0 - 2].strip,\n program: program,\n chain: true\n };\n break;\n\n case 21:\n this.$ = {\n path: $$[$0 - 1],\n strip: yy.stripFlags($$[$0 - 2], $$[$0])\n };\n break;\n\n case 22:\n case 23:\n this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$);\n break;\n\n case 24:\n this.$ = {\n type: 'PartialStatement',\n name: $$[$0 - 3],\n params: $$[$0 - 2],\n hash: $$[$0 - 1],\n indent: '',\n strip: yy.stripFlags($$[$0 - 4], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 25:\n this.$ = yy.preparePartialBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$);\n break;\n\n case 26:\n this.$ = {\n path: $$[$0 - 3],\n params: $$[$0 - 2],\n hash: $$[$0 - 1],\n strip: yy.stripFlags($$[$0 - 4], $$[$0])\n };\n break;\n\n case 29:\n this.$ = {\n type: 'SubExpression',\n path: $$[$0 - 3],\n params: $$[$0 - 2],\n hash: $$[$0 - 1],\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 30:\n this.$ = {\n type: 'Hash',\n pairs: $$[$0],\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 31:\n this.$ = {\n type: 'HashPair',\n key: yy.id($$[$0 - 2]),\n value: $$[$0],\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 32:\n this.$ = yy.id($$[$0 - 1]);\n break;\n\n case 35:\n this.$ = {\n type: 'StringLiteral',\n value: $$[$0],\n original: $$[$0],\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 36:\n this.$ = {\n type: 'NumberLiteral',\n value: Number($$[$0]),\n original: Number($$[$0]),\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 37:\n this.$ = {\n type: 'BooleanLiteral',\n value: $$[$0] === 'true',\n original: $$[$0] === 'true',\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 38:\n this.$ = {\n type: 'UndefinedLiteral',\n original: undefined,\n value: undefined,\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 39:\n this.$ = {\n type: 'NullLiteral',\n original: null,\n value: null,\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 40:\n this.$ = yy.preparePath(true, $$[$0], this._$);\n break;\n\n case 41:\n this.$ = yy.preparePath(false, $$[$0], this._$);\n break;\n\n case 42:\n $$[$0 - 2].push({\n part: yy.id($$[$0]),\n original: $$[$0],\n separator: $$[$0 - 1]\n });\n this.$ = $$[$0 - 2];\n break;\n\n case 43:\n this.$ = [{\n part: yy.id($$[$0]),\n original: $$[$0]\n }];\n break;\n\n case 44:\n case 46:\n case 48:\n case 56:\n case 62:\n case 68:\n case 76:\n case 80:\n case 84:\n case 88:\n case 92:\n this.$ = [];\n break;\n\n case 45:\n case 47:\n case 49:\n case 57:\n case 63:\n case 69:\n case 77:\n case 81:\n case 85:\n case 89:\n case 93:\n case 97:\n case 99:\n $$[$0 - 1].push($$[$0]);\n break;\n\n case 96:\n case 98:\n this.$ = [$$[$0]];\n break;\n }\n },\n table: [o([5, 14, 15, 19, 29, 34, 48, 52, 56, 60], $V0, {\n 3: 1,\n 4: 2,\n 6: 3\n }), {\n 1: [3]\n }, {\n 5: [1, 4]\n }, o([5, 39, 44, 47], [2, 2], {\n 7: 5,\n 8: 6,\n 9: 7,\n 10: 8,\n 11: 9,\n 12: 10,\n 13: 11,\n 24: 15,\n 27: 16,\n 16: 17,\n 59: 19,\n 14: [1, 12],\n 15: $V1,\n 19: [1, 23],\n 29: [1, 21],\n 34: [1, 22],\n 48: [1, 13],\n 52: [1, 14],\n 56: [1, 18],\n 60: [1, 24]\n }), {\n 1: [2, 1]\n }, o($V2, [2, 45]), o($V2, [2, 3]), o($V2, [2, 4]), o($V2, [2, 5]), o($V2, [2, 6]), o($V2, [2, 7]), o($V2, [2, 8]), o($V2, [2, 9]), {\n 20: 26,\n 49: 25,\n 63: 27,\n 64: $V3,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, {\n 20: 26,\n 49: 39,\n 63: 27,\n 64: $V3,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, o($Vb, $V0, {\n 6: 3,\n 4: 40\n }), o($Vc, $V0, {\n 6: 3,\n 4: 41\n }), o($Vd, [2, 46], {\n 17: 42\n }), {\n 20: 26,\n 49: 43,\n 63: 27,\n 64: $V3,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, o($Ve, $V0, {\n 6: 3,\n 4: 44\n }), o([5, 14, 15, 18, 19, 29, 34, 39, 44, 47, 48, 52, 56, 60], [2, 10]), {\n 20: 45,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, {\n 20: 46,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, {\n 20: 47,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, {\n 20: 26,\n 49: 48,\n 63: 27,\n 64: $V3,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, o($Vf, [2, 76], {\n 50: 49\n }), o($Vg, [2, 27]), o($Vg, [2, 28]), o($Vg, [2, 33]), o($Vg, [2, 34]), o($Vg, [2, 35]), o($Vg, [2, 36]), o($Vg, [2, 37]), o($Vg, [2, 38]), o($Vg, [2, 39]), {\n 20: 26,\n 49: 50,\n 63: 27,\n 64: $V3,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, o($Vg, [2, 41], {\n 86: $Vh\n }), {\n 71: $V4,\n 85: 52\n }, o($Vi, $Vj), o($Vk, [2, 80], {\n 53: 53\n }), {\n 25: 54,\n 38: 56,\n 39: $Vl,\n 43: 57,\n 44: $Vm,\n 45: 55,\n 47: [2, 52]\n }, {\n 28: 60,\n 43: 61,\n 44: $Vm,\n 47: [2, 54]\n }, {\n 13: 63,\n 15: $V1,\n 18: [1, 62]\n }, o($Vf, [2, 84], {\n 57: 64\n }), {\n 26: 65,\n 47: $Vn\n }, o($Vo, [2, 56], {\n 30: 67\n }), o($Vo, [2, 62], {\n 35: 68\n }), o($Vp, [2, 48], {\n 21: 69\n }), o($Vf, [2, 88], {\n 61: 70\n }), {\n 20: 26,\n 33: [2, 78],\n 49: 72,\n 51: 71,\n 63: 27,\n 64: $V3,\n 68: 73,\n 69: 74,\n 70: 75,\n 71: $Vq,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, o($Vr, [2, 92], {\n 65: 77\n }), {\n 71: [1, 78]\n }, o($Vg, [2, 40], {\n 86: $Vh\n }), {\n 20: 26,\n 49: 80,\n 54: 79,\n 55: [2, 82],\n 63: 27,\n 64: $V3,\n 68: 81,\n 69: 74,\n 70: 75,\n 71: $Vq,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, {\n 26: 82,\n 47: $Vn\n }, {\n 47: [2, 53]\n }, o($Vb, $V0, {\n 6: 3,\n 4: 83\n }), {\n 47: [2, 20]\n }, {\n 20: 84,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, o($Ve, $V0, {\n 6: 3,\n 4: 85\n }), {\n 26: 86,\n 47: $Vn\n }, {\n 47: [2, 55]\n }, o($V2, [2, 11]), o($Vd, [2, 47]), {\n 20: 26,\n 33: [2, 86],\n 49: 88,\n 58: 87,\n 63: 27,\n 64: $V3,\n 68: 89,\n 69: 74,\n 70: 75,\n 71: $Vq,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, o($V2, [2, 25]), {\n 20: 90,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, o($Vs, [2, 58], {\n 20: 26,\n 63: 27,\n 77: 28,\n 78: 29,\n 85: 36,\n 69: 74,\n 70: 75,\n 31: 91,\n 49: 92,\n 68: 93,\n 64: $V3,\n 71: $Vq,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va\n }), o($Vs, [2, 64], {\n 20: 26,\n 63: 27,\n 77: 28,\n 78: 29,\n 85: 36,\n 69: 74,\n 70: 75,\n 36: 94,\n 49: 95,\n 68: 96,\n 64: $V3,\n 71: $Vq,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va\n }), {\n 20: 26,\n 22: 97,\n 23: [2, 50],\n 49: 98,\n 63: 27,\n 64: $V3,\n 68: 99,\n 69: 74,\n 70: 75,\n 71: $Vq,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, {\n 20: 26,\n 33: [2, 90],\n 49: 101,\n 62: 100,\n 63: 27,\n 64: $V3,\n 68: 102,\n 69: 74,\n 70: 75,\n 71: $Vq,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, {\n 33: [1, 103]\n }, o($Vf, [2, 77]), {\n 33: [2, 79]\n }, o([23, 33, 55, 67, 74], [2, 30], {\n 70: 104,\n 71: [1, 105]\n }), o($Vt, [2, 96]), o($Vi, $Vj, {\n 72: $Vu\n }), {\n 20: 26,\n 49: 108,\n 63: 27,\n 64: $V3,\n 66: 107,\n 67: [2, 94],\n 68: 109,\n 69: 74,\n 70: 75,\n 71: $Vq,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, o($Vi, [2, 42]), {\n 55: [1, 110]\n }, o($Vk, [2, 81]), {\n 55: [2, 83]\n }, o($V2, [2, 13]), {\n 38: 56,\n 39: $Vl,\n 43: 57,\n 44: $Vm,\n 45: 112,\n 46: 111,\n 47: [2, 74]\n }, o($Vo, [2, 68], {\n 40: 113\n }), {\n 47: [2, 18]\n }, o($V2, [2, 14]), {\n 33: [1, 114]\n }, o($Vf, [2, 85]), {\n 33: [2, 87]\n }, {\n 33: [1, 115]\n }, {\n 32: 116,\n 33: [2, 60],\n 73: 117,\n 74: $Vv\n }, o($Vo, [2, 57]), o($Vs, [2, 59]), {\n 33: [2, 66],\n 37: 119,\n 73: 120,\n 74: $Vv\n }, o($Vo, [2, 63]), o($Vs, [2, 65]), {\n 23: [1, 121]\n }, o($Vp, [2, 49]), {\n 23: [2, 51]\n }, {\n 33: [1, 122]\n }, o($Vf, [2, 89]), {\n 33: [2, 91]\n }, o($V2, [2, 22]), o($Vt, [2, 97]), {\n 72: $Vu\n }, {\n 20: 26,\n 49: 123,\n 63: 27,\n 64: $V3,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, {\n 67: [1, 124]\n }, o($Vr, [2, 93]), {\n 67: [2, 95]\n }, o($V2, [2, 23]), {\n 47: [2, 19]\n }, {\n 47: [2, 75]\n }, o($Vs, [2, 70], {\n 20: 26,\n 63: 27,\n 77: 28,\n 78: 29,\n 85: 36,\n 69: 74,\n 70: 75,\n 41: 125,\n 49: 126,\n 68: 127,\n 64: $V3,\n 71: $Vq,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va\n }), o($V2, [2, 24]), o($V2, [2, 21]), {\n 33: [1, 128]\n }, {\n 33: [2, 61]\n }, {\n 71: [1, 130],\n 75: 129\n }, {\n 33: [1, 131]\n }, {\n 33: [2, 67]\n }, o($Vd, [2, 12]), o($Ve, [2, 26]), o($Vt, [2, 31]), o($Vg, [2, 29]), {\n 33: [2, 72],\n 42: 132,\n 73: 133,\n 74: $Vv\n }, o($Vo, [2, 69]), o($Vs, [2, 71]), o($Vb, [2, 15]), {\n 71: [1, 135],\n 76: [1, 134]\n }, o($Vw, [2, 98]), o($Vc, [2, 16]), {\n 33: [1, 136]\n }, {\n 33: [2, 73]\n }, {\n 33: [2, 32]\n }, o($Vw, [2, 99]), o($Vb, [2, 17])],\n defaultActions: {\n 4: [2, 1],\n 55: [2, 53],\n 57: [2, 20],\n 61: [2, 55],\n 73: [2, 79],\n 81: [2, 83],\n 85: [2, 18],\n 89: [2, 87],\n 99: [2, 51],\n 102: [2, 91],\n 109: [2, 95],\n 111: [2, 19],\n 112: [2, 75],\n 117: [2, 61],\n 120: [2, 67],\n 133: [2, 73],\n 134: [2, 32]\n },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this,\n stack = [0],\n vstack = [null],\n lstack = [],\n table = this.table,\n yytext = '',\n yylineno = 0,\n yyleng = 0,\n TERROR = 2,\n EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = {\n yy: {}\n };\n\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n\n _token_stack: var lex = function lex() {\n var token;\n token = lexer.lex() || EOF;\n\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n\n return token;\n };\n\n var symbol,\n preErrorSymbol,\n state,\n action,\n r,\n yyval = {},\n p,\n len,\n newState,\n expected;\n\n while (true) {\n state = stack[stack.length - 1];\n\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n\n action = table[state] && table[state][symbol];\n }\n\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n\n break;\n\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n\n if (ranges) {\n yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n }\n\n r = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));\n\n if (typeof r !== 'undefined') {\n return r;\n }\n\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n\n case 3:\n return true;\n }\n }\n\n return true;\n }\n };\n /* generated by jison-lex 0.3.4 */\n\n var lexer = function () {\n var lexer = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function setInput(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function input() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function unput(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len); //this.yyleng -= len;\n\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function more() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function reject() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n\n return this;\n },\n // retain first n characters of the match\n less: function less(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function pastInput() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function upcomingInput() {\n var next = this.match;\n\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n\n return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function showPosition() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function test_match(match, indexed_rule) {\n var token, lines, backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n\n if (lines) {\n this.yylineno += lines.length;\n }\n\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n\n if (this.done && this._input) {\n this.done = false;\n }\n\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n\n return false;\n },\n // return next match in input\n next: function next() {\n if (this.done) {\n return this.EOF;\n }\n\n if (!this._input) {\n this.done = true;\n }\n\n var token, match, tempMatch, index;\n\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n\n var rules = this._currentRules();\n\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n\n if (match) {\n token = this.test_match(match, rules[index]);\n\n if (token !== false) {\n return token;\n } // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\n\n return false;\n }\n\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n function strip(start, end) {\n return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start);\n }\n\n switch ($avoiding_name_collisions) {\n case 0:\n if (yy_.yytext.slice(-2) === \"\\\\\\\\\") {\n strip(0, 1);\n this.begin(\"mu\");\n } else if (yy_.yytext.slice(-1) === \"\\\\\") {\n strip(0, 1);\n this.begin(\"emu\");\n } else {\n this.begin(\"mu\");\n }\n\n if (yy_.yytext) return 15;\n break;\n\n case 1:\n return 15;\n break;\n\n case 2:\n this.popState();\n return 15;\n break;\n\n case 3:\n this.begin('raw');\n return 15;\n break;\n\n case 4:\n this.popState(); // Should be using `this.topState()` below, but it currently\n // returns the second top instead of the first top. Opened an\n // issue about it at https://github.com/zaach/jison/issues/291\n\n if (this.conditionStack[this.conditionStack.length - 1] === 'raw') {\n return 15;\n } else {\n strip(5, 9);\n return 18;\n }\n\n break;\n\n case 5:\n return 15;\n break;\n\n case 6:\n this.popState();\n return 14;\n break;\n\n case 7:\n return 64;\n break;\n\n case 8:\n return 67;\n break;\n\n case 9:\n return 19;\n break;\n\n case 10:\n this.popState();\n this.begin('raw');\n return 23;\n break;\n\n case 11:\n return 56;\n break;\n\n case 12:\n return 60;\n break;\n\n case 13:\n return 29;\n break;\n\n case 14:\n return 47;\n break;\n\n case 15:\n this.popState();\n return 44;\n break;\n\n case 16:\n this.popState();\n return 44;\n break;\n\n case 17:\n return 34;\n break;\n\n case 18:\n return 39;\n break;\n\n case 19:\n return 52;\n break;\n\n case 20:\n return 48;\n break;\n\n case 21:\n this.unput(yy_.yytext);\n this.popState();\n this.begin('com');\n break;\n\n case 22:\n this.popState();\n return 14;\n break;\n\n case 23:\n return 48;\n break;\n\n case 24:\n return 72;\n break;\n\n case 25:\n return 71;\n break;\n\n case 26:\n return 71;\n break;\n\n case 27:\n return 86;\n break;\n\n case 28:\n // ignore whitespace\n break;\n\n case 29:\n this.popState();\n return 55;\n break;\n\n case 30:\n this.popState();\n return 33;\n break;\n\n case 31:\n yy_.yytext = strip(1, 2).replace(/\\\\\"/g, '\"');\n return 79;\n break;\n\n case 32:\n yy_.yytext = strip(1, 2).replace(/\\\\'/g, \"'\");\n return 79;\n break;\n\n case 33:\n return 84;\n break;\n\n case 34:\n return 81;\n break;\n\n case 35:\n return 81;\n break;\n\n case 36:\n return 82;\n break;\n\n case 37:\n return 83;\n break;\n\n case 38:\n return 80;\n break;\n\n case 39:\n return 74;\n break;\n\n case 40:\n return 76;\n break;\n\n case 41:\n return 71;\n break;\n\n case 42:\n yy_.yytext = yy_.yytext.replace(/\\\\([\\\\\\]])/g, '$1');\n return 71;\n break;\n\n case 43:\n return 'INVALID';\n break;\n\n case 44:\n return 5;\n break;\n }\n },\n rules: [/^(?:[^\\x00]*?(?=(\\{\\{)))/, /^(?:[^\\x00]+)/, /^(?:[^\\x00]{2,}?(?=(\\{\\{|\\\\\\{\\{|\\\\\\\\\\{\\{|$)))/, /^(?:\\{\\{\\{\\{(?=[^/]))/, /^(?:\\{\\{\\{\\{\\/[^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=[=}\\s\\/.])\\}\\}\\}\\})/, /^(?:[^\\x00]+?(?=(\\{\\{\\{\\{)))/, /^(?:[\\s\\S]*?--(~)?\\}\\})/, /^(?:\\()/, /^(?:\\))/, /^(?:\\{\\{\\{\\{)/, /^(?:\\}\\}\\}\\})/, /^(?:\\{\\{(~)?>)/, /^(?:\\{\\{(~)?#>)/, /^(?:\\{\\{(~)?#\\*?)/, /^(?:\\{\\{(~)?\\/)/, /^(?:\\{\\{(~)?\\^\\s*(~)?\\}\\})/, /^(?:\\{\\{(~)?\\s*else\\s*(~)?\\}\\})/, /^(?:\\{\\{(~)?\\^)/, /^(?:\\{\\{(~)?\\s*else\\b)/, /^(?:\\{\\{(~)?\\{)/, /^(?:\\{\\{(~)?&)/, /^(?:\\{\\{(~)?!--)/, /^(?:\\{\\{(~)?![\\s\\S]*?\\}\\})/, /^(?:\\{\\{(~)?\\*?)/, /^(?:=)/, /^(?:\\.\\.)/, /^(?:\\.(?=([=~}\\s\\/.)|])))/, /^(?:[\\/.])/, /^(?:\\s+)/, /^(?:\\}(~)?\\}\\})/, /^(?:(~)?\\}\\})/, /^(?:\"(\\\\[\"]|[^\"])*\")/, /^(?:'(\\\\[']|[^'])*')/, /^(?:@)/, /^(?:true(?=([~}\\s)])))/, /^(?:false(?=([~}\\s)])))/, /^(?:undefined(?=([~}\\s)])))/, /^(?:null(?=([~}\\s)])))/, /^(?:-?[0-9]+(?:\\.[0-9]+)?(?=([~}\\s)])))/, /^(?:as\\s+\\|)/, /^(?:\\|)/, /^(?:([^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=([=~}\\s\\/.)|]))))/, /^(?:\\[(\\\\\\]|[^\\]])*\\])/, /^(?:.)/, /^(?:$)/],\n conditions: {\n \"mu\": {\n \"rules\": [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44],\n \"inclusive\": false\n },\n \"emu\": {\n \"rules\": [2],\n \"inclusive\": false\n },\n \"com\": {\n \"rules\": [6],\n \"inclusive\": false\n },\n \"raw\": {\n \"rules\": [3, 4, 5],\n \"inclusive\": false\n },\n \"INITIAL\": {\n \"rules\": [0, 1, 44],\n \"inclusive\": true\n }\n }\n };\n return lexer;\n }();\n\n parser.lexer = lexer;\n\n function Parser() {\n this.yy = {};\n }\n\n Parser.prototype = parser;\n parser.Parser = Parser;\n return new Parser();\n }();\n /* eslint-disable new-cap */\n\n\n _exports.parser = parser;\n\n function print(ast) {\n return new PrintVisitor().accept(ast);\n }\n\n function PrintVisitor() {\n this.padding = 0;\n }\n\n PrintVisitor.prototype = new Visitor();\n\n PrintVisitor.prototype.pad = function (string) {\n var out = '';\n\n for (var i = 0, l = this.padding; i < l; i++) {\n out += ' ';\n }\n\n out += string + '\\n';\n return out;\n };\n\n PrintVisitor.prototype.Program = function (program) {\n var out = '',\n body = program.body,\n i,\n l;\n\n if (program.blockParams) {\n var blockParams = 'BLOCK PARAMS: [';\n\n for (i = 0, l = program.blockParams.length; i < l; i++) {\n blockParams += ' ' + program.blockParams[i];\n }\n\n blockParams += ' ]';\n out += this.pad(blockParams);\n }\n\n for (i = 0, l = body.length; i < l; i++) {\n out += this.accept(body[i]);\n }\n\n this.padding--;\n return out;\n };\n\n PrintVisitor.prototype.MustacheStatement = function (mustache) {\n return this.pad('{{ ' + this.SubExpression(mustache) + ' }}');\n };\n\n PrintVisitor.prototype.Decorator = function (mustache) {\n return this.pad('{{ DIRECTIVE ' + this.SubExpression(mustache) + ' }}');\n };\n\n PrintVisitor.prototype.BlockStatement = PrintVisitor.prototype.DecoratorBlock = function (block) {\n var out = '';\n out += this.pad((block.type === 'DecoratorBlock' ? 'DIRECTIVE ' : '') + 'BLOCK:');\n this.padding++;\n out += this.pad(this.SubExpression(block));\n\n if (block.program) {\n out += this.pad('PROGRAM:');\n this.padding++;\n out += this.accept(block.program);\n this.padding--;\n }\n\n if (block.inverse) {\n if (block.program) {\n this.padding++;\n }\n\n out += this.pad('{{^}}');\n this.padding++;\n out += this.accept(block.inverse);\n this.padding--;\n\n if (block.program) {\n this.padding--;\n }\n }\n\n this.padding--;\n return out;\n };\n\n PrintVisitor.prototype.PartialStatement = function (partial) {\n var content = 'PARTIAL:' + partial.name.original;\n\n if (partial.params[0]) {\n content += ' ' + this.accept(partial.params[0]);\n }\n\n if (partial.hash) {\n content += ' ' + this.accept(partial.hash);\n }\n\n return this.pad('{{> ' + content + ' }}');\n };\n\n PrintVisitor.prototype.PartialBlockStatement = function (partial) {\n var content = 'PARTIAL BLOCK:' + partial.name.original;\n\n if (partial.params[0]) {\n content += ' ' + this.accept(partial.params[0]);\n }\n\n if (partial.hash) {\n content += ' ' + this.accept(partial.hash);\n }\n\n content += ' ' + this.pad('PROGRAM:');\n this.padding++;\n content += this.accept(partial.program);\n this.padding--;\n return this.pad('{{> ' + content + ' }}');\n };\n\n PrintVisitor.prototype.ContentStatement = function (content) {\n return this.pad(\"CONTENT[ '\" + content.value + \"' ]\");\n };\n\n PrintVisitor.prototype.CommentStatement = function (comment) {\n return this.pad(\"{{! '\" + comment.value + \"' }}\");\n };\n\n PrintVisitor.prototype.SubExpression = function (sexpr) {\n var params = sexpr.params,\n paramStrings = [],\n hash;\n\n for (var i = 0, l = params.length; i < l; i++) {\n paramStrings.push(this.accept(params[i]));\n }\n\n params = '[' + paramStrings.join(', ') + ']';\n hash = sexpr.hash ? ' ' + this.accept(sexpr.hash) : '';\n return this.accept(sexpr.path) + ' ' + params + hash;\n };\n\n PrintVisitor.prototype.PathExpression = function (id) {\n var path = id.parts.join('/');\n return (id.data ? '@' : '') + 'PATH:' + path;\n };\n\n PrintVisitor.prototype.StringLiteral = function (string) {\n return '\"' + string.value + '\"';\n };\n\n PrintVisitor.prototype.NumberLiteral = function (number) {\n return 'NUMBER{' + number.value + '}';\n };\n\n PrintVisitor.prototype.BooleanLiteral = function (bool) {\n return 'BOOLEAN{' + bool.value + '}';\n };\n\n PrintVisitor.prototype.UndefinedLiteral = function () {\n return 'UNDEFINED';\n };\n\n PrintVisitor.prototype.NullLiteral = function () {\n return 'NULL';\n };\n\n PrintVisitor.prototype.Hash = function (hash) {\n var pairs = hash.pairs,\n joinedPairs = [];\n\n for (var i = 0, l = pairs.length; i < l; i++) {\n joinedPairs.push(this.accept(pairs[i]));\n }\n\n return 'HASH{' + joinedPairs.join(', ') + '}';\n };\n\n PrintVisitor.prototype.HashPair = function (pair) {\n return pair.key + '=' + this.accept(pair.value);\n };\n /* eslint-enable new-cap */\n\n\n function validateClose(open, close) {\n close = close.path ? close.path.original : close;\n\n if (open.path.original !== close) {\n var errorNode = {\n loc: open.path.loc\n };\n throw new Exception(open.path.original + \" doesn't match \" + close, errorNode);\n }\n }\n\n function SourceLocation(source, locInfo) {\n this.source = source;\n this.start = {\n line: locInfo.first_line,\n column: locInfo.first_column\n };\n this.end = {\n line: locInfo.last_line,\n column: locInfo.last_column\n };\n }\n\n function id(token) {\n if (/^\\[.*\\]$/.test(token)) {\n return token.substring(1, token.length - 1);\n } else {\n return token;\n }\n }\n\n function stripFlags(open, close) {\n return {\n open: open.charAt(2) === '~',\n close: close.charAt(close.length - 3) === '~'\n };\n }\n\n function stripComment(comment) {\n return comment.replace(/^\\{\\{~?!-?-?/, '').replace(/-?-?~?\\}\\}$/, '');\n }\n\n function preparePath(data, parts, loc) {\n loc = this.locInfo(loc);\n var original = data ? '@' : '',\n dig = [],\n depth = 0;\n\n for (var i = 0, l = parts.length; i < l; i++) {\n var part = parts[i].part,\n // If we have [] syntax then we do not treat path references as operators,\n // i.e. foo.[this] resolves to approximately context.foo['this']\n isLiteral = parts[i].original !== part;\n original += (parts[i].separator || '') + part;\n\n if (!isLiteral && (part === '..' || part === '.' || part === 'this')) {\n if (dig.length > 0) {\n throw new Exception('Invalid path: ' + original, {\n loc: loc\n });\n } else if (part === '..') {\n depth++;\n }\n } else {\n dig.push(part);\n }\n }\n\n return {\n type: 'PathExpression',\n data: data,\n depth: depth,\n parts: dig,\n original: original,\n loc: loc\n };\n }\n\n function prepareMustache(path, params, hash, open, strip, locInfo) {\n // Must use charAt to support IE pre-10\n var escapeFlag = open.charAt(3) || open.charAt(2),\n escaped = escapeFlag !== '{' && escapeFlag !== '&';\n var decorator = /\\*/.test(open);\n return {\n type: decorator ? 'Decorator' : 'MustacheStatement',\n path: path,\n params: params,\n hash: hash,\n escaped: escaped,\n strip: strip,\n loc: this.locInfo(locInfo)\n };\n }\n\n function prepareRawBlock(openRawBlock, contents, close, locInfo) {\n validateClose(openRawBlock, close);\n locInfo = this.locInfo(locInfo);\n var program = {\n type: 'Program',\n body: contents,\n strip: {},\n loc: locInfo\n };\n return {\n type: 'BlockStatement',\n path: openRawBlock.path,\n params: openRawBlock.params,\n hash: openRawBlock.hash,\n program: program,\n openStrip: {},\n inverseStrip: {},\n closeStrip: {},\n loc: locInfo\n };\n }\n\n function prepareBlock(openBlock, program, inverseAndProgram, close, inverted, locInfo) {\n if (close && close.path) {\n validateClose(openBlock, close);\n }\n\n var decorator = /\\*/.test(openBlock.open);\n program.blockParams = openBlock.blockParams;\n var inverse, inverseStrip;\n\n if (inverseAndProgram) {\n if (decorator) {\n throw new Exception('Unexpected inverse block on decorator', inverseAndProgram);\n }\n\n if (inverseAndProgram.chain) {\n inverseAndProgram.program.body[0].closeStrip = close.strip;\n }\n\n inverseStrip = inverseAndProgram.strip;\n inverse = inverseAndProgram.program;\n }\n\n if (inverted) {\n inverted = inverse;\n inverse = program;\n program = inverted;\n }\n\n return {\n type: decorator ? 'DecoratorBlock' : 'BlockStatement',\n path: openBlock.path,\n params: openBlock.params,\n hash: openBlock.hash,\n program: program,\n inverse: inverse,\n openStrip: openBlock.strip,\n inverseStrip: inverseStrip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n }\n\n function prepareProgram(statements, loc) {\n if (!loc && statements.length) {\n var firstLoc = statements[0].loc,\n lastLoc = statements[statements.length - 1].loc;\n /* istanbul ignore else */\n\n if (firstLoc && lastLoc) {\n loc = {\n source: firstLoc.source,\n start: {\n line: firstLoc.start.line,\n column: firstLoc.start.column\n },\n end: {\n line: lastLoc.end.line,\n column: lastLoc.end.column\n }\n };\n }\n }\n\n return {\n type: 'Program',\n body: statements,\n strip: {},\n loc: loc\n };\n }\n\n function preparePartialBlock(open, program, close, locInfo) {\n validateClose(open, close);\n return {\n type: 'PartialBlockStatement',\n name: open.path,\n params: open.params,\n hash: open.hash,\n program: program,\n openStrip: open.strip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n }\n\n var Helpers = /*#__PURE__*/Object.freeze({\n SourceLocation: SourceLocation,\n id: id,\n stripFlags: stripFlags,\n stripComment: stripComment,\n preparePath: preparePath,\n prepareMustache: prepareMustache,\n prepareRawBlock: prepareRawBlock,\n prepareBlock: prepareBlock,\n prepareProgram: prepareProgram,\n preparePartialBlock: preparePartialBlock\n });\n var baseHelpers = {};\n\n for (var helper in Helpers) {\n if (Object.prototype.hasOwnProperty.call(Helpers, helper)) {\n baseHelpers[helper] = Helpers[helper];\n }\n }\n\n function parseWithoutProcessing(input, options) {\n // Just return if an already-compiled AST was passed in.\n if (input.type === 'Program') {\n return input;\n }\n\n parser.yy = baseHelpers; // Altering the shared object here, but this is ok as parser is a sync operation\n\n parser.yy.locInfo = function (locInfo) {\n return new SourceLocation(options && options.srcName, locInfo);\n };\n\n var ast = parser.parse(input);\n return ast;\n }\n\n function parse(input, options) {\n var ast = parseWithoutProcessing(input, options);\n var strip = new WhitespaceControl(options);\n return strip.accept(ast);\n }\n});","define(\"ember-babel\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.wrapNativeSuper = wrapNativeSuper;\n _exports.classCallCheck = classCallCheck;\n _exports.inheritsLoose = inheritsLoose;\n _exports.taggedTemplateLiteralLoose = taggedTemplateLiteralLoose;\n _exports.createClass = createClass;\n _exports.assertThisInitialized = assertThisInitialized;\n _exports.possibleConstructorReturn = possibleConstructorReturn;\n _exports.objectDestructuringEmpty = objectDestructuringEmpty;\n _exports.createSuper = createSuper;\n _exports.createForOfIteratorHelperLoose = createForOfIteratorHelperLoose;\n\n /* globals Reflect */\n var setPrototypeOf = Object.setPrototypeOf;\n var getPrototypeOf = Object.getPrototypeOf;\n var hasReflectConstruct = typeof Reflect === 'object' && typeof Reflect.construct === 'function';\n var nativeWrapperCache = new Map(); // Super minimal version of Babel's wrapNativeSuper. We only use this for\n // extending Function, for ComputedDecoratorImpl and AliasDecoratorImpl. We know\n // we will never directly create an instance of these classes so no need to\n // include `construct` code or other helpers.\n\n function wrapNativeSuper(Class) {\n if (nativeWrapperCache.has(Class)) {\n return nativeWrapperCache.get(Class);\n }\n\n function Wrapper() {}\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n nativeWrapperCache.set(Class, Wrapper);\n return setPrototypeOf(Wrapper, Class);\n }\n\n function classCallCheck(instance, Constructor) {\n if (true\n /* DEBUG */\n ) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n }\n }\n /*\n Overrides default `inheritsLoose` to _also_ call `Object.setPrototypeOf`.\n This is needed so that we can use `loose` option with the\n `@babel/plugin-transform-classes` (because we want simple assignment to the\n prototype wherever possible) but also keep our constructor based prototypal\n inheritance working properly\n */\n\n\n function inheritsLoose(subClass, superClass) {\n if (true\n /* DEBUG */\n ) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function');\n }\n }\n\n subClass.prototype = Object.create(superClass === null ? null : superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n\n if (superClass !== null) {\n setPrototypeOf(subClass, superClass);\n }\n }\n\n function taggedTemplateLiteralLoose(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n strings.raw = raw;\n return strings;\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n /*\n Differs from default implementation by avoiding boolean coercion of\n `protoProps` and `staticProps`.\n */\n\n\n function createClass(Constructor, protoProps, staticProps) {\n if (protoProps !== null && protoProps !== undefined) {\n _defineProperties(Constructor.prototype, protoProps);\n }\n\n if (staticProps !== null && staticProps !== undefined) {\n _defineProperties(Constructor, staticProps);\n }\n\n return Constructor;\n }\n\n function assertThisInitialized(self) {\n if (true\n /* DEBUG */\n && self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n }\n /*\n Adds `DEBUG` guard to error being thrown, and avoids boolean coercion of `call`.\n */\n\n\n function possibleConstructorReturn(self, call) {\n if (typeof call === 'object' && call !== null || typeof call === 'function') {\n return call;\n }\n\n return assertThisInitialized(self);\n }\n\n function objectDestructuringEmpty(obj) {\n if (true\n /* DEBUG */\n && (obj === null || obj === undefined)) {\n throw new TypeError('Cannot destructure undefined');\n }\n }\n /*\n Differs from default implementation by checking for _any_ `Reflect.construct`\n (the default implementation tries to ensure that `Reflect.construct` is truly\n the native one).\n \n Original source: https://github.com/babel/babel/blob/v7.9.2/packages/babel-helpers/src/helpers.js#L738-L757\n */\n\n\n function createSuper(Derived) {\n return function () {\n var Super = getPrototypeOf(Derived);\n var result;\n\n if (hasReflectConstruct) {\n // NOTE: This doesn't work if this.__proto__.constructor has been modified.\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n }\n /*\n Does not differ from default implementation.\n */\n\n\n function arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n var arr2 = new Array(len);\n\n for (var i = 0; i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n /*\n Does not differ from default implementation.\n */\n\n\n function unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === 'string') return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === 'Object' && o.constructor) n = o.constructor.name;\n if (n === 'Map' || n === 'Set') return Array.from(n);\n if (n === 'Arguments' || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n }\n /*\n Does not differ from default implementation.\n */\n\n\n function createForOfIteratorHelperLoose(o) {\n var i = 0;\n\n if (typeof Symbol === 'undefined' || o[Symbol.iterator] == null) {\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (o = unsupportedIterableToArray(o))) return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n throw new TypeError('Invalid attempt to iterate non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.');\n }\n\n i = o[Symbol.iterator]();\n return i.next.bind(i);\n }\n});","define(\"ember-template-compiler/index\", [\"exports\", \"@ember/-internals/environment\", \"@ember/canary-features\", \"@glimmer/syntax\", \"ember/version\", \"require\", \"ember-template-compiler/lib/system/precompile\", \"ember-template-compiler/lib/system/compile\", \"ember-template-compiler/lib/system/compile-options\", \"ember-template-compiler/lib/plugins/index\", \"@glimmer/compiler\", \"ember-template-compiler/lib/system/bootstrap\", \"ember-template-compiler/lib/system/initializer\"], function (_exports, _environment, _canaryFeatures, _GlimmerSyntax, _version, _require, _precompile, _compile, _compileOptions, _index, _compiler, _bootstrap, _initializer) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n Object.defineProperty(_exports, \"_preprocess\", {\n enumerable: true,\n get: function get() {\n return _GlimmerSyntax.preprocess;\n }\n });\n Object.defineProperty(_exports, \"_print\", {\n enumerable: true,\n get: function get() {\n return _GlimmerSyntax.print;\n }\n });\n Object.defineProperty(_exports, \"VERSION\", {\n enumerable: true,\n get: function get() {\n return _version.default;\n }\n });\n Object.defineProperty(_exports, \"precompile\", {\n enumerable: true,\n get: function get() {\n return _precompile.default;\n }\n });\n Object.defineProperty(_exports, \"compile\", {\n enumerable: true,\n get: function get() {\n return _compile.default;\n }\n });\n Object.defineProperty(_exports, \"compileOptions\", {\n enumerable: true,\n get: function get() {\n return _compileOptions.default;\n }\n });\n Object.defineProperty(_exports, \"_buildCompileOptions\", {\n enumerable: true,\n get: function get() {\n return _compileOptions.buildCompileOptions;\n }\n });\n Object.defineProperty(_exports, \"_transformsFor\", {\n enumerable: true,\n get: function get() {\n return _compileOptions.transformsFor;\n }\n });\n Object.defineProperty(_exports, \"registerPlugin\", {\n enumerable: true,\n get: function get() {\n return _compileOptions.registerPlugin;\n }\n });\n Object.defineProperty(_exports, \"unregisterPlugin\", {\n enumerable: true,\n get: function get() {\n return _compileOptions.unregisterPlugin;\n }\n });\n Object.defineProperty(_exports, \"RESOLUTION_MODE_TRANSFORMS\", {\n enumerable: true,\n get: function get() {\n return _index.RESOLUTION_MODE_TRANSFORMS;\n }\n });\n Object.defineProperty(_exports, \"STRICT_MODE_TRANSFORMS\", {\n enumerable: true,\n get: function get() {\n return _index.STRICT_MODE_TRANSFORMS;\n }\n });\n Object.defineProperty(_exports, \"_precompile\", {\n enumerable: true,\n get: function get() {\n return _compiler.precompile;\n }\n });\n _exports._GlimmerSyntax = _exports._Ember = void 0;\n _exports._GlimmerSyntax = _GlimmerSyntax;\n\n var _Ember;\n\n _exports._Ember = _Ember;\n\n try {\n // tslint:disable-next-line: no-require-imports\n _exports._Ember = _Ember = (0, _require.default)(\"ember\");\n } catch (e) {\n _exports._Ember = _Ember = {\n ENV: _environment.ENV,\n FEATURES: _canaryFeatures.FEATURES,\n VERSION: _version.default\n };\n }\n});","define(\"ember-template-compiler/lib/plugins/assert-against-dynamic-helpers-modifiers\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _debug, _calculateLocationDisplay, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = assertAgainstDynamicHelpersModifiers;\n\n function assertAgainstDynamicHelpersModifiers(env) {\n var _a;\n\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n\n var _trackLocals = (0, _utils.trackLocals)(),\n hasLocal = _trackLocals.hasLocal,\n node = _trackLocals.node;\n\n return {\n name: 'assert-against-dynamic-helpers-modifiers',\n visitor: {\n Program: node,\n ElementNode: {\n keys: {\n children: node\n }\n },\n MustacheStatement: function MustacheStatement(node) {\n if ((0, _utils.isPath)(node.path)) {\n var name = node.path.parts[0];\n (true && !(name !== 'helper' && name !== 'modifier' || isLocalVariable(node.path, hasLocal)) && (0, _debug.assert)(messageFor(name) + \" \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), name !== 'helper' && name !== 'modifier' || isLocalVariable(node.path, hasLocal)));\n }\n },\n SubExpression: function SubExpression(node) {\n if ((0, _utils.isPath)(node.path)) {\n var name = node.path.parts[0];\n (true && !(name !== 'helper' && name !== 'modifier' || isLocalVariable(node.path, hasLocal)) && (0, _debug.assert)(messageFor(name) + \" \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), name !== 'helper' && name !== 'modifier' || isLocalVariable(node.path, hasLocal)));\n }\n }\n }\n };\n }\n\n function isLocalVariable(node, hasLocal) {\n return !node.this && node.parts.length === 1 && hasLocal(node.parts[0]);\n }\n\n function messageFor(name) {\n return \"Cannot use the (\" + name + \") keyword yet, as it has not been implemented.\";\n }\n});","define(\"ember-template-compiler/lib/plugins/assert-against-named-blocks\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\"], function (_exports, _debug, _calculateLocationDisplay) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = assertAgainstNamedBlocks;\n\n /**\n @module ember\n */\n\n /**\n Prevents usage of named blocks\n \n @private\n @class AssertAgainstNamedBlocks\n */\n function assertAgainstNamedBlocks(env) {\n var _a;\n\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n return {\n name: 'assert-against-named-blocks',\n visitor: {\n ElementNode: function ElementNode(node) {\n if (node.tag[0] === ':') {\n var sourceInformation = (0, _calculateLocationDisplay.default)(moduleName, node.loc);\n (true && !(false) && (0, _debug.assert)(\"Named blocks are not currently available, attempted to use the <\" + node.tag + \"> named block. \" + sourceInformation));\n }\n },\n MustacheStatement: function MustacheStatement(node) {\n if (node.path.type === 'PathExpression' && node.path.original === 'yield') {\n var to = node.hash.pairs.filter(function (pair) {\n return pair.key === 'to';\n })[0]; // Glimmer template compiler ensures yield must receive a string literal,\n // so we only need to check if it is not \"default\" or \"inverse\"\n\n if (to && to.value.type === 'StringLiteral' && to.value.original !== 'default' && to.value.original !== 'inverse') {\n var sourceInformation = (0, _calculateLocationDisplay.default)(moduleName, node.loc);\n (true && !(false) && (0, _debug.assert)(\"Named blocks are not currently available, attempted to yield to a named block other than \\\"default\\\" or \\\"inverse\\\": {{yield to=\\\"\" + to.value.original + \"\\\"}}. \" + sourceInformation));\n }\n }\n }\n }\n };\n }\n});","define(\"ember-template-compiler/lib/plugins/assert-input-helper-without-block\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _debug, _calculateLocationDisplay, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = errorOnInputWithContent;\n\n function errorOnInputWithContent(env) {\n var _a;\n\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n return {\n name: 'assert-input-helper-without-block',\n visitor: {\n BlockStatement: function BlockStatement(node) {\n if ((0, _utils.isPath)(node.path) && node.path.original === 'input') {\n (true && !(false) && (0, _debug.assert)(assertMessage(moduleName, node)));\n }\n }\n }\n };\n }\n\n function assertMessage(moduleName, node) {\n var sourceInformation = (0, _calculateLocationDisplay.default)(moduleName, node.loc);\n return \"The {{input}} helper cannot be used in block form. \" + sourceInformation;\n }\n});","define(\"ember-template-compiler/lib/plugins/assert-reserved-named-arguments\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\"], function (_exports, _debug, _calculateLocationDisplay) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = assertReservedNamedArguments;\n\n function assertReservedNamedArguments(env) {\n var _a;\n\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n return {\n name: 'assert-reserved-named-arguments',\n visitor: {\n // In general, we don't assert on the invocation side to avoid creating migration\n // hazards (e.g. using angle bracket to invoke a classic component that uses\n // `this.someReservedName`. However, we want to avoid leaking special internal\n // things, such as `__ARGS__`, so those would need to be asserted on both sides.\n AttrNode: function AttrNode(_ref) {\n var name = _ref.name,\n loc = _ref.loc;\n\n if (name === '@__ARGS__') {\n (true && !(false) && (0, _debug.assert)(assertMessage(name) + \" \" + (0, _calculateLocationDisplay.default)(moduleName, loc)));\n }\n },\n HashPair: function HashPair(_ref2) {\n var key = _ref2.key,\n loc = _ref2.loc;\n\n if (key === '__ARGS__') {\n (true && !(false) && (0, _debug.assert)(assertMessage(key) + \" \" + (0, _calculateLocationDisplay.default)(moduleName, loc)));\n }\n },\n PathExpression: function PathExpression(_ref3) {\n var original = _ref3.original,\n loc = _ref3.loc;\n\n if (isReserved(original)) {\n (true && !(false) && (0, _debug.assert)(assertMessage(original) + \" \" + (0, _calculateLocationDisplay.default)(moduleName, loc)));\n }\n }\n }\n };\n }\n\n var RESERVED = ['@arguments', '@args', '@block', '@else'];\n\n function isReserved(name) {\n return RESERVED.indexOf(name) !== -1 || Boolean(name.match(/^@[^a-z]/));\n }\n\n function assertMessage(name) {\n return \"'\" + name + \"' is reserved.\";\n }\n});","define(\"ember-template-compiler/lib/plugins/assert-splattribute-expression\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\"], function (_exports, _debug, _calculateLocationDisplay) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = assertSplattributeExpressions;\n\n function assertSplattributeExpressions(env) {\n var _a;\n\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n return {\n name: 'assert-splattribute-expressions',\n visitor: {\n PathExpression: function PathExpression(_ref) {\n var original = _ref.original,\n loc = _ref.loc;\n\n if (original === '...attributes') {\n (true && !(false) && (0, _debug.assert)(errorMessage() + \" \" + (0, _calculateLocationDisplay.default)(moduleName, loc)));\n }\n }\n }\n };\n }\n\n function errorMessage() {\n return '`...attributes` can only be used in the element position e.g. `<div ...attributes />`. It cannot be used as a path.';\n }\n});","define(\"ember-template-compiler/lib/plugins/deprecate-send-action\", [\"exports\", \"@ember/debug\", \"@ember/deprecated-features\", \"ember-template-compiler/lib/system/calculate-location-display\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _debug, _deprecatedFeatures, _calculateLocationDisplay, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = deprecateSendAction;\n var EVENTS = ['insert-newline', 'enter', 'escape-press', 'focus-in', 'focus-out', 'key-press', 'key-up', 'key-down'];\n\n function deprecateSendAction(env) {\n var _a;\n\n if (_deprecatedFeatures.SEND_ACTION) {\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n\n var deprecationMessage = function deprecationMessage(node, eventName, actionName) {\n var sourceInformation = (0, _calculateLocationDisplay.default)(moduleName, node.loc);\n\n if (node.type === 'ElementNode') {\n return \"Passing actions to components as strings (like `<Input @\" + eventName + \"=\\\"\" + actionName + \"\\\" />`) is deprecated. Please use closure actions instead (`<Input @\" + eventName + \"={{action \\\"\" + actionName + \"\\\"}} />`). \" + sourceInformation;\n } else {\n return \"Passing actions to components as strings (like `{{input \" + eventName + \"=\\\"\" + actionName + \"\\\"}}`) is deprecated. Please use closure actions instead (`{{input \" + eventName + \"=(action \\\"\" + actionName + \"\\\")}}`). \" + sourceInformation;\n }\n };\n\n return {\n name: 'deprecate-send-action',\n visitor: {\n ElementNode: function ElementNode(node) {\n if (node.tag !== 'Input') {\n return;\n }\n\n node.attributes.forEach(function (_ref) {\n var name = _ref.name,\n value = _ref.value;\n\n if (name.charAt(0) === '@') {\n var eventName = name.substring(1);\n\n if (EVENTS.indexOf(eventName) > -1) {\n if (value.type === 'TextNode') {\n (true && !(false) && (0, _debug.deprecate)(deprecationMessage(node, eventName, value.chars), false, {\n id: 'ember-component.send-action',\n until: '4.0.0',\n url: 'https://deprecations.emberjs.com/v3.x#toc_ember-component-send-action',\n for: 'ember-source',\n since: {\n enabled: '3.4.0'\n }\n }));\n } else if (value.type === 'MustacheStatement' && value.path.type === 'StringLiteral') {\n (true && !(false) && (0, _debug.deprecate)(deprecationMessage(node, eventName, value.path.original), false, {\n id: 'ember-component.send-action',\n until: '4.0.0',\n url: 'https://deprecations.emberjs.com/v3.x#toc_ember-component-send-action',\n for: 'ember-source',\n since: {\n enabled: '3.4.0'\n }\n }));\n }\n }\n }\n });\n },\n MustacheStatement: function MustacheStatement(node) {\n if (!(0, _utils.isPath)(node.path) || node.path.original !== 'input') {\n return;\n }\n\n node.hash.pairs.forEach(function (pair) {\n if (EVENTS.indexOf(pair.key) > -1 && pair.value.type === 'StringLiteral') {\n (true && !(false) && (0, _debug.deprecate)(deprecationMessage(node, pair.key, pair.value.original), false, {\n id: 'ember-component.send-action',\n until: '4.0.0',\n url: 'https://deprecations.emberjs.com/v3.x#toc_ember-component-send-action',\n for: 'ember-source',\n since: {\n enabled: '3.4.0'\n }\n }));\n }\n });\n }\n }\n };\n }\n\n return {\n name: 'deprecate-send-action',\n visitor: {}\n };\n }\n});","define(\"ember-template-compiler/lib/plugins/deprecate-with\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _debug, _calculateLocationDisplay, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = deprecateWith;\n\n /**\n @module ember\n */\n\n /**\n A Glimmer2 AST transformation that deprecates `{{#with}}` and replace it\n with `{{#let}}` and `{{#if}}` as per RFC 445.\n \n Transforms:\n \n ```handlebars\n {{#with this.foo as |bar|}}\n ...\n {{/with}}\n ```\n \n Into:\n \n ```handlebars\n {{#let this.foo as |bar|}}\n {{#if bar}}\n ...\n {{/if}}\n {{/let}}\n ```\n \n And:\n \n ```handlebars\n {{#with this.foo as |bar|}}\n ...\n {{else}}\n ...\n {{/with}}\n ```\n \n Into:\n \n ```handlebars\n {{#let this.foo as |bar|}}\n {{#if bar}}\n ...\n {{else}}\n ...\n {{/if}}\n {{/let}}\n ```\n \n And issues a deprecation message.\n \n @private\n @class DeprecateWith\n */\n function deprecateWith(env) {\n var _a;\n\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n var b = env.syntax.builders;\n return {\n name: 'deprecate-with',\n visitor: {\n BlockStatement: function BlockStatement(node) {\n if (!(0, _utils.isPath)(node.path) || node.path.original !== 'with') return;\n var params = node.params,\n hash = node.hash,\n program = node.program,\n inverse = node.inverse,\n loc = node.loc,\n openStrip = node.openStrip,\n inverseStrip = node.inverseStrip,\n closeStrip = node.closeStrip;\n var sourceInformation = (0, _calculateLocationDisplay.default)(moduleName, node.loc);\n (true && !(params.length === 1) && (0, _debug.assert)(\"`{{#with}}` takes a single positional argument (the path to alias), received \" + displayParams(params) + \". \" + sourceInformation, params.length === 1));\n (true && !(hash.pairs.length === 0) && (0, _debug.assert)(\"`{{#with}}` does not take any named arguments, received \" + displayHash(hash) + \". \" + sourceInformation, hash.pairs.length === 0));\n (true && !(program.blockParams.length <= 1) && (0, _debug.assert)(\"`{{#with}}` yields a single block param, received \" + displayBlockParams(program.blockParams) + \". \" + sourceInformation, program.blockParams.length <= 1));\n var recommendation;\n\n if (program.blockParams.length === 0) {\n recommendation = 'Use `{{#if}}` instead.';\n } else if (inverse) {\n recommendation = 'Use `{{#let}}` together with `{{#if}} instead.';\n } else {\n recommendation = 'If you always want the block to render, replace `{{#with}}` with `{{#let}}`. ' + 'If you want to conditionally render the block, use `{{#let}}` together with `{{#if}} instead.';\n }\n\n (true && !(false) && (0, _debug.deprecate)(\"`{{#with}}` is deprecated. \" + recommendation + \" \" + sourceInformation, false, {\n id: 'ember-glimmer.with-syntax',\n until: '4.0.0',\n for: 'ember-source',\n url: 'https://deprecations.emberjs.com/v3.x/#toc_ember-glimmer-with-syntax',\n since: {\n enabled: '3.26.0-beta.1'\n }\n }));\n\n if (program.blockParams.length === 0) {\n return b.block('if', params, null, program, inverse, loc, openStrip, inverseStrip, closeStrip);\n } else {\n return b.block('let', params, null, b.blockItself([b.block('if', [b.path(program.blockParams[0])], null, b.blockItself(program.body, [], program.chained, program.loc), inverse, loc, openStrip, inverseStrip, closeStrip)], program.blockParams, false, loc), null, loc, openStrip, inverseStrip, closeStrip);\n }\n }\n }\n };\n }\n\n function displayParams(params) {\n if (params.length === 0) {\n return 'no positional arguments';\n } else {\n var display = params.map(function (param) {\n return \"`\" + JSON.stringify(param) + \"`\";\n }).join(', ');\n return params.length + \" positional arguments: \" + display;\n }\n }\n\n function displayHash(_ref) {\n var pairs = _ref.pairs;\n\n if (pairs.length === 0) {\n return 'no named arguments';\n } else {\n var display = pairs.map(function (pair) {\n return \"`\" + pair.key + \"`\";\n }).join(', ');\n return pairs.length + \" named arguments: \" + display;\n }\n }\n\n function displayBlockParams(blockParams) {\n if (blockParams.length === 0) {\n return 'no block params';\n } else {\n var display = blockParams.map(function (param) {\n return \"`\" + param + \"`\";\n }).join(', ');\n return blockParams.length + \" block params: \" + display;\n }\n }\n});","define(\"ember-template-compiler/lib/plugins/index\", [\"exports\", \"ember-template-compiler/lib/plugins/assert-against-dynamic-helpers-modifiers\", \"ember-template-compiler/lib/plugins/assert-against-named-blocks\", \"ember-template-compiler/lib/plugins/assert-input-helper-without-block\", \"ember-template-compiler/lib/plugins/assert-reserved-named-arguments\", \"ember-template-compiler/lib/plugins/assert-splattribute-expression\", \"ember-template-compiler/lib/plugins/deprecate-send-action\", \"ember-template-compiler/lib/plugins/deprecate-with\", \"ember-template-compiler/lib/plugins/transform-action-syntax\", \"ember-template-compiler/lib/plugins/transform-attrs-into-args\", \"ember-template-compiler/lib/plugins/transform-each-in-into-each\", \"ember-template-compiler/lib/plugins/transform-each-track-array\", \"ember-template-compiler/lib/plugins/transform-has-block-syntax\", \"ember-template-compiler/lib/plugins/transform-in-element\", \"ember-template-compiler/lib/plugins/transform-link-to\", \"ember-template-compiler/lib/plugins/transform-old-class-binding-syntax\", \"ember-template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings\", \"ember-template-compiler/lib/plugins/transform-resolutions\", \"ember-template-compiler/lib/plugins/transform-wrap-mount-and-outlet\", \"@ember/deprecated-features\"], function (_exports, _assertAgainstDynamicHelpersModifiers, _assertAgainstNamedBlocks, _assertInputHelperWithoutBlock, _assertReservedNamedArguments, _assertSplattributeExpression, _deprecateSendAction, _deprecateWith, _transformActionSyntax, _transformAttrsIntoArgs, _transformEachInIntoEach, _transformEachTrackArray, _transformHasBlockSyntax, _transformInElement, _transformLinkTo, _transformOldClassBindingSyntax, _transformQuotedBindingsIntoJustBindings, _transformResolutions, _transformWrapMountAndOutlet, _deprecatedFeatures) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.STRICT_MODE_TRANSFORMS = _exports.RESOLUTION_MODE_TRANSFORMS = void 0;\n // order of plugins is important\n var RESOLUTION_MODE_TRANSFORMS = Object.freeze([_transformOldClassBindingSyntax.default, _transformQuotedBindingsIntoJustBindings.default, _assertReservedNamedArguments.default, _transformActionSyntax.default, _transformAttrsIntoArgs.default, _transformEachInIntoEach.default, _transformHasBlockSyntax.default, _transformLinkTo.default, _assertInputHelperWithoutBlock.default, _transformInElement.default, _assertSplattributeExpression.default, _transformEachTrackArray.default, _transformWrapMountAndOutlet.default, _deprecateWith.default, _deprecatedFeatures.SEND_ACTION ? _deprecateSendAction.default : null, !true\n /* EMBER_NAMED_BLOCKS */\n ? _assertAgainstNamedBlocks.default : null, true\n /* EMBER_DYNAMIC_HELPERS_AND_MODIFIERS */\n ? _transformResolutions.default : _assertAgainstDynamicHelpersModifiers.default].filter(notNull));\n _exports.RESOLUTION_MODE_TRANSFORMS = RESOLUTION_MODE_TRANSFORMS;\n var STRICT_MODE_TRANSFORMS = Object.freeze([_transformQuotedBindingsIntoJustBindings.default, _assertReservedNamedArguments.default, _transformActionSyntax.default, _transformEachInIntoEach.default, _transformInElement.default, _assertSplattributeExpression.default, _transformEachTrackArray.default, _transformWrapMountAndOutlet.default, _deprecateWith.default, _deprecatedFeatures.SEND_ACTION ? _deprecateSendAction.default : null, !true\n /* EMBER_NAMED_BLOCKS */\n ? _assertAgainstNamedBlocks.default : null, !true\n /* EMBER_DYNAMIC_HELPERS_AND_MODIFIERS */\n ? _assertAgainstDynamicHelpersModifiers.default : null].filter(notNull));\n _exports.STRICT_MODE_TRANSFORMS = STRICT_MODE_TRANSFORMS;\n\n function notNull(value) {\n return value !== null;\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-action-syntax\", [\"exports\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformActionSyntax;\n\n /**\n @module ember\n */\n\n /**\n A Glimmer2 AST transformation that replaces all instances of\n \n ```handlebars\n <button {{action 'foo'}}>\n <button onblur={{action 'foo'}}>\n <button onblur={{action (action 'foo') 'bar'}}>\n ```\n \n with\n \n ```handlebars\n <button {{action this 'foo'}}>\n <button onblur={{action this 'foo'}}>\n <button onblur={{action this (action this 'foo') 'bar'}}>\n ```\n \n @private\n @class TransformActionSyntax\n */\n function transformActionSyntax(_ref) {\n var syntax = _ref.syntax;\n var b = syntax.builders;\n return {\n name: 'transform-action-syntax',\n visitor: {\n ElementModifierStatement: function ElementModifierStatement(node) {\n if (isAction(node)) {\n insertThisAsFirstParam(node, b);\n }\n },\n MustacheStatement: function MustacheStatement(node) {\n if (isAction(node)) {\n insertThisAsFirstParam(node, b);\n }\n },\n SubExpression: function SubExpression(node) {\n if (isAction(node)) {\n insertThisAsFirstParam(node, b);\n }\n }\n }\n };\n }\n\n function isAction(node) {\n return (0, _utils.isPath)(node.path) && node.path.original === 'action';\n }\n\n function insertThisAsFirstParam(node, builders) {\n node.params.unshift(builders.path('this'));\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-attrs-into-args\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\"], function (_exports, _debug, _calculateLocationDisplay) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformAttrsIntoArgs;\n\n /**\n @module ember\n */\n\n /**\n A Glimmer2 AST transformation that replaces all instances of\n \n ```handlebars\n {{attrs.foo.bar}}\n ```\n \n to\n \n ```handlebars\n {{@foo.bar}}\n ```\n \n as well as `{{#if attrs.foo}}`, `{{deeply (nested attrs.foobar.baz)}}`,\n `{{this.attrs.foo}}` etc\n \n @private\n @class TransformAttrsToProps\n */\n function transformAttrsIntoArgs(env) {\n var _a;\n\n var b = env.syntax.builders;\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n var stack = [[]];\n\n function updateBlockParamsStack(blockParams) {\n var parent = stack[stack.length - 1];\n stack.push(parent.concat(blockParams));\n }\n\n return {\n name: 'transform-attrs-into-args',\n visitor: {\n Program: {\n enter: function enter(node) {\n updateBlockParamsStack(node.blockParams);\n },\n exit: function exit() {\n stack.pop();\n }\n },\n ElementNode: {\n enter: function enter(node) {\n updateBlockParamsStack(node.blockParams);\n },\n exit: function exit() {\n stack.pop();\n }\n },\n PathExpression: function PathExpression(node) {\n if (isAttrs(node, stack[stack.length - 1])) {\n var path = b.path(node.original.substr(6));\n (true && !(false) && (0, _debug.deprecate)(\"Using {{attrs}} to reference named arguments has been deprecated. {{attrs.\" + path.original + \"}} should be updated to {{@\" + path.original + \"}}. \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), false, {\n id: 'attrs-arg-access',\n url: 'https://deprecations.emberjs.com/v3.x/#toc_attrs-arg-access',\n until: '4.0.0',\n for: 'ember-source',\n since: {\n enabled: '3.26.0'\n }\n }));\n path.original = \"@\" + path.original;\n path.data = true;\n return path;\n }\n }\n }\n };\n }\n\n function isAttrs(node, symbols) {\n var name = node.parts[0];\n\n if (symbols.indexOf(name) !== -1) {\n return false;\n }\n\n if (name === 'attrs') {\n if (node.this === true) {\n node.parts.shift();\n node.original = node.original.slice(5);\n }\n\n return true;\n }\n\n return false;\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-each-in-into-each\", [\"exports\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformEachInIntoEach;\n\n /**\n @module ember\n */\n\n /**\n A Glimmer2 AST transformation that replaces all instances of\n \n ```handlebars\n {{#each-in iterableThing as |key value|}}\n ```\n \n with\n \n ```handlebars\n {{#each (-each-in iterableThing) as |value key|}}\n ```\n \n @private\n @class TransformHasBlockSyntax\n */\n function transformEachInIntoEach(env) {\n var b = env.syntax.builders;\n return {\n name: 'transform-each-in-into-each',\n visitor: {\n BlockStatement: function BlockStatement(node) {\n if ((0, _utils.isPath)(node.path) && node.path.original === 'each-in') {\n node.params[0] = b.sexpr(b.path('-each-in'), [node.params[0]]);\n var blockParams = node.program.blockParams;\n\n if (!blockParams || blockParams.length === 0) {// who uses {{#each-in}} without block params?!\n } else if (blockParams.length === 1) {\n // insert a dummy variable for the first slot\n // pick a name that won't parse so it won't shadow any real variables\n blockParams = ['( unused value )', blockParams[0]];\n } else {\n var key = blockParams.shift();\n var value = blockParams.shift();\n blockParams = [value, key].concat(blockParams);\n }\n\n node.program.blockParams = blockParams;\n return b.block(b.path('each'), node.params, node.hash, node.program, node.inverse, node.loc);\n }\n }\n }\n };\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-each-track-array\", [\"exports\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformEachTrackArray;\n\n /**\n @module ember\n */\n\n /**\n A Glimmer2 AST transformation that replaces all instances of\n \n ```handlebars\n {{#each iterableThing as |key value|}}\n ```\n \n with\n \n ```handlebars\n {{#each (-track-array iterableThing) as |key value|}}\n ```\n \n @private\n @class TransformHasBlockSyntax\n */\n function transformEachTrackArray(env) {\n var b = env.syntax.builders;\n return {\n name: 'transform-each-track-array',\n visitor: {\n BlockStatement: function BlockStatement(node) {\n if ((0, _utils.isPath)(node.path) && node.path.original === 'each') {\n var firstParam = node.params[0];\n\n if (firstParam.type === 'SubExpression' && firstParam.path.type === 'PathExpression' && firstParam.path.original === '-each-in') {\n return;\n }\n\n node.params[0] = b.sexpr(b.path('-track-array'), [node.params[0]]);\n return b.block(b.path('each'), node.params, node.hash, node.program, node.inverse, node.loc);\n }\n }\n }\n };\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-has-block-syntax\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _debug, _calculateLocationDisplay, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformHasBlockSyntax;\n\n /**\n @module ember\n */\n\n /**\n A Glimmer2 AST transformation that replaces all instances of\n \n ```handlebars\n {{hasBlock}}\n ```\n \n with\n \n ```handlebars\n {{has-block}}\n ```\n \n @private\n @class TransformHasBlockSyntax\n */\n var TRANSFORMATIONS = {\n hasBlock: 'has-block',\n hasBlockParams: 'has-block-params'\n };\n\n function transformHasBlockSyntax(env) {\n var _a;\n\n var b = env.syntax.builders;\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n\n function emitDeprecationMessage(node, name) {\n var sourceInformation = (0, _calculateLocationDisplay.default)(moduleName, node.loc);\n (true && !(false) && (0, _debug.deprecate)(\"`\" + name + \"` is deprecated. Use `\" + TRANSFORMATIONS[name] + \"` instead. \" + sourceInformation, false, {\n id: 'has-block-and-has-block-params',\n until: '4.0.0',\n url: 'https://deprecations.emberjs.com/v3.x#toc_has-block-and-has-block-params',\n for: 'ember-source',\n since: {\n enabled: '3.25.0'\n }\n }));\n }\n\n return {\n name: 'transform-has-block-syntax',\n visitor: {\n PathExpression: function PathExpression(node) {\n if (TRANSFORMATIONS[node.original]) {\n emitDeprecationMessage(node, node.original);\n return b.sexpr(b.path(TRANSFORMATIONS[node.original]));\n }\n },\n MustacheStatement: function MustacheStatement(node) {\n if ((0, _utils.isPath)(node.path) && TRANSFORMATIONS[node.path.original]) {\n emitDeprecationMessage(node, node.path.original);\n return b.mustache(b.path(TRANSFORMATIONS[node.path.original]), node.params, node.hash, undefined, node.loc);\n }\n },\n SubExpression: function SubExpression(node) {\n if ((0, _utils.isPath)(node.path) && TRANSFORMATIONS[node.path.original]) {\n emitDeprecationMessage(node, node.path.original);\n return b.sexpr(b.path(TRANSFORMATIONS[node.path.original]), node.params, node.hash);\n }\n }\n }\n };\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-in-element\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _debug, _calculateLocationDisplay, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformInElement;\n\n /**\n @module ember\n */\n\n /**\n A Glimmer2 AST transformation that handles the public `{{in-element}}` as per RFC287, and deprecates but still\n continues support for the private `{{-in-element}}`.\n \n Transforms:\n \n ```handlebars\n {{#-in-element someElement}}\n {{modal-display text=text}}\n {{/-in-element}}\n ```\n \n into:\n \n ```handlebars\n {{#in-element someElement}}\n {{modal-display text=text}}\n {{/in-element}}\n ```\n \n And issues a deprecation message.\n \n Issues a build time assertion for:\n \n ```handlebars\n {{#in-element someElement insertBefore=\"some-none-null-value\"}}\n {{modal-display text=text}}\n {{/in-element}}\n ```\n \n @private\n @class TransformInElement\n */\n function transformInElement(env) {\n var _a;\n\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n var b = env.syntax.builders;\n return {\n name: 'transform-in-element',\n visitor: {\n BlockStatement: function BlockStatement(node) {\n if (!(0, _utils.isPath)(node.path)) return;\n\n if (node.path.original === 'in-element') {\n var originalValue = node.params[0];\n\n if (originalValue && !env.isProduction) {\n var subExpr = b.sexpr('-in-el-null', [originalValue]);\n node.params.shift();\n node.params.unshift(subExpr);\n }\n\n node.hash.pairs.forEach(function (pair) {\n if (pair.key === 'insertBefore') {\n (true && !(pair.value.type === 'NullLiteral' || pair.value.type === 'UndefinedLiteral') && (0, _debug.assert)(\"Can only pass null to insertBefore in in-element, received: \" + JSON.stringify(pair.value), pair.value.type === 'NullLiteral' || pair.value.type === 'UndefinedLiteral'));\n }\n });\n } else if (node.path.original === '-in-element') {\n var sourceInformation = (0, _calculateLocationDisplay.default)(moduleName, node.loc);\n (true && !(false) && (0, _debug.deprecate)(\"The use of the private `{{-in-element}}` is deprecated, please refactor to the public `{{in-element}}`. \" + sourceInformation, false, {\n id: 'glimmer.private-in-element',\n until: '3.25.0',\n for: 'ember-source',\n since: {\n enabled: '3.20.0'\n }\n }));\n node.path.original = 'in-element';\n node.path.parts = ['in-element']; // replicate special hash arguments added here:\n // https://github.com/glimmerjs/glimmer-vm/blob/ba9b37d44b85fa1385eeeea71910ff5798198c8e/packages/%40glimmer/syntax/lib/parser/handlebars-node-visitors.ts#L340-L363\n\n var needsInsertBefore = true;\n var hash = node.hash;\n hash.pairs.forEach(function (pair) {\n if (pair.key === 'insertBefore') {\n (true && !(pair.value.type === 'NullLiteral' || pair.value.type === 'UndefinedLiteral') && (0, _debug.assert)(\"Can only pass a null or undefined literals to insertBefore in -in-element, received: \" + JSON.stringify(pair.value), pair.value.type === 'NullLiteral' || pair.value.type === 'UndefinedLiteral'));\n needsInsertBefore = false;\n }\n }); // Maintain compatibility with previous -in-element behavior (defaults to append, not clear)\n\n if (needsInsertBefore) {\n var nullLiteral = b.literal('NullLiteral', null);\n var nextSibling = b.pair('insertBefore', nullLiteral);\n hash.pairs.push(nextSibling);\n }\n }\n }\n }\n };\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-link-to\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _debug, _calculateLocationDisplay, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformLinkTo;\n\n function isInlineLinkTo(node) {\n return (0, _utils.isPath)(node.path) && node.path.original === 'link-to';\n }\n\n function isBlockLinkTo(node) {\n return (0, _utils.isPath)(node.path) && node.path.original === 'link-to';\n }\n\n function isQueryParams(node) {\n return (0, _utils.isSubExpression)(node) && (0, _utils.isPath)(node.path) && node.path.original === 'query-params';\n }\n\n function transformInlineLinkToIntoBlockForm(env, node) {\n var b = env.syntax.builders;\n return b.block('link-to', node.params.slice(1), node.hash, b.blockItself([buildStatement(b, node.params[0], node.escaped, node.loc)], undefined, false, node.loc), null, node.loc);\n }\n\n function transformPositionalLinkToIntoNamedArguments(env, node, hasBlock) {\n if (hasBlock === void 0) {\n hasBlock = true;\n }\n\n var _a, _b;\n\n var b = env.syntax.builders;\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n var params = node.params,\n pairs = node.hash.pairs;\n var keys = pairs.map(function (pair) {\n return pair.key;\n });\n\n if (params.length === 0) {\n (true && !(keys.indexOf('params') !== -1 || keys.indexOf('route') !== -1 || keys.indexOf('model') !== -1 || keys.indexOf('models') !== -1 || keys.indexOf('query') !== -1) && (0, _debug.assert)(\"You must provide one or more parameters to the `{{link-to}}` component. \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), keys.indexOf('params') !== -1 || keys.indexOf('route') !== -1 || keys.indexOf('model') !== -1 || keys.indexOf('models') !== -1 || keys.indexOf('query') !== -1));\n return node;\n } else {\n (true && !(keys.indexOf('params') === -1) && (0, _debug.assert)(\"You cannot pass positional parameters and the `params` argument to the `{{link-to}}` component at the same time. \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), keys.indexOf('params') === -1));\n (true && !(keys.indexOf('route') === -1) && (0, _debug.assert)(\"You cannot pass positional parameters and the `route` argument to the `{{link-to}}` component at the same time. \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), keys.indexOf('route') === -1));\n (true && !(keys.indexOf('model') === -1) && (0, _debug.assert)(\"You cannot pass positional parameters and the `model` argument to the `{{link-to}}` component at the same time. \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), keys.indexOf('model') === -1));\n (true && !(keys.indexOf('models') === -1) && (0, _debug.assert)(\"You cannot pass positional parameters and the `models` argument to the `{{link-to}}` component at the same time. \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), keys.indexOf('models') === -1));\n (true && !(keys.indexOf('query') === -1) && (0, _debug.assert)(\"You cannot pass positional parameters and the `query` argument to the `{{link-to}}` component at the same time. \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), keys.indexOf('query') === -1));\n }\n\n (true && !(params.length > 0) && (0, _debug.assert)(\"You must provide one or more parameters to the `{{link-to}}` component. \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), params.length > 0));\n var equivalentNamedArgs = [];\n var hasQueryParams = false; // 1. The last argument is possibly the `query` object.\n\n var query = params[params.length - 1];\n\n if (query && isQueryParams(query)) {\n params.pop();\n (true && !(query.params.length === 0) && (0, _debug.assert)(\"The `(query-params ...)` helper does not take positional arguments. \" + (0, _calculateLocationDisplay.default)(moduleName, query.loc), query.params.length === 0));\n pairs.push(b.pair('query', b.sexpr(b.path('-hash', query.path.loc), [], query.hash, query.loc), query.loc));\n hasQueryParams = true;\n } // 2. If there is a `route`, it is now at index 0.\n\n\n var route = params.shift();\n\n if (route) {\n pairs.push(b.pair('route', route, route.loc));\n equivalentNamedArgs.push('`@route`');\n } // 3. Any remaining indices (if any) are `models`.\n\n\n if (params.length === 1) {\n pairs.push(b.pair('model', params[0], params[0].loc));\n equivalentNamedArgs.push('`@model`');\n } else if (params.length > 1) {\n pairs.push(b.pair('models', b.sexpr(b.path('array', node.loc), params, undefined, node.loc), node.loc));\n equivalentNamedArgs.push('`@models`');\n }\n\n if (hasQueryParams) {\n equivalentNamedArgs.push('`@query`');\n }\n\n if (equivalentNamedArgs.length > 0) {\n var message = 'Invoking the `<LinkTo>` component with positional arguments is deprecated.';\n message += \"Please use the equivalent named arguments (\" + equivalentNamedArgs.join(', ') + \")\";\n\n if (hasQueryParams) {\n message += ' along with the `hash` helper';\n }\n\n if (!hasBlock) {\n message += \" and pass a block for the link's content.\";\n }\n\n message += '.';\n\n if ((_b = node.loc) === null || _b === void 0 ? void 0 : _b.source) {\n message += \" \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc);\n }\n\n (true && !(false) && (0, _debug.deprecate)(message, false, {\n id: 'ember-glimmer.link-to.positional-arguments',\n until: '4.0.0',\n for: 'ember-source',\n url: 'https://deprecations.emberjs.com/v3.x#toc_ember-glimmer-link-to-positional-arguments',\n since: {\n enabled: '3.26.0-beta.1'\n }\n }));\n }\n\n return b.block(node.path, null, b.hash(pairs, node.hash.loc), node.program, node.inverse, node.loc);\n }\n\n function buildStatement(b, content, escaped, loc) {\n switch (content.type) {\n case 'PathExpression':\n return b.mustache(content, undefined, undefined, !escaped, loc);\n\n case 'SubExpression':\n return b.mustache(content.path, content.params, content.hash, !escaped, loc);\n // The default case handles literals.\n\n default:\n return b.text(\"\" + content.value, loc);\n }\n }\n\n function transformLinkTo(env) {\n return {\n name: 'transform-link-to',\n visitor: {\n MustacheStatement: function MustacheStatement(node) {\n if (isInlineLinkTo(node)) {\n var block = transformInlineLinkToIntoBlockForm(env, node);\n return transformPositionalLinkToIntoNamedArguments(env, block, false);\n }\n },\n BlockStatement: function BlockStatement(node) {\n if (isBlockLinkTo(node)) {\n return transformPositionalLinkToIntoNamedArguments(env, node);\n }\n }\n }\n };\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-old-class-binding-syntax\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\"], function (_exports, _debug, _calculateLocationDisplay) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformOldClassBindingSyntax;\n\n function transformOldClassBindingSyntax(env) {\n var _a;\n\n var b = env.syntax.builders;\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n return {\n name: 'transform-old-class-binding-syntax',\n visitor: {\n MustacheStatement: function MustacheStatement(node) {\n process(b, node, moduleName);\n },\n BlockStatement: function BlockStatement(node) {\n process(b, node, moduleName);\n }\n }\n };\n }\n\n function process(b, node, moduleName) {\n var allOfTheMicrosyntaxes = [];\n var allOfTheMicrosyntaxIndexes = [];\n var classPair;\n each(node.hash.pairs, function (pair, index) {\n var key = pair.key;\n\n if (key === 'classBinding' || key === 'classNameBindings') {\n (true && !(false) && (0, _debug.deprecate)(\"Passing the `\" + key + \"` property as an argument within templates has been deprecated. Instead, you can pass the class argument and use concatenation to produce the class value dynamically. \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), false, {\n id: 'class-binding-and-class-name-bindings-in-templates',\n url: 'https://deprecations.emberjs.com/v3.x/#toc_class-binding-and-class-name-bindings-in-templates',\n until: '4.0.0',\n for: 'ember-source',\n since: {\n enabled: '3.26.0'\n }\n }));\n allOfTheMicrosyntaxIndexes.push(index);\n allOfTheMicrosyntaxes.push(pair);\n } else if (key === 'class') {\n classPair = pair;\n }\n });\n\n if (allOfTheMicrosyntaxes.length === 0) {\n return;\n }\n\n var classValue = [];\n\n if (classPair) {\n classValue.push(classPair.value);\n classValue.push(b.string(' '));\n } else {\n classPair = b.pair('class', null);\n node.hash.pairs.push(classPair);\n }\n\n each(allOfTheMicrosyntaxIndexes, function (index) {\n node.hash.pairs.splice(index, 1);\n });\n each(allOfTheMicrosyntaxes, function (_ref) {\n var value = _ref.value;\n var sexprs = []; // TODO: add helpful deprecation when both `classNames` and `classNameBindings` can\n // be removed.\n\n if (value.type === 'StringLiteral') {\n var microsyntax = parseMicrosyntax(value.original);\n buildSexprs(microsyntax, sexprs, b);\n classValue.push.apply(classValue, sexprs);\n }\n });\n var hash = b.hash();\n classPair.value = b.sexpr(b.path('concat'), classValue, hash);\n }\n\n function buildSexprs(microsyntax, sexprs, b) {\n for (var i = 0; i < microsyntax.length; i++) {\n var _microsyntax$i = microsyntax[i],\n propName = _microsyntax$i[0],\n activeClass = _microsyntax$i[1],\n inactiveClass = _microsyntax$i[2];\n var sexpr = void 0; // :my-class-name microsyntax for static values\n\n if (propName === '') {\n sexpr = b.string(activeClass);\n } else {\n var params = [b.path(propName)];\n\n if (activeClass || activeClass === '') {\n params.push(b.string(activeClass));\n } else {\n var sexprParams = [b.string(propName), b.path(propName)];\n var hash = b.hash();\n\n if (activeClass !== undefined) {\n hash.pairs.push(b.pair('activeClass', b.string(activeClass)));\n }\n\n if (inactiveClass !== undefined) {\n hash.pairs.push(b.pair('inactiveClass', b.string(inactiveClass)));\n }\n\n params.push(b.sexpr(b.path('-normalize-class'), sexprParams, hash));\n }\n\n if (inactiveClass || inactiveClass === '') {\n params.push(b.string(inactiveClass));\n }\n\n sexpr = b.sexpr(b.path('if'), params);\n }\n\n sexprs.push(sexpr);\n sexprs.push(b.string(' '));\n }\n }\n\n function each(list, callback) {\n for (var i = 0; i < list.length; i++) {\n callback(list[i], i);\n }\n }\n\n function parseMicrosyntax(string) {\n var segments = string.split(' ');\n var ret = [];\n\n for (var i = 0; i < segments.length; i++) {\n ret[i] = segments[i].split(':');\n }\n\n return ret;\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformQuotedBindingsIntoJustBindings;\n\n function transformQuotedBindingsIntoJustBindings()\n /* env */\n {\n return {\n name: 'transform-quoted-bindings-into-just-bindings',\n visitor: {\n ElementNode: function ElementNode(node) {\n var styleAttr = getStyleAttr(node);\n\n if (!validStyleAttr(styleAttr)) {\n return;\n }\n\n styleAttr.value = styleAttr.value.parts[0];\n }\n }\n };\n }\n\n function validStyleAttr(attr) {\n if (!attr) {\n return false;\n }\n\n var value = attr.value;\n\n if (!value || value.type !== 'ConcatStatement' || value.parts.length !== 1) {\n return false;\n }\n\n var onlyPart = value.parts[0];\n return onlyPart.type === 'MustacheStatement';\n }\n\n function getStyleAttr(node) {\n var attributes = node.attributes;\n\n for (var i = 0; i < attributes.length; i++) {\n if (attributes[i].name === 'style') {\n return attributes[i];\n }\n }\n\n return undefined;\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-resolutions\", [\"exports\", \"@ember/debug\", \"@glimmer/syntax\", \"ember-template-compiler/lib/system/calculate-location-display\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _debug, _syntax, _calculateLocationDisplay, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformResolutions;\n\n /**\n @module ember\n */\n\n /**\n A Glimmer2 AST transformation that replaces all instances of\n \n ```handlebars\n {{helper \"...\" ...}}\n ```\n \n with\n \n ```handlebars\n {{helper (-resolve \"helper:...\") ...}}\n ```\n \n and\n \n ```handlebars\n {{helper ... ...}}\n ```\n \n with\n \n ```handlebars\n {{helper (-disallow-dynamic-resolution ...) ...}}\n ```\n \n and\n \n ```handlebars\n {{modifier \"...\" ...}}\n ```\n \n with\n \n ```handlebars\n {{modifier (-resolve \"modifier:...\") ...}}\n ```\n and\n \n ```handlebars\n {{modifier ... ...}}\n ```\n \n with\n \n ```handlebars\n {{modifier (-disallow-dynamic-resolution ...) ...}}\n ```\n \n @private\n @class TransformResolutions\n */\n var TARGETS = Object.freeze(['helper', 'modifier']);\n\n function transformResolutions(env) {\n var _a;\n\n var b = env.syntax.builders;\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n\n var _trackLocals = (0, _utils.trackLocals)(),\n hasLocal = _trackLocals.hasLocal,\n tracker = _trackLocals.node;\n\n var seen;\n return {\n name: 'transform-resolutions',\n visitor: {\n Template: {\n enter: function enter() {\n seen = new Set();\n },\n exit: function exit() {\n seen = undefined;\n }\n },\n Block: tracker,\n ElementNode: {\n keys: {\n children: tracker\n }\n },\n MustacheStatement: function MustacheStatement(node) {\n (true && !(seen) && (0, _debug.assert)('[BUG] seen set should be available', seen));\n\n if (seen.has(node)) {\n return;\n }\n\n if ((0, _utils.isPath)(node.path) && !isLocalVariable(node.path, hasLocal) && TARGETS.indexOf(node.path.original) !== -1) {\n var result = b.mustache(node.path, transformParams(b, node.params, node.path.original, moduleName, node.loc), node.hash, node.trusting, node.loc, node.strip); // Avoid double/infinite-processing\n\n seen.add(result);\n return result;\n }\n },\n SubExpression: function SubExpression(node) {\n (true && !(seen) && (0, _debug.assert)('[BUG] seen set should be available', seen));\n\n if (seen.has(node)) {\n return;\n }\n\n if ((0, _utils.isPath)(node.path) && !isLocalVariable(node.path, hasLocal) && TARGETS.indexOf(node.path.original) !== -1) {\n var result = b.sexpr(node.path, transformParams(b, node.params, node.path.original, moduleName, node.loc), node.hash, node.loc); // Avoid double/infinite-processing\n\n seen.add(result);\n return result;\n }\n }\n }\n };\n }\n\n function isLocalVariable(node, hasLocal) {\n return !node.this && node.parts.length === 1 && hasLocal(node.parts[0]);\n }\n\n function transformParams(b, params, type, moduleName, loc) {\n var first = params[0],\n rest = params.slice(1);\n (true && !(first) && (0, _debug.assert)(\"The \" + type + \" keyword requires at least one positional arguments \" + (0, _calculateLocationDisplay.default)(moduleName, loc), first));\n\n if ((0, _utils.isStringLiteral)(first)) {\n return [b.sexpr(b.path('-resolve', first.loc), [b.string(type + \":\" + first.value)], undefined, first.loc)].concat(rest);\n } else if (true\n /* DEBUG */\n ) {\n return [b.sexpr(b.path('-disallow-dynamic-resolution', first.loc), [first], b.hash([b.pair('type', b.string(type), first.loc), b.pair('loc', b.string((0, _calculateLocationDisplay.default)(moduleName, loc)), first.loc), b.pair('original', b.string((0, _syntax.print)(first)))]), first.loc)].concat(rest);\n } else {\n return params;\n }\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-wrap-mount-and-outlet\", [\"exports\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformWrapMountAndOutlet;\n\n /**\n @module ember\n */\n\n /**\n A Glimmer2 AST transformation that replaces all instances of\n \n ```handlebars\n {{mount \"engine\" model=this.model}}\n ```\n \n with\n \n ```handlebars\n {{component (-mount \"engine\" model=this.model)}}\n ```\n \n and\n \n ```handlebars\n {{outlet}}\n ```\n \n with\n \n ```handlebars\n {{component (-outlet)}}\n ```\n \n @private\n @class TransformHasBlockSyntax\n */\n function transformWrapMountAndOutlet(env) {\n var b = env.syntax.builders;\n\n var _trackLocals = (0, _utils.trackLocals)(),\n hasLocal = _trackLocals.hasLocal,\n node = _trackLocals.node;\n\n return {\n name: 'transform-wrap-mount-and-outlet',\n visitor: {\n Program: node,\n ElementNode: node,\n MustacheStatement: function MustacheStatement(node) {\n if ((0, _utils.isPath)(node.path) && (node.path.original === 'mount' || node.path.original === 'outlet') && !hasLocal(node.path.original)) {\n var subexpression = b.sexpr(b.path(\"-\" + node.path.original), node.params, node.hash, node.loc);\n return b.mustache(b.path('component'), [subexpression], b.hash(), undefined, node.loc);\n }\n }\n }\n };\n }\n});","define(\"ember-template-compiler/lib/plugins/utils\", [\"exports\", \"ember-babel\"], function (_exports, _emberBabel) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.isPath = isPath;\n _exports.isSubExpression = isSubExpression;\n _exports.isStringLiteral = isStringLiteral;\n _exports.trackLocals = trackLocals;\n\n function isPath(node) {\n return node.type === 'PathExpression';\n }\n\n function isSubExpression(node) {\n return node.type === 'SubExpression';\n }\n\n function isStringLiteral(node) {\n return node.type === 'StringLiteral';\n }\n\n function trackLocals() {\n var locals = new Map();\n var node = {\n enter: function enter(node) {\n for (var _iterator = (0, _emberBabel.createForOfIteratorHelperLoose)(node.blockParams), _step; !(_step = _iterator()).done;) {\n var _param = _step.value;\n\n var _value = locals.get(_param) || 0;\n\n locals.set(_param, _value + 1);\n }\n },\n exit: function exit(node) {\n for (var _iterator2 = (0, _emberBabel.createForOfIteratorHelperLoose)(node.blockParams), _step2; !(_step2 = _iterator2()).done;) {\n var _param2 = _step2.value;\n\n var _value2 = locals.get(_param2) - 1;\n\n if (_value2 === 0) {\n locals.delete(_param2);\n } else {\n locals.set(_param2, _value2);\n }\n }\n }\n };\n return {\n hasLocal: function hasLocal(key) {\n return locals.has(key);\n },\n node: node\n };\n }\n});","define(\"ember-template-compiler/lib/system/bootstrap\", [\"exports\", \"ember-template-compiler/lib/system/compile\"], function (_exports, _compile) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n\n /**\n @module ember\n */\n\n /**\n Find templates stored in the head tag as script tags and make them available\n to `Ember.CoreView` in the global `Ember.TEMPLATES` object.\n \n Script tags with `text/x-handlebars` will be compiled\n with Ember's template compiler and are suitable for use as a view's template.\n \n @private\n @method bootstrap\n @for Ember.HTMLBars\n @static\n @param ctx\n */\n function bootstrap(_ref) {\n var context = _ref.context,\n hasTemplate = _ref.hasTemplate,\n setTemplate = _ref.setTemplate;\n\n if (!context) {\n context = document;\n }\n\n var selector = 'script[type=\"text/x-handlebars\"]';\n var elements = context.querySelectorAll(selector);\n\n for (var i = 0; i < elements.length; i++) {\n var script = elements[i]; // Get the name of the script\n // First look for data-template-name attribute, then fall back to its\n // id if no name is found.\n\n var templateName = script.getAttribute('data-template-name') || script.getAttribute('id') || 'application';\n var template = void 0;\n template = (0, _compile.default)(script.innerHTML, {\n moduleName: templateName\n }); // Check if template of same name already exists.\n\n if (hasTemplate(templateName)) {\n throw new Error(\"Template named \\\"\" + templateName + \"\\\" already exists.\");\n } // For templates which have a name, we save them and then remove them from the DOM.\n\n\n setTemplate(templateName, template); // Remove script tag from DOM.\n\n script.parentNode.removeChild(script);\n }\n }\n\n var _default = bootstrap;\n _exports.default = _default;\n});","define(\"ember-template-compiler/lib/system/calculate-location-display\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = calculateLocationDisplay;\n\n function calculateLocationDisplay(moduleName, loc) {\n var moduleInfo = '';\n\n if (moduleName) {\n moduleInfo += \"'\" + moduleName + \"' \";\n }\n\n if (loc) {\n var _ref = loc.start || {\n line: undefined,\n column: undefined\n },\n column = _ref.column,\n line = _ref.line;\n\n if (line !== undefined && column !== undefined) {\n if (moduleName) {\n // only prepend @ if the moduleName was present\n moduleInfo += '@ ';\n }\n\n moduleInfo += \"L\" + line + \":C\" + column;\n }\n }\n\n if (moduleInfo) {\n moduleInfo = \"(\" + moduleInfo + \") \";\n }\n\n return moduleInfo;\n }\n});","define(\"ember-template-compiler/lib/system/compile-options\", [\"exports\", \"@ember/debug\", \"@ember/polyfills\", \"ember-template-compiler/lib/plugins/index\", \"ember-template-compiler/lib/system/dasherize-component-name\"], function (_exports, _debug, _polyfills, _index, _dasherizeComponentName) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.buildCompileOptions = buildCompileOptions;\n _exports.transformsFor = transformsFor;\n _exports.default = compileOptions;\n _exports.registerPlugin = registerPlugin;\n _exports.unregisterPlugin = unregisterPlugin;\n var USER_PLUGINS = [];\n\n function malformedComponentLookup(string) {\n return string.indexOf('::') === -1 && string.indexOf(':') > -1;\n }\n\n function buildCompileOptions(_options) {\n var moduleName = _options.moduleName;\n var options = (0, _polyfills.assign)({\n meta: {},\n isProduction: false,\n plugins: {\n ast: []\n }\n }, _options, {\n moduleName: moduleName,\n customizeComponentName: function customizeComponentName(tagname) {\n (true && !(!malformedComponentLookup(tagname)) && (0, _debug.assert)(\"You tried to invoke a component named <\" + tagname + \" /> in \\\"\" + (moduleName !== null && moduleName !== void 0 ? moduleName : '[NO MODULE]') + \"\\\", but that is not a valid name for a component. Did you mean to use the \\\"::\\\" syntax for nested components?\", !malformedComponentLookup(tagname)));\n return _dasherizeComponentName.default.get(tagname);\n }\n });\n\n if (!true\n /* EMBER_STRICT_MODE */\n ) {\n options.strictMode = false;\n options.locals = undefined;\n }\n\n if ('locals' in options && !options.locals) {\n // Glimmer's precompile options declare `locals` like:\n // locals?: string[]\n // but many in-use versions of babel-plugin-htmlbars-inline-precompile will\n // set locals to `null`. This used to work but only because glimmer was\n // ignoring locals for non-strict templates, and now it supports that case.\n delete options.locals;\n } // move `moduleName` into `meta` property\n\n\n if (options.moduleName) {\n var meta = options.meta;\n (true && !(meta) && (0, _debug.assert)('has meta', meta)); // We just set it\n\n meta.moduleName = options.moduleName;\n }\n\n return options;\n }\n\n function transformsFor(options) {\n return true\n /* EMBER_STRICT_MODE */\n && options.strictMode ? _index.STRICT_MODE_TRANSFORMS : _index.RESOLUTION_MODE_TRANSFORMS;\n }\n\n function compileOptions(_options) {\n if (_options === void 0) {\n _options = {};\n }\n\n var options = buildCompileOptions(_options);\n var builtInPlugins = transformsFor(options);\n\n if (!_options.plugins) {\n options.plugins = {\n ast: [].concat(USER_PLUGINS, builtInPlugins)\n };\n } else {\n var potententialPugins = [].concat(USER_PLUGINS, builtInPlugins);\n (true && !(options.plugins) && (0, _debug.assert)('expected plugins', options.plugins));\n var providedPlugins = options.plugins.ast.map(function (plugin) {\n return wrapLegacyPluginIfNeeded(plugin);\n });\n var pluginsToAdd = potententialPugins.filter(function (plugin) {\n (true && !(options.plugins) && (0, _debug.assert)('expected plugins', options.plugins));\n return options.plugins.ast.indexOf(plugin) === -1;\n });\n options.plugins.ast = providedPlugins.concat(pluginsToAdd);\n }\n\n return options;\n }\n\n function isLegacyPluginClass(plugin) {\n return plugin.prototype && typeof plugin.prototype.transform === 'function';\n }\n\n function wrapLegacyPluginIfNeeded(plugin) {\n if (isLegacyPluginClass(plugin)) {\n var Plugin = plugin;\n (true && !(false) && (0, _debug.deprecate)(\"Using class based template compilation plugins is deprecated, please update to the functional style: \" + Plugin.name, false, {\n id: 'template-compiler.registerPlugin',\n until: '4.0.0',\n for: 'ember-source',\n since: {\n enabled: '3.27.0'\n }\n }));\n\n var pluginFunc = function pluginFunc(env) {\n var pluginInstantiated = false;\n return {\n name: plugin.name,\n visitor: {\n Program: function Program(node) {\n if (!pluginInstantiated) {\n pluginInstantiated = true;\n var instance = new Plugin(env);\n instance.syntax = env.syntax;\n return instance.transform(node);\n }\n }\n }\n };\n };\n\n pluginFunc.__raw = Plugin;\n return pluginFunc;\n } else {\n return plugin;\n }\n }\n\n function registerPlugin(type, _plugin) {\n (true && !(false) && (0, _debug.deprecate)('registerPlugin is deprecated, please pass plugins directly via `compile` and/or `precompile`.', false, {\n id: 'template-compiler.registerPlugin',\n until: '4.0.0',\n for: 'ember-source',\n since: {\n enabled: '3.27.0'\n }\n }));\n\n if (type !== 'ast') {\n throw new Error(\"Attempting to register \" + _plugin + \" as \\\"\" + type + \"\\\" which is not a valid Glimmer plugin type.\");\n }\n\n for (var i = 0; i < USER_PLUGINS.length; i++) {\n var PLUGIN = USER_PLUGINS[i];\n\n if (PLUGIN === _plugin || PLUGIN.__raw === _plugin) {\n return;\n }\n }\n\n var plugin = wrapLegacyPluginIfNeeded(_plugin);\n USER_PLUGINS = [plugin].concat(USER_PLUGINS);\n }\n\n function unregisterPlugin(type, PluginClass) {\n (true && !(false) && (0, _debug.deprecate)('unregisterPlugin is deprecated, please pass plugins directly via `compile` and/or `precompile`.', false, {\n id: 'template-compiler.registerPlugin',\n until: '4.0.0',\n for: 'ember-source',\n since: {\n enabled: '3.27.0'\n }\n }));\n\n if (type !== 'ast') {\n throw new Error(\"Attempting to unregister \" + PluginClass + \" as \\\"\" + type + \"\\\" which is not a valid Glimmer plugin type.\");\n }\n\n USER_PLUGINS = USER_PLUGINS.filter(function (plugin) {\n return plugin !== PluginClass && plugin.__raw !== PluginClass;\n });\n }\n});","define(\"ember-template-compiler/lib/system/compile\", [\"exports\", \"require\", \"ember-template-compiler/lib/system/precompile\"], function (_exports, _require, _precompile) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = compile;\n\n /**\n @module ember\n */\n var template;\n /**\n Uses HTMLBars `compile` function to process a string into a compiled template.\n This is not present in production builds.\n @private\n @method compile\n @param {String} templateString This is the string to be compiled by HTMLBars.\n @param {Object} options This is an options hash to augment the compiler options.\n */\n\n function compile(templateString, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (!template && (0, _require.has)('@ember/-internals/glimmer')) {\n // tslint:disable-next-line:no-require-imports\n template = (0, _require.default)(\"@ember/-internals/glimmer\").template;\n }\n\n if (!template) {\n throw new Error('Cannot call `compile` with only the template compiler loaded. Please load `ember.debug.js` or `ember.prod.js` prior to calling `compile`.');\n }\n\n return template(evaluate((0, _precompile.default)(templateString, options)));\n }\n\n function evaluate(precompiled) {\n return new Function(\"return \" + precompiled)();\n }\n});","define(\"ember-template-compiler/lib/system/dasherize-component-name\", [\"exports\", \"@ember/-internals/utils\"], function (_exports, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n\n /*\n This diverges from `Ember.String.dasherize` so that`<XFoo />` can resolve to `x-foo`.\n `Ember.String.dasherize` would resolve it to `xfoo`..\n */\n var SIMPLE_DASHERIZE_REGEXP = /[A-Z]|::/g;\n var ALPHA = /[A-Za-z0-9]/;\n\n var _default = new _utils.Cache(1000, function (key) {\n return key.replace(SIMPLE_DASHERIZE_REGEXP, function (char, index) {\n if (char === '::') {\n return '/';\n }\n\n if (index === 0 || !ALPHA.test(key[index - 1])) {\n return char.toLowerCase();\n }\n\n return \"-\" + char.toLowerCase();\n });\n });\n\n _exports.default = _default;\n});","define(\"ember-template-compiler/lib/system/initializer\", [\"require\", \"ember-template-compiler/lib/system/bootstrap\"], function (_require, _bootstrap) {\n \"use strict\";\n\n // Globals mode template compiler\n if ((0, _require.has)('@ember/application') && (0, _require.has)('@ember/-internals/browser-environment') && (0, _require.has)('@ember/-internals/glimmer')) {\n // tslint:disable:no-require-imports\n var emberEnv = (0, _require.default)(\"@ember/-internals/browser-environment\");\n var emberGlimmer = (0, _require.default)(\"@ember/-internals/glimmer\");\n var emberApp = (0, _require.default)(\"@ember/application\");\n var Application = emberApp.default;\n var hasTemplate = emberGlimmer.hasTemplate,\n setTemplate = emberGlimmer.setTemplate;\n var hasDOM = emberEnv.hasDOM;\n Application.initializer({\n name: 'domTemplates',\n initialize: function initialize() {\n if (hasDOM) {\n (0, _bootstrap.default)({\n context: document,\n hasTemplate: hasTemplate,\n setTemplate: setTemplate\n });\n }\n }\n });\n }\n});","define(\"ember-template-compiler/lib/system/precompile\", [\"exports\", \"@glimmer/compiler\", \"ember-template-compiler/lib/system/compile-options\"], function (_exports, _compiler, _compileOptions) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = precompile;\n\n /**\n @module ember\n */\n\n /**\n Uses HTMLBars `compile` function to process a string into a compiled template string.\n The returned string must be passed through `Ember.HTMLBars.template`.\n \n This is not present in production builds.\n \n @private\n @method precompile\n @param {String} templateString This is the string to be compiled by HTMLBars.\n */\n function precompile(templateString, options) {\n if (options === void 0) {\n options = {};\n }\n\n return (0, _compiler.precompile)(templateString, (0, _compileOptions.default)(options));\n }\n});","define(\"ember/version\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n var _default = \"3.28.8\";\n _exports.default = _default;\n});","define(\"simple-html-tokenizer\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.tokenize = tokenize;\n _exports.Tokenizer = _exports.EventedTokenizer = _exports.EntityParser = _exports.HTML5NamedCharRefs = void 0;\n\n /**\n * generated from https://raw.githubusercontent.com/w3c/html/26b5126f96f736f796b9e29718138919dd513744/entities.json\n * do not edit\n */\n var namedCharRefs = {\n Aacute: \"Á\",\n aacute: \"á\",\n Abreve: \"Ă\",\n abreve: \"ă\",\n ac: \"∾\",\n acd: \"∿\",\n acE: \"∾̳\",\n Acirc: \"Â\",\n acirc: \"â\",\n acute: \"´\",\n Acy: \"А\",\n acy: \"а\",\n AElig: \"Æ\",\n aelig: \"æ\",\n af: \"\\u2061\",\n Afr: \"𝔄\",\n afr: \"𝔞\",\n Agrave: \"À\",\n agrave: \"à\",\n alefsym: \"ℵ\",\n aleph: \"ℵ\",\n Alpha: \"Α\",\n alpha: \"α\",\n Amacr: \"Ā\",\n amacr: \"ā\",\n amalg: \"⨿\",\n amp: \"&\",\n AMP: \"&\",\n andand: \"⩕\",\n And: \"⩓\",\n and: \"∧\",\n andd: \"⩜\",\n andslope: \"⩘\",\n andv: \"⩚\",\n ang: \"∠\",\n ange: \"⦤\",\n angle: \"∠\",\n angmsdaa: \"⦨\",\n angmsdab: \"⦩\",\n angmsdac: \"⦪\",\n angmsdad: \"⦫\",\n angmsdae: \"⦬\",\n angmsdaf: \"⦭\",\n angmsdag: \"⦮\",\n angmsdah: \"⦯\",\n angmsd: \"∡\",\n angrt: \"∟\",\n angrtvb: \"⊾\",\n angrtvbd: \"⦝\",\n angsph: \"∢\",\n angst: \"Å\",\n angzarr: \"⍼\",\n Aogon: \"Ą\",\n aogon: \"ą\",\n Aopf: \"𝔸\",\n aopf: \"𝕒\",\n apacir: \"⩯\",\n ap: \"≈\",\n apE: \"⩰\",\n ape: \"≊\",\n apid: \"≋\",\n apos: \"'\",\n ApplyFunction: \"\\u2061\",\n approx: \"≈\",\n approxeq: \"≊\",\n Aring: \"Å\",\n aring: \"å\",\n Ascr: \"𝒜\",\n ascr: \"𝒶\",\n Assign: \"≔\",\n ast: \"*\",\n asymp: \"≈\",\n asympeq: \"≍\",\n Atilde: \"Ã\",\n atilde: \"ã\",\n Auml: \"Ä\",\n auml: \"ä\",\n awconint: \"∳\",\n awint: \"⨑\",\n backcong: \"≌\",\n backepsilon: \"϶\",\n backprime: \"‵\",\n backsim: \"∽\",\n backsimeq: \"⋍\",\n Backslash: \"∖\",\n Barv: \"⫧\",\n barvee: \"⊽\",\n barwed: \"⌅\",\n Barwed: \"⌆\",\n barwedge: \"⌅\",\n bbrk: \"⎵\",\n bbrktbrk: \"⎶\",\n bcong: \"≌\",\n Bcy: \"Б\",\n bcy: \"б\",\n bdquo: \"„\",\n becaus: \"∵\",\n because: \"∵\",\n Because: \"∵\",\n bemptyv: \"⦰\",\n bepsi: \"϶\",\n bernou: \"ℬ\",\n Bernoullis: \"ℬ\",\n Beta: \"Β\",\n beta: \"β\",\n beth: \"ℶ\",\n between: \"≬\",\n Bfr: \"𝔅\",\n bfr: \"𝔟\",\n bigcap: \"⋂\",\n bigcirc: \"◯\",\n bigcup: \"⋃\",\n bigodot: \"⨀\",\n bigoplus: \"⨁\",\n bigotimes: \"⨂\",\n bigsqcup: \"⨆\",\n bigstar: \"★\",\n bigtriangledown: \"▽\",\n bigtriangleup: \"△\",\n biguplus: \"⨄\",\n bigvee: \"⋁\",\n bigwedge: \"⋀\",\n bkarow: \"⤍\",\n blacklozenge: \"⧫\",\n blacksquare: \"▪\",\n blacktriangle: \"▴\",\n blacktriangledown: \"▾\",\n blacktriangleleft: \"◂\",\n blacktriangleright: \"▸\",\n blank: \"␣\",\n blk12: \"▒\",\n blk14: \"░\",\n blk34: \"▓\",\n block: \"█\",\n bne: \"=⃥\",\n bnequiv: \"≡⃥\",\n bNot: \"⫭\",\n bnot: \"⌐\",\n Bopf: \"𝔹\",\n bopf: \"𝕓\",\n bot: \"⊥\",\n bottom: \"⊥\",\n bowtie: \"⋈\",\n boxbox: \"⧉\",\n boxdl: \"┐\",\n boxdL: \"╕\",\n boxDl: \"╖\",\n boxDL: \"╗\",\n boxdr: \"┌\",\n boxdR: \"╒\",\n boxDr: \"╓\",\n boxDR: \"╔\",\n boxh: \"─\",\n boxH: \"═\",\n boxhd: \"┬\",\n boxHd: \"╤\",\n boxhD: \"╥\",\n boxHD: \"╦\",\n boxhu: \"┴\",\n boxHu: \"╧\",\n boxhU: \"╨\",\n boxHU: \"╩\",\n boxminus: \"⊟\",\n boxplus: \"⊞\",\n boxtimes: \"⊠\",\n boxul: \"┘\",\n boxuL: \"╛\",\n boxUl: \"╜\",\n boxUL: \"╝\",\n boxur: \"└\",\n boxuR: \"╘\",\n boxUr: \"╙\",\n boxUR: \"╚\",\n boxv: \"│\",\n boxV: \"║\",\n boxvh: \"┼\",\n boxvH: \"╪\",\n boxVh: \"╫\",\n boxVH: \"╬\",\n boxvl: \"┤\",\n boxvL: \"╡\",\n boxVl: \"╢\",\n boxVL: \"╣\",\n boxvr: \"├\",\n boxvR: \"╞\",\n boxVr: \"╟\",\n boxVR: \"╠\",\n bprime: \"‵\",\n breve: \"˘\",\n Breve: \"˘\",\n brvbar: \"¦\",\n bscr: \"𝒷\",\n Bscr: \"ℬ\",\n bsemi: \"⁏\",\n bsim: \"∽\",\n bsime: \"⋍\",\n bsolb: \"⧅\",\n bsol: \"\\\\\",\n bsolhsub: \"⟈\",\n bull: \"•\",\n bullet: \"•\",\n bump: \"≎\",\n bumpE: \"⪮\",\n bumpe: \"≏\",\n Bumpeq: \"≎\",\n bumpeq: \"≏\",\n Cacute: \"Ć\",\n cacute: \"ć\",\n capand: \"⩄\",\n capbrcup: \"⩉\",\n capcap: \"⩋\",\n cap: \"∩\",\n Cap: \"⋒\",\n capcup: \"⩇\",\n capdot: \"⩀\",\n CapitalDifferentialD: \"ⅅ\",\n caps: \"∩︀\",\n caret: \"⁁\",\n caron: \"ˇ\",\n Cayleys: \"ℭ\",\n ccaps: \"⩍\",\n Ccaron: \"Č\",\n ccaron: \"č\",\n Ccedil: \"Ç\",\n ccedil: \"ç\",\n Ccirc: \"Ĉ\",\n ccirc: \"ĉ\",\n Cconint: \"∰\",\n ccups: \"⩌\",\n ccupssm: \"⩐\",\n Cdot: \"Ċ\",\n cdot: \"ċ\",\n cedil: \"¸\",\n Cedilla: \"¸\",\n cemptyv: \"⦲\",\n cent: \"¢\",\n centerdot: \"·\",\n CenterDot: \"·\",\n cfr: \"𝔠\",\n Cfr: \"ℭ\",\n CHcy: \"Ч\",\n chcy: \"ч\",\n check: \"✓\",\n checkmark: \"✓\",\n Chi: \"Χ\",\n chi: \"χ\",\n circ: \"ˆ\",\n circeq: \"≗\",\n circlearrowleft: \"↺\",\n circlearrowright: \"↻\",\n circledast: \"⊛\",\n circledcirc: \"⊚\",\n circleddash: \"⊝\",\n CircleDot: \"⊙\",\n circledR: \"®\",\n circledS: \"Ⓢ\",\n CircleMinus: \"⊖\",\n CirclePlus: \"⊕\",\n CircleTimes: \"⊗\",\n cir: \"○\",\n cirE: \"⧃\",\n cire: \"≗\",\n cirfnint: \"⨐\",\n cirmid: \"⫯\",\n cirscir: \"⧂\",\n ClockwiseContourIntegral: \"∲\",\n CloseCurlyDoubleQuote: \"”\",\n CloseCurlyQuote: \"’\",\n clubs: \"♣\",\n clubsuit: \"♣\",\n colon: \":\",\n Colon: \"∷\",\n Colone: \"⩴\",\n colone: \"≔\",\n coloneq: \"≔\",\n comma: \",\",\n commat: \"@\",\n comp: \"∁\",\n compfn: \"∘\",\n complement: \"∁\",\n complexes: \"ℂ\",\n cong: \"≅\",\n congdot: \"⩭\",\n Congruent: \"≡\",\n conint: \"∮\",\n Conint: \"∯\",\n ContourIntegral: \"∮\",\n copf: \"𝕔\",\n Copf: \"ℂ\",\n coprod: \"∐\",\n Coproduct: \"∐\",\n copy: \"©\",\n COPY: \"©\",\n copysr: \"℗\",\n CounterClockwiseContourIntegral: \"∳\",\n crarr: \"↵\",\n cross: \"✗\",\n Cross: \"⨯\",\n Cscr: \"𝒞\",\n cscr: \"𝒸\",\n csub: \"⫏\",\n csube: \"⫑\",\n csup: \"⫐\",\n csupe: \"⫒\",\n ctdot: \"⋯\",\n cudarrl: \"⤸\",\n cudarrr: \"⤵\",\n cuepr: \"⋞\",\n cuesc: \"⋟\",\n cularr: \"↶\",\n cularrp: \"⤽\",\n cupbrcap: \"⩈\",\n cupcap: \"⩆\",\n CupCap: \"≍\",\n cup: \"∪\",\n Cup: \"⋓\",\n cupcup: \"⩊\",\n cupdot: \"⊍\",\n cupor: \"⩅\",\n cups: \"∪︀\",\n curarr: \"↷\",\n curarrm: \"⤼\",\n curlyeqprec: \"⋞\",\n curlyeqsucc: \"⋟\",\n curlyvee: \"⋎\",\n curlywedge: \"⋏\",\n curren: \"¤\",\n curvearrowleft: \"↶\",\n curvearrowright: \"↷\",\n cuvee: \"⋎\",\n cuwed: \"⋏\",\n cwconint: \"∲\",\n cwint: \"∱\",\n cylcty: \"⌭\",\n dagger: \"†\",\n Dagger: \"‡\",\n daleth: \"ℸ\",\n darr: \"↓\",\n Darr: \"↡\",\n dArr: \"⇓\",\n dash: \"‐\",\n Dashv: \"⫤\",\n dashv: \"⊣\",\n dbkarow: \"⤏\",\n dblac: \"˝\",\n Dcaron: \"Ď\",\n dcaron: \"ď\",\n Dcy: \"Д\",\n dcy: \"д\",\n ddagger: \"‡\",\n ddarr: \"⇊\",\n DD: \"ⅅ\",\n dd: \"ⅆ\",\n DDotrahd: \"⤑\",\n ddotseq: \"⩷\",\n deg: \"°\",\n Del: \"∇\",\n Delta: \"Δ\",\n delta: \"δ\",\n demptyv: \"⦱\",\n dfisht: \"⥿\",\n Dfr: \"𝔇\",\n dfr: \"𝔡\",\n dHar: \"⥥\",\n dharl: \"⇃\",\n dharr: \"⇂\",\n DiacriticalAcute: \"´\",\n DiacriticalDot: \"˙\",\n DiacriticalDoubleAcute: \"˝\",\n DiacriticalGrave: \"`\",\n DiacriticalTilde: \"˜\",\n diam: \"⋄\",\n diamond: \"⋄\",\n Diamond: \"⋄\",\n diamondsuit: \"♦\",\n diams: \"♦\",\n die: \"¨\",\n DifferentialD: \"ⅆ\",\n digamma: \"ϝ\",\n disin: \"⋲\",\n div: \"÷\",\n divide: \"÷\",\n divideontimes: \"⋇\",\n divonx: \"⋇\",\n DJcy: \"Ђ\",\n djcy: \"ђ\",\n dlcorn: \"⌞\",\n dlcrop: \"⌍\",\n dollar: \"$\",\n Dopf: \"𝔻\",\n dopf: \"𝕕\",\n Dot: \"¨\",\n dot: \"˙\",\n DotDot: \"⃜\",\n doteq: \"≐\",\n doteqdot: \"≑\",\n DotEqual: \"≐\",\n dotminus: \"∸\",\n dotplus: \"∔\",\n dotsquare: \"⊡\",\n doublebarwedge: \"⌆\",\n DoubleContourIntegral: \"∯\",\n DoubleDot: \"¨\",\n DoubleDownArrow: \"⇓\",\n DoubleLeftArrow: \"⇐\",\n DoubleLeftRightArrow: \"⇔\",\n DoubleLeftTee: \"⫤\",\n DoubleLongLeftArrow: \"⟸\",\n DoubleLongLeftRightArrow: \"⟺\",\n DoubleLongRightArrow: \"⟹\",\n DoubleRightArrow: \"⇒\",\n DoubleRightTee: \"⊨\",\n DoubleUpArrow: \"⇑\",\n DoubleUpDownArrow: \"⇕\",\n DoubleVerticalBar: \"∥\",\n DownArrowBar: \"⤓\",\n downarrow: \"↓\",\n DownArrow: \"↓\",\n Downarrow: \"⇓\",\n DownArrowUpArrow: \"⇵\",\n DownBreve: \"̑\",\n downdownarrows: \"⇊\",\n downharpoonleft: \"⇃\",\n downharpoonright: \"⇂\",\n DownLeftRightVector: \"⥐\",\n DownLeftTeeVector: \"⥞\",\n DownLeftVectorBar: \"⥖\",\n DownLeftVector: \"↽\",\n DownRightTeeVector: \"⥟\",\n DownRightVectorBar: \"⥗\",\n DownRightVector: \"⇁\",\n DownTeeArrow: \"↧\",\n DownTee: \"⊤\",\n drbkarow: \"⤐\",\n drcorn: \"⌟\",\n drcrop: \"⌌\",\n Dscr: \"𝒟\",\n dscr: \"𝒹\",\n DScy: \"Ѕ\",\n dscy: \"ѕ\",\n dsol: \"⧶\",\n Dstrok: \"Đ\",\n dstrok: \"đ\",\n dtdot: \"⋱\",\n dtri: \"▿\",\n dtrif: \"▾\",\n duarr: \"⇵\",\n duhar: \"⥯\",\n dwangle: \"⦦\",\n DZcy: \"Џ\",\n dzcy: \"џ\",\n dzigrarr: \"⟿\",\n Eacute: \"É\",\n eacute: \"é\",\n easter: \"⩮\",\n Ecaron: \"Ě\",\n ecaron: \"ě\",\n Ecirc: \"Ê\",\n ecirc: \"ê\",\n ecir: \"≖\",\n ecolon: \"≕\",\n Ecy: \"Э\",\n ecy: \"э\",\n eDDot: \"⩷\",\n Edot: \"Ė\",\n edot: \"ė\",\n eDot: \"≑\",\n ee: \"ⅇ\",\n efDot: \"≒\",\n Efr: \"𝔈\",\n efr: \"𝔢\",\n eg: \"⪚\",\n Egrave: \"È\",\n egrave: \"è\",\n egs: \"⪖\",\n egsdot: \"⪘\",\n el: \"⪙\",\n Element: \"∈\",\n elinters: \"⏧\",\n ell: \"ℓ\",\n els: \"⪕\",\n elsdot: \"⪗\",\n Emacr: \"Ē\",\n emacr: \"ē\",\n empty: \"∅\",\n emptyset: \"∅\",\n EmptySmallSquare: \"◻\",\n emptyv: \"∅\",\n EmptyVerySmallSquare: \"▫\",\n emsp13: \" \",\n emsp14: \" \",\n emsp: \" \",\n ENG: \"Ŋ\",\n eng: \"ŋ\",\n ensp: \" \",\n Eogon: \"Ę\",\n eogon: \"ę\",\n Eopf: \"𝔼\",\n eopf: \"𝕖\",\n epar: \"⋕\",\n eparsl: \"⧣\",\n eplus: \"⩱\",\n epsi: \"ε\",\n Epsilon: \"Ε\",\n epsilon: \"ε\",\n epsiv: \"ϵ\",\n eqcirc: \"≖\",\n eqcolon: \"≕\",\n eqsim: \"≂\",\n eqslantgtr: \"⪖\",\n eqslantless: \"⪕\",\n Equal: \"⩵\",\n equals: \"=\",\n EqualTilde: \"≂\",\n equest: \"≟\",\n Equilibrium: \"⇌\",\n equiv: \"≡\",\n equivDD: \"⩸\",\n eqvparsl: \"⧥\",\n erarr: \"⥱\",\n erDot: \"≓\",\n escr: \"ℯ\",\n Escr: \"ℰ\",\n esdot: \"≐\",\n Esim: \"⩳\",\n esim: \"≂\",\n Eta: \"Η\",\n eta: \"η\",\n ETH: \"Ð\",\n eth: \"ð\",\n Euml: \"Ë\",\n euml: \"ë\",\n euro: \"€\",\n excl: \"!\",\n exist: \"∃\",\n Exists: \"∃\",\n expectation: \"ℰ\",\n exponentiale: \"ⅇ\",\n ExponentialE: \"ⅇ\",\n fallingdotseq: \"≒\",\n Fcy: \"Ф\",\n fcy: \"ф\",\n female: \"♀\",\n ffilig: \"ffi\",\n fflig: \"ff\",\n ffllig: \"ffl\",\n Ffr: \"𝔉\",\n ffr: \"𝔣\",\n filig: \"fi\",\n FilledSmallSquare: \"◼\",\n FilledVerySmallSquare: \"▪\",\n fjlig: \"fj\",\n flat: \"♭\",\n fllig: \"fl\",\n fltns: \"▱\",\n fnof: \"ƒ\",\n Fopf: \"𝔽\",\n fopf: \"𝕗\",\n forall: \"∀\",\n ForAll: \"∀\",\n fork: \"⋔\",\n forkv: \"⫙\",\n Fouriertrf: \"ℱ\",\n fpartint: \"⨍\",\n frac12: \"½\",\n frac13: \"⅓\",\n frac14: \"¼\",\n frac15: \"⅕\",\n frac16: \"⅙\",\n frac18: \"⅛\",\n frac23: \"⅔\",\n frac25: \"⅖\",\n frac34: \"¾\",\n frac35: \"⅗\",\n frac38: \"⅜\",\n frac45: \"⅘\",\n frac56: \"⅚\",\n frac58: \"⅝\",\n frac78: \"⅞\",\n frasl: \"⁄\",\n frown: \"⌢\",\n fscr: \"𝒻\",\n Fscr: \"ℱ\",\n gacute: \"ǵ\",\n Gamma: \"Γ\",\n gamma: \"γ\",\n Gammad: \"Ϝ\",\n gammad: \"ϝ\",\n gap: \"⪆\",\n Gbreve: \"Ğ\",\n gbreve: \"ğ\",\n Gcedil: \"Ģ\",\n Gcirc: \"Ĝ\",\n gcirc: \"ĝ\",\n Gcy: \"Г\",\n gcy: \"г\",\n Gdot: \"Ġ\",\n gdot: \"ġ\",\n ge: \"≥\",\n gE: \"≧\",\n gEl: \"⪌\",\n gel: \"⋛\",\n geq: \"≥\",\n geqq: \"≧\",\n geqslant: \"⩾\",\n gescc: \"⪩\",\n ges: \"⩾\",\n gesdot: \"⪀\",\n gesdoto: \"⪂\",\n gesdotol: \"⪄\",\n gesl: \"⋛︀\",\n gesles: \"⪔\",\n Gfr: \"𝔊\",\n gfr: \"𝔤\",\n gg: \"≫\",\n Gg: \"⋙\",\n ggg: \"⋙\",\n gimel: \"ℷ\",\n GJcy: \"Ѓ\",\n gjcy: \"ѓ\",\n gla: \"⪥\",\n gl: \"≷\",\n glE: \"⪒\",\n glj: \"⪤\",\n gnap: \"⪊\",\n gnapprox: \"⪊\",\n gne: \"⪈\",\n gnE: \"≩\",\n gneq: \"⪈\",\n gneqq: \"≩\",\n gnsim: \"⋧\",\n Gopf: \"𝔾\",\n gopf: \"𝕘\",\n grave: \"`\",\n GreaterEqual: \"≥\",\n GreaterEqualLess: \"⋛\",\n GreaterFullEqual: \"≧\",\n GreaterGreater: \"⪢\",\n GreaterLess: \"≷\",\n GreaterSlantEqual: \"⩾\",\n GreaterTilde: \"≳\",\n Gscr: \"𝒢\",\n gscr: \"ℊ\",\n gsim: \"≳\",\n gsime: \"⪎\",\n gsiml: \"⪐\",\n gtcc: \"⪧\",\n gtcir: \"⩺\",\n gt: \">\",\n GT: \">\",\n Gt: \"≫\",\n gtdot: \"⋗\",\n gtlPar: \"⦕\",\n gtquest: \"⩼\",\n gtrapprox: \"⪆\",\n gtrarr: \"⥸\",\n gtrdot: \"⋗\",\n gtreqless: \"⋛\",\n gtreqqless: \"⪌\",\n gtrless: \"≷\",\n gtrsim: \"≳\",\n gvertneqq: \"≩︀\",\n gvnE: \"≩︀\",\n Hacek: \"ˇ\",\n hairsp: \" \",\n half: \"½\",\n hamilt: \"ℋ\",\n HARDcy: \"Ъ\",\n hardcy: \"ъ\",\n harrcir: \"⥈\",\n harr: \"↔\",\n hArr: \"⇔\",\n harrw: \"↭\",\n Hat: \"^\",\n hbar: \"ℏ\",\n Hcirc: \"Ĥ\",\n hcirc: \"ĥ\",\n hearts: \"♥\",\n heartsuit: \"♥\",\n hellip: \"…\",\n hercon: \"⊹\",\n hfr: \"𝔥\",\n Hfr: \"ℌ\",\n HilbertSpace: \"ℋ\",\n hksearow: \"⤥\",\n hkswarow: \"⤦\",\n hoarr: \"⇿\",\n homtht: \"∻\",\n hookleftarrow: \"↩\",\n hookrightarrow: \"↪\",\n hopf: \"𝕙\",\n Hopf: \"ℍ\",\n horbar: \"―\",\n HorizontalLine: \"─\",\n hscr: \"𝒽\",\n Hscr: \"ℋ\",\n hslash: \"ℏ\",\n Hstrok: \"Ħ\",\n hstrok: \"ħ\",\n HumpDownHump: \"≎\",\n HumpEqual: \"≏\",\n hybull: \"⁃\",\n hyphen: \"‐\",\n Iacute: \"Í\",\n iacute: \"í\",\n ic: \"\\u2063\",\n Icirc: \"Î\",\n icirc: \"î\",\n Icy: \"И\",\n icy: \"и\",\n Idot: \"İ\",\n IEcy: \"Е\",\n iecy: \"е\",\n iexcl: \"¡\",\n iff: \"⇔\",\n ifr: \"𝔦\",\n Ifr: \"ℑ\",\n Igrave: \"Ì\",\n igrave: \"ì\",\n ii: \"ⅈ\",\n iiiint: \"⨌\",\n iiint: \"∭\",\n iinfin: \"⧜\",\n iiota: \"℩\",\n IJlig: \"IJ\",\n ijlig: \"ij\",\n Imacr: \"Ī\",\n imacr: \"ī\",\n image: \"ℑ\",\n ImaginaryI: \"ⅈ\",\n imagline: \"ℐ\",\n imagpart: \"ℑ\",\n imath: \"ı\",\n Im: \"ℑ\",\n imof: \"⊷\",\n imped: \"Ƶ\",\n Implies: \"⇒\",\n incare: \"℅\",\n in: \"∈\",\n infin: \"∞\",\n infintie: \"⧝\",\n inodot: \"ı\",\n intcal: \"⊺\",\n int: \"∫\",\n Int: \"∬\",\n integers: \"ℤ\",\n Integral: \"∫\",\n intercal: \"⊺\",\n Intersection: \"⋂\",\n intlarhk: \"⨗\",\n intprod: \"⨼\",\n InvisibleComma: \"\\u2063\",\n InvisibleTimes: \"\\u2062\",\n IOcy: \"Ё\",\n iocy: \"ё\",\n Iogon: \"Į\",\n iogon: \"į\",\n Iopf: \"𝕀\",\n iopf: \"𝕚\",\n Iota: \"Ι\",\n iota: \"ι\",\n iprod: \"⨼\",\n iquest: \"¿\",\n iscr: \"𝒾\",\n Iscr: \"ℐ\",\n isin: \"∈\",\n isindot: \"⋵\",\n isinE: \"⋹\",\n isins: \"⋴\",\n isinsv: \"⋳\",\n isinv: \"∈\",\n it: \"\\u2062\",\n Itilde: \"Ĩ\",\n itilde: \"ĩ\",\n Iukcy: \"І\",\n iukcy: \"і\",\n Iuml: \"Ï\",\n iuml: \"ï\",\n Jcirc: \"Ĵ\",\n jcirc: \"ĵ\",\n Jcy: \"Й\",\n jcy: \"й\",\n Jfr: \"𝔍\",\n jfr: \"𝔧\",\n jmath: \"ȷ\",\n Jopf: \"𝕁\",\n jopf: \"𝕛\",\n Jscr: \"𝒥\",\n jscr: \"𝒿\",\n Jsercy: \"Ј\",\n jsercy: \"ј\",\n Jukcy: \"Є\",\n jukcy: \"є\",\n Kappa: \"Κ\",\n kappa: \"κ\",\n kappav: \"ϰ\",\n Kcedil: \"Ķ\",\n kcedil: \"ķ\",\n Kcy: \"К\",\n kcy: \"к\",\n Kfr: \"𝔎\",\n kfr: \"𝔨\",\n kgreen: \"ĸ\",\n KHcy: \"Х\",\n khcy: \"х\",\n KJcy: \"Ќ\",\n kjcy: \"ќ\",\n Kopf: \"𝕂\",\n kopf: \"𝕜\",\n Kscr: \"𝒦\",\n kscr: \"𝓀\",\n lAarr: \"⇚\",\n Lacute: \"Ĺ\",\n lacute: \"ĺ\",\n laemptyv: \"⦴\",\n lagran: \"ℒ\",\n Lambda: \"Λ\",\n lambda: \"λ\",\n lang: \"⟨\",\n Lang: \"⟪\",\n langd: \"⦑\",\n langle: \"⟨\",\n lap: \"⪅\",\n Laplacetrf: \"ℒ\",\n laquo: \"«\",\n larrb: \"⇤\",\n larrbfs: \"⤟\",\n larr: \"←\",\n Larr: \"↞\",\n lArr: \"⇐\",\n larrfs: \"⤝\",\n larrhk: \"↩\",\n larrlp: \"↫\",\n larrpl: \"⤹\",\n larrsim: \"⥳\",\n larrtl: \"↢\",\n latail: \"⤙\",\n lAtail: \"⤛\",\n lat: \"⪫\",\n late: \"⪭\",\n lates: \"⪭︀\",\n lbarr: \"⤌\",\n lBarr: \"⤎\",\n lbbrk: \"❲\",\n lbrace: \"{\",\n lbrack: \"[\",\n lbrke: \"⦋\",\n lbrksld: \"⦏\",\n lbrkslu: \"⦍\",\n Lcaron: \"Ľ\",\n lcaron: \"ľ\",\n Lcedil: \"Ļ\",\n lcedil: \"ļ\",\n lceil: \"⌈\",\n lcub: \"{\",\n Lcy: \"Л\",\n lcy: \"л\",\n ldca: \"⤶\",\n ldquo: \"“\",\n ldquor: \"„\",\n ldrdhar: \"⥧\",\n ldrushar: \"⥋\",\n ldsh: \"↲\",\n le: \"≤\",\n lE: \"≦\",\n LeftAngleBracket: \"⟨\",\n LeftArrowBar: \"⇤\",\n leftarrow: \"←\",\n LeftArrow: \"←\",\n Leftarrow: \"⇐\",\n LeftArrowRightArrow: \"⇆\",\n leftarrowtail: \"↢\",\n LeftCeiling: \"⌈\",\n LeftDoubleBracket: \"⟦\",\n LeftDownTeeVector: \"⥡\",\n LeftDownVectorBar: \"⥙\",\n LeftDownVector: \"⇃\",\n LeftFloor: \"⌊\",\n leftharpoondown: \"↽\",\n leftharpoonup: \"↼\",\n leftleftarrows: \"⇇\",\n leftrightarrow: \"↔\",\n LeftRightArrow: \"↔\",\n Leftrightarrow: \"⇔\",\n leftrightarrows: \"⇆\",\n leftrightharpoons: \"⇋\",\n leftrightsquigarrow: \"↭\",\n LeftRightVector: \"⥎\",\n LeftTeeArrow: \"↤\",\n LeftTee: \"⊣\",\n LeftTeeVector: \"⥚\",\n leftthreetimes: \"⋋\",\n LeftTriangleBar: \"⧏\",\n LeftTriangle: \"⊲\",\n LeftTriangleEqual: \"⊴\",\n LeftUpDownVector: \"⥑\",\n LeftUpTeeVector: \"⥠\",\n LeftUpVectorBar: \"⥘\",\n LeftUpVector: \"↿\",\n LeftVectorBar: \"⥒\",\n LeftVector: \"↼\",\n lEg: \"⪋\",\n leg: \"⋚\",\n leq: \"≤\",\n leqq: \"≦\",\n leqslant: \"⩽\",\n lescc: \"⪨\",\n les: \"⩽\",\n lesdot: \"⩿\",\n lesdoto: \"⪁\",\n lesdotor: \"⪃\",\n lesg: \"⋚︀\",\n lesges: \"⪓\",\n lessapprox: \"⪅\",\n lessdot: \"⋖\",\n lesseqgtr: \"⋚\",\n lesseqqgtr: \"⪋\",\n LessEqualGreater: \"⋚\",\n LessFullEqual: \"≦\",\n LessGreater: \"≶\",\n lessgtr: \"≶\",\n LessLess: \"⪡\",\n lesssim: \"≲\",\n LessSlantEqual: \"⩽\",\n LessTilde: \"≲\",\n lfisht: \"⥼\",\n lfloor: \"⌊\",\n Lfr: \"𝔏\",\n lfr: \"𝔩\",\n lg: \"≶\",\n lgE: \"⪑\",\n lHar: \"⥢\",\n lhard: \"↽\",\n lharu: \"↼\",\n lharul: \"⥪\",\n lhblk: \"▄\",\n LJcy: \"Љ\",\n ljcy: \"љ\",\n llarr: \"⇇\",\n ll: \"≪\",\n Ll: \"⋘\",\n llcorner: \"⌞\",\n Lleftarrow: \"⇚\",\n llhard: \"⥫\",\n lltri: \"◺\",\n Lmidot: \"Ŀ\",\n lmidot: \"ŀ\",\n lmoustache: \"⎰\",\n lmoust: \"⎰\",\n lnap: \"⪉\",\n lnapprox: \"⪉\",\n lne: \"⪇\",\n lnE: \"≨\",\n lneq: \"⪇\",\n lneqq: \"≨\",\n lnsim: \"⋦\",\n loang: \"⟬\",\n loarr: \"⇽\",\n lobrk: \"⟦\",\n longleftarrow: \"⟵\",\n LongLeftArrow: \"⟵\",\n Longleftarrow: \"⟸\",\n longleftrightarrow: \"⟷\",\n LongLeftRightArrow: \"⟷\",\n Longleftrightarrow: \"⟺\",\n longmapsto: \"⟼\",\n longrightarrow: \"⟶\",\n LongRightArrow: \"⟶\",\n Longrightarrow: \"⟹\",\n looparrowleft: \"↫\",\n looparrowright: \"↬\",\n lopar: \"⦅\",\n Lopf: \"𝕃\",\n lopf: \"𝕝\",\n loplus: \"⨭\",\n lotimes: \"⨴\",\n lowast: \"∗\",\n lowbar: \"_\",\n LowerLeftArrow: \"↙\",\n LowerRightArrow: \"↘\",\n loz: \"◊\",\n lozenge: \"◊\",\n lozf: \"⧫\",\n lpar: \"(\",\n lparlt: \"⦓\",\n lrarr: \"⇆\",\n lrcorner: \"⌟\",\n lrhar: \"⇋\",\n lrhard: \"⥭\",\n lrm: \"\\u200E\",\n lrtri: \"⊿\",\n lsaquo: \"‹\",\n lscr: \"𝓁\",\n Lscr: \"ℒ\",\n lsh: \"↰\",\n Lsh: \"↰\",\n lsim: \"≲\",\n lsime: \"⪍\",\n lsimg: \"⪏\",\n lsqb: \"[\",\n lsquo: \"‘\",\n lsquor: \"‚\",\n Lstrok: \"Ł\",\n lstrok: \"ł\",\n ltcc: \"⪦\",\n ltcir: \"⩹\",\n lt: \"<\",\n LT: \"<\",\n Lt: \"≪\",\n ltdot: \"⋖\",\n lthree: \"⋋\",\n ltimes: \"⋉\",\n ltlarr: \"⥶\",\n ltquest: \"⩻\",\n ltri: \"◃\",\n ltrie: \"⊴\",\n ltrif: \"◂\",\n ltrPar: \"⦖\",\n lurdshar: \"⥊\",\n luruhar: \"⥦\",\n lvertneqq: \"≨︀\",\n lvnE: \"≨︀\",\n macr: \"¯\",\n male: \"♂\",\n malt: \"✠\",\n maltese: \"✠\",\n Map: \"⤅\",\n map: \"↦\",\n mapsto: \"↦\",\n mapstodown: \"↧\",\n mapstoleft: \"↤\",\n mapstoup: \"↥\",\n marker: \"▮\",\n mcomma: \"⨩\",\n Mcy: \"М\",\n mcy: \"м\",\n mdash: \"—\",\n mDDot: \"∺\",\n measuredangle: \"∡\",\n MediumSpace: \" \",\n Mellintrf: \"ℳ\",\n Mfr: \"𝔐\",\n mfr: \"𝔪\",\n mho: \"℧\",\n micro: \"µ\",\n midast: \"*\",\n midcir: \"⫰\",\n mid: \"∣\",\n middot: \"·\",\n minusb: \"⊟\",\n minus: \"−\",\n minusd: \"∸\",\n minusdu: \"⨪\",\n MinusPlus: \"∓\",\n mlcp: \"⫛\",\n mldr: \"…\",\n mnplus: \"∓\",\n models: \"⊧\",\n Mopf: \"𝕄\",\n mopf: \"𝕞\",\n mp: \"∓\",\n mscr: \"𝓂\",\n Mscr: \"ℳ\",\n mstpos: \"∾\",\n Mu: \"Μ\",\n mu: \"μ\",\n multimap: \"⊸\",\n mumap: \"⊸\",\n nabla: \"∇\",\n Nacute: \"Ń\",\n nacute: \"ń\",\n nang: \"∠⃒\",\n nap: \"≉\",\n napE: \"⩰̸\",\n napid: \"≋̸\",\n napos: \"ʼn\",\n napprox: \"≉\",\n natural: \"♮\",\n naturals: \"ℕ\",\n natur: \"♮\",\n nbsp: \" \",\n nbump: \"≎̸\",\n nbumpe: \"≏̸\",\n ncap: \"⩃\",\n Ncaron: \"Ň\",\n ncaron: \"ň\",\n Ncedil: \"Ņ\",\n ncedil: \"ņ\",\n ncong: \"≇\",\n ncongdot: \"⩭̸\",\n ncup: \"⩂\",\n Ncy: \"Н\",\n ncy: \"н\",\n ndash: \"–\",\n nearhk: \"⤤\",\n nearr: \"↗\",\n neArr: \"⇗\",\n nearrow: \"↗\",\n ne: \"≠\",\n nedot: \"≐̸\",\n NegativeMediumSpace: \"​\",\n NegativeThickSpace: \"​\",\n NegativeThinSpace: \"​\",\n NegativeVeryThinSpace: \"​\",\n nequiv: \"≢\",\n nesear: \"⤨\",\n nesim: \"≂̸\",\n NestedGreaterGreater: \"≫\",\n NestedLessLess: \"≪\",\n NewLine: \"\\n\",\n nexist: \"∄\",\n nexists: \"∄\",\n Nfr: \"𝔑\",\n nfr: \"𝔫\",\n ngE: \"≧̸\",\n nge: \"≱\",\n ngeq: \"≱\",\n ngeqq: \"≧̸\",\n ngeqslant: \"⩾̸\",\n nges: \"⩾̸\",\n nGg: \"⋙̸\",\n ngsim: \"≵\",\n nGt: \"≫⃒\",\n ngt: \"≯\",\n ngtr: \"≯\",\n nGtv: \"≫̸\",\n nharr: \"↮\",\n nhArr: \"⇎\",\n nhpar: \"⫲\",\n ni: \"∋\",\n nis: \"⋼\",\n nisd: \"⋺\",\n niv: \"∋\",\n NJcy: \"Њ\",\n njcy: \"њ\",\n nlarr: \"↚\",\n nlArr: \"⇍\",\n nldr: \"‥\",\n nlE: \"≦̸\",\n nle: \"≰\",\n nleftarrow: \"↚\",\n nLeftarrow: \"⇍\",\n nleftrightarrow: \"↮\",\n nLeftrightarrow: \"⇎\",\n nleq: \"≰\",\n nleqq: \"≦̸\",\n nleqslant: \"⩽̸\",\n nles: \"⩽̸\",\n nless: \"≮\",\n nLl: \"⋘̸\",\n nlsim: \"≴\",\n nLt: \"≪⃒\",\n nlt: \"≮\",\n nltri: \"⋪\",\n nltrie: \"⋬\",\n nLtv: \"≪̸\",\n nmid: \"∤\",\n NoBreak: \"\\u2060\",\n NonBreakingSpace: \" \",\n nopf: \"𝕟\",\n Nopf: \"ℕ\",\n Not: \"⫬\",\n not: \"¬\",\n NotCongruent: \"≢\",\n NotCupCap: \"≭\",\n NotDoubleVerticalBar: \"∦\",\n NotElement: \"∉\",\n NotEqual: \"≠\",\n NotEqualTilde: \"≂̸\",\n NotExists: \"∄\",\n NotGreater: \"≯\",\n NotGreaterEqual: \"≱\",\n NotGreaterFullEqual: \"≧̸\",\n NotGreaterGreater: \"≫̸\",\n NotGreaterLess: \"≹\",\n NotGreaterSlantEqual: \"⩾̸\",\n NotGreaterTilde: \"≵\",\n NotHumpDownHump: \"≎̸\",\n NotHumpEqual: \"≏̸\",\n notin: \"∉\",\n notindot: \"⋵̸\",\n notinE: \"⋹̸\",\n notinva: \"∉\",\n notinvb: \"⋷\",\n notinvc: \"⋶\",\n NotLeftTriangleBar: \"⧏̸\",\n NotLeftTriangle: \"⋪\",\n NotLeftTriangleEqual: \"⋬\",\n NotLess: \"≮\",\n NotLessEqual: \"≰\",\n NotLessGreater: \"≸\",\n NotLessLess: \"≪̸\",\n NotLessSlantEqual: \"⩽̸\",\n NotLessTilde: \"≴\",\n NotNestedGreaterGreater: \"⪢̸\",\n NotNestedLessLess: \"⪡̸\",\n notni: \"∌\",\n notniva: \"∌\",\n notnivb: \"⋾\",\n notnivc: \"⋽\",\n NotPrecedes: \"⊀\",\n NotPrecedesEqual: \"⪯̸\",\n NotPrecedesSlantEqual: \"⋠\",\n NotReverseElement: \"∌\",\n NotRightTriangleBar: \"⧐̸\",\n NotRightTriangle: \"⋫\",\n NotRightTriangleEqual: \"⋭\",\n NotSquareSubset: \"⊏̸\",\n NotSquareSubsetEqual: \"⋢\",\n NotSquareSuperset: \"⊐̸\",\n NotSquareSupersetEqual: \"⋣\",\n NotSubset: \"⊂⃒\",\n NotSubsetEqual: \"⊈\",\n NotSucceeds: \"⊁\",\n NotSucceedsEqual: \"⪰̸\",\n NotSucceedsSlantEqual: \"⋡\",\n NotSucceedsTilde: \"≿̸\",\n NotSuperset: \"⊃⃒\",\n NotSupersetEqual: \"⊉\",\n NotTilde: \"≁\",\n NotTildeEqual: \"≄\",\n NotTildeFullEqual: \"≇\",\n NotTildeTilde: \"≉\",\n NotVerticalBar: \"∤\",\n nparallel: \"∦\",\n npar: \"∦\",\n nparsl: \"⫽⃥\",\n npart: \"∂̸\",\n npolint: \"⨔\",\n npr: \"⊀\",\n nprcue: \"⋠\",\n nprec: \"⊀\",\n npreceq: \"⪯̸\",\n npre: \"⪯̸\",\n nrarrc: \"⤳̸\",\n nrarr: \"↛\",\n nrArr: \"⇏\",\n nrarrw: \"↝̸\",\n nrightarrow: \"↛\",\n nRightarrow: \"⇏\",\n nrtri: \"⋫\",\n nrtrie: \"⋭\",\n nsc: \"⊁\",\n nsccue: \"⋡\",\n nsce: \"⪰̸\",\n Nscr: \"𝒩\",\n nscr: \"𝓃\",\n nshortmid: \"∤\",\n nshortparallel: \"∦\",\n nsim: \"≁\",\n nsime: \"≄\",\n nsimeq: \"≄\",\n nsmid: \"∤\",\n nspar: \"∦\",\n nsqsube: \"⋢\",\n nsqsupe: \"⋣\",\n nsub: \"⊄\",\n nsubE: \"⫅̸\",\n nsube: \"⊈\",\n nsubset: \"⊂⃒\",\n nsubseteq: \"⊈\",\n nsubseteqq: \"⫅̸\",\n nsucc: \"⊁\",\n nsucceq: \"⪰̸\",\n nsup: \"⊅\",\n nsupE: \"⫆̸\",\n nsupe: \"⊉\",\n nsupset: \"⊃⃒\",\n nsupseteq: \"⊉\",\n nsupseteqq: \"⫆̸\",\n ntgl: \"≹\",\n Ntilde: \"Ñ\",\n ntilde: \"ñ\",\n ntlg: \"≸\",\n ntriangleleft: \"⋪\",\n ntrianglelefteq: \"⋬\",\n ntriangleright: \"⋫\",\n ntrianglerighteq: \"⋭\",\n Nu: \"Ν\",\n nu: \"ν\",\n num: \"#\",\n numero: \"№\",\n numsp: \" \",\n nvap: \"≍⃒\",\n nvdash: \"⊬\",\n nvDash: \"⊭\",\n nVdash: \"⊮\",\n nVDash: \"⊯\",\n nvge: \"≥⃒\",\n nvgt: \">⃒\",\n nvHarr: \"⤄\",\n nvinfin: \"⧞\",\n nvlArr: \"⤂\",\n nvle: \"≤⃒\",\n nvlt: \"<⃒\",\n nvltrie: \"⊴⃒\",\n nvrArr: \"⤃\",\n nvrtrie: \"⊵⃒\",\n nvsim: \"∼⃒\",\n nwarhk: \"⤣\",\n nwarr: \"↖\",\n nwArr: \"⇖\",\n nwarrow: \"↖\",\n nwnear: \"⤧\",\n Oacute: \"Ó\",\n oacute: \"ó\",\n oast: \"⊛\",\n Ocirc: \"Ô\",\n ocirc: \"ô\",\n ocir: \"⊚\",\n Ocy: \"О\",\n ocy: \"о\",\n odash: \"⊝\",\n Odblac: \"Ő\",\n odblac: \"ő\",\n odiv: \"⨸\",\n odot: \"⊙\",\n odsold: \"⦼\",\n OElig: \"Œ\",\n oelig: \"œ\",\n ofcir: \"⦿\",\n Ofr: \"𝔒\",\n ofr: \"𝔬\",\n ogon: \"˛\",\n Ograve: \"Ò\",\n ograve: \"ò\",\n ogt: \"⧁\",\n ohbar: \"⦵\",\n ohm: \"Ω\",\n oint: \"∮\",\n olarr: \"↺\",\n olcir: \"⦾\",\n olcross: \"⦻\",\n oline: \"‾\",\n olt: \"⧀\",\n Omacr: \"Ō\",\n omacr: \"ō\",\n Omega: \"Ω\",\n omega: \"ω\",\n Omicron: \"Ο\",\n omicron: \"ο\",\n omid: \"⦶\",\n ominus: \"⊖\",\n Oopf: \"𝕆\",\n oopf: \"𝕠\",\n opar: \"⦷\",\n OpenCurlyDoubleQuote: \"“\",\n OpenCurlyQuote: \"‘\",\n operp: \"⦹\",\n oplus: \"⊕\",\n orarr: \"↻\",\n Or: \"⩔\",\n or: \"∨\",\n ord: \"⩝\",\n order: \"ℴ\",\n orderof: \"ℴ\",\n ordf: \"ª\",\n ordm: \"º\",\n origof: \"⊶\",\n oror: \"⩖\",\n orslope: \"⩗\",\n orv: \"⩛\",\n oS: \"Ⓢ\",\n Oscr: \"𝒪\",\n oscr: \"ℴ\",\n Oslash: \"Ø\",\n oslash: \"ø\",\n osol: \"⊘\",\n Otilde: \"Õ\",\n otilde: \"õ\",\n otimesas: \"⨶\",\n Otimes: \"⨷\",\n otimes: \"⊗\",\n Ouml: \"Ö\",\n ouml: \"ö\",\n ovbar: \"⌽\",\n OverBar: \"‾\",\n OverBrace: \"⏞\",\n OverBracket: \"⎴\",\n OverParenthesis: \"⏜\",\n para: \"¶\",\n parallel: \"∥\",\n par: \"∥\",\n parsim: \"⫳\",\n parsl: \"⫽\",\n part: \"∂\",\n PartialD: \"∂\",\n Pcy: \"П\",\n pcy: \"п\",\n percnt: \"%\",\n period: \".\",\n permil: \"‰\",\n perp: \"⊥\",\n pertenk: \"‱\",\n Pfr: \"𝔓\",\n pfr: \"𝔭\",\n Phi: \"Φ\",\n phi: \"φ\",\n phiv: \"ϕ\",\n phmmat: \"ℳ\",\n phone: \"☎\",\n Pi: \"Π\",\n pi: \"π\",\n pitchfork: \"⋔\",\n piv: \"ϖ\",\n planck: \"ℏ\",\n planckh: \"ℎ\",\n plankv: \"ℏ\",\n plusacir: \"⨣\",\n plusb: \"⊞\",\n pluscir: \"⨢\",\n plus: \"+\",\n plusdo: \"∔\",\n plusdu: \"⨥\",\n pluse: \"⩲\",\n PlusMinus: \"±\",\n plusmn: \"±\",\n plussim: \"⨦\",\n plustwo: \"⨧\",\n pm: \"±\",\n Poincareplane: \"ℌ\",\n pointint: \"⨕\",\n popf: \"𝕡\",\n Popf: \"ℙ\",\n pound: \"£\",\n prap: \"⪷\",\n Pr: \"⪻\",\n pr: \"≺\",\n prcue: \"≼\",\n precapprox: \"⪷\",\n prec: \"≺\",\n preccurlyeq: \"≼\",\n Precedes: \"≺\",\n PrecedesEqual: \"⪯\",\n PrecedesSlantEqual: \"≼\",\n PrecedesTilde: \"≾\",\n preceq: \"⪯\",\n precnapprox: \"⪹\",\n precneqq: \"⪵\",\n precnsim: \"⋨\",\n pre: \"⪯\",\n prE: \"⪳\",\n precsim: \"≾\",\n prime: \"′\",\n Prime: \"″\",\n primes: \"ℙ\",\n prnap: \"⪹\",\n prnE: \"⪵\",\n prnsim: \"⋨\",\n prod: \"∏\",\n Product: \"∏\",\n profalar: \"⌮\",\n profline: \"⌒\",\n profsurf: \"⌓\",\n prop: \"∝\",\n Proportional: \"∝\",\n Proportion: \"∷\",\n propto: \"∝\",\n prsim: \"≾\",\n prurel: \"⊰\",\n Pscr: \"𝒫\",\n pscr: \"𝓅\",\n Psi: \"Ψ\",\n psi: \"ψ\",\n puncsp: \" \",\n Qfr: \"𝔔\",\n qfr: \"𝔮\",\n qint: \"⨌\",\n qopf: \"𝕢\",\n Qopf: \"ℚ\",\n qprime: \"⁗\",\n Qscr: \"𝒬\",\n qscr: \"𝓆\",\n quaternions: \"ℍ\",\n quatint: \"⨖\",\n quest: \"?\",\n questeq: \"≟\",\n quot: \"\\\"\",\n QUOT: \"\\\"\",\n rAarr: \"⇛\",\n race: \"∽̱\",\n Racute: \"Ŕ\",\n racute: \"ŕ\",\n radic: \"√\",\n raemptyv: \"⦳\",\n rang: \"⟩\",\n Rang: \"⟫\",\n rangd: \"⦒\",\n range: \"⦥\",\n rangle: \"⟩\",\n raquo: \"»\",\n rarrap: \"⥵\",\n rarrb: \"⇥\",\n rarrbfs: \"⤠\",\n rarrc: \"⤳\",\n rarr: \"→\",\n Rarr: \"↠\",\n rArr: \"⇒\",\n rarrfs: \"⤞\",\n rarrhk: \"↪\",\n rarrlp: \"↬\",\n rarrpl: \"⥅\",\n rarrsim: \"⥴\",\n Rarrtl: \"⤖\",\n rarrtl: \"↣\",\n rarrw: \"↝\",\n ratail: \"⤚\",\n rAtail: \"⤜\",\n ratio: \"∶\",\n rationals: \"ℚ\",\n rbarr: \"⤍\",\n rBarr: \"⤏\",\n RBarr: \"⤐\",\n rbbrk: \"❳\",\n rbrace: \"}\",\n rbrack: \"]\",\n rbrke: \"⦌\",\n rbrksld: \"⦎\",\n rbrkslu: \"⦐\",\n Rcaron: \"Ř\",\n rcaron: \"ř\",\n Rcedil: \"Ŗ\",\n rcedil: \"ŗ\",\n rceil: \"⌉\",\n rcub: \"}\",\n Rcy: \"Р\",\n rcy: \"р\",\n rdca: \"⤷\",\n rdldhar: \"⥩\",\n rdquo: \"”\",\n rdquor: \"”\",\n rdsh: \"↳\",\n real: \"ℜ\",\n realine: \"ℛ\",\n realpart: \"ℜ\",\n reals: \"ℝ\",\n Re: \"ℜ\",\n rect: \"▭\",\n reg: \"®\",\n REG: \"®\",\n ReverseElement: \"∋\",\n ReverseEquilibrium: \"⇋\",\n ReverseUpEquilibrium: \"⥯\",\n rfisht: \"⥽\",\n rfloor: \"⌋\",\n rfr: \"𝔯\",\n Rfr: \"ℜ\",\n rHar: \"⥤\",\n rhard: \"⇁\",\n rharu: \"⇀\",\n rharul: \"⥬\",\n Rho: \"Ρ\",\n rho: \"ρ\",\n rhov: \"ϱ\",\n RightAngleBracket: \"⟩\",\n RightArrowBar: \"⇥\",\n rightarrow: \"→\",\n RightArrow: \"→\",\n Rightarrow: \"⇒\",\n RightArrowLeftArrow: \"⇄\",\n rightarrowtail: \"↣\",\n RightCeiling: \"⌉\",\n RightDoubleBracket: \"⟧\",\n RightDownTeeVector: \"⥝\",\n RightDownVectorBar: \"⥕\",\n RightDownVector: \"⇂\",\n RightFloor: \"⌋\",\n rightharpoondown: \"⇁\",\n rightharpoonup: \"⇀\",\n rightleftarrows: \"⇄\",\n rightleftharpoons: \"⇌\",\n rightrightarrows: \"⇉\",\n rightsquigarrow: \"↝\",\n RightTeeArrow: \"↦\",\n RightTee: \"⊢\",\n RightTeeVector: \"⥛\",\n rightthreetimes: \"⋌\",\n RightTriangleBar: \"⧐\",\n RightTriangle: \"⊳\",\n RightTriangleEqual: \"⊵\",\n RightUpDownVector: \"⥏\",\n RightUpTeeVector: \"⥜\",\n RightUpVectorBar: \"⥔\",\n RightUpVector: \"↾\",\n RightVectorBar: \"⥓\",\n RightVector: \"⇀\",\n ring: \"˚\",\n risingdotseq: \"≓\",\n rlarr: \"⇄\",\n rlhar: \"⇌\",\n rlm: \"\\u200F\",\n rmoustache: \"⎱\",\n rmoust: \"⎱\",\n rnmid: \"⫮\",\n roang: \"⟭\",\n roarr: \"⇾\",\n robrk: \"⟧\",\n ropar: \"⦆\",\n ropf: \"𝕣\",\n Ropf: \"ℝ\",\n roplus: \"⨮\",\n rotimes: \"⨵\",\n RoundImplies: \"⥰\",\n rpar: \")\",\n rpargt: \"⦔\",\n rppolint: \"⨒\",\n rrarr: \"⇉\",\n Rrightarrow: \"⇛\",\n rsaquo: \"›\",\n rscr: \"𝓇\",\n Rscr: \"ℛ\",\n rsh: \"↱\",\n Rsh: \"↱\",\n rsqb: \"]\",\n rsquo: \"’\",\n rsquor: \"’\",\n rthree: \"⋌\",\n rtimes: \"⋊\",\n rtri: \"▹\",\n rtrie: \"⊵\",\n rtrif: \"▸\",\n rtriltri: \"⧎\",\n RuleDelayed: \"⧴\",\n ruluhar: \"⥨\",\n rx: \"℞\",\n Sacute: \"Ś\",\n sacute: \"ś\",\n sbquo: \"‚\",\n scap: \"⪸\",\n Scaron: \"Š\",\n scaron: \"š\",\n Sc: \"⪼\",\n sc: \"≻\",\n sccue: \"≽\",\n sce: \"⪰\",\n scE: \"⪴\",\n Scedil: \"Ş\",\n scedil: \"ş\",\n Scirc: \"Ŝ\",\n scirc: \"ŝ\",\n scnap: \"⪺\",\n scnE: \"⪶\",\n scnsim: \"⋩\",\n scpolint: \"⨓\",\n scsim: \"≿\",\n Scy: \"С\",\n scy: \"с\",\n sdotb: \"⊡\",\n sdot: \"⋅\",\n sdote: \"⩦\",\n searhk: \"⤥\",\n searr: \"↘\",\n seArr: \"⇘\",\n searrow: \"↘\",\n sect: \"§\",\n semi: \";\",\n seswar: \"⤩\",\n setminus: \"∖\",\n setmn: \"∖\",\n sext: \"✶\",\n Sfr: \"𝔖\",\n sfr: \"𝔰\",\n sfrown: \"⌢\",\n sharp: \"♯\",\n SHCHcy: \"Щ\",\n shchcy: \"щ\",\n SHcy: \"Ш\",\n shcy: \"ш\",\n ShortDownArrow: \"↓\",\n ShortLeftArrow: \"←\",\n shortmid: \"∣\",\n shortparallel: \"∥\",\n ShortRightArrow: \"→\",\n ShortUpArrow: \"↑\",\n shy: \"\\xAD\",\n Sigma: \"Σ\",\n sigma: \"σ\",\n sigmaf: \"ς\",\n sigmav: \"ς\",\n sim: \"∼\",\n simdot: \"⩪\",\n sime: \"≃\",\n simeq: \"≃\",\n simg: \"⪞\",\n simgE: \"⪠\",\n siml: \"⪝\",\n simlE: \"⪟\",\n simne: \"≆\",\n simplus: \"⨤\",\n simrarr: \"⥲\",\n slarr: \"←\",\n SmallCircle: \"∘\",\n smallsetminus: \"∖\",\n smashp: \"⨳\",\n smeparsl: \"⧤\",\n smid: \"∣\",\n smile: \"⌣\",\n smt: \"⪪\",\n smte: \"⪬\",\n smtes: \"⪬︀\",\n SOFTcy: \"Ь\",\n softcy: \"ь\",\n solbar: \"⌿\",\n solb: \"⧄\",\n sol: \"/\",\n Sopf: \"𝕊\",\n sopf: \"𝕤\",\n spades: \"♠\",\n spadesuit: \"♠\",\n spar: \"∥\",\n sqcap: \"⊓\",\n sqcaps: \"⊓︀\",\n sqcup: \"⊔\",\n sqcups: \"⊔︀\",\n Sqrt: \"√\",\n sqsub: \"⊏\",\n sqsube: \"⊑\",\n sqsubset: \"⊏\",\n sqsubseteq: \"⊑\",\n sqsup: \"⊐\",\n sqsupe: \"⊒\",\n sqsupset: \"⊐\",\n sqsupseteq: \"⊒\",\n square: \"□\",\n Square: \"□\",\n SquareIntersection: \"⊓\",\n SquareSubset: \"⊏\",\n SquareSubsetEqual: \"⊑\",\n SquareSuperset: \"⊐\",\n SquareSupersetEqual: \"⊒\",\n SquareUnion: \"⊔\",\n squarf: \"▪\",\n squ: \"□\",\n squf: \"▪\",\n srarr: \"→\",\n Sscr: \"𝒮\",\n sscr: \"𝓈\",\n ssetmn: \"∖\",\n ssmile: \"⌣\",\n sstarf: \"⋆\",\n Star: \"⋆\",\n star: \"☆\",\n starf: \"★\",\n straightepsilon: \"ϵ\",\n straightphi: \"ϕ\",\n strns: \"¯\",\n sub: \"⊂\",\n Sub: \"⋐\",\n subdot: \"⪽\",\n subE: \"⫅\",\n sube: \"⊆\",\n subedot: \"⫃\",\n submult: \"⫁\",\n subnE: \"⫋\",\n subne: \"⊊\",\n subplus: \"⪿\",\n subrarr: \"⥹\",\n subset: \"⊂\",\n Subset: \"⋐\",\n subseteq: \"⊆\",\n subseteqq: \"⫅\",\n SubsetEqual: \"⊆\",\n subsetneq: \"⊊\",\n subsetneqq: \"⫋\",\n subsim: \"⫇\",\n subsub: \"⫕\",\n subsup: \"⫓\",\n succapprox: \"⪸\",\n succ: \"≻\",\n succcurlyeq: \"≽\",\n Succeeds: \"≻\",\n SucceedsEqual: \"⪰\",\n SucceedsSlantEqual: \"≽\",\n SucceedsTilde: \"≿\",\n succeq: \"⪰\",\n succnapprox: \"⪺\",\n succneqq: \"⪶\",\n succnsim: \"⋩\",\n succsim: \"≿\",\n SuchThat: \"∋\",\n sum: \"∑\",\n Sum: \"∑\",\n sung: \"♪\",\n sup1: \"¹\",\n sup2: \"²\",\n sup3: \"³\",\n sup: \"⊃\",\n Sup: \"⋑\",\n supdot: \"⪾\",\n supdsub: \"⫘\",\n supE: \"⫆\",\n supe: \"⊇\",\n supedot: \"⫄\",\n Superset: \"⊃\",\n SupersetEqual: \"⊇\",\n suphsol: \"⟉\",\n suphsub: \"⫗\",\n suplarr: \"⥻\",\n supmult: \"⫂\",\n supnE: \"⫌\",\n supne: \"⊋\",\n supplus: \"⫀\",\n supset: \"⊃\",\n Supset: \"⋑\",\n supseteq: \"⊇\",\n supseteqq: \"⫆\",\n supsetneq: \"⊋\",\n supsetneqq: \"⫌\",\n supsim: \"⫈\",\n supsub: \"⫔\",\n supsup: \"⫖\",\n swarhk: \"⤦\",\n swarr: \"↙\",\n swArr: \"⇙\",\n swarrow: \"↙\",\n swnwar: \"⤪\",\n szlig: \"ß\",\n Tab: \"\\t\",\n target: \"⌖\",\n Tau: \"Τ\",\n tau: \"τ\",\n tbrk: \"⎴\",\n Tcaron: \"Ť\",\n tcaron: \"ť\",\n Tcedil: \"Ţ\",\n tcedil: \"ţ\",\n Tcy: \"Т\",\n tcy: \"т\",\n tdot: \"⃛\",\n telrec: \"⌕\",\n Tfr: \"𝔗\",\n tfr: \"𝔱\",\n there4: \"∴\",\n therefore: \"∴\",\n Therefore: \"∴\",\n Theta: \"Θ\",\n theta: \"θ\",\n thetasym: \"ϑ\",\n thetav: \"ϑ\",\n thickapprox: \"≈\",\n thicksim: \"∼\",\n ThickSpace: \"  \",\n ThinSpace: \" \",\n thinsp: \" \",\n thkap: \"≈\",\n thksim: \"∼\",\n THORN: \"Þ\",\n thorn: \"þ\",\n tilde: \"˜\",\n Tilde: \"∼\",\n TildeEqual: \"≃\",\n TildeFullEqual: \"≅\",\n TildeTilde: \"≈\",\n timesbar: \"⨱\",\n timesb: \"⊠\",\n times: \"×\",\n timesd: \"⨰\",\n tint: \"∭\",\n toea: \"⤨\",\n topbot: \"⌶\",\n topcir: \"⫱\",\n top: \"⊤\",\n Topf: \"𝕋\",\n topf: \"𝕥\",\n topfork: \"⫚\",\n tosa: \"⤩\",\n tprime: \"‴\",\n trade: \"™\",\n TRADE: \"™\",\n triangle: \"▵\",\n triangledown: \"▿\",\n triangleleft: \"◃\",\n trianglelefteq: \"⊴\",\n triangleq: \"≜\",\n triangleright: \"▹\",\n trianglerighteq: \"⊵\",\n tridot: \"◬\",\n trie: \"≜\",\n triminus: \"⨺\",\n TripleDot: \"⃛\",\n triplus: \"⨹\",\n trisb: \"⧍\",\n tritime: \"⨻\",\n trpezium: \"⏢\",\n Tscr: \"𝒯\",\n tscr: \"𝓉\",\n TScy: \"Ц\",\n tscy: \"ц\",\n TSHcy: \"Ћ\",\n tshcy: \"ћ\",\n Tstrok: \"Ŧ\",\n tstrok: \"ŧ\",\n twixt: \"≬\",\n twoheadleftarrow: \"↞\",\n twoheadrightarrow: \"↠\",\n Uacute: \"Ú\",\n uacute: \"ú\",\n uarr: \"↑\",\n Uarr: \"↟\",\n uArr: \"⇑\",\n Uarrocir: \"⥉\",\n Ubrcy: \"Ў\",\n ubrcy: \"ў\",\n Ubreve: \"Ŭ\",\n ubreve: \"ŭ\",\n Ucirc: \"Û\",\n ucirc: \"û\",\n Ucy: \"У\",\n ucy: \"у\",\n udarr: \"⇅\",\n Udblac: \"Ű\",\n udblac: \"ű\",\n udhar: \"⥮\",\n ufisht: \"⥾\",\n Ufr: \"𝔘\",\n ufr: \"𝔲\",\n Ugrave: \"Ù\",\n ugrave: \"ù\",\n uHar: \"⥣\",\n uharl: \"↿\",\n uharr: \"↾\",\n uhblk: \"▀\",\n ulcorn: \"⌜\",\n ulcorner: \"⌜\",\n ulcrop: \"⌏\",\n ultri: \"◸\",\n Umacr: \"Ū\",\n umacr: \"ū\",\n uml: \"¨\",\n UnderBar: \"_\",\n UnderBrace: \"⏟\",\n UnderBracket: \"⎵\",\n UnderParenthesis: \"⏝\",\n Union: \"⋃\",\n UnionPlus: \"⊎\",\n Uogon: \"Ų\",\n uogon: \"ų\",\n Uopf: \"𝕌\",\n uopf: \"𝕦\",\n UpArrowBar: \"⤒\",\n uparrow: \"↑\",\n UpArrow: \"↑\",\n Uparrow: \"⇑\",\n UpArrowDownArrow: \"⇅\",\n updownarrow: \"↕\",\n UpDownArrow: \"↕\",\n Updownarrow: \"⇕\",\n UpEquilibrium: \"⥮\",\n upharpoonleft: \"↿\",\n upharpoonright: \"↾\",\n uplus: \"⊎\",\n UpperLeftArrow: \"↖\",\n UpperRightArrow: \"↗\",\n upsi: \"υ\",\n Upsi: \"ϒ\",\n upsih: \"ϒ\",\n Upsilon: \"Υ\",\n upsilon: \"υ\",\n UpTeeArrow: \"↥\",\n UpTee: \"⊥\",\n upuparrows: \"⇈\",\n urcorn: \"⌝\",\n urcorner: \"⌝\",\n urcrop: \"⌎\",\n Uring: \"Ů\",\n uring: \"ů\",\n urtri: \"◹\",\n Uscr: \"𝒰\",\n uscr: \"𝓊\",\n utdot: \"⋰\",\n Utilde: \"Ũ\",\n utilde: \"ũ\",\n utri: \"▵\",\n utrif: \"▴\",\n uuarr: \"⇈\",\n Uuml: \"Ü\",\n uuml: \"ü\",\n uwangle: \"⦧\",\n vangrt: \"⦜\",\n varepsilon: \"ϵ\",\n varkappa: \"ϰ\",\n varnothing: \"∅\",\n varphi: \"ϕ\",\n varpi: \"ϖ\",\n varpropto: \"∝\",\n varr: \"↕\",\n vArr: \"⇕\",\n varrho: \"ϱ\",\n varsigma: \"ς\",\n varsubsetneq: \"⊊︀\",\n varsubsetneqq: \"⫋︀\",\n varsupsetneq: \"⊋︀\",\n varsupsetneqq: \"⫌︀\",\n vartheta: \"ϑ\",\n vartriangleleft: \"⊲\",\n vartriangleright: \"⊳\",\n vBar: \"⫨\",\n Vbar: \"⫫\",\n vBarv: \"⫩\",\n Vcy: \"В\",\n vcy: \"в\",\n vdash: \"⊢\",\n vDash: \"⊨\",\n Vdash: \"⊩\",\n VDash: \"⊫\",\n Vdashl: \"⫦\",\n veebar: \"⊻\",\n vee: \"∨\",\n Vee: \"⋁\",\n veeeq: \"≚\",\n vellip: \"⋮\",\n verbar: \"|\",\n Verbar: \"‖\",\n vert: \"|\",\n Vert: \"‖\",\n VerticalBar: \"∣\",\n VerticalLine: \"|\",\n VerticalSeparator: \"❘\",\n VerticalTilde: \"≀\",\n VeryThinSpace: \" \",\n Vfr: \"𝔙\",\n vfr: \"𝔳\",\n vltri: \"⊲\",\n vnsub: \"⊂⃒\",\n vnsup: \"⊃⃒\",\n Vopf: \"𝕍\",\n vopf: \"𝕧\",\n vprop: \"∝\",\n vrtri: \"⊳\",\n Vscr: \"𝒱\",\n vscr: \"𝓋\",\n vsubnE: \"⫋︀\",\n vsubne: \"⊊︀\",\n vsupnE: \"⫌︀\",\n vsupne: \"⊋︀\",\n Vvdash: \"⊪\",\n vzigzag: \"⦚\",\n Wcirc: \"Ŵ\",\n wcirc: \"ŵ\",\n wedbar: \"⩟\",\n wedge: \"∧\",\n Wedge: \"⋀\",\n wedgeq: \"≙\",\n weierp: \"℘\",\n Wfr: \"𝔚\",\n wfr: \"𝔴\",\n Wopf: \"𝕎\",\n wopf: \"𝕨\",\n wp: \"℘\",\n wr: \"≀\",\n wreath: \"≀\",\n Wscr: \"𝒲\",\n wscr: \"𝓌\",\n xcap: \"⋂\",\n xcirc: \"◯\",\n xcup: \"⋃\",\n xdtri: \"▽\",\n Xfr: \"𝔛\",\n xfr: \"𝔵\",\n xharr: \"⟷\",\n xhArr: \"⟺\",\n Xi: \"Ξ\",\n xi: \"ξ\",\n xlarr: \"⟵\",\n xlArr: \"⟸\",\n xmap: \"⟼\",\n xnis: \"⋻\",\n xodot: \"⨀\",\n Xopf: \"𝕏\",\n xopf: \"𝕩\",\n xoplus: \"⨁\",\n xotime: \"⨂\",\n xrarr: \"⟶\",\n xrArr: \"⟹\",\n Xscr: \"𝒳\",\n xscr: \"𝓍\",\n xsqcup: \"⨆\",\n xuplus: \"⨄\",\n xutri: \"△\",\n xvee: \"⋁\",\n xwedge: \"⋀\",\n Yacute: \"Ý\",\n yacute: \"ý\",\n YAcy: \"Я\",\n yacy: \"я\",\n Ycirc: \"Ŷ\",\n ycirc: \"ŷ\",\n Ycy: \"Ы\",\n ycy: \"ы\",\n yen: \"¥\",\n Yfr: \"𝔜\",\n yfr: \"𝔶\",\n YIcy: \"Ї\",\n yicy: \"ї\",\n Yopf: \"𝕐\",\n yopf: \"𝕪\",\n Yscr: \"𝒴\",\n yscr: \"𝓎\",\n YUcy: \"Ю\",\n yucy: \"ю\",\n yuml: \"ÿ\",\n Yuml: \"Ÿ\",\n Zacute: \"Ź\",\n zacute: \"ź\",\n Zcaron: \"Ž\",\n zcaron: \"ž\",\n Zcy: \"З\",\n zcy: \"з\",\n Zdot: \"Ż\",\n zdot: \"ż\",\n zeetrf: \"ℨ\",\n ZeroWidthSpace: \"​\",\n Zeta: \"Ζ\",\n zeta: \"ζ\",\n zfr: \"𝔷\",\n Zfr: \"ℨ\",\n ZHcy: \"Ж\",\n zhcy: \"ж\",\n zigrarr: \"⇝\",\n zopf: \"𝕫\",\n Zopf: \"ℤ\",\n Zscr: \"𝒵\",\n zscr: \"𝓏\",\n zwj: \"\\u200D\",\n zwnj: \"\\u200C\"\n };\n _exports.HTML5NamedCharRefs = namedCharRefs;\n var HEXCHARCODE = /^#[xX]([A-Fa-f0-9]+)$/;\n var CHARCODE = /^#([0-9]+)$/;\n var NAMED = /^([A-Za-z0-9]+)$/;\n\n var EntityParser =\n /** @class */\n function () {\n function EntityParser(named) {\n this.named = named;\n }\n\n EntityParser.prototype.parse = function (entity) {\n if (!entity) {\n return;\n }\n\n var matches = entity.match(HEXCHARCODE);\n\n if (matches) {\n return String.fromCharCode(parseInt(matches[1], 16));\n }\n\n matches = entity.match(CHARCODE);\n\n if (matches) {\n return String.fromCharCode(parseInt(matches[1], 10));\n }\n\n matches = entity.match(NAMED);\n\n if (matches) {\n return this.named[matches[1]];\n }\n };\n\n return EntityParser;\n }();\n\n _exports.EntityParser = EntityParser;\n var WSP = /[\\t\\n\\f ]/;\n var ALPHA = /[A-Za-z]/;\n var CRLF = /\\r\\n?/g;\n\n function isSpace(char) {\n return WSP.test(char);\n }\n\n function isAlpha(char) {\n return ALPHA.test(char);\n }\n\n function preprocessInput(input) {\n return input.replace(CRLF, '\\n');\n }\n\n var EventedTokenizer =\n /** @class */\n function () {\n function EventedTokenizer(delegate, entityParser, mode) {\n if (mode === void 0) {\n mode = 'precompile';\n }\n\n this.delegate = delegate;\n this.entityParser = entityParser;\n this.mode = mode;\n this.state = \"beforeData\"\n /* beforeData */\n ;\n this.line = -1;\n this.column = -1;\n this.input = '';\n this.index = -1;\n this.tagNameBuffer = '';\n this.states = {\n beforeData: function beforeData() {\n var char = this.peek();\n\n if (char === '<' && !this.isIgnoredEndTag()) {\n this.transitionTo(\"tagOpen\"\n /* tagOpen */\n );\n this.markTagStart();\n this.consume();\n } else {\n if (this.mode === 'precompile' && char === '\\n') {\n var tag = this.tagNameBuffer.toLowerCase();\n\n if (tag === 'pre' || tag === 'textarea') {\n this.consume();\n }\n }\n\n this.transitionTo(\"data\"\n /* data */\n );\n this.delegate.beginData();\n }\n },\n data: function data() {\n var char = this.peek();\n var tag = this.tagNameBuffer;\n\n if (char === '<' && !this.isIgnoredEndTag()) {\n this.delegate.finishData();\n this.transitionTo(\"tagOpen\"\n /* tagOpen */\n );\n this.markTagStart();\n this.consume();\n } else if (char === '&' && tag !== 'script' && tag !== 'style') {\n this.consume();\n this.delegate.appendToData(this.consumeCharRef() || '&');\n } else {\n this.consume();\n this.delegate.appendToData(char);\n }\n },\n tagOpen: function tagOpen() {\n var char = this.consume();\n\n if (char === '!') {\n this.transitionTo(\"markupDeclarationOpen\"\n /* markupDeclarationOpen */\n );\n } else if (char === '/') {\n this.transitionTo(\"endTagOpen\"\n /* endTagOpen */\n );\n } else if (char === '@' || char === ':' || isAlpha(char)) {\n this.transitionTo(\"tagName\"\n /* tagName */\n );\n this.tagNameBuffer = '';\n this.delegate.beginStartTag();\n this.appendToTagName(char);\n }\n },\n markupDeclarationOpen: function markupDeclarationOpen() {\n var char = this.consume();\n\n if (char === '-' && this.peek() === '-') {\n this.consume();\n this.transitionTo(\"commentStart\"\n /* commentStart */\n );\n this.delegate.beginComment();\n }\n },\n commentStart: function commentStart() {\n var char = this.consume();\n\n if (char === '-') {\n this.transitionTo(\"commentStartDash\"\n /* commentStartDash */\n );\n } else if (char === '>') {\n this.delegate.finishComment();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else {\n this.delegate.appendToCommentData(char);\n this.transitionTo(\"comment\"\n /* comment */\n );\n }\n },\n commentStartDash: function commentStartDash() {\n var char = this.consume();\n\n if (char === '-') {\n this.transitionTo(\"commentEnd\"\n /* commentEnd */\n );\n } else if (char === '>') {\n this.delegate.finishComment();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else {\n this.delegate.appendToCommentData('-');\n this.transitionTo(\"comment\"\n /* comment */\n );\n }\n },\n comment: function comment() {\n var char = this.consume();\n\n if (char === '-') {\n this.transitionTo(\"commentEndDash\"\n /* commentEndDash */\n );\n } else {\n this.delegate.appendToCommentData(char);\n }\n },\n commentEndDash: function commentEndDash() {\n var char = this.consume();\n\n if (char === '-') {\n this.transitionTo(\"commentEnd\"\n /* commentEnd */\n );\n } else {\n this.delegate.appendToCommentData('-' + char);\n this.transitionTo(\"comment\"\n /* comment */\n );\n }\n },\n commentEnd: function commentEnd() {\n var char = this.consume();\n\n if (char === '>') {\n this.delegate.finishComment();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else {\n this.delegate.appendToCommentData('--' + char);\n this.transitionTo(\"comment\"\n /* comment */\n );\n }\n },\n tagName: function tagName() {\n var char = this.consume();\n\n if (isSpace(char)) {\n this.transitionTo(\"beforeAttributeName\"\n /* beforeAttributeName */\n );\n } else if (char === '/') {\n this.transitionTo(\"selfClosingStartTag\"\n /* selfClosingStartTag */\n );\n } else if (char === '>') {\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else {\n this.appendToTagName(char);\n }\n },\n endTagName: function endTagName() {\n var char = this.consume();\n\n if (isSpace(char)) {\n this.transitionTo(\"beforeAttributeName\"\n /* beforeAttributeName */\n );\n this.tagNameBuffer = '';\n } else if (char === '/') {\n this.transitionTo(\"selfClosingStartTag\"\n /* selfClosingStartTag */\n );\n this.tagNameBuffer = '';\n } else if (char === '>') {\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n this.tagNameBuffer = '';\n } else {\n this.appendToTagName(char);\n }\n },\n beforeAttributeName: function beforeAttributeName() {\n var char = this.peek();\n\n if (isSpace(char)) {\n this.consume();\n return;\n } else if (char === '/') {\n this.transitionTo(\"selfClosingStartTag\"\n /* selfClosingStartTag */\n );\n this.consume();\n } else if (char === '>') {\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else if (char === '=') {\n this.delegate.reportSyntaxError('attribute name cannot start with equals sign');\n this.transitionTo(\"attributeName\"\n /* attributeName */\n );\n this.delegate.beginAttribute();\n this.consume();\n this.delegate.appendToAttributeName(char);\n } else {\n this.transitionTo(\"attributeName\"\n /* attributeName */\n );\n this.delegate.beginAttribute();\n }\n },\n attributeName: function attributeName() {\n var char = this.peek();\n\n if (isSpace(char)) {\n this.transitionTo(\"afterAttributeName\"\n /* afterAttributeName */\n );\n this.consume();\n } else if (char === '/') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(\"selfClosingStartTag\"\n /* selfClosingStartTag */\n );\n } else if (char === '=') {\n this.transitionTo(\"beforeAttributeValue\"\n /* beforeAttributeValue */\n );\n this.consume();\n } else if (char === '>') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else if (char === '\"' || char === \"'\" || char === '<') {\n this.delegate.reportSyntaxError(char + ' is not a valid character within attribute names');\n this.consume();\n this.delegate.appendToAttributeName(char);\n } else {\n this.consume();\n this.delegate.appendToAttributeName(char);\n }\n },\n afterAttributeName: function afterAttributeName() {\n var char = this.peek();\n\n if (isSpace(char)) {\n this.consume();\n return;\n } else if (char === '/') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(\"selfClosingStartTag\"\n /* selfClosingStartTag */\n );\n } else if (char === '=') {\n this.consume();\n this.transitionTo(\"beforeAttributeValue\"\n /* beforeAttributeValue */\n );\n } else if (char === '>') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.transitionTo(\"attributeName\"\n /* attributeName */\n );\n this.delegate.beginAttribute();\n this.consume();\n this.delegate.appendToAttributeName(char);\n }\n },\n beforeAttributeValue: function beforeAttributeValue() {\n var char = this.peek();\n\n if (isSpace(char)) {\n this.consume();\n } else if (char === '\"') {\n this.transitionTo(\"attributeValueDoubleQuoted\"\n /* attributeValueDoubleQuoted */\n );\n this.delegate.beginAttributeValue(true);\n this.consume();\n } else if (char === \"'\") {\n this.transitionTo(\"attributeValueSingleQuoted\"\n /* attributeValueSingleQuoted */\n );\n this.delegate.beginAttributeValue(true);\n this.consume();\n } else if (char === '>') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else {\n this.transitionTo(\"attributeValueUnquoted\"\n /* attributeValueUnquoted */\n );\n this.delegate.beginAttributeValue(false);\n this.consume();\n this.delegate.appendToAttributeValue(char);\n }\n },\n attributeValueDoubleQuoted: function attributeValueDoubleQuoted() {\n var char = this.consume();\n\n if (char === '\"') {\n this.delegate.finishAttributeValue();\n this.transitionTo(\"afterAttributeValueQuoted\"\n /* afterAttributeValueQuoted */\n );\n } else if (char === '&') {\n this.delegate.appendToAttributeValue(this.consumeCharRef() || '&');\n } else {\n this.delegate.appendToAttributeValue(char);\n }\n },\n attributeValueSingleQuoted: function attributeValueSingleQuoted() {\n var char = this.consume();\n\n if (char === \"'\") {\n this.delegate.finishAttributeValue();\n this.transitionTo(\"afterAttributeValueQuoted\"\n /* afterAttributeValueQuoted */\n );\n } else if (char === '&') {\n this.delegate.appendToAttributeValue(this.consumeCharRef() || '&');\n } else {\n this.delegate.appendToAttributeValue(char);\n }\n },\n attributeValueUnquoted: function attributeValueUnquoted() {\n var char = this.peek();\n\n if (isSpace(char)) {\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(\"beforeAttributeName\"\n /* beforeAttributeName */\n );\n } else if (char === '/') {\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(\"selfClosingStartTag\"\n /* selfClosingStartTag */\n );\n } else if (char === '&') {\n this.consume();\n this.delegate.appendToAttributeValue(this.consumeCharRef() || '&');\n } else if (char === '>') {\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else {\n this.consume();\n this.delegate.appendToAttributeValue(char);\n }\n },\n afterAttributeValueQuoted: function afterAttributeValueQuoted() {\n var char = this.peek();\n\n if (isSpace(char)) {\n this.consume();\n this.transitionTo(\"beforeAttributeName\"\n /* beforeAttributeName */\n );\n } else if (char === '/') {\n this.consume();\n this.transitionTo(\"selfClosingStartTag\"\n /* selfClosingStartTag */\n );\n } else if (char === '>') {\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else {\n this.transitionTo(\"beforeAttributeName\"\n /* beforeAttributeName */\n );\n }\n },\n selfClosingStartTag: function selfClosingStartTag() {\n var char = this.peek();\n\n if (char === '>') {\n this.consume();\n this.delegate.markTagAsSelfClosing();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else {\n this.transitionTo(\"beforeAttributeName\"\n /* beforeAttributeName */\n );\n }\n },\n endTagOpen: function endTagOpen() {\n var char = this.consume();\n\n if (char === '@' || char === ':' || isAlpha(char)) {\n this.transitionTo(\"endTagName\"\n /* endTagName */\n );\n this.tagNameBuffer = '';\n this.delegate.beginEndTag();\n this.appendToTagName(char);\n }\n }\n };\n this.reset();\n }\n\n EventedTokenizer.prototype.reset = function () {\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n this.input = '';\n this.tagNameBuffer = '';\n this.index = 0;\n this.line = 1;\n this.column = 0;\n this.delegate.reset();\n };\n\n EventedTokenizer.prototype.transitionTo = function (state) {\n this.state = state;\n };\n\n EventedTokenizer.prototype.tokenize = function (input) {\n this.reset();\n this.tokenizePart(input);\n this.tokenizeEOF();\n };\n\n EventedTokenizer.prototype.tokenizePart = function (input) {\n this.input += preprocessInput(input);\n\n while (this.index < this.input.length) {\n var handler = this.states[this.state];\n\n if (handler !== undefined) {\n handler.call(this);\n } else {\n throw new Error(\"unhandled state \" + this.state);\n }\n }\n };\n\n EventedTokenizer.prototype.tokenizeEOF = function () {\n this.flushData();\n };\n\n EventedTokenizer.prototype.flushData = function () {\n if (this.state === 'data') {\n this.delegate.finishData();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n }\n };\n\n EventedTokenizer.prototype.peek = function () {\n return this.input.charAt(this.index);\n };\n\n EventedTokenizer.prototype.consume = function () {\n var char = this.peek();\n this.index++;\n\n if (char === '\\n') {\n this.line++;\n this.column = 0;\n } else {\n this.column++;\n }\n\n return char;\n };\n\n EventedTokenizer.prototype.consumeCharRef = function () {\n var endIndex = this.input.indexOf(';', this.index);\n\n if (endIndex === -1) {\n return;\n }\n\n var entity = this.input.slice(this.index, endIndex);\n var chars = this.entityParser.parse(entity);\n\n if (chars) {\n var count = entity.length; // consume the entity chars\n\n while (count) {\n this.consume();\n count--;\n } // consume the `;`\n\n\n this.consume();\n return chars;\n }\n };\n\n EventedTokenizer.prototype.markTagStart = function () {\n this.delegate.tagOpen();\n };\n\n EventedTokenizer.prototype.appendToTagName = function (char) {\n this.tagNameBuffer += char;\n this.delegate.appendToTagName(char);\n };\n\n EventedTokenizer.prototype.isIgnoredEndTag = function () {\n var tag = this.tagNameBuffer;\n return tag === 'title' && this.input.substring(this.index, this.index + 8) !== '</title>' || tag === 'style' && this.input.substring(this.index, this.index + 8) !== '</style>' || tag === 'script' && this.input.substring(this.index, this.index + 9) !== '</script>';\n };\n\n return EventedTokenizer;\n }();\n\n _exports.EventedTokenizer = EventedTokenizer;\n\n var Tokenizer =\n /** @class */\n function () {\n function Tokenizer(entityParser, options) {\n if (options === void 0) {\n options = {};\n }\n\n this.options = options;\n this.token = null;\n this.startLine = 1;\n this.startColumn = 0;\n this.tokens = [];\n this.tokenizer = new EventedTokenizer(this, entityParser, options.mode);\n this._currentAttribute = undefined;\n }\n\n Tokenizer.prototype.tokenize = function (input) {\n this.tokens = [];\n this.tokenizer.tokenize(input);\n return this.tokens;\n };\n\n Tokenizer.prototype.tokenizePart = function (input) {\n this.tokens = [];\n this.tokenizer.tokenizePart(input);\n return this.tokens;\n };\n\n Tokenizer.prototype.tokenizeEOF = function () {\n this.tokens = [];\n this.tokenizer.tokenizeEOF();\n return this.tokens[0];\n };\n\n Tokenizer.prototype.reset = function () {\n this.token = null;\n this.startLine = 1;\n this.startColumn = 0;\n };\n\n Tokenizer.prototype.current = function () {\n var token = this.token;\n\n if (token === null) {\n throw new Error('token was unexpectedly null');\n }\n\n if (arguments.length === 0) {\n return token;\n }\n\n for (var i = 0; i < arguments.length; i++) {\n if (token.type === arguments[i]) {\n return token;\n }\n }\n\n throw new Error(\"token type was unexpectedly \" + token.type);\n };\n\n Tokenizer.prototype.push = function (token) {\n this.token = token;\n this.tokens.push(token);\n };\n\n Tokenizer.prototype.currentAttribute = function () {\n return this._currentAttribute;\n };\n\n Tokenizer.prototype.addLocInfo = function () {\n if (this.options.loc) {\n this.current().loc = {\n start: {\n line: this.startLine,\n column: this.startColumn\n },\n end: {\n line: this.tokenizer.line,\n column: this.tokenizer.column\n }\n };\n }\n\n this.startLine = this.tokenizer.line;\n this.startColumn = this.tokenizer.column;\n }; // Data\n\n\n Tokenizer.prototype.beginData = function () {\n this.push({\n type: \"Chars\"\n /* Chars */\n ,\n chars: ''\n });\n };\n\n Tokenizer.prototype.appendToData = function (char) {\n this.current(\"Chars\"\n /* Chars */\n ).chars += char;\n };\n\n Tokenizer.prototype.finishData = function () {\n this.addLocInfo();\n }; // Comment\n\n\n Tokenizer.prototype.beginComment = function () {\n this.push({\n type: \"Comment\"\n /* Comment */\n ,\n chars: ''\n });\n };\n\n Tokenizer.prototype.appendToCommentData = function (char) {\n this.current(\"Comment\"\n /* Comment */\n ).chars += char;\n };\n\n Tokenizer.prototype.finishComment = function () {\n this.addLocInfo();\n }; // Tags - basic\n\n\n Tokenizer.prototype.tagOpen = function () {};\n\n Tokenizer.prototype.beginStartTag = function () {\n this.push({\n type: \"StartTag\"\n /* StartTag */\n ,\n tagName: '',\n attributes: [],\n selfClosing: false\n });\n };\n\n Tokenizer.prototype.beginEndTag = function () {\n this.push({\n type: \"EndTag\"\n /* EndTag */\n ,\n tagName: ''\n });\n };\n\n Tokenizer.prototype.finishTag = function () {\n this.addLocInfo();\n };\n\n Tokenizer.prototype.markTagAsSelfClosing = function () {\n this.current(\"StartTag\"\n /* StartTag */\n ).selfClosing = true;\n }; // Tags - name\n\n\n Tokenizer.prototype.appendToTagName = function (char) {\n this.current(\"StartTag\"\n /* StartTag */\n , \"EndTag\"\n /* EndTag */\n ).tagName += char;\n }; // Tags - attributes\n\n\n Tokenizer.prototype.beginAttribute = function () {\n this._currentAttribute = ['', '', false];\n };\n\n Tokenizer.prototype.appendToAttributeName = function (char) {\n this.currentAttribute()[0] += char;\n };\n\n Tokenizer.prototype.beginAttributeValue = function (isQuoted) {\n this.currentAttribute()[2] = isQuoted;\n };\n\n Tokenizer.prototype.appendToAttributeValue = function (char) {\n this.currentAttribute()[1] += char;\n };\n\n Tokenizer.prototype.finishAttributeValue = function () {\n this.current(\"StartTag\"\n /* StartTag */\n ).attributes.push(this._currentAttribute);\n };\n\n Tokenizer.prototype.reportSyntaxError = function (message) {\n this.current().syntaxError = message;\n };\n\n return Tokenizer;\n }();\n\n _exports.Tokenizer = Tokenizer;\n\n function tokenize(input, options) {\n var tokenizer = new Tokenizer(new EntityParser(namedCharRefs), options);\n return tokenizer.tokenize(input);\n }\n});"],"names":[],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACp6BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9+NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5uBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzmFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;","file":"ember-template-compiler.js"}
1
+ {"version":3,"sources":["license.js","loader.js","@ember/-internals/browser-environment/index.js","@ember/-internals/environment/index.js","@ember/-internals/utils/index.js","@ember/canary-features/index.js","@ember/debug/container-debug-adapter.js","@ember/debug/data-adapter.js","@ember/debug/index.js","@ember/debug/lib/capture-render-tree.js","@ember/debug/lib/deprecate.js","@ember/debug/lib/handlers.js","@ember/debug/lib/testing.js","@ember/debug/lib/warn.js","@ember/deprecated-features/index.js","@ember/error/index.js","@ember/polyfills/index.js","@ember/polyfills/lib/assign.js","@ember/polyfills/lib/merge.js","@glimmer/compiler.js","@glimmer/env.js","@glimmer/syntax.js","@glimmer/util.js","@glimmer/wire-format.js","@handlebars/parser/index.js","ember-babel.js","ember-template-compiler/index.js","ember-template-compiler/lib/plugins/assert-against-dynamic-helpers-modifiers.js","ember-template-compiler/lib/plugins/assert-against-named-blocks.js","ember-template-compiler/lib/plugins/assert-input-helper-without-block.js","ember-template-compiler/lib/plugins/assert-reserved-named-arguments.js","ember-template-compiler/lib/plugins/assert-splattribute-expression.js","ember-template-compiler/lib/plugins/deprecate-send-action.js","ember-template-compiler/lib/plugins/deprecate-with.js","ember-template-compiler/lib/plugins/index.js","ember-template-compiler/lib/plugins/transform-action-syntax.js","ember-template-compiler/lib/plugins/transform-attrs-into-args.js","ember-template-compiler/lib/plugins/transform-each-in-into-each.js","ember-template-compiler/lib/plugins/transform-each-track-array.js","ember-template-compiler/lib/plugins/transform-has-block-syntax.js","ember-template-compiler/lib/plugins/transform-in-element.js","ember-template-compiler/lib/plugins/transform-link-to.js","ember-template-compiler/lib/plugins/transform-old-class-binding-syntax.js","ember-template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.js","ember-template-compiler/lib/plugins/transform-resolutions.js","ember-template-compiler/lib/plugins/transform-wrap-mount-and-outlet.js","ember-template-compiler/lib/plugins/utils.js","ember-template-compiler/lib/system/bootstrap.js","ember-template-compiler/lib/system/calculate-location-display.js","ember-template-compiler/lib/system/compile-options.js","ember-template-compiler/lib/system/compile.js","ember-template-compiler/lib/system/dasherize-component-name.js","ember-template-compiler/lib/system/initializer.js","ember-template-compiler/lib/system/precompile.js","ember/version.js","simple-html-tokenizer.js"],"sourcesContent":["/*!\n * @overview Ember - JavaScript Application Framework\n * @copyright Copyright 2011-2021 Tilde Inc. and contributors\n * Portions Copyright 2006-2011 Strobe Inc.\n * Portions Copyright 2008-2011 Apple Inc. All rights reserved.\n * @license Licensed under MIT license\n * See https://raw.github.com/emberjs/ember.js/master/LICENSE\n * @version 3.28.9\n */\n","/* eslint-disable no-var */\n/* globals global globalThis self */\nvar define, require;\n\n(function () {\n var globalObj =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : null;\n\n if (globalObj === null) {\n throw new Error('unable to locate global object');\n }\n\n if (typeof globalObj.define === 'function' && typeof globalObj.require === 'function') {\n define = globalObj.define;\n require = globalObj.require;\n\n return;\n }\n\n var registry = Object.create(null);\n var seen = Object.create(null);\n\n function missingModule(name, referrerName) {\n if (referrerName) {\n throw new Error('Could not find module ' + name + ' required by: ' + referrerName);\n } else {\n throw new Error('Could not find module ' + name);\n }\n }\n\n function internalRequire(_name, referrerName) {\n var name = _name;\n var mod = registry[name];\n\n if (!mod) {\n name = name + '/index';\n mod = registry[name];\n }\n\n var exports = seen[name];\n\n if (exports !== undefined) {\n return exports;\n }\n\n exports = seen[name] = {};\n\n if (!mod) {\n missingModule(_name, referrerName);\n }\n\n var deps = mod.deps;\n var callback = mod.callback;\n var reified = new Array(deps.length);\n\n for (var i = 0; i < deps.length; i++) {\n if (deps[i] === 'exports') {\n reified[i] = exports;\n } else if (deps[i] === 'require') {\n reified[i] = require;\n } else {\n reified[i] = require(deps[i], name);\n }\n }\n\n callback.apply(this, reified);\n\n return exports;\n }\n\n require = function (name) {\n return internalRequire(name, null);\n };\n\n // eslint-disable-next-line no-unused-vars\n define = function (name, deps, callback) {\n registry[name] = { deps: deps, callback: callback };\n };\n\n // setup `require` module\n require['default'] = require;\n\n require.has = function registryHas(moduleName) {\n return Boolean(registry[moduleName]) || Boolean(registry[moduleName + '/index']);\n };\n\n require._eak_seen = require.entries = registry;\n})();\n","define(\"@ember/-internals/browser-environment/index\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.hasDOM = _exports.isIE = _exports.isFirefox = _exports.isChrome = _exports.userAgent = _exports.history = _exports.location = _exports.window = void 0;\n // check if window exists and actually is the global\n var hasDom = typeof self === 'object' && self !== null && self.Object === Object && typeof Window !== 'undefined' && self.constructor === Window && typeof document === 'object' && document !== null && self.document === document && typeof location === 'object' && location !== null && self.location === location && typeof history === 'object' && history !== null && self.history === history && typeof navigator === 'object' && navigator !== null && self.navigator === navigator && typeof navigator.userAgent === 'string';\n _exports.hasDOM = hasDom;\n var window = hasDom ? self : null;\n _exports.window = window;\n var location$1 = hasDom ? self.location : null;\n _exports.location = location$1;\n var history$1 = hasDom ? self.history : null;\n _exports.history = history$1;\n var userAgent = hasDom ? self.navigator.userAgent : 'Lynx (textmode)';\n _exports.userAgent = userAgent;\n var isChrome = hasDom ? typeof chrome === 'object' && !(typeof opera === 'object') : false;\n _exports.isChrome = isChrome;\n var isFirefox = hasDom ? typeof InstallTrigger !== 'undefined' : false;\n _exports.isFirefox = isFirefox;\n var isIE = hasDom ? typeof MSInputMethodContext !== 'undefined' && typeof documentMode !== 'undefined' : false;\n _exports.isIE = isIE;\n});","define(\"@ember/-internals/environment/index\", [\"exports\", \"@ember/deprecated-features\"], function (_exports, _deprecatedFeatures) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.getLookup = getLookup;\n _exports.setLookup = setLookup;\n _exports.getENV = getENV;\n _exports.ENV = _exports.context = _exports.global = void 0;\n\n // from lodash to catch fake globals\n function checkGlobal(value) {\n return value && value.Object === Object ? value : undefined;\n } // element ids can ruin global miss checks\n\n\n function checkElementIdShadowing(value) {\n return value && value.nodeType === undefined ? value : undefined;\n } // export real global\n\n\n var global$1 = checkGlobal(checkElementIdShadowing(typeof global === 'object' && global)) || checkGlobal(typeof self === 'object' && self) || checkGlobal(typeof window === 'object' && window) || typeof mainContext !== 'undefined' && mainContext || // set before strict mode in Ember loader/wrapper\n new Function('return this')(); // eval outside of strict mode\n\n _exports.global = global$1;\n\n var context = function (global, Ember) {\n return Ember === undefined ? {\n imports: global,\n exports: global,\n lookup: global\n } : {\n // import jQuery\n imports: Ember.imports || global,\n // export Ember\n exports: Ember.exports || global,\n // search for Namespaces\n lookup: Ember.lookup || global\n };\n }(global$1, global$1.Ember);\n\n _exports.context = context;\n\n function getLookup() {\n return context.lookup;\n }\n\n function setLookup(value) {\n context.lookup = value;\n }\n /**\n The hash of environment variables used to control various configuration\n settings. To specify your own or override default settings, add the\n desired properties to a global hash named `EmberENV` (or `ENV` for\n backwards compatibility with earlier versions of Ember). The `EmberENV`\n hash must be created before loading Ember.\n \n @class EmberENV\n @type Object\n @public\n */\n\n\n var ENV = {\n ENABLE_OPTIONAL_FEATURES: false,\n\n /**\n Determines whether Ember should add to `Array`, `Function`, and `String`\n native object prototypes, a few extra methods in order to provide a more\n friendly API.\n We generally recommend leaving this option set to true however, if you need\n to turn it off, you can add the configuration property\n `EXTEND_PROTOTYPES` to `EmberENV` and set it to `false`.\n Note, when disabled (the default configuration for Ember Addons), you will\n instead have to access all methods and functions from the Ember\n namespace.\n @property EXTEND_PROTOTYPES\n @type Boolean\n @default true\n @for EmberENV\n @public\n */\n EXTEND_PROTOTYPES: {\n Array: true,\n Function: true,\n String: true\n },\n\n /**\n The `LOG_STACKTRACE_ON_DEPRECATION` property, when true, tells Ember to log\n a full stack trace during deprecation warnings.\n @property LOG_STACKTRACE_ON_DEPRECATION\n @type Boolean\n @default true\n @for EmberENV\n @public\n */\n LOG_STACKTRACE_ON_DEPRECATION: true,\n\n /**\n The `LOG_VERSION` property, when true, tells Ember to log versions of all\n dependent libraries in use.\n @property LOG_VERSION\n @type Boolean\n @default true\n @for EmberENV\n @public\n */\n LOG_VERSION: true,\n RAISE_ON_DEPRECATION: false,\n STRUCTURED_PROFILE: false,\n\n /**\n Whether to insert a `<div class=\"ember-view\" />` wrapper around the\n application template. See RFC #280.\n This is not intended to be set directly, as the implementation may change in\n the future. Use `@ember/optional-features` instead.\n @property _APPLICATION_TEMPLATE_WRAPPER\n @for EmberENV\n @type Boolean\n @default true\n @private\n */\n _APPLICATION_TEMPLATE_WRAPPER: true,\n\n /**\n Whether to use Glimmer Component semantics (as opposed to the classic \"Curly\"\n components semantics) for template-only components. See RFC #278.\n This is not intended to be set directly, as the implementation may change in\n the future. Use `@ember/optional-features` instead.\n @property _TEMPLATE_ONLY_GLIMMER_COMPONENTS\n @for EmberENV\n @type Boolean\n @default false\n @private\n */\n _TEMPLATE_ONLY_GLIMMER_COMPONENTS: false,\n\n /**\n Whether to perform extra bookkeeping needed to make the `captureRenderTree`\n API work.\n This has to be set before the ember JavaScript code is evaluated. This is\n usually done by setting `window.EmberENV = { _DEBUG_RENDER_TREE: true };`\n before the \"vendor\" `<script>` tag in `index.html`.\n Setting the flag after Ember is already loaded will not work correctly. It\n may appear to work somewhat, but fundamentally broken.\n This is not intended to be set directly. Ember Inspector will enable the\n flag on behalf of the user as needed.\n This flag is always on in development mode.\n The flag is off by default in production mode, due to the cost associated\n with the the bookkeeping work.\n The expected flow is that Ember Inspector will ask the user to refresh the\n page after enabling the feature. It could also offer a feature where the\n user add some domains to the \"always on\" list. In either case, Ember\n Inspector will inject the code on the page to set the flag if needed.\n @property _DEBUG_RENDER_TREE\n @for EmberENV\n @type Boolean\n @default false\n @private\n */\n _DEBUG_RENDER_TREE: true\n /* DEBUG */\n ,\n\n /**\n Whether the app is using jQuery. See RFC #294.\n This is not intended to be set directly, as the implementation may change in\n the future. Use `@ember/optional-features` instead.\n @property _JQUERY_INTEGRATION\n @for EmberENV\n @type Boolean\n @default true\n @private\n */\n _JQUERY_INTEGRATION: true,\n\n /**\n Whether the app defaults to using async observers.\n This is not intended to be set directly, as the implementation may change in\n the future. Use `@ember/optional-features` instead.\n @property _DEFAULT_ASYNC_OBSERVERS\n @for EmberENV\n @type Boolean\n @default false\n @private\n */\n _DEFAULT_ASYNC_OBSERVERS: false,\n\n /**\n Controls the maximum number of scheduled rerenders without \"settling\". In general,\n applications should not need to modify this environment variable, but please\n open an issue so that we can determine if a better default value is needed.\n @property _RERENDER_LOOP_LIMIT\n @for EmberENV\n @type number\n @default 1000\n @private\n */\n _RERENDER_LOOP_LIMIT: 1000,\n\n /**\n Allows disabling the implicit this property fallback deprecation. This could be useful\n as a way to control the volume of deprecations that are issued by temporarily disabling\n the implicit this fallback deprecations, which would allow the other deprecations to be more easily\n identified in the console).\n NOTE: The fallback behavior **will be removed** in Ember 4.0.0, disabling **_IS NOT_**\n a viable strategy for handling this deprecation.\n @property _DISABLE_PROPERTY_FALLBACK_DEPRECATION\n @for EmberENV\n @type boolean\n @default false\n @private\n */\n _DISABLE_PROPERTY_FALLBACK_DEPRECATION: false,\n EMBER_LOAD_HOOKS: {},\n FEATURES: {}\n };\n _exports.ENV = ENV;\n\n (function (EmberENV) {\n if (typeof EmberENV !== 'object' || EmberENV === null) return;\n\n for (var flag in EmberENV) {\n if (!Object.prototype.hasOwnProperty.call(EmberENV, flag) || flag === 'EXTEND_PROTOTYPES' || flag === 'EMBER_LOAD_HOOKS') continue;\n var defaultValue = ENV[flag];\n\n if (defaultValue === true) {\n ENV[flag] = EmberENV[flag] !== false;\n } else if (defaultValue === false) {\n ENV[flag] = EmberENV[flag] === true;\n }\n }\n\n var EXTEND_PROTOTYPES = EmberENV.EXTEND_PROTOTYPES;\n\n if (EXTEND_PROTOTYPES !== undefined) {\n if (typeof EXTEND_PROTOTYPES === 'object' && EXTEND_PROTOTYPES !== null) {\n ENV.EXTEND_PROTOTYPES.String = EXTEND_PROTOTYPES.String !== false;\n\n if (_deprecatedFeatures.FUNCTION_PROTOTYPE_EXTENSIONS) {\n ENV.EXTEND_PROTOTYPES.Function = EXTEND_PROTOTYPES.Function !== false;\n }\n\n ENV.EXTEND_PROTOTYPES.Array = EXTEND_PROTOTYPES.Array !== false;\n } else {\n var isEnabled = EXTEND_PROTOTYPES !== false;\n ENV.EXTEND_PROTOTYPES.String = isEnabled;\n\n if (_deprecatedFeatures.FUNCTION_PROTOTYPE_EXTENSIONS) {\n ENV.EXTEND_PROTOTYPES.Function = isEnabled;\n }\n\n ENV.EXTEND_PROTOTYPES.Array = isEnabled;\n }\n } // TODO this does not seem to be used by anything,\n // can we remove it? do we need to deprecate it?\n\n\n var EMBER_LOAD_HOOKS = EmberENV.EMBER_LOAD_HOOKS;\n\n if (typeof EMBER_LOAD_HOOKS === 'object' && EMBER_LOAD_HOOKS !== null) {\n for (var hookName in EMBER_LOAD_HOOKS) {\n if (!Object.prototype.hasOwnProperty.call(EMBER_LOAD_HOOKS, hookName)) continue;\n var hooks = EMBER_LOAD_HOOKS[hookName];\n\n if (Array.isArray(hooks)) {\n ENV.EMBER_LOAD_HOOKS[hookName] = hooks.filter(function (hook) {\n return typeof hook === 'function';\n });\n }\n }\n }\n\n var FEATURES = EmberENV.FEATURES;\n\n if (typeof FEATURES === 'object' && FEATURES !== null) {\n for (var feature in FEATURES) {\n if (!Object.prototype.hasOwnProperty.call(FEATURES, feature)) continue;\n ENV.FEATURES[feature] = FEATURES[feature] === true;\n }\n }\n\n if (true\n /* DEBUG */\n ) {\n ENV._DEBUG_RENDER_TREE = true;\n }\n })(global$1.EmberENV);\n\n function getENV() {\n return ENV;\n }\n});","define(\"@ember/-internals/utils/index\", [\"exports\", \"@glimmer/util\", \"@ember/debug\"], function (_exports, _util, _debug) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.enumerableSymbol = enumerableSymbol;\n _exports.isInternalSymbol = isInternalSymbol;\n _exports.dictionary = makeDictionary;\n _exports.uuid = uuid;\n _exports.generateGuid = generateGuid;\n _exports.guidFor = guidFor;\n _exports.intern = intern;\n _exports.wrap = wrap;\n _exports.observerListenerMetaFor = observerListenerMetaFor;\n _exports.setObservers = setObservers;\n _exports.setListeners = setListeners;\n _exports.inspect = inspect;\n _exports.lookupDescriptor = lookupDescriptor;\n _exports.canInvoke = canInvoke;\n _exports.tryInvoke = tryInvoke;\n _exports.makeArray = makeArray;\n _exports.getName = getName;\n _exports.setName = setName;\n _exports.toString = toString;\n _exports.isObject = isObject;\n _exports.isProxy = isProxy;\n _exports.setProxy = setProxy;\n _exports.setEmberArray = setEmberArray;\n _exports.isEmberArray = isEmberArray;\n _exports.setWithMandatorySetter = _exports.teardownMandatorySetter = _exports.setupMandatorySetter = _exports.Cache = _exports.HAS_NATIVE_PROXY = _exports.HAS_NATIVE_SYMBOL = _exports.ROOT = _exports.checkHasSuper = _exports.GUID_KEY = _exports.getDebugName = _exports.symbol = void 0;\n\n /**\n Strongly hint runtimes to intern the provided string.\n \n When do I need to use this function?\n \n For the most part, never. Pre-mature optimization is bad, and often the\n runtime does exactly what you need it to, and more often the trade-off isn't\n worth it.\n \n Why?\n \n Runtimes store strings in at least 2 different representations:\n Ropes and Symbols (interned strings). The Rope provides a memory efficient\n data-structure for strings created from concatenation or some other string\n manipulation like splitting.\n \n Unfortunately checking equality of different ropes can be quite costly as\n runtimes must resort to clever string comparison algorithms. These\n algorithms typically cost in proportion to the length of the string.\n Luckily, this is where the Symbols (interned strings) shine. As Symbols are\n unique by their string content, equality checks can be done by pointer\n comparison.\n \n How do I know if my string is a rope or symbol?\n \n Typically (warning general sweeping statement, but truthy in runtimes at\n present) static strings created as part of the JS source are interned.\n Strings often used for comparisons can be interned at runtime if some\n criteria are met. One of these criteria can be the size of the entire rope.\n For example, in chrome 38 a rope longer then 12 characters will not\n intern, nor will segments of that rope.\n \n Some numbers: http://jsperf.com/eval-vs-keys/8\n \n Known Trick™\n \n @private\n @return {String} interned version of the provided string\n */\n function intern(str) {\n var obj = {};\n obj[str] = 1;\n\n for (var key in obj) {\n if (key === str) {\n return key;\n }\n }\n\n return str;\n }\n /**\n Returns whether Type(value) is Object.\n \n Useful for checking whether a value is a valid WeakMap key.\n \n Refs: https://tc39.github.io/ecma262/#sec-typeof-operator-runtime-semantics-evaluation\n https://tc39.github.io/ecma262/#sec-weakmap.prototype.set\n \n @private\n @function isObject\n */\n\n\n function isObject(value) {\n return value !== null && (typeof value === 'object' || typeof value === 'function');\n }\n /**\n @module @ember/object\n */\n\n /**\n Previously we used `Ember.$.uuid`, however `$.uuid` has been removed from\n jQuery master. We'll just bootstrap our own uuid now.\n \n @private\n @return {Number} the uuid\n */\n\n\n var _uuid = 0;\n /**\n Generates a universally unique identifier. This method\n is used internally by Ember for assisting with\n the generation of GUID's and other unique identifiers.\n \n @public\n @return {Number} [description]\n */\n\n function uuid() {\n return ++_uuid;\n }\n /**\n Prefix used for guids through out Ember.\n @private\n @property GUID_PREFIX\n @for Ember\n @type String\n @final\n */\n\n\n var GUID_PREFIX = 'ember'; // Used for guid generation...\n\n var OBJECT_GUIDS = new WeakMap();\n var NON_OBJECT_GUIDS = new Map();\n /**\n A unique key used to assign guids and other private metadata to objects.\n If you inspect an object in your browser debugger you will often see these.\n They can be safely ignored.\n \n On browsers that support it, these properties are added with enumeration\n disabled so they won't show up when you iterate over your properties.\n \n @private\n @property GUID_KEY\n @for Ember\n @type String\n @final\n */\n\n var GUID_KEY = intern(\"__ember\" + Date.now());\n /**\n Generates a new guid, optionally saving the guid to the object that you\n pass in. You will rarely need to use this method. Instead you should\n call `guidFor(obj)`, which return an existing guid if available.\n \n @private\n @method generateGuid\n @static\n @for @ember/object/internals\n @param {Object} [obj] Object the guid will be used for. If passed in, the guid will\n be saved on the object and reused whenever you pass the same object\n again.\n \n If no object is passed, just generate a new guid.\n @param {String} [prefix] Prefix to place in front of the guid. Useful when you want to\n separate the guid into separate namespaces.\n @return {String} the guid\n */\n\n _exports.GUID_KEY = GUID_KEY;\n\n function generateGuid(obj, prefix) {\n if (prefix === void 0) {\n prefix = GUID_PREFIX;\n }\n\n var guid = prefix + uuid();\n\n if (isObject(obj)) {\n OBJECT_GUIDS.set(obj, guid);\n }\n\n return guid;\n }\n /**\n Returns a unique id for the object. If the object does not yet have a guid,\n one will be assigned to it. You can call this on any object,\n `EmberObject`-based or not.\n \n You can also use this method on DOM Element objects.\n \n @public\n @static\n @method guidFor\n @for @ember/object/internals\n @param {Object} obj any object, string, number, Element, or primitive\n @return {String} the unique guid for this instance.\n */\n\n\n function guidFor(value) {\n var guid;\n\n if (isObject(value)) {\n guid = OBJECT_GUIDS.get(value);\n\n if (guid === undefined) {\n guid = GUID_PREFIX + uuid();\n OBJECT_GUIDS.set(value, guid);\n }\n } else {\n guid = NON_OBJECT_GUIDS.get(value);\n\n if (guid === undefined) {\n var type = typeof value;\n\n if (type === 'string') {\n guid = 'st' + uuid();\n } else if (type === 'number') {\n guid = 'nu' + uuid();\n } else if (type === 'symbol') {\n guid = 'sy' + uuid();\n } else {\n guid = '(' + value + ')';\n }\n\n NON_OBJECT_GUIDS.set(value, guid);\n }\n }\n\n return guid;\n }\n\n var HAS_NATIVE_SYMBOL = function () {\n if (typeof Symbol !== 'function') {\n return false;\n }\n\n return typeof Symbol() === 'symbol';\n }();\n\n _exports.HAS_NATIVE_SYMBOL = HAS_NATIVE_SYMBOL;\n var GENERATED_SYMBOLS = [];\n\n function isInternalSymbol(possibleSymbol) {\n return GENERATED_SYMBOLS.indexOf(possibleSymbol) !== -1;\n } // Some legacy symbols still need to be enumerable for a variety of reasons.\n // This code exists for that, and as a fallback in IE11. In general, prefer\n // `symbol` below when creating a new symbol.\n\n\n function enumerableSymbol(debugName) {\n // TODO: Investigate using platform symbols, but we do not\n // want to require non-enumerability for this API, which\n // would introduce a large cost.\n var id = GUID_KEY + Math.floor(Math.random() * Date.now());\n var symbol = intern(\"__\" + debugName + id + \"__\");\n\n if (true\n /* DEBUG */\n ) {\n GENERATED_SYMBOLS.push(symbol);\n }\n\n return symbol;\n }\n\n var symbol = HAS_NATIVE_SYMBOL ? Symbol : enumerableSymbol; // the delete is meant to hint at runtimes that this object should remain in\n // dictionary mode. This is clearly a runtime specific hack, but currently it\n // appears worthwhile in some usecases. Please note, these deletes do increase\n // the cost of creation dramatically over a plain Object.create. And as this\n // only makes sense for long-lived dictionaries that aren't instantiated often.\n\n _exports.symbol = symbol;\n\n function makeDictionary(parent) {\n var dict = Object.create(parent);\n dict['_dict'] = null;\n delete dict['_dict'];\n return dict;\n }\n\n var getDebugName;\n\n if (true\n /* DEBUG */\n ) {\n var getFunctionName = function getFunctionName(fn) {\n var functionName = fn.name;\n\n if (functionName === undefined) {\n var match = Function.prototype.toString.call(fn).match(/function (\\w+)\\s*\\(/);\n functionName = match && match[1] || '';\n }\n\n return functionName.replace(/^bound /, '');\n };\n\n var getObjectName = function getObjectName(obj) {\n var name;\n var className;\n\n if (obj.constructor && obj.constructor !== Object) {\n className = getFunctionName(obj.constructor);\n }\n\n if ('toString' in obj && obj.toString !== Object.prototype.toString && obj.toString !== Function.prototype.toString) {\n name = obj.toString();\n } // If the class has a decent looking name, and the `toString` is one of the\n // default Ember toStrings, replace the constructor portion of the toString\n // with the class name. We check the length of the class name to prevent doing\n // this when the value is minified.\n\n\n if (name && name.match(/<.*:ember\\d+>/) && className && className[0] !== '_' && className.length > 2 && className !== 'Class') {\n return name.replace(/<.*:/, \"<\" + className + \":\");\n }\n\n return name || className;\n };\n\n var getPrimitiveName = function getPrimitiveName(value) {\n return String(value);\n };\n\n getDebugName = function getDebugName(value) {\n if (typeof value === 'function') {\n return getFunctionName(value) || \"(unknown function)\";\n } else if (typeof value === 'object' && value !== null) {\n return getObjectName(value) || \"(unknown object)\";\n } else {\n return getPrimitiveName(value);\n }\n };\n }\n\n var getDebugName$1 = getDebugName;\n _exports.getDebugName = getDebugName$1;\n var HAS_SUPER_PATTERN = /\\.(_super|call\\(this|apply\\(this)/;\n var fnToString = Function.prototype.toString;\n\n var checkHasSuper = function () {\n var sourceAvailable = fnToString.call(function () {\n return this;\n }).indexOf('return this') > -1;\n\n if (sourceAvailable) {\n return function checkHasSuper(func) {\n return HAS_SUPER_PATTERN.test(fnToString.call(func));\n };\n }\n\n return function checkHasSuper() {\n return true;\n };\n }();\n\n _exports.checkHasSuper = checkHasSuper;\n var HAS_SUPER_MAP = new WeakMap();\n var ROOT = Object.freeze(function () {});\n _exports.ROOT = ROOT;\n HAS_SUPER_MAP.set(ROOT, false);\n\n function hasSuper(func) {\n var hasSuper = HAS_SUPER_MAP.get(func);\n\n if (hasSuper === undefined) {\n hasSuper = checkHasSuper(func);\n HAS_SUPER_MAP.set(func, hasSuper);\n }\n\n return hasSuper;\n }\n\n var ObserverListenerMeta = function ObserverListenerMeta() {\n this.listeners = undefined;\n this.observers = undefined;\n };\n\n var OBSERVERS_LISTENERS_MAP = new WeakMap();\n\n function createObserverListenerMetaFor(fn) {\n var meta = OBSERVERS_LISTENERS_MAP.get(fn);\n\n if (meta === undefined) {\n meta = new ObserverListenerMeta();\n OBSERVERS_LISTENERS_MAP.set(fn, meta);\n }\n\n return meta;\n }\n\n function observerListenerMetaFor(fn) {\n return OBSERVERS_LISTENERS_MAP.get(fn);\n }\n\n function setObservers(func, observers) {\n var meta = createObserverListenerMetaFor(func);\n meta.observers = observers;\n }\n\n function setListeners(func, listeners) {\n var meta = createObserverListenerMetaFor(func);\n meta.listeners = listeners;\n }\n\n var IS_WRAPPED_FUNCTION_SET = new _util._WeakSet();\n /**\n Wraps the passed function so that `this._super` will point to the superFunc\n when the function is invoked. This is the primitive we use to implement\n calls to super.\n \n @private\n @method wrap\n @for Ember\n @param {Function} func The function to call\n @param {Function} superFunc The super function.\n @return {Function} wrapped function.\n */\n\n function wrap(func, superFunc) {\n if (!hasSuper(func)) {\n return func;\n } // ensure an unwrapped super that calls _super is wrapped with a terminal _super\n\n\n if (!IS_WRAPPED_FUNCTION_SET.has(superFunc) && hasSuper(superFunc)) {\n return _wrap(func, _wrap(superFunc, ROOT));\n }\n\n return _wrap(func, superFunc);\n }\n\n function _wrap(func, superFunc) {\n function superWrapper() {\n var orig = this._super;\n this._super = superFunc;\n var ret = func.apply(this, arguments);\n this._super = orig;\n return ret;\n }\n\n IS_WRAPPED_FUNCTION_SET.add(superWrapper);\n var meta = OBSERVERS_LISTENERS_MAP.get(func);\n\n if (meta !== undefined) {\n OBSERVERS_LISTENERS_MAP.set(superWrapper, meta);\n }\n\n return superWrapper;\n }\n\n var objectToString = Object.prototype.toString;\n var functionToString = Function.prototype.toString;\n var isArray = Array.isArray;\n var objectKeys = Object.keys;\n var stringify = JSON.stringify;\n var LIST_LIMIT = 100;\n var DEPTH_LIMIT = 4;\n var SAFE_KEY = /^[\\w$]+$/;\n /**\n @module @ember/debug\n */\n\n /**\n Convenience method to inspect an object. This method will attempt to\n convert the object into a useful string description.\n \n It is a pretty simple implementation. If you want something more robust,\n use something like JSDump: https://github.com/NV/jsDump\n \n @method inspect\n @static\n @param {Object} obj The object you want to inspect.\n @return {String} A description of the object\n @since 1.4.0\n @private\n */\n\n function inspect(obj) {\n // detect Node util.inspect call inspect(depth: number, opts: object)\n if (typeof obj === 'number' && arguments.length === 2) {\n return this;\n }\n\n return inspectValue(obj, 0);\n }\n\n function inspectValue(value, depth, seen) {\n var valueIsArray = false;\n\n switch (typeof value) {\n case 'undefined':\n return 'undefined';\n\n case 'object':\n if (value === null) return 'null';\n\n if (isArray(value)) {\n valueIsArray = true;\n break;\n } // is toString Object.prototype.toString or undefined then traverse\n\n\n if (value.toString === objectToString || value.toString === undefined) {\n break;\n } // custom toString\n\n\n return value.toString();\n\n case 'function':\n return value.toString === functionToString ? value.name ? \"[Function:\" + value.name + \"]\" : \"[Function]\" : value.toString();\n\n case 'string':\n return stringify(value);\n\n case 'symbol':\n case 'boolean':\n case 'number':\n default:\n return value.toString();\n }\n\n if (seen === undefined) {\n seen = new _util._WeakSet();\n } else {\n if (seen.has(value)) return \"[Circular]\";\n }\n\n seen.add(value);\n return valueIsArray ? inspectArray(value, depth + 1, seen) : inspectObject(value, depth + 1, seen);\n }\n\n function inspectKey(key) {\n return SAFE_KEY.test(key) ? key : stringify(key);\n }\n\n function inspectObject(obj, depth, seen) {\n if (depth > DEPTH_LIMIT) {\n return '[Object]';\n }\n\n var s = '{';\n var keys = objectKeys(obj);\n\n for (var i = 0; i < keys.length; i++) {\n s += i === 0 ? ' ' : ', ';\n\n if (i >= LIST_LIMIT) {\n s += \"... \" + (keys.length - LIST_LIMIT) + \" more keys\";\n break;\n }\n\n var key = keys[i];\n s += inspectKey(key) + ': ' + inspectValue(obj[key], depth, seen);\n }\n\n s += ' }';\n return s;\n }\n\n function inspectArray(arr, depth, seen) {\n if (depth > DEPTH_LIMIT) {\n return '[Array]';\n }\n\n var s = '[';\n\n for (var i = 0; i < arr.length; i++) {\n s += i === 0 ? ' ' : ', ';\n\n if (i >= LIST_LIMIT) {\n s += \"... \" + (arr.length - LIST_LIMIT) + \" more items\";\n break;\n }\n\n s += inspectValue(arr[i], depth, seen);\n }\n\n s += ' ]';\n return s;\n }\n\n function lookupDescriptor(obj, keyName) {\n var current = obj;\n\n do {\n var descriptor = Object.getOwnPropertyDescriptor(current, keyName);\n\n if (descriptor !== undefined) {\n return descriptor;\n }\n\n current = Object.getPrototypeOf(current);\n } while (current !== null);\n\n return null;\n }\n /**\n Checks to see if the `methodName` exists on the `obj`.\n \n ```javascript\n let foo = { bar: function() { return 'bar'; }, baz: null };\n \n Ember.canInvoke(foo, 'bar'); // true\n Ember.canInvoke(foo, 'baz'); // false\n Ember.canInvoke(foo, 'bat'); // false\n ```\n \n @method canInvoke\n @for Ember\n @param {Object} obj The object to check for the method\n @param {String} methodName The method name to check for\n @return {Boolean}\n @private\n */\n\n\n function canInvoke(obj, methodName) {\n return obj !== null && obj !== undefined && typeof obj[methodName] === 'function';\n }\n /**\n @module @ember/utils\n */\n\n /**\n Checks to see if the `methodName` exists on the `obj`,\n and if it does, invokes it with the arguments passed.\n \n ```javascript\n import { tryInvoke } from '@ember/utils';\n \n let d = new Date('03/15/2013');\n \n tryInvoke(d, 'getTime'); // 1363320000000\n tryInvoke(d, 'setFullYear', [2014]); // 1394856000000\n tryInvoke(d, 'noSuchMethod', [2014]); // undefined\n ```\n \n @method tryInvoke\n @for @ember/utils\n @static\n @param {Object} obj The object to check for the method\n @param {String} methodName The method name to check for\n @param {Array} [args] The arguments to pass to the method\n @return {*} the return value of the invoked method or undefined if it cannot be invoked\n @public\n @deprecated Use Javascript's optional chaining instead.\n */\n\n\n function tryInvoke(obj, methodName, args) {\n (true && !(false) && (0, _debug.deprecate)(\"Use of tryInvoke is deprecated. Instead, consider using JavaScript's optional chaining.\", false, {\n id: 'ember-utils.try-invoke',\n until: '4.0.0',\n for: 'ember-source',\n since: {\n enabled: '3.24.0'\n },\n url: 'https://deprecations.emberjs.com/v3.x#toc_ember-utils-try-invoke'\n }));\n\n if (canInvoke(obj, methodName)) {\n var method = obj[methodName];\n return method.apply(obj, args);\n }\n }\n\n var isArray$1 = Array.isArray;\n\n function makeArray(obj) {\n if (obj === null || obj === undefined) {\n return [];\n }\n\n return isArray$1(obj) ? obj : [obj];\n }\n\n var NAMES = new WeakMap();\n\n function setName(obj, name) {\n if (isObject(obj)) NAMES.set(obj, name);\n }\n\n function getName(obj) {\n return NAMES.get(obj);\n }\n\n var objectToString$1 = Object.prototype.toString;\n\n function isNone(obj) {\n return obj === null || obj === undefined;\n }\n /*\n A `toString` util function that supports objects without a `toString`\n method, e.g. an object created with `Object.create(null)`.\n */\n\n\n function toString(obj) {\n if (typeof obj === 'string') {\n return obj;\n }\n\n if (null === obj) return 'null';\n if (undefined === obj) return 'undefined';\n\n if (Array.isArray(obj)) {\n // Reimplement Array.prototype.join according to spec (22.1.3.13)\n // Changing ToString(element) with this safe version of ToString.\n var r = '';\n\n for (var k = 0; k < obj.length; k++) {\n if (k > 0) {\n r += ',';\n }\n\n if (!isNone(obj[k])) {\n r += toString(obj[k]);\n }\n }\n\n return r;\n }\n\n if (typeof obj.toString === 'function') {\n return obj.toString();\n }\n\n return objectToString$1.call(obj);\n }\n\n var HAS_NATIVE_PROXY = typeof Proxy === 'function';\n _exports.HAS_NATIVE_PROXY = HAS_NATIVE_PROXY;\n var PROXIES = new _util._WeakSet();\n\n function isProxy(value) {\n if (isObject(value)) {\n return PROXIES.has(value);\n }\n\n return false;\n }\n\n function setProxy(object) {\n if (isObject(object)) {\n PROXIES.add(object);\n }\n }\n\n var Cache = /*#__PURE__*/function () {\n function Cache(limit, func, store) {\n this.limit = limit;\n this.func = func;\n this.store = store;\n this.size = 0;\n this.misses = 0;\n this.hits = 0;\n this.store = store || new Map();\n }\n\n var _proto = Cache.prototype;\n\n _proto.get = function get(key) {\n if (this.store.has(key)) {\n this.hits++;\n return this.store.get(key);\n } else {\n this.misses++;\n return this.set(key, this.func(key));\n }\n };\n\n _proto.set = function set(key, value) {\n if (this.limit > this.size) {\n this.size++;\n this.store.set(key, value);\n }\n\n return value;\n };\n\n _proto.purge = function purge() {\n this.store.clear();\n this.size = 0;\n this.hits = 0;\n this.misses = 0;\n };\n\n return Cache;\n }();\n\n _exports.Cache = Cache;\n var EMBER_ARRAYS = new _util._WeakSet();\n\n function setEmberArray(obj) {\n EMBER_ARRAYS.add(obj);\n }\n\n function isEmberArray(obj) {\n return EMBER_ARRAYS.has(obj);\n }\n\n var setupMandatorySetter;\n _exports.setupMandatorySetter = setupMandatorySetter;\n var teardownMandatorySetter;\n _exports.teardownMandatorySetter = teardownMandatorySetter;\n var setWithMandatorySetter;\n _exports.setWithMandatorySetter = setWithMandatorySetter;\n\n function isElementKey(key) {\n return typeof key === 'number' ? isPositiveInt(key) : isStringInt(key);\n }\n\n function isStringInt(str) {\n var num = parseInt(str, 10);\n return isPositiveInt(num) && str === String(num);\n }\n\n function isPositiveInt(num) {\n return num >= 0 && num % 1 === 0;\n }\n\n if (true\n /* DEBUG */\n ) {\n var SEEN_TAGS = new _util._WeakSet();\n var MANDATORY_SETTERS = new WeakMap();\n\n var _propertyIsEnumerable = function _propertyIsEnumerable(obj, key) {\n return Object.prototype.propertyIsEnumerable.call(obj, key);\n };\n\n _exports.setupMandatorySetter = setupMandatorySetter = function setupMandatorySetter(tag, obj, keyName) {\n if (SEEN_TAGS.has(tag)) {\n return;\n }\n\n SEEN_TAGS.add(tag);\n\n if (Array.isArray(obj) && isElementKey(keyName)) {\n return;\n }\n\n var desc = lookupDescriptor(obj, keyName) || {};\n\n if (desc.get || desc.set) {\n // if it has a getter or setter, we can't install the mandatory setter.\n // native setters are allowed, we have to assume that they will resolve\n // to tracked properties.\n return;\n }\n\n if (desc && (!desc.configurable || !desc.writable)) {\n // if it isn't writable anyways, so we shouldn't provide the setter.\n // if it isn't configurable, we can't overwrite it anyways.\n return;\n }\n\n var setters = MANDATORY_SETTERS.get(obj);\n\n if (setters === undefined) {\n setters = {};\n MANDATORY_SETTERS.set(obj, setters);\n }\n\n desc.hadOwnProperty = Object.hasOwnProperty.call(obj, keyName);\n setters[keyName] = desc;\n Object.defineProperty(obj, keyName, {\n configurable: true,\n enumerable: _propertyIsEnumerable(obj, keyName),\n get: function get() {\n if (desc.get) {\n return desc.get.call(this);\n } else {\n return desc.value;\n }\n },\n set: function set(value) {\n (true && !(false) && (0, _debug.assert)(\"You attempted to update \" + this + \".\" + String(keyName) + \" to \\\"\" + String(value) + \"\\\", but it is being tracked by a tracking context, such as a template, computed property, or observer. In order to make sure the context updates properly, you must invalidate the property when updating it. You can mark the property as `@tracked`, or use `@ember/object#set` to do this.\"));\n }\n });\n };\n\n _exports.teardownMandatorySetter = teardownMandatorySetter = function teardownMandatorySetter(obj, keyName) {\n var setters = MANDATORY_SETTERS.get(obj);\n\n if (setters !== undefined && setters[keyName] !== undefined) {\n Object.defineProperty(obj, keyName, setters[keyName]);\n setters[keyName] = undefined;\n }\n };\n\n _exports.setWithMandatorySetter = setWithMandatorySetter = function setWithMandatorySetter(obj, keyName, value) {\n var setters = MANDATORY_SETTERS.get(obj);\n\n if (setters !== undefined && setters[keyName] !== undefined) {\n var setter = setters[keyName];\n\n if (setter.set) {\n setter.set.call(obj, value);\n } else {\n setter.value = value; // If the object didn't have own property before, it would have changed\n // the enumerability after setting the value the first time.\n\n if (!setter.hadOwnProperty) {\n var desc = lookupDescriptor(obj, keyName);\n desc.enumerable = true;\n Object.defineProperty(obj, keyName, desc);\n }\n }\n } else {\n obj[keyName] = value;\n }\n };\n }\n /*\n This package will be eagerly parsed and should have no dependencies on external\n packages.\n \n It is intended to be used to share utility methods that will be needed\n by every Ember application (and is **not** a dumping ground of useful utilities).\n \n Utility methods that are needed in < 80% of cases should be placed\n elsewhere (so they can be lazily evaluated / parsed).\n */\n\n});","define(\"@ember/canary-features/index\", [\"exports\", \"@ember/-internals/environment\", \"@ember/polyfills\"], function (_exports, _environment, _polyfills) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.isEnabled = isEnabled;\n _exports.EMBER_DYNAMIC_HELPERS_AND_MODIFIERS = _exports.EMBER_STRICT_MODE = _exports.EMBER_MODERNIZED_BUILT_IN_COMPONENTS = _exports.EMBER_GLIMMER_INVOKE_HELPER = _exports.EMBER_GLIMMER_HELPER_MANAGER = _exports.EMBER_NAMED_BLOCKS = _exports.EMBER_IMPROVED_INSTRUMENTATION = _exports.EMBER_LIBRARIES_ISREGISTERED = _exports.FEATURES = _exports.DEFAULT_FEATURES = void 0;\n\n /**\n Set `EmberENV.FEATURES` in your application's `config/environment.js` file\n to enable canary features in your application.\n \n See the [feature flag guide](https://guides.emberjs.com/release/configuring-ember/feature-flags/)\n for more details.\n \n @module @ember/canary-features\n @public\n */\n var DEFAULT_FEATURES = {\n EMBER_LIBRARIES_ISREGISTERED: false,\n EMBER_IMPROVED_INSTRUMENTATION: false,\n EMBER_NAMED_BLOCKS: true,\n EMBER_GLIMMER_HELPER_MANAGER: true,\n EMBER_GLIMMER_INVOKE_HELPER: true,\n EMBER_MODERNIZED_BUILT_IN_COMPONENTS: true,\n EMBER_STRICT_MODE: true,\n EMBER_DYNAMIC_HELPERS_AND_MODIFIERS: true\n };\n /**\n The hash of enabled Canary features. Add to this, any canary features\n before creating your application.\n \n @class FEATURES\n @static\n @since 1.1.0\n @public\n */\n\n _exports.DEFAULT_FEATURES = DEFAULT_FEATURES;\n var FEATURES = (0, _polyfills.assign)(DEFAULT_FEATURES, _environment.ENV.FEATURES);\n /**\n Determine whether the specified `feature` is enabled. Used by Ember's\n build tools to exclude experimental features from beta/stable builds.\n \n You can define the following configuration options:\n \n * `EmberENV.ENABLE_OPTIONAL_FEATURES` - enable any features that have not been explicitly\n enabled/disabled.\n \n @method isEnabled\n @param {String} feature The feature to check\n @return {Boolean}\n @since 1.1.0\n @public\n */\n\n _exports.FEATURES = FEATURES;\n\n function isEnabled(feature) {\n var value = FEATURES[feature];\n\n if (value === true || value === false) {\n return value;\n } else if (_environment.ENV.ENABLE_OPTIONAL_FEATURES) {\n return true;\n } else {\n return false;\n }\n }\n\n function featureValue(value) {\n if (_environment.ENV.ENABLE_OPTIONAL_FEATURES && value === null) {\n return true;\n }\n\n return value;\n }\n\n var EMBER_LIBRARIES_ISREGISTERED = featureValue(FEATURES.EMBER_LIBRARIES_ISREGISTERED);\n _exports.EMBER_LIBRARIES_ISREGISTERED = EMBER_LIBRARIES_ISREGISTERED;\n var EMBER_IMPROVED_INSTRUMENTATION = featureValue(FEATURES.EMBER_IMPROVED_INSTRUMENTATION);\n _exports.EMBER_IMPROVED_INSTRUMENTATION = EMBER_IMPROVED_INSTRUMENTATION;\n var EMBER_NAMED_BLOCKS = featureValue(FEATURES.EMBER_NAMED_BLOCKS);\n _exports.EMBER_NAMED_BLOCKS = EMBER_NAMED_BLOCKS;\n var EMBER_GLIMMER_HELPER_MANAGER = featureValue(FEATURES.EMBER_GLIMMER_HELPER_MANAGER);\n _exports.EMBER_GLIMMER_HELPER_MANAGER = EMBER_GLIMMER_HELPER_MANAGER;\n var EMBER_GLIMMER_INVOKE_HELPER = featureValue(FEATURES.EMBER_GLIMMER_INVOKE_HELPER);\n _exports.EMBER_GLIMMER_INVOKE_HELPER = EMBER_GLIMMER_INVOKE_HELPER;\n var EMBER_MODERNIZED_BUILT_IN_COMPONENTS = featureValue(FEATURES.EMBER_MODERNIZED_BUILT_IN_COMPONENTS);\n _exports.EMBER_MODERNIZED_BUILT_IN_COMPONENTS = EMBER_MODERNIZED_BUILT_IN_COMPONENTS;\n var EMBER_STRICT_MODE = featureValue(FEATURES.EMBER_STRICT_MODE);\n _exports.EMBER_STRICT_MODE = EMBER_STRICT_MODE;\n var EMBER_DYNAMIC_HELPERS_AND_MODIFIERS = featureValue(FEATURES.EMBER_DYNAMIC_HELPERS_AND_MODIFIERS);\n _exports.EMBER_DYNAMIC_HELPERS_AND_MODIFIERS = EMBER_DYNAMIC_HELPERS_AND_MODIFIERS;\n});","define(\"@ember/debug/container-debug-adapter\", [\"exports\", \"@ember/-internals/extension-support\"], function (_exports, _extensionSupport) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n Object.defineProperty(_exports, \"default\", {\n enumerable: true,\n get: function get() {\n return _extensionSupport.ContainerDebugAdapter;\n }\n });\n});","define(\"@ember/debug/data-adapter\", [\"exports\", \"@ember/-internals/extension-support\"], function (_exports, _extensionSupport) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n Object.defineProperty(_exports, \"default\", {\n enumerable: true,\n get: function get() {\n return _extensionSupport.DataAdapter;\n }\n });\n});","define(\"@ember/debug/index\", [\"exports\", \"@ember/-internals/browser-environment\", \"@ember/error\", \"@ember/debug/lib/deprecate\", \"@ember/debug/lib/testing\", \"@ember/debug/lib/warn\", \"@ember/-internals/utils\", \"@ember/debug/lib/capture-render-tree\"], function (_exports, _browserEnvironment, _error, _deprecate2, _testing, _warn2, _utils, _captureRenderTree) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n Object.defineProperty(_exports, \"registerDeprecationHandler\", {\n enumerable: true,\n get: function get() {\n return _deprecate2.registerHandler;\n }\n });\n Object.defineProperty(_exports, \"isTesting\", {\n enumerable: true,\n get: function get() {\n return _testing.isTesting;\n }\n });\n Object.defineProperty(_exports, \"setTesting\", {\n enumerable: true,\n get: function get() {\n return _testing.setTesting;\n }\n });\n Object.defineProperty(_exports, \"registerWarnHandler\", {\n enumerable: true,\n get: function get() {\n return _warn2.registerHandler;\n }\n });\n Object.defineProperty(_exports, \"inspect\", {\n enumerable: true,\n get: function get() {\n return _utils.inspect;\n }\n });\n Object.defineProperty(_exports, \"captureRenderTree\", {\n enumerable: true,\n get: function get() {\n return _captureRenderTree.default;\n }\n });\n _exports._warnIfUsingStrippedFeatureFlags = _exports.getDebugFunction = _exports.setDebugFunction = _exports.deprecateFunc = _exports.runInDebug = _exports.debugFreeze = _exports.debugSeal = _exports.deprecate = _exports.debug = _exports.warn = _exports.info = _exports.assert = void 0;\n\n // These are the default production build versions:\n var noop = function noop() {};\n\n var assert = noop;\n _exports.assert = assert;\n var info = noop;\n _exports.info = info;\n var warn = noop;\n _exports.warn = warn;\n var debug = noop;\n _exports.debug = debug;\n var deprecate = noop;\n _exports.deprecate = deprecate;\n var debugSeal = noop;\n _exports.debugSeal = debugSeal;\n var debugFreeze = noop;\n _exports.debugFreeze = debugFreeze;\n var runInDebug = noop;\n _exports.runInDebug = runInDebug;\n var setDebugFunction = noop;\n _exports.setDebugFunction = setDebugFunction;\n var getDebugFunction = noop;\n _exports.getDebugFunction = getDebugFunction;\n\n var deprecateFunc = function deprecateFunc() {\n return arguments[arguments.length - 1];\n };\n\n _exports.deprecateFunc = deprecateFunc;\n\n if (true\n /* DEBUG */\n ) {\n _exports.setDebugFunction = setDebugFunction = function setDebugFunction(type, callback) {\n switch (type) {\n case 'assert':\n return _exports.assert = assert = callback;\n\n case 'info':\n return _exports.info = info = callback;\n\n case 'warn':\n return _exports.warn = warn = callback;\n\n case 'debug':\n return _exports.debug = debug = callback;\n\n case 'deprecate':\n return _exports.deprecate = deprecate = callback;\n\n case 'debugSeal':\n return _exports.debugSeal = debugSeal = callback;\n\n case 'debugFreeze':\n return _exports.debugFreeze = debugFreeze = callback;\n\n case 'runInDebug':\n return _exports.runInDebug = runInDebug = callback;\n\n case 'deprecateFunc':\n return _exports.deprecateFunc = deprecateFunc = callback;\n }\n };\n\n _exports.getDebugFunction = getDebugFunction = function getDebugFunction(type) {\n switch (type) {\n case 'assert':\n return assert;\n\n case 'info':\n return info;\n\n case 'warn':\n return warn;\n\n case 'debug':\n return debug;\n\n case 'deprecate':\n return deprecate;\n\n case 'debugSeal':\n return debugSeal;\n\n case 'debugFreeze':\n return debugFreeze;\n\n case 'runInDebug':\n return runInDebug;\n\n case 'deprecateFunc':\n return deprecateFunc;\n }\n };\n }\n /**\n @module @ember/debug\n */\n\n\n if (true\n /* DEBUG */\n ) {\n /**\n Verify that a certain expectation is met, or throw a exception otherwise.\n This is useful for communicating assumptions in the code to other human\n readers as well as catching bugs that accidentally violates these\n expectations.\n Assertions are removed from production builds, so they can be freely added\n for documentation and debugging purposes without worries of incuring any\n performance penalty. However, because of that, they should not be used for\n checks that could reasonably fail during normal usage. Furthermore, care\n should be taken to avoid accidentally relying on side-effects produced from\n evaluating the condition itself, since the code will not run in production.\n ```javascript\n import { assert } from '@ember/debug';\n // Test for truthiness\n assert('Must pass a string', typeof str === 'string');\n // Fail unconditionally\n assert('This code path should never be run');\n ```\n @method assert\n @static\n @for @ember/debug\n @param {String} description Describes the expectation. This will become the\n text of the Error thrown if the assertion fails.\n @param {any} condition Must be truthy for the assertion to pass. If\n falsy, an exception will be thrown.\n @public\n @since 1.0.0\n */\n setDebugFunction('assert', function assert(desc, test) {\n if (!test) {\n throw new _error.default(\"Assertion Failed: \" + desc);\n }\n });\n /**\n Display a debug notice.\n Calls to this function are not invoked in production builds.\n ```javascript\n import { debug } from '@ember/debug';\n debug('I\\'m a debug notice!');\n ```\n @method debug\n @for @ember/debug\n @static\n @param {String} message A debug message to display.\n @public\n */\n\n setDebugFunction('debug', function debug(message) {\n /* eslint-disable no-console */\n if (console.debug) {\n console.debug(\"DEBUG: \" + message);\n } else {\n console.log(\"DEBUG: \" + message);\n }\n /* eslint-ensable no-console */\n\n });\n /**\n Display an info notice.\n Calls to this function are removed from production builds, so they can be\n freely added for documentation and debugging purposes without worries of\n incuring any performance penalty.\n @method info\n @private\n */\n\n setDebugFunction('info', function info() {\n var _console;\n\n (_console = console).info.apply(_console, arguments);\n /* eslint-disable-line no-console */\n\n });\n /**\n @module @ember/debug\n @public\n */\n\n /**\n Alias an old, deprecated method with its new counterpart.\n Display a deprecation warning with the provided message and a stack trace\n (Chrome and Firefox only) when the assigned method is called.\n Calls to this function are removed from production builds, so they can be\n freely added for documentation and debugging purposes without worries of\n incuring any performance penalty.\n ```javascript\n import { deprecateFunc } from '@ember/debug';\n Ember.oldMethod = deprecateFunc('Please use the new, updated method', options, Ember.newMethod);\n ```\n @method deprecateFunc\n @static\n @for @ember/debug\n @param {String} message A description of the deprecation.\n @param {Object} [options] The options object for `deprecate`.\n @param {Function} func The new function called to replace its deprecated counterpart.\n @return {Function} A new function that wraps the original function with a deprecation warning\n @private\n */\n\n setDebugFunction('deprecateFunc', function deprecateFunc() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 3) {\n var message = args[0],\n options = args[1],\n func = args[2];\n return function () {\n deprecate(message, false, options);\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return func.apply(this, args);\n };\n } else {\n var _message = args[0],\n _func = args[1];\n return function () {\n deprecate(_message);\n return _func.apply(this, arguments);\n };\n }\n });\n /**\n @module @ember/debug\n @public\n */\n\n /**\n Run a function meant for debugging.\n Calls to this function are removed from production builds, so they can be\n freely added for documentation and debugging purposes without worries of\n incuring any performance penalty.\n ```javascript\n import Component from '@ember/component';\n import { runInDebug } from '@ember/debug';\n runInDebug(() => {\n Component.reopen({\n didInsertElement() {\n console.log(\"I'm happy\");\n }\n });\n });\n ```\n @method runInDebug\n @for @ember/debug\n @static\n @param {Function} func The function to be executed.\n @since 1.5.0\n @public\n */\n\n setDebugFunction('runInDebug', function runInDebug(func) {\n func();\n });\n setDebugFunction('debugSeal', function debugSeal(obj) {\n Object.seal(obj);\n });\n setDebugFunction('debugFreeze', function debugFreeze(obj) {\n // re-freezing an already frozen object introduces a significant\n // performance penalty on Chrome (tested through 59).\n //\n // See: https://bugs.chromium.org/p/v8/issues/detail?id=6450\n if (!Object.isFrozen(obj)) {\n Object.freeze(obj);\n }\n });\n setDebugFunction('deprecate', _deprecate2.default);\n setDebugFunction('warn', _warn2.default);\n }\n\n var _warnIfUsingStrippedFeatureFlags;\n\n _exports._warnIfUsingStrippedFeatureFlags = _warnIfUsingStrippedFeatureFlags;\n\n if (true\n /* DEBUG */\n && !(0, _testing.isTesting)()) {\n if (typeof window !== 'undefined' && (_browserEnvironment.isFirefox || _browserEnvironment.isChrome) && window.addEventListener) {\n window.addEventListener('load', function () {\n if (document.documentElement && document.documentElement.dataset && !document.documentElement.dataset.emberExtension) {\n var downloadURL;\n\n if (_browserEnvironment.isChrome) {\n downloadURL = 'https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi';\n } else if (_browserEnvironment.isFirefox) {\n downloadURL = 'https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/';\n }\n\n debug(\"For more advanced debugging, install the Ember Inspector from \" + downloadURL);\n }\n }, false);\n }\n }\n});","define(\"@ember/debug/lib/capture-render-tree\", [\"exports\", \"@glimmer/util\"], function (_exports, _util) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = captureRenderTree;\n\n /**\n @module @ember/debug\n */\n\n /**\n Ember Inspector calls this function to capture the current render tree.\n \n In production mode, this requires turning on `ENV._DEBUG_RENDER_TREE`\n before loading Ember.\n \n @private\n @static\n @method captureRenderTree\n @for @ember/debug\n @param app {ApplicationInstance} An `ApplicationInstance`.\n @since 3.14.0\n */\n function captureRenderTree(app) {\n var renderer = (0, _util.expect)(app.lookup('renderer:-dom'), \"BUG: owner is missing renderer\");\n return renderer.debugRenderTree.capture();\n }\n});","define(\"@ember/debug/lib/deprecate\", [\"exports\", \"@ember/-internals/environment\", \"@ember/debug/index\", \"@ember/debug/lib/handlers\"], function (_exports, _environment, _index, _handlers) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.SINCE_MISSING_DEPRECATIONS = _exports.FOR_MISSING_DEPRECATIONS = _exports.missingOptionsSinceDeprecation = _exports.missingOptionsForDeprecation = _exports.missingOptionsUntilDeprecation = _exports.missingOptionsIdDeprecation = _exports.missingOptionsDeprecation = _exports.registerHandler = _exports.default = void 0;\n\n /**\n @module @ember/debug\n @public\n */\n\n /**\n Allows for runtime registration of handler functions that override the default deprecation behavior.\n Deprecations are invoked by calls to [@ember/debug/deprecate](/ember/release/classes/@ember%2Fdebug/methods/deprecate?anchor=deprecate).\n The following example demonstrates its usage by registering a handler that throws an error if the\n message contains the word \"should\", otherwise defers to the default handler.\n \n ```javascript\n import { registerDeprecationHandler } from '@ember/debug';\n \n registerDeprecationHandler((message, options, next) => {\n if (message.indexOf('should') !== -1) {\n throw new Error(`Deprecation message with should: ${message}`);\n } else {\n // defer to whatever handler was registered before this one\n next(message, options);\n }\n });\n ```\n \n The handler function takes the following arguments:\n \n <ul>\n <li> <code>message</code> - The message received from the deprecation call.</li>\n <li> <code>options</code> - An object passed in with the deprecation call containing additional information including:</li>\n <ul>\n <li> <code>id</code> - An id of the deprecation in the form of <code>package-name.specific-deprecation</code>.</li>\n <li> <code>until</code> - The Ember version number the feature and deprecation will be removed in.</li>\n </ul>\n <li> <code>next</code> - A function that calls into the previously registered handler.</li>\n </ul>\n \n @public\n @static\n @method registerDeprecationHandler\n @for @ember/debug\n @param handler {Function} A function to handle deprecation calls.\n @since 2.1.0\n */\n var registerHandler = function registerHandler() {};\n\n _exports.registerHandler = registerHandler;\n var missingOptionsDeprecation;\n _exports.missingOptionsDeprecation = missingOptionsDeprecation;\n var missingOptionsIdDeprecation;\n _exports.missingOptionsIdDeprecation = missingOptionsIdDeprecation;\n var missingOptionsUntilDeprecation;\n _exports.missingOptionsUntilDeprecation = missingOptionsUntilDeprecation;\n\n var missingOptionsForDeprecation = function missingOptionsForDeprecation() {\n return '';\n };\n\n _exports.missingOptionsForDeprecation = missingOptionsForDeprecation;\n\n var missingOptionsSinceDeprecation = function missingOptionsSinceDeprecation() {\n return '';\n };\n\n _exports.missingOptionsSinceDeprecation = missingOptionsSinceDeprecation;\n\n var deprecate = function deprecate() {};\n\n var FOR_MISSING_DEPRECATIONS = new Set();\n _exports.FOR_MISSING_DEPRECATIONS = FOR_MISSING_DEPRECATIONS;\n var SINCE_MISSING_DEPRECATIONS = new Set();\n _exports.SINCE_MISSING_DEPRECATIONS = SINCE_MISSING_DEPRECATIONS;\n\n if (true\n /* DEBUG */\n ) {\n _exports.registerHandler = registerHandler = function registerHandler(handler) {\n (0, _handlers.registerHandler)('deprecate', handler);\n };\n\n var formatMessage = function formatMessage(_message, options) {\n var message = _message;\n\n if (options && options.id) {\n message = message + (\" [deprecation id: \" + options.id + \"]\");\n }\n\n if (options && options.url) {\n message += \" See \" + options.url + \" for more details.\";\n }\n\n return message;\n };\n\n registerHandler(function logDeprecationToConsole(message, options) {\n var updatedMessage = formatMessage(message, options);\n console.warn(\"DEPRECATION: \" + updatedMessage); // eslint-disable-line no-console\n });\n var captureErrorForStack;\n\n if (new Error().stack) {\n captureErrorForStack = function captureErrorForStack() {\n return new Error();\n };\n } else {\n captureErrorForStack = function captureErrorForStack() {\n try {\n __fail__.fail();\n } catch (e) {\n return e;\n }\n };\n }\n\n registerHandler(function logDeprecationStackTrace(message, options, next) {\n if (_environment.ENV.LOG_STACKTRACE_ON_DEPRECATION) {\n var stackStr = '';\n var error = captureErrorForStack();\n var stack;\n\n if (error.stack) {\n if (error['arguments']) {\n // Chrome\n stack = error.stack.replace(/^\\s+at\\s+/gm, '').replace(/^([^(]+?)([\\n$])/gm, '{anonymous}($1)$2').replace(/^Object.<anonymous>\\s*\\(([^)]+)\\)/gm, '{anonymous}($1)').split('\\n');\n stack.shift();\n } else {\n // Firefox\n stack = error.stack.replace(/(?:\\n@:0)?\\s+$/m, '').replace(/^\\(/gm, '{anonymous}(').split('\\n');\n }\n\n stackStr = \"\\n \" + stack.slice(2).join('\\n ');\n }\n\n var updatedMessage = formatMessage(message, options);\n console.warn(\"DEPRECATION: \" + updatedMessage + stackStr); // eslint-disable-line no-console\n } else {\n next(message, options);\n }\n });\n registerHandler(function raiseOnDeprecation(message, options, next) {\n if (_environment.ENV.RAISE_ON_DEPRECATION) {\n var updatedMessage = formatMessage(message);\n throw new Error(updatedMessage);\n } else {\n next(message, options);\n }\n });\n _exports.missingOptionsDeprecation = missingOptionsDeprecation = 'When calling `deprecate` you ' + 'must provide an `options` hash as the third parameter. ' + '`options` should include `id` and `until` properties.';\n _exports.missingOptionsIdDeprecation = missingOptionsIdDeprecation = 'When calling `deprecate` you must provide `id` in options.';\n _exports.missingOptionsUntilDeprecation = missingOptionsUntilDeprecation = 'When calling `deprecate` you must provide `until` in options.';\n\n _exports.missingOptionsForDeprecation = missingOptionsForDeprecation = function missingOptionsForDeprecation(id) {\n return \"When calling `deprecate` you must provide `for` in options. Missing options.for in \\\"\" + id + \"\\\" deprecation\";\n };\n\n _exports.missingOptionsSinceDeprecation = missingOptionsSinceDeprecation = function missingOptionsSinceDeprecation(id) {\n return \"When calling `deprecate` you must provide `since` in options. Missing options.since in \\\"\" + id + \"\\\" deprecation\";\n };\n /**\n @module @ember/debug\n @public\n */\n\n /**\n Display a deprecation warning with the provided message and a stack trace\n (Chrome and Firefox only).\n * In a production build, this method is defined as an empty function (NOP).\n Uses of this method in Ember itself are stripped from the ember.prod.js build.\n @method deprecate\n @for @ember/debug\n @param {String} message A description of the deprecation.\n @param {Boolean} test A boolean. If falsy, the deprecation will be displayed.\n @param {Object} options\n @param {String} options.id A unique id for this deprecation. The id can be\n used by Ember debugging tools to change the behavior (raise, log or silence)\n for that specific deprecation. The id should be namespaced by dots, e.g.\n \"view.helper.select\".\n @param {string} options.until The version of Ember when this deprecation\n warning will be removed.\n @param {String} options.for A namespace for the deprecation, usually the package name\n @param {Object} options.since Describes when the deprecation became available and enabled.\n @param {String} [options.url] An optional url to the transition guide on the\n emberjs.com website.\n @static\n @public\n @since 1.0.0\n */\n\n\n deprecate = function deprecate(message, test, options) {\n (0, _index.assert)(missingOptionsDeprecation, Boolean(options && (options.id || options.until)));\n (0, _index.assert)(missingOptionsIdDeprecation, Boolean(options.id));\n (0, _index.assert)(missingOptionsUntilDeprecation, Boolean(options.until));\n\n if (!options.for && !FOR_MISSING_DEPRECATIONS.has(options.id)) {\n FOR_MISSING_DEPRECATIONS.add(options.id);\n deprecate(missingOptionsForDeprecation(options.id), Boolean(options.for), {\n id: 'ember-source.deprecation-without-for',\n until: '4.0.0',\n for: 'ember-source',\n since: {\n enabled: '3.24.0'\n }\n });\n }\n\n if (!options.since && !SINCE_MISSING_DEPRECATIONS.has(options.id)) {\n SINCE_MISSING_DEPRECATIONS.add(options.id);\n deprecate(missingOptionsSinceDeprecation(options.id), Boolean(options.since), {\n id: 'ember-source.deprecation-without-since',\n until: '4.0.0',\n for: 'ember-source',\n since: {\n enabled: '3.24.0'\n }\n });\n }\n\n (0, _handlers.invoke)('deprecate', message, test, options);\n };\n }\n\n var _default = deprecate;\n _exports.default = _default;\n});","define(\"@ember/debug/lib/handlers\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.invoke = _exports.registerHandler = _exports.HANDLERS = void 0;\n var HANDLERS = {};\n _exports.HANDLERS = HANDLERS;\n\n var registerHandler = function registerHandler() {};\n\n _exports.registerHandler = registerHandler;\n\n var invoke = function invoke() {};\n\n _exports.invoke = invoke;\n\n if (true\n /* DEBUG */\n ) {\n _exports.registerHandler = registerHandler = function registerHandler(type, callback) {\n var nextHandler = HANDLERS[type] || function () {};\n\n HANDLERS[type] = function (message, options) {\n callback(message, options, nextHandler);\n };\n };\n\n _exports.invoke = invoke = function invoke(type, message, test, options) {\n if (test) {\n return;\n }\n\n var handlerForType = HANDLERS[type];\n\n if (handlerForType) {\n handlerForType(message, options);\n }\n };\n }\n});","define(\"@ember/debug/lib/testing\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.isTesting = isTesting;\n _exports.setTesting = setTesting;\n var testing = false;\n\n function isTesting() {\n return testing;\n }\n\n function setTesting(value) {\n testing = Boolean(value);\n }\n});","define(\"@ember/debug/lib/warn\", [\"exports\", \"@ember/debug/index\", \"@ember/debug/lib/handlers\"], function (_exports, _index, _handlers) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.missingOptionsDeprecation = _exports.missingOptionsIdDeprecation = _exports.registerHandler = _exports.default = void 0;\n\n var registerHandler = function registerHandler() {};\n\n _exports.registerHandler = registerHandler;\n\n var warn = function warn() {};\n\n var missingOptionsDeprecation;\n _exports.missingOptionsDeprecation = missingOptionsDeprecation;\n var missingOptionsIdDeprecation;\n /**\n @module @ember/debug\n */\n\n _exports.missingOptionsIdDeprecation = missingOptionsIdDeprecation;\n\n if (true\n /* DEBUG */\n ) {\n /**\n Allows for runtime registration of handler functions that override the default warning behavior.\n Warnings are invoked by calls made to [@ember/debug/warn](/ember/release/classes/@ember%2Fdebug/methods/warn?anchor=warn).\n The following example demonstrates its usage by registering a handler that does nothing overriding Ember's\n default warning behavior.\n ```javascript\n import { registerWarnHandler } from '@ember/debug';\n // next is not called, so no warnings get the default behavior\n registerWarnHandler(() => {});\n ```\n The handler function takes the following arguments:\n <ul>\n <li> <code>message</code> - The message received from the warn call. </li>\n <li> <code>options</code> - An object passed in with the warn call containing additional information including:</li>\n <ul>\n <li> <code>id</code> - An id of the warning in the form of <code>package-name.specific-warning</code>.</li>\n </ul>\n <li> <code>next</code> - A function that calls into the previously registered handler.</li>\n </ul>\n @public\n @static\n @method registerWarnHandler\n @for @ember/debug\n @param handler {Function} A function to handle warnings.\n @since 2.1.0\n */\n _exports.registerHandler = registerHandler = function registerHandler(handler) {\n (0, _handlers.registerHandler)('warn', handler);\n };\n\n registerHandler(function logWarning(message) {\n /* eslint-disable no-console */\n console.warn(\"WARNING: \" + message);\n /* eslint-enable no-console */\n });\n _exports.missingOptionsDeprecation = missingOptionsDeprecation = 'When calling `warn` you ' + 'must provide an `options` hash as the third parameter. ' + '`options` should include an `id` property.';\n _exports.missingOptionsIdDeprecation = missingOptionsIdDeprecation = 'When calling `warn` you must provide `id` in options.';\n /**\n Display a warning with the provided message.\n * In a production build, this method is defined as an empty function (NOP).\n Uses of this method in Ember itself are stripped from the ember.prod.js build.\n ```javascript\n import { warn } from '@ember/debug';\n import tomsterCount from './tomster-counter'; // a module in my project\n // Log a warning if we have more than 3 tomsters\n warn('Too many tomsters!', tomsterCount <= 3, {\n id: 'ember-debug.too-many-tomsters'\n });\n ```\n @method warn\n @for @ember/debug\n @static\n @param {String} message A warning to display.\n @param {Boolean} test An optional boolean. If falsy, the warning\n will be displayed.\n @param {Object} options An object that can be used to pass a unique\n `id` for this warning. The `id` can be used by Ember debugging tools\n to change the behavior (raise, log, or silence) for that specific warning.\n The `id` should be namespaced by dots, e.g. \"ember-debug.feature-flag-with-features-stripped\"\n @public\n @since 1.0.0\n */\n\n warn = function warn(message, test, options) {\n if (arguments.length === 2 && typeof test === 'object') {\n options = test;\n test = false;\n }\n\n (0, _index.assert)(missingOptionsDeprecation, Boolean(options));\n (0, _index.assert)(missingOptionsIdDeprecation, Boolean(options && options.id));\n (0, _handlers.invoke)('warn', message, test, options);\n };\n }\n\n var _default = warn;\n _exports.default = _default;\n});","define(\"@ember/deprecated-features/index\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.GLOBALS_RESOLVER = _exports.PARTIALS = _exports.EMBER_COMPONENT_IS_VISIBLE = _exports.MOUSE_ENTER_LEAVE_MOVE_EVENTS = _exports.FUNCTION_PROTOTYPE_EXTENSIONS = _exports.APP_CTRL_ROUTER_PROPS = _exports.ALIAS_METHOD = _exports.JQUERY_INTEGRATION = _exports.COMPONENT_MANAGER_STRING_LOOKUP = _exports.ROUTER_EVENTS = _exports.MERGE = _exports.LOGGER = _exports.EMBER_EXTEND_PROTOTYPES = _exports.SEND_ACTION = void 0;\n\n /* eslint-disable no-implicit-coercion */\n // These versions should be the version that the deprecation was _introduced_,\n // not the version that the feature will be removed.\n var SEND_ACTION = !!'3.4.0';\n _exports.SEND_ACTION = SEND_ACTION;\n var EMBER_EXTEND_PROTOTYPES = !!'3.2.0-beta.5';\n _exports.EMBER_EXTEND_PROTOTYPES = EMBER_EXTEND_PROTOTYPES;\n var LOGGER = !!'3.2.0-beta.1';\n _exports.LOGGER = LOGGER;\n var MERGE = !!'3.6.0-beta.1';\n _exports.MERGE = MERGE;\n var ROUTER_EVENTS = !!'4.0.0';\n _exports.ROUTER_EVENTS = ROUTER_EVENTS;\n var COMPONENT_MANAGER_STRING_LOOKUP = !!'3.8.0';\n _exports.COMPONENT_MANAGER_STRING_LOOKUP = COMPONENT_MANAGER_STRING_LOOKUP;\n var JQUERY_INTEGRATION = !!'3.9.0';\n _exports.JQUERY_INTEGRATION = JQUERY_INTEGRATION;\n var ALIAS_METHOD = !!'3.9.0';\n _exports.ALIAS_METHOD = ALIAS_METHOD;\n var APP_CTRL_ROUTER_PROPS = !!'3.10.0-beta.1';\n _exports.APP_CTRL_ROUTER_PROPS = APP_CTRL_ROUTER_PROPS;\n var FUNCTION_PROTOTYPE_EXTENSIONS = !!'3.11.0-beta.1';\n _exports.FUNCTION_PROTOTYPE_EXTENSIONS = FUNCTION_PROTOTYPE_EXTENSIONS;\n var MOUSE_ENTER_LEAVE_MOVE_EVENTS = !!'3.13.0-beta.1';\n _exports.MOUSE_ENTER_LEAVE_MOVE_EVENTS = MOUSE_ENTER_LEAVE_MOVE_EVENTS;\n var EMBER_COMPONENT_IS_VISIBLE = !!'3.15.0-beta.1';\n _exports.EMBER_COMPONENT_IS_VISIBLE = EMBER_COMPONENT_IS_VISIBLE;\n var PARTIALS = !!'3.15.0-beta.1';\n _exports.PARTIALS = PARTIALS;\n var GLOBALS_RESOLVER = !!'3.16.0-beta.1';\n _exports.GLOBALS_RESOLVER = GLOBALS_RESOLVER;\n});","define(\"@ember/error/index\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n\n /**\n @module @ember/error\n */\n\n /**\n The JavaScript Error object used by Ember.assert.\n \n @class Error\n @namespace Ember\n @extends Error\n @constructor\n @public\n */\n var _default = Error;\n _exports.default = _default;\n});","define(\"@ember/polyfills/index\", [\"exports\", \"@ember/deprecated-features\", \"@ember/polyfills/lib/merge\", \"@ember/polyfills/lib/assign\"], function (_exports, _deprecatedFeatures, _merge, _assign) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n Object.defineProperty(_exports, \"assign\", {\n enumerable: true,\n get: function get() {\n return _assign.default;\n }\n });\n Object.defineProperty(_exports, \"assignPolyfill\", {\n enumerable: true,\n get: function get() {\n return _assign.assign;\n }\n });\n _exports.hasPropertyAccessors = _exports.merge = void 0;\n var merge = _deprecatedFeatures.MERGE ? _merge.default : undefined; // Export `assignPolyfill` for testing\n\n _exports.merge = merge;\n var hasPropertyAccessors = true;\n _exports.hasPropertyAccessors = hasPropertyAccessors;\n});","define(\"@ember/polyfills/lib/assign\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.assign = assign;\n _exports.default = void 0;\n\n /**\n @module @ember/polyfills\n */\n\n /**\n Copy properties from a source object to a target object. Source arguments remain unchanged.\n \n ```javascript\n import { assign } from '@ember/polyfills';\n \n var a = { first: 'Yehuda' };\n var b = { last: 'Katz' };\n var c = { company: 'Other Company' };\n var d = { company: 'Tilde Inc.' };\n assign(a, b, c, d); // a === { first: 'Yehuda', last: 'Katz', company: 'Tilde Inc.' };\n ```\n \n @method assign\n @for @ember/polyfills\n @param {Object} target The object to assign into\n @param {Object} ...args The objects to copy properties from\n @return {Object}\n @public\n @static\n */\n function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var arg = arguments[i];\n\n if (!arg) {\n continue;\n }\n\n var updates = Object.keys(arg);\n\n for (var _i = 0; _i < updates.length; _i++) {\n var prop = updates[_i];\n target[prop] = arg[prop];\n }\n }\n\n return target;\n } // Note: We use the bracket notation so\n // that the babel plugin does not\n // transform it.\n // https://www.npmjs.com/package/babel-plugin-transform-object-assign\n\n\n var _assign = Object.assign;\n\n var _default = _assign || assign;\n\n _exports.default = _default;\n});","define(\"@ember/polyfills/lib/merge\", [\"exports\", \"@ember/debug\"], function (_exports, _debug) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n\n /**\n Merge the contents of two objects together into the first object.\n \n ```javascript\n import { merge } from '@ember/polyfills';\n \n merge({ first: 'Tom' }, { last: 'Dale' }); // { first: 'Tom', last: 'Dale' }\n var a = { first: 'Yehuda' };\n var b = { last: 'Katz' };\n merge(a, b); // a == { first: 'Yehuda', last: 'Katz' }, b == { last: 'Katz' }\n ```\n \n @method merge\n @static\n @for @ember/polyfills\n @param {Object} original The object to merge into\n @param {Object} updates The object to copy properties from\n @return {Object}\n @deprecated\n @public\n */\n function merge(original, updates) {\n (true && !(false) && (0, _debug.deprecate)('Use of `merge` has been deprecated. Please use `assign` instead.', false, {\n id: 'ember-polyfills.deprecate-merge',\n until: '4.0.0',\n url: 'https://deprecations.emberjs.com/v3.x/#toc_ember-polyfills-deprecate-merge',\n for: 'ember-source',\n since: {\n enabled: '3.6.0-beta.1'\n }\n }));\n\n if (updates === null || typeof updates !== 'object') {\n return original;\n }\n\n var props = Object.keys(updates);\n var prop;\n\n for (var i = 0; i < props.length; i++) {\n prop = props[i];\n original[prop] = updates[prop];\n }\n\n return original;\n }\n\n var _default = merge;\n _exports.default = _default;\n});","define(\"@glimmer/compiler\", [\"exports\", \"ember-babel\", \"@glimmer/syntax\", \"@glimmer/util\"], function (_exports, _emberBabel, _syntax, _util) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.precompile = precompile;\n _exports.precompileJSON = precompileJSON;\n _exports.buildStatement = buildStatement;\n _exports.buildStatements = buildStatements;\n _exports.s = s;\n _exports.c = c;\n _exports.unicode = unicode;\n _exports.WireFormatDebugger = _exports.NEWLINE = _exports.ProgramSymbols = _exports.defaultId = void 0;\n\n var _CurriedTypeToReadabl;\n\n var Template = /*#__PURE__*/function (_node$fields) {\n (0, _emberBabel.inheritsLoose)(Template, _node$fields);\n\n function Template() {\n return _node$fields.apply(this, arguments) || this;\n }\n\n return Template;\n }((0, _syntax.node)('Template').fields());\n\n var InElement = /*#__PURE__*/function (_node$fields2) {\n (0, _emberBabel.inheritsLoose)(InElement, _node$fields2);\n\n function InElement() {\n return _node$fields2.apply(this, arguments) || this;\n }\n\n return InElement;\n }((0, _syntax.node)('InElement').fields());\n\n var Not = /*#__PURE__*/function (_node$fields3) {\n (0, _emberBabel.inheritsLoose)(Not, _node$fields3);\n\n function Not() {\n return _node$fields3.apply(this, arguments) || this;\n }\n\n return Not;\n }((0, _syntax.node)('Not').fields());\n\n var If = /*#__PURE__*/function (_node$fields4) {\n (0, _emberBabel.inheritsLoose)(If, _node$fields4);\n\n function If() {\n return _node$fields4.apply(this, arguments) || this;\n }\n\n return If;\n }((0, _syntax.node)('If').fields());\n\n var IfInline = /*#__PURE__*/function (_node$fields5) {\n (0, _emberBabel.inheritsLoose)(IfInline, _node$fields5);\n\n function IfInline() {\n return _node$fields5.apply(this, arguments) || this;\n }\n\n return IfInline;\n }((0, _syntax.node)('IfInline').fields());\n\n var Each = /*#__PURE__*/function (_node$fields6) {\n (0, _emberBabel.inheritsLoose)(Each, _node$fields6);\n\n function Each() {\n return _node$fields6.apply(this, arguments) || this;\n }\n\n return Each;\n }((0, _syntax.node)('Each').fields());\n\n var With = /*#__PURE__*/function (_node$fields7) {\n (0, _emberBabel.inheritsLoose)(With, _node$fields7);\n\n function With() {\n return _node$fields7.apply(this, arguments) || this;\n }\n\n return With;\n }((0, _syntax.node)('With').fields());\n\n var Let = /*#__PURE__*/function (_node$fields8) {\n (0, _emberBabel.inheritsLoose)(Let, _node$fields8);\n\n function Let() {\n return _node$fields8.apply(this, arguments) || this;\n }\n\n return Let;\n }((0, _syntax.node)('Let').fields());\n\n var WithDynamicVars = /*#__PURE__*/function (_node$fields9) {\n (0, _emberBabel.inheritsLoose)(WithDynamicVars, _node$fields9);\n\n function WithDynamicVars() {\n return _node$fields9.apply(this, arguments) || this;\n }\n\n return WithDynamicVars;\n }((0, _syntax.node)('WithDynamicVars').fields());\n\n var GetDynamicVar = /*#__PURE__*/function (_node$fields10) {\n (0, _emberBabel.inheritsLoose)(GetDynamicVar, _node$fields10);\n\n function GetDynamicVar() {\n return _node$fields10.apply(this, arguments) || this;\n }\n\n return GetDynamicVar;\n }((0, _syntax.node)('GetDynamicVar').fields());\n\n var Log = /*#__PURE__*/function (_node$fields11) {\n (0, _emberBabel.inheritsLoose)(Log, _node$fields11);\n\n function Log() {\n return _node$fields11.apply(this, arguments) || this;\n }\n\n return Log;\n }((0, _syntax.node)('Log').fields());\n\n var InvokeComponent = /*#__PURE__*/function (_node$fields12) {\n (0, _emberBabel.inheritsLoose)(InvokeComponent, _node$fields12);\n\n function InvokeComponent() {\n return _node$fields12.apply(this, arguments) || this;\n }\n\n return InvokeComponent;\n }((0, _syntax.node)('InvokeComponent').fields());\n\n var _NamedBlocks = /*#__PURE__*/function (_node$fields13) {\n (0, _emberBabel.inheritsLoose)(NamedBlocks, _node$fields13);\n\n function NamedBlocks() {\n return _node$fields13.apply(this, arguments) || this;\n }\n\n return NamedBlocks;\n }((0, _syntax.node)('NamedBlocks').fields());\n\n var _NamedBlock = /*#__PURE__*/function (_node$fields14) {\n (0, _emberBabel.inheritsLoose)(NamedBlock, _node$fields14);\n\n function NamedBlock() {\n return _node$fields14.apply(this, arguments) || this;\n }\n\n return NamedBlock;\n }((0, _syntax.node)('NamedBlock').fields());\n\n var EndBlock = /*#__PURE__*/function (_node$fields15) {\n (0, _emberBabel.inheritsLoose)(EndBlock, _node$fields15);\n\n function EndBlock() {\n return _node$fields15.apply(this, arguments) || this;\n }\n\n return EndBlock;\n }((0, _syntax.node)('EndBlock').fields());\n\n var AppendTrustedHTML = /*#__PURE__*/function (_node$fields16) {\n (0, _emberBabel.inheritsLoose)(AppendTrustedHTML, _node$fields16);\n\n function AppendTrustedHTML() {\n return _node$fields16.apply(this, arguments) || this;\n }\n\n return AppendTrustedHTML;\n }((0, _syntax.node)('AppendTrustedHTML').fields());\n\n var AppendTextNode = /*#__PURE__*/function (_node$fields17) {\n (0, _emberBabel.inheritsLoose)(AppendTextNode, _node$fields17);\n\n function AppendTextNode() {\n return _node$fields17.apply(this, arguments) || this;\n }\n\n return AppendTextNode;\n }((0, _syntax.node)('AppendTextNode').fields());\n\n var AppendComment = /*#__PURE__*/function (_node$fields18) {\n (0, _emberBabel.inheritsLoose)(AppendComment, _node$fields18);\n\n function AppendComment() {\n return _node$fields18.apply(this, arguments) || this;\n }\n\n return AppendComment;\n }((0, _syntax.node)('AppendComment').fields());\n\n var Component = /*#__PURE__*/function (_node$fields19) {\n (0, _emberBabel.inheritsLoose)(Component, _node$fields19);\n\n function Component() {\n return _node$fields19.apply(this, arguments) || this;\n }\n\n return Component;\n }((0, _syntax.node)('Component').fields());\n\n var StaticAttr = /*#__PURE__*/function (_node$fields20) {\n (0, _emberBabel.inheritsLoose)(StaticAttr, _node$fields20);\n\n function StaticAttr() {\n return _node$fields20.apply(this, arguments) || this;\n }\n\n return StaticAttr;\n }((0, _syntax.node)('StaticAttr').fields());\n\n var DynamicAttr = /*#__PURE__*/function (_node$fields21) {\n (0, _emberBabel.inheritsLoose)(DynamicAttr, _node$fields21);\n\n function DynamicAttr() {\n return _node$fields21.apply(this, arguments) || this;\n }\n\n return DynamicAttr;\n }((0, _syntax.node)('DynamicAttr').fields());\n\n var SimpleElement = /*#__PURE__*/function (_node$fields22) {\n (0, _emberBabel.inheritsLoose)(SimpleElement, _node$fields22);\n\n function SimpleElement() {\n return _node$fields22.apply(this, arguments) || this;\n }\n\n return SimpleElement;\n }((0, _syntax.node)('SimpleElement').fields());\n\n var ElementParameters = /*#__PURE__*/function (_node$fields23) {\n (0, _emberBabel.inheritsLoose)(ElementParameters, _node$fields23);\n\n function ElementParameters() {\n return _node$fields23.apply(this, arguments) || this;\n }\n\n return ElementParameters;\n }((0, _syntax.node)('ElementParameters').fields());\n\n var Yield = /*#__PURE__*/function (_node$fields24) {\n (0, _emberBabel.inheritsLoose)(Yield, _node$fields24);\n\n function Yield() {\n return _node$fields24.apply(this, arguments) || this;\n }\n\n return Yield;\n }((0, _syntax.node)('Yield').fields());\n\n var Partial = /*#__PURE__*/function (_node$fields25) {\n (0, _emberBabel.inheritsLoose)(Partial, _node$fields25);\n\n function Partial() {\n return _node$fields25.apply(this, arguments) || this;\n }\n\n return Partial;\n }((0, _syntax.node)('Partial').fields());\n\n var Debugger = /*#__PURE__*/function (_node$fields26) {\n (0, _emberBabel.inheritsLoose)(Debugger, _node$fields26);\n\n function Debugger() {\n return _node$fields26.apply(this, arguments) || this;\n }\n\n return Debugger;\n }((0, _syntax.node)('Debugger').fields());\n\n var _CallExpression = /*#__PURE__*/function (_node$fields27) {\n (0, _emberBabel.inheritsLoose)(CallExpression, _node$fields27);\n\n function CallExpression() {\n return _node$fields27.apply(this, arguments) || this;\n }\n\n return CallExpression;\n }((0, _syntax.node)('CallExpression').fields());\n\n var DeprecatedCallExpression = /*#__PURE__*/function (_node$fields28) {\n (0, _emberBabel.inheritsLoose)(DeprecatedCallExpression, _node$fields28);\n\n function DeprecatedCallExpression() {\n return _node$fields28.apply(this, arguments) || this;\n }\n\n return DeprecatedCallExpression;\n }((0, _syntax.node)('DeprecatedCallExpression').fields());\n\n var Modifier = /*#__PURE__*/function (_node$fields29) {\n (0, _emberBabel.inheritsLoose)(Modifier, _node$fields29);\n\n function Modifier() {\n return _node$fields29.apply(this, arguments) || this;\n }\n\n return Modifier;\n }((0, _syntax.node)('Modifier').fields());\n\n var _InvokeBlock = /*#__PURE__*/function (_node$fields30) {\n (0, _emberBabel.inheritsLoose)(InvokeBlock, _node$fields30);\n\n function InvokeBlock() {\n return _node$fields30.apply(this, arguments) || this;\n }\n\n return InvokeBlock;\n }((0, _syntax.node)('InvokeBlock').fields());\n\n var SplatAttr = /*#__PURE__*/function (_node$fields31) {\n (0, _emberBabel.inheritsLoose)(SplatAttr, _node$fields31);\n\n function SplatAttr() {\n return _node$fields31.apply(this, arguments) || this;\n }\n\n return SplatAttr;\n }((0, _syntax.node)('SplatAttr').fields());\n\n var _PathExpression = /*#__PURE__*/function (_node$fields32) {\n (0, _emberBabel.inheritsLoose)(PathExpression, _node$fields32);\n\n function PathExpression() {\n return _node$fields32.apply(this, arguments) || this;\n }\n\n return PathExpression;\n }((0, _syntax.node)('PathExpression').fields());\n\n var GetWithResolver = /*#__PURE__*/function (_node$fields33) {\n (0, _emberBabel.inheritsLoose)(GetWithResolver, _node$fields33);\n\n function GetWithResolver() {\n return _node$fields33.apply(this, arguments) || this;\n }\n\n return GetWithResolver;\n }((0, _syntax.node)('GetWithResolver').fields());\n\n var GetSymbol = /*#__PURE__*/function (_node$fields34) {\n (0, _emberBabel.inheritsLoose)(GetSymbol, _node$fields34);\n\n function GetSymbol() {\n return _node$fields34.apply(this, arguments) || this;\n }\n\n return GetSymbol;\n }((0, _syntax.node)('GetSymbol').fields());\n\n var GetFreeWithContext = /*#__PURE__*/function (_node$fields35) {\n (0, _emberBabel.inheritsLoose)(GetFreeWithContext, _node$fields35);\n\n function GetFreeWithContext() {\n return _node$fields35.apply(this, arguments) || this;\n }\n\n return GetFreeWithContext;\n }((0, _syntax.node)('GetFreeWithContext').fields());\n /** strict mode */\n\n\n var GetFree = /*#__PURE__*/function (_node$fields36) {\n (0, _emberBabel.inheritsLoose)(GetFree, _node$fields36);\n\n function GetFree() {\n return _node$fields36.apply(this, arguments) || this;\n }\n\n return GetFree;\n }((0, _syntax.node)('GetFree').fields());\n\n var Missing = /*#__PURE__*/function (_node$fields37) {\n (0, _emberBabel.inheritsLoose)(Missing, _node$fields37);\n\n function Missing() {\n return _node$fields37.apply(this, arguments) || this;\n }\n\n return Missing;\n }((0, _syntax.node)('Missing').fields());\n\n var InterpolateExpression = /*#__PURE__*/function (_node$fields38) {\n (0, _emberBabel.inheritsLoose)(InterpolateExpression, _node$fields38);\n\n function InterpolateExpression() {\n return _node$fields38.apply(this, arguments) || this;\n }\n\n return InterpolateExpression;\n }((0, _syntax.node)('InterpolateExpression').fields());\n\n var HasBlock = /*#__PURE__*/function (_node$fields39) {\n (0, _emberBabel.inheritsLoose)(HasBlock, _node$fields39);\n\n function HasBlock() {\n return _node$fields39.apply(this, arguments) || this;\n }\n\n return HasBlock;\n }((0, _syntax.node)('HasBlock').fields());\n\n var HasBlockParams = /*#__PURE__*/function (_node$fields40) {\n (0, _emberBabel.inheritsLoose)(HasBlockParams, _node$fields40);\n\n function HasBlockParams() {\n return _node$fields40.apply(this, arguments) || this;\n }\n\n return HasBlockParams;\n }((0, _syntax.node)('HasBlockParams').fields());\n\n var Curry = /*#__PURE__*/function (_node$fields41) {\n (0, _emberBabel.inheritsLoose)(Curry, _node$fields41);\n\n function Curry() {\n return _node$fields41.apply(this, arguments) || this;\n }\n\n return Curry;\n }((0, _syntax.node)('Curry').fields());\n\n var _Positional = /*#__PURE__*/function (_node$fields42) {\n (0, _emberBabel.inheritsLoose)(Positional, _node$fields42);\n\n function Positional() {\n return _node$fields42.apply(this, arguments) || this;\n }\n\n return Positional;\n }((0, _syntax.node)('Positional').fields());\n\n var _NamedArguments = /*#__PURE__*/function (_node$fields43) {\n (0, _emberBabel.inheritsLoose)(NamedArguments, _node$fields43);\n\n function NamedArguments() {\n return _node$fields43.apply(this, arguments) || this;\n }\n\n return NamedArguments;\n }((0, _syntax.node)('NamedArguments').fields());\n\n var NamedArgument = /*#__PURE__*/function (_node$fields44) {\n (0, _emberBabel.inheritsLoose)(NamedArgument, _node$fields44);\n\n function NamedArgument() {\n return _node$fields44.apply(this, arguments) || this;\n }\n\n return NamedArgument;\n }((0, _syntax.node)('NamedArgument').fields());\n\n var _Args = /*#__PURE__*/function (_node$fields45) {\n (0, _emberBabel.inheritsLoose)(Args, _node$fields45);\n\n function Args() {\n return _node$fields45.apply(this, arguments) || this;\n }\n\n return Args;\n }((0, _syntax.node)('Args').fields());\n\n var Tail = /*#__PURE__*/function (_node$fields46) {\n (0, _emberBabel.inheritsLoose)(Tail, _node$fields46);\n\n function Tail() {\n return _node$fields46.apply(this, arguments) || this;\n }\n\n return Tail;\n }((0, _syntax.node)('Tail').fields());\n\n var PresentList = /*#__PURE__*/function () {\n function PresentList(list) {\n this.list = list;\n }\n\n var _proto = PresentList.prototype;\n\n _proto.toArray = function toArray() {\n return this.list;\n };\n\n _proto.map = function map(callback) {\n var result = (0, _util.mapPresent)(this.list, callback);\n return new PresentList(result);\n };\n\n _proto.filter = function filter(predicate) {\n var out = [];\n\n for (var _iterator = (0, _emberBabel.createForOfIteratorHelperLoose)(this.list), _step; !(_step = _iterator()).done;) {\n var _item = _step.value;\n\n if (predicate(_item)) {\n out.push(_item);\n }\n }\n\n return OptionalList(out);\n };\n\n _proto.toPresentArray = function toPresentArray() {\n return this.list;\n };\n\n _proto.into = function into(_ref) {\n var ifPresent = _ref.ifPresent;\n return ifPresent(this);\n };\n\n return PresentList;\n }();\n\n var EmptyList = /*#__PURE__*/function () {\n function EmptyList() {\n this.list = [];\n }\n\n var _proto2 = EmptyList.prototype;\n\n _proto2.map = function map(_callback) {\n return new EmptyList();\n };\n\n _proto2.filter = function filter(_predicate) {\n return new EmptyList();\n };\n\n _proto2.toArray = function toArray() {\n return this.list;\n };\n\n _proto2.toPresentArray = function toPresentArray() {\n return null;\n };\n\n _proto2.into = function into(_ref2) {\n var ifEmpty = _ref2.ifEmpty;\n return ifEmpty();\n };\n\n return EmptyList;\n }(); // export type OptionalList<T> = PresentList<T> | EmptyList<T>;\n\n\n function OptionalList(value) {\n if ((0, _util.isPresent)(value)) {\n return new PresentList(value);\n } else {\n return new EmptyList();\n }\n }\n\n var ResultImpl = /*#__PURE__*/function () {\n function ResultImpl() {}\n\n ResultImpl.all = function all() {\n var out = [];\n\n for (var _len = arguments.length, results = new Array(_len), _key = 0; _key < _len; _key++) {\n results[_key] = arguments[_key];\n }\n\n for (var _i = 0, _results = results; _i < _results.length; _i++) {\n var _result = _results[_i];\n\n if (_result.isErr) {\n return _result.cast();\n } else {\n out.push(_result.value);\n }\n }\n\n return Ok(out);\n };\n\n return ResultImpl;\n }();\n\n var Result = ResultImpl;\n\n var OkImpl = /*#__PURE__*/function (_ResultImpl) {\n (0, _emberBabel.inheritsLoose)(OkImpl, _ResultImpl);\n\n function OkImpl(value) {\n var _this;\n\n _this = _ResultImpl.call(this) || this;\n _this.value = value;\n _this.isOk = true;\n _this.isErr = false;\n return _this;\n }\n\n var _proto3 = OkImpl.prototype;\n\n _proto3.expect = function expect(_message) {\n return this.value;\n };\n\n _proto3.ifOk = function ifOk(callback) {\n callback(this.value);\n return this;\n };\n\n _proto3.andThen = function andThen(callback) {\n return callback(this.value);\n };\n\n _proto3.mapOk = function mapOk(callback) {\n return Ok(callback(this.value));\n };\n\n _proto3.ifErr = function ifErr(_callback) {\n return this;\n };\n\n _proto3.mapErr = function mapErr(_callback) {\n return this;\n };\n\n return OkImpl;\n }(ResultImpl);\n\n var ErrImpl = /*#__PURE__*/function (_ResultImpl2) {\n (0, _emberBabel.inheritsLoose)(ErrImpl, _ResultImpl2);\n\n function ErrImpl(reason) {\n var _this2;\n\n _this2 = _ResultImpl2.call(this) || this;\n _this2.reason = reason;\n _this2.isOk = false;\n _this2.isErr = true;\n return _this2;\n }\n\n var _proto4 = ErrImpl.prototype;\n\n _proto4.expect = function expect(message) {\n throw new Error(message || 'expected an Ok, got Err');\n };\n\n _proto4.andThen = function andThen(_callback) {\n return this.cast();\n };\n\n _proto4.mapOk = function mapOk(_callback) {\n return this.cast();\n };\n\n _proto4.ifOk = function ifOk(_callback) {\n return this;\n };\n\n _proto4.mapErr = function mapErr(callback) {\n return Err(callback(this.reason));\n };\n\n _proto4.ifErr = function ifErr(callback) {\n callback(this.reason);\n return this;\n };\n\n _proto4.cast = function cast() {\n return this;\n };\n\n return ErrImpl;\n }(ResultImpl);\n\n function Ok(value) {\n return new OkImpl(value);\n }\n\n function Err(reason) {\n return new ErrImpl(reason);\n }\n\n var ResultArray = /*#__PURE__*/function () {\n function ResultArray(items) {\n if (items === void 0) {\n items = [];\n }\n\n this.items = items;\n }\n\n var _proto5 = ResultArray.prototype;\n\n _proto5.add = function add(item) {\n this.items.push(item);\n };\n\n _proto5.toArray = function toArray() {\n var err = this.items.filter(function (item) {\n return item instanceof ErrImpl;\n })[0];\n\n if (err !== undefined) {\n return err.cast();\n } else {\n return Ok(this.items.map(function (item) {\n return item.value;\n }));\n }\n };\n\n _proto5.toOptionalList = function toOptionalList() {\n return this.toArray().mapOk(function (arr) {\n return OptionalList(arr);\n });\n };\n\n return ResultArray;\n }();\n\n var KeywordImpl = /*#__PURE__*/function () {\n function KeywordImpl(keyword, type, delegate) {\n this.keyword = keyword;\n this.delegate = delegate;\n var nodes = new Set();\n\n for (var _iterator2 = (0, _emberBabel.createForOfIteratorHelperLoose)(KEYWORD_NODES[type]), _step2; !(_step2 = _iterator2()).done;) {\n var _nodeType = _step2.value;\n nodes.add(_nodeType);\n }\n\n this.types = nodes;\n }\n\n var _proto6 = KeywordImpl.prototype;\n\n _proto6.match = function match(node$$1) {\n if (!this.types.has(node$$1.type)) {\n return false;\n }\n\n var path = getCalleeExpression(node$$1);\n\n if (path !== null && path.type === 'Path' && path.ref.type === 'Free') {\n if (path.tail.length > 0) {\n if (path.ref.resolution.serialize() === 'Loose') {\n // cannot be a keyword reference, keywords do not allow paths (must be\n // relying on implicit this fallback)\n return false;\n }\n }\n\n return path.ref.name === this.keyword;\n } else {\n return false;\n }\n };\n\n _proto6.translate = function translate(node$$1, state) {\n var _this3 = this;\n\n if (this.match(node$$1)) {\n var path = getCalleeExpression(node$$1);\n\n if (path !== null && path.type === 'Path' && path.tail.length > 0) {\n return Err((0, _syntax.generateSyntaxError)(\"The `\" + this.keyword + \"` keyword was used incorrectly. It was used as `\" + path.loc.asString() + \"`, but it cannot be used with additional path segments. \\n\\nError caused by\", node$$1.loc));\n }\n\n var param = this.delegate.assert(node$$1, state);\n return param.andThen(function (param) {\n return _this3.delegate.translate({\n node: node$$1,\n state: state\n }, param);\n });\n } else {\n return null;\n }\n };\n\n return KeywordImpl;\n }();\n\n var KEYWORD_NODES = {\n Call: ['Call'],\n Block: ['InvokeBlock'],\n Append: ['AppendContent'],\n Modifier: ['ElementModifier']\n };\n\n function keyword(keyword, type, delegate) {\n return new KeywordImpl(keyword, type, delegate);\n }\n\n function getCalleeExpression(node$$1) {\n switch (node$$1.type) {\n // This covers the inside of attributes and expressions, as well as the callee\n // of call nodes\n case 'Path':\n return node$$1;\n\n case 'AppendContent':\n return getCalleeExpression(node$$1.value);\n\n case 'Call':\n case 'InvokeBlock':\n case 'ElementModifier':\n return node$$1.callee;\n\n default:\n return null;\n }\n }\n\n var Keywords = /*#__PURE__*/function () {\n function Keywords(type) {\n this._keywords = [];\n this._type = type;\n }\n\n var _proto7 = Keywords.prototype;\n\n _proto7.kw = function kw(name, delegate) {\n this._keywords.push(keyword(name, this._type, delegate));\n\n return this;\n };\n\n _proto7.translate = function translate(node$$1, state) {\n for (var _iterator3 = (0, _emberBabel.createForOfIteratorHelperLoose)(this._keywords), _step3; !(_step3 = _iterator3()).done;) {\n var _keyword2 = _step3.value;\n\n var _result2 = _keyword2.translate(node$$1, state);\n\n if (_result2 !== null) {\n return _result2;\n }\n }\n\n var path = getCalleeExpression(node$$1);\n\n if (path && path.type === 'Path' && path.ref.type === 'Free' && (0, _syntax.isKeyword)(path.ref.name)) {\n var name = path.ref.name;\n var usedType = this._type;\n var validTypes = _syntax.KEYWORDS_TYPES[name];\n\n if (validTypes.indexOf(usedType) === -1) {\n return Err((0, _syntax.generateSyntaxError)(\"The `\" + name + \"` keyword was used incorrectly. It was used as \" + typesToReadableName[usedType] + \", but its valid usages are:\\n\\n\" + generateTypesMessage(name, validTypes) + \"\\n\\nError caused by\", node$$1.loc));\n }\n }\n\n return null;\n };\n\n return Keywords;\n }();\n\n var typesToReadableName = {\n Append: 'an append statement',\n Block: 'a block statement',\n Call: 'a call expression',\n Modifier: 'a modifier'\n };\n\n function generateTypesMessage(name, types) {\n return types.map(function (type) {\n switch (type) {\n case 'Append':\n return \"- As an append statement, as in: {{\" + name + \"}}\";\n\n case 'Block':\n return \"- As a block statement, as in: {{#\" + name + \"}}{{/\" + name + \"}}\";\n\n case 'Call':\n return \"- As an expression, as in: (\" + name + \")\";\n\n case 'Modifier':\n return \"- As a modifier, as in: <div {{\" + name + \"}}></div>\";\n\n default:\n return (0, _util.exhausted)(type);\n }\n }).join('\\n\\n');\n }\n /**\n * This function builds keyword definitions for a particular type of AST node (`KeywordType`).\n *\n * You can build keyword definitions for:\n *\n * - `Expr`: A `SubExpression` or `PathExpression`\n * - `Block`: A `BlockStatement`\n * - A `BlockStatement` is a keyword candidate if its head is a\n * `PathExpression`\n * - `Append`: An `AppendStatement`\n *\n * A node is a keyword candidate if:\n *\n * - A `PathExpression` is a keyword candidate if it has no tail, and its\n * head expression is a `LocalVarHead` or `FreeVarHead` whose name is\n * the keyword's name.\n * - A `SubExpression`, `AppendStatement`, or `BlockStatement` is a keyword\n * candidate if its head is a keyword candidate.\n *\n * The keyword infrastructure guarantees that:\n *\n * - If a node is not a keyword candidate, it is never passed to any keyword's\n * `assert` method.\n * - If a node is not the `KeywordType` for a particular keyword, it will not\n * be passed to the keyword's `assert` method.\n *\n * `Expr` keywords are used in expression positions and should return HIR\n * expressions. `Block` and `Append` keywords are used in statement\n * positions and should return HIR statements.\n *\n * A keyword definition has two parts:\n *\n * - `match`, which determines whether an AST node matches the keyword, and can\n * optionally return some information extracted from the AST node.\n * - `translate`, which takes a matching AST node as well as the extracted\n * information and returns an appropriate HIR instruction.\n *\n * # Example\n *\n * This keyword:\n *\n * - turns `(hello)` into `\"hello\"`\n * - as long as `hello` is not in scope\n * - makes it an error to pass any arguments (such as `(hello world)`)\n *\n * ```ts\n * keywords('SubExpr').kw('hello', {\n * assert(node: ExprKeywordNode): Result<void> | false {\n * // we don't want to transform `hello` as a `PathExpression`\n * if (node.type !== 'SubExpression') {\n * return false;\n * }\n *\n * // node.head would be `LocalVarHead` if `hello` was in scope\n * if (node.head.type !== 'FreeVarHead') {\n * return false;\n * }\n *\n * if (node.params.length || node.hash) {\n * return Err(generateSyntaxError(`(hello) does not take any arguments`), node.loc);\n * } else {\n * return Ok();\n * }\n * },\n *\n * translate(node: ASTv2.SubExpression): hir.Expression {\n * return ASTv2.builders.literal(\"hello\", node.loc)\n * }\n * })\n * ```\n *\n * The keyword infrastructure checks to make sure that the node is the right\n * type before calling `assert`, so you only need to consider `SubExpression`\n * and `PathExpression` here. It also checks to make sure that the node passed\n * to `assert` has the keyword name in the right place.\n *\n * Note the important difference between returning `false` from `assert`,\n * which just means that the node didn't match, and returning `Err`, which\n * means that the node matched, but there was a keyword-specific syntax\n * error.\n */\n\n\n function keywords(type) {\n return new Keywords(type);\n }\n\n function hasPath(node$$1) {\n return node$$1.callee.type === 'Path';\n }\n\n function isHelperInvocation(node$$1) {\n if (!hasPath(node$$1)) {\n return false;\n }\n\n return !node$$1.args.isEmpty();\n }\n\n function isSimplePath(path) {\n if (path.type === 'Path') {\n var head = path.ref,\n parts = path.tail;\n return head.type === 'Free' && head.resolution !== _syntax.ASTv2.STRICT_RESOLUTION && parts.length === 0;\n } else {\n return false;\n }\n }\n\n function isStrictHelper(expr) {\n if (expr.callee.type !== 'Path') {\n return true;\n }\n\n if (expr.callee.ref.type !== 'Free') {\n return true;\n }\n\n return expr.callee.ref.resolution === _syntax.ASTv2.STRICT_RESOLUTION;\n }\n\n function assertIsValidModifier(helper) {\n if (isStrictHelper(helper) || isSimplePath(helper.callee)) {\n return;\n }\n\n throw (0, _syntax.generateSyntaxError)(\"`\" + printPath(helper.callee) + \"` is not a valid name for a modifier\", helper.loc);\n }\n\n function printPath(path) {\n switch (path.type) {\n case 'Literal':\n return JSON.stringify(path.value);\n\n case 'Path':\n {\n var printedPath = [printPathHead(path.ref)];\n printedPath.push.apply(printedPath, path.tail.map(function (t) {\n return t.chars;\n }));\n return printedPath.join('.');\n }\n\n case 'Call':\n return \"(\" + printPath(path.callee) + \" ...)\";\n\n case 'DeprecatedCall':\n return \"\" + path.callee.name;\n\n case 'Interpolate':\n throw (0, _util.unreachable)('a concat statement cannot appear as the head of an expression');\n }\n }\n\n function printPathHead(head) {\n switch (head.type) {\n case 'Arg':\n return head.name.chars;\n\n case 'Free':\n case 'Local':\n return head.name;\n\n case 'This':\n return 'this';\n }\n }\n\n var NormalizeExpressions = /*#__PURE__*/function () {\n function NormalizeExpressions() {}\n\n var _proto8 = NormalizeExpressions.prototype;\n\n _proto8.visit = function visit(node$$1, state) {\n switch (node$$1.type) {\n case 'Literal':\n return Ok(this.Literal(node$$1));\n\n case 'Interpolate':\n return this.Interpolate(node$$1, state);\n\n case 'Path':\n return this.PathExpression(node$$1);\n\n case 'Call':\n var translated = CALL_KEYWORDS.translate(node$$1, state);\n\n if (translated !== null) {\n return translated;\n }\n\n return this.CallExpression(node$$1, state);\n\n case 'DeprecatedCall':\n return this.DeprecaedCallExpression(node$$1, state);\n }\n };\n\n _proto8.visitList = function visitList(nodes, state) {\n return new ResultArray(nodes.map(function (e) {\n return VISIT_EXPRS.visit(e, state);\n })).toOptionalList();\n }\n /**\n * Normalize paths into `hir.Path` or a `hir.Expr` that corresponds to the ref.\n *\n * TODO since keywords don't support tails anyway, distinguish PathExpression from\n * VariableReference in ASTv2.\n */\n ;\n\n _proto8.PathExpression = function PathExpression(path) {\n var ref = this.VariableReference(path.ref);\n var tail = path.tail;\n\n if ((0, _util.isPresent)(tail)) {\n var tailLoc = tail[0].loc.extend(tail[tail.length - 1].loc);\n return Ok(new _PathExpression({\n loc: path.loc,\n head: ref,\n tail: new Tail({\n loc: tailLoc,\n members: tail\n })\n }));\n } else {\n return Ok(ref);\n }\n };\n\n _proto8.VariableReference = function VariableReference(ref) {\n return ref;\n };\n\n _proto8.Literal = function Literal(literal) {\n return literal;\n };\n\n _proto8.Interpolate = function Interpolate(expr, state) {\n var parts = expr.parts.map(convertPathToCallIfKeyword);\n return VISIT_EXPRS.visitList(parts, state).mapOk(function (parts) {\n return new InterpolateExpression({\n loc: expr.loc,\n parts: parts\n });\n });\n };\n\n _proto8.CallExpression = function CallExpression(expr, state) {\n if (!hasPath(expr)) {\n throw new Error(\"unimplemented subexpression at the head of a subexpression\");\n } else {\n return Result.all(VISIT_EXPRS.visit(expr.callee, state), VISIT_EXPRS.Args(expr.args, state)).mapOk(function (_ref3) {\n var callee = _ref3[0],\n args = _ref3[1];\n return new _CallExpression({\n loc: expr.loc,\n callee: callee,\n args: args\n });\n });\n }\n };\n\n _proto8.DeprecaedCallExpression = function DeprecaedCallExpression(_ref4, _state) {\n var arg = _ref4.arg,\n callee = _ref4.callee,\n loc = _ref4.loc;\n return Ok(new DeprecatedCallExpression({\n loc: loc,\n arg: arg,\n callee: callee\n }));\n };\n\n _proto8.Args = function Args(_ref5, state) {\n var positional = _ref5.positional,\n named = _ref5.named,\n loc = _ref5.loc;\n return Result.all(this.Positional(positional, state), this.NamedArguments(named, state)).mapOk(function (_ref6) {\n var positional = _ref6[0],\n named = _ref6[1];\n return new _Args({\n loc: loc,\n positional: positional,\n named: named\n });\n });\n };\n\n _proto8.Positional = function Positional(positional, state) {\n return VISIT_EXPRS.visitList(positional.exprs, state).mapOk(function (list) {\n return new _Positional({\n loc: positional.loc,\n list: list\n });\n });\n };\n\n _proto8.NamedArguments = function NamedArguments(named, state) {\n var pairs = named.entries.map(function (arg) {\n var value = convertPathToCallIfKeyword(arg.value);\n return VISIT_EXPRS.visit(value, state).mapOk(function (value) {\n return new NamedArgument({\n loc: arg.loc,\n key: arg.name,\n value: value\n });\n });\n });\n return new ResultArray(pairs).toOptionalList().mapOk(function (pairs) {\n return new _NamedArguments({\n loc: named.loc,\n entries: pairs\n });\n });\n };\n\n return NormalizeExpressions;\n }();\n\n function convertPathToCallIfKeyword(path) {\n if (path.type === 'Path' && path.ref.type === 'Free' && path.ref.name in _syntax.KEYWORDS_TYPES) {\n return new _syntax.ASTv2.CallExpression({\n callee: path,\n args: _syntax.ASTv2.Args.empty(path.loc),\n loc: path.loc\n });\n }\n\n return path;\n }\n\n var VISIT_EXPRS = new NormalizeExpressions();\n var CurriedTypeToReadableType = (_CurriedTypeToReadabl = {}, _CurriedTypeToReadabl[0\n /* Component */\n ] = 'component', _CurriedTypeToReadabl[1\n /* Helper */\n ] = 'helper', _CurriedTypeToReadabl[2\n /* Modifier */\n ] = 'modifier', _CurriedTypeToReadabl);\n\n function assertCurryKeyword(curriedType) {\n return function (node$$1, state) {\n var readableType = CurriedTypeToReadableType[curriedType];\n var stringsAllowed = curriedType === 0\n /* Component */\n ;\n var args = node$$1.args;\n var definition = args.nth(0);\n\n if (definition === null) {\n return Err((0, _syntax.generateSyntaxError)(\"(\" + readableType + \") requires a \" + readableType + \" definition or identifier as its first positional parameter, did not receive any parameters.\", args.loc));\n }\n\n if (definition.type === 'Literal') {\n if (stringsAllowed && state.isStrict) {\n return Err((0, _syntax.generateSyntaxError)(\"(\" + readableType + \") cannot resolve string values in strict mode templates\", node$$1.loc));\n } else if (!stringsAllowed) {\n return Err((0, _syntax.generateSyntaxError)(\"(\" + readableType + \") cannot resolve string values, you must pass a \" + readableType + \" definition directly\", node$$1.loc));\n }\n }\n\n args = new _syntax.ASTv2.Args({\n positional: new _syntax.ASTv2.PositionalArguments({\n exprs: args.positional.exprs.slice(1),\n loc: args.positional.loc\n }),\n named: args.named,\n loc: args.loc\n });\n return Ok({\n definition: definition,\n args: args\n });\n };\n }\n\n function translateCurryKeyword(curriedType) {\n return function (_ref7, _ref8) {\n var node$$1 = _ref7.node,\n state = _ref7.state;\n var definition = _ref8.definition,\n args = _ref8.args;\n var definitionResult = VISIT_EXPRS.visit(definition, state);\n var argsResult = VISIT_EXPRS.Args(args, state);\n return Result.all(definitionResult, argsResult).mapOk(function (_ref9) {\n var definition = _ref9[0],\n args = _ref9[1];\n return new Curry({\n loc: node$$1.loc,\n curriedType: curriedType,\n definition: definition,\n args: args\n });\n });\n };\n }\n\n function curryKeyword(curriedType) {\n return {\n assert: assertCurryKeyword(curriedType),\n translate: translateCurryKeyword(curriedType)\n };\n }\n\n function assertGetDynamicVarKeyword(node$$1) {\n var call = node$$1.type === 'AppendContent' ? node$$1.value : node$$1;\n var named = call.type === 'Call' ? call.args.named : null;\n var positionals = call.type === 'Call' ? call.args.positional : null;\n\n if (named && !named.isEmpty()) {\n return Err((0, _syntax.generateSyntaxError)(\"(-get-dynamic-vars) does not take any named arguments\", node$$1.loc));\n }\n\n var varName = positionals === null || positionals === void 0 ? void 0 : positionals.nth(0);\n\n if (!varName) {\n return Err((0, _syntax.generateSyntaxError)(\"(-get-dynamic-vars) requires a var name to get\", node$$1.loc));\n }\n\n if (positionals && positionals.size > 1) {\n return Err((0, _syntax.generateSyntaxError)(\"(-get-dynamic-vars) only receives one positional arg\", node$$1.loc));\n }\n\n return Ok(varName);\n }\n\n function translateGetDynamicVarKeyword(_ref10, name) {\n var node$$1 = _ref10.node,\n state = _ref10.state;\n return VISIT_EXPRS.visit(name, state).mapOk(function (name) {\n return new GetDynamicVar({\n name: name,\n loc: node$$1.loc\n });\n });\n }\n\n var getDynamicVarKeyword = {\n assert: assertGetDynamicVarKeyword,\n translate: translateGetDynamicVarKeyword\n };\n\n function assertHasBlockKeyword(type) {\n return function (node$$1) {\n var call = node$$1.type === 'AppendContent' ? node$$1.value : node$$1;\n var named = call.type === 'Call' ? call.args.named : null;\n var positionals = call.type === 'Call' ? call.args.positional : null;\n\n if (named && !named.isEmpty()) {\n return Err((0, _syntax.generateSyntaxError)(\"(\" + type + \") does not take any named arguments\", call.loc));\n }\n\n if (!positionals || positionals.isEmpty()) {\n return Ok(_syntax.SourceSlice.synthetic('default'));\n } else if (positionals.exprs.length === 1) {\n var positional = positionals.exprs[0];\n\n if (_syntax.ASTv2.isLiteral(positional, 'string')) {\n return Ok(positional.toSlice());\n } else {\n return Err((0, _syntax.generateSyntaxError)(\"(\" + type + \") can only receive a string literal as its first argument\", call.loc));\n }\n } else {\n return Err((0, _syntax.generateSyntaxError)(\"(\" + type + \") only takes a single positional argument\", call.loc));\n }\n };\n }\n\n function translateHasBlockKeyword(type) {\n return function (_ref11, target) {\n var node$$1 = _ref11.node,\n scope = _ref11.state.scope;\n var block = type === 'has-block' ? new HasBlock({\n loc: node$$1.loc,\n target: target,\n symbol: scope.allocateBlock(target.chars)\n }) : new HasBlockParams({\n loc: node$$1.loc,\n target: target,\n symbol: scope.allocateBlock(target.chars)\n });\n return Ok(block);\n };\n }\n\n function hasBlockKeyword(type) {\n return {\n assert: assertHasBlockKeyword(type),\n translate: translateHasBlockKeyword(type)\n };\n }\n\n function assertIfUnlessInlineKeyword(type) {\n return function (originalNode) {\n var _a;\n\n var inverted = type === 'unless';\n var node$$1 = originalNode.type === 'AppendContent' ? originalNode.value : originalNode;\n var named = node$$1.type === 'Call' ? node$$1.args.named : null;\n var positional = node$$1.type === 'Call' ? node$$1.args.positional : null;\n\n if (named && !named.isEmpty()) {\n return Err((0, _syntax.generateSyntaxError)(\"(\" + type + \") cannot receive named parameters, received \" + named.entries.map(function (e) {\n return e.name.chars;\n }).join(', '), originalNode.loc));\n }\n\n var condition = positional === null || positional === void 0 ? void 0 : positional.nth(0);\n\n if (!positional || !condition) {\n return Err((0, _syntax.generateSyntaxError)(\"When used inline, (\" + type + \") requires at least two parameters 1. the condition that determines the state of the (\" + type + \"), and 2. the value to return if the condition is \" + (inverted ? 'false' : 'true') + \". Did not receive any parameters\", originalNode.loc));\n }\n\n var truthy = positional.nth(1);\n var falsy = positional.nth(2);\n\n if (truthy === null) {\n return Err((0, _syntax.generateSyntaxError)(\"When used inline, (\" + type + \") requires at least two parameters 1. the condition that determines the state of the (\" + type + \"), and 2. the value to return if the condition is \" + (inverted ? 'false' : 'true') + \". Received only one parameter, the condition\", originalNode.loc));\n }\n\n if (positional.size > 3) {\n return Err((0, _syntax.generateSyntaxError)(\"When used inline, (\" + type + \") can receive a maximum of three positional parameters 1. the condition that determines the state of the (\" + type + \"), 2. the value to return if the condition is \" + (inverted ? 'false' : 'true') + \", and 3. the value to return if the condition is \" + (inverted ? 'true' : 'false') + \". Received \" + ((_a = positional === null || positional === void 0 ? void 0 : positional.size) !== null && _a !== void 0 ? _a : 0) + \" parameters\", originalNode.loc));\n }\n\n return Ok({\n condition: condition,\n truthy: truthy,\n falsy: falsy\n });\n };\n }\n\n function translateIfUnlessInlineKeyword(type) {\n var inverted = type === 'unless';\n return function (_ref12, _ref13) {\n var node$$1 = _ref12.node,\n state = _ref12.state;\n var condition = _ref13.condition,\n truthy = _ref13.truthy,\n falsy = _ref13.falsy;\n var conditionResult = VISIT_EXPRS.visit(condition, state);\n var truthyResult = VISIT_EXPRS.visit(truthy, state);\n var falsyResult = falsy ? VISIT_EXPRS.visit(falsy, state) : Ok(null);\n return Result.all(conditionResult, truthyResult, falsyResult).mapOk(function (_ref14) {\n var condition = _ref14[0],\n truthy = _ref14[1],\n falsy = _ref14[2];\n\n if (inverted) {\n condition = new Not({\n value: condition,\n loc: node$$1.loc\n });\n }\n\n return new IfInline({\n loc: node$$1.loc,\n condition: condition,\n truthy: truthy,\n falsy: falsy\n });\n });\n };\n }\n\n function ifUnlessInlineKeyword(type) {\n return {\n assert: assertIfUnlessInlineKeyword(type),\n translate: translateIfUnlessInlineKeyword(type)\n };\n }\n\n function assertLogKeyword(node$$1) {\n var _node$$1$args = node$$1.args,\n named = _node$$1$args.named,\n positional = _node$$1$args.positional;\n\n if (named && !named.isEmpty()) {\n return Err((0, _syntax.generateSyntaxError)(\"(log) does not take any named arguments\", node$$1.loc));\n }\n\n return Ok(positional);\n }\n\n function translateLogKeyword(_ref15, positional) {\n var node$$1 = _ref15.node,\n state = _ref15.state;\n return VISIT_EXPRS.Positional(positional, state).mapOk(function (positional) {\n return new Log({\n positional: positional,\n loc: node$$1.loc\n });\n });\n }\n\n var logKeyword = {\n assert: assertLogKeyword,\n translate: translateLogKeyword\n };\n var CALL_KEYWORDS = keywords('Call').kw('has-block', hasBlockKeyword('has-block')).kw('has-block-params', hasBlockKeyword('has-block-params')).kw('-get-dynamic-var', getDynamicVarKeyword).kw('log', logKeyword).kw('if', ifUnlessInlineKeyword('if')).kw('unless', ifUnlessInlineKeyword('unless')).kw('component', curryKeyword(0\n /* Component */\n )).kw('helper', curryKeyword(1\n /* Helper */\n )).kw('modifier', curryKeyword(2\n /* Modifier */\n ));\n\n function toAppend(_ref16) {\n var assert = _ref16.assert,\n _translate = _ref16.translate;\n return {\n assert: assert,\n translate: function translate(_ref17, value) {\n var node$$1 = _ref17.node,\n state = _ref17.state;\n\n var result = _translate({\n node: node$$1,\n state: state\n }, value);\n\n return result.mapOk(function (text) {\n return new AppendTextNode({\n text: text,\n loc: node$$1.loc\n });\n });\n }\n };\n }\n\n var APPEND_KEYWORDS = keywords('Append').kw('has-block', toAppend(hasBlockKeyword('has-block'))).kw('has-block-params', toAppend(hasBlockKeyword('has-block-params'))).kw('-get-dynamic-var', toAppend(getDynamicVarKeyword)).kw('log', toAppend(logKeyword)).kw('if', toAppend(ifUnlessInlineKeyword('if'))).kw('unless', toAppend(ifUnlessInlineKeyword('unless'))).kw('yield', {\n assert: function assert(node$$1) {\n var args = node$$1.args;\n\n if (args.named.isEmpty()) {\n return Ok({\n target: _syntax.SourceSpan.synthetic('default').toSlice(),\n positional: args.positional\n });\n } else {\n var target = args.named.get('to');\n\n if (args.named.size > 1 || target === null) {\n return Err((0, _syntax.generateSyntaxError)(\"yield only takes a single named argument: 'to'\", args.named.loc));\n }\n\n if (_syntax.ASTv2.isLiteral(target, 'string')) {\n return Ok({\n target: target.toSlice(),\n positional: args.positional\n });\n } else {\n return Err((0, _syntax.generateSyntaxError)(\"you can only yield to a literal string value\", target.loc));\n }\n }\n },\n translate: function translate(_ref18, _ref19) {\n var node$$1 = _ref18.node,\n state = _ref18.state;\n var target = _ref19.target,\n positional = _ref19.positional;\n return VISIT_EXPRS.Positional(positional, state).mapOk(function (positional) {\n return new Yield({\n loc: node$$1.loc,\n target: target,\n to: state.scope.allocateBlock(target.chars),\n positional: positional\n });\n });\n }\n }).kw('partial', {\n assert: function assert(node$$1, state) {\n if (state.isStrict) {\n return Err((0, _syntax.generateSyntaxError)('{{partial}} is not allowed in strict mode templates', node$$1.loc));\n }\n\n var _node$$1$args2 = node$$1.args,\n positional = _node$$1$args2.positional,\n named = _node$$1$args2.named;\n var trusting = node$$1.trusting;\n\n if (positional.isEmpty()) {\n return Err((0, _syntax.generateSyntaxError)(\"Partial found with no arguments. You must specify a template name\", node$$1.loc));\n } else if (positional.size !== 1) {\n return Err((0, _syntax.generateSyntaxError)(\"Partial found with \" + positional.exprs.length + \" arguments. You must specify a template name\", node$$1.loc));\n }\n\n if (named.isEmpty()) {\n if (trusting) {\n return Err((0, _syntax.generateSyntaxError)(\"{{{partial ...}}} is not supported, please use {{partial ...}} instead\", node$$1.loc));\n }\n\n return Ok(positional.nth(0));\n } else {\n return Err((0, _syntax.generateSyntaxError)(\"Partial does not take any named argument\", node$$1.loc));\n }\n },\n translate: function translate(_ref20, expr) {\n var node$$1 = _ref20.node,\n state = _ref20.state;\n state.scope.setHasEval();\n var visited = expr === undefined ? Ok(new _syntax.ASTv2.LiteralExpression({\n loc: _syntax.SourceSpan.synthetic('undefined'),\n value: undefined\n })) : VISIT_EXPRS.visit(expr, state);\n return visited.mapOk(function (target) {\n return new Partial({\n loc: node$$1.loc,\n scope: state.scope,\n target: target\n });\n });\n }\n }).kw('debugger', {\n assert: function assert(node$$1) {\n var args = node$$1.args;\n var positional = args.positional;\n\n if (args.isEmpty()) {\n return Ok(undefined);\n } else {\n if (positional.isEmpty()) {\n return Err((0, _syntax.generateSyntaxError)(\"debugger does not take any named arguments\", node$$1.loc));\n } else {\n return Err((0, _syntax.generateSyntaxError)(\"debugger does not take any positional arguments\", node$$1.loc));\n }\n }\n },\n translate: function translate(_ref21) {\n var node$$1 = _ref21.node,\n scope = _ref21.state.scope;\n scope.setHasEval();\n return Ok(new Debugger({\n loc: node$$1.loc,\n scope: scope\n }));\n }\n }).kw('component', {\n assert: assertCurryKeyword(0\n /* Component */\n ),\n translate: function translate(_ref22, _ref23) {\n var node$$1 = _ref22.node,\n state = _ref22.state;\n var definition = _ref23.definition,\n args = _ref23.args;\n var definitionResult = VISIT_EXPRS.visit(definition, state);\n var argsResult = VISIT_EXPRS.Args(args, state);\n return Result.all(definitionResult, argsResult).mapOk(function (_ref24) {\n var definition = _ref24[0],\n args = _ref24[1];\n return new InvokeComponent({\n loc: node$$1.loc,\n definition: definition,\n args: args,\n blocks: null\n });\n });\n }\n }).kw('helper', {\n assert: assertCurryKeyword(1\n /* Helper */\n ),\n translate: function translate(_ref25, _ref26) {\n var node$$1 = _ref25.node,\n state = _ref25.state;\n var definition = _ref26.definition,\n args = _ref26.args;\n var definitionResult = VISIT_EXPRS.visit(definition, state);\n var argsResult = VISIT_EXPRS.Args(args, state);\n return Result.all(definitionResult, argsResult).mapOk(function (_ref27) {\n var definition = _ref27[0],\n args = _ref27[1];\n var text = new _CallExpression({\n callee: definition,\n args: args,\n loc: node$$1.loc\n });\n return new AppendTextNode({\n loc: node$$1.loc,\n text: text\n });\n });\n }\n });\n var BLOCK_KEYWORDS = keywords('Block').kw('in-element', {\n assert: function assert(node$$1) {\n var args = node$$1.args;\n var guid = args.get('guid');\n\n if (guid) {\n return Err((0, _syntax.generateSyntaxError)(\"Cannot pass `guid` to `{{#in-element}}`\", guid.loc));\n }\n\n var insertBefore = args.get('insertBefore');\n var destination = args.nth(0);\n\n if (destination === null) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#in-element}} requires a target element as its first positional parameter\", args.loc));\n } // TODO Better syntax checks\n\n\n return Ok({\n insertBefore: insertBefore,\n destination: destination\n });\n },\n translate: function translate(_ref28, _ref29) {\n var node$$1 = _ref28.node,\n state = _ref28.state;\n var insertBefore = _ref29.insertBefore,\n destination = _ref29.destination;\n var named = node$$1.blocks.get('default');\n var body = VISIT_STMTS.NamedBlock(named, state);\n var destinationResult = VISIT_EXPRS.visit(destination, state);\n return Result.all(body, destinationResult).andThen(function (_ref30) {\n var body = _ref30[0],\n destination = _ref30[1];\n\n if (insertBefore) {\n return VISIT_EXPRS.visit(insertBefore, state).mapOk(function (insertBefore) {\n return {\n body: body,\n destination: destination,\n insertBefore: insertBefore\n };\n });\n } else {\n return Ok({\n body: body,\n destination: destination,\n insertBefore: new Missing({\n loc: node$$1.callee.loc.collapse('end')\n })\n });\n }\n }).mapOk(function (_ref31) {\n var body = _ref31.body,\n destination = _ref31.destination,\n insertBefore = _ref31.insertBefore;\n return new InElement({\n loc: node$$1.loc,\n block: body,\n insertBefore: insertBefore,\n guid: state.generateUniqueCursor(),\n destination: destination\n });\n });\n }\n }).kw('if', {\n assert: function assert(node$$1) {\n var args = node$$1.args;\n\n if (!args.named.isEmpty()) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#if}} cannot receive named parameters, received \" + args.named.entries.map(function (e) {\n return e.name.chars;\n }).join(', '), node$$1.loc));\n }\n\n if (args.positional.size > 1) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#if}} can only receive one positional parameter in block form, the conditional value. Received \" + args.positional.size + \" parameters\", node$$1.loc));\n }\n\n var condition = args.nth(0);\n\n if (condition === null) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#if}} requires a condition as its first positional parameter, did not receive any parameters\", node$$1.loc));\n }\n\n return Ok({\n condition: condition\n });\n },\n translate: function translate(_ref32, _ref33) {\n var node$$1 = _ref32.node,\n state = _ref32.state;\n var condition = _ref33.condition;\n var block = node$$1.blocks.get('default');\n var inverse = node$$1.blocks.get('else');\n var conditionResult = VISIT_EXPRS.visit(condition, state);\n var blockResult = VISIT_STMTS.NamedBlock(block, state);\n var inverseResult = inverse ? VISIT_STMTS.NamedBlock(inverse, state) : Ok(null);\n return Result.all(conditionResult, blockResult, inverseResult).mapOk(function (_ref34) {\n var condition = _ref34[0],\n block = _ref34[1],\n inverse = _ref34[2];\n return new If({\n loc: node$$1.loc,\n condition: condition,\n block: block,\n inverse: inverse\n });\n });\n }\n }).kw('unless', {\n assert: function assert(node$$1) {\n var args = node$$1.args;\n\n if (!args.named.isEmpty()) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#unless}} cannot receive named parameters, received \" + args.named.entries.map(function (e) {\n return e.name.chars;\n }).join(', '), node$$1.loc));\n }\n\n if (args.positional.size > 1) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#unless}} can only receive one positional parameter in block form, the conditional value. Received \" + args.positional.size + \" parameters\", node$$1.loc));\n }\n\n var condition = args.nth(0);\n\n if (condition === null) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#unless}} requires a condition as its first positional parameter, did not receive any parameters\", node$$1.loc));\n }\n\n return Ok({\n condition: condition\n });\n },\n translate: function translate(_ref35, _ref36) {\n var node$$1 = _ref35.node,\n state = _ref35.state;\n var condition = _ref36.condition;\n var block = node$$1.blocks.get('default');\n var inverse = node$$1.blocks.get('else');\n var conditionResult = VISIT_EXPRS.visit(condition, state);\n var blockResult = VISIT_STMTS.NamedBlock(block, state);\n var inverseResult = inverse ? VISIT_STMTS.NamedBlock(inverse, state) : Ok(null);\n return Result.all(conditionResult, blockResult, inverseResult).mapOk(function (_ref37) {\n var condition = _ref37[0],\n block = _ref37[1],\n inverse = _ref37[2];\n return new If({\n loc: node$$1.loc,\n condition: new Not({\n value: condition,\n loc: node$$1.loc\n }),\n block: block,\n inverse: inverse\n });\n });\n }\n }).kw('each', {\n assert: function assert(node$$1) {\n var args = node$$1.args;\n\n if (!args.named.entries.every(function (e) {\n return e.name.chars === 'key';\n })) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#each}} can only receive the 'key' named parameter, received \" + args.named.entries.filter(function (e) {\n return e.name.chars !== 'key';\n }).map(function (e) {\n return e.name.chars;\n }).join(', '), args.named.loc));\n }\n\n if (args.positional.size > 1) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#each}} can only receive one positional parameter, the collection being iterated. Received \" + args.positional.size + \" parameters\", args.positional.loc));\n }\n\n var value = args.nth(0);\n var key = args.get('key');\n\n if (value === null) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#each}} requires an iterable value to be passed as its first positional parameter, did not receive any parameters\", args.loc));\n }\n\n return Ok({\n value: value,\n key: key\n });\n },\n translate: function translate(_ref38, _ref39) {\n var node$$1 = _ref38.node,\n state = _ref38.state;\n var value = _ref39.value,\n key = _ref39.key;\n var block = node$$1.blocks.get('default');\n var inverse = node$$1.blocks.get('else');\n var valueResult = VISIT_EXPRS.visit(value, state);\n var keyResult = key ? VISIT_EXPRS.visit(key, state) : Ok(null);\n var blockResult = VISIT_STMTS.NamedBlock(block, state);\n var inverseResult = inverse ? VISIT_STMTS.NamedBlock(inverse, state) : Ok(null);\n return Result.all(valueResult, keyResult, blockResult, inverseResult).mapOk(function (_ref40) {\n var value = _ref40[0],\n key = _ref40[1],\n block = _ref40[2],\n inverse = _ref40[3];\n return new Each({\n loc: node$$1.loc,\n value: value,\n key: key,\n block: block,\n inverse: inverse\n });\n });\n }\n }).kw('with', {\n assert: function assert(node$$1) {\n var args = node$$1.args;\n\n if (!args.named.isEmpty()) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#with}} cannot receive named parameters, received \" + args.named.entries.map(function (e) {\n return e.name.chars;\n }).join(', '), args.named.loc));\n }\n\n if (args.positional.size > 1) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#with}} can only receive one positional parameter. Received \" + args.positional.size + \" parameters\", args.positional.loc));\n }\n\n var value = args.nth(0);\n\n if (value === null) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#with}} requires a value as its first positional parameter, did not receive any parameters\", args.loc));\n }\n\n return Ok({\n value: value\n });\n },\n translate: function translate(_ref41, _ref42) {\n var node$$1 = _ref41.node,\n state = _ref41.state;\n var value = _ref42.value;\n var block = node$$1.blocks.get('default');\n var inverse = node$$1.blocks.get('else');\n var valueResult = VISIT_EXPRS.visit(value, state);\n var blockResult = VISIT_STMTS.NamedBlock(block, state);\n var inverseResult = inverse ? VISIT_STMTS.NamedBlock(inverse, state) : Ok(null);\n return Result.all(valueResult, blockResult, inverseResult).mapOk(function (_ref43) {\n var value = _ref43[0],\n block = _ref43[1],\n inverse = _ref43[2];\n return new With({\n loc: node$$1.loc,\n value: value,\n block: block,\n inverse: inverse\n });\n });\n }\n }).kw('let', {\n assert: function assert(node$$1) {\n var args = node$$1.args;\n\n if (!args.named.isEmpty()) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#let}} cannot receive named parameters, received \" + args.named.entries.map(function (e) {\n return e.name.chars;\n }).join(', '), args.named.loc));\n }\n\n if (args.positional.size === 0) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#let}} requires at least one value as its first positional parameter, did not receive any parameters\", args.positional.loc));\n }\n\n if (node$$1.blocks.get('else')) {\n return Err((0, _syntax.generateSyntaxError)(\"{{#let}} cannot receive an {{else}} block\", args.positional.loc));\n }\n\n return Ok({\n positional: args.positional\n });\n },\n translate: function translate(_ref44, _ref45) {\n var node$$1 = _ref44.node,\n state = _ref44.state;\n var positional = _ref45.positional;\n var block = node$$1.blocks.get('default');\n var positionalResult = VISIT_EXPRS.Positional(positional, state);\n var blockResult = VISIT_STMTS.NamedBlock(block, state);\n return Result.all(positionalResult, blockResult).mapOk(function (_ref46) {\n var positional = _ref46[0],\n block = _ref46[1];\n return new Let({\n loc: node$$1.loc,\n positional: positional,\n block: block\n });\n });\n }\n }).kw('-with-dynamic-vars', {\n assert: function assert(node$$1) {\n return Ok({\n named: node$$1.args.named\n });\n },\n translate: function translate(_ref47, _ref48) {\n var node$$1 = _ref47.node,\n state = _ref47.state;\n var named = _ref48.named;\n var block = node$$1.blocks.get('default');\n var namedResult = VISIT_EXPRS.NamedArguments(named, state);\n var blockResult = VISIT_STMTS.NamedBlock(block, state);\n return Result.all(namedResult, blockResult).mapOk(function (_ref49) {\n var named = _ref49[0],\n block = _ref49[1];\n return new WithDynamicVars({\n loc: node$$1.loc,\n named: named,\n block: block\n });\n });\n }\n }).kw('component', {\n assert: assertCurryKeyword(0\n /* Component */\n ),\n translate: function translate(_ref50, _ref51) {\n var node$$1 = _ref50.node,\n state = _ref50.state;\n var definition = _ref51.definition,\n args = _ref51.args;\n var definitionResult = VISIT_EXPRS.visit(definition, state);\n var argsResult = VISIT_EXPRS.Args(args, state);\n var blocksResult = VISIT_STMTS.NamedBlocks(node$$1.blocks, state);\n return Result.all(definitionResult, argsResult, blocksResult).mapOk(function (_ref52) {\n var definition = _ref52[0],\n args = _ref52[1],\n blocks = _ref52[2];\n return new InvokeComponent({\n loc: node$$1.loc,\n definition: definition,\n args: args,\n blocks: blocks\n });\n });\n }\n });\n var MODIFIER_KEYWORDS = keywords('Modifier'); // There is a small whitelist of namespaced attributes specially\n // enumerated in\n // https://www.w3.org/TR/html/syntax.html#attributes-0\n //\n // > When a foreign element has one of the namespaced attributes given by\n // > the local name and namespace of the first and second cells of a row\n // > from the following table, it must be written using the name given by\n // > the third cell from the same row.\n //\n // In all other cases, colons are interpreted as a regular character\n // with no special meaning:\n //\n // > No other namespaced attribute can be expressed in the HTML syntax.\n\n var XLINK = 'http://www.w3.org/1999/xlink';\n var XML = 'http://www.w3.org/XML/1998/namespace';\n var XMLNS = 'http://www.w3.org/2000/xmlns/';\n var WHITELIST = {\n 'xlink:actuate': XLINK,\n 'xlink:arcrole': XLINK,\n 'xlink:href': XLINK,\n 'xlink:role': XLINK,\n 'xlink:show': XLINK,\n 'xlink:title': XLINK,\n 'xlink:type': XLINK,\n 'xml:base': XML,\n 'xml:lang': XML,\n 'xml:space': XML,\n xmlns: XMLNS,\n 'xmlns:xlink': XMLNS\n };\n\n function getAttrNamespace(attrName) {\n return WHITELIST[attrName];\n }\n\n var DEFLATE_TAG_TABLE = {\n div: 0\n /* div */\n ,\n span: 1\n /* span */\n ,\n p: 2\n /* p */\n ,\n a: 3\n /* a */\n\n };\n var INFLATE_TAG_TABLE = ['div', 'span', 'p', 'a'];\n\n function deflateTagName(tagName) {\n var _a;\n\n return (_a = DEFLATE_TAG_TABLE[tagName]) !== null && _a !== void 0 ? _a : tagName;\n }\n\n function inflateTagName(tagName) {\n return typeof tagName === 'string' ? tagName : INFLATE_TAG_TABLE[tagName];\n }\n\n var DEFLATE_ATTR_TABLE = {\n class: 0\n /* class */\n ,\n id: 1\n /* id */\n ,\n value: 2\n /* value */\n ,\n name: 3\n /* name */\n ,\n type: 4\n /* type */\n ,\n style: 5\n /* style */\n ,\n href: 6\n /* href */\n\n };\n var INFLATE_ATTR_TABLE = ['class', 'id', 'value', 'name', 'type', 'style', 'href'];\n\n function deflateAttrName(attrName) {\n var _a;\n\n return (_a = DEFLATE_ATTR_TABLE[attrName]) !== null && _a !== void 0 ? _a : attrName;\n }\n\n function inflateAttrName(attrName) {\n return typeof attrName === 'string' ? attrName : INFLATE_ATTR_TABLE[attrName];\n }\n\n var ClassifiedElement = /*#__PURE__*/function () {\n function ClassifiedElement(element, delegate, state) {\n this.element = element;\n this.state = state;\n this.delegate = delegate;\n }\n\n var _proto9 = ClassifiedElement.prototype;\n\n _proto9.toStatement = function toStatement() {\n var _this4 = this;\n\n return this.prepare().andThen(function (prepared) {\n return _this4.delegate.toStatement(_this4, prepared);\n });\n };\n\n _proto9.attr = function attr(_attr) {\n var _this5 = this;\n\n var name = _attr.name;\n var rawValue = _attr.value;\n var namespace = getAttrNamespace(name.chars) || undefined;\n\n if (_syntax.ASTv2.isLiteral(rawValue, 'string')) {\n return Ok(new StaticAttr({\n loc: _attr.loc,\n name: name,\n value: rawValue.toSlice(),\n namespace: namespace,\n kind: {\n component: this.delegate.dynamicFeatures\n }\n }));\n }\n\n return VISIT_EXPRS.visit(convertPathToCallIfKeyword(rawValue), this.state).mapOk(function (value) {\n var isTrusting = _attr.trusting;\n return new DynamicAttr({\n loc: _attr.loc,\n name: name,\n value: value,\n namespace: namespace,\n kind: {\n trusting: isTrusting,\n component: _this5.delegate.dynamicFeatures\n }\n });\n });\n };\n\n _proto9.modifier = function modifier(_modifier) {\n if (isHelperInvocation(_modifier)) {\n assertIsValidModifier(_modifier);\n }\n\n var translated = MODIFIER_KEYWORDS.translate(_modifier, this.state);\n\n if (translated !== null) {\n return translated;\n }\n\n var head = VISIT_EXPRS.visit(_modifier.callee, this.state);\n var args = VISIT_EXPRS.Args(_modifier.args, this.state);\n return Result.all(head, args).mapOk(function (_ref53) {\n var head = _ref53[0],\n args = _ref53[1];\n return new Modifier({\n loc: _modifier.loc,\n callee: head,\n args: args\n });\n });\n };\n\n _proto9.attrs = function attrs() {\n var attrs = new ResultArray();\n var args = new ResultArray(); // Unlike most attributes, the `type` attribute can change how\n // subsequent attributes are interpreted by the browser. To address\n // this, in simple cases, we special case the `type` attribute to be set\n // last. For elements with splattributes, where attribute order affects\n // precedence, this re-ordering happens at runtime instead.\n // See https://github.com/glimmerjs/glimmer-vm/pull/726\n\n var typeAttr = null;\n var simple = this.element.attrs.filter(function (attr) {\n return attr.type === 'SplatAttr';\n }).length === 0;\n\n for (var _iterator4 = (0, _emberBabel.createForOfIteratorHelperLoose)(this.element.attrs), _step4; !(_step4 = _iterator4()).done;) {\n var _attr2 = _step4.value;\n\n if (_attr2.type === 'SplatAttr') {\n attrs.add(Ok(new SplatAttr({\n loc: _attr2.loc,\n symbol: this.state.scope.allocateBlock('attrs')\n })));\n } else if (_attr2.name.chars === 'type' && simple) {\n typeAttr = _attr2;\n } else {\n attrs.add(this.attr(_attr2));\n }\n }\n\n for (var _iterator5 = (0, _emberBabel.createForOfIteratorHelperLoose)(this.element.componentArgs), _step5; !(_step5 = _iterator5()).done;) {\n var _arg = _step5.value;\n args.add(this.delegate.arg(_arg, this));\n }\n\n if (typeAttr) {\n attrs.add(this.attr(typeAttr));\n }\n\n return Result.all(args.toArray(), attrs.toArray()).mapOk(function (_ref54) {\n var args = _ref54[0],\n attrs = _ref54[1];\n return {\n attrs: attrs,\n args: new _NamedArguments({\n loc: (0, _syntax.maybeLoc)(args, _syntax.SourceSpan.NON_EXISTENT),\n entries: OptionalList(args)\n })\n };\n });\n };\n\n _proto9.prepare = function prepare() {\n var _this6 = this;\n\n var attrs = this.attrs();\n var modifiers = new ResultArray(this.element.modifiers.map(function (m) {\n return _this6.modifier(m);\n })).toArray();\n return Result.all(attrs, modifiers).mapOk(function (_ref55) {\n var result = _ref55[0],\n modifiers = _ref55[1];\n var attrs = result.attrs,\n args = result.args;\n var elementParams = [].concat(attrs, modifiers);\n var params = new ElementParameters({\n loc: (0, _syntax.maybeLoc)(elementParams, _syntax.SourceSpan.NON_EXISTENT),\n body: OptionalList(elementParams)\n });\n return {\n args: args,\n params: params\n };\n });\n };\n\n return ClassifiedElement;\n }();\n\n function hasDynamicFeatures(_ref56) {\n var attrs = _ref56.attrs,\n modifiers = _ref56.modifiers;\n\n // ElementModifier needs the special ComponentOperations\n if (modifiers.length > 0) {\n return true;\n } // Splattributes need the special ComponentOperations to merge into\n\n\n return !!attrs.filter(function (attr) {\n return attr.type === 'SplatAttr';\n })[0];\n }\n\n var ClassifiedComponent = /*#__PURE__*/function () {\n function ClassifiedComponent(tag, element) {\n this.tag = tag;\n this.element = element;\n this.dynamicFeatures = true;\n }\n\n var _proto10 = ClassifiedComponent.prototype;\n\n _proto10.arg = function arg(attr, _ref57) {\n var state = _ref57.state;\n var name = attr.name;\n return VISIT_EXPRS.visit(convertPathToCallIfKeyword(attr.value), state).mapOk(function (value) {\n return new NamedArgument({\n loc: attr.loc,\n key: name,\n value: value\n });\n });\n };\n\n _proto10.toStatement = function toStatement(component, _ref58) {\n var _this7 = this;\n\n var args = _ref58.args,\n params = _ref58.params;\n var element = component.element,\n state = component.state;\n return this.blocks(state).mapOk(function (blocks) {\n return new Component({\n loc: element.loc,\n tag: _this7.tag,\n params: params,\n args: args,\n blocks: blocks\n });\n });\n };\n\n _proto10.blocks = function blocks(state) {\n return VISIT_STMTS.NamedBlocks(this.element.blocks, state);\n };\n\n return ClassifiedComponent;\n }();\n\n var ClassifiedSimpleElement = /*#__PURE__*/function () {\n function ClassifiedSimpleElement(tag, element, dynamicFeatures) {\n this.tag = tag;\n this.element = element;\n this.dynamicFeatures = dynamicFeatures;\n this.isComponent = false;\n }\n\n var _proto11 = ClassifiedSimpleElement.prototype;\n\n _proto11.arg = function arg(attr) {\n return Err((0, _syntax.generateSyntaxError)(attr.name.chars + \" is not a valid attribute name. @arguments are only allowed on components, but the tag for this element (`\" + this.tag.chars + \"`) is a regular, non-component HTML element.\", attr.loc));\n };\n\n _proto11.toStatement = function toStatement(classified, _ref59) {\n var _this8 = this;\n\n var params = _ref59.params;\n var state = classified.state,\n element = classified.element;\n var body = VISIT_STMTS.visitList(this.element.body, state);\n return body.mapOk(function (body) {\n return new SimpleElement({\n loc: element.loc,\n tag: _this8.tag,\n params: params,\n body: body.toArray(),\n dynamicFeatures: _this8.dynamicFeatures\n });\n });\n };\n\n return ClassifiedSimpleElement;\n }();\n\n var NormalizationStatements = /*#__PURE__*/function () {\n function NormalizationStatements() {}\n\n var _proto12 = NormalizationStatements.prototype;\n\n _proto12.visitList = function visitList(nodes, state) {\n return new ResultArray(nodes.map(function (e) {\n return VISIT_STMTS.visit(e, state);\n })).toOptionalList().mapOk(function (list) {\n return list.filter(function (s) {\n return s !== null;\n });\n });\n };\n\n _proto12.visit = function visit(node$$1, state) {\n switch (node$$1.type) {\n case 'GlimmerComment':\n return Ok(null);\n\n case 'AppendContent':\n return this.AppendContent(node$$1, state);\n\n case 'HtmlText':\n return Ok(this.TextNode(node$$1));\n\n case 'HtmlComment':\n return Ok(this.HtmlComment(node$$1));\n\n case 'InvokeBlock':\n return this.InvokeBlock(node$$1, state);\n\n case 'InvokeComponent':\n return this.Component(node$$1, state);\n\n case 'SimpleElement':\n return this.SimpleElement(node$$1, state);\n }\n };\n\n _proto12.InvokeBlock = function InvokeBlock(node$$1, state) {\n var _this9 = this;\n\n var translated = BLOCK_KEYWORDS.translate(node$$1, state);\n\n if (translated !== null) {\n return translated;\n }\n\n var head = VISIT_EXPRS.visit(node$$1.callee, state);\n var args = VISIT_EXPRS.Args(node$$1.args, state);\n return Result.all(head, args).andThen(function (_ref60) {\n var head = _ref60[0],\n args = _ref60[1];\n return _this9.NamedBlocks(node$$1.blocks, state).mapOk(function (blocks) {\n return new _InvokeBlock({\n loc: node$$1.loc,\n head: head,\n args: args,\n blocks: blocks\n });\n });\n });\n };\n\n _proto12.NamedBlocks = function NamedBlocks(blocks, state) {\n var _this10 = this;\n\n var list = new ResultArray(blocks.blocks.map(function (b) {\n return _this10.NamedBlock(b, state);\n }));\n return list.toArray().mapOk(function (list) {\n return new _NamedBlocks({\n loc: blocks.loc,\n blocks: OptionalList(list)\n });\n });\n };\n\n _proto12.NamedBlock = function NamedBlock(named, state) {\n var body = state.visitBlock(named.block);\n return body.mapOk(function (body) {\n return new _NamedBlock({\n loc: named.loc,\n name: named.name,\n body: body.toArray(),\n scope: named.block.scope\n });\n });\n };\n\n _proto12.SimpleElement = function SimpleElement(element, state) {\n return new ClassifiedElement(element, new ClassifiedSimpleElement(element.tag, element, hasDynamicFeatures(element)), state).toStatement();\n };\n\n _proto12.Component = function Component(component, state) {\n return VISIT_EXPRS.visit(component.callee, state).andThen(function (callee) {\n return new ClassifiedElement(component, new ClassifiedComponent(callee, component), state).toStatement();\n });\n };\n\n _proto12.AppendContent = function AppendContent(append, state) {\n var translated = APPEND_KEYWORDS.translate(append, state);\n\n if (translated !== null) {\n return translated;\n }\n\n var value = VISIT_EXPRS.visit(append.value, state);\n return value.mapOk(function (value) {\n if (append.trusting) {\n return new AppendTrustedHTML({\n loc: append.loc,\n html: value\n });\n } else {\n return new AppendTextNode({\n loc: append.loc,\n text: value\n });\n }\n });\n };\n\n _proto12.TextNode = function TextNode(text) {\n return new AppendTextNode({\n loc: text.loc,\n text: new _syntax.ASTv2.LiteralExpression({\n loc: text.loc,\n value: text.chars\n })\n });\n };\n\n _proto12.HtmlComment = function HtmlComment(comment) {\n return new AppendComment({\n loc: comment.loc,\n value: comment.text\n });\n };\n\n return NormalizationStatements;\n }();\n\n var VISIT_STMTS = new NormalizationStatements();\n /**\n * This is the mutable state for this compiler pass.\n */\n\n var NormalizationState = /*#__PURE__*/function () {\n function NormalizationState(block, isStrict) {\n this.isStrict = isStrict;\n this._cursorCount = 0;\n this._currentScope = block;\n }\n\n var _proto13 = NormalizationState.prototype;\n\n _proto13.generateUniqueCursor = function generateUniqueCursor() {\n return \"%cursor:\" + this._cursorCount++ + \"%\";\n };\n\n _proto13.visitBlock = function visitBlock(block) {\n var oldBlock = this._currentScope;\n this._currentScope = block.scope;\n\n try {\n return VISIT_STMTS.visitList(block.body, this);\n } finally {\n this._currentScope = oldBlock;\n }\n };\n\n (0, _emberBabel.createClass)(NormalizationState, [{\n key: \"scope\",\n get: function get() {\n return this._currentScope;\n }\n }]);\n return NormalizationState;\n }();\n /**\n * Normalize the AST from @glimmer/syntax into the HIR. The HIR has special\n * instructions for keywords like `{{yield}}`, `(has-block)` and\n * `{{#in-element}}`.\n *\n * Most importantly, it also classifies HTML element syntax into:\n *\n * 1. simple HTML element (with optional splattributes)\n * 2. component invocation\n *\n * Because the @glimmer/syntax AST gives us a string for an element's tag,\n * this pass also normalizes that string into an expression.\n *\n * ```\n * // normalized into a path expression whose head is `this` and tail is\n * // `[\"x\"]`\n * <this.x />\n *\n * {{#let expr as |t|}}\n * // `\"t\"` is normalized into a variable lookup.\n * <t />\n *\n * // normalized into a path expression whose head is the variable lookup\n * // `t` and tail is `[\"input\"]`.\n * <t.input />\n * {{/let}}\n *\n * // normalized into a free variable lookup for `SomeComponent` (with the\n * // context `ComponentHead`).\n * <SomeComponent />\n *\n * // normalized into a path expression whose head is the free variable\n * // `notInScope` (with the context `Expression`), and whose tail is\n * // `[\"SomeComponent\"]`. In resolver mode, this path will be rejected later,\n * // since it cannot serve as an input to the resolver.\n * <notInScope.SomeComponent />\n * ```\n */\n\n\n function normalize$1(source, root, isStrict) {\n // create a new context for the normalization pass\n var state = new NormalizationState(root.table, isStrict);\n var body = VISIT_STMTS.visitList(root.body, state);\n return body.mapOk(function (body) {\n return new Template({\n loc: root.loc,\n scope: root.table,\n body: body.toArray()\n });\n });\n }\n\n var WireFormatDebugger = /*#__PURE__*/function () {\n function WireFormatDebugger(_ref61) {\n var _statements = _ref61[0],\n symbols = _ref61[1],\n _hasEval = _ref61[2],\n upvars = _ref61[3];\n this.upvars = upvars;\n this.symbols = symbols;\n }\n\n var _proto14 = WireFormatDebugger.prototype;\n\n _proto14.format = function format(program) {\n var out = [];\n\n for (var _iterator6 = (0, _emberBabel.createForOfIteratorHelperLoose)(program[0]), _step6; !(_step6 = _iterator6()).done;) {\n var _statement = _step6.value;\n out.push(this.formatOpcode(_statement));\n }\n\n return out;\n };\n\n _proto14.formatOpcode = function formatOpcode(opcode) {\n if (Array.isArray(opcode)) {\n switch (opcode[0]) {\n case 1\n /* Append */\n :\n return ['append', this.formatOpcode(opcode[1])];\n\n case 2\n /* TrustingAppend */\n :\n return ['trusting-append', this.formatOpcode(opcode[1])];\n\n case 6\n /* Block */\n :\n return ['block', this.formatOpcode(opcode[1]), this.formatParams(opcode[2]), this.formatHash(opcode[3]), this.formatBlocks(opcode[4])];\n\n case 40\n /* InElement */\n :\n return ['in-element', opcode[1], this.formatOpcode(opcode[2]), opcode[3] ? this.formatOpcode(opcode[3]) : undefined];\n\n case 10\n /* OpenElement */\n :\n return ['open-element', inflateTagName(opcode[1])];\n\n case 11\n /* OpenElementWithSplat */\n :\n return ['open-element-with-splat', inflateTagName(opcode[1])];\n\n case 13\n /* CloseElement */\n :\n return ['close-element'];\n\n case 12\n /* FlushElement */\n :\n return ['flush-element'];\n\n case 14\n /* StaticAttr */\n :\n return ['static-attr', inflateAttrName(opcode[1]), opcode[2], opcode[3]];\n\n case 24\n /* StaticComponentAttr */\n :\n return ['static-component-attr', inflateAttrName(opcode[1]), opcode[2], opcode[3]];\n\n case 15\n /* DynamicAttr */\n :\n return ['dynamic-attr', inflateAttrName(opcode[1]), this.formatOpcode(opcode[2]), opcode[3]];\n\n case 16\n /* ComponentAttr */\n :\n return ['component-attr', inflateAttrName(opcode[1]), this.formatOpcode(opcode[2]), opcode[3]];\n\n case 17\n /* AttrSplat */\n :\n return ['attr-splat'];\n\n case 18\n /* Yield */\n :\n return ['yield', opcode[1], this.formatParams(opcode[2])];\n\n case 19\n /* Partial */\n :\n return ['partial', this.formatOpcode(opcode[1]), opcode[2]];\n\n case 20\n /* DynamicArg */\n :\n return ['dynamic-arg', opcode[1], this.formatOpcode(opcode[2])];\n\n case 21\n /* StaticArg */\n :\n return ['static-arg', opcode[1], this.formatOpcode(opcode[2])];\n\n case 22\n /* TrustingDynamicAttr */\n :\n return ['trusting-dynamic-attr', inflateAttrName(opcode[1]), this.formatOpcode(opcode[2]), opcode[3]];\n\n case 23\n /* TrustingComponentAttr */\n :\n return ['trusting-component-attr', inflateAttrName(opcode[1]), this.formatOpcode(opcode[2]), opcode[3]];\n\n case 26\n /* Debugger */\n :\n return ['debugger', opcode[1]];\n\n case 3\n /* Comment */\n :\n return ['comment', opcode[1]];\n\n case 4\n /* Modifier */\n :\n return ['modifier', this.formatOpcode(opcode[1]), this.formatParams(opcode[2]), this.formatHash(opcode[3])];\n\n case 8\n /* Component */\n :\n return ['component', this.formatOpcode(opcode[1]), this.formatElementParams(opcode[2]), this.formatHash(opcode[3]), this.formatBlocks(opcode[4])];\n\n case 48\n /* HasBlock */\n :\n return ['has-block', this.formatOpcode(opcode[1])];\n\n case 49\n /* HasBlockParams */\n :\n return ['has-block-params', this.formatOpcode(opcode[1])];\n\n case 50\n /* Curry */\n :\n return ['curry', this.formatOpcode(opcode[1]), this.formatCurryType(opcode[2]), this.formatParams(opcode[3]), this.formatHash(opcode[4])];\n\n case 27\n /* Undefined */\n :\n return ['undefined'];\n\n case 28\n /* Call */\n :\n return ['call', this.formatOpcode(opcode[1]), this.formatParams(opcode[2]), this.formatHash(opcode[3])];\n\n case 29\n /* Concat */\n :\n return ['concat', this.formatParams(opcode[1])];\n\n case 31\n /* GetStrictFree */\n :\n return ['get-strict-free', this.upvars[opcode[1]], opcode[2]];\n\n case 33\n /* GetFreeAsFallback */\n :\n return ['GetFreeAsFallback', this.upvars[opcode[1]], opcode[2]];\n\n case 34\n /* GetFreeAsComponentOrHelperHeadOrThisFallback */\n :\n return ['GetFreeAsComponentOrHelperHeadOrThisFallback', this.upvars[opcode[1]], opcode[2]];\n\n case 35\n /* GetFreeAsComponentOrHelperHead */\n :\n return ['GetFreeAsComponentOrHelperHead', this.upvars[opcode[1]], opcode[2]];\n\n case 36\n /* GetFreeAsHelperHeadOrThisFallback */\n :\n return ['GetFreeAsHelperHeadOrThisFallback', this.upvars[opcode[1]], opcode[2]];\n\n case 99\n /* GetFreeAsDeprecatedHelperHeadOrThisFallback */\n :\n return ['GetFreeAsDeprecatedHelperHeadOrThisFallback', this.upvars[opcode[1]]];\n\n case 37\n /* GetFreeAsHelperHead */\n :\n return ['GetFreeAsHelperHead', this.upvars[opcode[1]], opcode[2]];\n\n case 39\n /* GetFreeAsComponentHead */\n :\n return ['GetFreeAsComponentHead', this.upvars[opcode[1]], opcode[2]];\n\n case 38\n /* GetFreeAsModifierHead */\n :\n return ['GetFreeAsModifierHead', this.upvars[opcode[1]], opcode[2]];\n\n case 30\n /* GetSymbol */\n :\n {\n if (opcode[1] === 0) {\n return ['get-symbol', 'this', opcode[2]];\n } else {\n return ['get-symbol', this.symbols[opcode[1] - 1], opcode[2]];\n }\n }\n\n case 32\n /* GetTemplateSymbol */\n :\n {\n return ['get-template-symbol', opcode[1], opcode[2]];\n }\n\n case 41\n /* If */\n :\n return ['if', this.formatOpcode(opcode[1]), this.formatBlock(opcode[2]), opcode[3] ? this.formatBlock(opcode[3]) : null];\n\n case 52\n /* IfInline */\n :\n return ['if-inline'];\n\n case 51\n /* Not */\n :\n return ['not'];\n\n case 42\n /* Each */\n :\n return ['each', this.formatOpcode(opcode[1]), opcode[2] ? this.formatOpcode(opcode[2]) : null, this.formatBlock(opcode[3]), opcode[4] ? this.formatBlock(opcode[4]) : null];\n\n case 43\n /* With */\n :\n return ['with', this.formatOpcode(opcode[1]), this.formatBlock(opcode[2]), opcode[3] ? this.formatBlock(opcode[3]) : null];\n\n case 44\n /* Let */\n :\n return ['let', this.formatParams(opcode[1]), this.formatBlock(opcode[2])];\n\n case 54\n /* Log */\n :\n return ['log', this.formatParams(opcode[1])];\n\n case 45\n /* WithDynamicVars */\n :\n return ['-with-dynamic-vars', this.formatHash(opcode[1]), this.formatBlock(opcode[2])];\n\n case 53\n /* GetDynamicVar */\n :\n return ['-get-dynamic-vars', this.formatOpcode(opcode[1])];\n\n case 46\n /* InvokeComponent */\n :\n return ['component', this.formatOpcode(opcode[1]), this.formatParams(opcode[2]), this.formatHash(opcode[3]), this.formatBlocks(opcode[4])];\n }\n } else {\n return opcode;\n }\n };\n\n _proto14.formatCurryType = function formatCurryType(value) {\n switch (value) {\n case 0\n /* Component */\n :\n return 'component';\n\n case 1\n /* Helper */\n :\n return 'helper';\n\n case 2\n /* Modifier */\n :\n return 'modifier';\n\n default:\n throw (0, _util.exhausted)(value);\n }\n };\n\n _proto14.formatElementParams = function formatElementParams(opcodes) {\n var _this11 = this;\n\n if (opcodes === null) return null;\n return opcodes.map(function (o) {\n return _this11.formatOpcode(o);\n });\n };\n\n _proto14.formatParams = function formatParams(opcodes) {\n var _this12 = this;\n\n if (opcodes === null) return null;\n return opcodes.map(function (o) {\n return _this12.formatOpcode(o);\n });\n };\n\n _proto14.formatHash = function formatHash(hash) {\n var _this13 = this;\n\n if (hash === null) return null;\n return hash[0].reduce(function (accum, key, index) {\n accum[key] = _this13.formatOpcode(hash[1][index]);\n return accum;\n }, (0, _util.dict)());\n };\n\n _proto14.formatBlocks = function formatBlocks(blocks) {\n var _this14 = this;\n\n if (blocks === null) return null;\n return blocks[0].reduce(function (accum, key, index) {\n accum[key] = _this14.formatBlock(blocks[1][index]);\n return accum;\n }, (0, _util.dict)());\n };\n\n _proto14.formatBlock = function formatBlock(block) {\n var _this15 = this;\n\n return {\n statements: block[0].map(function (s) {\n return _this15.formatOpcode(s);\n }),\n parameters: block[1]\n };\n };\n\n return WireFormatDebugger;\n }();\n\n _exports.WireFormatDebugger = WireFormatDebugger;\n\n var ExpressionEncoder = /*#__PURE__*/function () {\n function ExpressionEncoder() {}\n\n var _proto15 = ExpressionEncoder.prototype;\n\n _proto15.expr = function expr(_expr) {\n switch (_expr.type) {\n case 'Missing':\n return undefined;\n\n case 'Literal':\n return this.Literal(_expr);\n\n case 'CallExpression':\n return this.CallExpression(_expr);\n\n case 'DeprecatedCallExpression':\n return this.DeprecatedCallExpression(_expr);\n\n case 'PathExpression':\n return this.PathExpression(_expr);\n\n case 'Arg':\n return [30\n /* GetSymbol */\n , _expr.symbol];\n\n case 'Local':\n return this.Local(_expr);\n\n case 'This':\n return [30\n /* GetSymbol */\n , 0];\n\n case 'Free':\n return [_expr.resolution.resolution(), _expr.symbol];\n\n case 'HasBlock':\n return this.HasBlock(_expr);\n\n case 'HasBlockParams':\n return this.HasBlockParams(_expr);\n\n case 'Curry':\n return this.Curry(_expr);\n\n case 'Not':\n return this.Not(_expr);\n\n case 'IfInline':\n return this.IfInline(_expr);\n\n case 'InterpolateExpression':\n return this.InterpolateExpression(_expr);\n\n case 'GetDynamicVar':\n return this.GetDynamicVar(_expr);\n\n case 'Log':\n return this.Log(_expr);\n }\n };\n\n _proto15.Literal = function Literal(_ref62) {\n var value = _ref62.value;\n\n if (value === undefined) {\n return [27\n /* Undefined */\n ];\n } else {\n return value;\n }\n };\n\n _proto15.Missing = function Missing() {\n return undefined;\n };\n\n _proto15.HasBlock = function HasBlock(_ref63) {\n var symbol = _ref63.symbol;\n return [48\n /* HasBlock */\n , [30\n /* GetSymbol */\n , symbol]];\n };\n\n _proto15.HasBlockParams = function HasBlockParams(_ref64) {\n var symbol = _ref64.symbol;\n return [49\n /* HasBlockParams */\n , [30\n /* GetSymbol */\n , symbol]];\n };\n\n _proto15.Curry = function Curry(_ref65) {\n var definition = _ref65.definition,\n curriedType = _ref65.curriedType,\n args = _ref65.args;\n return [50\n /* Curry */\n , EXPR.expr(definition), curriedType, EXPR.Positional(args.positional), EXPR.NamedArguments(args.named)];\n };\n\n _proto15.Local = function Local(_ref66) {\n var isTemplateLocal = _ref66.isTemplateLocal,\n symbol = _ref66.symbol;\n return [isTemplateLocal ? 32\n /* GetTemplateSymbol */\n : 30\n /* GetSymbol */\n , symbol];\n };\n\n _proto15.GetWithResolver = function GetWithResolver(_ref67) {\n var symbol = _ref67.symbol;\n return [34\n /* GetFreeAsComponentOrHelperHeadOrThisFallback */\n , symbol];\n };\n\n _proto15.PathExpression = function PathExpression(_ref68) {\n var head = _ref68.head,\n tail = _ref68.tail;\n var getOp = EXPR.expr(head);\n return [].concat(getOp, [EXPR.Tail(tail)]);\n };\n\n _proto15.InterpolateExpression = function InterpolateExpression(_ref69) {\n var parts = _ref69.parts;\n return [29\n /* Concat */\n , parts.map(function (e) {\n return EXPR.expr(e);\n }).toArray()];\n };\n\n _proto15.CallExpression = function CallExpression(_ref70) {\n var callee = _ref70.callee,\n args = _ref70.args;\n return [28\n /* Call */\n , EXPR.expr(callee)].concat(EXPR.Args(args));\n };\n\n _proto15.DeprecatedCallExpression = function DeprecatedCallExpression(_ref71) {\n var arg = _ref71.arg,\n callee = _ref71.callee;\n return [99\n /* GetFreeAsDeprecatedHelperHeadOrThisFallback */\n , callee.symbol, [arg.chars]];\n };\n\n _proto15.Tail = function Tail(_ref72) {\n var members = _ref72.members;\n return (0, _util.mapPresent)(members, function (member) {\n return member.chars;\n });\n };\n\n _proto15.Args = function Args(_ref73) {\n var positional = _ref73.positional,\n named = _ref73.named;\n return [this.Positional(positional), this.NamedArguments(named)];\n };\n\n _proto15.Positional = function Positional(_ref74) {\n var list = _ref74.list;\n return list.map(function (l) {\n return EXPR.expr(l);\n }).toPresentArray();\n };\n\n _proto15.NamedArgument = function NamedArgument(_ref75) {\n var key = _ref75.key,\n value = _ref75.value;\n return [key.chars, EXPR.expr(value)];\n };\n\n _proto15.NamedArguments = function NamedArguments(_ref76) {\n var pairs = _ref76.entries;\n var list = pairs.toArray();\n\n if ((0, _util.isPresent)(list)) {\n var names = [];\n var values$$1 = [];\n\n for (var _iterator7 = (0, _emberBabel.createForOfIteratorHelperLoose)(list), _step7; !(_step7 = _iterator7()).done;) {\n var _pair = _step7.value;\n\n var _EXPR$NamedArgument = EXPR.NamedArgument(_pair),\n _name2 = _EXPR$NamedArgument[0],\n _value = _EXPR$NamedArgument[1];\n\n names.push(_name2);\n values$$1.push(_value);\n }\n\n (0, _util.assertPresent)(names);\n (0, _util.assertPresent)(values$$1);\n return [names, values$$1];\n } else {\n return null;\n }\n };\n\n _proto15.Not = function Not(_ref77) {\n var value = _ref77.value;\n return [51\n /* Not */\n , EXPR.expr(value)];\n };\n\n _proto15.IfInline = function IfInline(_ref78) {\n var condition = _ref78.condition,\n truthy = _ref78.truthy,\n falsy = _ref78.falsy;\n var expr = [52\n /* IfInline */\n , EXPR.expr(condition), EXPR.expr(truthy)];\n\n if (falsy) {\n expr.push(EXPR.expr(falsy));\n }\n\n return expr;\n };\n\n _proto15.GetDynamicVar = function GetDynamicVar(_ref79) {\n var name = _ref79.name;\n return [53\n /* GetDynamicVar */\n , EXPR.expr(name)];\n };\n\n _proto15.Log = function Log(_ref80) {\n var positional = _ref80.positional;\n return [54\n /* Log */\n , this.Positional(positional)];\n };\n\n return ExpressionEncoder;\n }();\n\n var EXPR = new ExpressionEncoder();\n\n var WireStatements = /*#__PURE__*/function () {\n function WireStatements(statements) {\n this.statements = statements;\n }\n\n var _proto16 = WireStatements.prototype;\n\n _proto16.toArray = function toArray() {\n return this.statements;\n };\n\n return WireStatements;\n }();\n\n var ContentEncoder = /*#__PURE__*/function () {\n function ContentEncoder() {}\n\n var _proto17 = ContentEncoder.prototype;\n\n _proto17.list = function list(statements) {\n var out = [];\n\n for (var _iterator8 = (0, _emberBabel.createForOfIteratorHelperLoose)(statements), _step8; !(_step8 = _iterator8()).done;) {\n var _statement2 = _step8.value;\n\n var _result3 = CONTENT.content(_statement2);\n\n if (_result3 && _result3 instanceof WireStatements) {\n out.push.apply(out, _result3.toArray());\n } else {\n out.push(_result3);\n }\n }\n\n return out;\n };\n\n _proto17.content = function content(stmt) {\n return this.visitContent(stmt);\n };\n\n _proto17.visitContent = function visitContent(stmt) {\n switch (stmt.type) {\n case 'Debugger':\n return [26\n /* Debugger */\n , stmt.scope.getEvalInfo()];\n\n case 'Partial':\n return this.Partial(stmt);\n\n case 'AppendComment':\n return this.AppendComment(stmt);\n\n case 'AppendTextNode':\n return this.AppendTextNode(stmt);\n\n case 'AppendTrustedHTML':\n return this.AppendTrustedHTML(stmt);\n\n case 'Yield':\n return this.Yield(stmt);\n\n case 'Component':\n return this.Component(stmt);\n\n case 'SimpleElement':\n return this.SimpleElement(stmt);\n\n case 'InElement':\n return this.InElement(stmt);\n\n case 'InvokeBlock':\n return this.InvokeBlock(stmt);\n\n case 'If':\n return this.If(stmt);\n\n case 'Each':\n return this.Each(stmt);\n\n case 'With':\n return this.With(stmt);\n\n case 'Let':\n return this.Let(stmt);\n\n case 'WithDynamicVars':\n return this.WithDynamicVars(stmt);\n\n case 'InvokeComponent':\n return this.InvokeComponent(stmt);\n\n default:\n return (0, _util.exhausted)(stmt);\n }\n };\n\n _proto17.Partial = function Partial(_ref81) {\n var target = _ref81.target,\n scope = _ref81.scope;\n return [19\n /* Partial */\n , EXPR.expr(target), scope.getEvalInfo()];\n };\n\n _proto17.Yield = function Yield(_ref82) {\n var to = _ref82.to,\n positional = _ref82.positional;\n return [18\n /* Yield */\n , to, EXPR.Positional(positional)];\n };\n\n _proto17.InElement = function InElement(_ref83) {\n var guid = _ref83.guid,\n insertBefore = _ref83.insertBefore,\n destination = _ref83.destination,\n block = _ref83.block;\n var wireBlock = CONTENT.NamedBlock(block)[1]; // let guid = args.guid;\n\n var wireDestination = EXPR.expr(destination);\n var wireInsertBefore = EXPR.expr(insertBefore);\n\n if (wireInsertBefore === undefined) {\n return [40\n /* InElement */\n , wireBlock, guid, wireDestination];\n } else {\n return [40\n /* InElement */\n , wireBlock, guid, wireDestination, wireInsertBefore];\n }\n };\n\n _proto17.InvokeBlock = function InvokeBlock(_ref84) {\n var head = _ref84.head,\n args = _ref84.args,\n blocks = _ref84.blocks;\n return [6\n /* Block */\n , EXPR.expr(head)].concat(EXPR.Args(args), [CONTENT.NamedBlocks(blocks)]);\n };\n\n _proto17.AppendTrustedHTML = function AppendTrustedHTML(_ref85) {\n var html = _ref85.html;\n return [2\n /* TrustingAppend */\n , EXPR.expr(html)];\n };\n\n _proto17.AppendTextNode = function AppendTextNode(_ref86) {\n var text = _ref86.text;\n return [1\n /* Append */\n , EXPR.expr(text)];\n };\n\n _proto17.AppendComment = function AppendComment(_ref87) {\n var value = _ref87.value;\n return [3\n /* Comment */\n , value.chars];\n };\n\n _proto17.SimpleElement = function SimpleElement(_ref88) {\n var tag = _ref88.tag,\n params = _ref88.params,\n body = _ref88.body,\n dynamicFeatures = _ref88.dynamicFeatures;\n var op = dynamicFeatures ? 11\n /* OpenElementWithSplat */\n : 10\n /* OpenElement */\n ;\n return new WireStatements([[op, deflateTagName(tag.chars)]].concat(CONTENT.ElementParameters(params).toArray(), [[12\n /* FlushElement */\n ]], CONTENT.list(body), [[13\n /* CloseElement */\n ]]));\n };\n\n _proto17.Component = function Component(_ref89) {\n var tag = _ref89.tag,\n params = _ref89.params,\n args = _ref89.args,\n blocks = _ref89.blocks;\n var wireTag = EXPR.expr(tag);\n var wirePositional = CONTENT.ElementParameters(params);\n var wireNamed = EXPR.NamedArguments(args);\n var wireNamedBlocks = CONTENT.NamedBlocks(blocks);\n return [8\n /* Component */\n , wireTag, wirePositional.toPresentArray(), wireNamed, wireNamedBlocks];\n };\n\n _proto17.ElementParameters = function ElementParameters(_ref90) {\n var body = _ref90.body;\n return body.map(function (p) {\n return CONTENT.ElementParameter(p);\n });\n };\n\n _proto17.ElementParameter = function ElementParameter(param) {\n switch (param.type) {\n case 'SplatAttr':\n return [17\n /* AttrSplat */\n , param.symbol];\n\n case 'DynamicAttr':\n return [dynamicAttrOp(param.kind)].concat(dynamicAttr(param));\n\n case 'StaticAttr':\n return [staticAttrOp(param.kind)].concat(staticAttr(param));\n\n case 'Modifier':\n return [4\n /* Modifier */\n , EXPR.expr(param.callee)].concat(EXPR.Args(param.args));\n }\n };\n\n _proto17.NamedBlocks = function NamedBlocks(_ref91) {\n var blocks = _ref91.blocks;\n var names = [];\n var serializedBlocks = [];\n\n for (var _iterator9 = (0, _emberBabel.createForOfIteratorHelperLoose)(blocks.toArray()), _step9; !(_step9 = _iterator9()).done;) {\n var _block = _step9.value;\n\n var _CONTENT$NamedBlock = CONTENT.NamedBlock(_block),\n _name3 = _CONTENT$NamedBlock[0],\n _serializedBlock = _CONTENT$NamedBlock[1];\n\n names.push(_name3);\n serializedBlocks.push(_serializedBlock);\n }\n\n return names.length > 0 ? [names, serializedBlocks] : null;\n };\n\n _proto17.NamedBlock = function NamedBlock(_ref92) {\n var name = _ref92.name,\n body = _ref92.body,\n scope = _ref92.scope;\n var nameChars = name.chars;\n\n if (nameChars === 'inverse') {\n nameChars = 'else';\n }\n\n return [nameChars, [CONTENT.list(body), scope.slots]];\n };\n\n _proto17.If = function If(_ref93) {\n var condition = _ref93.condition,\n block = _ref93.block,\n inverse = _ref93.inverse;\n return [41\n /* If */\n , EXPR.expr(condition), CONTENT.NamedBlock(block)[1], inverse ? CONTENT.NamedBlock(inverse)[1] : null];\n };\n\n _proto17.Each = function Each(_ref94) {\n var value = _ref94.value,\n key = _ref94.key,\n block = _ref94.block,\n inverse = _ref94.inverse;\n return [42\n /* Each */\n , EXPR.expr(value), key ? EXPR.expr(key) : null, CONTENT.NamedBlock(block)[1], inverse ? CONTENT.NamedBlock(inverse)[1] : null];\n };\n\n _proto17.With = function With(_ref95) {\n var value = _ref95.value,\n block = _ref95.block,\n inverse = _ref95.inverse;\n return [43\n /* With */\n , EXPR.expr(value), CONTENT.NamedBlock(block)[1], inverse ? CONTENT.NamedBlock(inverse)[1] : null];\n };\n\n _proto17.Let = function Let(_ref96) {\n var positional = _ref96.positional,\n block = _ref96.block;\n return [44\n /* Let */\n , EXPR.Positional(positional), CONTENT.NamedBlock(block)[1]];\n };\n\n _proto17.WithDynamicVars = function WithDynamicVars(_ref97) {\n var named = _ref97.named,\n block = _ref97.block;\n return [45\n /* WithDynamicVars */\n , EXPR.NamedArguments(named), CONTENT.NamedBlock(block)[1]];\n };\n\n _proto17.InvokeComponent = function InvokeComponent(_ref98) {\n var definition = _ref98.definition,\n args = _ref98.args,\n blocks = _ref98.blocks;\n return [46\n /* InvokeComponent */\n , EXPR.expr(definition), EXPR.Positional(args.positional), EXPR.NamedArguments(args.named), blocks ? CONTENT.NamedBlocks(blocks) : null];\n };\n\n return ContentEncoder;\n }();\n\n var CONTENT = new ContentEncoder();\n\n function staticAttr(_ref99) {\n var name = _ref99.name,\n value = _ref99.value,\n namespace = _ref99.namespace;\n var out = [deflateAttrName(name.chars), value.chars];\n\n if (namespace) {\n out.push(namespace);\n }\n\n return out;\n }\n\n function dynamicAttr(_ref100) {\n var name = _ref100.name,\n value = _ref100.value,\n namespace = _ref100.namespace;\n var out = [deflateAttrName(name.chars), EXPR.expr(value)];\n\n if (namespace) {\n out.push(namespace);\n }\n\n return out;\n }\n\n function staticAttrOp(kind) {\n if (kind.component) {\n return 24\n /* StaticComponentAttr */\n ;\n } else {\n return 14\n /* StaticAttr */\n ;\n }\n }\n\n function dynamicAttrOp(kind) {\n if (kind.component) {\n return kind.trusting ? 23\n /* TrustingComponentAttr */\n : 16\n /* ComponentAttr */\n ;\n } else {\n return kind.trusting ? 22\n /* TrustingDynamicAttr */\n : 15\n /* DynamicAttr */\n ;\n }\n }\n\n function visit(template) {\n var statements = CONTENT.list(template.body);\n var scope = template.scope;\n var block = [statements, scope.symbols, scope.hasEval, scope.upvars];\n return block;\n }\n\n var defaultId = function () {\n var req = typeof module === 'object' && typeof module.require === 'function' ? module.require : require;\n\n if (req) {\n try {\n var crypto = req('crypto');\n\n var idFn = function idFn(src) {\n var hash = crypto.createHash('sha1');\n hash.update(src, 'utf8'); // trim to 6 bytes of data (2^48 - 1)\n\n return hash.digest('base64').substring(0, 8);\n };\n\n idFn('test');\n return idFn;\n } catch (e) {}\n }\n\n return function idFn() {\n return null;\n };\n }();\n\n _exports.defaultId = defaultId;\n var defaultOptions = {\n id: defaultId\n };\n /*\n * Compile a string into a template javascript string.\n *\n * Example usage:\n * import { precompile } from '@glimmer/compiler';\n * import { templateFactory } from 'glimmer-runtime';\n * let templateJs = precompile(\"Howdy {{name}}\");\n * let factory = templateFactory(new Function(\"return \" + templateJs)());\n * let template = factory.create(env);\n *\n * @method precompile\n * @param {string} string a Glimmer template string\n * @return {string} a template javascript string\n */\n\n function precompileJSON(string, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var _a, _b;\n\n var source = new _syntax.Source(string, (_a = options.meta) === null || _a === void 0 ? void 0 : _a.moduleName);\n\n var _normalize = (0, _syntax.normalize)(source, options),\n ast = _normalize[0],\n locals = _normalize[1];\n\n var block = normalize$1(source, ast, (_b = options.strictMode) !== null && _b !== void 0 ? _b : false).mapOk(function (pass2In) {\n return visit(pass2In);\n });\n\n if (block.isOk) {\n return [block.value, locals];\n } else {\n throw block.reason;\n }\n } // UUID used as a unique placeholder for placing a snippet of JS code into\n // the otherwise JSON stringified value below.\n\n\n var SCOPE_PLACEHOLDER = '796d24e6-2450-4fb0-8cdf-b65638b5ef70';\n /*\n * Compile a string into a template javascript string.\n *\n * Example usage:\n * import { precompile } from '@glimmer/compiler';\n * import { templateFactory } from 'glimmer-runtime';\n * let templateJs = precompile(\"Howdy {{name}}\");\n * let factory = templateFactory(new Function(\"return \" + templateJs)());\n * let template = factory.create(env);\n *\n * @method precompile\n * @param {string} string a Glimmer template string\n * @return {string} a template javascript string\n */\n\n function precompile(source, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var _a, _b;\n\n var _precompileJSON = precompileJSON(source, options),\n block = _precompileJSON[0],\n usedLocals = _precompileJSON[1];\n\n var moduleName = (_a = options.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n var idFn = options.id || defaultId;\n var blockJSON = JSON.stringify(block);\n var templateJSONObject = {\n id: idFn(JSON.stringify(options.meta) + blockJSON),\n block: blockJSON,\n moduleName: moduleName !== null && moduleName !== void 0 ? moduleName : '(unknown template module)',\n // lying to the type checker here because we're going to\n // replace it just below, after stringification\n scope: SCOPE_PLACEHOLDER,\n isStrictMode: (_b = options.strictMode) !== null && _b !== void 0 ? _b : false\n };\n\n if (usedLocals.length === 0) {\n delete templateJSONObject.scope;\n } // JSON is javascript\n\n\n var stringified = JSON.stringify(templateJSONObject);\n\n if (usedLocals.length > 0) {\n var scopeFn = \"()=>[\" + usedLocals.join(',') + \"]\";\n stringified = stringified.replace(\"\\\"\" + SCOPE_PLACEHOLDER + \"\\\"\", scopeFn);\n }\n\n return stringified;\n }\n\n var VariableKind;\n\n (function (VariableKind) {\n VariableKind[\"Local\"] = \"Local\";\n VariableKind[\"Free\"] = \"Free\";\n VariableKind[\"Arg\"] = \"Arg\";\n VariableKind[\"Block\"] = \"Block\";\n VariableKind[\"This\"] = \"This\";\n })(VariableKind || (VariableKind = {}));\n\n function normalizeStatement(statement) {\n if (Array.isArray(statement)) {\n if (statementIsExpression(statement)) {\n return normalizeAppendExpression(statement);\n } else if (isSugaryArrayStatement(statement)) {\n return normalizeSugaryArrayStatement(statement);\n } else {\n return normalizeVerboseStatement(statement);\n }\n } else if (typeof statement === 'string') {\n return normalizeAppendHead(normalizeDottedPath(statement), false);\n } else {\n throw (0, _util.assertNever)(statement);\n }\n }\n\n function normalizeAppendHead(head, trusted) {\n if (head.type === \"GetPath\"\n /* GetPath */\n ) {\n return {\n kind: \"AppendPath\"\n /* AppendPath */\n ,\n path: head,\n trusted: trusted\n };\n } else {\n return {\n kind: \"AppendExpr\"\n /* AppendExpr */\n ,\n expr: head,\n trusted: trusted\n };\n }\n }\n\n function isSugaryArrayStatement(statement) {\n if (Array.isArray(statement) && typeof statement[0] === 'string') {\n switch (statement[0][0]) {\n case '(':\n case '#':\n case '<':\n case '!':\n return true;\n\n default:\n return false;\n }\n }\n\n return false;\n }\n\n function normalizeSugaryArrayStatement(statement) {\n var name = statement[0];\n\n switch (name[0]) {\n case '(':\n {\n var params = null;\n var hash = null;\n\n if (statement.length === 3) {\n params = normalizeParams(statement[1]);\n hash = normalizeHash(statement[2]);\n } else if (statement.length === 2) {\n if (Array.isArray(statement[1])) {\n params = normalizeParams(statement[1]);\n } else {\n hash = normalizeHash(statement[1]);\n }\n }\n\n return {\n kind: \"Call\"\n /* Call */\n ,\n head: normalizeCallHead(name),\n params: params,\n hash: hash,\n trusted: false\n };\n }\n\n case '#':\n {\n var _normalizeBuilderBloc = normalizeBuilderBlockStatement(statement),\n path = _normalizeBuilderBloc.head,\n _params = _normalizeBuilderBloc.params,\n _hash = _normalizeBuilderBloc.hash,\n blocks = _normalizeBuilderBloc.blocks,\n blockParams = _normalizeBuilderBloc.blockParams;\n\n return {\n kind: \"Block\"\n /* Block */\n ,\n head: path,\n params: _params,\n hash: _hash,\n blocks: blocks,\n blockParams: blockParams\n };\n }\n\n case '!':\n {\n var _name4 = statement[0].slice(1);\n\n var _normalizeBuilderBloc2 = normalizeBuilderBlockStatement(statement),\n _params2 = _normalizeBuilderBloc2.params,\n _hash2 = _normalizeBuilderBloc2.hash,\n _blocks = _normalizeBuilderBloc2.blocks,\n _blockParams = _normalizeBuilderBloc2.blockParams;\n\n return {\n kind: \"Keyword\"\n /* Keyword */\n ,\n name: _name4,\n params: _params2,\n hash: _hash2,\n blocks: _blocks,\n blockParams: _blockParams\n };\n }\n\n case '<':\n {\n var attrs = (0, _util.dict)();\n var block = [];\n\n if (statement.length === 3) {\n attrs = normalizeAttrs(statement[1]);\n block = normalizeBlock(statement[2]);\n } else if (statement.length === 2) {\n if (Array.isArray(statement[1])) {\n block = normalizeBlock(statement[1]);\n } else {\n attrs = normalizeAttrs(statement[1]);\n }\n }\n\n return {\n kind: \"Element\"\n /* Element */\n ,\n name: extractElement(name),\n attrs: attrs,\n block: block\n };\n }\n\n default:\n throw new Error(\"Unreachable \" + JSON.stringify(statement) + \" in normalizeSugaryArrayStatement\");\n }\n }\n\n function normalizeVerboseStatement(statement) {\n switch (statement[0]) {\n case 0\n /* Literal */\n :\n {\n return {\n kind: \"Literal\"\n /* Literal */\n ,\n value: statement[1]\n };\n }\n\n case 2\n /* Append */\n :\n {\n return normalizeAppendExpression(statement[1], statement[2]);\n }\n\n case 3\n /* Modifier */\n :\n {\n return {\n kind: \"Modifier\"\n /* Modifier */\n ,\n params: normalizeParams(statement[1]),\n hash: normalizeHash(statement[2])\n };\n }\n\n case 4\n /* DynamicComponent */\n :\n {\n return {\n kind: \"DynamicComponent\"\n /* DynamicComponent */\n ,\n expr: normalizeExpression(statement[1]),\n hash: normalizeHash(statement[2]),\n block: normalizeBlock(statement[3])\n };\n }\n\n case 1\n /* Comment */\n :\n {\n return {\n kind: \"Comment\"\n /* Comment */\n ,\n value: statement[1]\n };\n }\n }\n }\n\n function extractBlockHead(name) {\n var result = /^(#|!)(.*)$/.exec(name);\n\n if (result === null) {\n throw new Error(\"Unexpected missing # in block head\");\n }\n\n return normalizeDottedPath(result[2]);\n }\n\n function normalizeCallHead(name) {\n var result = /^\\((.*)\\)$/.exec(name);\n\n if (result === null) {\n throw new Error(\"Unexpected missing () in call head\");\n }\n\n return normalizeDottedPath(result[1]);\n }\n\n function normalizePath(head, tail) {\n if (tail === void 0) {\n tail = [];\n }\n\n var pathHead = normalizePathHead(head);\n\n if ((0, _util.isPresent)(tail)) {\n return {\n type: \"GetPath\"\n /* GetPath */\n ,\n path: {\n head: pathHead,\n tail: tail\n }\n };\n } else {\n return {\n type: \"GetVar\"\n /* GetVar */\n ,\n variable: pathHead\n };\n }\n }\n\n function normalizeDottedPath(whole) {\n var _normalizePathHead = normalizePathHead(whole),\n kind = _normalizePathHead.kind,\n rest = _normalizePathHead.name;\n\n var _rest$split = rest.split('.'),\n name = _rest$split[0],\n tail = _rest$split.slice(1);\n\n var variable = {\n kind: kind,\n name: name,\n mode: 'loose'\n };\n\n if ((0, _util.isPresent)(tail)) {\n return {\n type: \"GetPath\"\n /* GetPath */\n ,\n path: {\n head: variable,\n tail: tail\n }\n };\n } else {\n return {\n type: \"GetVar\"\n /* GetVar */\n ,\n variable: variable\n };\n }\n }\n\n function normalizePathHead(whole) {\n var kind;\n var name;\n\n if (/^this(\\.|$)/.exec(whole)) {\n return {\n kind: VariableKind.This,\n name: whole,\n mode: 'loose'\n };\n }\n\n switch (whole[0]) {\n case '^':\n kind = VariableKind.Free;\n name = whole.slice(1);\n break;\n\n case '@':\n kind = VariableKind.Arg;\n name = whole.slice(1);\n break;\n\n case '&':\n kind = VariableKind.Block;\n name = whole.slice(1);\n break;\n\n default:\n kind = VariableKind.Local;\n name = whole;\n }\n\n return {\n kind: kind,\n name: name,\n mode: 'loose'\n };\n }\n\n function normalizeBuilderBlockStatement(statement) {\n var head = statement[0];\n var blocks = (0, _util.dict)();\n var params = null;\n var hash = null;\n var blockParams = null;\n\n if (statement.length === 2) {\n blocks = normalizeBlocks(statement[1]);\n } else if (statement.length === 3) {\n if (Array.isArray(statement[1])) {\n params = normalizeParams(statement[1]);\n } else {\n var _normalizeBlockHash = normalizeBlockHash(statement[1]);\n\n hash = _normalizeBlockHash.hash;\n blockParams = _normalizeBlockHash.blockParams;\n }\n\n blocks = normalizeBlocks(statement[2]);\n } else if (statement.length === 4) {\n params = normalizeParams(statement[1]);\n\n var _normalizeBlockHash2 = normalizeBlockHash(statement[2]);\n\n hash = _normalizeBlockHash2.hash;\n blockParams = _normalizeBlockHash2.blockParams;\n blocks = normalizeBlocks(statement[3]);\n }\n\n return {\n head: extractBlockHead(head),\n params: params,\n hash: hash,\n blockParams: blockParams,\n blocks: blocks\n };\n }\n\n function normalizeBlockHash(hash) {\n if (hash === null) {\n return {\n hash: null,\n blockParams: null\n };\n }\n\n var out = null;\n var blockParams = null;\n entries(hash, function (key, value) {\n if (key === 'as') {\n blockParams = Array.isArray(value) ? value : [value];\n } else {\n out = out || (0, _util.dict)();\n out[key] = normalizeExpression(value);\n }\n });\n return {\n hash: out,\n blockParams: blockParams\n };\n }\n\n function entries(dict$$1, callback) {\n Object.keys(dict$$1).forEach(function (key) {\n var value = dict$$1[key];\n callback(key, value);\n });\n }\n\n function normalizeBlocks(value) {\n if (Array.isArray(value)) {\n return {\n default: normalizeBlock(value)\n };\n } else {\n return mapObject(value, normalizeBlock);\n }\n }\n\n function normalizeBlock(block) {\n return block.map(function (s) {\n return normalizeStatement(s);\n });\n }\n\n function normalizeAttrs(attrs) {\n return mapObject(attrs, function (a) {\n return normalizeAttr(a).expr;\n });\n }\n\n function normalizeAttr(attr) {\n if (attr === 'splat') {\n return {\n expr: \"Splat\"\n /* Splat */\n ,\n trusted: false\n };\n } else {\n var expr = normalizeExpression(attr);\n return {\n expr: expr,\n trusted: false\n };\n }\n }\n\n function mapObject(object, callback) {\n var out = (0, _util.dict)();\n Object.keys(object).forEach(function (k) {\n out[k] = callback(object[k], k);\n });\n return out;\n }\n\n function extractElement(input) {\n var match = /^<([a-z0-9\\-][a-zA-Z0-9\\-]*)>$/.exec(input);\n return match ? match[1] : null;\n }\n\n function normalizeAppendExpression(expression, forceTrusted) {\n if (forceTrusted === void 0) {\n forceTrusted = false;\n }\n\n if (expression === null || expression === undefined) {\n return {\n expr: {\n type: \"Literal\"\n /* Literal */\n ,\n value: expression\n },\n kind: \"AppendExpr\"\n /* AppendExpr */\n ,\n trusted: false\n };\n } else if (Array.isArray(expression)) {\n switch (expression[0]) {\n case 0\n /* Literal */\n :\n return {\n expr: {\n type: \"Literal\"\n /* Literal */\n ,\n value: expression[1]\n },\n kind: \"AppendExpr\"\n /* AppendExpr */\n ,\n trusted: false\n };\n\n case 5\n /* Get */\n :\n {\n return normalizeAppendHead(normalizePath(expression[1], expression[2]), forceTrusted);\n }\n\n case 6\n /* Concat */\n :\n {\n var expr = {\n type: \"Concat\"\n /* Concat */\n ,\n params: normalizeParams(expression.slice(1))\n };\n return {\n expr: expr,\n kind: \"AppendExpr\"\n /* AppendExpr */\n ,\n trusted: forceTrusted\n };\n }\n\n case 7\n /* HasBlock */\n :\n return {\n expr: {\n type: \"HasBlock\"\n /* HasBlock */\n ,\n name: expression[1]\n },\n kind: \"AppendExpr\"\n /* AppendExpr */\n ,\n trusted: forceTrusted\n };\n\n case 8\n /* HasBlockParams */\n :\n return {\n expr: {\n type: \"HasBlockParams\"\n /* HasBlockParams */\n ,\n name: expression[1]\n },\n kind: \"AppendExpr\"\n /* AppendExpr */\n ,\n trusted: forceTrusted\n };\n\n default:\n {\n if (isBuilderCallExpression(expression)) {\n return {\n expr: normalizeCallExpression(expression),\n kind: \"AppendExpr\"\n /* AppendExpr */\n ,\n trusted: forceTrusted\n };\n } else {\n throw new Error(\"Unexpected array in expression position (wasn't a tuple expression and \" + expression[0] + \" isn't wrapped in parens, so it isn't a call): \" + JSON.stringify(expression));\n }\n }\n // BuilderCallExpression\n }\n } else if (typeof expression !== 'object') {\n switch (typeof expression) {\n case 'string':\n {\n return normalizeAppendHead(normalizeDottedPath(expression), forceTrusted);\n }\n\n case 'boolean':\n case 'number':\n return {\n expr: {\n type: \"Literal\"\n /* Literal */\n ,\n value: expression\n },\n kind: \"AppendExpr\"\n /* AppendExpr */\n ,\n trusted: true\n };\n\n default:\n throw (0, _util.assertNever)(expression);\n }\n } else {\n throw (0, _util.assertNever)(expression);\n }\n }\n\n function normalizeExpression(expression) {\n if (expression === null || expression === undefined) {\n return {\n type: \"Literal\"\n /* Literal */\n ,\n value: expression\n };\n } else if (Array.isArray(expression)) {\n switch (expression[0]) {\n case 0\n /* Literal */\n :\n return {\n type: \"Literal\"\n /* Literal */\n ,\n value: expression[1]\n };\n\n case 5\n /* Get */\n :\n {\n return normalizePath(expression[1], expression[2]);\n }\n\n case 6\n /* Concat */\n :\n {\n var expr = {\n type: \"Concat\"\n /* Concat */\n ,\n params: normalizeParams(expression.slice(1))\n };\n return expr;\n }\n\n case 7\n /* HasBlock */\n :\n return {\n type: \"HasBlock\"\n /* HasBlock */\n ,\n name: expression[1]\n };\n\n case 8\n /* HasBlockParams */\n :\n return {\n type: \"HasBlockParams\"\n /* HasBlockParams */\n ,\n name: expression[1]\n };\n\n default:\n {\n if (isBuilderCallExpression(expression)) {\n return normalizeCallExpression(expression);\n } else {\n throw new Error(\"Unexpected array in expression position (wasn't a tuple expression and \" + expression[0] + \" isn't wrapped in parens, so it isn't a call): \" + JSON.stringify(expression));\n }\n }\n // BuilderCallExpression\n }\n } else if (typeof expression !== 'object') {\n switch (typeof expression) {\n case 'string':\n {\n return normalizeDottedPath(expression);\n }\n\n case 'boolean':\n case 'number':\n return {\n type: \"Literal\"\n /* Literal */\n ,\n value: expression\n };\n\n default:\n throw (0, _util.assertNever)(expression);\n }\n } else {\n throw (0, _util.assertNever)(expression);\n }\n }\n\n function statementIsExpression(statement) {\n if (!Array.isArray(statement)) {\n return false;\n }\n\n var name = statement[0];\n\n if (typeof name === 'number') {\n switch (name) {\n case 0\n /* Literal */\n :\n case 5\n /* Get */\n :\n case 6\n /* Concat */\n :\n case 7\n /* HasBlock */\n :\n case 8\n /* HasBlockParams */\n :\n return true;\n\n default:\n return false;\n }\n }\n\n if (name[0] === '(') {\n return true;\n }\n\n return false;\n }\n\n function isBuilderCallExpression(value) {\n return typeof value[0] === 'string' && value[0][0] === '(';\n }\n\n function normalizeParams(input) {\n return input.map(normalizeExpression);\n }\n\n function normalizeHash(input) {\n if (input === null) return null;\n return mapObject(input, normalizeExpression);\n }\n\n function normalizeCallExpression(expr) {\n switch (expr.length) {\n case 1:\n return {\n type: \"Call\"\n /* Call */\n ,\n head: normalizeCallHead(expr[0]),\n params: null,\n hash: null\n };\n\n case 2:\n {\n if (Array.isArray(expr[1])) {\n return {\n type: \"Call\"\n /* Call */\n ,\n head: normalizeCallHead(expr[0]),\n params: normalizeParams(expr[1]),\n hash: null\n };\n } else {\n return {\n type: \"Call\"\n /* Call */\n ,\n head: normalizeCallHead(expr[0]),\n params: null,\n hash: normalizeHash(expr[1])\n };\n }\n }\n\n case 3:\n return {\n type: \"Call\"\n /* Call */\n ,\n head: normalizeCallHead(expr[0]),\n params: normalizeParams(expr[1]),\n hash: normalizeHash(expr[2])\n };\n }\n }\n\n var ProgramSymbols = /*#__PURE__*/function () {\n function ProgramSymbols() {\n this._freeVariables = [];\n this._symbols = ['this'];\n this.top = this;\n }\n\n var _proto18 = ProgramSymbols.prototype;\n\n _proto18.toSymbols = function toSymbols() {\n return this._symbols.slice(1);\n };\n\n _proto18.toUpvars = function toUpvars() {\n return this._freeVariables;\n };\n\n _proto18.freeVar = function freeVar(name) {\n return addString(this._freeVariables, name);\n };\n\n _proto18.block = function block(name) {\n return this.symbol(name);\n };\n\n _proto18.arg = function arg(name) {\n return addString(this._symbols, name);\n };\n\n _proto18.local = function local(name) {\n throw new Error(\"No local \" + name + \" was found. Maybe you meant ^\" + name + \" for upvar, or !\" + name + \" for keyword?\");\n };\n\n _proto18.this = function _this() {\n return 0;\n };\n\n _proto18.hasLocal = function hasLocal(_name) {\n return false;\n } // any symbol\n ;\n\n _proto18.symbol = function symbol(name) {\n return addString(this._symbols, name);\n };\n\n _proto18.child = function child(locals) {\n return new LocalSymbols(this, locals);\n };\n\n return ProgramSymbols;\n }();\n\n _exports.ProgramSymbols = ProgramSymbols;\n\n var LocalSymbols = /*#__PURE__*/function () {\n function LocalSymbols(parent, locals) {\n this.parent = parent;\n this.locals = (0, _util.dict)();\n\n for (var _iterator10 = (0, _emberBabel.createForOfIteratorHelperLoose)(locals), _step10; !(_step10 = _iterator10()).done;) {\n var _local = _step10.value;\n this.locals[_local] = parent.top.symbol(_local);\n }\n }\n\n var _proto19 = LocalSymbols.prototype;\n\n _proto19.freeVar = function freeVar(name) {\n return this.parent.freeVar(name);\n };\n\n _proto19.arg = function arg(name) {\n return this.parent.arg(name);\n };\n\n _proto19.block = function block(name) {\n return this.parent.block(name);\n };\n\n _proto19.local = function local(name) {\n if (name in this.locals) {\n return this.locals[name];\n } else {\n return this.parent.local(name);\n }\n };\n\n _proto19.this = function _this() {\n return this.parent.this();\n };\n\n _proto19.hasLocal = function hasLocal(name) {\n if (name in this.locals) {\n return true;\n } else {\n return this.parent.hasLocal(name);\n }\n };\n\n _proto19.child = function child(locals) {\n return new LocalSymbols(this, locals);\n };\n\n (0, _emberBabel.createClass)(LocalSymbols, [{\n key: \"paramSymbols\",\n get: function get() {\n return (0, _util.values)(this.locals);\n }\n }, {\n key: \"top\",\n get: function get() {\n return this.parent.top;\n }\n }]);\n return LocalSymbols;\n }();\n\n function addString(array, item) {\n var index = array.indexOf(item);\n\n if (index === -1) {\n index = array.length;\n array.push(item);\n return index;\n } else {\n return index;\n }\n }\n\n function unimpl(message) {\n return new Error(\"unimplemented \" + message);\n }\n\n function buildStatements(statements, symbols) {\n var out = [];\n statements.forEach(function (s) {\n return out.push.apply(out, buildStatement(normalizeStatement(s), symbols));\n });\n return out;\n }\n\n function buildNormalizedStatements(statements, symbols) {\n var out = [];\n statements.forEach(function (s) {\n return out.push.apply(out, buildStatement(s, symbols));\n });\n return out;\n }\n\n function buildStatement(normalized, symbols) {\n if (symbols === void 0) {\n symbols = new ProgramSymbols();\n }\n\n switch (normalized.kind) {\n case \"AppendPath\"\n /* AppendPath */\n :\n {\n return [[normalized.trusted ? 2\n /* TrustingAppend */\n : 1\n /* Append */\n , buildGetPath(normalized.path, symbols)]];\n }\n\n case \"AppendExpr\"\n /* AppendExpr */\n :\n {\n return [[normalized.trusted ? 2\n /* TrustingAppend */\n : 1\n /* Append */\n , buildExpression(normalized.expr, normalized.trusted ? 'TrustedAppend' : 'Append', symbols)]];\n }\n\n case \"Call\"\n /* Call */\n :\n {\n var path = normalized.head,\n params = normalized.params,\n hash = normalized.hash,\n trusted = normalized.trusted;\n var builtParams = params ? buildParams(params, symbols) : null;\n var builtHash = hash ? buildHash(hash, symbols) : null;\n var builtExpr = buildCallHead(path, trusted ? 3\n /* AmbiguousInvoke */\n : 2\n /* AmbiguousAppendInvoke */\n , symbols);\n return [[trusted ? 2\n /* TrustingAppend */\n : 1\n /* Append */\n , [28\n /* Call */\n , builtExpr, builtParams, builtHash]]];\n }\n\n case \"Literal\"\n /* Literal */\n :\n {\n return [[1\n /* Append */\n , normalized.value]];\n }\n\n case \"Comment\"\n /* Comment */\n :\n {\n return [[3\n /* Comment */\n , normalized.value]];\n }\n\n case \"Block\"\n /* Block */\n :\n {\n var blocks = buildBlocks(normalized.blocks, normalized.blockParams, symbols);\n\n var _hash3 = buildHash(normalized.hash, symbols);\n\n var _params3 = buildParams(normalized.params, symbols);\n\n var _path = buildCallHead(normalized.head, 7\n /* ResolveAsComponentHead */\n , symbols);\n\n return [[6\n /* Block */\n , _path, _params3, _hash3, blocks]];\n }\n\n case \"Keyword\"\n /* Keyword */\n :\n {\n return [buildKeyword(normalized, symbols)];\n }\n\n case \"Element\"\n /* Element */\n :\n return buildElement(normalized, symbols);\n\n case \"Modifier\"\n /* Modifier */\n :\n throw unimpl('modifier');\n\n case \"DynamicComponent\"\n /* DynamicComponent */\n :\n throw unimpl('dynamic component');\n\n default:\n throw (0, _util.assertNever)(normalized);\n }\n }\n\n function s(arr) {\n for (var _len2 = arguments.length, interpolated = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n interpolated[_key2 - 1] = arguments[_key2];\n }\n\n var result = arr.reduce(function (result, string, i) {\n return result + (\"\" + string + (interpolated[i] ? String(interpolated[i]) : ''));\n }, '');\n return [0\n /* Literal */\n , result];\n }\n\n function c(arr) {\n for (var _len3 = arguments.length, interpolated = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n interpolated[_key3 - 1] = arguments[_key3];\n }\n\n var result = arr.reduce(function (result, string, i) {\n return result + (\"\" + string + (interpolated[i] ? String(interpolated[i]) : ''));\n }, '');\n return [1\n /* Comment */\n , result];\n }\n\n function unicode(charCode) {\n return String.fromCharCode(parseInt(charCode, 16));\n }\n\n var NEWLINE = '\\n';\n _exports.NEWLINE = NEWLINE;\n\n function buildKeyword(normalized, symbols) {\n var name = normalized.name;\n var params = buildParams(normalized.params, symbols);\n var childSymbols = symbols.child(normalized.blockParams || []);\n var block = buildBlock(normalized.blocks.default, childSymbols, childSymbols.paramSymbols);\n var inverse = normalized.blocks.else ? buildBlock(normalized.blocks.else, symbols, []) : null;\n\n switch (name) {\n case 'with':\n return [43\n /* With */\n , params[0], block, inverse];\n\n case 'if':\n return [41\n /* If */\n , params[0], block, inverse];\n\n case 'each':\n var keyExpr = normalized.hash ? normalized.hash['key'] : null;\n var key = keyExpr ? buildExpression(keyExpr, 'Generic', symbols) : null;\n return [42\n /* Each */\n , params[0], key, block, inverse];\n\n default:\n throw new Error('unimplemented keyword');\n }\n }\n\n function buildElement(_ref101, symbols) {\n var name = _ref101.name,\n attrs = _ref101.attrs,\n block = _ref101.block;\n var out = [hasSplat(attrs) ? [11\n /* OpenElementWithSplat */\n , name] : [10\n /* OpenElement */\n , name]];\n\n if (attrs) {\n var _buildElementParams = buildElementParams(attrs, symbols),\n params = _buildElementParams.params,\n args = _buildElementParams.args;\n\n out.push.apply(out, params);\n }\n\n out.push([12\n /* FlushElement */\n ]);\n\n if (Array.isArray(block)) {\n block.forEach(function (s) {\n return out.push.apply(out, buildStatement(s, symbols));\n });\n } else if (block === null) {// do nothing\n } else {\n throw (0, _util.assertNever)(block);\n }\n\n out.push([13\n /* CloseElement */\n ]);\n return out;\n }\n\n function hasSplat(attrs) {\n if (attrs === null) return false;\n return Object.keys(attrs).some(function (a) {\n return attrs[a] === \"Splat\";\n }\n /* Splat */\n );\n }\n\n function buildElementParams(attrs, symbols) {\n var params = [];\n var keys = [];\n var values$$1 = [];\n Object.keys(attrs).forEach(function (key) {\n var value = attrs[key];\n\n if (value === \"Splat\"\n /* Splat */\n ) {\n params.push([17\n /* AttrSplat */\n , symbols.block('&attrs')]);\n } else if (key[0] === '@') {\n keys.push(key);\n values$$1.push(buildExpression(value, 'Strict', symbols));\n } else {\n params.push.apply(params, buildAttributeValue(key, value, // TODO: extract namespace from key\n extractNamespace(key), symbols));\n }\n });\n return {\n params: params,\n args: (0, _util.isPresent)(keys) && (0, _util.isPresent)(values$$1) ? [keys, values$$1] : null\n };\n }\n\n function extractNamespace(name) {\n if (name === 'xmlns') {\n return \"http://www.w3.org/2000/xmlns/\"\n /* XMLNS */\n ;\n }\n\n var match = /^([^:]*):([^:]*)$/.exec(name);\n\n if (match === null) {\n return null;\n }\n\n var namespace = match[1];\n\n switch (namespace) {\n case 'xlink':\n return \"http://www.w3.org/1999/xlink\"\n /* XLink */\n ;\n\n case 'xml':\n return \"http://www.w3.org/XML/1998/namespace\"\n /* XML */\n ;\n\n case 'xmlns':\n return \"http://www.w3.org/2000/xmlns/\"\n /* XMLNS */\n ;\n }\n\n return null;\n }\n\n function buildAttributeValue(name, value, namespace, symbols) {\n switch (value.type) {\n case \"Literal\"\n /* Literal */\n :\n {\n var val = value.value;\n\n if (val === false) {\n return [];\n } else if (val === true) {\n return [[14\n /* StaticAttr */\n , name, '', namespace !== null && namespace !== void 0 ? namespace : undefined]];\n } else if (typeof val === 'string') {\n return [[14\n /* StaticAttr */\n , name, val, namespace !== null && namespace !== void 0 ? namespace : undefined]];\n } else {\n throw new Error(\"Unexpected/unimplemented literal attribute \" + JSON.stringify(val));\n }\n }\n\n default:\n return [[15\n /* DynamicAttr */\n , name, buildExpression(value, 'AttrValue', symbols), namespace !== null && namespace !== void 0 ? namespace : undefined]];\n }\n }\n\n function varContext(context, bare) {\n switch (context) {\n case 'Append':\n return bare ? 'AppendBare' : 'AppendInvoke';\n\n case 'TrustedAppend':\n return bare ? 'TrustedAppendBare' : 'TrustedAppendInvoke';\n\n case 'AttrValue':\n return bare ? 'AttrValueBare' : 'AttrValueInvoke';\n\n default:\n return context;\n }\n }\n\n function buildExpression(expr, context, symbols) {\n switch (expr.type) {\n case \"GetPath\"\n /* GetPath */\n :\n {\n return buildGetPath(expr, symbols);\n }\n\n case \"GetVar\"\n /* GetVar */\n :\n {\n return buildVar(expr.variable, varContext(context, true), symbols);\n }\n\n case \"Concat\"\n /* Concat */\n :\n {\n return [29\n /* Concat */\n , buildConcat(expr.params, symbols)];\n }\n\n case \"Call\"\n /* Call */\n :\n {\n var builtParams = buildParams(expr.params, symbols);\n var builtHash = buildHash(expr.hash, symbols);\n var builtExpr = buildCallHead(expr.head, context === 'Generic' ? 'SubExpression' : varContext(context, false), symbols);\n return [28\n /* Call */\n , builtExpr, builtParams, builtHash];\n }\n\n case \"HasBlock\"\n /* HasBlock */\n :\n {\n return [48\n /* HasBlock */\n , buildVar({\n kind: VariableKind.Block,\n name: expr.name,\n mode: 'loose'\n }, 4\n /* LooseFreeVariable */\n , symbols)];\n }\n\n case \"HasBlockParams\"\n /* HasBlockParams */\n :\n {\n return [49\n /* HasBlockParams */\n , buildVar({\n kind: VariableKind.Block,\n name: expr.name,\n mode: 'loose'\n }, 4\n /* LooseFreeVariable */\n , symbols)];\n }\n\n case \"Literal\"\n /* Literal */\n :\n {\n if (expr.value === undefined) {\n return [27\n /* Undefined */\n ];\n } else {\n return expr.value;\n }\n }\n\n default:\n (0, _util.assertNever)(expr);\n }\n }\n\n function buildCallHead(callHead, context, symbols) {\n if (callHead.type === \"GetVar\"\n /* GetVar */\n ) {\n return buildVar(callHead.variable, context, symbols);\n } else {\n return buildGetPath(callHead, symbols);\n }\n }\n\n function buildGetPath(head, symbols) {\n return buildVar(head.path.head, 4\n /* LooseFreeVariable */\n , symbols, head.path.tail);\n }\n\n function buildVar(head, context, symbols, path) {\n var op = 30\n /* GetSymbol */\n ;\n var sym;\n\n switch (head.kind) {\n case VariableKind.Free:\n if (context === 'Strict') {\n op = 31\n /* GetStrictFree */\n ;\n } else if (context === 'AppendBare') {\n op = 34\n /* GetFreeAsComponentOrHelperHeadOrThisFallback */\n ;\n } else if (context === 'AppendInvoke') {\n op = 35\n /* GetFreeAsComponentOrHelperHead */\n ;\n } else if (context === 'TrustedAppendBare') {\n op = 36\n /* GetFreeAsHelperHeadOrThisFallback */\n ;\n } else if (context === 'TrustedAppendInvoke') {\n op = 37\n /* GetFreeAsHelperHead */\n ;\n } else if (context === 'AttrValueBare') {\n op = 36\n /* GetFreeAsHelperHeadOrThisFallback */\n ;\n } else if (context === 'AttrValueInvoke') {\n op = 37\n /* GetFreeAsHelperHead */\n ;\n } else if (context === 'SubExpression') {\n op = 37\n /* GetFreeAsHelperHead */\n ;\n } else if (context === 'Generic') {\n op = 33\n /* GetFreeAsFallback */\n ;\n } else {\n op = expressionContextOp(context);\n }\n\n sym = symbols.freeVar(head.name);\n break;\n\n default:\n op = 30\n /* GetSymbol */\n ;\n sym = getSymbolForVar(head.kind, symbols, head.name);\n }\n\n if (path === undefined || path.length === 0) {\n return [op, sym];\n } else {\n return [op, sym, path];\n }\n }\n\n function getSymbolForVar(kind, symbols, name) {\n switch (kind) {\n case VariableKind.Arg:\n return symbols.arg(name);\n\n case VariableKind.Block:\n return symbols.block(name);\n\n case VariableKind.Local:\n return symbols.local(name);\n\n case VariableKind.This:\n return symbols.this();\n\n default:\n return (0, _util.exhausted)(kind);\n }\n }\n\n function expressionContextOp(context) {\n switch (context) {\n case 0\n /* Strict */\n :\n return 31\n /* GetStrictFree */\n ;\n\n case 1\n /* AmbiguousAppend */\n :\n return 34\n /* GetFreeAsComponentOrHelperHeadOrThisFallback */\n ;\n\n case 2\n /* AmbiguousAppendInvoke */\n :\n return 35\n /* GetFreeAsComponentOrHelperHead */\n ;\n\n case 3\n /* AmbiguousInvoke */\n :\n return 36\n /* GetFreeAsHelperHeadOrThisFallback */\n ;\n\n case 4\n /* LooseFreeVariable */\n :\n return 33\n /* GetFreeAsFallback */\n ;\n\n case 5\n /* ResolveAsCallHead */\n :\n return 37\n /* GetFreeAsHelperHead */\n ;\n\n case 6\n /* ResolveAsModifierHead */\n :\n return 38\n /* GetFreeAsModifierHead */\n ;\n\n case 7\n /* ResolveAsComponentHead */\n :\n return 39\n /* GetFreeAsComponentHead */\n ;\n\n default:\n return (0, _util.exhausted)(context);\n }\n }\n\n function buildParams(exprs, symbols) {\n if (exprs === null || !(0, _util.isPresent)(exprs)) return null;\n return exprs.map(function (e) {\n return buildExpression(e, 'Generic', symbols);\n });\n }\n\n function buildConcat(exprs, symbols) {\n return exprs.map(function (e) {\n return buildExpression(e, 'AttrValue', symbols);\n });\n }\n\n function buildHash(exprs, symbols) {\n if (exprs === null) return null;\n var out = [[], []];\n Object.keys(exprs).forEach(function (key) {\n out[0].push(key);\n out[1].push(buildExpression(exprs[key], 'Generic', symbols));\n });\n return out;\n }\n\n function buildBlocks(blocks, blockParams, parent) {\n var keys = [];\n var values$$1 = [];\n Object.keys(blocks).forEach(function (name) {\n keys.push(name);\n\n if (name === 'default') {\n var symbols = parent.child(blockParams || []);\n values$$1.push(buildBlock(blocks[name], symbols, symbols.paramSymbols));\n } else {\n values$$1.push(buildBlock(blocks[name], parent, []));\n }\n });\n return [keys, values$$1];\n }\n\n function buildBlock(block, symbols, locals) {\n if (locals === void 0) {\n locals = [];\n }\n\n return [buildNormalizedStatements(block, symbols), locals];\n }\n});","define(\"@glimmer/env\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.CI = _exports.DEBUG = void 0;\n var DEBUG = false;\n _exports.DEBUG = DEBUG;\n var CI = false;\n _exports.CI = CI;\n});","define(\"@glimmer/syntax\", [\"exports\", \"ember-babel\", \"@glimmer/util\", \"simple-html-tokenizer\", \"@handlebars/parser\"], function (_exports, _emberBabel, _util, _simpleHtmlTokenizer, _parser) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.normalize = normalize;\n _exports.generateSyntaxError = generateSyntaxError;\n _exports.preprocess = preprocess;\n _exports.print = build;\n _exports.sortByLoc = sortByLoc;\n _exports.traverse = traverse;\n _exports.cannotRemoveNode = cannotRemoveNode;\n _exports.cannotReplaceNode = cannotReplaceNode;\n _exports.isKeyword = isKeyword;\n _exports.getTemplateLocals = getTemplateLocals;\n _exports.maybeLoc = maybeLoc;\n _exports.loc = loc;\n _exports.hasSpan = hasSpan;\n _exports.node = node;\n _exports.SpanList = _exports.SourceSpan = _exports.SourceSlice = _exports.KEYWORDS_TYPES = _exports.WalkerPath = _exports.Path = _exports.Walker = _exports.ProgramSymbolTable = _exports.BlockSymbolTable = _exports.SymbolTable = _exports.builders = _exports.Source = _exports.ASTv2 = _exports.AST = _exports.ASTv1 = void 0;\n var UNKNOWN_POSITION = Object.freeze({\n line: 1,\n column: 0\n });\n var SYNTHETIC_LOCATION = Object.freeze({\n source: '(synthetic)',\n start: UNKNOWN_POSITION,\n end: UNKNOWN_POSITION\n });\n var TEMPORARY_LOCATION = Object.freeze({\n source: '(temporary)',\n start: UNKNOWN_POSITION,\n end: UNKNOWN_POSITION\n });\n var NON_EXISTENT_LOCATION = Object.freeze({\n source: '(nonexistent)',\n start: UNKNOWN_POSITION,\n end: UNKNOWN_POSITION\n });\n var BROKEN_LOCATION = Object.freeze({\n source: '(broken)',\n start: UNKNOWN_POSITION,\n end: UNKNOWN_POSITION\n });\n\n var SourceSlice = /*#__PURE__*/function () {\n function SourceSlice(options) {\n this.loc = options.loc;\n this.chars = options.chars;\n }\n\n SourceSlice.synthetic = function synthetic(chars) {\n var offsets = SourceSpan.synthetic(chars);\n return new SourceSlice({\n loc: offsets,\n chars: chars\n });\n };\n\n SourceSlice.load = function load(source, slice) {\n return new SourceSlice({\n loc: SourceSpan.load(source, slice[1]),\n chars: slice[0]\n });\n };\n\n var _proto = SourceSlice.prototype;\n\n _proto.getString = function getString() {\n return this.chars;\n };\n\n _proto.serialize = function serialize() {\n return [this.chars, this.loc.serialize()];\n };\n\n return SourceSlice;\n }();\n /**\n * This file implements the DSL used by span and offset in places where they need to exhaustively\n * consider all combinations of states (Handlebars offsets, character offsets and invisible/broken\n * offsets).\n *\n * It's probably overkill, but it makes the code that uses it clear. It could be refactored or\n * removed.\n */\n\n\n _exports.SourceSlice = SourceSlice;\n var MatchAny = 'MATCH_ANY';\n var IsInvisible = 'IS_INVISIBLE';\n\n var WhenList = /*#__PURE__*/function () {\n function WhenList(whens) {\n this._whens = whens;\n }\n\n var _proto2 = WhenList.prototype;\n\n _proto2.first = function first(kind) {\n for (var _iterator = (0, _emberBabel.createForOfIteratorHelperLoose)(this._whens), _step; !(_step = _iterator()).done;) {\n var _when = _step.value;\n\n var _value = _when.match(kind);\n\n if ((0, _util.isPresent)(_value)) {\n return _value[0];\n }\n }\n\n return null;\n };\n\n return WhenList;\n }();\n\n var When = /*#__PURE__*/function () {\n function When() {\n this._map = new Map();\n }\n\n var _proto3 = When.prototype;\n\n _proto3.get = function get(pattern, or) {\n var value = this._map.get(pattern);\n\n if (value) {\n return value;\n }\n\n value = or();\n\n this._map.set(pattern, value);\n\n return value;\n };\n\n _proto3.add = function add(pattern, out) {\n this._map.set(pattern, out);\n };\n\n _proto3.match = function match(kind) {\n var pattern = patternFor(kind);\n var out = [];\n\n var exact = this._map.get(pattern);\n\n var fallback = this._map.get(MatchAny);\n\n if (exact) {\n out.push(exact);\n }\n\n if (fallback) {\n out.push(fallback);\n }\n\n return out;\n };\n\n return When;\n }();\n\n function match(callback) {\n return callback(new Matcher()).check();\n }\n\n var Matcher = /*#__PURE__*/function () {\n function Matcher() {\n this._whens = new When();\n }\n /**\n * You didn't exhaustively match all possibilities.\n */\n\n\n var _proto4 = Matcher.prototype;\n\n _proto4.check = function check() {\n var _this = this;\n\n return function (left, right) {\n return _this.matchFor(left.kind, right.kind)(left, right);\n };\n };\n\n _proto4.matchFor = function matchFor(left, right) {\n var nesteds = this._whens.match(left);\n\n var callback = new WhenList(nesteds).first(right);\n return callback;\n };\n\n _proto4.when = function when(left, right, // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback) {\n this._whens.get(left, function () {\n return new When();\n }).add(right, callback);\n\n return this;\n };\n\n return Matcher;\n }();\n\n function patternFor(kind) {\n switch (kind) {\n case \"Broken\"\n /* Broken */\n :\n case \"InternalsSynthetic\"\n /* InternalsSynthetic */\n :\n case \"NonExistent\"\n /* NonExistent */\n :\n return IsInvisible;\n\n default:\n return kind;\n }\n } // eslint-disable-next-line import/no-extraneous-dependencies\n\n /**\n * Used to indicate that an attempt to convert a `SourcePosition` to a character offset failed. It\n * is separate from `null` so that `null` can be used to indicate that the computation wasn't yet\n * attempted (and therefore to cache the failure)\n */\n\n\n var BROKEN = 'BROKEN';\n /**\n * A `SourceOffset` represents a single position in the source.\n *\n * There are three kinds of backing data for `SourceOffset` objects:\n *\n * - `CharPosition`, which contains a character offset into the raw source string\n * - `HbsPosition`, which contains a `SourcePosition` from the Handlebars AST, which can be\n * converted to a `CharPosition` on demand.\n * - `InvisiblePosition`, which represents a position not in source (@see {InvisiblePosition})\n */\n\n var SourceOffset = /*#__PURE__*/function () {\n function SourceOffset(data) {\n this.data = data;\n }\n /**\n * Create a `SourceOffset` from a Handlebars `SourcePosition`. It's stored as-is, and converted\n * into a character offset on demand, which avoids unnecessarily computing the offset of every\n * `SourceLocation`, but also means that broken `SourcePosition`s are not always detected.\n */\n\n\n SourceOffset.forHbsPos = function forHbsPos(source, pos) {\n return new HbsPosition(source, pos, null).wrap();\n }\n /**\n * Create a `SourceOffset` that corresponds to a broken `SourcePosition`. This means that the\n * calling code determined (or knows) that the `SourceLocation` doesn't correspond correctly to\n * any part of the source.\n */\n ;\n\n SourceOffset.broken = function broken(pos) {\n if (pos === void 0) {\n pos = UNKNOWN_POSITION;\n }\n\n return new InvisiblePosition(\"Broken\"\n /* Broken */\n , pos).wrap();\n }\n /**\n * Get the character offset for this `SourceOffset`, if possible.\n */\n ;\n\n var _proto5 = SourceOffset.prototype;\n\n /**\n * Compare this offset with another one.\n *\n * If both offsets are `HbsPosition`s, they're equivalent as long as their lines and columns are\n * the same. This avoids computing offsets unnecessarily.\n *\n * Otherwise, two `SourceOffset`s are equivalent if their successfully computed character offsets\n * are the same.\n */\n _proto5.eql = function eql(right) {\n return _eql(this.data, right.data);\n }\n /**\n * Create a span that starts from this source offset and ends with another source offset. Avoid\n * computing character offsets if both `SourceOffset`s are still lazy.\n */\n ;\n\n _proto5.until = function until(other) {\n return span(this.data, other.data);\n }\n /**\n * Create a `SourceOffset` by moving the character position represented by this source offset\n * forward or backward (if `by` is negative), if possible.\n *\n * If this `SourceOffset` can't compute a valid character offset, `move` returns a broken offset.\n *\n * If the resulting character offset is less than 0 or greater than the size of the source, `move`\n * returns a broken offset.\n */\n ;\n\n _proto5.move = function move(by) {\n var charPos = this.data.toCharPos();\n\n if (charPos === null) {\n return SourceOffset.broken();\n } else {\n var result = charPos.offset + by;\n\n if (charPos.source.check(result)) {\n return new CharPosition(charPos.source, result).wrap();\n } else {\n return SourceOffset.broken();\n }\n }\n }\n /**\n * Create a new `SourceSpan` that represents a collapsed range at this source offset. Avoid\n * computing the character offset if it has not already been computed.\n */\n ;\n\n _proto5.collapsed = function collapsed() {\n return span(this.data, this.data);\n }\n /**\n * Convert this `SourceOffset` into a Handlebars {@see SourcePosition} for compatibility with\n * existing plugins.\n */\n ;\n\n _proto5.toJSON = function toJSON() {\n return this.data.toJSON();\n };\n\n (0, _emberBabel.createClass)(SourceOffset, [{\n key: \"offset\",\n get: function get() {\n var charPos = this.data.toCharPos();\n return charPos === null ? null : charPos.offset;\n }\n }]);\n return SourceOffset;\n }();\n\n var CharPosition = /*#__PURE__*/function () {\n function CharPosition(source, charPos) {\n this.source = source;\n this.charPos = charPos;\n this.kind = \"CharPosition\"\n /* CharPosition */\n ;\n /** Computed from char offset */\n\n this._locPos = null;\n }\n /**\n * This is already a `CharPosition`.\n *\n * {@see HbsPosition} for the alternative.\n *\n * @implements {PositionData}\n */\n\n\n var _proto6 = CharPosition.prototype;\n\n _proto6.toCharPos = function toCharPos() {\n return this;\n }\n /**\n * Produce a Handlebars {@see SourcePosition} for this `CharPosition`. If this `CharPosition` was\n * computed using {@see SourceOffset#move}, this will compute the `SourcePosition` for the offset.\n *\n * @implements {PositionData}\n */\n ;\n\n _proto6.toJSON = function toJSON() {\n var hbs = this.toHbsPos();\n return hbs === null ? UNKNOWN_POSITION : hbs.toJSON();\n };\n\n _proto6.wrap = function wrap() {\n return new SourceOffset(this);\n }\n /**\n * A `CharPosition` always has an offset it can produce without any additional computation.\n */\n ;\n\n /**\n * Convert the current character offset to an `HbsPosition`, if it was not already computed. Once\n * a `CharPosition` has computed its `HbsPosition`, it will not need to do compute it again, and\n * the same `CharPosition` is retained when used as one of the ends of a `SourceSpan`, so\n * computing the `HbsPosition` should be a one-time operation.\n */\n _proto6.toHbsPos = function toHbsPos() {\n var locPos = this._locPos;\n\n if (locPos === null) {\n var hbsPos = this.source.hbsPosFor(this.charPos);\n\n if (hbsPos === null) {\n this._locPos = locPos = BROKEN;\n } else {\n this._locPos = locPos = new HbsPosition(this.source, hbsPos, this.charPos);\n }\n }\n\n return locPos === BROKEN ? null : locPos;\n };\n\n (0, _emberBabel.createClass)(CharPosition, [{\n key: \"offset\",\n get: function get() {\n return this.charPos;\n }\n }]);\n return CharPosition;\n }();\n\n var HbsPosition = /*#__PURE__*/function () {\n function HbsPosition(source, hbsPos, charPos) {\n if (charPos === void 0) {\n charPos = null;\n }\n\n this.source = source;\n this.hbsPos = hbsPos;\n this.kind = \"HbsPosition\"\n /* HbsPosition */\n ;\n this._charPos = charPos === null ? null : new CharPosition(source, charPos);\n }\n /**\n * Lazily compute the character offset from the {@see SourcePosition}. Once an `HbsPosition` has\n * computed its `CharPosition`, it will not need to do compute it again, and the same\n * `HbsPosition` is retained when used as one of the ends of a `SourceSpan`, so computing the\n * `CharPosition` should be a one-time operation.\n *\n * @implements {PositionData}\n */\n\n\n var _proto7 = HbsPosition.prototype;\n\n _proto7.toCharPos = function toCharPos() {\n var charPos = this._charPos;\n\n if (charPos === null) {\n var charPosNumber = this.source.charPosFor(this.hbsPos);\n\n if (charPosNumber === null) {\n this._charPos = charPos = BROKEN;\n } else {\n this._charPos = charPos = new CharPosition(this.source, charPosNumber);\n }\n }\n\n return charPos === BROKEN ? null : charPos;\n }\n /**\n * Return the {@see SourcePosition} that this `HbsPosition` was instantiated with. This operation\n * does not need to compute anything.\n *\n * @implements {PositionData}\n */\n ;\n\n _proto7.toJSON = function toJSON() {\n return this.hbsPos;\n };\n\n _proto7.wrap = function wrap() {\n return new SourceOffset(this);\n }\n /**\n * This is already an `HbsPosition`.\n *\n * {@see CharPosition} for the alternative.\n */\n ;\n\n _proto7.toHbsPos = function toHbsPos() {\n return this;\n };\n\n return HbsPosition;\n }();\n\n var InvisiblePosition = /*#__PURE__*/function () {\n function InvisiblePosition(kind, // whatever was provided, possibly broken\n pos) {\n this.kind = kind;\n this.pos = pos;\n }\n /**\n * A broken position cannot be turned into a {@see CharacterPosition}.\n */\n\n\n var _proto8 = InvisiblePosition.prototype;\n\n _proto8.toCharPos = function toCharPos() {\n return null;\n }\n /**\n * The serialization of an `InvisiblePosition is whatever Handlebars {@see SourcePosition} was\n * originally identified as broken, non-existent or synthetic.\n *\n * If an `InvisiblePosition` never had an source offset at all, this method returns\n * {@see UNKNOWN_POSITION} for compatibility.\n */\n ;\n\n _proto8.toJSON = function toJSON() {\n return this.pos;\n };\n\n _proto8.wrap = function wrap() {\n return new SourceOffset(this);\n };\n\n (0, _emberBabel.createClass)(InvisiblePosition, [{\n key: \"offset\",\n get: function get() {\n return null;\n }\n }]);\n return InvisiblePosition;\n }();\n /**\n * Compare two {@see AnyPosition} and determine whether they are equal.\n *\n * @see {SourceOffset#eql}\n */\n\n\n var _eql = match(function (m) {\n return m.when(\"HbsPosition\"\n /* HbsPosition */\n , \"HbsPosition\"\n /* HbsPosition */\n , function (_ref, _ref2) {\n var left = _ref.hbsPos;\n var right = _ref2.hbsPos;\n return left.column === right.column && left.line === right.line;\n }).when(\"CharPosition\"\n /* CharPosition */\n , \"CharPosition\"\n /* CharPosition */\n , function (_ref3, _ref4) {\n var left = _ref3.charPos;\n var right = _ref4.charPos;\n return left === right;\n }).when(\"CharPosition\"\n /* CharPosition */\n , \"HbsPosition\"\n /* HbsPosition */\n , function (_ref5, right) {\n var left = _ref5.offset;\n\n var _a;\n\n return left === ((_a = right.toCharPos()) === null || _a === void 0 ? void 0 : _a.offset);\n }).when(\"HbsPosition\"\n /* HbsPosition */\n , \"CharPosition\"\n /* CharPosition */\n , function (left, _ref6) {\n var right = _ref6.offset;\n\n var _a;\n\n return ((_a = left.toCharPos()) === null || _a === void 0 ? void 0 : _a.offset) === right;\n }).when(MatchAny, MatchAny, function () {\n return false;\n });\n }); // eslint-disable-next-line import/no-extraneous-dependencies\n\n /**\n * A `SourceSpan` object represents a span of characters inside of a template source.\n *\n * There are three kinds of `SourceSpan` objects:\n *\n * - `ConcreteSourceSpan`, which contains byte offsets\n * - `LazySourceSpan`, which contains `SourceLocation`s from the Handlebars AST, which can be\n * converted to byte offsets on demand.\n * - `InvisibleSourceSpan`, which represent source strings that aren't present in the source,\n * because:\n * - they were created synthetically\n * - their location is nonsensical (the span is broken)\n * - they represent nothing in the source (this currently happens only when a bug in the\n * upstream Handlebars parser fails to assign a location to empty blocks)\n *\n * At a high level, all `SourceSpan` objects provide:\n *\n * - byte offsets\n * - source in column and line format\n *\n * And you can do these operations on `SourceSpan`s:\n *\n * - collapse it to a `SourceSpan` representing its starting or ending position\n * - slice out some characters, optionally skipping some characters at the beginning or end\n * - create a new `SourceSpan` with a different starting or ending offset\n *\n * All SourceSpan objects implement `SourceLocation`, for compatibility. All SourceSpan\n * objects have a `toJSON` that emits `SourceLocation`, also for compatibility.\n *\n * For compatibility, subclasses of `AbstractSourceSpan` must implement `locDidUpdate`, which\n * happens when an AST plugin attempts to modify the `start` or `end` of a span directly.\n *\n * The goal is to avoid creating any problems for use-cases like AST Explorer.\n */\n\n\n var SourceSpan = /*#__PURE__*/function () {\n function SourceSpan(data) {\n this.data = data;\n this.isInvisible = data.kind !== \"CharPosition\"\n /* CharPosition */\n && data.kind !== \"HbsPosition\"\n /* HbsPosition */\n ;\n }\n\n SourceSpan.load = function load(source, serialized) {\n if (typeof serialized === 'number') {\n return SourceSpan.forCharPositions(source, serialized, serialized);\n } else if (typeof serialized === 'string') {\n return SourceSpan.synthetic(serialized);\n } else if (Array.isArray(serialized)) {\n return SourceSpan.forCharPositions(source, serialized[0], serialized[1]);\n } else if (serialized === \"NonExistent\"\n /* NonExistent */\n ) {\n return SourceSpan.NON_EXISTENT;\n } else if (serialized === \"Broken\"\n /* Broken */\n ) {\n return SourceSpan.broken(BROKEN_LOCATION);\n }\n\n (0, _util.assertNever)(serialized);\n };\n\n SourceSpan.forHbsLoc = function forHbsLoc(source, loc) {\n var start = new HbsPosition(source, loc.start);\n var end = new HbsPosition(source, loc.end);\n return new HbsSpan(source, {\n start: start,\n end: end\n }, loc).wrap();\n };\n\n SourceSpan.forCharPositions = function forCharPositions(source, startPos, endPos) {\n var start = new CharPosition(source, startPos);\n var end = new CharPosition(source, endPos);\n return new CharPositionSpan(source, {\n start: start,\n end: end\n }).wrap();\n };\n\n SourceSpan.synthetic = function synthetic(chars) {\n return new InvisibleSpan(\"InternalsSynthetic\"\n /* InternalsSynthetic */\n , NON_EXISTENT_LOCATION, chars).wrap();\n };\n\n SourceSpan.broken = function broken(pos) {\n if (pos === void 0) {\n pos = BROKEN_LOCATION;\n }\n\n return new InvisibleSpan(\"Broken\"\n /* Broken */\n , pos).wrap();\n };\n\n var _proto9 = SourceSpan.prototype;\n\n _proto9.getStart = function getStart() {\n return this.data.getStart().wrap();\n };\n\n _proto9.getEnd = function getEnd() {\n return this.data.getEnd().wrap();\n };\n\n /**\n * Support converting ASTv1 nodes into a serialized format using JSON.stringify.\n */\n _proto9.toJSON = function toJSON() {\n return this.loc;\n }\n /**\n * Create a new span with the current span's end and a new beginning.\n */\n ;\n\n _proto9.withStart = function withStart(other) {\n return span(other.data, this.data.getEnd());\n }\n /**\n * Create a new span with the current span's beginning and a new ending.\n */\n ;\n\n _proto9.withEnd = function withEnd(other) {\n return span(this.data.getStart(), other.data);\n };\n\n _proto9.asString = function asString() {\n return this.data.asString();\n }\n /**\n * Convert this `SourceSpan` into a `SourceSlice`. In debug mode, this method optionally checks\n * that the byte offsets represented by this `SourceSpan` actually correspond to the expected\n * string.\n */\n ;\n\n _proto9.toSlice = function toSlice(expected) {\n var chars = this.data.asString();\n\n if (true\n /* DEBUG */\n ) {\n if (expected !== undefined && chars !== expected) {\n // eslint-disable-next-line no-console\n console.warn(\"unexpectedly found \" + JSON.stringify(chars) + \" when slicing source, but expected \" + JSON.stringify(expected));\n }\n }\n\n return new SourceSlice({\n loc: this,\n chars: expected || chars\n });\n }\n /**\n * For compatibility with SourceLocation in AST plugins\n *\n * @deprecated use startPosition instead\n */\n ;\n\n _proto9.collapse = function collapse(where) {\n switch (where) {\n case 'start':\n return this.getStart().collapsed();\n\n case 'end':\n return this.getEnd().collapsed();\n }\n };\n\n _proto9.extend = function extend(other) {\n return span(this.data.getStart(), other.data.getEnd());\n };\n\n _proto9.serialize = function serialize() {\n return this.data.serialize();\n };\n\n _proto9.slice = function slice(_ref7) {\n var _ref7$skipStart = _ref7.skipStart,\n skipStart = _ref7$skipStart === void 0 ? 0 : _ref7$skipStart,\n _ref7$skipEnd = _ref7.skipEnd,\n skipEnd = _ref7$skipEnd === void 0 ? 0 : _ref7$skipEnd;\n return span(this.getStart().move(skipStart).data, this.getEnd().move(-skipEnd).data);\n };\n\n _proto9.sliceStartChars = function sliceStartChars(_ref8) {\n var _ref8$skipStart = _ref8.skipStart,\n skipStart = _ref8$skipStart === void 0 ? 0 : _ref8$skipStart,\n chars = _ref8.chars;\n return span(this.getStart().move(skipStart).data, this.getStart().move(skipStart + chars).data);\n };\n\n _proto9.sliceEndChars = function sliceEndChars(_ref9) {\n var _ref9$skipEnd = _ref9.skipEnd,\n skipEnd = _ref9$skipEnd === void 0 ? 0 : _ref9$skipEnd,\n chars = _ref9.chars;\n return span(this.getEnd().move(skipEnd - chars).data, this.getStart().move(-skipEnd).data);\n };\n\n (0, _emberBabel.createClass)(SourceSpan, [{\n key: \"loc\",\n get: function get() {\n var span = this.data.toHbsSpan();\n return span === null ? BROKEN_LOCATION : span.toHbsLoc();\n }\n }, {\n key: \"module\",\n get: function get() {\n return this.data.getModule();\n }\n /**\n * Get the starting `SourcePosition` for this `SourceSpan`, lazily computing it if needed.\n */\n\n }, {\n key: \"startPosition\",\n get: function get() {\n return this.loc.start;\n }\n /**\n * Get the ending `SourcePosition` for this `SourceSpan`, lazily computing it if needed.\n */\n\n }, {\n key: \"endPosition\",\n get: function get() {\n return this.loc.end;\n }\n }, {\n key: \"start\",\n get: function get() {\n return this.loc.start;\n }\n /**\n * For compatibility with SourceLocation in AST plugins\n *\n * @deprecated use withStart instead\n */\n ,\n set: function set(position) {\n this.data.locDidUpdate({\n start: position\n });\n }\n /**\n * For compatibility with SourceLocation in AST plugins\n *\n * @deprecated use endPosition instead\n */\n\n }, {\n key: \"end\",\n get: function get() {\n return this.loc.end;\n }\n /**\n * For compatibility with SourceLocation in AST plugins\n *\n * @deprecated use withEnd instead\n */\n ,\n set: function set(position) {\n this.data.locDidUpdate({\n end: position\n });\n }\n /**\n * For compatibility with SourceLocation in AST plugins\n *\n * @deprecated use module instead\n */\n\n }, {\n key: \"source\",\n get: function get() {\n return this.module;\n }\n }], [{\n key: \"NON_EXISTENT\",\n get: function get() {\n return new InvisibleSpan(\"NonExistent\"\n /* NonExistent */\n , NON_EXISTENT_LOCATION).wrap();\n }\n }]);\n return SourceSpan;\n }();\n\n _exports.SourceSpan = SourceSpan;\n\n var CharPositionSpan = /*#__PURE__*/function () {\n function CharPositionSpan(source, charPositions) {\n this.source = source;\n this.charPositions = charPositions;\n this.kind = \"CharPosition\"\n /* CharPosition */\n ;\n this._locPosSpan = null;\n }\n\n var _proto10 = CharPositionSpan.prototype;\n\n _proto10.wrap = function wrap() {\n return new SourceSpan(this);\n };\n\n _proto10.asString = function asString() {\n return this.source.slice(this.charPositions.start.charPos, this.charPositions.end.charPos);\n };\n\n _proto10.getModule = function getModule() {\n return this.source.module;\n };\n\n _proto10.getStart = function getStart() {\n return this.charPositions.start;\n };\n\n _proto10.getEnd = function getEnd() {\n return this.charPositions.end;\n };\n\n _proto10.locDidUpdate = function locDidUpdate() {};\n\n _proto10.toHbsSpan = function toHbsSpan() {\n var locPosSpan = this._locPosSpan;\n\n if (locPosSpan === null) {\n var start = this.charPositions.start.toHbsPos();\n var end = this.charPositions.end.toHbsPos();\n\n if (start === null || end === null) {\n locPosSpan = this._locPosSpan = BROKEN;\n } else {\n locPosSpan = this._locPosSpan = new HbsSpan(this.source, {\n start: start,\n end: end\n });\n }\n }\n\n return locPosSpan === BROKEN ? null : locPosSpan;\n };\n\n _proto10.serialize = function serialize() {\n var _this$charPositions = this.charPositions,\n start = _this$charPositions.start.charPos,\n end = _this$charPositions.end.charPos;\n\n if (start === end) {\n return start;\n } else {\n return [start, end];\n }\n };\n\n _proto10.toCharPosSpan = function toCharPosSpan() {\n return this;\n };\n\n return CharPositionSpan;\n }();\n\n var HbsSpan = /*#__PURE__*/function () {\n function HbsSpan(source, hbsPositions, providedHbsLoc) {\n if (providedHbsLoc === void 0) {\n providedHbsLoc = null;\n }\n\n this.source = source;\n this.hbsPositions = hbsPositions;\n this.kind = \"HbsPosition\"\n /* HbsPosition */\n ;\n this._charPosSpan = null;\n this._providedHbsLoc = providedHbsLoc;\n }\n\n var _proto11 = HbsSpan.prototype;\n\n _proto11.serialize = function serialize() {\n var charPos = this.toCharPosSpan();\n return charPos === null ? \"Broken\"\n /* Broken */\n : charPos.wrap().serialize();\n };\n\n _proto11.wrap = function wrap() {\n return new SourceSpan(this);\n };\n\n _proto11.updateProvided = function updateProvided(pos, edge) {\n if (this._providedHbsLoc) {\n this._providedHbsLoc[edge] = pos;\n } // invalidate computed character offsets\n\n\n this._charPosSpan = null;\n this._providedHbsLoc = {\n start: pos,\n end: pos\n };\n };\n\n _proto11.locDidUpdate = function locDidUpdate(_ref10) {\n var start = _ref10.start,\n end = _ref10.end;\n\n if (start !== undefined) {\n this.updateProvided(start, 'start');\n this.hbsPositions.start = new HbsPosition(this.source, start, null);\n }\n\n if (end !== undefined) {\n this.updateProvided(end, 'end');\n this.hbsPositions.end = new HbsPosition(this.source, end, null);\n }\n };\n\n _proto11.asString = function asString() {\n var span = this.toCharPosSpan();\n return span === null ? '' : span.asString();\n };\n\n _proto11.getModule = function getModule() {\n return this.source.module;\n };\n\n _proto11.getStart = function getStart() {\n return this.hbsPositions.start;\n };\n\n _proto11.getEnd = function getEnd() {\n return this.hbsPositions.end;\n };\n\n _proto11.toHbsLoc = function toHbsLoc() {\n return {\n start: this.hbsPositions.start.hbsPos,\n end: this.hbsPositions.end.hbsPos\n };\n };\n\n _proto11.toHbsSpan = function toHbsSpan() {\n return this;\n };\n\n _proto11.toCharPosSpan = function toCharPosSpan() {\n var charPosSpan = this._charPosSpan;\n\n if (charPosSpan === null) {\n var start = this.hbsPositions.start.toCharPos();\n var end = this.hbsPositions.end.toCharPos();\n\n if (start && end) {\n charPosSpan = this._charPosSpan = new CharPositionSpan(this.source, {\n start: start,\n end: end\n });\n } else {\n charPosSpan = this._charPosSpan = BROKEN;\n return null;\n }\n }\n\n return charPosSpan === BROKEN ? null : charPosSpan;\n };\n\n return HbsSpan;\n }();\n\n var InvisibleSpan = /*#__PURE__*/function () {\n function InvisibleSpan(kind, // whatever was provided, possibly broken\n loc, // if the span represents a synthetic string\n string) {\n if (string === void 0) {\n string = null;\n }\n\n this.kind = kind;\n this.loc = loc;\n this.string = string;\n }\n\n var _proto12 = InvisibleSpan.prototype;\n\n _proto12.serialize = function serialize() {\n switch (this.kind) {\n case \"Broken\"\n /* Broken */\n :\n case \"NonExistent\"\n /* NonExistent */\n :\n return this.kind;\n\n case \"InternalsSynthetic\"\n /* InternalsSynthetic */\n :\n return this.string || '';\n }\n };\n\n _proto12.wrap = function wrap() {\n return new SourceSpan(this);\n };\n\n _proto12.asString = function asString() {\n return this.string || '';\n };\n\n _proto12.locDidUpdate = function locDidUpdate(_ref11) {\n var start = _ref11.start,\n end = _ref11.end;\n\n if (start !== undefined) {\n this.loc.start = start;\n }\n\n if (end !== undefined) {\n this.loc.end = end;\n }\n };\n\n _proto12.getModule = function getModule() {\n // TODO: Make this reflect the actual module this span originated from\n return 'an unknown module';\n };\n\n _proto12.getStart = function getStart() {\n return new InvisiblePosition(this.kind, this.loc.start);\n };\n\n _proto12.getEnd = function getEnd() {\n return new InvisiblePosition(this.kind, this.loc.end);\n };\n\n _proto12.toCharPosSpan = function toCharPosSpan() {\n return this;\n };\n\n _proto12.toHbsSpan = function toHbsSpan() {\n return null;\n };\n\n _proto12.toHbsLoc = function toHbsLoc() {\n return BROKEN_LOCATION;\n };\n\n return InvisibleSpan;\n }();\n\n var span = match(function (m) {\n return m.when(\"HbsPosition\"\n /* HbsPosition */\n , \"HbsPosition\"\n /* HbsPosition */\n , function (left, right) {\n return new HbsSpan(left.source, {\n start: left,\n end: right\n }).wrap();\n }).when(\"CharPosition\"\n /* CharPosition */\n , \"CharPosition\"\n /* CharPosition */\n , function (left, right) {\n return new CharPositionSpan(left.source, {\n start: left,\n end: right\n }).wrap();\n }).when(\"CharPosition\"\n /* CharPosition */\n , \"HbsPosition\"\n /* HbsPosition */\n , function (left, right) {\n var rightCharPos = right.toCharPos();\n\n if (rightCharPos === null) {\n return new InvisibleSpan(\"Broken\"\n /* Broken */\n , BROKEN_LOCATION).wrap();\n } else {\n return span(left, rightCharPos);\n }\n }).when(\"HbsPosition\"\n /* HbsPosition */\n , \"CharPosition\"\n /* CharPosition */\n , function (left, right) {\n var leftCharPos = left.toCharPos();\n\n if (leftCharPos === null) {\n return new InvisibleSpan(\"Broken\"\n /* Broken */\n , BROKEN_LOCATION).wrap();\n } else {\n return span(leftCharPos, right);\n }\n }).when(IsInvisible, MatchAny, function (left) {\n return new InvisibleSpan(left.kind, BROKEN_LOCATION).wrap();\n }).when(MatchAny, IsInvisible, function (_, right) {\n return new InvisibleSpan(right.kind, BROKEN_LOCATION).wrap();\n });\n }); // eslint-disable-next-line import/no-extraneous-dependencies\n\n var Source = /*#__PURE__*/function () {\n function Source(source, module) {\n if (module === void 0) {\n module = 'an unknown module';\n }\n\n this.source = source;\n this.module = module;\n }\n /**\n * Validate that the character offset represents a position in the source string.\n */\n\n\n var _proto13 = Source.prototype;\n\n _proto13.check = function check(offset) {\n return offset >= 0 && offset <= this.source.length;\n };\n\n _proto13.slice = function slice(start, end) {\n return this.source.slice(start, end);\n };\n\n _proto13.offsetFor = function offsetFor(line, column) {\n return SourceOffset.forHbsPos(this, {\n line: line,\n column: column\n });\n };\n\n _proto13.spanFor = function spanFor(_ref12) {\n var start = _ref12.start,\n end = _ref12.end;\n return SourceSpan.forHbsLoc(this, {\n start: {\n line: start.line,\n column: start.column\n },\n end: {\n line: end.line,\n column: end.column\n }\n });\n };\n\n _proto13.hbsPosFor = function hbsPosFor(offset) {\n var seenLines = 0;\n var seenChars = 0;\n\n if (offset > this.source.length) {\n return null;\n }\n\n while (true) {\n var nextLine = this.source.indexOf('\\n', seenChars);\n\n if (offset <= nextLine || nextLine === -1) {\n return {\n line: seenLines + 1,\n column: offset - seenChars\n };\n } else {\n seenLines += 1;\n seenChars = nextLine + 1;\n }\n }\n };\n\n _proto13.charPosFor = function charPosFor(position) {\n var line = position.line,\n column = position.column;\n var sourceString = this.source;\n var sourceLength = sourceString.length;\n var seenLines = 0;\n var seenChars = 0;\n\n while (true) {\n if (seenChars >= sourceLength) return sourceLength;\n var nextLine = this.source.indexOf('\\n', seenChars);\n if (nextLine === -1) nextLine = this.source.length;\n\n if (seenLines === line - 1) {\n if (seenChars + column > nextLine) return nextLine;\n\n if (true\n /* DEBUG */\n ) {\n var roundTrip = this.hbsPosFor(seenChars + column);\n }\n\n return seenChars + column;\n } else if (nextLine === -1) {\n return 0;\n } else {\n seenLines += 1;\n seenChars = nextLine + 1;\n }\n }\n };\n\n return Source;\n }();\n\n _exports.Source = Source;\n\n var PathExpressionImplV1 = /*#__PURE__*/function () {\n function PathExpressionImplV1(original, head, tail, loc) {\n this.original = original;\n this.loc = loc;\n this.type = 'PathExpression';\n this.this = false;\n this.data = false; // Cache for the head value.\n\n this._head = undefined;\n var parts = tail.slice();\n\n if (head.type === 'ThisHead') {\n this.this = true;\n } else if (head.type === 'AtHead') {\n this.data = true;\n parts.unshift(head.name.slice(1));\n } else {\n parts.unshift(head.name);\n }\n\n this.parts = parts;\n }\n\n (0, _emberBabel.createClass)(PathExpressionImplV1, [{\n key: \"head\",\n get: function get() {\n if (this._head) {\n return this._head;\n }\n\n var firstPart;\n\n if (this.this) {\n firstPart = 'this';\n } else if (this.data) {\n firstPart = \"@\" + this.parts[0];\n } else {\n firstPart = this.parts[0];\n }\n\n var firstPartLoc = this.loc.collapse('start').sliceStartChars({\n chars: firstPart.length\n }).loc;\n return this._head = publicBuilder.head(firstPart, firstPartLoc);\n }\n }, {\n key: \"tail\",\n get: function get() {\n return this.this ? this.parts : this.parts.slice(1);\n }\n }]);\n return PathExpressionImplV1;\n }();\n\n var _SOURCE;\n\n function SOURCE() {\n if (!_SOURCE) {\n _SOURCE = new Source('', '(synthetic)');\n }\n\n return _SOURCE;\n }\n\n function buildMustache(path, params, hash, raw, loc, strip) {\n if (typeof path === 'string') {\n path = buildPath(path);\n }\n\n return {\n type: 'MustacheStatement',\n path: path,\n params: params || [],\n hash: hash || buildHash([]),\n escaped: !raw,\n trusting: !!raw,\n loc: buildLoc(loc || null),\n strip: strip || {\n open: false,\n close: false\n }\n };\n }\n\n function buildBlock(path, params, hash, _defaultBlock, _elseBlock, loc, openStrip, inverseStrip, closeStrip) {\n var defaultBlock;\n var elseBlock;\n\n if (_defaultBlock.type === 'Template') {\n defaultBlock = (0, _util.assign)({}, _defaultBlock, {\n type: 'Block'\n });\n } else {\n defaultBlock = _defaultBlock;\n }\n\n if (_elseBlock !== undefined && _elseBlock !== null && _elseBlock.type === 'Template') {\n elseBlock = (0, _util.assign)({}, _elseBlock, {\n type: 'Block'\n });\n } else {\n elseBlock = _elseBlock;\n }\n\n return {\n type: 'BlockStatement',\n path: buildPath(path),\n params: params || [],\n hash: hash || buildHash([]),\n program: defaultBlock || null,\n inverse: elseBlock || null,\n loc: buildLoc(loc || null),\n openStrip: openStrip || {\n open: false,\n close: false\n },\n inverseStrip: inverseStrip || {\n open: false,\n close: false\n },\n closeStrip: closeStrip || {\n open: false,\n close: false\n }\n };\n }\n\n function buildElementModifier(path, params, hash, loc) {\n return {\n type: 'ElementModifierStatement',\n path: buildPath(path),\n params: params || [],\n hash: hash || buildHash([]),\n loc: buildLoc(loc || null)\n };\n }\n\n function buildPartial(name, params, hash, indent, loc) {\n return {\n type: 'PartialStatement',\n name: name,\n params: params || [],\n hash: hash || buildHash([]),\n indent: indent || '',\n strip: {\n open: false,\n close: false\n },\n loc: buildLoc(loc || null)\n };\n }\n\n function buildComment(value, loc) {\n return {\n type: 'CommentStatement',\n value: value,\n loc: buildLoc(loc || null)\n };\n }\n\n function buildMustacheComment(value, loc) {\n return {\n type: 'MustacheCommentStatement',\n value: value,\n loc: buildLoc(loc || null)\n };\n }\n\n function buildConcat(parts, loc) {\n if (!(0, _util.isPresent)(parts)) {\n throw new Error(\"b.concat requires at least one part\");\n }\n\n return {\n type: 'ConcatStatement',\n parts: parts || [],\n loc: buildLoc(loc || null)\n };\n }\n\n function buildElement(tag, options) {\n var attrs = options.attrs,\n blockParams = options.blockParams,\n modifiers = options.modifiers,\n comments = options.comments,\n children = options.children,\n loc = options.loc;\n var tagName; // this is used for backwards compat, prior to `selfClosing` being part of the ElementNode AST\n\n var selfClosing = false;\n\n if (typeof tag === 'object') {\n selfClosing = tag.selfClosing;\n tagName = tag.name;\n } else if (tag.slice(-1) === '/') {\n tagName = tag.slice(0, -1);\n selfClosing = true;\n } else {\n tagName = tag;\n }\n\n return {\n type: 'ElementNode',\n tag: tagName,\n selfClosing: selfClosing,\n attributes: attrs || [],\n blockParams: blockParams || [],\n modifiers: modifiers || [],\n comments: comments || [],\n children: children || [],\n loc: buildLoc(loc || null)\n };\n }\n\n function buildAttr(name, value, loc) {\n return {\n type: 'AttrNode',\n name: name,\n value: value,\n loc: buildLoc(loc || null)\n };\n }\n\n function buildText(chars, loc) {\n return {\n type: 'TextNode',\n chars: chars || '',\n loc: buildLoc(loc || null)\n };\n } // Expressions\n\n\n function buildSexpr(path, params, hash, loc) {\n return {\n type: 'SubExpression',\n path: buildPath(path),\n params: params || [],\n hash: hash || buildHash([]),\n loc: buildLoc(loc || null)\n };\n }\n\n function headToString(head) {\n switch (head.type) {\n case 'AtHead':\n return {\n original: head.name,\n parts: [head.name]\n };\n\n case 'ThisHead':\n return {\n original: \"this\",\n parts: []\n };\n\n case 'VarHead':\n return {\n original: head.name,\n parts: [head.name]\n };\n }\n }\n\n function buildHead(original, loc) {\n var _original$split = original.split('.'),\n head = _original$split[0],\n tail = _original$split.slice(1);\n\n var headNode;\n\n if (head === 'this') {\n headNode = {\n type: 'ThisHead',\n loc: buildLoc(loc || null)\n };\n } else if (head[0] === '@') {\n headNode = {\n type: 'AtHead',\n name: head,\n loc: buildLoc(loc || null)\n };\n } else {\n headNode = {\n type: 'VarHead',\n name: head,\n loc: buildLoc(loc || null)\n };\n }\n\n return {\n head: headNode,\n tail: tail\n };\n }\n\n function buildThis(loc) {\n return {\n type: 'ThisHead',\n loc: buildLoc(loc || null)\n };\n }\n\n function buildAtName(name, loc) {\n return {\n type: 'AtHead',\n name: name,\n loc: buildLoc(loc || null)\n };\n }\n\n function buildVar(name, loc) {\n return {\n type: 'VarHead',\n name: name,\n loc: buildLoc(loc || null)\n };\n }\n\n function buildHeadFromString(head, loc) {\n if (head[0] === '@') {\n return buildAtName(head, loc);\n } else if (head === 'this') {\n return buildThis(loc);\n } else {\n return buildVar(head, loc);\n }\n }\n\n function buildNamedBlockName(name, loc) {\n return {\n type: 'NamedBlockName',\n name: name,\n loc: buildLoc(loc || null)\n };\n }\n\n function buildCleanPath(head, tail, loc) {\n var _headToString = headToString(head),\n originalHead = _headToString.original,\n headParts = _headToString.parts;\n\n var parts = [].concat(headParts, tail);\n var original = [].concat(originalHead, parts).join('.');\n return new PathExpressionImplV1(original, head, tail, buildLoc(loc || null));\n }\n\n function buildPath(path, loc) {\n if (typeof path !== 'string') {\n if ('type' in path) {\n return path;\n } else {\n var _buildHead = buildHead(path.head, SourceSpan.broken()),\n _head = _buildHead.head,\n _tail = _buildHead.tail;\n\n var _headToString2 = headToString(_head),\n originalHead = _headToString2.original;\n\n return new PathExpressionImplV1([originalHead].concat(_tail).join('.'), _head, _tail, buildLoc(loc || null));\n }\n }\n\n var _buildHead2 = buildHead(path, SourceSpan.broken()),\n head = _buildHead2.head,\n tail = _buildHead2.tail;\n\n return new PathExpressionImplV1(path, head, tail, buildLoc(loc || null));\n }\n\n function buildLiteral(type, value, loc) {\n return {\n type: type,\n value: value,\n original: value,\n loc: buildLoc(loc || null)\n };\n } // Miscellaneous\n\n\n function buildHash(pairs, loc) {\n return {\n type: 'Hash',\n pairs: pairs || [],\n loc: buildLoc(loc || null)\n };\n }\n\n function buildPair(key, value, loc) {\n return {\n type: 'HashPair',\n key: key,\n value: value,\n loc: buildLoc(loc || null)\n };\n }\n\n function buildProgram(body, blockParams, loc) {\n return {\n type: 'Template',\n body: body || [],\n blockParams: blockParams || [],\n loc: buildLoc(loc || null)\n };\n }\n\n function buildBlockItself(body, blockParams, chained, loc) {\n if (chained === void 0) {\n chained = false;\n }\n\n return {\n type: 'Block',\n body: body || [],\n blockParams: blockParams || [],\n chained: chained,\n loc: buildLoc(loc || null)\n };\n }\n\n function buildTemplate(body, blockParams, loc) {\n return {\n type: 'Template',\n body: body || [],\n blockParams: blockParams || [],\n loc: buildLoc(loc || null)\n };\n }\n\n function buildPosition(line, column) {\n return {\n line: line,\n column: column\n };\n }\n\n function buildLoc() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 1) {\n var _loc = args[0];\n\n if (_loc && typeof _loc === 'object') {\n return SourceSpan.forHbsLoc(SOURCE(), _loc);\n } else {\n return SourceSpan.forHbsLoc(SOURCE(), SYNTHETIC_LOCATION);\n }\n } else {\n var startLine = args[0],\n startColumn = args[1],\n endLine = args[2],\n endColumn = args[3],\n _source = args[4];\n var source = _source ? new Source('', _source) : SOURCE();\n return SourceSpan.forHbsLoc(source, {\n start: {\n line: startLine,\n column: startColumn\n },\n end: {\n line: endLine,\n column: endColumn\n }\n });\n }\n }\n\n var publicBuilder = {\n mustache: buildMustache,\n block: buildBlock,\n partial: buildPartial,\n comment: buildComment,\n mustacheComment: buildMustacheComment,\n element: buildElement,\n elementModifier: buildElementModifier,\n attr: buildAttr,\n text: buildText,\n sexpr: buildSexpr,\n concat: buildConcat,\n hash: buildHash,\n pair: buildPair,\n literal: buildLiteral,\n program: buildProgram,\n blockItself: buildBlockItself,\n template: buildTemplate,\n loc: buildLoc,\n pos: buildPosition,\n path: buildPath,\n fullPath: buildCleanPath,\n head: buildHeadFromString,\n at: buildAtName,\n var: buildVar,\n this: buildThis,\n blockName: buildNamedBlockName,\n string: literal('StringLiteral'),\n boolean: literal('BooleanLiteral'),\n number: literal('NumberLiteral'),\n undefined: function (_undefined) {\n function undefined() {\n return _undefined.apply(this, arguments);\n }\n\n undefined.toString = function () {\n return _undefined.toString();\n };\n\n return undefined;\n }(function () {\n return buildLiteral('UndefinedLiteral', undefined);\n }),\n null: function _null() {\n return buildLiteral('NullLiteral', null);\n }\n };\n _exports.builders = publicBuilder;\n\n function literal(type) {\n return function (value, loc) {\n return buildLiteral(type, value, loc);\n };\n }\n\n var api = /*#__PURE__*/Object.freeze({});\n /**\n * A free variable is resolved according to a resolution rule:\n *\n * 1. Strict resolution\n * 2. Namespaced resolution\n * 3. Fallback resolution\n */\n\n /**\n * Strict resolution is used:\n *\n * 1. in a strict mode template\n * 2. in an unambiguous invocation with dot paths\n */\n\n _exports.AST = _exports.ASTv1 = api;\n\n var StrictResolution = /*#__PURE__*/function () {\n function StrictResolution() {\n this.isAngleBracket = false;\n }\n\n var _proto14 = StrictResolution.prototype;\n\n _proto14.resolution = function resolution() {\n return 31\n /* GetStrictFree */\n ;\n };\n\n _proto14.serialize = function serialize() {\n return 'Strict';\n };\n\n return StrictResolution;\n }();\n\n var STRICT_RESOLUTION = new StrictResolution();\n /**\n * A `LooseModeResolution` includes:\n *\n * - 0 or more namespaces to resolve the variable in\n * - optional fallback behavior\n *\n * In practice, there are a limited number of possible combinations of these degrees of freedom,\n * and they are captured by the `Ambiguity` union below.\n */\n\n var LooseModeResolution = /*#__PURE__*/function () {\n function LooseModeResolution(ambiguity, isAngleBracket) {\n if (isAngleBracket === void 0) {\n isAngleBracket = false;\n }\n\n this.ambiguity = ambiguity;\n this.isAngleBracket = isAngleBracket;\n }\n /**\n * Namespaced resolution is used in an unambiguous syntax position:\n *\n * 1. `(sexp)` (namespace: `Helper`)\n * 2. `{{#block}}` (namespace: `Component`)\n * 3. `<a {{modifier}}>` (namespace: `Modifier`)\n * 4. `<Component />` (namespace: `Component`)\n *\n * @see {NamespacedAmbiguity}\n */\n\n\n LooseModeResolution.namespaced = function namespaced(namespace, isAngleBracket) {\n if (isAngleBracket === void 0) {\n isAngleBracket = false;\n }\n\n return new LooseModeResolution({\n namespaces: [namespace],\n fallback: false\n }, isAngleBracket);\n }\n /**\n * Fallback resolution is used when no namespaced resolutions are possible, but fallback\n * resolution is still allowed.\n *\n * ```hbs\n * {{x.y}}\n * ```\n *\n * @see {FallbackAmbiguity}\n */\n ;\n\n LooseModeResolution.fallback = function fallback() {\n return new LooseModeResolution({\n namespaces: [],\n fallback: true\n });\n }\n /**\n * Append resolution is used when the variable should be resolved in both the `component` and\n * `helper` namespaces. Fallback resolution is optional.\n *\n * ```hbs\n * {{x}}\n * ```\n *\n * ^ `x` should be resolved in the `component` and `helper` namespaces with fallback resolution.\n *\n * ```hbs\n * {{x y}}\n * ```\n *\n * ^ `x` should be resolved in the `component` and `helper` namespaces without fallback\n * resolution.\n *\n * @see {ComponentOrHelperAmbiguity}\n */\n ;\n\n LooseModeResolution.append = function append(_ref13) {\n var invoke = _ref13.invoke;\n return new LooseModeResolution({\n namespaces: [\"Component\"\n /* Component */\n , \"Helper\"\n /* Helper */\n ],\n fallback: !invoke\n });\n }\n /**\n * Trusting append resolution is used when the variable should be resolved in both the `component` and\n * `helper` namespaces. Fallback resolution is optional.\n *\n * ```hbs\n * {{{x}}}\n * ```\n *\n * ^ `x` should be resolved in the `component` and `helper` namespaces with fallback resolution.\n *\n * ```hbs\n * {{{x y}}}\n * ```\n *\n * ^ `x` should be resolved in the `component` and `helper` namespaces without fallback\n * resolution.\n *\n * @see {HelperAmbiguity}\n */\n ;\n\n LooseModeResolution.trustingAppend = function trustingAppend(_ref14) {\n var invoke = _ref14.invoke;\n return new LooseModeResolution({\n namespaces: [\"Helper\"\n /* Helper */\n ],\n fallback: !invoke\n });\n }\n /**\n * Attribute resolution is used when the variable should be resolved as a `helper` with fallback\n * resolution.\n *\n * ```hbs\n * <a href={{x}} />\n * <a href=\"{{x}}.html\" />\n * ```\n *\n * ^ resolved in the `helper` namespace with fallback\n *\n * @see {HelperAmbiguity}\n */\n ;\n\n LooseModeResolution.attr = function attr() {\n return new LooseModeResolution({\n namespaces: [\"Helper\"\n /* Helper */\n ],\n fallback: true\n });\n };\n\n var _proto15 = LooseModeResolution.prototype;\n\n _proto15.resolution = function resolution() {\n if (this.ambiguity.namespaces.length === 0) {\n return 33\n /* GetFreeAsFallback */\n ;\n } else if (this.ambiguity.namespaces.length === 1) {\n if (this.ambiguity.fallback) {\n // simple namespaced resolution with fallback must be attr={{x}}\n return 36\n /* GetFreeAsHelperHeadOrThisFallback */\n ;\n } else {\n // simple namespaced resolution without fallback\n switch (this.ambiguity.namespaces[0]) {\n case \"Helper\"\n /* Helper */\n :\n return 37\n /* GetFreeAsHelperHead */\n ;\n\n case \"Modifier\"\n /* Modifier */\n :\n return 38\n /* GetFreeAsModifierHead */\n ;\n\n case \"Component\"\n /* Component */\n :\n return 39\n /* GetFreeAsComponentHead */\n ;\n }\n }\n } else if (this.ambiguity.fallback) {\n // component or helper + fallback ({{something}})\n return 34\n /* GetFreeAsComponentOrHelperHeadOrThisFallback */\n ;\n } else {\n // component or helper without fallback ({{something something}})\n return 35\n /* GetFreeAsComponentOrHelperHead */\n ;\n }\n };\n\n _proto15.serialize = function serialize() {\n if (this.ambiguity.namespaces.length === 0) {\n return 'Loose';\n } else if (this.ambiguity.namespaces.length === 1) {\n if (this.ambiguity.fallback) {\n // simple namespaced resolution with fallback must be attr={{x}}\n return ['ambiguous', \"Attr\"\n /* Attr */\n ];\n } else {\n return ['ns', this.ambiguity.namespaces[0]];\n }\n } else if (this.ambiguity.fallback) {\n // component or helper + fallback ({{something}})\n return ['ambiguous', \"Append\"\n /* Append */\n ];\n } else {\n // component or helper without fallback ({{something something}})\n return ['ambiguous', \"Invoke\"\n /* Invoke */\n ];\n }\n };\n\n return LooseModeResolution;\n }();\n\n var ARGUMENT_RESOLUTION = LooseModeResolution.fallback();\n\n function loadResolution(resolution) {\n if (typeof resolution === 'string') {\n switch (resolution) {\n case 'Loose':\n return LooseModeResolution.fallback();\n\n case 'Strict':\n return STRICT_RESOLUTION;\n }\n }\n\n switch (resolution[0]) {\n case 'ambiguous':\n switch (resolution[1]) {\n case \"Append\"\n /* Append */\n :\n return LooseModeResolution.append({\n invoke: false\n });\n\n case \"Attr\"\n /* Attr */\n :\n return LooseModeResolution.attr();\n\n case \"Invoke\"\n /* Invoke */\n :\n return LooseModeResolution.append({\n invoke: true\n });\n }\n\n case 'ns':\n return LooseModeResolution.namespaced(resolution[1]);\n }\n }\n\n function node(name) {\n if (name !== undefined) {\n var type = name;\n return {\n fields: function fields() {\n return /*#__PURE__*/function () {\n function _class(fields) {\n this.type = type;\n (0, _util.assign)(this, fields);\n }\n\n return _class;\n }();\n }\n };\n } else {\n return {\n fields: function fields() {\n return /*#__PURE__*/function () {\n function _class2(fields) {\n (0, _util.assign)(this, fields);\n }\n\n return _class2;\n }();\n }\n };\n }\n }\n /**\n * Corresponds to syntaxes with positional and named arguments:\n *\n * - SubExpression\n * - Invoking Append\n * - Invoking attributes\n * - InvokeBlock\n *\n * If `Args` is empty, the `SourceOffsets` for this node should be the collapsed position\n * immediately after the parent call node's `callee`.\n */\n\n\n var Args = /*#__PURE__*/function (_node$fields) {\n (0, _emberBabel.inheritsLoose)(Args, _node$fields);\n\n function Args() {\n return _node$fields.apply(this, arguments) || this;\n }\n\n Args.empty = function empty(loc) {\n return new Args({\n loc: loc,\n positional: PositionalArguments.empty(loc),\n named: NamedArguments.empty(loc)\n });\n };\n\n Args.named = function named(_named) {\n return new Args({\n loc: _named.loc,\n positional: PositionalArguments.empty(_named.loc.collapse('end')),\n named: _named\n });\n };\n\n var _proto16 = Args.prototype;\n\n _proto16.nth = function nth(offset) {\n return this.positional.nth(offset);\n };\n\n _proto16.get = function get(name) {\n return this.named.get(name);\n };\n\n _proto16.isEmpty = function isEmpty() {\n return this.positional.isEmpty() && this.named.isEmpty();\n };\n\n return Args;\n }(node().fields());\n /**\n * Corresponds to positional arguments.\n *\n * If `PositionalArguments` is empty, the `SourceOffsets` for this node should be the collapsed\n * position immediately after the parent call node's `callee`.\n */\n\n\n var PositionalArguments = /*#__PURE__*/function (_node$fields2) {\n (0, _emberBabel.inheritsLoose)(PositionalArguments, _node$fields2);\n\n function PositionalArguments() {\n return _node$fields2.apply(this, arguments) || this;\n }\n\n PositionalArguments.empty = function empty(loc) {\n return new PositionalArguments({\n loc: loc,\n exprs: []\n });\n };\n\n var _proto17 = PositionalArguments.prototype;\n\n _proto17.nth = function nth(offset) {\n return this.exprs[offset] || null;\n };\n\n _proto17.isEmpty = function isEmpty() {\n return this.exprs.length === 0;\n };\n\n (0, _emberBabel.createClass)(PositionalArguments, [{\n key: \"size\",\n get: function get() {\n return this.exprs.length;\n }\n }]);\n return PositionalArguments;\n }(node().fields());\n /**\n * Corresponds to named arguments.\n *\n * If `PositionalArguments` and `NamedArguments` are empty, the `SourceOffsets` for this node should\n * be the same as the `Args` node that contains this node.\n *\n * If `PositionalArguments` is not empty but `NamedArguments` is empty, the `SourceOffsets` for this\n * node should be the collapsed position immediately after the last positional argument.\n */\n\n\n var NamedArguments = /*#__PURE__*/function (_node$fields3) {\n (0, _emberBabel.inheritsLoose)(NamedArguments, _node$fields3);\n\n function NamedArguments() {\n return _node$fields3.apply(this, arguments) || this;\n }\n\n NamedArguments.empty = function empty(loc) {\n return new NamedArguments({\n loc: loc,\n entries: []\n });\n };\n\n var _proto18 = NamedArguments.prototype;\n\n _proto18.get = function get(name) {\n var entry = this.entries.filter(function (e) {\n return e.name.chars === name;\n })[0];\n return entry ? entry.value : null;\n };\n\n _proto18.isEmpty = function isEmpty() {\n return this.entries.length === 0;\n };\n\n (0, _emberBabel.createClass)(NamedArguments, [{\n key: \"size\",\n get: function get() {\n return this.entries.length;\n }\n }]);\n return NamedArguments;\n }(node().fields());\n /**\n * Corresponds to a single named argument.\n *\n * ```hbs\n * x=<expr>\n * ```\n */\n\n\n var NamedArgument = function NamedArgument(options) {\n this.loc = options.name.loc.extend(options.value.loc);\n this.name = options.name;\n this.value = options.value;\n };\n /**\n * `HtmlAttr` nodes are valid HTML attributes, with or without a value.\n *\n * Exceptions:\n *\n * - `...attributes` is `SplatAttr`\n * - `@x=<value>` is `ComponentArg`\n */\n\n\n var HtmlAttr = /*#__PURE__*/function (_node$fields4) {\n (0, _emberBabel.inheritsLoose)(HtmlAttr, _node$fields4);\n\n function HtmlAttr() {\n return _node$fields4.apply(this, arguments) || this;\n }\n\n return HtmlAttr;\n }(node('HtmlAttr').fields());\n\n var SplatAttr = /*#__PURE__*/function (_node$fields5) {\n (0, _emberBabel.inheritsLoose)(SplatAttr, _node$fields5);\n\n function SplatAttr() {\n return _node$fields5.apply(this, arguments) || this;\n }\n\n return SplatAttr;\n }(node('SplatAttr').fields());\n /**\n * Corresponds to an argument passed by a component (`@x=<value>`)\n */\n\n\n var ComponentArg = /*#__PURE__*/function (_node$fields6) {\n (0, _emberBabel.inheritsLoose)(ComponentArg, _node$fields6);\n\n function ComponentArg() {\n return _node$fields6.apply(this, arguments) || this;\n }\n\n var _proto19 = ComponentArg.prototype;\n\n /**\n * Convert the component argument into a named argument node\n */\n _proto19.toNamedArgument = function toNamedArgument() {\n return new NamedArgument({\n name: this.name,\n value: this.value\n });\n };\n\n return ComponentArg;\n }(node().fields());\n /**\n * An `ElementModifier` is just a normal call node in modifier position.\n */\n\n\n var ElementModifier = /*#__PURE__*/function (_node$fields7) {\n (0, _emberBabel.inheritsLoose)(ElementModifier, _node$fields7);\n\n function ElementModifier() {\n return _node$fields7.apply(this, arguments) || this;\n }\n\n return ElementModifier;\n }(node('ElementModifier').fields());\n\n var SpanList = /*#__PURE__*/function () {\n function SpanList(span) {\n if (span === void 0) {\n span = [];\n }\n\n this._span = span;\n }\n\n SpanList.range = function range(span, fallback) {\n if (fallback === void 0) {\n fallback = SourceSpan.NON_EXISTENT;\n }\n\n return new SpanList(span.map(loc)).getRangeOffset(fallback);\n };\n\n var _proto20 = SpanList.prototype;\n\n _proto20.add = function add(offset) {\n this._span.push(offset);\n };\n\n _proto20.getRangeOffset = function getRangeOffset(fallback) {\n if (this._span.length === 0) {\n return fallback;\n } else {\n var first = this._span[0];\n var last = this._span[this._span.length - 1];\n return first.extend(last);\n }\n };\n\n return SpanList;\n }();\n\n _exports.SpanList = SpanList;\n\n function loc(span) {\n if (Array.isArray(span)) {\n var first = span[0];\n var last = span[span.length - 1];\n return loc(first).extend(loc(last));\n } else if (span instanceof SourceSpan) {\n return span;\n } else {\n return span.loc;\n }\n }\n\n function hasSpan(span) {\n if (Array.isArray(span) && span.length === 0) {\n return false;\n }\n\n return true;\n }\n\n function maybeLoc(location, fallback) {\n if (hasSpan(location)) {\n return loc(location);\n } else {\n return fallback;\n }\n }\n\n var GlimmerComment = /*#__PURE__*/function (_node$fields8) {\n (0, _emberBabel.inheritsLoose)(GlimmerComment, _node$fields8);\n\n function GlimmerComment() {\n return _node$fields8.apply(this, arguments) || this;\n }\n\n return GlimmerComment;\n }(node('GlimmerComment').fields());\n\n var HtmlText = /*#__PURE__*/function (_node$fields9) {\n (0, _emberBabel.inheritsLoose)(HtmlText, _node$fields9);\n\n function HtmlText() {\n return _node$fields9.apply(this, arguments) || this;\n }\n\n return HtmlText;\n }(node('HtmlText').fields());\n\n var HtmlComment = /*#__PURE__*/function (_node$fields10) {\n (0, _emberBabel.inheritsLoose)(HtmlComment, _node$fields10);\n\n function HtmlComment() {\n return _node$fields10.apply(this, arguments) || this;\n }\n\n return HtmlComment;\n }(node('HtmlComment').fields());\n\n var AppendContent = /*#__PURE__*/function (_node$fields11) {\n (0, _emberBabel.inheritsLoose)(AppendContent, _node$fields11);\n\n function AppendContent() {\n return _node$fields11.apply(this, arguments) || this;\n }\n\n (0, _emberBabel.createClass)(AppendContent, [{\n key: \"callee\",\n get: function get() {\n if (this.value.type === 'Call') {\n return this.value.callee;\n } else {\n return this.value;\n }\n }\n }, {\n key: \"args\",\n get: function get() {\n if (this.value.type === 'Call') {\n return this.value.args;\n } else {\n return Args.empty(this.value.loc.collapse('end'));\n }\n }\n }]);\n return AppendContent;\n }(node('AppendContent').fields());\n\n var InvokeBlock = /*#__PURE__*/function (_node$fields12) {\n (0, _emberBabel.inheritsLoose)(InvokeBlock, _node$fields12);\n\n function InvokeBlock() {\n return _node$fields12.apply(this, arguments) || this;\n }\n\n return InvokeBlock;\n }(node('InvokeBlock').fields());\n /**\n * Corresponds to a component invocation. When the content of a component invocation contains no\n * named blocks, `blocks` contains a single named block named `\"default\"`. When a component\n * invocation is self-closing, `blocks` is empty.\n */\n\n\n var InvokeComponent = /*#__PURE__*/function (_node$fields13) {\n (0, _emberBabel.inheritsLoose)(InvokeComponent, _node$fields13);\n\n function InvokeComponent() {\n return _node$fields13.apply(this, arguments) || this;\n }\n\n (0, _emberBabel.createClass)(InvokeComponent, [{\n key: \"args\",\n get: function get() {\n var entries = this.componentArgs.map(function (a) {\n return a.toNamedArgument();\n });\n return Args.named(new NamedArguments({\n loc: SpanList.range(entries, this.callee.loc.collapse('end')),\n entries: entries\n }));\n }\n }]);\n return InvokeComponent;\n }(node('InvokeComponent').fields());\n /**\n * Corresponds to a simple HTML element. The AST allows component arguments and modifiers to support\n * future extensions.\n */\n\n\n var SimpleElement = /*#__PURE__*/function (_node$fields14) {\n (0, _emberBabel.inheritsLoose)(SimpleElement, _node$fields14);\n\n function SimpleElement() {\n return _node$fields14.apply(this, arguments) || this;\n }\n\n (0, _emberBabel.createClass)(SimpleElement, [{\n key: \"args\",\n get: function get() {\n var entries = this.componentArgs.map(function (a) {\n return a.toNamedArgument();\n });\n return Args.named(new NamedArguments({\n loc: SpanList.range(entries, this.tag.loc.collapse('end')),\n entries: entries\n }));\n }\n }]);\n return SimpleElement;\n }(node('SimpleElement').fields());\n /**\n * Corresponds to a Handlebars literal.\n *\n * @see {LiteralValue}\n */\n\n\n var LiteralExpression = /*#__PURE__*/function (_node$fields15) {\n (0, _emberBabel.inheritsLoose)(LiteralExpression, _node$fields15);\n\n function LiteralExpression() {\n return _node$fields15.apply(this, arguments) || this;\n }\n\n var _proto21 = LiteralExpression.prototype;\n\n _proto21.toSlice = function toSlice() {\n return new SourceSlice({\n loc: this.loc,\n chars: this.value\n });\n };\n\n return LiteralExpression;\n }(node('Literal').fields());\n /**\n * Returns true if an input {@see ExpressionNode} is a literal.\n */\n\n\n function isLiteral(node$$1, kind) {\n if (node$$1.type === 'Literal') {\n if (kind === undefined) {\n return true;\n } else if (kind === 'null') {\n return node$$1.value === null;\n } else {\n return typeof node$$1.value === kind;\n }\n } else {\n return false;\n }\n }\n /**\n * Corresponds to a path in expression position.\n *\n * ```hbs\n * this\n * this.x\n * @x\n * @x.y\n * x\n * x.y\n * ```\n */\n\n\n var PathExpression = /*#__PURE__*/function (_node$fields16) {\n (0, _emberBabel.inheritsLoose)(PathExpression, _node$fields16);\n\n function PathExpression() {\n return _node$fields16.apply(this, arguments) || this;\n }\n\n return PathExpression;\n }(node('Path').fields());\n /**\n * Corresponds to a parenthesized call expression.\n *\n * ```hbs\n * (x)\n * (x.y)\n * (x y)\n * (x.y z)\n * ```\n */\n\n\n var CallExpression = /*#__PURE__*/function (_node$fields17) {\n (0, _emberBabel.inheritsLoose)(CallExpression, _node$fields17);\n\n function CallExpression() {\n return _node$fields17.apply(this, arguments) || this;\n }\n\n return CallExpression;\n }(node('Call').fields());\n /**\n * Corresponds to a possible deprecated helper call. Must be:\n *\n * 1. A free variable (not this.foo, not @foo, not local).\n * 2. Argument-less.\n * 3. In a component invocation's named argument position.\n * 4. Not parenthesized (not @bar={{(helper)}}).\n * 5. Not interpolated (not @bar=\"{{helper}}\").\n *\n * ```hbs\n * <Foo @bar={{helper}} />\n * ```\n */\n\n\n var DeprecatedCallExpression = /*#__PURE__*/function (_node$fields18) {\n (0, _emberBabel.inheritsLoose)(DeprecatedCallExpression, _node$fields18);\n\n function DeprecatedCallExpression() {\n return _node$fields18.apply(this, arguments) || this;\n }\n\n return DeprecatedCallExpression;\n }(node('DeprecatedCall').fields());\n /**\n * Corresponds to an interpolation in attribute value position.\n *\n * ```hbs\n * <a href=\"{{url}}.html\"\n * ```\n */\n\n\n var InterpolateExpression = /*#__PURE__*/function (_node$fields19) {\n (0, _emberBabel.inheritsLoose)(InterpolateExpression, _node$fields19);\n\n function InterpolateExpression() {\n return _node$fields19.apply(this, arguments) || this;\n }\n\n return InterpolateExpression;\n }(node('Interpolate').fields());\n /**\n * Corresponds to `this` at the head of an expression.\n */\n\n\n var ThisReference = /*#__PURE__*/function (_node$fields20) {\n (0, _emberBabel.inheritsLoose)(ThisReference, _node$fields20);\n\n function ThisReference() {\n return _node$fields20.apply(this, arguments) || this;\n }\n\n return ThisReference;\n }(node('This').fields());\n /**\n * Corresponds to `@<ident>` at the beginning of an expression.\n */\n\n\n var ArgReference = /*#__PURE__*/function (_node$fields21) {\n (0, _emberBabel.inheritsLoose)(ArgReference, _node$fields21);\n\n function ArgReference() {\n return _node$fields21.apply(this, arguments) || this;\n }\n\n return ArgReference;\n }(node('Arg').fields());\n /**\n * Corresponds to `<ident>` at the beginning of an expression, when `<ident>` is in the current\n * block's scope.\n */\n\n\n var LocalVarReference = /*#__PURE__*/function (_node$fields22) {\n (0, _emberBabel.inheritsLoose)(LocalVarReference, _node$fields22);\n\n function LocalVarReference() {\n return _node$fields22.apply(this, arguments) || this;\n }\n\n return LocalVarReference;\n }(node('Local').fields());\n /**\n * Corresponds to `<ident>` at the beginning of an expression, when `<ident>` is *not* in the\n * current block's scope.\n *\n * The `resolution: FreeVarResolution` field describes how to resolve the free variable.\n *\n * Note: In strict mode, it must always be a variable that is in a concrete JavaScript scope that\n * the template will be installed into.\n */\n\n\n var FreeVarReference = /*#__PURE__*/function (_node$fields23) {\n (0, _emberBabel.inheritsLoose)(FreeVarReference, _node$fields23);\n\n function FreeVarReference() {\n return _node$fields23.apply(this, arguments) || this;\n }\n\n return FreeVarReference;\n }(node('Free').fields());\n /**\n * Corresponds to an entire template.\n */\n\n\n var Template = /*#__PURE__*/function (_node$fields24) {\n (0, _emberBabel.inheritsLoose)(Template, _node$fields24);\n\n function Template() {\n return _node$fields24.apply(this, arguments) || this;\n }\n\n return Template;\n }(node().fields());\n /**\n * Represents a block. In principle this could be merged with `NamedBlock`, because all cases\n * involving blocks have at least a notional name.\n */\n\n\n var Block = /*#__PURE__*/function (_node$fields25) {\n (0, _emberBabel.inheritsLoose)(Block, _node$fields25);\n\n function Block() {\n return _node$fields25.apply(this, arguments) || this;\n }\n\n return Block;\n }(node().fields());\n /**\n * Corresponds to a collection of named blocks.\n */\n\n\n var NamedBlocks = /*#__PURE__*/function (_node$fields26) {\n (0, _emberBabel.inheritsLoose)(NamedBlocks, _node$fields26);\n\n function NamedBlocks() {\n return _node$fields26.apply(this, arguments) || this;\n }\n\n var _proto22 = NamedBlocks.prototype;\n\n _proto22.get = function get(name) {\n return this.blocks.filter(function (block) {\n return block.name.chars === name;\n })[0] || null;\n };\n\n return NamedBlocks;\n }(node().fields());\n /**\n * Corresponds to a single named block. This is used for anonymous named blocks (`default` and\n * `else`).\n */\n\n\n var NamedBlock = /*#__PURE__*/function (_node$fields27) {\n (0, _emberBabel.inheritsLoose)(NamedBlock, _node$fields27);\n\n function NamedBlock() {\n return _node$fields27.apply(this, arguments) || this;\n }\n\n (0, _emberBabel.createClass)(NamedBlock, [{\n key: \"args\",\n get: function get() {\n var entries = this.componentArgs.map(function (a) {\n return a.toNamedArgument();\n });\n return Args.named(new NamedArguments({\n loc: SpanList.range(entries, this.name.loc.collapse('end')),\n entries: entries\n }));\n }\n }]);\n return NamedBlock;\n }(node().fields());\n\n var api$1 = /*#__PURE__*/Object.freeze({\n StrictResolution: StrictResolution,\n STRICT_RESOLUTION: STRICT_RESOLUTION,\n LooseModeResolution: LooseModeResolution,\n ARGUMENT_RESOLUTION: ARGUMENT_RESOLUTION,\n loadResolution: loadResolution,\n node: node,\n Args: Args,\n PositionalArguments: PositionalArguments,\n NamedArguments: NamedArguments,\n NamedArgument: NamedArgument,\n HtmlAttr: HtmlAttr,\n SplatAttr: SplatAttr,\n ComponentArg: ComponentArg,\n ElementModifier: ElementModifier,\n GlimmerComment: GlimmerComment,\n HtmlText: HtmlText,\n HtmlComment: HtmlComment,\n AppendContent: AppendContent,\n InvokeBlock: InvokeBlock,\n InvokeComponent: InvokeComponent,\n SimpleElement: SimpleElement,\n LiteralExpression: LiteralExpression,\n isLiteral: isLiteral,\n PathExpression: PathExpression,\n CallExpression: CallExpression,\n DeprecatedCallExpression: DeprecatedCallExpression,\n InterpolateExpression: InterpolateExpression,\n ThisReference: ThisReference,\n ArgReference: ArgReference,\n LocalVarReference: LocalVarReference,\n FreeVarReference: FreeVarReference,\n Template: Template,\n Block: Block,\n NamedBlocks: NamedBlocks,\n NamedBlock: NamedBlock\n });\n _exports.ASTv2 = api$1;\n var ATTR_VALUE_REGEX_TEST = /[\\xA0\"&]/;\n var ATTR_VALUE_REGEX_REPLACE = new RegExp(ATTR_VALUE_REGEX_TEST.source, 'g');\n var TEXT_REGEX_TEST = /[\\xA0&<>]/;\n var TEXT_REGEX_REPLACE = new RegExp(TEXT_REGEX_TEST.source, 'g');\n\n function attrValueReplacer(char) {\n switch (char.charCodeAt(0)) {\n case 160\n /* NBSP */\n :\n return '&nbsp;';\n\n case 34\n /* QUOT */\n :\n return '&quot;';\n\n case 38\n /* AMP */\n :\n return '&amp;';\n\n default:\n return char;\n }\n }\n\n function textReplacer(char) {\n switch (char.charCodeAt(0)) {\n case 160\n /* NBSP */\n :\n return '&nbsp;';\n\n case 38\n /* AMP */\n :\n return '&amp;';\n\n case 60\n /* LT */\n :\n return '&lt;';\n\n case 62\n /* GT */\n :\n return '&gt;';\n\n default:\n return char;\n }\n }\n\n function escapeAttrValue(attrValue) {\n if (ATTR_VALUE_REGEX_TEST.test(attrValue)) {\n return attrValue.replace(ATTR_VALUE_REGEX_REPLACE, attrValueReplacer);\n }\n\n return attrValue;\n }\n\n function escapeText(text) {\n if (TEXT_REGEX_TEST.test(text)) {\n return text.replace(TEXT_REGEX_REPLACE, textReplacer);\n }\n\n return text;\n }\n\n function sortByLoc(a, b) {\n // If either is invisible, don't try to order them\n if (a.loc.isInvisible || b.loc.isInvisible) {\n return 0;\n }\n\n if (a.loc.startPosition.line < b.loc.startPosition.line) {\n return -1;\n }\n\n if (a.loc.startPosition.line === b.loc.startPosition.line && a.loc.startPosition.column < b.loc.startPosition.column) {\n return -1;\n }\n\n if (a.loc.startPosition.line === b.loc.startPosition.line && a.loc.startPosition.column === b.loc.startPosition.column) {\n return 0;\n }\n\n return 1;\n }\n\n var voidMap = Object.create(null);\n var voidTagNames = 'area base br col command embed hr img input keygen link meta param source track wbr';\n voidTagNames.split(' ').forEach(function (tagName) {\n voidMap[tagName] = true;\n });\n var NON_WHITESPACE = /\\S/;\n\n var Printer = /*#__PURE__*/function () {\n function Printer(options) {\n this.buffer = '';\n this.options = options;\n }\n /*\n This is used by _all_ methods on this Printer class that add to `this.buffer`,\n it allows consumers of the printer to use alternate string representations for\n a given node.\n The primary use case for this are things like source -> source codemod utilities.\n For example, ember-template-recast attempts to always preserve the original string\n formatting in each AST node if no modifications are made to it.\n */\n\n\n var _proto23 = Printer.prototype;\n\n _proto23.handledByOverride = function handledByOverride(node, ensureLeadingWhitespace) {\n if (ensureLeadingWhitespace === void 0) {\n ensureLeadingWhitespace = false;\n }\n\n if (this.options.override !== undefined) {\n var result = this.options.override(node, this.options);\n\n if (typeof result === 'string') {\n if (ensureLeadingWhitespace && result !== '' && NON_WHITESPACE.test(result[0])) {\n result = \" \" + result;\n }\n\n this.buffer += result;\n return true;\n }\n }\n\n return false;\n };\n\n _proto23.Node = function Node(node) {\n switch (node.type) {\n case 'MustacheStatement':\n case 'BlockStatement':\n case 'PartialStatement':\n case 'MustacheCommentStatement':\n case 'CommentStatement':\n case 'TextNode':\n case 'ElementNode':\n case 'AttrNode':\n case 'Block':\n case 'Template':\n return this.TopLevelStatement(node);\n\n case 'StringLiteral':\n case 'BooleanLiteral':\n case 'NumberLiteral':\n case 'UndefinedLiteral':\n case 'NullLiteral':\n case 'PathExpression':\n case 'SubExpression':\n return this.Expression(node);\n\n case 'Program':\n return this.Block(node);\n\n case 'ConcatStatement':\n // should have an AttrNode parent\n return this.ConcatStatement(node);\n\n case 'Hash':\n return this.Hash(node);\n\n case 'HashPair':\n return this.HashPair(node);\n\n case 'ElementModifierStatement':\n return this.ElementModifierStatement(node);\n }\n };\n\n _proto23.Expression = function Expression(expression) {\n switch (expression.type) {\n case 'StringLiteral':\n case 'BooleanLiteral':\n case 'NumberLiteral':\n case 'UndefinedLiteral':\n case 'NullLiteral':\n return this.Literal(expression);\n\n case 'PathExpression':\n return this.PathExpression(expression);\n\n case 'SubExpression':\n return this.SubExpression(expression);\n }\n };\n\n _proto23.Literal = function Literal(literal) {\n switch (literal.type) {\n case 'StringLiteral':\n return this.StringLiteral(literal);\n\n case 'BooleanLiteral':\n return this.BooleanLiteral(literal);\n\n case 'NumberLiteral':\n return this.NumberLiteral(literal);\n\n case 'UndefinedLiteral':\n return this.UndefinedLiteral(literal);\n\n case 'NullLiteral':\n return this.NullLiteral(literal);\n }\n };\n\n _proto23.TopLevelStatement = function TopLevelStatement(statement) {\n switch (statement.type) {\n case 'MustacheStatement':\n return this.MustacheStatement(statement);\n\n case 'BlockStatement':\n return this.BlockStatement(statement);\n\n case 'PartialStatement':\n return this.PartialStatement(statement);\n\n case 'MustacheCommentStatement':\n return this.MustacheCommentStatement(statement);\n\n case 'CommentStatement':\n return this.CommentStatement(statement);\n\n case 'TextNode':\n return this.TextNode(statement);\n\n case 'ElementNode':\n return this.ElementNode(statement);\n\n case 'Block':\n case 'Template':\n return this.Block(statement);\n\n case 'AttrNode':\n // should have element\n return this.AttrNode(statement);\n }\n };\n\n _proto23.Block = function Block(block) {\n /*\n When processing a template like:\n ```hbs\n {{#if whatever}}\n whatever\n {{else if somethingElse}}\n something else\n {{else}}\n fallback\n {{/if}}\n ```\n The AST still _effectively_ looks like:\n ```hbs\n {{#if whatever}}\n whatever\n {{else}}{{#if somethingElse}}\n something else\n {{else}}\n fallback\n {{/if}}{{/if}}\n ```\n The only way we can tell if that is the case is by checking for\n `block.chained`, but unfortunately when the actual statements are\n processed the `block.body[0]` node (which will always be a\n `BlockStatement`) has no clue that its ancestor `Block` node was\n chained.\n This \"forwards\" the `chained` setting so that we can check\n it later when processing the `BlockStatement`.\n */\n if (block.chained) {\n var firstChild = block.body[0];\n firstChild.chained = true;\n }\n\n if (this.handledByOverride(block)) {\n return;\n }\n\n this.TopLevelStatements(block.body);\n };\n\n _proto23.TopLevelStatements = function TopLevelStatements(statements) {\n var _this2 = this;\n\n statements.forEach(function (statement) {\n return _this2.TopLevelStatement(statement);\n });\n };\n\n _proto23.ElementNode = function ElementNode(el) {\n if (this.handledByOverride(el)) {\n return;\n }\n\n this.OpenElementNode(el);\n this.TopLevelStatements(el.children);\n this.CloseElementNode(el);\n };\n\n _proto23.OpenElementNode = function OpenElementNode(el) {\n this.buffer += \"<\" + el.tag;\n var parts = [].concat(el.attributes, el.modifiers, el.comments).sort(sortByLoc);\n\n for (var _iterator2 = (0, _emberBabel.createForOfIteratorHelperLoose)(parts), _step2; !(_step2 = _iterator2()).done;) {\n var _part = _step2.value;\n this.buffer += ' ';\n\n switch (_part.type) {\n case 'AttrNode':\n this.AttrNode(_part);\n break;\n\n case 'ElementModifierStatement':\n this.ElementModifierStatement(_part);\n break;\n\n case 'MustacheCommentStatement':\n this.MustacheCommentStatement(_part);\n break;\n }\n }\n\n if (el.blockParams.length) {\n this.BlockParams(el.blockParams);\n }\n\n if (el.selfClosing) {\n this.buffer += ' /';\n }\n\n this.buffer += '>';\n };\n\n _proto23.CloseElementNode = function CloseElementNode(el) {\n if (el.selfClosing || voidMap[el.tag.toLowerCase()]) {\n return;\n }\n\n this.buffer += \"</\" + el.tag + \">\";\n };\n\n _proto23.AttrNode = function AttrNode(attr) {\n if (this.handledByOverride(attr)) {\n return;\n }\n\n var name = attr.name,\n value = attr.value;\n this.buffer += name;\n\n if (value.type !== 'TextNode' || value.chars.length > 0) {\n this.buffer += '=';\n this.AttrNodeValue(value);\n }\n };\n\n _proto23.AttrNodeValue = function AttrNodeValue(value) {\n if (value.type === 'TextNode') {\n this.buffer += '\"';\n this.TextNode(value, true);\n this.buffer += '\"';\n } else {\n this.Node(value);\n }\n };\n\n _proto23.TextNode = function TextNode(text, isAttr) {\n if (this.handledByOverride(text)) {\n return;\n }\n\n if (this.options.entityEncoding === 'raw') {\n this.buffer += text.chars;\n } else if (isAttr) {\n this.buffer += escapeAttrValue(text.chars);\n } else {\n this.buffer += escapeText(text.chars);\n }\n };\n\n _proto23.MustacheStatement = function MustacheStatement(mustache) {\n if (this.handledByOverride(mustache)) {\n return;\n }\n\n this.buffer += mustache.escaped ? '{{' : '{{{';\n\n if (mustache.strip.open) {\n this.buffer += '~';\n }\n\n this.Expression(mustache.path);\n this.Params(mustache.params);\n this.Hash(mustache.hash);\n\n if (mustache.strip.close) {\n this.buffer += '~';\n }\n\n this.buffer += mustache.escaped ? '}}' : '}}}';\n };\n\n _proto23.BlockStatement = function BlockStatement(block) {\n if (this.handledByOverride(block)) {\n return;\n }\n\n if (block.chained) {\n this.buffer += block.inverseStrip.open ? '{{~' : '{{';\n this.buffer += 'else ';\n } else {\n this.buffer += block.openStrip.open ? '{{~#' : '{{#';\n }\n\n this.Expression(block.path);\n this.Params(block.params);\n this.Hash(block.hash);\n\n if (block.program.blockParams.length) {\n this.BlockParams(block.program.blockParams);\n }\n\n if (block.chained) {\n this.buffer += block.inverseStrip.close ? '~}}' : '}}';\n } else {\n this.buffer += block.openStrip.close ? '~}}' : '}}';\n }\n\n this.Block(block.program);\n\n if (block.inverse) {\n if (!block.inverse.chained) {\n this.buffer += block.inverseStrip.open ? '{{~' : '{{';\n this.buffer += 'else';\n this.buffer += block.inverseStrip.close ? '~}}' : '}}';\n }\n\n this.Block(block.inverse);\n }\n\n if (!block.chained) {\n this.buffer += block.closeStrip.open ? '{{~/' : '{{/';\n this.Expression(block.path);\n this.buffer += block.closeStrip.close ? '~}}' : '}}';\n }\n };\n\n _proto23.BlockParams = function BlockParams(blockParams) {\n this.buffer += \" as |\" + blockParams.join(' ') + \"|\";\n };\n\n _proto23.PartialStatement = function PartialStatement(partial) {\n if (this.handledByOverride(partial)) {\n return;\n }\n\n this.buffer += '{{>';\n this.Expression(partial.name);\n this.Params(partial.params);\n this.Hash(partial.hash);\n this.buffer += '}}';\n };\n\n _proto23.ConcatStatement = function ConcatStatement(concat) {\n var _this3 = this;\n\n if (this.handledByOverride(concat)) {\n return;\n }\n\n this.buffer += '\"';\n concat.parts.forEach(function (part) {\n if (part.type === 'TextNode') {\n _this3.TextNode(part, true);\n } else {\n _this3.Node(part);\n }\n });\n this.buffer += '\"';\n };\n\n _proto23.MustacheCommentStatement = function MustacheCommentStatement(comment) {\n if (this.handledByOverride(comment)) {\n return;\n }\n\n this.buffer += \"{{!--\" + comment.value + \"--}}\";\n };\n\n _proto23.ElementModifierStatement = function ElementModifierStatement(mod) {\n if (this.handledByOverride(mod)) {\n return;\n }\n\n this.buffer += '{{';\n this.Expression(mod.path);\n this.Params(mod.params);\n this.Hash(mod.hash);\n this.buffer += '}}';\n };\n\n _proto23.CommentStatement = function CommentStatement(comment) {\n if (this.handledByOverride(comment)) {\n return;\n }\n\n this.buffer += \"<!--\" + comment.value + \"-->\";\n };\n\n _proto23.PathExpression = function PathExpression(path) {\n if (this.handledByOverride(path)) {\n return;\n }\n\n this.buffer += path.original;\n };\n\n _proto23.SubExpression = function SubExpression(sexp) {\n if (this.handledByOverride(sexp)) {\n return;\n }\n\n this.buffer += '(';\n this.Expression(sexp.path);\n this.Params(sexp.params);\n this.Hash(sexp.hash);\n this.buffer += ')';\n };\n\n _proto23.Params = function Params(params) {\n var _this4 = this;\n\n // TODO: implement a top level Params AST node (just like the Hash object)\n // so that this can also be overridden\n if (params.length) {\n params.forEach(function (param) {\n _this4.buffer += ' ';\n\n _this4.Expression(param);\n });\n }\n };\n\n _proto23.Hash = function Hash(hash) {\n var _this5 = this;\n\n if (this.handledByOverride(hash, true)) {\n return;\n }\n\n hash.pairs.forEach(function (pair) {\n _this5.buffer += ' ';\n\n _this5.HashPair(pair);\n });\n };\n\n _proto23.HashPair = function HashPair(pair) {\n if (this.handledByOverride(pair)) {\n return;\n }\n\n this.buffer += pair.key;\n this.buffer += '=';\n this.Node(pair.value);\n };\n\n _proto23.StringLiteral = function StringLiteral(str) {\n if (this.handledByOverride(str)) {\n return;\n }\n\n this.buffer += JSON.stringify(str.value);\n };\n\n _proto23.BooleanLiteral = function BooleanLiteral(bool) {\n if (this.handledByOverride(bool)) {\n return;\n }\n\n this.buffer += bool.value;\n };\n\n _proto23.NumberLiteral = function NumberLiteral(number) {\n if (this.handledByOverride(number)) {\n return;\n }\n\n this.buffer += number.value;\n };\n\n _proto23.UndefinedLiteral = function UndefinedLiteral(node) {\n if (this.handledByOverride(node)) {\n return;\n }\n\n this.buffer += 'undefined';\n };\n\n _proto23.NullLiteral = function NullLiteral(node) {\n if (this.handledByOverride(node)) {\n return;\n }\n\n this.buffer += 'null';\n };\n\n _proto23.print = function print(node) {\n var options = this.options;\n\n if (options.override) {\n var result = options.override(node, options);\n\n if (result !== undefined) {\n return result;\n }\n }\n\n this.buffer = '';\n this.Node(node);\n return this.buffer;\n };\n\n return Printer;\n }();\n\n function build(ast, options) {\n if (options === void 0) {\n options = {\n entityEncoding: 'transformed'\n };\n }\n\n if (!ast) {\n return '';\n }\n\n var printer = new Printer(options);\n return printer.print(ast);\n }\n\n function generateSyntaxError(message, location) {\n var module = location.module,\n loc = location.loc;\n var _loc$start = loc.start,\n line = _loc$start.line,\n column = _loc$start.column;\n var code = location.asString();\n var quotedCode = code ? \"\\n\\n|\\n| \" + code.split('\\n').join('\\n| ') + \"\\n|\\n\\n\" : '';\n var error = new Error(message + \": \" + quotedCode + \"(error occurred in '\" + module + \"' @ line \" + line + \" : column \" + column + \")\");\n error.name = 'SyntaxError';\n error.location = location;\n error.code = code;\n return error;\n } // ParentNode and ChildKey types are derived from VisitorKeysMap\n\n\n var visitorKeys = {\n Program: (0, _util.tuple)('body'),\n Template: (0, _util.tuple)('body'),\n Block: (0, _util.tuple)('body'),\n MustacheStatement: (0, _util.tuple)('path', 'params', 'hash'),\n BlockStatement: (0, _util.tuple)('path', 'params', 'hash', 'program', 'inverse'),\n ElementModifierStatement: (0, _util.tuple)('path', 'params', 'hash'),\n PartialStatement: (0, _util.tuple)('name', 'params', 'hash'),\n CommentStatement: (0, _util.tuple)(),\n MustacheCommentStatement: (0, _util.tuple)(),\n ElementNode: (0, _util.tuple)('attributes', 'modifiers', 'children', 'comments'),\n AttrNode: (0, _util.tuple)('value'),\n TextNode: (0, _util.tuple)(),\n ConcatStatement: (0, _util.tuple)('parts'),\n SubExpression: (0, _util.tuple)('path', 'params', 'hash'),\n PathExpression: (0, _util.tuple)(),\n PathHead: (0, _util.tuple)(),\n StringLiteral: (0, _util.tuple)(),\n BooleanLiteral: (0, _util.tuple)(),\n NumberLiteral: (0, _util.tuple)(),\n NullLiteral: (0, _util.tuple)(),\n UndefinedLiteral: (0, _util.tuple)(),\n Hash: (0, _util.tuple)('pairs'),\n HashPair: (0, _util.tuple)('value'),\n // v2 new nodes\n NamedBlock: (0, _util.tuple)('attributes', 'modifiers', 'children', 'comments'),\n SimpleElement: (0, _util.tuple)('attributes', 'modifiers', 'children', 'comments'),\n Component: (0, _util.tuple)('head', 'attributes', 'modifiers', 'children', 'comments')\n };\n\n var TraversalError = function () {\n TraversalError.prototype = Object.create(Error.prototype);\n TraversalError.prototype.constructor = TraversalError;\n\n function TraversalError(message, node, parent, key) {\n var error = Error.call(this, message);\n this.key = key;\n this.message = message;\n this.node = node;\n this.parent = parent;\n this.stack = error.stack;\n }\n\n return TraversalError;\n }();\n\n function cannotRemoveNode(node, parent, key) {\n return new TraversalError('Cannot remove a node unless it is part of an array', node, parent, key);\n }\n\n function cannotReplaceNode(node, parent, key) {\n return new TraversalError('Cannot replace a node with multiple nodes unless it is part of an array', node, parent, key);\n }\n\n function cannotReplaceOrRemoveInKeyHandlerYet(node, key) {\n return new TraversalError('Replacing and removing in key handlers is not yet supported.', node, null, key);\n }\n\n var WalkerPath = /*#__PURE__*/function () {\n function WalkerPath(node, parent, parentKey) {\n if (parent === void 0) {\n parent = null;\n }\n\n if (parentKey === void 0) {\n parentKey = null;\n }\n\n this.node = node;\n this.parent = parent;\n this.parentKey = parentKey;\n }\n\n var _proto24 = WalkerPath.prototype;\n\n _proto24.parents = function parents() {\n var _this6 = this,\n _ref15;\n\n return _ref15 = {}, _ref15[Symbol.iterator] = function () {\n return new PathParentsIterator(_this6);\n }, _ref15;\n };\n\n (0, _emberBabel.createClass)(WalkerPath, [{\n key: \"parentNode\",\n get: function get() {\n return this.parent ? this.parent.node : null;\n }\n }]);\n return WalkerPath;\n }();\n\n _exports.WalkerPath = WalkerPath;\n\n var PathParentsIterator = /*#__PURE__*/function () {\n function PathParentsIterator(path) {\n this.path = path;\n }\n\n var _proto25 = PathParentsIterator.prototype;\n\n _proto25.next = function next() {\n if (this.path.parent) {\n this.path = this.path.parent;\n return {\n done: false,\n value: this.path\n };\n } else {\n return {\n done: true,\n value: null\n };\n }\n };\n\n return PathParentsIterator;\n }();\n\n function getEnterFunction(handler) {\n if (typeof handler === 'function') {\n return handler;\n } else {\n return handler.enter;\n }\n }\n\n function getExitFunction(handler) {\n if (typeof handler === 'function') {\n return undefined;\n } else {\n return handler.exit;\n }\n }\n\n function getKeyHandler(handler, key) {\n var keyVisitor = typeof handler !== 'function' ? handler.keys : undefined;\n if (keyVisitor === undefined) return;\n var keyHandler = keyVisitor[key];\n\n if (keyHandler !== undefined) {\n return keyHandler;\n }\n\n return keyVisitor.All;\n }\n\n function getNodeHandler(visitor, nodeType) {\n if (nodeType === 'Template' || nodeType === 'Block') {\n if (visitor.Program) {\n return visitor.Program;\n }\n }\n\n var handler = visitor[nodeType];\n\n if (handler !== undefined) {\n return handler;\n }\n\n return visitor.All;\n }\n\n function visitNode(visitor, path) {\n var node = path.node,\n parent = path.parent,\n parentKey = path.parentKey;\n var handler = getNodeHandler(visitor, node.type);\n var enter;\n var exit;\n\n if (handler !== undefined) {\n enter = getEnterFunction(handler);\n exit = getExitFunction(handler);\n }\n\n var result;\n\n if (enter !== undefined) {\n result = enter(node, path);\n }\n\n if (result !== undefined && result !== null) {\n if (JSON.stringify(node) === JSON.stringify(result)) {\n result = undefined;\n } else if (Array.isArray(result)) {\n visitArray(visitor, result, parent, parentKey);\n return result;\n } else {\n var _path = new WalkerPath(result, parent, parentKey);\n\n return visitNode(visitor, _path) || result;\n }\n }\n\n if (result === undefined) {\n var keys = visitorKeys[node.type];\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]; // we know if it has child keys we can widen to a ParentNode\n\n visitKey(visitor, handler, path, key);\n }\n\n if (exit !== undefined) {\n result = exit(node, path);\n }\n }\n\n return result;\n }\n\n function get(node, key) {\n return node[key];\n }\n\n function set(node, key, value) {\n node[key] = value;\n }\n\n function visitKey(visitor, handler, path, key) {\n var node = path.node;\n var value = get(node, key);\n\n if (!value) {\n return;\n }\n\n var keyEnter;\n var keyExit;\n\n if (handler !== undefined) {\n var keyHandler = getKeyHandler(handler, key);\n\n if (keyHandler !== undefined) {\n keyEnter = getEnterFunction(keyHandler);\n keyExit = getExitFunction(keyHandler);\n }\n }\n\n if (keyEnter !== undefined) {\n if (keyEnter(node, key) !== undefined) {\n throw cannotReplaceOrRemoveInKeyHandlerYet(node, key);\n }\n }\n\n if (Array.isArray(value)) {\n visitArray(visitor, value, path, key);\n } else {\n var keyPath = new WalkerPath(value, path, key);\n var result = visitNode(visitor, keyPath);\n\n if (result !== undefined) {\n // TODO: dynamically check the results by having a table of\n // expected node types in value space, not just type space\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n assignKey(node, key, value, result);\n }\n }\n\n if (keyExit !== undefined) {\n if (keyExit(node, key) !== undefined) {\n throw cannotReplaceOrRemoveInKeyHandlerYet(node, key);\n }\n }\n }\n\n function visitArray(visitor, array, parent, parentKey) {\n for (var i = 0; i < array.length; i++) {\n var _node = array[i];\n var path = new WalkerPath(_node, parent, parentKey);\n var result = visitNode(visitor, path);\n\n if (result !== undefined) {\n i += spliceArray(array, i, result) - 1;\n }\n }\n }\n\n function assignKey(node, key, value, result) {\n if (result === null) {\n throw cannotRemoveNode(value, node, key);\n } else if (Array.isArray(result)) {\n if (result.length === 1) {\n set(node, key, result[0]);\n } else {\n if (result.length === 0) {\n throw cannotRemoveNode(value, node, key);\n } else {\n throw cannotReplaceNode(value, node, key);\n }\n }\n } else {\n set(node, key, result);\n }\n }\n\n function spliceArray(array, index, result) {\n if (result === null) {\n array.splice(index, 1);\n return 0;\n } else if (Array.isArray(result)) {\n array.splice.apply(array, [index, 1].concat(result));\n return result.length;\n } else {\n array.splice(index, 1, result);\n return 1;\n }\n }\n\n function traverse(node, visitor) {\n var path = new WalkerPath(node);\n visitNode(visitor, path);\n }\n\n var Walker = /*#__PURE__*/function () {\n function Walker(order) {\n this.order = order;\n this.stack = [];\n }\n\n var _proto26 = Walker.prototype;\n\n _proto26.visit = function visit(node, callback) {\n if (!node) {\n return;\n }\n\n this.stack.push(node);\n\n if (this.order === 'post') {\n this.children(node, callback);\n callback(node, this);\n } else {\n callback(node, this);\n this.children(node, callback);\n }\n\n this.stack.pop();\n };\n\n _proto26.children = function children(node, callback) {\n switch (node.type) {\n case 'Block':\n case 'Template':\n return visitors.Program(this, node, callback);\n\n case 'ElementNode':\n return visitors.ElementNode(this, node, callback);\n\n case 'BlockStatement':\n return visitors.BlockStatement(this, node, callback);\n\n default:\n return;\n }\n };\n\n return Walker;\n }();\n\n _exports.Path = _exports.Walker = Walker;\n var visitors = {\n Program: function Program(walker, node, callback) {\n for (var i = 0; i < node.body.length; i++) {\n walker.visit(node.body[i], callback);\n }\n },\n Template: function Template(walker, node, callback) {\n for (var i = 0; i < node.body.length; i++) {\n walker.visit(node.body[i], callback);\n }\n },\n Block: function Block(walker, node, callback) {\n for (var i = 0; i < node.body.length; i++) {\n walker.visit(node.body[i], callback);\n }\n },\n ElementNode: function ElementNode(walker, node, callback) {\n for (var i = 0; i < node.children.length; i++) {\n walker.visit(node.children[i], callback);\n }\n },\n BlockStatement: function BlockStatement(walker, node, callback) {\n walker.visit(node.program, callback);\n walker.visit(node.inverse || null, callback);\n }\n }; // Based on the ID validation regex in Handlebars.\n\n var ID_INVERSE_PATTERN = /[!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]/; // Checks the element's attributes to see if it uses block params.\n // If it does, registers the block params with the program and\n // removes the corresponding attributes from the element.\n\n function parseElementBlockParams(element) {\n var params = parseBlockParams(element);\n if (params) element.blockParams = params;\n }\n\n function parseBlockParams(element) {\n var l = element.attributes.length;\n var attrNames = [];\n\n for (var i = 0; i < l; i++) {\n attrNames.push(element.attributes[i].name);\n }\n\n var asIndex = attrNames.indexOf('as');\n\n if (asIndex === -1 && attrNames.length > 0 && attrNames[attrNames.length - 1].charAt(0) === '|') {\n throw generateSyntaxError('Block parameters must be preceded by the `as` keyword, detected block parameters without `as`', element.loc);\n }\n\n if (asIndex !== -1 && l > asIndex && attrNames[asIndex + 1].charAt(0) === '|') {\n // Some basic validation, since we're doing the parsing ourselves\n var paramsString = attrNames.slice(asIndex).join(' ');\n\n if (paramsString.charAt(paramsString.length - 1) !== '|' || paramsString.match(/\\|/g).length !== 2) {\n throw generateSyntaxError(\"Invalid block parameters syntax, '\" + paramsString + \"'\", element.loc);\n }\n\n var params = [];\n\n for (var _i = asIndex + 1; _i < l; _i++) {\n var param = attrNames[_i].replace(/\\|/g, '');\n\n if (param !== '') {\n if (ID_INVERSE_PATTERN.test(param)) {\n throw generateSyntaxError(\"Invalid identifier for block parameters, '\" + param + \"'\", element.loc);\n }\n\n params.push(param);\n }\n }\n\n if (params.length === 0) {\n throw generateSyntaxError('Cannot use zero block parameters', element.loc);\n }\n\n element.attributes = element.attributes.slice(0, asIndex);\n return params;\n }\n\n return null;\n }\n\n function childrenFor(node) {\n switch (node.type) {\n case 'Block':\n case 'Template':\n return node.body;\n\n case 'ElementNode':\n return node.children;\n }\n }\n\n function appendChild(parent, node) {\n childrenFor(parent).push(node);\n }\n\n function isHBSLiteral(path) {\n return path.type === 'StringLiteral' || path.type === 'BooleanLiteral' || path.type === 'NumberLiteral' || path.type === 'NullLiteral' || path.type === 'UndefinedLiteral';\n }\n\n function printLiteral(literal) {\n if (literal.type === 'UndefinedLiteral') {\n return 'undefined';\n } else {\n return JSON.stringify(literal.value);\n }\n }\n\n function isUpperCase(tag) {\n return tag[0] === tag[0].toUpperCase() && tag[0] !== tag[0].toLowerCase();\n }\n\n function isLowerCase(tag) {\n return tag[0] === tag[0].toLowerCase() && tag[0] !== tag[0].toUpperCase();\n }\n\n var DEFAULT_STRIP = {\n close: false,\n open: false\n };\n /**\n * The Parser Builder differentiates from the public builder API by:\n *\n * 1. Offering fewer different ways to instantiate nodes\n * 2. Mandating source locations\n */\n\n var Builders = /*#__PURE__*/function () {\n function Builders() {}\n\n var _proto27 = Builders.prototype;\n\n _proto27.pos = function pos(line, column) {\n return {\n line: line,\n column: column\n };\n };\n\n _proto27.blockItself = function blockItself(_ref16) {\n var body = _ref16.body,\n blockParams = _ref16.blockParams,\n _ref16$chained = _ref16.chained,\n chained = _ref16$chained === void 0 ? false : _ref16$chained,\n loc = _ref16.loc;\n return {\n type: 'Block',\n body: body || [],\n blockParams: blockParams || [],\n chained: chained,\n loc: loc\n };\n };\n\n _proto27.template = function template(_ref17) {\n var body = _ref17.body,\n blockParams = _ref17.blockParams,\n loc = _ref17.loc;\n return {\n type: 'Template',\n body: body || [],\n blockParams: blockParams || [],\n loc: loc\n };\n };\n\n _proto27.mustache = function mustache(_ref18) {\n var path = _ref18.path,\n params = _ref18.params,\n hash = _ref18.hash,\n trusting = _ref18.trusting,\n loc = _ref18.loc,\n _ref18$strip = _ref18.strip,\n strip = _ref18$strip === void 0 ? DEFAULT_STRIP : _ref18$strip;\n return {\n type: 'MustacheStatement',\n path: path,\n params: params,\n hash: hash,\n escaped: !trusting,\n trusting: trusting,\n loc: loc,\n strip: strip || {\n open: false,\n close: false\n }\n };\n };\n\n _proto27.block = function block(_ref19) {\n var path = _ref19.path,\n params = _ref19.params,\n hash = _ref19.hash,\n defaultBlock = _ref19.defaultBlock,\n _ref19$elseBlock = _ref19.elseBlock,\n elseBlock = _ref19$elseBlock === void 0 ? null : _ref19$elseBlock,\n loc = _ref19.loc,\n _ref19$openStrip = _ref19.openStrip,\n openStrip = _ref19$openStrip === void 0 ? DEFAULT_STRIP : _ref19$openStrip,\n _ref19$inverseStrip = _ref19.inverseStrip,\n inverseStrip = _ref19$inverseStrip === void 0 ? DEFAULT_STRIP : _ref19$inverseStrip,\n _ref19$closeStrip = _ref19.closeStrip,\n closeStrip = _ref19$closeStrip === void 0 ? DEFAULT_STRIP : _ref19$closeStrip;\n return {\n type: 'BlockStatement',\n path: path,\n params: params,\n hash: hash,\n program: defaultBlock,\n inverse: elseBlock,\n loc: loc,\n openStrip: openStrip,\n inverseStrip: inverseStrip,\n closeStrip: closeStrip\n };\n };\n\n _proto27.comment = function comment(value, loc) {\n return {\n type: 'CommentStatement',\n value: value,\n loc: loc\n };\n };\n\n _proto27.mustacheComment = function mustacheComment(value, loc) {\n return {\n type: 'MustacheCommentStatement',\n value: value,\n loc: loc\n };\n };\n\n _proto27.concat = function concat(parts, loc) {\n return {\n type: 'ConcatStatement',\n parts: parts,\n loc: loc\n };\n };\n\n _proto27.element = function element(_ref20) {\n var tag = _ref20.tag,\n selfClosing = _ref20.selfClosing,\n attrs = _ref20.attrs,\n blockParams = _ref20.blockParams,\n modifiers = _ref20.modifiers,\n comments = _ref20.comments,\n children = _ref20.children,\n loc = _ref20.loc;\n return {\n type: 'ElementNode',\n tag: tag,\n selfClosing: selfClosing,\n attributes: attrs || [],\n blockParams: blockParams || [],\n modifiers: modifiers || [],\n comments: comments || [],\n children: children || [],\n loc: loc\n };\n };\n\n _proto27.elementModifier = function elementModifier(_ref21) {\n var path = _ref21.path,\n params = _ref21.params,\n hash = _ref21.hash,\n loc = _ref21.loc;\n return {\n type: 'ElementModifierStatement',\n path: path,\n params: params,\n hash: hash,\n loc: loc\n };\n };\n\n _proto27.attr = function attr(_ref22) {\n var name = _ref22.name,\n value = _ref22.value,\n loc = _ref22.loc;\n return {\n type: 'AttrNode',\n name: name,\n value: value,\n loc: loc\n };\n };\n\n _proto27.text = function text(_ref23) {\n var chars = _ref23.chars,\n loc = _ref23.loc;\n return {\n type: 'TextNode',\n chars: chars,\n loc: loc\n };\n };\n\n _proto27.sexpr = function sexpr(_ref24) {\n var path = _ref24.path,\n params = _ref24.params,\n hash = _ref24.hash,\n loc = _ref24.loc;\n return {\n type: 'SubExpression',\n path: path,\n params: params,\n hash: hash,\n loc: loc\n };\n };\n\n _proto27.path = function path(_ref25) {\n var head = _ref25.head,\n tail = _ref25.tail,\n loc = _ref25.loc;\n\n var _headToString$ = headToString$1(head),\n originalHead = _headToString$.original;\n\n var original = [].concat(originalHead, tail).join('.');\n return new PathExpressionImplV1(original, head, tail, loc);\n };\n\n _proto27.head = function head(_head2, loc) {\n if (_head2[0] === '@') {\n return this.atName(_head2, loc);\n } else if (_head2 === 'this') {\n return this.this(loc);\n } else {\n return this.var(_head2, loc);\n }\n };\n\n _proto27.this = function _this(loc) {\n return {\n type: 'ThisHead',\n loc: loc\n };\n };\n\n _proto27.atName = function atName(name, loc) {\n return {\n type: 'AtHead',\n name: name,\n loc: loc\n };\n };\n\n _proto27.var = function _var(name, loc) {\n return {\n type: 'VarHead',\n name: name,\n loc: loc\n };\n };\n\n _proto27.hash = function hash(pairs, loc) {\n return {\n type: 'Hash',\n pairs: pairs || [],\n loc: loc\n };\n };\n\n _proto27.pair = function pair(_ref26) {\n var key = _ref26.key,\n value = _ref26.value,\n loc = _ref26.loc;\n return {\n type: 'HashPair',\n key: key,\n value: value,\n loc: loc\n };\n };\n\n _proto27.literal = function literal(_ref27) {\n var type = _ref27.type,\n value = _ref27.value,\n loc = _ref27.loc;\n return {\n type: type,\n value: value,\n original: value,\n loc: loc\n };\n };\n\n _proto27.undefined = function (_undefined2) {\n function undefined() {\n return _undefined2.apply(this, arguments);\n }\n\n undefined.toString = function () {\n return _undefined2.toString();\n };\n\n return undefined;\n }(function () {\n return this.literal({\n type: 'UndefinedLiteral',\n value: undefined\n });\n });\n\n _proto27.null = function _null() {\n return this.literal({\n type: 'NullLiteral',\n value: null\n });\n };\n\n _proto27.string = function string(value, loc) {\n return this.literal({\n type: 'StringLiteral',\n value: value,\n loc: loc\n });\n };\n\n _proto27.boolean = function boolean(value, loc) {\n return this.literal({\n type: 'BooleanLiteral',\n value: value,\n loc: loc\n });\n };\n\n _proto27.number = function number(value, loc) {\n return this.literal({\n type: 'NumberLiteral',\n value: value,\n loc: loc\n });\n };\n\n return Builders;\n }(); // Expressions\n\n\n function headToString$1(head) {\n switch (head.type) {\n case 'AtHead':\n return {\n original: head.name,\n parts: [head.name]\n };\n\n case 'ThisHead':\n return {\n original: \"this\",\n parts: []\n };\n\n case 'VarHead':\n return {\n original: head.name,\n parts: [head.name]\n };\n }\n }\n\n var b = new Builders();\n\n var Parser = /*#__PURE__*/function () {\n function Parser(source, entityParser, mode) {\n if (entityParser === void 0) {\n entityParser = new _simpleHtmlTokenizer.EntityParser(_simpleHtmlTokenizer.HTML5NamedCharRefs);\n }\n\n if (mode === void 0) {\n mode = 'precompile';\n }\n\n this.elementStack = [];\n this.currentAttribute = null;\n this.currentNode = null;\n this.source = source;\n this.lines = source.source.split(/(?:\\r\\n?|\\n)/g);\n this.tokenizer = new _simpleHtmlTokenizer.EventedTokenizer(this, entityParser, mode);\n }\n\n var _proto28 = Parser.prototype;\n\n _proto28.offset = function offset() {\n var _this$tokenizer = this.tokenizer,\n line = _this$tokenizer.line,\n column = _this$tokenizer.column;\n return this.source.offsetFor(line, column);\n };\n\n _proto28.pos = function pos(_ref28) {\n var line = _ref28.line,\n column = _ref28.column;\n return this.source.offsetFor(line, column);\n };\n\n _proto28.finish = function finish(node) {\n return (0, _util.assign)({}, node, {\n loc: node.loc.until(this.offset())\n }); // node.loc = node.loc.withEnd(end);\n };\n\n _proto28.acceptTemplate = function acceptTemplate(node) {\n return this[node.type](node);\n };\n\n _proto28.acceptNode = function acceptNode(node) {\n return this[node.type](node);\n };\n\n _proto28.currentElement = function currentElement() {\n return this.elementStack[this.elementStack.length - 1];\n };\n\n _proto28.sourceForNode = function sourceForNode(node, endNode) {\n var firstLine = node.loc.start.line - 1;\n var currentLine = firstLine - 1;\n var firstColumn = node.loc.start.column;\n var string = [];\n var line;\n var lastLine;\n var lastColumn;\n\n if (endNode) {\n lastLine = endNode.loc.end.line - 1;\n lastColumn = endNode.loc.end.column;\n } else {\n lastLine = node.loc.end.line - 1;\n lastColumn = node.loc.end.column;\n }\n\n while (currentLine < lastLine) {\n currentLine++;\n line = this.lines[currentLine];\n\n if (currentLine === firstLine) {\n if (firstLine === lastLine) {\n string.push(line.slice(firstColumn, lastColumn));\n } else {\n string.push(line.slice(firstColumn));\n }\n } else if (currentLine === lastLine) {\n string.push(line.slice(0, lastColumn));\n } else {\n string.push(line);\n }\n }\n\n return string.join('\\n');\n };\n\n (0, _emberBabel.createClass)(Parser, [{\n key: \"currentAttr\",\n get: function get() {\n return this.currentAttribute;\n }\n }, {\n key: \"currentTag\",\n get: function get() {\n var node = this.currentNode;\n return node;\n }\n }, {\n key: \"currentStartTag\",\n get: function get() {\n var node = this.currentNode;\n return node;\n }\n }, {\n key: \"currentEndTag\",\n get: function get() {\n var node = this.currentNode;\n return node;\n }\n }, {\n key: \"currentComment\",\n get: function get() {\n var node = this.currentNode;\n return node;\n }\n }, {\n key: \"currentData\",\n get: function get() {\n var node = this.currentNode;\n return node;\n }\n }]);\n return Parser;\n }();\n\n var HandlebarsNodeVisitors = /*#__PURE__*/function (_Parser) {\n (0, _emberBabel.inheritsLoose)(HandlebarsNodeVisitors, _Parser);\n\n function HandlebarsNodeVisitors() {\n return _Parser.apply(this, arguments) || this;\n }\n\n var _proto29 = HandlebarsNodeVisitors.prototype;\n\n _proto29.Program = function Program(program) {\n var body = [];\n var node;\n\n if (this.isTopLevel) {\n node = b.template({\n body: body,\n blockParams: program.blockParams,\n loc: this.source.spanFor(program.loc)\n });\n } else {\n node = b.blockItself({\n body: body,\n blockParams: program.blockParams,\n chained: program.chained,\n loc: this.source.spanFor(program.loc)\n });\n }\n\n var i,\n l = program.body.length;\n this.elementStack.push(node);\n\n if (l === 0) {\n return this.elementStack.pop();\n }\n\n for (i = 0; i < l; i++) {\n this.acceptNode(program.body[i]);\n } // Ensure that that the element stack is balanced properly.\n\n\n var poppedNode = this.elementStack.pop();\n\n if (poppedNode !== node) {\n var elementNode = poppedNode;\n throw generateSyntaxError(\"Unclosed element `\" + elementNode.tag + \"`\", elementNode.loc);\n }\n\n return node;\n };\n\n _proto29.BlockStatement = function BlockStatement(block) {\n if (this.tokenizer.state === \"comment\"\n /* comment */\n ) {\n this.appendToCommentData(this.sourceForNode(block));\n return;\n }\n\n if (this.tokenizer.state !== \"data\"\n /* data */\n && this.tokenizer.state !== \"beforeData\"\n /* beforeData */\n ) {\n throw generateSyntaxError('A block may only be used inside an HTML element or another block.', this.source.spanFor(block.loc));\n }\n\n var _acceptCallNodes = acceptCallNodes(this, block),\n path = _acceptCallNodes.path,\n params = _acceptCallNodes.params,\n hash = _acceptCallNodes.hash; // These are bugs in Handlebars upstream\n\n\n if (!block.program.loc) {\n block.program.loc = NON_EXISTENT_LOCATION;\n }\n\n if (block.inverse && !block.inverse.loc) {\n block.inverse.loc = NON_EXISTENT_LOCATION;\n }\n\n var program = this.Program(block.program);\n var inverse = block.inverse ? this.Program(block.inverse) : null;\n var node = b.block({\n path: path,\n params: params,\n hash: hash,\n defaultBlock: program,\n elseBlock: inverse,\n loc: this.source.spanFor(block.loc),\n openStrip: block.openStrip,\n inverseStrip: block.inverseStrip,\n closeStrip: block.closeStrip\n });\n var parentProgram = this.currentElement();\n appendChild(parentProgram, node);\n };\n\n _proto29.MustacheStatement = function MustacheStatement(rawMustache) {\n var tokenizer = this.tokenizer;\n\n if (tokenizer.state === 'comment') {\n this.appendToCommentData(this.sourceForNode(rawMustache));\n return;\n }\n\n var mustache;\n var escaped = rawMustache.escaped,\n loc = rawMustache.loc,\n strip = rawMustache.strip;\n\n if (isHBSLiteral(rawMustache.path)) {\n mustache = b.mustache({\n path: this.acceptNode(rawMustache.path),\n params: [],\n hash: b.hash([], this.source.spanFor(rawMustache.path.loc).collapse('end')),\n trusting: !escaped,\n loc: this.source.spanFor(loc),\n strip: strip\n });\n } else {\n var _acceptCallNodes2 = acceptCallNodes(this, rawMustache),\n path = _acceptCallNodes2.path,\n params = _acceptCallNodes2.params,\n hash = _acceptCallNodes2.hash;\n\n mustache = b.mustache({\n path: path,\n params: params,\n hash: hash,\n trusting: !escaped,\n loc: this.source.spanFor(loc),\n strip: strip\n });\n }\n\n switch (tokenizer.state) {\n // Tag helpers\n case \"tagOpen\"\n /* tagOpen */\n :\n case \"tagName\"\n /* tagName */\n :\n throw generateSyntaxError(\"Cannot use mustaches in an elements tagname\", mustache.loc);\n\n case \"beforeAttributeName\"\n /* beforeAttributeName */\n :\n addElementModifier(this.currentStartTag, mustache);\n break;\n\n case \"attributeName\"\n /* attributeName */\n :\n case \"afterAttributeName\"\n /* afterAttributeName */\n :\n this.beginAttributeValue(false);\n this.finishAttributeValue();\n addElementModifier(this.currentStartTag, mustache);\n tokenizer.transitionTo(\"beforeAttributeName\"\n /* beforeAttributeName */\n );\n break;\n\n case \"afterAttributeValueQuoted\"\n /* afterAttributeValueQuoted */\n :\n addElementModifier(this.currentStartTag, mustache);\n tokenizer.transitionTo(\"beforeAttributeName\"\n /* beforeAttributeName */\n );\n break;\n // Attribute values\n\n case \"beforeAttributeValue\"\n /* beforeAttributeValue */\n :\n this.beginAttributeValue(false);\n this.appendDynamicAttributeValuePart(mustache);\n tokenizer.transitionTo(\"attributeValueUnquoted\"\n /* attributeValueUnquoted */\n );\n break;\n\n case \"attributeValueDoubleQuoted\"\n /* attributeValueDoubleQuoted */\n :\n case \"attributeValueSingleQuoted\"\n /* attributeValueSingleQuoted */\n :\n case \"attributeValueUnquoted\"\n /* attributeValueUnquoted */\n :\n this.appendDynamicAttributeValuePart(mustache);\n break;\n // TODO: Only append child when the tokenizer state makes\n // sense to do so, otherwise throw an error.\n\n default:\n appendChild(this.currentElement(), mustache);\n }\n\n return mustache;\n };\n\n _proto29.appendDynamicAttributeValuePart = function appendDynamicAttributeValuePart(part) {\n this.finalizeTextPart();\n var attr = this.currentAttr;\n attr.isDynamic = true;\n attr.parts.push(part);\n };\n\n _proto29.finalizeTextPart = function finalizeTextPart() {\n var attr = this.currentAttr;\n var text = attr.currentPart;\n\n if (text !== null) {\n this.currentAttr.parts.push(text);\n this.startTextPart();\n }\n };\n\n _proto29.startTextPart = function startTextPart() {\n this.currentAttr.currentPart = null;\n };\n\n _proto29.ContentStatement = function ContentStatement(content) {\n updateTokenizerLocation(this.tokenizer, content);\n this.tokenizer.tokenizePart(content.value);\n this.tokenizer.flushData();\n };\n\n _proto29.CommentStatement = function CommentStatement(rawComment) {\n var tokenizer = this.tokenizer;\n\n if (tokenizer.state === \"comment\"\n /* comment */\n ) {\n this.appendToCommentData(this.sourceForNode(rawComment));\n return null;\n }\n\n var value = rawComment.value,\n loc = rawComment.loc;\n var comment = b.mustacheComment(value, this.source.spanFor(loc));\n\n switch (tokenizer.state) {\n case \"beforeAttributeName\"\n /* beforeAttributeName */\n :\n case \"afterAttributeName\"\n /* afterAttributeName */\n :\n this.currentStartTag.comments.push(comment);\n break;\n\n case \"beforeData\"\n /* beforeData */\n :\n case \"data\"\n /* data */\n :\n appendChild(this.currentElement(), comment);\n break;\n\n default:\n throw generateSyntaxError(\"Using a Handlebars comment when in the `\" + tokenizer['state'] + \"` state is not supported\", this.source.spanFor(rawComment.loc));\n }\n\n return comment;\n };\n\n _proto29.PartialStatement = function PartialStatement(partial) {\n throw generateSyntaxError(\"Handlebars partials are not supported\", this.source.spanFor(partial.loc));\n };\n\n _proto29.PartialBlockStatement = function PartialBlockStatement(partialBlock) {\n throw generateSyntaxError(\"Handlebars partial blocks are not supported\", this.source.spanFor(partialBlock.loc));\n };\n\n _proto29.Decorator = function Decorator(decorator) {\n throw generateSyntaxError(\"Handlebars decorators are not supported\", this.source.spanFor(decorator.loc));\n };\n\n _proto29.DecoratorBlock = function DecoratorBlock(decoratorBlock) {\n throw generateSyntaxError(\"Handlebars decorator blocks are not supported\", this.source.spanFor(decoratorBlock.loc));\n };\n\n _proto29.SubExpression = function SubExpression(sexpr) {\n var _acceptCallNodes3 = acceptCallNodes(this, sexpr),\n path = _acceptCallNodes3.path,\n params = _acceptCallNodes3.params,\n hash = _acceptCallNodes3.hash;\n\n return b.sexpr({\n path: path,\n params: params,\n hash: hash,\n loc: this.source.spanFor(sexpr.loc)\n });\n };\n\n _proto29.PathExpression = function PathExpression(path) {\n var original = path.original;\n var parts;\n\n if (original.indexOf('/') !== -1) {\n if (original.slice(0, 2) === './') {\n throw generateSyntaxError(\"Using \\\"./\\\" is not supported in Glimmer and unnecessary\", this.source.spanFor(path.loc));\n }\n\n if (original.slice(0, 3) === '../') {\n throw generateSyntaxError(\"Changing context using \\\"../\\\" is not supported in Glimmer\", this.source.spanFor(path.loc));\n }\n\n if (original.indexOf('.') !== -1) {\n throw generateSyntaxError(\"Mixing '.' and '/' in paths is not supported in Glimmer; use only '.' to separate property paths\", this.source.spanFor(path.loc));\n }\n\n parts = [path.parts.join('/')];\n } else if (original === '.') {\n throw generateSyntaxError(\"'.' is not a supported path in Glimmer; check for a path with a trailing '.'\", this.source.spanFor(path.loc));\n } else {\n parts = path.parts;\n }\n\n var thisHead = false; // This is to fix a bug in the Handlebars AST where the path expressions in\n // `{{this.foo}}` (and similarly `{{foo-bar this.foo named=this.foo}}` etc)\n // are simply turned into `{{foo}}`. The fix is to push it back onto the\n // parts array and let the runtime see the difference. However, we cannot\n // simply use the string `this` as it means literally the property called\n // \"this\" in the current context (it can be expressed in the syntax as\n // `{{[this]}}`, where the square bracket are generally for this kind of\n // escaping – such as `{{foo.[\"bar.baz\"]}}` would mean lookup a property\n // named literally \"bar.baz\" on `this.foo`). By convention, we use `null`\n // for this purpose.\n\n if (original.match(/^this(\\..+)?$/)) {\n thisHead = true;\n }\n\n var pathHead;\n\n if (thisHead) {\n pathHead = {\n type: 'ThisHead',\n loc: {\n start: path.loc.start,\n end: {\n line: path.loc.start.line,\n column: path.loc.start.column + 4\n }\n }\n };\n } else if (path.data) {\n var head = parts.shift();\n\n if (head === undefined) {\n throw generateSyntaxError(\"Attempted to parse a path expression, but it was not valid. Paths beginning with @ must start with a-z.\", this.source.spanFor(path.loc));\n }\n\n pathHead = {\n type: 'AtHead',\n name: \"@\" + head,\n loc: {\n start: path.loc.start,\n end: {\n line: path.loc.start.line,\n column: path.loc.start.column + head.length + 1\n }\n }\n };\n } else {\n var _head3 = parts.shift();\n\n if (_head3 === undefined) {\n throw generateSyntaxError(\"Attempted to parse a path expression, but it was not valid. Paths must start with a-z or A-Z.\", this.source.spanFor(path.loc));\n }\n\n pathHead = {\n type: 'VarHead',\n name: _head3,\n loc: {\n start: path.loc.start,\n end: {\n line: path.loc.start.line,\n column: path.loc.start.column + _head3.length\n }\n }\n };\n }\n\n return new PathExpressionImplV1(path.original, pathHead, parts, this.source.spanFor(path.loc));\n };\n\n _proto29.Hash = function Hash(hash) {\n var pairs = [];\n\n for (var i = 0; i < hash.pairs.length; i++) {\n var pair = hash.pairs[i];\n pairs.push(b.pair({\n key: pair.key,\n value: this.acceptNode(pair.value),\n loc: this.source.spanFor(pair.loc)\n }));\n }\n\n return b.hash(pairs, this.source.spanFor(hash.loc));\n };\n\n _proto29.StringLiteral = function StringLiteral(string) {\n return b.literal({\n type: 'StringLiteral',\n value: string.value,\n loc: string.loc\n });\n };\n\n _proto29.BooleanLiteral = function BooleanLiteral(boolean) {\n return b.literal({\n type: 'BooleanLiteral',\n value: boolean.value,\n loc: boolean.loc\n });\n };\n\n _proto29.NumberLiteral = function NumberLiteral(number) {\n return b.literal({\n type: 'NumberLiteral',\n value: number.value,\n loc: number.loc\n });\n };\n\n _proto29.UndefinedLiteral = function UndefinedLiteral(undef) {\n return b.literal({\n type: 'UndefinedLiteral',\n value: undefined,\n loc: undef.loc\n });\n };\n\n _proto29.NullLiteral = function NullLiteral(nul) {\n return b.literal({\n type: 'NullLiteral',\n value: null,\n loc: nul.loc\n });\n };\n\n (0, _emberBabel.createClass)(HandlebarsNodeVisitors, [{\n key: \"isTopLevel\",\n get: function get() {\n return this.elementStack.length === 0;\n }\n }]);\n return HandlebarsNodeVisitors;\n }(Parser);\n\n function calculateRightStrippedOffsets(original, value) {\n if (value === '') {\n // if it is empty, just return the count of newlines\n // in original\n return {\n lines: original.split('\\n').length - 1,\n columns: 0\n };\n } // otherwise, return the number of newlines prior to\n // `value`\n\n\n var difference = original.split(value)[0];\n var lines = difference.split(/\\n/);\n var lineCount = lines.length - 1;\n return {\n lines: lineCount,\n columns: lines[lineCount].length\n };\n }\n\n function updateTokenizerLocation(tokenizer, content) {\n var line = content.loc.start.line;\n var column = content.loc.start.column;\n var offsets = calculateRightStrippedOffsets(content.original, content.value);\n line = line + offsets.lines;\n\n if (offsets.lines) {\n column = offsets.columns;\n } else {\n column = column + offsets.columns;\n }\n\n tokenizer.line = line;\n tokenizer.column = column;\n }\n\n function acceptCallNodes(compiler, node) {\n var path = node.path.type === 'PathExpression' ? compiler.PathExpression(node.path) : compiler.SubExpression(node.path);\n var params = node.params ? node.params.map(function (e) {\n return compiler.acceptNode(e);\n }) : []; // if there is no hash, position it as a collapsed node immediately after the last param (or the\n // path, if there are also no params)\n\n var end = params.length > 0 ? params[params.length - 1].loc : path.loc;\n var hash = node.hash ? compiler.Hash(node.hash) : {\n type: 'Hash',\n pairs: [],\n loc: compiler.source.spanFor(end).collapse('end')\n };\n return {\n path: path,\n params: params,\n hash: hash\n };\n }\n\n function addElementModifier(element, mustache) {\n var path = mustache.path,\n params = mustache.params,\n hash = mustache.hash,\n loc = mustache.loc;\n\n if (isHBSLiteral(path)) {\n var _modifier = \"{{\" + printLiteral(path) + \"}}\";\n\n var tag = \"<\" + element.name + \" ... \" + _modifier + \" ...\";\n throw generateSyntaxError(\"In \" + tag + \", \" + _modifier + \" is not a valid modifier\", mustache.loc);\n }\n\n var modifier = b.elementModifier({\n path: path,\n params: params,\n hash: hash,\n loc: loc\n });\n element.modifiers.push(modifier);\n }\n\n var TokenizerEventHandlers = /*#__PURE__*/function (_HandlebarsNodeVisito) {\n (0, _emberBabel.inheritsLoose)(TokenizerEventHandlers, _HandlebarsNodeVisito);\n\n function TokenizerEventHandlers() {\n var _this7;\n\n _this7 = _HandlebarsNodeVisito.apply(this, arguments) || this;\n _this7.tagOpenLine = 0;\n _this7.tagOpenColumn = 0;\n return _this7;\n }\n\n var _proto30 = TokenizerEventHandlers.prototype;\n\n _proto30.reset = function reset() {\n this.currentNode = null;\n } // Comment\n ;\n\n _proto30.beginComment = function beginComment() {\n this.currentNode = b.comment('', this.source.offsetFor(this.tagOpenLine, this.tagOpenColumn));\n };\n\n _proto30.appendToCommentData = function appendToCommentData(char) {\n this.currentComment.value += char;\n };\n\n _proto30.finishComment = function finishComment() {\n appendChild(this.currentElement(), this.finish(this.currentComment));\n } // Data\n ;\n\n _proto30.beginData = function beginData() {\n this.currentNode = b.text({\n chars: '',\n loc: this.offset().collapsed()\n });\n };\n\n _proto30.appendToData = function appendToData(char) {\n this.currentData.chars += char;\n };\n\n _proto30.finishData = function finishData() {\n this.currentData.loc = this.currentData.loc.withEnd(this.offset());\n appendChild(this.currentElement(), this.currentData);\n } // Tags - basic\n ;\n\n _proto30.tagOpen = function tagOpen() {\n this.tagOpenLine = this.tokenizer.line;\n this.tagOpenColumn = this.tokenizer.column;\n };\n\n _proto30.beginStartTag = function beginStartTag() {\n this.currentNode = {\n type: 'StartTag',\n name: '',\n attributes: [],\n modifiers: [],\n comments: [],\n selfClosing: false,\n loc: this.source.offsetFor(this.tagOpenLine, this.tagOpenColumn)\n };\n };\n\n _proto30.beginEndTag = function beginEndTag() {\n this.currentNode = {\n type: 'EndTag',\n name: '',\n attributes: [],\n modifiers: [],\n comments: [],\n selfClosing: false,\n loc: this.source.offsetFor(this.tagOpenLine, this.tagOpenColumn)\n };\n };\n\n _proto30.finishTag = function finishTag() {\n var tag = this.finish(this.currentTag);\n\n if (tag.type === 'StartTag') {\n this.finishStartTag();\n\n if (tag.name === ':') {\n throw generateSyntaxError('Invalid named block named detected, you may have created a named block without a name, or you may have began your name with a number. Named blocks must have names that are at least one character long, and begin with a lower case letter', this.source.spanFor({\n start: this.currentTag.loc.toJSON(),\n end: this.offset().toJSON()\n }));\n }\n\n if (voidMap[tag.name] || tag.selfClosing) {\n this.finishEndTag(true);\n }\n } else if (tag.type === 'EndTag') {\n this.finishEndTag(false);\n }\n };\n\n _proto30.finishStartTag = function finishStartTag() {\n var _this$finish = this.finish(this.currentStartTag),\n name = _this$finish.name,\n attrs = _this$finish.attributes,\n modifiers = _this$finish.modifiers,\n comments = _this$finish.comments,\n selfClosing = _this$finish.selfClosing,\n loc = _this$finish.loc;\n\n var element = b.element({\n tag: name,\n selfClosing: selfClosing,\n attrs: attrs,\n modifiers: modifiers,\n comments: comments,\n children: [],\n blockParams: [],\n loc: loc\n });\n this.elementStack.push(element);\n };\n\n _proto30.finishEndTag = function finishEndTag(isVoid) {\n var tag = this.finish(this.currentTag);\n var element = this.elementStack.pop();\n var parent = this.currentElement();\n this.validateEndTag(tag, element, isVoid);\n element.loc = element.loc.withEnd(this.offset());\n parseElementBlockParams(element);\n appendChild(parent, element);\n };\n\n _proto30.markTagAsSelfClosing = function markTagAsSelfClosing() {\n this.currentTag.selfClosing = true;\n } // Tags - name\n ;\n\n _proto30.appendToTagName = function appendToTagName(char) {\n this.currentTag.name += char;\n } // Tags - attributes\n ;\n\n _proto30.beginAttribute = function beginAttribute() {\n var offset = this.offset();\n this.currentAttribute = {\n name: '',\n parts: [],\n currentPart: null,\n isQuoted: false,\n isDynamic: false,\n start: offset,\n valueSpan: offset.collapsed()\n };\n };\n\n _proto30.appendToAttributeName = function appendToAttributeName(char) {\n this.currentAttr.name += char;\n };\n\n _proto30.beginAttributeValue = function beginAttributeValue(isQuoted) {\n this.currentAttr.isQuoted = isQuoted;\n this.startTextPart();\n this.currentAttr.valueSpan = this.offset().collapsed();\n };\n\n _proto30.appendToAttributeValue = function appendToAttributeValue(char) {\n var parts = this.currentAttr.parts;\n var lastPart = parts[parts.length - 1];\n var current = this.currentAttr.currentPart;\n\n if (current) {\n current.chars += char; // update end location for each added char\n\n current.loc = current.loc.withEnd(this.offset());\n } else {\n // initially assume the text node is a single char\n var _loc2 = this.offset(); // the tokenizer line/column have already been advanced, correct location info\n\n\n if (char === '\\n') {\n _loc2 = lastPart ? lastPart.loc.getEnd() : this.currentAttr.valueSpan.getStart();\n } else {\n _loc2 = _loc2.move(-1);\n }\n\n this.currentAttr.currentPart = b.text({\n chars: char,\n loc: _loc2.collapsed()\n });\n }\n };\n\n _proto30.finishAttributeValue = function finishAttributeValue() {\n this.finalizeTextPart();\n var tag = this.currentTag;\n var tokenizerPos = this.offset();\n\n if (tag.type === 'EndTag') {\n throw generateSyntaxError(\"Invalid end tag: closing tag must not have attributes\", this.source.spanFor({\n start: tag.loc.toJSON(),\n end: tokenizerPos.toJSON()\n }));\n }\n\n var _this$currentAttr = this.currentAttr,\n name = _this$currentAttr.name,\n parts = _this$currentAttr.parts,\n start = _this$currentAttr.start,\n isQuoted = _this$currentAttr.isQuoted,\n isDynamic = _this$currentAttr.isDynamic,\n valueSpan = _this$currentAttr.valueSpan;\n var value = this.assembleAttributeValue(parts, isQuoted, isDynamic, start.until(tokenizerPos));\n value.loc = valueSpan.withEnd(tokenizerPos);\n var attribute = b.attr({\n name: name,\n value: value,\n loc: start.until(tokenizerPos)\n });\n this.currentStartTag.attributes.push(attribute);\n };\n\n _proto30.reportSyntaxError = function reportSyntaxError(message) {\n throw generateSyntaxError(message, this.offset().collapsed());\n };\n\n _proto30.assembleConcatenatedValue = function assembleConcatenatedValue(parts) {\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n\n if (part.type !== 'MustacheStatement' && part.type !== 'TextNode') {\n throw generateSyntaxError('Unsupported node in quoted attribute value: ' + part['type'], part.loc);\n }\n }\n\n (0, _util.assertPresent)(parts, \"the concatenation parts of an element should not be empty\");\n var first = parts[0];\n var last = parts[parts.length - 1];\n return b.concat(parts, this.source.spanFor(first.loc).extend(this.source.spanFor(last.loc)));\n };\n\n _proto30.validateEndTag = function validateEndTag(tag, element, selfClosing) {\n var error;\n\n if (voidMap[tag.name] && !selfClosing) {\n // EngTag is also called by StartTag for void and self-closing tags (i.e.\n // <input> or <br />, so we need to check for that here. Otherwise, we would\n // throw an error for those cases.\n error = \"<\" + tag.name + \"> elements do not need end tags. You should remove it\";\n } else if (element.tag === undefined) {\n error = \"Closing tag </\" + tag.name + \"> without an open tag\";\n } else if (element.tag !== tag.name) {\n error = \"Closing tag </\" + tag.name + \"> did not match last open tag <\" + element.tag + \"> (on line \" + element.loc.startPosition.line + \")\";\n }\n\n if (error) {\n throw generateSyntaxError(error, tag.loc);\n }\n };\n\n _proto30.assembleAttributeValue = function assembleAttributeValue(parts, isQuoted, isDynamic, span) {\n if (isDynamic) {\n if (isQuoted) {\n return this.assembleConcatenatedValue(parts);\n } else {\n if (parts.length === 1 || parts.length === 2 && parts[1].type === 'TextNode' && parts[1].chars === '/') {\n return parts[0];\n } else {\n throw generateSyntaxError(\"An unquoted attribute value must be a string or a mustache, \" + \"preceded by whitespace or a '=' character, and \" + \"followed by whitespace, a '>' character, or '/>'\", span);\n }\n }\n } else {\n return parts.length > 0 ? parts[0] : b.text({\n chars: '',\n loc: span\n });\n }\n };\n\n return TokenizerEventHandlers;\n }(HandlebarsNodeVisitors);\n\n var syntax = {\n parse: preprocess,\n builders: publicBuilder,\n print: build,\n traverse: traverse,\n Walker: Walker\n };\n\n var CodemodEntityParser = /*#__PURE__*/function (_EntityParser) {\n (0, _emberBabel.inheritsLoose)(CodemodEntityParser, _EntityParser);\n\n // match upstream types, but never match an entity\n function CodemodEntityParser() {\n return _EntityParser.call(this, {}) || this;\n }\n\n var _proto31 = CodemodEntityParser.prototype;\n\n _proto31.parse = function parse() {\n return undefined;\n };\n\n return CodemodEntityParser;\n }(_simpleHtmlTokenizer.EntityParser);\n\n function preprocess(input, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _a, _b, _c;\n\n var mode = options.mode || 'precompile';\n var source;\n var ast;\n\n if (typeof input === 'string') {\n source = new Source(input, (_a = options.meta) === null || _a === void 0 ? void 0 : _a.moduleName);\n\n if (mode === 'codemod') {\n ast = (0, _parser.parseWithoutProcessing)(input, options.parseOptions);\n } else {\n ast = (0, _parser.parse)(input, options.parseOptions);\n }\n } else if (input instanceof Source) {\n source = input;\n\n if (mode === 'codemod') {\n ast = (0, _parser.parseWithoutProcessing)(input.source, options.parseOptions);\n } else {\n ast = (0, _parser.parse)(input.source, options.parseOptions);\n }\n } else {\n source = new Source('', (_b = options.meta) === null || _b === void 0 ? void 0 : _b.moduleName);\n ast = input;\n }\n\n var entityParser = undefined;\n\n if (mode === 'codemod') {\n entityParser = new CodemodEntityParser();\n }\n\n var offsets = SourceSpan.forCharPositions(source, 0, source.source.length);\n ast.loc = {\n source: '(program)',\n start: offsets.startPosition,\n end: offsets.endPosition\n };\n var program = new TokenizerEventHandlers(source, entityParser, mode).acceptTemplate(ast);\n\n if (options.strictMode) {\n program.blockParams = (_c = options.locals) !== null && _c !== void 0 ? _c : [];\n }\n\n if (options && options.plugins && options.plugins.ast) {\n for (var i = 0, l = options.plugins.ast.length; i < l; i++) {\n var transform = options.plugins.ast[i];\n var env = (0, _util.assign)({}, options, {\n syntax: syntax\n }, {\n plugins: undefined\n });\n var pluginResult = transform(env);\n traverse(program, pluginResult.visitor);\n }\n }\n\n return program;\n }\n\n var SymbolTable = /*#__PURE__*/function () {\n function SymbolTable() {}\n\n SymbolTable.top = function top(locals, customizeComponentName) {\n return new ProgramSymbolTable(locals, customizeComponentName);\n };\n\n var _proto32 = SymbolTable.prototype;\n\n _proto32.child = function child(locals) {\n var _this8 = this;\n\n var symbols = locals.map(function (name) {\n return _this8.allocate(name);\n });\n return new BlockSymbolTable(this, locals, symbols);\n };\n\n return SymbolTable;\n }();\n\n _exports.SymbolTable = SymbolTable;\n\n var ProgramSymbolTable = /*#__PURE__*/function (_SymbolTable) {\n (0, _emberBabel.inheritsLoose)(ProgramSymbolTable, _SymbolTable);\n\n function ProgramSymbolTable(templateLocals, customizeComponentName) {\n var _this9;\n\n _this9 = _SymbolTable.call(this) || this;\n _this9.templateLocals = templateLocals;\n _this9.customizeComponentName = customizeComponentName;\n _this9.symbols = [];\n _this9.upvars = [];\n _this9.size = 1;\n _this9.named = (0, _util.dict)();\n _this9.blocks = (0, _util.dict)();\n _this9.usedTemplateLocals = [];\n _this9._hasEval = false;\n return _this9;\n }\n\n var _proto33 = ProgramSymbolTable.prototype;\n\n _proto33.getUsedTemplateLocals = function getUsedTemplateLocals() {\n return this.usedTemplateLocals;\n };\n\n _proto33.setHasEval = function setHasEval() {\n this._hasEval = true;\n };\n\n _proto33.has = function has(name) {\n return this.templateLocals.indexOf(name) !== -1;\n };\n\n _proto33.get = function get(name) {\n var index = this.usedTemplateLocals.indexOf(name);\n\n if (index !== -1) {\n return [index, true];\n }\n\n index = this.usedTemplateLocals.length;\n this.usedTemplateLocals.push(name);\n return [index, true];\n };\n\n _proto33.getLocalsMap = function getLocalsMap() {\n return (0, _util.dict)();\n };\n\n _proto33.getEvalInfo = function getEvalInfo() {\n var locals = this.getLocalsMap();\n return Object.keys(locals).map(function (symbol) {\n return locals[symbol];\n });\n };\n\n _proto33.allocateFree = function allocateFree(name, resolution) {\n // If the name in question is an uppercase (i.e. angle-bracket) component invocation, run\n // the optional `customizeComponentName` function provided to the precompiler.\n if (resolution.resolution() === 39\n /* GetFreeAsComponentHead */\n && resolution.isAngleBracket && isUpperCase(name)) {\n name = this.customizeComponentName(name);\n }\n\n var index = this.upvars.indexOf(name);\n\n if (index !== -1) {\n return index;\n }\n\n index = this.upvars.length;\n this.upvars.push(name);\n return index;\n };\n\n _proto33.allocateNamed = function allocateNamed(name) {\n var named = this.named[name];\n\n if (!named) {\n named = this.named[name] = this.allocate(name);\n }\n\n return named;\n };\n\n _proto33.allocateBlock = function allocateBlock(name) {\n if (name === 'inverse') {\n name = 'else';\n }\n\n var block = this.blocks[name];\n\n if (!block) {\n block = this.blocks[name] = this.allocate(\"&\" + name);\n }\n\n return block;\n };\n\n _proto33.allocate = function allocate(identifier) {\n this.symbols.push(identifier);\n return this.size++;\n };\n\n (0, _emberBabel.createClass)(ProgramSymbolTable, [{\n key: \"hasEval\",\n get: function get() {\n return this._hasEval;\n }\n }]);\n return ProgramSymbolTable;\n }(SymbolTable);\n\n _exports.ProgramSymbolTable = ProgramSymbolTable;\n\n var BlockSymbolTable = /*#__PURE__*/function (_SymbolTable2) {\n (0, _emberBabel.inheritsLoose)(BlockSymbolTable, _SymbolTable2);\n\n function BlockSymbolTable(parent, symbols, slots) {\n var _this10;\n\n _this10 = _SymbolTable2.call(this) || this;\n _this10.parent = parent;\n _this10.symbols = symbols;\n _this10.slots = slots;\n return _this10;\n }\n\n var _proto34 = BlockSymbolTable.prototype;\n\n _proto34.has = function has(name) {\n return this.symbols.indexOf(name) !== -1 || this.parent.has(name);\n };\n\n _proto34.get = function get(name) {\n var slot = this.symbols.indexOf(name);\n return slot === -1 ? this.parent.get(name) : [this.slots[slot], false];\n };\n\n _proto34.getLocalsMap = function getLocalsMap() {\n var _this11 = this;\n\n var dict$$1 = this.parent.getLocalsMap();\n this.symbols.forEach(function (symbol) {\n return dict$$1[symbol] = _this11.get(symbol)[0];\n });\n return dict$$1;\n };\n\n _proto34.getEvalInfo = function getEvalInfo() {\n var locals = this.getLocalsMap();\n return Object.keys(locals).map(function (symbol) {\n return locals[symbol];\n });\n };\n\n _proto34.setHasEval = function setHasEval() {\n this.parent.setHasEval();\n };\n\n _proto34.allocateFree = function allocateFree(name, resolution) {\n return this.parent.allocateFree(name, resolution);\n };\n\n _proto34.allocateNamed = function allocateNamed(name) {\n return this.parent.allocateNamed(name);\n };\n\n _proto34.allocateBlock = function allocateBlock(name) {\n return this.parent.allocateBlock(name);\n };\n\n _proto34.allocate = function allocate(identifier) {\n return this.parent.allocate(identifier);\n };\n\n (0, _emberBabel.createClass)(BlockSymbolTable, [{\n key: \"locals\",\n get: function get() {\n return this.symbols;\n }\n }]);\n return BlockSymbolTable;\n }(SymbolTable);\n\n _exports.BlockSymbolTable = BlockSymbolTable;\n\n var __rest = undefined && undefined.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n };\n\n var Builder = /*#__PURE__*/function () {\n function Builder() {}\n\n var _proto35 = Builder.prototype;\n\n // TEMPLATE //\n _proto35.template = function template(symbols, body, loc$$1) {\n return new Template({\n table: symbols,\n body: body,\n loc: loc$$1\n });\n } // INTERNAL (these nodes cannot be reached when doing general-purpose visiting) //\n ;\n\n _proto35.block = function block(symbols, body, loc$$1) {\n return new Block({\n scope: symbols,\n body: body,\n loc: loc$$1\n });\n };\n\n _proto35.namedBlock = function namedBlock(name, block, loc$$1) {\n return new NamedBlock({\n name: name,\n block: block,\n attrs: [],\n componentArgs: [],\n modifiers: [],\n loc: loc$$1\n });\n };\n\n _proto35.simpleNamedBlock = function simpleNamedBlock(name, block, loc$$1) {\n return new BuildElement({\n selfClosing: false,\n attrs: [],\n componentArgs: [],\n modifiers: [],\n comments: []\n }).named(name, block, loc$$1);\n };\n\n _proto35.slice = function slice(chars, loc$$1) {\n return new SourceSlice({\n loc: loc$$1,\n chars: chars\n });\n };\n\n _proto35.args = function args(positional, named, loc$$1) {\n return new Args({\n loc: loc$$1,\n positional: positional,\n named: named\n });\n };\n\n _proto35.positional = function positional(exprs, loc$$1) {\n return new PositionalArguments({\n loc: loc$$1,\n exprs: exprs\n });\n };\n\n _proto35.namedArgument = function namedArgument(key, value) {\n return new NamedArgument({\n name: key,\n value: value\n });\n };\n\n _proto35.named = function named(entries, loc$$1) {\n return new NamedArguments({\n loc: loc$$1,\n entries: entries\n });\n };\n\n _proto35.attr = function attr(_ref29, loc$$1) {\n var name = _ref29.name,\n value = _ref29.value,\n trusting = _ref29.trusting;\n return new HtmlAttr({\n loc: loc$$1,\n name: name,\n value: value,\n trusting: trusting\n });\n };\n\n _proto35.splatAttr = function splatAttr(symbol, loc$$1) {\n return new SplatAttr({\n symbol: symbol,\n loc: loc$$1\n });\n };\n\n _proto35.arg = function arg(_ref30, loc$$1) {\n var name = _ref30.name,\n value = _ref30.value,\n trusting = _ref30.trusting;\n return new ComponentArg({\n name: name,\n value: value,\n trusting: trusting,\n loc: loc$$1\n });\n } // EXPRESSIONS //\n ;\n\n _proto35.path = function path(head, tail, loc$$1) {\n return new PathExpression({\n loc: loc$$1,\n ref: head,\n tail: tail\n });\n };\n\n _proto35.self = function self(loc$$1) {\n return new ThisReference({\n loc: loc$$1\n });\n };\n\n _proto35.at = function at(name, symbol, loc$$1) {\n return new ArgReference({\n loc: loc$$1,\n name: new SourceSlice({\n loc: loc$$1,\n chars: name\n }),\n symbol: symbol\n });\n };\n\n _proto35.freeVar = function freeVar(_ref31) {\n var name = _ref31.name,\n context = _ref31.context,\n symbol = _ref31.symbol,\n loc$$1 = _ref31.loc;\n return new FreeVarReference({\n name: name,\n resolution: context,\n symbol: symbol,\n loc: loc$$1\n });\n };\n\n _proto35.localVar = function localVar(name, symbol, isTemplateLocal, loc$$1) {\n return new LocalVarReference({\n loc: loc$$1,\n name: name,\n isTemplateLocal: isTemplateLocal,\n symbol: symbol\n });\n };\n\n _proto35.sexp = function sexp(parts, loc$$1) {\n return new CallExpression({\n loc: loc$$1,\n callee: parts.callee,\n args: parts.args\n });\n };\n\n _proto35.deprecatedCall = function deprecatedCall(arg, callee, loc$$1) {\n return new DeprecatedCallExpression({\n loc: loc$$1,\n arg: arg,\n callee: callee\n });\n };\n\n _proto35.interpolate = function interpolate(parts, loc$$1) {\n (0, _util.assertPresent)(parts);\n return new InterpolateExpression({\n loc: loc$$1,\n parts: parts\n });\n };\n\n _proto35.literal = function literal(value, loc$$1) {\n return new LiteralExpression({\n loc: loc$$1,\n value: value\n });\n } // STATEMENTS //\n ;\n\n _proto35.append = function append(_ref32, loc$$1) {\n var table = _ref32.table,\n trusting = _ref32.trusting,\n value = _ref32.value;\n return new AppendContent({\n table: table,\n trusting: trusting,\n value: value,\n loc: loc$$1\n });\n };\n\n _proto35.modifier = function modifier(_ref33, loc$$1) {\n var callee = _ref33.callee,\n args = _ref33.args;\n return new ElementModifier({\n loc: loc$$1,\n callee: callee,\n args: args\n });\n };\n\n _proto35.namedBlocks = function namedBlocks(blocks, loc$$1) {\n return new NamedBlocks({\n loc: loc$$1,\n blocks: blocks\n });\n };\n\n _proto35.blockStatement = function blockStatement(_a, loc$$1) {\n var symbols = _a.symbols,\n program = _a.program,\n _a$inverse = _a.inverse,\n inverse = _a$inverse === void 0 ? null : _a$inverse,\n call = __rest(_a, [\"symbols\", \"program\", \"inverse\"]);\n\n var blocksLoc = program.loc;\n var blocks = [this.namedBlock(SourceSlice.synthetic('default'), program, program.loc)];\n\n if (inverse) {\n blocksLoc = blocksLoc.extend(inverse.loc);\n blocks.push(this.namedBlock(SourceSlice.synthetic('else'), inverse, inverse.loc));\n }\n\n return new InvokeBlock({\n loc: loc$$1,\n blocks: this.namedBlocks(blocks, blocksLoc),\n callee: call.callee,\n args: call.args\n });\n };\n\n _proto35.element = function element(options) {\n return new BuildElement(options);\n };\n\n return Builder;\n }();\n\n var BuildElement = /*#__PURE__*/function () {\n function BuildElement(base) {\n this.base = base;\n this.builder = new Builder();\n }\n\n var _proto36 = BuildElement.prototype;\n\n _proto36.simple = function simple(tag, body, loc$$1) {\n return new SimpleElement((0, _util.assign)({\n tag: tag,\n body: body,\n componentArgs: [],\n loc: loc$$1\n }, this.base));\n };\n\n _proto36.named = function named(name, block, loc$$1) {\n return new NamedBlock((0, _util.assign)({\n name: name,\n block: block,\n componentArgs: [],\n loc: loc$$1\n }, this.base));\n };\n\n _proto36.selfClosingComponent = function selfClosingComponent(callee, loc$$1) {\n return new InvokeComponent((0, _util.assign)({\n loc: loc$$1,\n callee: callee,\n // point the empty named blocks at the `/` self-closing tag\n blocks: new NamedBlocks({\n blocks: [],\n loc: loc$$1.sliceEndChars({\n skipEnd: 1,\n chars: 1\n })\n })\n }, this.base));\n };\n\n _proto36.componentWithDefaultBlock = function componentWithDefaultBlock(callee, children, symbols, loc$$1) {\n var block = this.builder.block(symbols, children, loc$$1);\n var namedBlock = this.builder.namedBlock(SourceSlice.synthetic('default'), block, loc$$1); // BUILDER.simpleNamedBlock('default', children, symbols, loc);\n\n return new InvokeComponent((0, _util.assign)({\n loc: loc$$1,\n callee: callee,\n blocks: this.builder.namedBlocks([namedBlock], namedBlock.loc)\n }, this.base));\n };\n\n _proto36.componentWithNamedBlocks = function componentWithNamedBlocks(callee, blocks, loc$$1) {\n return new InvokeComponent((0, _util.assign)({\n loc: loc$$1,\n callee: callee,\n blocks: this.builder.namedBlocks(blocks, SpanList.range(blocks))\n }, this.base));\n };\n\n return BuildElement;\n }();\n\n function SexpSyntaxContext(node$$1) {\n if (isSimpleCallee(node$$1)) {\n return LooseModeResolution.namespaced(\"Helper\"\n /* Helper */\n );\n } else {\n return null;\n }\n }\n\n function ModifierSyntaxContext(node$$1) {\n if (isSimpleCallee(node$$1)) {\n return LooseModeResolution.namespaced(\"Modifier\"\n /* Modifier */\n );\n } else {\n return null;\n }\n }\n\n function BlockSyntaxContext(node$$1) {\n if (isSimpleCallee(node$$1)) {\n return LooseModeResolution.namespaced(\"Component\"\n /* Component */\n );\n } else {\n return LooseModeResolution.fallback();\n }\n }\n\n function ComponentSyntaxContext(node$$1) {\n if (isSimplePath(node$$1)) {\n return LooseModeResolution.namespaced(\"Component\"\n /* Component */\n , true);\n } else {\n return null;\n }\n }\n /**\n * This corresponds to append positions (text curlies or attribute\n * curlies). In strict mode, this also corresponds to arg curlies.\n */\n\n\n function AttrValueSyntaxContext(node$$1) {\n var isSimple = isSimpleCallee(node$$1);\n var isInvoke = isInvokeNode(node$$1);\n\n if (isSimple) {\n return isInvoke ? LooseModeResolution.namespaced(\"Helper\"\n /* Helper */\n ) : LooseModeResolution.attr();\n } else {\n return isInvoke ? STRICT_RESOLUTION : LooseModeResolution.fallback();\n }\n }\n /**\n * This corresponds to append positions (text curlies or attribute\n * curlies). In strict mode, this also corresponds to arg curlies.\n */\n\n\n function AppendSyntaxContext(node$$1) {\n var isSimple = isSimpleCallee(node$$1);\n var isInvoke = isInvokeNode(node$$1);\n var trusting = node$$1.trusting;\n\n if (isSimple) {\n return trusting ? LooseModeResolution.trustingAppend({\n invoke: isInvoke\n }) : LooseModeResolution.append({\n invoke: isInvoke\n });\n } else {\n return LooseModeResolution.fallback();\n }\n } // UTILITIES\n\n /**\n * A call node has a simple callee if its head is:\n *\n * - a `PathExpression`\n * - the `PathExpression`'s head is a `VarHead`\n * - it has no tail\n *\n * Simple heads:\n *\n * ```\n * {{x}}\n * {{x y}}\n * ```\n *\n * Not simple heads:\n *\n * ```\n * {{x.y}}\n * {{x.y z}}\n * {{@x}}\n * {{@x a}}\n * {{this}}\n * {{this a}}\n * ```\n */\n\n\n function isSimpleCallee(node$$1) {\n var path = node$$1.path;\n return isSimplePath(path);\n }\n\n function isSimplePath(node$$1) {\n if (node$$1.type === 'PathExpression' && node$$1.head.type === 'VarHead') {\n return node$$1.tail.length === 0;\n } else {\n return false;\n }\n }\n /**\n * The call expression has at least one argument.\n */\n\n\n function isInvokeNode(node$$1) {\n return node$$1.params.length > 0 || node$$1.hash.pairs.length > 0;\n }\n\n function normalize(source, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _a;\n\n var ast = preprocess(source, options);\n var normalizeOptions = (0, _util.assign)({\n strictMode: false,\n locals: []\n }, options);\n var top = SymbolTable.top(normalizeOptions.locals, (_a = // eslint-disable-next-line @typescript-eslint/unbound-method\n options.customizeComponentName) !== null && _a !== void 0 ? _a : function (name) {\n return name;\n });\n var block = new BlockContext(source, normalizeOptions, top);\n var normalizer = new StatementNormalizer(block);\n var astV2 = new TemplateChildren(block.loc(ast.loc), ast.body.map(function (b$$1) {\n return normalizer.normalize(b$$1);\n }), block).assertTemplate(top);\n var locals = top.getUsedTemplateLocals();\n return [astV2, locals];\n }\n /**\n * A `BlockContext` represents the block that a particular AST node is contained inside of.\n *\n * `BlockContext` is aware of template-wide options (such as strict mode), as well as the bindings\n * that are in-scope within that block.\n *\n * Concretely, it has the `PrecompileOptions` and current `SymbolTable`, and provides\n * facilities for working with those options.\n *\n * `BlockContext` is stateless.\n */\n\n\n var BlockContext = /*#__PURE__*/function () {\n function BlockContext(source, options, table) {\n this.source = source;\n this.options = options;\n this.table = table;\n this.builder = new Builder();\n }\n\n var _proto37 = BlockContext.prototype;\n\n _proto37.loc = function loc(loc$$1) {\n return this.source.spanFor(loc$$1);\n };\n\n _proto37.resolutionFor = function resolutionFor(node$$1, resolution) {\n if (this.strict) {\n return {\n resolution: STRICT_RESOLUTION\n };\n }\n\n if (this.isFreeVar(node$$1)) {\n var r = resolution(node$$1);\n\n if (r === null) {\n return {\n resolution: 'error',\n path: printPath(node$$1),\n head: printHead(node$$1)\n };\n }\n\n return {\n resolution: r\n };\n } else {\n return {\n resolution: STRICT_RESOLUTION\n };\n }\n };\n\n _proto37.isFreeVar = function isFreeVar(callee) {\n if (callee.type === 'PathExpression') {\n if (callee.head.type !== 'VarHead') {\n return false;\n }\n\n return !this.table.has(callee.head.name);\n } else if (callee.path.type === 'PathExpression') {\n return this.isFreeVar(callee.path);\n } else {\n return false;\n }\n };\n\n _proto37.hasBinding = function hasBinding(name) {\n return this.table.has(name);\n };\n\n _proto37.child = function child(blockParams) {\n return new BlockContext(this.source, this.options, this.table.child(blockParams));\n };\n\n _proto37.customizeComponentName = function customizeComponentName(input) {\n if (this.options.customizeComponentName) {\n return this.options.customizeComponentName(input);\n } else {\n return input;\n }\n };\n\n (0, _emberBabel.createClass)(BlockContext, [{\n key: \"strict\",\n get: function get() {\n return this.options.strictMode || false;\n }\n }]);\n return BlockContext;\n }();\n /**\n * An `ExpressionNormalizer` normalizes expressions within a block.\n *\n * `ExpressionNormalizer` is stateless.\n */\n\n\n var ExpressionNormalizer = /*#__PURE__*/function () {\n function ExpressionNormalizer(block) {\n this.block = block;\n }\n\n var _proto38 = ExpressionNormalizer.prototype;\n\n _proto38.normalize = function normalize(expr, resolution) {\n switch (expr.type) {\n case 'NullLiteral':\n case 'BooleanLiteral':\n case 'NumberLiteral':\n case 'StringLiteral':\n case 'UndefinedLiteral':\n return this.block.builder.literal(expr.value, this.block.loc(expr.loc));\n\n case 'PathExpression':\n return this.path(expr, resolution);\n\n case 'SubExpression':\n {\n var _resolution = this.block.resolutionFor(expr, SexpSyntaxContext);\n\n if (_resolution.resolution === 'error') {\n throw generateSyntaxError(\"You attempted to invoke a path (`\" + _resolution.path + \"`) but \" + _resolution.head + \" was not in scope\", expr.loc);\n }\n\n return this.block.builder.sexp(this.callParts(expr, _resolution.resolution), this.block.loc(expr.loc));\n }\n }\n };\n\n _proto38.path = function path(expr, resolution) {\n var headOffsets = this.block.loc(expr.head.loc);\n var tail = []; // start with the head\n\n var offset = headOffsets;\n\n for (var _iterator3 = (0, _emberBabel.createForOfIteratorHelperLoose)(expr.tail), _step3; !(_step3 = _iterator3()).done;) {\n var _part2 = _step3.value;\n offset = offset.sliceStartChars({\n chars: _part2.length,\n skipStart: 1\n });\n tail.push(new SourceSlice({\n loc: offset,\n chars: _part2\n }));\n }\n\n return this.block.builder.path(this.ref(expr.head, resolution), tail, this.block.loc(expr.loc));\n }\n /**\n * The `callParts` method takes ASTv1.CallParts as well as a syntax context and normalizes\n * it to an ASTv2 CallParts.\n */\n ;\n\n _proto38.callParts = function callParts(parts, context) {\n var _this12 = this;\n\n var path = parts.path,\n params = parts.params,\n hash = parts.hash;\n var callee = this.normalize(path, context);\n var paramList = params.map(function (p) {\n return _this12.normalize(p, ARGUMENT_RESOLUTION);\n });\n var paramLoc = SpanList.range(paramList, callee.loc.collapse('end'));\n var namedLoc = this.block.loc(hash.loc);\n var argsLoc = SpanList.range([paramLoc, namedLoc]);\n var positional = this.block.builder.positional(params.map(function (p) {\n return _this12.normalize(p, ARGUMENT_RESOLUTION);\n }), paramLoc);\n var named = this.block.builder.named(hash.pairs.map(function (p) {\n return _this12.namedArgument(p);\n }), this.block.loc(hash.loc));\n return {\n callee: callee,\n args: this.block.builder.args(positional, named, argsLoc)\n };\n };\n\n _proto38.namedArgument = function namedArgument(pair) {\n var offsets = this.block.loc(pair.loc);\n var keyOffsets = offsets.sliceStartChars({\n chars: pair.key.length\n });\n return this.block.builder.namedArgument(new SourceSlice({\n chars: pair.key,\n loc: keyOffsets\n }), this.normalize(pair.value, ARGUMENT_RESOLUTION));\n }\n /**\n * The `ref` method normalizes an `ASTv1.PathHead` into an `ASTv2.VariableReference`.\n * This method is extremely important, because it is responsible for normalizing free\n * variables into an an ASTv2.PathHead *with appropriate context*.\n *\n * The syntax context is originally determined by the syntactic position that this `PathHead`\n * came from, and is ultimately attached to the `ASTv2.VariableReference` here. In ASTv2,\n * the `VariableReference` node bears full responsibility for loose mode rules that control\n * the behavior of free variables.\n */\n ;\n\n _proto38.ref = function ref(head, resolution) {\n var block = this.block;\n var builder = block.builder,\n table = block.table;\n var offsets = block.loc(head.loc);\n\n switch (head.type) {\n case 'ThisHead':\n return builder.self(offsets);\n\n case 'AtHead':\n {\n var symbol = table.allocateNamed(head.name);\n return builder.at(head.name, symbol, offsets);\n }\n\n case 'VarHead':\n {\n if (block.hasBinding(head.name)) {\n var _table$get = table.get(head.name),\n _symbol = _table$get[0],\n isRoot = _table$get[1];\n\n return block.builder.localVar(head.name, _symbol, isRoot, offsets);\n } else {\n var context = block.strict ? STRICT_RESOLUTION : resolution;\n\n var _symbol2 = block.table.allocateFree(head.name, context);\n\n return block.builder.freeVar({\n name: head.name,\n context: context,\n symbol: _symbol2,\n loc: offsets\n });\n }\n }\n }\n };\n\n return ExpressionNormalizer;\n }();\n /**\n * `TemplateNormalizer` normalizes top-level ASTv1 statements to ASTv2.\n */\n\n\n var StatementNormalizer = /*#__PURE__*/function () {\n function StatementNormalizer(block) {\n this.block = block;\n }\n\n var _proto39 = StatementNormalizer.prototype;\n\n _proto39.normalize = function normalize(node$$1) {\n switch (node$$1.type) {\n case 'PartialStatement':\n throw new Error(\"Handlebars partial syntax ({{> ...}}) is not allowed in Glimmer\");\n\n case 'BlockStatement':\n return this.BlockStatement(node$$1);\n\n case 'ElementNode':\n return new ElementNormalizer(this.block).ElementNode(node$$1);\n\n case 'MustacheStatement':\n return this.MustacheStatement(node$$1);\n // These are the same in ASTv2\n\n case 'MustacheCommentStatement':\n return this.MustacheCommentStatement(node$$1);\n\n case 'CommentStatement':\n {\n var loc$$1 = this.block.loc(node$$1.loc);\n return new HtmlComment({\n loc: loc$$1,\n text: loc$$1.slice({\n skipStart: 4,\n skipEnd: 3\n }).toSlice(node$$1.value)\n });\n }\n\n case 'TextNode':\n return new HtmlText({\n loc: this.block.loc(node$$1.loc),\n chars: node$$1.chars\n });\n }\n };\n\n _proto39.MustacheCommentStatement = function MustacheCommentStatement(node$$1) {\n var loc$$1 = this.block.loc(node$$1.loc);\n var textLoc;\n\n if (loc$$1.asString().slice(0, 5) === '{{!--') {\n textLoc = loc$$1.slice({\n skipStart: 5,\n skipEnd: 4\n });\n } else {\n textLoc = loc$$1.slice({\n skipStart: 3,\n skipEnd: 2\n });\n }\n\n return new GlimmerComment({\n loc: loc$$1,\n text: textLoc.toSlice(node$$1.value)\n });\n }\n /**\n * Normalizes an ASTv1.MustacheStatement to an ASTv2.AppendStatement\n */\n ;\n\n _proto39.MustacheStatement = function MustacheStatement(mustache) {\n var escaped = mustache.escaped;\n var loc$$1 = this.block.loc(mustache.loc); // Normalize the call parts in AppendSyntaxContext\n\n var callParts = this.expr.callParts({\n path: mustache.path,\n params: mustache.params,\n hash: mustache.hash\n }, AppendSyntaxContext(mustache));\n var value = callParts.args.isEmpty() ? callParts.callee : this.block.builder.sexp(callParts, loc$$1);\n return this.block.builder.append({\n table: this.block.table,\n trusting: !escaped,\n value: value\n }, loc$$1);\n }\n /**\n * Normalizes a ASTv1.BlockStatement to an ASTv2.BlockStatement\n */\n ;\n\n _proto39.BlockStatement = function BlockStatement(block) {\n var program = block.program,\n inverse = block.inverse;\n var loc$$1 = this.block.loc(block.loc);\n var resolution = this.block.resolutionFor(block, BlockSyntaxContext);\n\n if (resolution.resolution === 'error') {\n throw generateSyntaxError(\"You attempted to invoke a path (`{{#\" + resolution.path + \"}}`) but \" + resolution.head + \" was not in scope\", loc$$1);\n }\n\n var callParts = this.expr.callParts(block, resolution.resolution);\n return this.block.builder.blockStatement((0, _util.assign)({\n symbols: this.block.table,\n program: this.Block(program),\n inverse: inverse ? this.Block(inverse) : null\n }, callParts), loc$$1);\n };\n\n _proto39.Block = function Block(_ref34) {\n var body = _ref34.body,\n loc$$1 = _ref34.loc,\n blockParams = _ref34.blockParams;\n var child = this.block.child(blockParams);\n var normalizer = new StatementNormalizer(child);\n return new BlockChildren(this.block.loc(loc$$1), body.map(function (b$$1) {\n return normalizer.normalize(b$$1);\n }), this.block).assertBlock(child.table);\n };\n\n (0, _emberBabel.createClass)(StatementNormalizer, [{\n key: \"expr\",\n get: function get() {\n return new ExpressionNormalizer(this.block);\n }\n }]);\n return StatementNormalizer;\n }();\n\n var ElementNormalizer = /*#__PURE__*/function () {\n function ElementNormalizer(ctx) {\n this.ctx = ctx;\n }\n /**\n * Normalizes an ASTv1.ElementNode to:\n *\n * - ASTv2.NamedBlock if the tag name begins with `:`\n * - ASTv2.Component if the tag name matches the component heuristics\n * - ASTv2.SimpleElement if the tag name doesn't match the component heuristics\n *\n * A tag name represents a component if:\n *\n * - it begins with `@`\n * - it is exactly `this` or begins with `this.`\n * - the part before the first `.` is a reference to an in-scope variable binding\n * - it begins with an uppercase character\n */\n\n\n var _proto40 = ElementNormalizer.prototype;\n\n _proto40.ElementNode = function ElementNode(element) {\n var _this13 = this;\n\n var tag = element.tag,\n selfClosing = element.selfClosing,\n comments = element.comments;\n var loc$$1 = this.ctx.loc(element.loc);\n\n var _tag$split = tag.split('.'),\n tagHead = _tag$split[0],\n rest = _tag$split.slice(1); // the head, attributes and modifiers are in the current scope\n\n\n var path = this.classifyTag(tagHead, rest, element.loc);\n var attrs = element.attributes.filter(function (a) {\n return a.name[0] !== '@';\n }).map(function (a) {\n return _this13.attr(a);\n });\n var args = element.attributes.filter(function (a) {\n return a.name[0] === '@';\n }).map(function (a) {\n return _this13.arg(a);\n });\n var modifiers = element.modifiers.map(function (m) {\n return _this13.modifier(m);\n }); // the element's block params are in scope for the children\n\n var child = this.ctx.child(element.blockParams);\n var normalizer = new StatementNormalizer(child);\n var childNodes = element.children.map(function (s) {\n return normalizer.normalize(s);\n });\n var el = this.ctx.builder.element({\n selfClosing: selfClosing,\n attrs: attrs,\n componentArgs: args,\n modifiers: modifiers,\n comments: comments.map(function (c) {\n return new StatementNormalizer(_this13.ctx).MustacheCommentStatement(c);\n })\n });\n var children = new ElementChildren(el, loc$$1, childNodes, this.ctx);\n var offsets = this.ctx.loc(element.loc);\n var tagOffsets = offsets.sliceStartChars({\n chars: tag.length,\n skipStart: 1\n });\n\n if (path === 'ElementHead') {\n if (tag[0] === ':') {\n return children.assertNamedBlock(tagOffsets.slice({\n skipStart: 1\n }).toSlice(tag.slice(1)), child.table);\n } else {\n return children.assertElement(tagOffsets.toSlice(tag), element.blockParams.length > 0);\n }\n }\n\n if (element.selfClosing) {\n return el.selfClosingComponent(path, loc$$1);\n } else {\n var blocks = children.assertComponent(tag, child.table, element.blockParams.length > 0);\n return el.componentWithNamedBlocks(path, blocks, loc$$1);\n }\n };\n\n _proto40.modifier = function modifier(m) {\n var resolution = this.ctx.resolutionFor(m, ModifierSyntaxContext);\n\n if (resolution.resolution === 'error') {\n throw generateSyntaxError(\"You attempted to invoke a path (`{{#\" + resolution.path + \"}}`) as a modifier, but \" + resolution.head + \" was not in scope. Try adding `this` to the beginning of the path\", m.loc);\n }\n\n var callParts = this.expr.callParts(m, resolution.resolution);\n return this.ctx.builder.modifier(callParts, this.ctx.loc(m.loc));\n }\n /**\n * This method handles attribute values that are curlies, as well as curlies nested inside of\n * interpolations:\n *\n * ```hbs\n * <a href={{url}} />\n * <a href=\"{{url}}.html\" />\n * ```\n */\n ;\n\n _proto40.mustacheAttr = function mustacheAttr(mustache) {\n // Normalize the call parts in AttrValueSyntaxContext\n var sexp = this.ctx.builder.sexp(this.expr.callParts(mustache, AttrValueSyntaxContext(mustache)), this.ctx.loc(mustache.loc)); // If there are no params or hash, just return the function part as its own expression\n\n if (sexp.args.isEmpty()) {\n return sexp.callee;\n } else {\n return sexp;\n }\n }\n /**\n * attrPart is the narrowed down list of valid attribute values that are also\n * allowed as a concat part (you can't nest concats).\n */\n ;\n\n _proto40.attrPart = function attrPart(part) {\n switch (part.type) {\n case 'MustacheStatement':\n return {\n expr: this.mustacheAttr(part),\n trusting: !part.escaped\n };\n\n case 'TextNode':\n return {\n expr: this.ctx.builder.literal(part.chars, this.ctx.loc(part.loc)),\n trusting: true\n };\n }\n };\n\n _proto40.attrValue = function attrValue(part) {\n var _this14 = this;\n\n switch (part.type) {\n case 'ConcatStatement':\n {\n var parts = part.parts.map(function (p) {\n return _this14.attrPart(p).expr;\n });\n return {\n expr: this.ctx.builder.interpolate(parts, this.ctx.loc(part.loc)),\n trusting: false\n };\n }\n\n default:\n return this.attrPart(part);\n }\n };\n\n _proto40.attr = function attr(m) {\n if (m.name === '...attributes') {\n return this.ctx.builder.splatAttr(this.ctx.table.allocateBlock('attrs'), this.ctx.loc(m.loc));\n }\n\n var offsets = this.ctx.loc(m.loc);\n var nameSlice = offsets.sliceStartChars({\n chars: m.name.length\n }).toSlice(m.name);\n var value = this.attrValue(m.value);\n return this.ctx.builder.attr({\n name: nameSlice,\n value: value.expr,\n trusting: value.trusting\n }, offsets);\n };\n\n _proto40.maybeDeprecatedCall = function maybeDeprecatedCall(arg, part) {\n if (this.ctx.strict) {\n return null;\n }\n\n if (part.type !== 'MustacheStatement') {\n return null;\n }\n\n var path = part.path;\n\n if (path.type !== 'PathExpression') {\n return null;\n }\n\n if (path.head.type !== 'VarHead') {\n return null;\n }\n\n var name = path.head.name;\n\n if (name === 'has-block' || name === 'has-block-params') {\n return null;\n }\n\n if (this.ctx.hasBinding(name)) {\n return null;\n }\n\n if (path.tail.length !== 0) {\n return null;\n }\n\n if (part.params.length !== 0 || part.hash.pairs.length !== 0) {\n return null;\n }\n\n var context = LooseModeResolution.attr();\n var callee = this.ctx.builder.freeVar({\n name: name,\n context: context,\n symbol: this.ctx.table.allocateFree(name, context),\n loc: path.loc\n });\n return {\n expr: this.ctx.builder.deprecatedCall(arg, callee, part.loc),\n trusting: false\n };\n };\n\n _proto40.arg = function arg(_arg) {\n var offsets = this.ctx.loc(_arg.loc);\n var nameSlice = offsets.sliceStartChars({\n chars: _arg.name.length\n }).toSlice(_arg.name);\n var value = this.maybeDeprecatedCall(nameSlice, _arg.value) || this.attrValue(_arg.value);\n return this.ctx.builder.arg({\n name: nameSlice,\n value: value.expr,\n trusting: value.trusting\n }, offsets);\n }\n /**\n * This function classifies the head of an ASTv1.Element into an ASTv2.PathHead (if the\n * element is a component) or `'ElementHead'` (if the element is a simple element).\n *\n * Rules:\n *\n * 1. If the variable is an `@arg`, return an `AtHead`\n * 2. If the variable is `this`, return a `ThisHead`\n * 3. If the variable is in the current scope:\n * a. If the scope is the root scope, then return a Free `LocalVarHead`\n * b. Else, return a standard `LocalVarHead`\n * 4. If the tag name is a path and the variable is not in the current scope, Syntax Error\n * 5. If the variable is uppercase return a FreeVar(ResolveAsComponentHead)\n * 6. Otherwise, return `'ElementHead'`\n */\n ;\n\n _proto40.classifyTag = function classifyTag(variable, tail, loc$$1) {\n var uppercase = isUpperCase(variable);\n var inScope = variable[0] === '@' || variable === 'this' || this.ctx.hasBinding(variable);\n\n if (this.ctx.strict && !inScope) {\n if (uppercase) {\n throw generateSyntaxError(\"Attempted to invoke a component that was not in scope in a strict mode template, `<\" + variable + \">`. If you wanted to create an element with that name, convert it to lowercase - `<\" + variable.toLowerCase() + \">`\", loc$$1);\n } // In strict mode, values are always elements unless they are in scope\n\n\n return 'ElementHead';\n } // Since the parser handed us the HTML element name as a string, we need\n // to convert it into an ASTv1 path so it can be processed using the\n // expression normalizer.\n\n\n var isComponent = inScope || uppercase;\n var variableLoc = loc$$1.sliceStartChars({\n skipStart: 1,\n chars: variable.length\n });\n var tailLength = tail.reduce(function (accum, part) {\n return accum + 1 + part.length;\n }, 0);\n var pathEnd = variableLoc.getEnd().move(tailLength);\n var pathLoc = variableLoc.withEnd(pathEnd);\n\n if (isComponent) {\n var path = b.path({\n head: b.head(variable, variableLoc),\n tail: tail,\n loc: pathLoc\n });\n var resolution = this.ctx.resolutionFor(path, ComponentSyntaxContext);\n\n if (resolution.resolution === 'error') {\n throw generateSyntaxError(\"You attempted to invoke a path (`<\" + resolution.path + \">`) but \" + resolution.head + \" was not in scope\", loc$$1);\n }\n\n return new ExpressionNormalizer(this.ctx).normalize(path, resolution.resolution);\n } // If the tag name wasn't a valid component but contained a `.`, it's\n // a syntax error.\n\n\n if (tail.length > 0) {\n throw generateSyntaxError(\"You used \" + variable + \".\" + tail.join('.') + \" as a tag name, but \" + variable + \" is not in scope\", loc$$1);\n }\n\n return 'ElementHead';\n };\n\n (0, _emberBabel.createClass)(ElementNormalizer, [{\n key: \"expr\",\n get: function get() {\n return new ExpressionNormalizer(this.ctx);\n }\n }]);\n return ElementNormalizer;\n }();\n\n var Children = function Children(loc$$1, children, block) {\n this.loc = loc$$1;\n this.children = children;\n this.block = block;\n this.namedBlocks = children.filter(function (c) {\n return c instanceof NamedBlock;\n });\n this.hasSemanticContent = Boolean(children.filter(function (c) {\n if (c instanceof NamedBlock) {\n return false;\n }\n\n switch (c.type) {\n case 'GlimmerComment':\n case 'HtmlComment':\n return false;\n\n case 'HtmlText':\n return !/^\\s*$/.exec(c.chars);\n\n default:\n return true;\n }\n }).length);\n this.nonBlockChildren = children.filter(function (c) {\n return !(c instanceof NamedBlock);\n });\n };\n\n var TemplateChildren = /*#__PURE__*/function (_Children) {\n (0, _emberBabel.inheritsLoose)(TemplateChildren, _Children);\n\n function TemplateChildren() {\n return _Children.apply(this, arguments) || this;\n }\n\n var _proto41 = TemplateChildren.prototype;\n\n _proto41.assertTemplate = function assertTemplate(table) {\n if ((0, _util.isPresent)(this.namedBlocks)) {\n throw generateSyntaxError(\"Unexpected named block at the top-level of a template\", this.loc);\n }\n\n return this.block.builder.template(table, this.nonBlockChildren, this.block.loc(this.loc));\n };\n\n return TemplateChildren;\n }(Children);\n\n var BlockChildren = /*#__PURE__*/function (_Children2) {\n (0, _emberBabel.inheritsLoose)(BlockChildren, _Children2);\n\n function BlockChildren() {\n return _Children2.apply(this, arguments) || this;\n }\n\n var _proto42 = BlockChildren.prototype;\n\n _proto42.assertBlock = function assertBlock(table) {\n if ((0, _util.isPresent)(this.namedBlocks)) {\n throw generateSyntaxError(\"Unexpected named block nested in a normal block\", this.loc);\n }\n\n return this.block.builder.block(table, this.nonBlockChildren, this.loc);\n };\n\n return BlockChildren;\n }(Children);\n\n var ElementChildren = /*#__PURE__*/function (_Children3) {\n (0, _emberBabel.inheritsLoose)(ElementChildren, _Children3);\n\n function ElementChildren(el, loc$$1, children, block) {\n var _this15;\n\n _this15 = _Children3.call(this, loc$$1, children, block) || this;\n _this15.el = el;\n return _this15;\n }\n\n var _proto43 = ElementChildren.prototype;\n\n _proto43.assertNamedBlock = function assertNamedBlock(name, table) {\n if (this.el.base.selfClosing) {\n throw generateSyntaxError(\"<:\" + name.chars + \"/> is not a valid named block: named blocks cannot be self-closing\", this.loc);\n }\n\n if ((0, _util.isPresent)(this.namedBlocks)) {\n throw generateSyntaxError(\"Unexpected named block inside <:\" + name.chars + \"> named block: named blocks cannot contain nested named blocks\", this.loc);\n }\n\n if (!isLowerCase(name.chars)) {\n throw generateSyntaxError(\"<:\" + name.chars + \"> is not a valid named block, and named blocks must begin with a lowercase letter\", this.loc);\n }\n\n if (this.el.base.attrs.length > 0 || this.el.base.componentArgs.length > 0 || this.el.base.modifiers.length > 0) {\n throw generateSyntaxError(\"named block <:\" + name.chars + \"> cannot have attributes, arguments, or modifiers\", this.loc);\n }\n\n var offsets = SpanList.range(this.nonBlockChildren, this.loc);\n return this.block.builder.namedBlock(name, this.block.builder.block(table, this.nonBlockChildren, offsets), this.loc);\n };\n\n _proto43.assertElement = function assertElement(name, hasBlockParams) {\n if (hasBlockParams) {\n throw generateSyntaxError(\"Unexpected block params in <\" + name + \">: simple elements cannot have block params\", this.loc);\n }\n\n if ((0, _util.isPresent)(this.namedBlocks)) {\n var names = this.namedBlocks.map(function (b$$1) {\n return b$$1.name;\n });\n\n if (names.length === 1) {\n throw generateSyntaxError(\"Unexpected named block <:foo> inside <\" + name.chars + \"> HTML element\", this.loc);\n } else {\n var printedNames = names.map(function (n) {\n return \"<:\" + n.chars + \">\";\n }).join(', ');\n throw generateSyntaxError(\"Unexpected named blocks inside <\" + name.chars + \"> HTML element (\" + printedNames + \")\", this.loc);\n }\n }\n\n return this.el.simple(name, this.nonBlockChildren, this.loc);\n };\n\n _proto43.assertComponent = function assertComponent(name, table, hasBlockParams) {\n if ((0, _util.isPresent)(this.namedBlocks) && this.hasSemanticContent) {\n throw generateSyntaxError(\"Unexpected content inside <\" + name + \"> component invocation: when using named blocks, the tag cannot contain other content\", this.loc);\n }\n\n if ((0, _util.isPresent)(this.namedBlocks)) {\n if (hasBlockParams) {\n throw generateSyntaxError(\"Unexpected block params list on <\" + name + \"> component invocation: when passing named blocks, the invocation tag cannot take block params\", this.loc);\n }\n\n var seenNames = new Set();\n\n for (var _iterator4 = (0, _emberBabel.createForOfIteratorHelperLoose)(this.namedBlocks), _step4; !(_step4 = _iterator4()).done;) {\n var _block = _step4.value;\n var _name2 = _block.name.chars;\n\n if (seenNames.has(_name2)) {\n throw generateSyntaxError(\"Component had two named blocks with the same name, `<:\" + _name2 + \">`. Only one block with a given name may be passed\", this.loc);\n }\n\n if (_name2 === 'inverse' && seenNames.has('else') || _name2 === 'else' && seenNames.has('inverse')) {\n throw generateSyntaxError(\"Component has both <:else> and <:inverse> block. <:inverse> is an alias for <:else>\", this.loc);\n }\n\n seenNames.add(_name2);\n }\n\n return this.namedBlocks;\n } else {\n return [this.block.builder.namedBlock(SourceSlice.synthetic('default'), this.block.builder.block(table, this.nonBlockChildren, this.loc), this.loc)];\n }\n };\n\n return ElementChildren;\n }(Children);\n\n function printPath(node$$1) {\n if (node$$1.type !== 'PathExpression' && node$$1.path.type === 'PathExpression') {\n return printPath(node$$1.path);\n } else {\n return new Printer({\n entityEncoding: 'raw'\n }).print(node$$1);\n }\n }\n\n function printHead(node$$1) {\n if (node$$1.type === 'PathExpression') {\n switch (node$$1.head.type) {\n case 'AtHead':\n case 'VarHead':\n return node$$1.head.name;\n\n case 'ThisHead':\n return 'this';\n }\n } else if (node$$1.path.type === 'PathExpression') {\n return printHead(node$$1.path);\n } else {\n return new Printer({\n entityEncoding: 'raw'\n }).print(node$$1);\n }\n }\n\n function isKeyword(word) {\n return word in KEYWORDS_TYPES;\n }\n /**\n * This includes the full list of keywords currently in use in the template\n * language, and where their valid usages are.\n */\n\n\n var KEYWORDS_TYPES = {\n component: ['Call', 'Append', 'Block'],\n debugger: ['Append'],\n 'each-in': ['Block'],\n each: ['Block'],\n 'has-block-params': ['Call', 'Append'],\n 'has-block': ['Call', 'Append'],\n helper: ['Call', 'Append'],\n if: ['Call', 'Append', 'Block'],\n 'in-element': ['Block'],\n let: ['Block'],\n 'link-to': ['Append', 'Block'],\n log: ['Call', 'Append'],\n modifier: ['Call'],\n mount: ['Append'],\n mut: ['Call', 'Append'],\n outlet: ['Append'],\n 'query-params': ['Call'],\n readonly: ['Call', 'Append'],\n unbound: ['Call', 'Append'],\n unless: ['Call', 'Append', 'Block'],\n with: ['Block'],\n yield: ['Append']\n };\n /**\n * Gets the correct Token from the Node based on it's type\n */\n\n _exports.KEYWORDS_TYPES = KEYWORDS_TYPES;\n\n function tokensFromType(node, scopedTokens, options) {\n if (node.type === 'PathExpression') {\n if (node.head.type === 'AtHead' || node.head.type === 'ThisHead') {\n return;\n }\n\n var possbleToken = node.head.name;\n\n if (scopedTokens.indexOf(possbleToken) === -1) {\n return possbleToken;\n }\n } else if (node.type === 'ElementNode') {\n var tag = node.tag;\n var char = tag.charAt(0);\n\n if (char === ':' || char === '@') {\n return;\n }\n\n if (!options.includeHtmlElements && tag.indexOf('.') === -1 && tag.toLowerCase() === tag) {\n return;\n }\n\n if (tag.substr(0, 5) === 'this.') {\n return;\n }\n\n if (scopedTokens.indexOf(tag) !== -1) {\n return;\n }\n\n return tag;\n }\n }\n /**\n * Adds tokens to the tokensSet based on their node.type\n */\n\n\n function addTokens(tokensSet, node, scopedTokens, options) {\n var maybeTokens = tokensFromType(node, scopedTokens, options);\n (Array.isArray(maybeTokens) ? maybeTokens : [maybeTokens]).forEach(function (maybeToken) {\n if (maybeToken !== undefined && maybeToken[0] !== '@') {\n tokensSet.add(maybeToken.split('.')[0]);\n }\n });\n }\n /**\n * Parses and traverses a given handlebars html template to extract all template locals\n * referenced that could possible come from the praent scope. Can exclude known keywords\n * optionally.\n */\n\n\n function getTemplateLocals(html, options) {\n if (options === void 0) {\n options = {\n includeHtmlElements: false,\n includeKeywords: false\n };\n }\n\n var ast = preprocess(html);\n var tokensSet = new Set();\n var scopedTokens = [];\n traverse(ast, {\n Block: {\n enter: function enter(_ref35) {\n var blockParams = _ref35.blockParams;\n blockParams.forEach(function (param) {\n scopedTokens.push(param);\n });\n },\n exit: function exit(_ref36) {\n var blockParams = _ref36.blockParams;\n blockParams.forEach(function () {\n scopedTokens.pop();\n });\n }\n },\n ElementNode: {\n enter: function enter(node) {\n node.blockParams.forEach(function (param) {\n scopedTokens.push(param);\n });\n addTokens(tokensSet, node, scopedTokens, options);\n },\n exit: function exit(_ref37) {\n var blockParams = _ref37.blockParams;\n blockParams.forEach(function () {\n scopedTokens.pop();\n });\n }\n },\n PathExpression: function PathExpression(node) {\n addTokens(tokensSet, node, scopedTokens, options);\n }\n });\n var tokens = [];\n tokensSet.forEach(function (s) {\n return tokens.push(s);\n });\n\n if (!(options === null || options === void 0 ? void 0 : options.includeKeywords)) {\n tokens = tokens.filter(function (token) {\n return !isKeyword(token);\n });\n }\n\n return tokens;\n }\n});","define(\"@glimmer/util\", [\"exports\", \"ember-babel\"], function (_exports, _emberBabel) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.assertNever = assertNever;\n _exports.assert = debugAssert$$1;\n _exports.deprecate = deprecate$$1;\n _exports.dict = dict;\n _exports.isDict = isDict;\n _exports.isObject = isObject;\n _exports.isSerializationFirstNode = isSerializationFirstNode;\n _exports.fillNulls = fillNulls;\n _exports.values = values;\n _exports.castToSimple = castToSimple;\n _exports.castToBrowser = castToBrowser;\n _exports.checkNode = checkNode;\n _exports.intern = intern;\n _exports.buildUntouchableThis = buildUntouchableThis;\n _exports.emptyArray = emptyArray;\n _exports.isEmptyArray = isEmptyArray;\n _exports.clearElement = clearElement;\n _exports.keys = keys;\n _exports.unwrap = unwrap;\n _exports.expect = expect;\n _exports.unreachable = unreachable;\n _exports.exhausted = exhausted;\n _exports.enumerableSymbol = enumerableSymbol;\n _exports.strip = strip;\n _exports.isHandle = isHandle;\n _exports.isNonPrimitiveHandle = isNonPrimitiveHandle;\n _exports.constants = constants;\n _exports.isSmallInt = isSmallInt;\n _exports.encodeNegative = encodeNegative;\n _exports.decodeNegative = decodeNegative;\n _exports.encodePositive = encodePositive;\n _exports.decodePositive = decodePositive;\n _exports.encodeHandle = encodeHandle;\n _exports.decodeHandle = decodeHandle;\n _exports.encodeImmediate = encodeImmediate;\n _exports.decodeImmediate = decodeImmediate;\n _exports.unwrapHandle = unwrapHandle;\n _exports.unwrapTemplate = unwrapTemplate;\n _exports.extractHandle = extractHandle;\n _exports.isOkHandle = isOkHandle;\n _exports.isErrHandle = isErrHandle;\n _exports.isPresent = isPresent;\n _exports.ifPresent = ifPresent;\n _exports.toPresentOption = toPresentOption;\n _exports.assertPresent = assertPresent;\n _exports.mapPresent = mapPresent;\n _exports.symbol = _exports.tuple = _exports.HAS_NATIVE_SYMBOL = _exports.HAS_NATIVE_PROXY = _exports.EMPTY_NUMBER_ARRAY = _exports.EMPTY_STRING_ARRAY = _exports.EMPTY_ARRAY = _exports.verifySteps = _exports.logStep = _exports.endTestSteps = _exports.beginTestSteps = _exports.debugToString = _exports._WeakSet = _exports.assign = _exports.SERIALIZATION_FIRST_NODE_STRING = _exports.Stack = _exports.LOGGER = _exports.LOCAL_LOGGER = void 0;\n var EMPTY_ARRAY = Object.freeze([]);\n _exports.EMPTY_ARRAY = EMPTY_ARRAY;\n\n function emptyArray() {\n return EMPTY_ARRAY;\n }\n\n var EMPTY_STRING_ARRAY = emptyArray();\n _exports.EMPTY_STRING_ARRAY = EMPTY_STRING_ARRAY;\n var EMPTY_NUMBER_ARRAY = emptyArray();\n /**\n * This function returns `true` if the input array is the special empty array sentinel,\n * which is sometimes used for optimizations.\n */\n\n _exports.EMPTY_NUMBER_ARRAY = EMPTY_NUMBER_ARRAY;\n\n function isEmptyArray(input) {\n return input === EMPTY_ARRAY;\n } // import Logger from './logger';\n\n\n function debugAssert$$1(test, msg) {\n // if (!alreadyWarned) {\n // alreadyWarned = true;\n // Logger.warn(\"Don't leave debug assertions on in public builds\");\n // }\n if (!test) {\n throw new Error(msg || 'assertion failure');\n }\n }\n\n function deprecate$$1(desc) {\n LOCAL_LOGGER.warn(\"DEPRECATION: \" + desc);\n }\n\n function dict() {\n return Object.create(null);\n }\n\n function isDict(u) {\n return u !== null && u !== undefined;\n }\n\n function isObject(u) {\n return typeof u === 'function' || typeof u === 'object' && u !== null;\n }\n\n var StackImpl = /*#__PURE__*/function () {\n function StackImpl(values) {\n if (values === void 0) {\n values = [];\n }\n\n this.current = null;\n this.stack = values;\n }\n\n var _proto = StackImpl.prototype;\n\n _proto.push = function push(item) {\n this.current = item;\n this.stack.push(item);\n };\n\n _proto.pop = function pop() {\n var item = this.stack.pop();\n var len = this.stack.length;\n this.current = len === 0 ? null : this.stack[len - 1];\n return item === undefined ? null : item;\n };\n\n _proto.nth = function nth(from) {\n var len = this.stack.length;\n return len < from ? null : this.stack[len - from];\n };\n\n _proto.isEmpty = function isEmpty() {\n return this.stack.length === 0;\n };\n\n _proto.toArray = function toArray() {\n return this.stack;\n };\n\n (0, _emberBabel.createClass)(StackImpl, [{\n key: \"size\",\n get: function get() {\n return this.stack.length;\n }\n }]);\n return StackImpl;\n }();\n\n _exports.Stack = StackImpl;\n\n function clearElement(parent) {\n var current = parent.firstChild;\n\n while (current) {\n var next = current.nextSibling;\n parent.removeChild(current);\n current = next;\n }\n }\n\n var SERIALIZATION_FIRST_NODE_STRING = '%+b:0%';\n _exports.SERIALIZATION_FIRST_NODE_STRING = SERIALIZATION_FIRST_NODE_STRING;\n\n function isSerializationFirstNode(node) {\n return node.nodeValue === SERIALIZATION_FIRST_NODE_STRING;\n }\n\n var _a;\n\n var objKeys = Object.keys;\n\n function assignFn(obj) {\n for (var i = 1; i < arguments.length; i++) {\n var assignment = arguments[i];\n if (assignment === null || typeof assignment !== 'object') continue;\n\n var _keys = objKeys(assignment);\n\n for (var j = 0; j < _keys.length; j++) {\n var key = _keys[j];\n obj[key] = assignment[key];\n }\n }\n\n return obj;\n }\n\n var assign = (_a = Object.assign) !== null && _a !== void 0 ? _a : assignFn;\n _exports.assign = assign;\n\n function fillNulls(count) {\n var arr = new Array(count);\n\n for (var i = 0; i < count; i++) {\n arr[i] = null;\n }\n\n return arr;\n }\n\n function values(obj) {\n var vals = [];\n\n for (var key in obj) {\n vals.push(obj[key]);\n }\n\n return vals;\n }\n /**\n Strongly hint runtimes to intern the provided string.\n \n When do I need to use this function?\n \n For the most part, never. Pre-mature optimization is bad, and often the\n runtime does exactly what you need it to, and more often the trade-off isn't\n worth it.\n \n Why?\n \n Runtimes store strings in at least 2 different representations:\n Ropes and Symbols (interned strings). The Rope provides a memory efficient\n data-structure for strings created from concatenation or some other string\n manipulation like splitting.\n \n Unfortunately checking equality of different ropes can be quite costly as\n runtimes must resort to clever string comparison algorithms. These\n algorithms typically cost in proportion to the length of the string.\n Luckily, this is where the Symbols (interned strings) shine. As Symbols are\n unique by their string content, equality checks can be done by pointer\n comparison.\n \n How do I know if my string is a rope or symbol?\n \n Typically (warning general sweeping statement, but truthy in runtimes at\n present) static strings created as part of the JS source are interned.\n Strings often used for comparisons can be interned at runtime if some\n criteria are met. One of these criteria can be the size of the entire rope.\n For example, in chrome 38 a rope longer then 12 characters will not\n intern, nor will segments of that rope.\n \n Some numbers: http://jsperf.com/eval-vs-keys/8\n \n Known Trick™\n \n @private\n @return {String} interned version of the provided string\n */\n\n\n function intern(str) {\n var obj = {};\n obj[str] = 1;\n\n for (var key in obj) {\n if (key === str) {\n return key;\n }\n }\n\n return str;\n }\n\n var HAS_NATIVE_PROXY = typeof Proxy === 'function';\n _exports.HAS_NATIVE_PROXY = HAS_NATIVE_PROXY;\n\n var HAS_NATIVE_SYMBOL = function () {\n if (typeof Symbol !== 'function') {\n return false;\n } // eslint-disable-next-line symbol-description\n\n\n return typeof Symbol() === 'symbol';\n }();\n\n _exports.HAS_NATIVE_SYMBOL = HAS_NATIVE_SYMBOL;\n\n function keys(obj) {\n return Object.keys(obj);\n }\n\n function unwrap(val) {\n if (val === null || val === undefined) throw new Error(\"Expected value to be present\");\n return val;\n }\n\n function expect(val, message) {\n if (val === null || val === undefined) throw new Error(message);\n return val;\n }\n\n function unreachable(message) {\n if (message === void 0) {\n message = 'unreachable';\n }\n\n return new Error(message);\n }\n\n function exhausted(value) {\n throw new Error(\"Exhausted \" + value);\n }\n\n var tuple = function tuple() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return args;\n };\n\n _exports.tuple = tuple;\n\n function enumerableSymbol(key) {\n return intern(\"__\" + key + Math.floor(Math.random() * Date.now()) + \"__\");\n }\n\n var symbol = HAS_NATIVE_SYMBOL ? Symbol : enumerableSymbol;\n _exports.symbol = symbol;\n\n function strip(strings) {\n var out = '';\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n for (var i = 0; i < strings.length; i++) {\n var string = strings[i];\n var dynamic = args[i] !== undefined ? String(args[i]) : '';\n out += \"\" + string + dynamic;\n }\n\n var lines = out.split('\\n');\n\n while (lines.length && lines[0].match(/^\\s*$/)) {\n lines.shift();\n }\n\n while (lines.length && lines[lines.length - 1].match(/^\\s*$/)) {\n lines.pop();\n }\n\n var min = Infinity;\n\n for (var _iterator = (0, _emberBabel.createForOfIteratorHelperLoose)(lines), _step; !(_step = _iterator()).done;) {\n var _line2 = _step.value;\n\n var _leading = _line2.match(/^\\s*/)[0].length;\n\n min = Math.min(min, _leading);\n }\n\n var stripped = [];\n\n for (var _iterator2 = (0, _emberBabel.createForOfIteratorHelperLoose)(lines), _step2; !(_step2 = _iterator2()).done;) {\n var _line3 = _step2.value;\n stripped.push(_line3.slice(min));\n }\n\n return stripped.join('\\n');\n }\n\n function isHandle(value) {\n return value >= 0;\n }\n\n function isNonPrimitiveHandle(value) {\n return value > 3\n /* ENCODED_UNDEFINED_HANDLE */\n ;\n }\n\n function constants() {\n for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return [false, true, null, undefined].concat(values);\n }\n\n function isSmallInt(value) {\n return value % 1 === 0 && value <= 536870911\n /* MAX_INT */\n && value >= -536870912\n /* MIN_INT */\n ;\n }\n\n function encodeNegative(num) {\n return num & -536870913\n /* SIGN_BIT */\n ;\n }\n\n function decodeNegative(num) {\n return num | ~-536870913\n /* SIGN_BIT */\n ;\n }\n\n function encodePositive(num) {\n return ~num;\n }\n\n function decodePositive(num) {\n return ~num;\n }\n\n function encodeHandle(num) {\n return num;\n }\n\n function decodeHandle(num) {\n return num;\n }\n\n function encodeImmediate(num) {\n num |= 0;\n return num < 0 ? encodeNegative(num) : encodePositive(num);\n }\n\n function decodeImmediate(num) {\n num |= 0;\n return num > -536870913\n /* SIGN_BIT */\n ? decodePositive(num) : decodeNegative(num);\n } // Warm\n\n\n [1, -1].forEach(function (x) {\n return decodeImmediate(encodeImmediate(x));\n });\n\n function unwrapHandle(handle) {\n if (typeof handle === 'number') {\n return handle;\n } else {\n var error = handle.errors[0];\n throw new Error(\"Compile Error: \" + error.problem + \" @ \" + error.span.start + \"..\" + error.span.end);\n }\n }\n\n function unwrapTemplate(template) {\n if (template.result === 'error') {\n throw new Error(\"Compile Error: \" + template.problem + \" @ \" + template.span.start + \"..\" + template.span.end);\n }\n\n return template;\n }\n\n function extractHandle(handle) {\n if (typeof handle === 'number') {\n return handle;\n } else {\n return handle.handle;\n }\n }\n\n function isOkHandle(handle) {\n return typeof handle === 'number';\n }\n\n function isErrHandle(handle) {\n return typeof handle === 'number';\n }\n\n var weakSet = typeof WeakSet === 'function' ? WeakSet : /*#__PURE__*/function () {\n function WeakSetPolyFill() {\n this._map = new WeakMap();\n }\n\n var _proto2 = WeakSetPolyFill.prototype;\n\n _proto2.add = function add(val) {\n this._map.set(val, true);\n\n return this;\n };\n\n _proto2.delete = function _delete(val) {\n return this._map.delete(val);\n };\n\n _proto2.has = function has(val) {\n return this._map.has(val);\n };\n\n return WeakSetPolyFill;\n }();\n _exports._WeakSet = weakSet;\n\n function castToSimple(node) {\n if (isDocument(node)) {\n return node;\n } else if (isElement(node)) {\n return node;\n } else {\n return node;\n }\n }\n\n function castToBrowser(node, sugaryCheck) {\n if (node === null || node === undefined) {\n return null;\n }\n\n if (typeof document === undefined) {\n throw new Error('Attempted to cast to a browser node in a non-browser context');\n }\n\n if (isDocument(node)) {\n return node;\n }\n\n if (node.ownerDocument !== document) {\n throw new Error('Attempted to cast to a browser node with a node that was not created from this document');\n }\n\n return checkNode(node, sugaryCheck);\n }\n\n function checkError(from, check) {\n return new Error(\"cannot cast a \" + from + \" into \" + check);\n }\n\n function isDocument(node) {\n return node.nodeType === 9\n /* DOCUMENT_NODE */\n ;\n }\n\n function isElement(node) {\n return node.nodeType === 1\n /* ELEMENT_NODE */\n ;\n }\n\n function checkNode(node, check) {\n var isMatch = false;\n\n if (node !== null) {\n if (typeof check === 'string') {\n isMatch = stringCheckNode(node, check);\n } else if (Array.isArray(check)) {\n isMatch = check.some(function (c) {\n return stringCheckNode(node, c);\n });\n } else {\n throw unreachable();\n }\n }\n\n if (isMatch) {\n return node;\n } else {\n throw checkError(\"SimpleElement(\" + node + \")\", check);\n }\n }\n\n function stringCheckNode(node, check) {\n switch (check) {\n case 'NODE':\n return true;\n\n case 'HTML':\n return node instanceof HTMLElement;\n\n case 'SVG':\n return node instanceof SVGElement;\n\n case 'ELEMENT':\n return node instanceof Element;\n\n default:\n if (check.toUpperCase() === check) {\n throw new Error(\"BUG: this code is missing handling for a generic node type\");\n }\n\n return node instanceof Element && node.tagName.toLowerCase() === check;\n }\n }\n\n function isPresent(list) {\n return list.length > 0;\n }\n\n function ifPresent(list, ifPresent, otherwise) {\n if (isPresent(list)) {\n return ifPresent(list);\n } else {\n return otherwise();\n }\n }\n\n function toPresentOption(list) {\n if (isPresent(list)) {\n return list;\n } else {\n return null;\n }\n }\n\n function assertPresent(list, message) {\n if (message === void 0) {\n message = \"unexpected empty list\";\n }\n\n if (!isPresent(list)) {\n throw new Error(message);\n }\n }\n\n function mapPresent(list, callback) {\n if (list === null) {\n return null;\n }\n\n var out = [];\n\n for (var _iterator3 = (0, _emberBabel.createForOfIteratorHelperLoose)(list), _step3; !(_step3 = _iterator3()).done;) {\n var _item = _step3.value;\n out.push(callback(_item));\n }\n\n return out;\n }\n\n function buildUntouchableThis(source) {\n var context = null;\n\n if (true\n /* DEBUG */\n && HAS_NATIVE_PROXY) {\n var assertOnProperty = function assertOnProperty(property) {\n throw new Error(\"You accessed `this.\" + String(property) + \"` from a function passed to the \" + source + \", but the function itself was not bound to a valid `this` context. Consider updating to use a bound function (for instance, use an arrow function, `() => {}`).\");\n };\n\n context = new Proxy({}, {\n get: function get(_target, property) {\n assertOnProperty(property);\n },\n set: function set(_target, property) {\n assertOnProperty(property);\n return false;\n },\n has: function has(_target, property) {\n assertOnProperty(property);\n return false;\n }\n });\n }\n\n return context;\n }\n\n var debugToString;\n\n if (true\n /* DEBUG */\n ) {\n var getFunctionName = function getFunctionName(fn) {\n var functionName = fn.name;\n\n if (functionName === undefined) {\n var match = Function.prototype.toString.call(fn).match(/function (\\w+)\\s*\\(/);\n functionName = match && match[1] || '';\n }\n\n return functionName.replace(/^bound /, '');\n };\n\n var getObjectName = function getObjectName(obj) {\n var name;\n var className;\n\n if (obj.constructor && typeof obj.constructor === 'function') {\n className = getFunctionName(obj.constructor);\n }\n\n if ('toString' in obj && obj.toString !== Object.prototype.toString && obj.toString !== Function.prototype.toString) {\n name = obj.toString();\n } // If the class has a decent looking name, and the `toString` is one of the\n // default Ember toStrings, replace the constructor portion of the toString\n // with the class name. We check the length of the class name to prevent doing\n // this when the value is minified.\n\n\n if (name && name.match(/<.*:ember\\d+>/) && className && className[0] !== '_' && className.length > 2 && className !== 'Class') {\n return name.replace(/<.*:/, \"<\" + className + \":\");\n }\n\n return name || className;\n };\n\n var getPrimitiveName = function getPrimitiveName(value) {\n return String(value);\n };\n\n debugToString = function debugToString(value) {\n if (typeof value === 'function') {\n return getFunctionName(value) || \"(unknown function)\";\n } else if (typeof value === 'object' && value !== null) {\n return getObjectName(value) || \"(unknown object)\";\n } else {\n return getPrimitiveName(value);\n }\n };\n }\n\n var debugToString$1 = debugToString;\n _exports.debugToString = debugToString$1;\n var beginTestSteps;\n _exports.beginTestSteps = beginTestSteps;\n var endTestSteps;\n _exports.endTestSteps = endTestSteps;\n var verifySteps;\n _exports.verifySteps = verifySteps;\n var logStep;\n /**\n * This constant exists to make it easier to differentiate normal logs from\n * errant console.logs. LOCAL_LOGGER should only be used inside a\n * LOCAL_SHOULD_LOG check.\n *\n * It does not alleviate the need to check LOCAL_SHOULD_LOG, which is used\n * for stripping.\n */\n\n _exports.logStep = logStep;\n var LOCAL_LOGGER = console;\n /**\n * This constant exists to make it easier to differentiate normal logs from\n * errant console.logs. LOGGER can be used outside of LOCAL_SHOULD_LOG checks,\n * and is meant to be used in the rare situation where a console.* call is\n * actually appropriate.\n */\n\n _exports.LOCAL_LOGGER = LOCAL_LOGGER;\n var LOGGER = console;\n _exports.LOGGER = LOGGER;\n\n function assertNever(value, desc) {\n if (desc === void 0) {\n desc = 'unexpected unreachable branch';\n }\n\n LOGGER.log('unreachable', value);\n LOGGER.log(desc + \" :: \" + JSON.stringify(value) + \" (\" + value + \")\");\n throw new Error(\"code reached unreachable\");\n }\n});","define(\"@glimmer/wire-format\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.is = is;\n _exports.isAttribute = isAttribute;\n _exports.isStringLiteral = isStringLiteral;\n _exports.getStringFromValue = getStringFromValue;\n _exports.isArgument = isArgument;\n _exports.isHelper = isHelper;\n _exports.isGet = _exports.isFlushElement = void 0;\n\n function is(variant) {\n return function (value) {\n return Array.isArray(value) && value[0] === variant;\n };\n } // Statements\n\n\n var isFlushElement = is(12\n /* FlushElement */\n );\n _exports.isFlushElement = isFlushElement;\n\n function isAttribute(val) {\n return val[0] === 14\n /* StaticAttr */\n || val[0] === 15\n /* DynamicAttr */\n || val[0] === 22\n /* TrustingDynamicAttr */\n || val[0] === 16\n /* ComponentAttr */\n || val[0] === 24\n /* StaticComponentAttr */\n || val[0] === 23\n /* TrustingComponentAttr */\n || val[0] === 17\n /* AttrSplat */\n || val[0] === 4\n /* Modifier */\n ;\n }\n\n function isStringLiteral(expr) {\n return typeof expr === 'string';\n }\n\n function getStringFromValue(expr) {\n return expr;\n }\n\n function isArgument(val) {\n return val[0] === 21\n /* StaticArg */\n || val[0] === 20\n /* DynamicArg */\n ;\n }\n\n function isHelper(expr) {\n return Array.isArray(expr) && expr[0] === 28\n /* Call */\n ;\n } // Expressions\n\n\n var isGet = is(30\n /* GetSymbol */\n );\n _exports.isGet = isGet;\n});","define(\"@handlebars/parser/index\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.Visitor = Visitor;\n _exports.WhitespaceControl = WhitespaceControl;\n _exports.Exception = Exception;\n _exports.print = print;\n _exports.PrintVisitor = PrintVisitor;\n _exports.parse = parse;\n _exports.parseWithoutProcessing = parseWithoutProcessing;\n _exports.parser = void 0;\n var errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];\n\n function Exception(message, node) {\n var loc = node && node.loc,\n line,\n endLineNumber,\n column,\n endColumn;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n message += ' - ' + line + ':' + column;\n }\n\n var tmp = Error.prototype.constructor.call(this, message); // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n /* istanbul ignore else */\n\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber; // Work around issue under safari where we can't directly set the column value\n\n /* istanbul ignore next */\n\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n }\n\n Exception.prototype = new Error();\n\n function Visitor() {\n this.parents = [];\n }\n\n Visitor.prototype = {\n constructor: Visitor,\n mutating: false,\n // Visits a given value. If mutating, will replace the value if necessary.\n acceptKey: function acceptKey(node, name) {\n var value = this.accept(node[name]);\n\n if (this.mutating) {\n // Hacky sanity check: This may have a few false positives for type for the helper\n // methods but will generally do the right thing without a lot of overhead.\n if (value && !Visitor.prototype[value.type]) {\n throw new Exception('Unexpected node type \"' + value.type + '\" found when accepting ' + name + ' on ' + node.type);\n }\n\n node[name] = value;\n }\n },\n // Performs an accept operation with added sanity check to ensure\n // required keys are not removed.\n acceptRequired: function acceptRequired(node, name) {\n this.acceptKey(node, name);\n\n if (!node[name]) {\n throw new Exception(node.type + ' requires ' + name);\n }\n },\n // Traverses a given array. If mutating, empty respnses will be removed\n // for child elements.\n acceptArray: function acceptArray(array) {\n for (var i = 0, l = array.length; i < l; i++) {\n this.acceptKey(array, i);\n\n if (!array[i]) {\n array.splice(i, 1);\n i--;\n l--;\n }\n }\n },\n accept: function accept(object) {\n if (!object) {\n return;\n }\n /* istanbul ignore next: Sanity code */\n\n\n if (!this[object.type]) {\n throw new Exception('Unknown type: ' + object.type, object);\n }\n\n if (this.current) {\n this.parents.unshift(this.current);\n }\n\n this.current = object;\n var ret = this[object.type](object);\n this.current = this.parents.shift();\n\n if (!this.mutating || ret) {\n return ret;\n } else if (ret !== false) {\n return object;\n }\n },\n Program: function Program(program) {\n this.acceptArray(program.body);\n },\n MustacheStatement: visitSubExpression,\n Decorator: visitSubExpression,\n BlockStatement: visitBlock,\n DecoratorBlock: visitBlock,\n PartialStatement: visitPartial,\n PartialBlockStatement: function PartialBlockStatement(partial) {\n visitPartial.call(this, partial);\n this.acceptKey(partial, 'program');\n },\n ContentStatement: function ContentStatement()\n /* content */\n {},\n CommentStatement: function CommentStatement()\n /* comment */\n {},\n SubExpression: visitSubExpression,\n PathExpression: function PathExpression()\n /* path */\n {},\n StringLiteral: function StringLiteral()\n /* string */\n {},\n NumberLiteral: function NumberLiteral()\n /* number */\n {},\n BooleanLiteral: function BooleanLiteral()\n /* bool */\n {},\n UndefinedLiteral: function UndefinedLiteral()\n /* literal */\n {},\n NullLiteral: function NullLiteral()\n /* literal */\n {},\n Hash: function Hash(hash) {\n this.acceptArray(hash.pairs);\n },\n HashPair: function HashPair(pair) {\n this.acceptRequired(pair, 'value');\n }\n };\n\n function visitSubExpression(mustache) {\n this.acceptRequired(mustache, 'path');\n this.acceptArray(mustache.params);\n this.acceptKey(mustache, 'hash');\n }\n\n function visitBlock(block) {\n visitSubExpression.call(this, block);\n this.acceptKey(block, 'program');\n this.acceptKey(block, 'inverse');\n }\n\n function visitPartial(partial) {\n this.acceptRequired(partial, 'name');\n this.acceptArray(partial.params);\n this.acceptKey(partial, 'hash');\n }\n\n function WhitespaceControl(options) {\n if (options === void 0) {\n options = {};\n }\n\n this.options = options;\n }\n\n WhitespaceControl.prototype = new Visitor();\n\n WhitespaceControl.prototype.Program = function (program) {\n var doStandalone = !this.options.ignoreStandalone;\n var isRoot = !this.isRootSeen;\n this.isRootSeen = true;\n var body = program.body;\n\n for (var i = 0, l = body.length; i < l; i++) {\n var current = body[i],\n strip = this.accept(current);\n\n if (!strip) {\n continue;\n }\n\n var _isPrevWhitespace = isPrevWhitespace(body, i, isRoot),\n _isNextWhitespace = isNextWhitespace(body, i, isRoot),\n openStandalone = strip.openStandalone && _isPrevWhitespace,\n closeStandalone = strip.closeStandalone && _isNextWhitespace,\n inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;\n\n if (strip.close) {\n omitRight(body, i, true);\n }\n\n if (strip.open) {\n omitLeft(body, i, true);\n }\n\n if (doStandalone && inlineStandalone) {\n omitRight(body, i);\n\n if (omitLeft(body, i)) {\n // If we are on a standalone node, save the indent info for partials\n if (current.type === 'PartialStatement') {\n // Pull out the whitespace from the final line\n current.indent = /([ \\t]+$)/.exec(body[i - 1].original)[1];\n }\n }\n }\n\n if (doStandalone && openStandalone) {\n omitRight((current.program || current.inverse).body); // Strip out the previous content node if it's whitespace only\n\n omitLeft(body, i);\n }\n\n if (doStandalone && closeStandalone) {\n // Always strip the next node\n omitRight(body, i);\n omitLeft((current.inverse || current.program).body);\n }\n }\n\n return program;\n };\n\n WhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function (block) {\n this.accept(block.program);\n this.accept(block.inverse); // Find the inverse program that is involed with whitespace stripping.\n\n var program = block.program || block.inverse,\n inverse = block.program && block.inverse,\n firstInverse = inverse,\n lastInverse = inverse;\n\n if (inverse && inverse.chained) {\n firstInverse = inverse.body[0].program; // Walk the inverse chain to find the last inverse that is actually in the chain.\n\n while (lastInverse.chained) {\n lastInverse = lastInverse.body[lastInverse.body.length - 1].program;\n }\n }\n\n var strip = {\n open: block.openStrip.open,\n close: block.closeStrip.close,\n // Determine the standalone candiacy. Basically flag our content as being possibly standalone\n // so our parent can determine if we actually are standalone\n openStandalone: isNextWhitespace(program.body),\n closeStandalone: isPrevWhitespace((firstInverse || program).body)\n };\n\n if (block.openStrip.close) {\n omitRight(program.body, null, true);\n }\n\n if (inverse) {\n var inverseStrip = block.inverseStrip;\n\n if (inverseStrip.open) {\n omitLeft(program.body, null, true);\n }\n\n if (inverseStrip.close) {\n omitRight(firstInverse.body, null, true);\n }\n\n if (block.closeStrip.open) {\n omitLeft(lastInverse.body, null, true);\n } // Find standalone else statments\n\n\n if (!this.options.ignoreStandalone && isPrevWhitespace(program.body) && isNextWhitespace(firstInverse.body)) {\n omitLeft(program.body);\n omitRight(firstInverse.body);\n }\n } else if (block.closeStrip.open) {\n omitLeft(program.body, null, true);\n }\n\n return strip;\n };\n\n WhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function (mustache) {\n return mustache.strip;\n };\n\n WhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function (node) {\n /* istanbul ignore next */\n var strip = node.strip || {};\n return {\n inlineStandalone: true,\n open: strip.open,\n close: strip.close\n };\n };\n\n function isPrevWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = body.length;\n } // Nodes that end with newlines are considered whitespace (but are special\n // cased for strip operations)\n\n\n var prev = body[i - 1],\n sibling = body[i - 2];\n\n if (!prev) {\n return isRoot;\n }\n\n if (prev.type === 'ContentStatement') {\n return (sibling || !isRoot ? /\\r?\\n\\s*?$/ : /(^|\\r?\\n)\\s*?$/).test(prev.original);\n }\n }\n\n function isNextWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = -1;\n }\n\n var next = body[i + 1],\n sibling = body[i + 2];\n\n if (!next) {\n return isRoot;\n }\n\n if (next.type === 'ContentStatement') {\n return (sibling || !isRoot ? /^\\s*?\\r?\\n/ : /^\\s*?(\\r?\\n|$)/).test(next.original);\n }\n } // Marks the node to the right of the position as omitted.\n // I.e. {{foo}}' ' will mark the ' ' node as omitted.\n //\n // If i is undefined, then the first child will be marked as such.\n //\n // If multiple is truthy then all whitespace will be stripped out until non-whitespace\n // content is met.\n\n\n function omitRight(body, i, multiple) {\n var current = body[i == null ? 0 : i + 1];\n\n if (!current || current.type !== 'ContentStatement' || !multiple && current.rightStripped) {\n return;\n }\n\n var original = current.value;\n current.value = current.value.replace(multiple ? /^\\s+/ : /^[ \\t]*\\r?\\n?/, '');\n current.rightStripped = current.value !== original;\n } // Marks the node to the left of the position as omitted.\n // I.e. ' '{{foo}} will mark the ' ' node as omitted.\n //\n // If i is undefined then the last child will be marked as such.\n //\n // If multiple is truthy then all whitespace will be stripped out until non-whitespace\n // content is met.\n\n\n function omitLeft(body, i, multiple) {\n var current = body[i == null ? body.length - 1 : i - 1];\n\n if (!current || current.type !== 'ContentStatement' || !multiple && current.leftStripped) {\n return;\n } // We omit the last node if it's whitespace only and not preceded by a non-content node.\n\n\n var original = current.value;\n current.value = current.value.replace(multiple ? /\\s+$/ : /[ \\t]+$/, '');\n current.leftStripped = current.value !== original;\n return current.leftStripped;\n }\n /* parser generated by jison 0.4.18 */\n\n /*\n Returns a Parser object of the following structure:\n \n Parser: {\n yy: {}\n }\n \n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n \n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n \n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n \n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n \n \n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n \n \n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n */\n\n\n var parser = function () {\n var o = function o(k, v, _o, l) {\n for (_o = _o || {}, l = k.length; l--; _o[k[l]] = v) {\n ;\n }\n\n return _o;\n },\n $V0 = [2, 44],\n $V1 = [1, 20],\n $V2 = [5, 14, 15, 19, 29, 34, 39, 44, 47, 48, 52, 56, 60],\n $V3 = [1, 35],\n $V4 = [1, 38],\n $V5 = [1, 30],\n $V6 = [1, 31],\n $V7 = [1, 32],\n $V8 = [1, 33],\n $V9 = [1, 34],\n $Va = [1, 37],\n $Vb = [14, 15, 19, 29, 34, 39, 44, 47, 48, 52, 56, 60],\n $Vc = [14, 15, 19, 29, 34, 44, 47, 48, 52, 56, 60],\n $Vd = [15, 18],\n $Ve = [14, 15, 19, 29, 34, 47, 48, 52, 56, 60],\n $Vf = [33, 64, 71, 79, 80, 81, 82, 83, 84],\n $Vg = [23, 33, 55, 64, 67, 71, 74, 79, 80, 81, 82, 83, 84],\n $Vh = [1, 51],\n $Vi = [23, 33, 55, 64, 67, 71, 74, 79, 80, 81, 82, 83, 84, 86],\n $Vj = [2, 43],\n $Vk = [55, 64, 71, 79, 80, 81, 82, 83, 84],\n $Vl = [1, 58],\n $Vm = [1, 59],\n $Vn = [1, 66],\n $Vo = [33, 64, 71, 74, 79, 80, 81, 82, 83, 84],\n $Vp = [23, 64, 71, 79, 80, 81, 82, 83, 84],\n $Vq = [1, 76],\n $Vr = [64, 67, 71, 79, 80, 81, 82, 83, 84],\n $Vs = [33, 74],\n $Vt = [23, 33, 55, 67, 71, 74],\n $Vu = [1, 106],\n $Vv = [1, 118],\n $Vw = [71, 76];\n\n var parser = {\n trace: function trace() {},\n yy: {},\n symbols_: {\n \"error\": 2,\n \"root\": 3,\n \"program\": 4,\n \"EOF\": 5,\n \"program_repetition0\": 6,\n \"statement\": 7,\n \"mustache\": 8,\n \"block\": 9,\n \"rawBlock\": 10,\n \"partial\": 11,\n \"partialBlock\": 12,\n \"content\": 13,\n \"COMMENT\": 14,\n \"CONTENT\": 15,\n \"openRawBlock\": 16,\n \"rawBlock_repetition0\": 17,\n \"END_RAW_BLOCK\": 18,\n \"OPEN_RAW_BLOCK\": 19,\n \"helperName\": 20,\n \"openRawBlock_repetition0\": 21,\n \"openRawBlock_option0\": 22,\n \"CLOSE_RAW_BLOCK\": 23,\n \"openBlock\": 24,\n \"block_option0\": 25,\n \"closeBlock\": 26,\n \"openInverse\": 27,\n \"block_option1\": 28,\n \"OPEN_BLOCK\": 29,\n \"openBlock_repetition0\": 30,\n \"openBlock_option0\": 31,\n \"openBlock_option1\": 32,\n \"CLOSE\": 33,\n \"OPEN_INVERSE\": 34,\n \"openInverse_repetition0\": 35,\n \"openInverse_option0\": 36,\n \"openInverse_option1\": 37,\n \"openInverseChain\": 38,\n \"OPEN_INVERSE_CHAIN\": 39,\n \"openInverseChain_repetition0\": 40,\n \"openInverseChain_option0\": 41,\n \"openInverseChain_option1\": 42,\n \"inverseAndProgram\": 43,\n \"INVERSE\": 44,\n \"inverseChain\": 45,\n \"inverseChain_option0\": 46,\n \"OPEN_ENDBLOCK\": 47,\n \"OPEN\": 48,\n \"expr\": 49,\n \"mustache_repetition0\": 50,\n \"mustache_option0\": 51,\n \"OPEN_UNESCAPED\": 52,\n \"mustache_repetition1\": 53,\n \"mustache_option1\": 54,\n \"CLOSE_UNESCAPED\": 55,\n \"OPEN_PARTIAL\": 56,\n \"partial_repetition0\": 57,\n \"partial_option0\": 58,\n \"openPartialBlock\": 59,\n \"OPEN_PARTIAL_BLOCK\": 60,\n \"openPartialBlock_repetition0\": 61,\n \"openPartialBlock_option0\": 62,\n \"sexpr\": 63,\n \"OPEN_SEXPR\": 64,\n \"sexpr_repetition0\": 65,\n \"sexpr_option0\": 66,\n \"CLOSE_SEXPR\": 67,\n \"hash\": 68,\n \"hash_repetition_plus0\": 69,\n \"hashSegment\": 70,\n \"ID\": 71,\n \"EQUALS\": 72,\n \"blockParams\": 73,\n \"OPEN_BLOCK_PARAMS\": 74,\n \"blockParams_repetition_plus0\": 75,\n \"CLOSE_BLOCK_PARAMS\": 76,\n \"path\": 77,\n \"dataName\": 78,\n \"STRING\": 79,\n \"NUMBER\": 80,\n \"BOOLEAN\": 81,\n \"UNDEFINED\": 82,\n \"NULL\": 83,\n \"DATA\": 84,\n \"pathSegments\": 85,\n \"SEP\": 86,\n \"$accept\": 0,\n \"$end\": 1\n },\n terminals_: {\n 2: \"error\",\n 5: \"EOF\",\n 14: \"COMMENT\",\n 15: \"CONTENT\",\n 18: \"END_RAW_BLOCK\",\n 19: \"OPEN_RAW_BLOCK\",\n 23: \"CLOSE_RAW_BLOCK\",\n 29: \"OPEN_BLOCK\",\n 33: \"CLOSE\",\n 34: \"OPEN_INVERSE\",\n 39: \"OPEN_INVERSE_CHAIN\",\n 44: \"INVERSE\",\n 47: \"OPEN_ENDBLOCK\",\n 48: \"OPEN\",\n 52: \"OPEN_UNESCAPED\",\n 55: \"CLOSE_UNESCAPED\",\n 56: \"OPEN_PARTIAL\",\n 60: \"OPEN_PARTIAL_BLOCK\",\n 64: \"OPEN_SEXPR\",\n 67: \"CLOSE_SEXPR\",\n 71: \"ID\",\n 72: \"EQUALS\",\n 74: \"OPEN_BLOCK_PARAMS\",\n 76: \"CLOSE_BLOCK_PARAMS\",\n 79: \"STRING\",\n 80: \"NUMBER\",\n 81: \"BOOLEAN\",\n 82: \"UNDEFINED\",\n 83: \"NULL\",\n 84: \"DATA\",\n 86: \"SEP\"\n },\n productions_: [0, [3, 2], [4, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [13, 1], [10, 3], [16, 5], [9, 4], [9, 4], [24, 6], [27, 6], [38, 6], [43, 2], [45, 3], [45, 1], [26, 3], [8, 5], [8, 5], [11, 5], [12, 3], [59, 5], [49, 1], [49, 1], [63, 5], [68, 1], [70, 3], [73, 3], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [78, 2], [77, 1], [85, 3], [85, 1], [6, 0], [6, 2], [17, 0], [17, 2], [21, 0], [21, 2], [22, 0], [22, 1], [25, 0], [25, 1], [28, 0], [28, 1], [30, 0], [30, 2], [31, 0], [31, 1], [32, 0], [32, 1], [35, 0], [35, 2], [36, 0], [36, 1], [37, 0], [37, 1], [40, 0], [40, 2], [41, 0], [41, 1], [42, 0], [42, 1], [46, 0], [46, 1], [50, 0], [50, 2], [51, 0], [51, 1], [53, 0], [53, 2], [54, 0], [54, 1], [57, 0], [57, 2], [58, 0], [58, 1], [61, 0], [61, 2], [62, 0], [62, 1], [65, 0], [65, 2], [66, 0], [66, 1], [69, 1], [69, 2], [75, 1], [75, 2]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate\n /* action[1] */\n , $$\n /* vstack */\n , _$\n /* lstack */\n ) {\n /* this == yyval */\n var $0 = $$.length - 1;\n\n switch (yystate) {\n case 1:\n return $$[$0 - 1];\n break;\n\n case 2:\n this.$ = yy.prepareProgram($$[$0]);\n break;\n\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n case 8:\n case 20:\n case 27:\n case 28:\n case 33:\n case 34:\n this.$ = $$[$0];\n break;\n\n case 9:\n this.$ = {\n type: 'CommentStatement',\n value: yy.stripComment($$[$0]),\n strip: yy.stripFlags($$[$0], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 10:\n this.$ = {\n type: 'ContentStatement',\n original: $$[$0],\n value: $$[$0],\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 11:\n this.$ = yy.prepareRawBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$);\n break;\n\n case 12:\n this.$ = {\n path: $$[$0 - 3],\n params: $$[$0 - 2],\n hash: $$[$0 - 1]\n };\n break;\n\n case 13:\n this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], false, this._$);\n break;\n\n case 14:\n this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], true, this._$);\n break;\n\n case 15:\n this.$ = {\n open: $$[$0 - 5],\n path: $$[$0 - 4],\n params: $$[$0 - 3],\n hash: $$[$0 - 2],\n blockParams: $$[$0 - 1],\n strip: yy.stripFlags($$[$0 - 5], $$[$0])\n };\n break;\n\n case 16:\n case 17:\n this.$ = {\n path: $$[$0 - 4],\n params: $$[$0 - 3],\n hash: $$[$0 - 2],\n blockParams: $$[$0 - 1],\n strip: yy.stripFlags($$[$0 - 5], $$[$0])\n };\n break;\n\n case 18:\n this.$ = {\n strip: yy.stripFlags($$[$0 - 1], $$[$0 - 1]),\n program: $$[$0]\n };\n break;\n\n case 19:\n var inverse = yy.prepareBlock($$[$0 - 2], $$[$0 - 1], $$[$0], $$[$0], false, this._$),\n program = yy.prepareProgram([inverse], $$[$0 - 1].loc);\n program.chained = true;\n this.$ = {\n strip: $$[$0 - 2].strip,\n program: program,\n chain: true\n };\n break;\n\n case 21:\n this.$ = {\n path: $$[$0 - 1],\n strip: yy.stripFlags($$[$0 - 2], $$[$0])\n };\n break;\n\n case 22:\n case 23:\n this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$);\n break;\n\n case 24:\n this.$ = {\n type: 'PartialStatement',\n name: $$[$0 - 3],\n params: $$[$0 - 2],\n hash: $$[$0 - 1],\n indent: '',\n strip: yy.stripFlags($$[$0 - 4], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 25:\n this.$ = yy.preparePartialBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$);\n break;\n\n case 26:\n this.$ = {\n path: $$[$0 - 3],\n params: $$[$0 - 2],\n hash: $$[$0 - 1],\n strip: yy.stripFlags($$[$0 - 4], $$[$0])\n };\n break;\n\n case 29:\n this.$ = {\n type: 'SubExpression',\n path: $$[$0 - 3],\n params: $$[$0 - 2],\n hash: $$[$0 - 1],\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 30:\n this.$ = {\n type: 'Hash',\n pairs: $$[$0],\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 31:\n this.$ = {\n type: 'HashPair',\n key: yy.id($$[$0 - 2]),\n value: $$[$0],\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 32:\n this.$ = yy.id($$[$0 - 1]);\n break;\n\n case 35:\n this.$ = {\n type: 'StringLiteral',\n value: $$[$0],\n original: $$[$0],\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 36:\n this.$ = {\n type: 'NumberLiteral',\n value: Number($$[$0]),\n original: Number($$[$0]),\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 37:\n this.$ = {\n type: 'BooleanLiteral',\n value: $$[$0] === 'true',\n original: $$[$0] === 'true',\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 38:\n this.$ = {\n type: 'UndefinedLiteral',\n original: undefined,\n value: undefined,\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 39:\n this.$ = {\n type: 'NullLiteral',\n original: null,\n value: null,\n loc: yy.locInfo(this._$)\n };\n break;\n\n case 40:\n this.$ = yy.preparePath(true, $$[$0], this._$);\n break;\n\n case 41:\n this.$ = yy.preparePath(false, $$[$0], this._$);\n break;\n\n case 42:\n $$[$0 - 2].push({\n part: yy.id($$[$0]),\n original: $$[$0],\n separator: $$[$0 - 1]\n });\n this.$ = $$[$0 - 2];\n break;\n\n case 43:\n this.$ = [{\n part: yy.id($$[$0]),\n original: $$[$0]\n }];\n break;\n\n case 44:\n case 46:\n case 48:\n case 56:\n case 62:\n case 68:\n case 76:\n case 80:\n case 84:\n case 88:\n case 92:\n this.$ = [];\n break;\n\n case 45:\n case 47:\n case 49:\n case 57:\n case 63:\n case 69:\n case 77:\n case 81:\n case 85:\n case 89:\n case 93:\n case 97:\n case 99:\n $$[$0 - 1].push($$[$0]);\n break;\n\n case 96:\n case 98:\n this.$ = [$$[$0]];\n break;\n }\n },\n table: [o([5, 14, 15, 19, 29, 34, 48, 52, 56, 60], $V0, {\n 3: 1,\n 4: 2,\n 6: 3\n }), {\n 1: [3]\n }, {\n 5: [1, 4]\n }, o([5, 39, 44, 47], [2, 2], {\n 7: 5,\n 8: 6,\n 9: 7,\n 10: 8,\n 11: 9,\n 12: 10,\n 13: 11,\n 24: 15,\n 27: 16,\n 16: 17,\n 59: 19,\n 14: [1, 12],\n 15: $V1,\n 19: [1, 23],\n 29: [1, 21],\n 34: [1, 22],\n 48: [1, 13],\n 52: [1, 14],\n 56: [1, 18],\n 60: [1, 24]\n }), {\n 1: [2, 1]\n }, o($V2, [2, 45]), o($V2, [2, 3]), o($V2, [2, 4]), o($V2, [2, 5]), o($V2, [2, 6]), o($V2, [2, 7]), o($V2, [2, 8]), o($V2, [2, 9]), {\n 20: 26,\n 49: 25,\n 63: 27,\n 64: $V3,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, {\n 20: 26,\n 49: 39,\n 63: 27,\n 64: $V3,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, o($Vb, $V0, {\n 6: 3,\n 4: 40\n }), o($Vc, $V0, {\n 6: 3,\n 4: 41\n }), o($Vd, [2, 46], {\n 17: 42\n }), {\n 20: 26,\n 49: 43,\n 63: 27,\n 64: $V3,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, o($Ve, $V0, {\n 6: 3,\n 4: 44\n }), o([5, 14, 15, 18, 19, 29, 34, 39, 44, 47, 48, 52, 56, 60], [2, 10]), {\n 20: 45,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, {\n 20: 46,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, {\n 20: 47,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, {\n 20: 26,\n 49: 48,\n 63: 27,\n 64: $V3,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, o($Vf, [2, 76], {\n 50: 49\n }), o($Vg, [2, 27]), o($Vg, [2, 28]), o($Vg, [2, 33]), o($Vg, [2, 34]), o($Vg, [2, 35]), o($Vg, [2, 36]), o($Vg, [2, 37]), o($Vg, [2, 38]), o($Vg, [2, 39]), {\n 20: 26,\n 49: 50,\n 63: 27,\n 64: $V3,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, o($Vg, [2, 41], {\n 86: $Vh\n }), {\n 71: $V4,\n 85: 52\n }, o($Vi, $Vj), o($Vk, [2, 80], {\n 53: 53\n }), {\n 25: 54,\n 38: 56,\n 39: $Vl,\n 43: 57,\n 44: $Vm,\n 45: 55,\n 47: [2, 52]\n }, {\n 28: 60,\n 43: 61,\n 44: $Vm,\n 47: [2, 54]\n }, {\n 13: 63,\n 15: $V1,\n 18: [1, 62]\n }, o($Vf, [2, 84], {\n 57: 64\n }), {\n 26: 65,\n 47: $Vn\n }, o($Vo, [2, 56], {\n 30: 67\n }), o($Vo, [2, 62], {\n 35: 68\n }), o($Vp, [2, 48], {\n 21: 69\n }), o($Vf, [2, 88], {\n 61: 70\n }), {\n 20: 26,\n 33: [2, 78],\n 49: 72,\n 51: 71,\n 63: 27,\n 64: $V3,\n 68: 73,\n 69: 74,\n 70: 75,\n 71: $Vq,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, o($Vr, [2, 92], {\n 65: 77\n }), {\n 71: [1, 78]\n }, o($Vg, [2, 40], {\n 86: $Vh\n }), {\n 20: 26,\n 49: 80,\n 54: 79,\n 55: [2, 82],\n 63: 27,\n 64: $V3,\n 68: 81,\n 69: 74,\n 70: 75,\n 71: $Vq,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, {\n 26: 82,\n 47: $Vn\n }, {\n 47: [2, 53]\n }, o($Vb, $V0, {\n 6: 3,\n 4: 83\n }), {\n 47: [2, 20]\n }, {\n 20: 84,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, o($Ve, $V0, {\n 6: 3,\n 4: 85\n }), {\n 26: 86,\n 47: $Vn\n }, {\n 47: [2, 55]\n }, o($V2, [2, 11]), o($Vd, [2, 47]), {\n 20: 26,\n 33: [2, 86],\n 49: 88,\n 58: 87,\n 63: 27,\n 64: $V3,\n 68: 89,\n 69: 74,\n 70: 75,\n 71: $Vq,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, o($V2, [2, 25]), {\n 20: 90,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, o($Vs, [2, 58], {\n 20: 26,\n 63: 27,\n 77: 28,\n 78: 29,\n 85: 36,\n 69: 74,\n 70: 75,\n 31: 91,\n 49: 92,\n 68: 93,\n 64: $V3,\n 71: $Vq,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va\n }), o($Vs, [2, 64], {\n 20: 26,\n 63: 27,\n 77: 28,\n 78: 29,\n 85: 36,\n 69: 74,\n 70: 75,\n 36: 94,\n 49: 95,\n 68: 96,\n 64: $V3,\n 71: $Vq,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va\n }), {\n 20: 26,\n 22: 97,\n 23: [2, 50],\n 49: 98,\n 63: 27,\n 64: $V3,\n 68: 99,\n 69: 74,\n 70: 75,\n 71: $Vq,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, {\n 20: 26,\n 33: [2, 90],\n 49: 101,\n 62: 100,\n 63: 27,\n 64: $V3,\n 68: 102,\n 69: 74,\n 70: 75,\n 71: $Vq,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, {\n 33: [1, 103]\n }, o($Vf, [2, 77]), {\n 33: [2, 79]\n }, o([23, 33, 55, 67, 74], [2, 30], {\n 70: 104,\n 71: [1, 105]\n }), o($Vt, [2, 96]), o($Vi, $Vj, {\n 72: $Vu\n }), {\n 20: 26,\n 49: 108,\n 63: 27,\n 64: $V3,\n 66: 107,\n 67: [2, 94],\n 68: 109,\n 69: 74,\n 70: 75,\n 71: $Vq,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, o($Vi, [2, 42]), {\n 55: [1, 110]\n }, o($Vk, [2, 81]), {\n 55: [2, 83]\n }, o($V2, [2, 13]), {\n 38: 56,\n 39: $Vl,\n 43: 57,\n 44: $Vm,\n 45: 112,\n 46: 111,\n 47: [2, 74]\n }, o($Vo, [2, 68], {\n 40: 113\n }), {\n 47: [2, 18]\n }, o($V2, [2, 14]), {\n 33: [1, 114]\n }, o($Vf, [2, 85]), {\n 33: [2, 87]\n }, {\n 33: [1, 115]\n }, {\n 32: 116,\n 33: [2, 60],\n 73: 117,\n 74: $Vv\n }, o($Vo, [2, 57]), o($Vs, [2, 59]), {\n 33: [2, 66],\n 37: 119,\n 73: 120,\n 74: $Vv\n }, o($Vo, [2, 63]), o($Vs, [2, 65]), {\n 23: [1, 121]\n }, o($Vp, [2, 49]), {\n 23: [2, 51]\n }, {\n 33: [1, 122]\n }, o($Vf, [2, 89]), {\n 33: [2, 91]\n }, o($V2, [2, 22]), o($Vt, [2, 97]), {\n 72: $Vu\n }, {\n 20: 26,\n 49: 123,\n 63: 27,\n 64: $V3,\n 71: $V4,\n 77: 28,\n 78: 29,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va,\n 85: 36\n }, {\n 67: [1, 124]\n }, o($Vr, [2, 93]), {\n 67: [2, 95]\n }, o($V2, [2, 23]), {\n 47: [2, 19]\n }, {\n 47: [2, 75]\n }, o($Vs, [2, 70], {\n 20: 26,\n 63: 27,\n 77: 28,\n 78: 29,\n 85: 36,\n 69: 74,\n 70: 75,\n 41: 125,\n 49: 126,\n 68: 127,\n 64: $V3,\n 71: $Vq,\n 79: $V5,\n 80: $V6,\n 81: $V7,\n 82: $V8,\n 83: $V9,\n 84: $Va\n }), o($V2, [2, 24]), o($V2, [2, 21]), {\n 33: [1, 128]\n }, {\n 33: [2, 61]\n }, {\n 71: [1, 130],\n 75: 129\n }, {\n 33: [1, 131]\n }, {\n 33: [2, 67]\n }, o($Vd, [2, 12]), o($Ve, [2, 26]), o($Vt, [2, 31]), o($Vg, [2, 29]), {\n 33: [2, 72],\n 42: 132,\n 73: 133,\n 74: $Vv\n }, o($Vo, [2, 69]), o($Vs, [2, 71]), o($Vb, [2, 15]), {\n 71: [1, 135],\n 76: [1, 134]\n }, o($Vw, [2, 98]), o($Vc, [2, 16]), {\n 33: [1, 136]\n }, {\n 33: [2, 73]\n }, {\n 33: [2, 32]\n }, o($Vw, [2, 99]), o($Vb, [2, 17])],\n defaultActions: {\n 4: [2, 1],\n 55: [2, 53],\n 57: [2, 20],\n 61: [2, 55],\n 73: [2, 79],\n 81: [2, 83],\n 85: [2, 18],\n 89: [2, 87],\n 99: [2, 51],\n 102: [2, 91],\n 109: [2, 95],\n 111: [2, 19],\n 112: [2, 75],\n 117: [2, 61],\n 120: [2, 67],\n 133: [2, 73],\n 134: [2, 32]\n },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this,\n stack = [0],\n vstack = [null],\n lstack = [],\n table = this.table,\n yytext = '',\n yylineno = 0,\n yyleng = 0,\n TERROR = 2,\n EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = {\n yy: {}\n };\n\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n\n _token_stack: var lex = function lex() {\n var token;\n token = lexer.lex() || EOF;\n\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n\n return token;\n };\n\n var symbol,\n preErrorSymbol,\n state,\n action,\n r,\n yyval = {},\n p,\n len,\n newState,\n expected;\n\n while (true) {\n state = stack[stack.length - 1];\n\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n\n action = table[state] && table[state][symbol];\n }\n\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n\n break;\n\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n\n if (ranges) {\n yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n }\n\n r = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));\n\n if (typeof r !== 'undefined') {\n return r;\n }\n\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n\n case 3:\n return true;\n }\n }\n\n return true;\n }\n };\n /* generated by jison-lex 0.3.4 */\n\n var lexer = function () {\n var lexer = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function setInput(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function input() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function unput(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len); //this.yyleng -= len;\n\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function more() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function reject() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n\n return this;\n },\n // retain first n characters of the match\n less: function less(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function pastInput() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function upcomingInput() {\n var next = this.match;\n\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n\n return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function showPosition() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function test_match(match, indexed_rule) {\n var token, lines, backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n\n if (lines) {\n this.yylineno += lines.length;\n }\n\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n\n if (this.done && this._input) {\n this.done = false;\n }\n\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n\n return false;\n },\n // return next match in input\n next: function next() {\n if (this.done) {\n return this.EOF;\n }\n\n if (!this._input) {\n this.done = true;\n }\n\n var token, match, tempMatch, index;\n\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n\n var rules = this._currentRules();\n\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n\n if (match) {\n token = this.test_match(match, rules[index]);\n\n if (token !== false) {\n return token;\n } // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\n\n return false;\n }\n\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n function strip(start, end) {\n return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start);\n }\n\n switch ($avoiding_name_collisions) {\n case 0:\n if (yy_.yytext.slice(-2) === \"\\\\\\\\\") {\n strip(0, 1);\n this.begin(\"mu\");\n } else if (yy_.yytext.slice(-1) === \"\\\\\") {\n strip(0, 1);\n this.begin(\"emu\");\n } else {\n this.begin(\"mu\");\n }\n\n if (yy_.yytext) return 15;\n break;\n\n case 1:\n return 15;\n break;\n\n case 2:\n this.popState();\n return 15;\n break;\n\n case 3:\n this.begin('raw');\n return 15;\n break;\n\n case 4:\n this.popState(); // Should be using `this.topState()` below, but it currently\n // returns the second top instead of the first top. Opened an\n // issue about it at https://github.com/zaach/jison/issues/291\n\n if (this.conditionStack[this.conditionStack.length - 1] === 'raw') {\n return 15;\n } else {\n strip(5, 9);\n return 18;\n }\n\n break;\n\n case 5:\n return 15;\n break;\n\n case 6:\n this.popState();\n return 14;\n break;\n\n case 7:\n return 64;\n break;\n\n case 8:\n return 67;\n break;\n\n case 9:\n return 19;\n break;\n\n case 10:\n this.popState();\n this.begin('raw');\n return 23;\n break;\n\n case 11:\n return 56;\n break;\n\n case 12:\n return 60;\n break;\n\n case 13:\n return 29;\n break;\n\n case 14:\n return 47;\n break;\n\n case 15:\n this.popState();\n return 44;\n break;\n\n case 16:\n this.popState();\n return 44;\n break;\n\n case 17:\n return 34;\n break;\n\n case 18:\n return 39;\n break;\n\n case 19:\n return 52;\n break;\n\n case 20:\n return 48;\n break;\n\n case 21:\n this.unput(yy_.yytext);\n this.popState();\n this.begin('com');\n break;\n\n case 22:\n this.popState();\n return 14;\n break;\n\n case 23:\n return 48;\n break;\n\n case 24:\n return 72;\n break;\n\n case 25:\n return 71;\n break;\n\n case 26:\n return 71;\n break;\n\n case 27:\n return 86;\n break;\n\n case 28:\n // ignore whitespace\n break;\n\n case 29:\n this.popState();\n return 55;\n break;\n\n case 30:\n this.popState();\n return 33;\n break;\n\n case 31:\n yy_.yytext = strip(1, 2).replace(/\\\\\"/g, '\"');\n return 79;\n break;\n\n case 32:\n yy_.yytext = strip(1, 2).replace(/\\\\'/g, \"'\");\n return 79;\n break;\n\n case 33:\n return 84;\n break;\n\n case 34:\n return 81;\n break;\n\n case 35:\n return 81;\n break;\n\n case 36:\n return 82;\n break;\n\n case 37:\n return 83;\n break;\n\n case 38:\n return 80;\n break;\n\n case 39:\n return 74;\n break;\n\n case 40:\n return 76;\n break;\n\n case 41:\n return 71;\n break;\n\n case 42:\n yy_.yytext = yy_.yytext.replace(/\\\\([\\\\\\]])/g, '$1');\n return 71;\n break;\n\n case 43:\n return 'INVALID';\n break;\n\n case 44:\n return 5;\n break;\n }\n },\n rules: [/^(?:[^\\x00]*?(?=(\\{\\{)))/, /^(?:[^\\x00]+)/, /^(?:[^\\x00]{2,}?(?=(\\{\\{|\\\\\\{\\{|\\\\\\\\\\{\\{|$)))/, /^(?:\\{\\{\\{\\{(?=[^/]))/, /^(?:\\{\\{\\{\\{\\/[^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=[=}\\s\\/.])\\}\\}\\}\\})/, /^(?:[^\\x00]+?(?=(\\{\\{\\{\\{)))/, /^(?:[\\s\\S]*?--(~)?\\}\\})/, /^(?:\\()/, /^(?:\\))/, /^(?:\\{\\{\\{\\{)/, /^(?:\\}\\}\\}\\})/, /^(?:\\{\\{(~)?>)/, /^(?:\\{\\{(~)?#>)/, /^(?:\\{\\{(~)?#\\*?)/, /^(?:\\{\\{(~)?\\/)/, /^(?:\\{\\{(~)?\\^\\s*(~)?\\}\\})/, /^(?:\\{\\{(~)?\\s*else\\s*(~)?\\}\\})/, /^(?:\\{\\{(~)?\\^)/, /^(?:\\{\\{(~)?\\s*else\\b)/, /^(?:\\{\\{(~)?\\{)/, /^(?:\\{\\{(~)?&)/, /^(?:\\{\\{(~)?!--)/, /^(?:\\{\\{(~)?![\\s\\S]*?\\}\\})/, /^(?:\\{\\{(~)?\\*?)/, /^(?:=)/, /^(?:\\.\\.)/, /^(?:\\.(?=([=~}\\s\\/.)|])))/, /^(?:[\\/.])/, /^(?:\\s+)/, /^(?:\\}(~)?\\}\\})/, /^(?:(~)?\\}\\})/, /^(?:\"(\\\\[\"]|[^\"])*\")/, /^(?:'(\\\\[']|[^'])*')/, /^(?:@)/, /^(?:true(?=([~}\\s)])))/, /^(?:false(?=([~}\\s)])))/, /^(?:undefined(?=([~}\\s)])))/, /^(?:null(?=([~}\\s)])))/, /^(?:-?[0-9]+(?:\\.[0-9]+)?(?=([~}\\s)])))/, /^(?:as\\s+\\|)/, /^(?:\\|)/, /^(?:([^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=([=~}\\s\\/.)|]))))/, /^(?:\\[(\\\\\\]|[^\\]])*\\])/, /^(?:.)/, /^(?:$)/],\n conditions: {\n \"mu\": {\n \"rules\": [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44],\n \"inclusive\": false\n },\n \"emu\": {\n \"rules\": [2],\n \"inclusive\": false\n },\n \"com\": {\n \"rules\": [6],\n \"inclusive\": false\n },\n \"raw\": {\n \"rules\": [3, 4, 5],\n \"inclusive\": false\n },\n \"INITIAL\": {\n \"rules\": [0, 1, 44],\n \"inclusive\": true\n }\n }\n };\n return lexer;\n }();\n\n parser.lexer = lexer;\n\n function Parser() {\n this.yy = {};\n }\n\n Parser.prototype = parser;\n parser.Parser = Parser;\n return new Parser();\n }();\n /* eslint-disable new-cap */\n\n\n _exports.parser = parser;\n\n function print(ast) {\n return new PrintVisitor().accept(ast);\n }\n\n function PrintVisitor() {\n this.padding = 0;\n }\n\n PrintVisitor.prototype = new Visitor();\n\n PrintVisitor.prototype.pad = function (string) {\n var out = '';\n\n for (var i = 0, l = this.padding; i < l; i++) {\n out += ' ';\n }\n\n out += string + '\\n';\n return out;\n };\n\n PrintVisitor.prototype.Program = function (program) {\n var out = '',\n body = program.body,\n i,\n l;\n\n if (program.blockParams) {\n var blockParams = 'BLOCK PARAMS: [';\n\n for (i = 0, l = program.blockParams.length; i < l; i++) {\n blockParams += ' ' + program.blockParams[i];\n }\n\n blockParams += ' ]';\n out += this.pad(blockParams);\n }\n\n for (i = 0, l = body.length; i < l; i++) {\n out += this.accept(body[i]);\n }\n\n this.padding--;\n return out;\n };\n\n PrintVisitor.prototype.MustacheStatement = function (mustache) {\n return this.pad('{{ ' + this.SubExpression(mustache) + ' }}');\n };\n\n PrintVisitor.prototype.Decorator = function (mustache) {\n return this.pad('{{ DIRECTIVE ' + this.SubExpression(mustache) + ' }}');\n };\n\n PrintVisitor.prototype.BlockStatement = PrintVisitor.prototype.DecoratorBlock = function (block) {\n var out = '';\n out += this.pad((block.type === 'DecoratorBlock' ? 'DIRECTIVE ' : '') + 'BLOCK:');\n this.padding++;\n out += this.pad(this.SubExpression(block));\n\n if (block.program) {\n out += this.pad('PROGRAM:');\n this.padding++;\n out += this.accept(block.program);\n this.padding--;\n }\n\n if (block.inverse) {\n if (block.program) {\n this.padding++;\n }\n\n out += this.pad('{{^}}');\n this.padding++;\n out += this.accept(block.inverse);\n this.padding--;\n\n if (block.program) {\n this.padding--;\n }\n }\n\n this.padding--;\n return out;\n };\n\n PrintVisitor.prototype.PartialStatement = function (partial) {\n var content = 'PARTIAL:' + partial.name.original;\n\n if (partial.params[0]) {\n content += ' ' + this.accept(partial.params[0]);\n }\n\n if (partial.hash) {\n content += ' ' + this.accept(partial.hash);\n }\n\n return this.pad('{{> ' + content + ' }}');\n };\n\n PrintVisitor.prototype.PartialBlockStatement = function (partial) {\n var content = 'PARTIAL BLOCK:' + partial.name.original;\n\n if (partial.params[0]) {\n content += ' ' + this.accept(partial.params[0]);\n }\n\n if (partial.hash) {\n content += ' ' + this.accept(partial.hash);\n }\n\n content += ' ' + this.pad('PROGRAM:');\n this.padding++;\n content += this.accept(partial.program);\n this.padding--;\n return this.pad('{{> ' + content + ' }}');\n };\n\n PrintVisitor.prototype.ContentStatement = function (content) {\n return this.pad(\"CONTENT[ '\" + content.value + \"' ]\");\n };\n\n PrintVisitor.prototype.CommentStatement = function (comment) {\n return this.pad(\"{{! '\" + comment.value + \"' }}\");\n };\n\n PrintVisitor.prototype.SubExpression = function (sexpr) {\n var params = sexpr.params,\n paramStrings = [],\n hash;\n\n for (var i = 0, l = params.length; i < l; i++) {\n paramStrings.push(this.accept(params[i]));\n }\n\n params = '[' + paramStrings.join(', ') + ']';\n hash = sexpr.hash ? ' ' + this.accept(sexpr.hash) : '';\n return this.accept(sexpr.path) + ' ' + params + hash;\n };\n\n PrintVisitor.prototype.PathExpression = function (id) {\n var path = id.parts.join('/');\n return (id.data ? '@' : '') + 'PATH:' + path;\n };\n\n PrintVisitor.prototype.StringLiteral = function (string) {\n return '\"' + string.value + '\"';\n };\n\n PrintVisitor.prototype.NumberLiteral = function (number) {\n return 'NUMBER{' + number.value + '}';\n };\n\n PrintVisitor.prototype.BooleanLiteral = function (bool) {\n return 'BOOLEAN{' + bool.value + '}';\n };\n\n PrintVisitor.prototype.UndefinedLiteral = function () {\n return 'UNDEFINED';\n };\n\n PrintVisitor.prototype.NullLiteral = function () {\n return 'NULL';\n };\n\n PrintVisitor.prototype.Hash = function (hash) {\n var pairs = hash.pairs,\n joinedPairs = [];\n\n for (var i = 0, l = pairs.length; i < l; i++) {\n joinedPairs.push(this.accept(pairs[i]));\n }\n\n return 'HASH{' + joinedPairs.join(', ') + '}';\n };\n\n PrintVisitor.prototype.HashPair = function (pair) {\n return pair.key + '=' + this.accept(pair.value);\n };\n /* eslint-enable new-cap */\n\n\n function validateClose(open, close) {\n close = close.path ? close.path.original : close;\n\n if (open.path.original !== close) {\n var errorNode = {\n loc: open.path.loc\n };\n throw new Exception(open.path.original + \" doesn't match \" + close, errorNode);\n }\n }\n\n function SourceLocation(source, locInfo) {\n this.source = source;\n this.start = {\n line: locInfo.first_line,\n column: locInfo.first_column\n };\n this.end = {\n line: locInfo.last_line,\n column: locInfo.last_column\n };\n }\n\n function id(token) {\n if (/^\\[.*\\]$/.test(token)) {\n return token.substring(1, token.length - 1);\n } else {\n return token;\n }\n }\n\n function stripFlags(open, close) {\n return {\n open: open.charAt(2) === '~',\n close: close.charAt(close.length - 3) === '~'\n };\n }\n\n function stripComment(comment) {\n return comment.replace(/^\\{\\{~?!-?-?/, '').replace(/-?-?~?\\}\\}$/, '');\n }\n\n function preparePath(data, parts, loc) {\n loc = this.locInfo(loc);\n var original = data ? '@' : '',\n dig = [],\n depth = 0;\n\n for (var i = 0, l = parts.length; i < l; i++) {\n var part = parts[i].part,\n // If we have [] syntax then we do not treat path references as operators,\n // i.e. foo.[this] resolves to approximately context.foo['this']\n isLiteral = parts[i].original !== part;\n original += (parts[i].separator || '') + part;\n\n if (!isLiteral && (part === '..' || part === '.' || part === 'this')) {\n if (dig.length > 0) {\n throw new Exception('Invalid path: ' + original, {\n loc: loc\n });\n } else if (part === '..') {\n depth++;\n }\n } else {\n dig.push(part);\n }\n }\n\n return {\n type: 'PathExpression',\n data: data,\n depth: depth,\n parts: dig,\n original: original,\n loc: loc\n };\n }\n\n function prepareMustache(path, params, hash, open, strip, locInfo) {\n // Must use charAt to support IE pre-10\n var escapeFlag = open.charAt(3) || open.charAt(2),\n escaped = escapeFlag !== '{' && escapeFlag !== '&';\n var decorator = /\\*/.test(open);\n return {\n type: decorator ? 'Decorator' : 'MustacheStatement',\n path: path,\n params: params,\n hash: hash,\n escaped: escaped,\n strip: strip,\n loc: this.locInfo(locInfo)\n };\n }\n\n function prepareRawBlock(openRawBlock, contents, close, locInfo) {\n validateClose(openRawBlock, close);\n locInfo = this.locInfo(locInfo);\n var program = {\n type: 'Program',\n body: contents,\n strip: {},\n loc: locInfo\n };\n return {\n type: 'BlockStatement',\n path: openRawBlock.path,\n params: openRawBlock.params,\n hash: openRawBlock.hash,\n program: program,\n openStrip: {},\n inverseStrip: {},\n closeStrip: {},\n loc: locInfo\n };\n }\n\n function prepareBlock(openBlock, program, inverseAndProgram, close, inverted, locInfo) {\n if (close && close.path) {\n validateClose(openBlock, close);\n }\n\n var decorator = /\\*/.test(openBlock.open);\n program.blockParams = openBlock.blockParams;\n var inverse, inverseStrip;\n\n if (inverseAndProgram) {\n if (decorator) {\n throw new Exception('Unexpected inverse block on decorator', inverseAndProgram);\n }\n\n if (inverseAndProgram.chain) {\n inverseAndProgram.program.body[0].closeStrip = close.strip;\n }\n\n inverseStrip = inverseAndProgram.strip;\n inverse = inverseAndProgram.program;\n }\n\n if (inverted) {\n inverted = inverse;\n inverse = program;\n program = inverted;\n }\n\n return {\n type: decorator ? 'DecoratorBlock' : 'BlockStatement',\n path: openBlock.path,\n params: openBlock.params,\n hash: openBlock.hash,\n program: program,\n inverse: inverse,\n openStrip: openBlock.strip,\n inverseStrip: inverseStrip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n }\n\n function prepareProgram(statements, loc) {\n if (!loc && statements.length) {\n var firstLoc = statements[0].loc,\n lastLoc = statements[statements.length - 1].loc;\n /* istanbul ignore else */\n\n if (firstLoc && lastLoc) {\n loc = {\n source: firstLoc.source,\n start: {\n line: firstLoc.start.line,\n column: firstLoc.start.column\n },\n end: {\n line: lastLoc.end.line,\n column: lastLoc.end.column\n }\n };\n }\n }\n\n return {\n type: 'Program',\n body: statements,\n strip: {},\n loc: loc\n };\n }\n\n function preparePartialBlock(open, program, close, locInfo) {\n validateClose(open, close);\n return {\n type: 'PartialBlockStatement',\n name: open.path,\n params: open.params,\n hash: open.hash,\n program: program,\n openStrip: open.strip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n }\n\n var Helpers = /*#__PURE__*/Object.freeze({\n SourceLocation: SourceLocation,\n id: id,\n stripFlags: stripFlags,\n stripComment: stripComment,\n preparePath: preparePath,\n prepareMustache: prepareMustache,\n prepareRawBlock: prepareRawBlock,\n prepareBlock: prepareBlock,\n prepareProgram: prepareProgram,\n preparePartialBlock: preparePartialBlock\n });\n var baseHelpers = {};\n\n for (var helper in Helpers) {\n if (Object.prototype.hasOwnProperty.call(Helpers, helper)) {\n baseHelpers[helper] = Helpers[helper];\n }\n }\n\n function parseWithoutProcessing(input, options) {\n // Just return if an already-compiled AST was passed in.\n if (input.type === 'Program') {\n return input;\n }\n\n parser.yy = baseHelpers; // Altering the shared object here, but this is ok as parser is a sync operation\n\n parser.yy.locInfo = function (locInfo) {\n return new SourceLocation(options && options.srcName, locInfo);\n };\n\n var ast = parser.parse(input);\n return ast;\n }\n\n function parse(input, options) {\n var ast = parseWithoutProcessing(input, options);\n var strip = new WhitespaceControl(options);\n return strip.accept(ast);\n }\n});","define(\"ember-babel\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.wrapNativeSuper = wrapNativeSuper;\n _exports.classCallCheck = classCallCheck;\n _exports.inheritsLoose = inheritsLoose;\n _exports.taggedTemplateLiteralLoose = taggedTemplateLiteralLoose;\n _exports.createClass = createClass;\n _exports.assertThisInitialized = assertThisInitialized;\n _exports.possibleConstructorReturn = possibleConstructorReturn;\n _exports.objectDestructuringEmpty = objectDestructuringEmpty;\n _exports.createSuper = createSuper;\n _exports.createForOfIteratorHelperLoose = createForOfIteratorHelperLoose;\n\n /* globals Reflect */\n var setPrototypeOf = Object.setPrototypeOf;\n var getPrototypeOf = Object.getPrototypeOf;\n var hasReflectConstruct = typeof Reflect === 'object' && typeof Reflect.construct === 'function';\n var nativeWrapperCache = new Map(); // Super minimal version of Babel's wrapNativeSuper. We only use this for\n // extending Function, for ComputedDecoratorImpl and AliasDecoratorImpl. We know\n // we will never directly create an instance of these classes so no need to\n // include `construct` code or other helpers.\n\n function wrapNativeSuper(Class) {\n if (nativeWrapperCache.has(Class)) {\n return nativeWrapperCache.get(Class);\n }\n\n function Wrapper() {}\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n nativeWrapperCache.set(Class, Wrapper);\n return setPrototypeOf(Wrapper, Class);\n }\n\n function classCallCheck(instance, Constructor) {\n if (true\n /* DEBUG */\n ) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n }\n }\n /*\n Overrides default `inheritsLoose` to _also_ call `Object.setPrototypeOf`.\n This is needed so that we can use `loose` option with the\n `@babel/plugin-transform-classes` (because we want simple assignment to the\n prototype wherever possible) but also keep our constructor based prototypal\n inheritance working properly\n */\n\n\n function inheritsLoose(subClass, superClass) {\n if (true\n /* DEBUG */\n ) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function');\n }\n }\n\n subClass.prototype = Object.create(superClass === null ? null : superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n\n if (superClass !== null) {\n setPrototypeOf(subClass, superClass);\n }\n }\n\n function taggedTemplateLiteralLoose(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n strings.raw = raw;\n return strings;\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n /*\n Differs from default implementation by avoiding boolean coercion of\n `protoProps` and `staticProps`.\n */\n\n\n function createClass(Constructor, protoProps, staticProps) {\n if (protoProps !== null && protoProps !== undefined) {\n _defineProperties(Constructor.prototype, protoProps);\n }\n\n if (staticProps !== null && staticProps !== undefined) {\n _defineProperties(Constructor, staticProps);\n }\n\n return Constructor;\n }\n\n function assertThisInitialized(self) {\n if (true\n /* DEBUG */\n && self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n }\n /*\n Adds `DEBUG` guard to error being thrown, and avoids boolean coercion of `call`.\n */\n\n\n function possibleConstructorReturn(self, call) {\n if (typeof call === 'object' && call !== null || typeof call === 'function') {\n return call;\n }\n\n return assertThisInitialized(self);\n }\n\n function objectDestructuringEmpty(obj) {\n if (true\n /* DEBUG */\n && (obj === null || obj === undefined)) {\n throw new TypeError('Cannot destructure undefined');\n }\n }\n /*\n Differs from default implementation by checking for _any_ `Reflect.construct`\n (the default implementation tries to ensure that `Reflect.construct` is truly\n the native one).\n \n Original source: https://github.com/babel/babel/blob/v7.9.2/packages/babel-helpers/src/helpers.js#L738-L757\n */\n\n\n function createSuper(Derived) {\n return function () {\n var Super = getPrototypeOf(Derived);\n var result;\n\n if (hasReflectConstruct) {\n // NOTE: This doesn't work if this.__proto__.constructor has been modified.\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n }\n /*\n Does not differ from default implementation.\n */\n\n\n function arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n var arr2 = new Array(len);\n\n for (var i = 0; i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n /*\n Does not differ from default implementation.\n */\n\n\n function unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === 'string') return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === 'Object' && o.constructor) n = o.constructor.name;\n if (n === 'Map' || n === 'Set') return Array.from(n);\n if (n === 'Arguments' || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n }\n /*\n Does not differ from default implementation.\n */\n\n\n function createForOfIteratorHelperLoose(o) {\n var i = 0;\n\n if (typeof Symbol === 'undefined' || o[Symbol.iterator] == null) {\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (o = unsupportedIterableToArray(o))) return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n throw new TypeError('Invalid attempt to iterate non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.');\n }\n\n i = o[Symbol.iterator]();\n return i.next.bind(i);\n }\n});","define(\"ember-template-compiler/index\", [\"exports\", \"@ember/-internals/environment\", \"@ember/canary-features\", \"@glimmer/syntax\", \"ember/version\", \"require\", \"ember-template-compiler/lib/system/precompile\", \"ember-template-compiler/lib/system/compile\", \"ember-template-compiler/lib/system/compile-options\", \"ember-template-compiler/lib/plugins/index\", \"@glimmer/compiler\", \"ember-template-compiler/lib/system/bootstrap\", \"ember-template-compiler/lib/system/initializer\"], function (_exports, _environment, _canaryFeatures, _GlimmerSyntax, _version, _require, _precompile, _compile, _compileOptions, _index, _compiler, _bootstrap, _initializer) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n Object.defineProperty(_exports, \"_preprocess\", {\n enumerable: true,\n get: function get() {\n return _GlimmerSyntax.preprocess;\n }\n });\n Object.defineProperty(_exports, \"_print\", {\n enumerable: true,\n get: function get() {\n return _GlimmerSyntax.print;\n }\n });\n Object.defineProperty(_exports, \"VERSION\", {\n enumerable: true,\n get: function get() {\n return _version.default;\n }\n });\n Object.defineProperty(_exports, \"precompile\", {\n enumerable: true,\n get: function get() {\n return _precompile.default;\n }\n });\n Object.defineProperty(_exports, \"compile\", {\n enumerable: true,\n get: function get() {\n return _compile.default;\n }\n });\n Object.defineProperty(_exports, \"compileOptions\", {\n enumerable: true,\n get: function get() {\n return _compileOptions.default;\n }\n });\n Object.defineProperty(_exports, \"_buildCompileOptions\", {\n enumerable: true,\n get: function get() {\n return _compileOptions.buildCompileOptions;\n }\n });\n Object.defineProperty(_exports, \"_transformsFor\", {\n enumerable: true,\n get: function get() {\n return _compileOptions.transformsFor;\n }\n });\n Object.defineProperty(_exports, \"registerPlugin\", {\n enumerable: true,\n get: function get() {\n return _compileOptions.registerPlugin;\n }\n });\n Object.defineProperty(_exports, \"unregisterPlugin\", {\n enumerable: true,\n get: function get() {\n return _compileOptions.unregisterPlugin;\n }\n });\n Object.defineProperty(_exports, \"RESOLUTION_MODE_TRANSFORMS\", {\n enumerable: true,\n get: function get() {\n return _index.RESOLUTION_MODE_TRANSFORMS;\n }\n });\n Object.defineProperty(_exports, \"STRICT_MODE_TRANSFORMS\", {\n enumerable: true,\n get: function get() {\n return _index.STRICT_MODE_TRANSFORMS;\n }\n });\n Object.defineProperty(_exports, \"_precompile\", {\n enumerable: true,\n get: function get() {\n return _compiler.precompile;\n }\n });\n _exports._GlimmerSyntax = _exports._Ember = void 0;\n _exports._GlimmerSyntax = _GlimmerSyntax;\n\n var _Ember;\n\n _exports._Ember = _Ember;\n\n try {\n // tslint:disable-next-line: no-require-imports\n _exports._Ember = _Ember = (0, _require.default)(\"ember\");\n } catch (e) {\n _exports._Ember = _Ember = {\n ENV: _environment.ENV,\n FEATURES: _canaryFeatures.FEATURES,\n VERSION: _version.default\n };\n }\n});","define(\"ember-template-compiler/lib/plugins/assert-against-dynamic-helpers-modifiers\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _debug, _calculateLocationDisplay, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = assertAgainstDynamicHelpersModifiers;\n\n function assertAgainstDynamicHelpersModifiers(env) {\n var _a;\n\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n\n var _trackLocals = (0, _utils.trackLocals)(),\n hasLocal = _trackLocals.hasLocal,\n node = _trackLocals.node;\n\n return {\n name: 'assert-against-dynamic-helpers-modifiers',\n visitor: {\n Program: node,\n ElementNode: {\n keys: {\n children: node\n }\n },\n MustacheStatement: function MustacheStatement(node) {\n if ((0, _utils.isPath)(node.path)) {\n var name = node.path.parts[0];\n (true && !(name !== 'helper' && name !== 'modifier' || isLocalVariable(node.path, hasLocal)) && (0, _debug.assert)(messageFor(name) + \" \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), name !== 'helper' && name !== 'modifier' || isLocalVariable(node.path, hasLocal)));\n }\n },\n SubExpression: function SubExpression(node) {\n if ((0, _utils.isPath)(node.path)) {\n var name = node.path.parts[0];\n (true && !(name !== 'helper' && name !== 'modifier' || isLocalVariable(node.path, hasLocal)) && (0, _debug.assert)(messageFor(name) + \" \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), name !== 'helper' && name !== 'modifier' || isLocalVariable(node.path, hasLocal)));\n }\n }\n }\n };\n }\n\n function isLocalVariable(node, hasLocal) {\n return !node.this && node.parts.length === 1 && hasLocal(node.parts[0]);\n }\n\n function messageFor(name) {\n return \"Cannot use the (\" + name + \") keyword yet, as it has not been implemented.\";\n }\n});","define(\"ember-template-compiler/lib/plugins/assert-against-named-blocks\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\"], function (_exports, _debug, _calculateLocationDisplay) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = assertAgainstNamedBlocks;\n\n /**\n @module ember\n */\n\n /**\n Prevents usage of named blocks\n \n @private\n @class AssertAgainstNamedBlocks\n */\n function assertAgainstNamedBlocks(env) {\n var _a;\n\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n return {\n name: 'assert-against-named-blocks',\n visitor: {\n ElementNode: function ElementNode(node) {\n if (node.tag[0] === ':') {\n var sourceInformation = (0, _calculateLocationDisplay.default)(moduleName, node.loc);\n (true && !(false) && (0, _debug.assert)(\"Named blocks are not currently available, attempted to use the <\" + node.tag + \"> named block. \" + sourceInformation));\n }\n },\n MustacheStatement: function MustacheStatement(node) {\n if (node.path.type === 'PathExpression' && node.path.original === 'yield') {\n var to = node.hash.pairs.filter(function (pair) {\n return pair.key === 'to';\n })[0]; // Glimmer template compiler ensures yield must receive a string literal,\n // so we only need to check if it is not \"default\" or \"inverse\"\n\n if (to && to.value.type === 'StringLiteral' && to.value.original !== 'default' && to.value.original !== 'inverse') {\n var sourceInformation = (0, _calculateLocationDisplay.default)(moduleName, node.loc);\n (true && !(false) && (0, _debug.assert)(\"Named blocks are not currently available, attempted to yield to a named block other than \\\"default\\\" or \\\"inverse\\\": {{yield to=\\\"\" + to.value.original + \"\\\"}}. \" + sourceInformation));\n }\n }\n }\n }\n };\n }\n});","define(\"ember-template-compiler/lib/plugins/assert-input-helper-without-block\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _debug, _calculateLocationDisplay, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = errorOnInputWithContent;\n\n function errorOnInputWithContent(env) {\n var _a;\n\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n return {\n name: 'assert-input-helper-without-block',\n visitor: {\n BlockStatement: function BlockStatement(node) {\n if ((0, _utils.isPath)(node.path) && node.path.original === 'input') {\n (true && !(false) && (0, _debug.assert)(assertMessage(moduleName, node)));\n }\n }\n }\n };\n }\n\n function assertMessage(moduleName, node) {\n var sourceInformation = (0, _calculateLocationDisplay.default)(moduleName, node.loc);\n return \"The {{input}} helper cannot be used in block form. \" + sourceInformation;\n }\n});","define(\"ember-template-compiler/lib/plugins/assert-reserved-named-arguments\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\"], function (_exports, _debug, _calculateLocationDisplay) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = assertReservedNamedArguments;\n\n function assertReservedNamedArguments(env) {\n var _a;\n\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n return {\n name: 'assert-reserved-named-arguments',\n visitor: {\n // In general, we don't assert on the invocation side to avoid creating migration\n // hazards (e.g. using angle bracket to invoke a classic component that uses\n // `this.someReservedName`. However, we want to avoid leaking special internal\n // things, such as `__ARGS__`, so those would need to be asserted on both sides.\n AttrNode: function AttrNode(_ref) {\n var name = _ref.name,\n loc = _ref.loc;\n\n if (name === '@__ARGS__') {\n (true && !(false) && (0, _debug.assert)(assertMessage(name) + \" \" + (0, _calculateLocationDisplay.default)(moduleName, loc)));\n }\n },\n HashPair: function HashPair(_ref2) {\n var key = _ref2.key,\n loc = _ref2.loc;\n\n if (key === '__ARGS__') {\n (true && !(false) && (0, _debug.assert)(assertMessage(key) + \" \" + (0, _calculateLocationDisplay.default)(moduleName, loc)));\n }\n },\n PathExpression: function PathExpression(_ref3) {\n var original = _ref3.original,\n loc = _ref3.loc;\n\n if (isReserved(original)) {\n (true && !(false) && (0, _debug.assert)(assertMessage(original) + \" \" + (0, _calculateLocationDisplay.default)(moduleName, loc)));\n }\n }\n }\n };\n }\n\n var RESERVED = ['@arguments', '@args', '@block', '@else'];\n\n function isReserved(name) {\n return RESERVED.indexOf(name) !== -1 || Boolean(name.match(/^@[^a-z]/));\n }\n\n function assertMessage(name) {\n return \"'\" + name + \"' is reserved.\";\n }\n});","define(\"ember-template-compiler/lib/plugins/assert-splattribute-expression\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\"], function (_exports, _debug, _calculateLocationDisplay) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = assertSplattributeExpressions;\n\n function assertSplattributeExpressions(env) {\n var _a;\n\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n return {\n name: 'assert-splattribute-expressions',\n visitor: {\n PathExpression: function PathExpression(_ref) {\n var original = _ref.original,\n loc = _ref.loc;\n\n if (original === '...attributes') {\n (true && !(false) && (0, _debug.assert)(errorMessage() + \" \" + (0, _calculateLocationDisplay.default)(moduleName, loc)));\n }\n }\n }\n };\n }\n\n function errorMessage() {\n return '`...attributes` can only be used in the element position e.g. `<div ...attributes />`. It cannot be used as a path.';\n }\n});","define(\"ember-template-compiler/lib/plugins/deprecate-send-action\", [\"exports\", \"@ember/debug\", \"@ember/deprecated-features\", \"ember-template-compiler/lib/system/calculate-location-display\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _debug, _deprecatedFeatures, _calculateLocationDisplay, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = deprecateSendAction;\n var EVENTS = ['insert-newline', 'enter', 'escape-press', 'focus-in', 'focus-out', 'key-press', 'key-up', 'key-down'];\n\n function deprecateSendAction(env) {\n var _a;\n\n if (_deprecatedFeatures.SEND_ACTION) {\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n\n var deprecationMessage = function deprecationMessage(node, eventName, actionName) {\n var sourceInformation = (0, _calculateLocationDisplay.default)(moduleName, node.loc);\n\n if (node.type === 'ElementNode') {\n return \"Passing actions to components as strings (like `<Input @\" + eventName + \"=\\\"\" + actionName + \"\\\" />`) is deprecated. Please use closure actions instead (`<Input @\" + eventName + \"={{action \\\"\" + actionName + \"\\\"}} />`). \" + sourceInformation;\n } else {\n return \"Passing actions to components as strings (like `{{input \" + eventName + \"=\\\"\" + actionName + \"\\\"}}`) is deprecated. Please use closure actions instead (`{{input \" + eventName + \"=(action \\\"\" + actionName + \"\\\")}}`). \" + sourceInformation;\n }\n };\n\n return {\n name: 'deprecate-send-action',\n visitor: {\n ElementNode: function ElementNode(node) {\n if (node.tag !== 'Input') {\n return;\n }\n\n node.attributes.forEach(function (_ref) {\n var name = _ref.name,\n value = _ref.value;\n\n if (name.charAt(0) === '@') {\n var eventName = name.substring(1);\n\n if (EVENTS.indexOf(eventName) > -1) {\n if (value.type === 'TextNode') {\n (true && !(false) && (0, _debug.deprecate)(deprecationMessage(node, eventName, value.chars), false, {\n id: 'ember-component.send-action',\n until: '4.0.0',\n url: 'https://deprecations.emberjs.com/v3.x#toc_ember-component-send-action',\n for: 'ember-source',\n since: {\n enabled: '3.4.0'\n }\n }));\n } else if (value.type === 'MustacheStatement' && value.path.type === 'StringLiteral') {\n (true && !(false) && (0, _debug.deprecate)(deprecationMessage(node, eventName, value.path.original), false, {\n id: 'ember-component.send-action',\n until: '4.0.0',\n url: 'https://deprecations.emberjs.com/v3.x#toc_ember-component-send-action',\n for: 'ember-source',\n since: {\n enabled: '3.4.0'\n }\n }));\n }\n }\n }\n });\n },\n MustacheStatement: function MustacheStatement(node) {\n if (!(0, _utils.isPath)(node.path) || node.path.original !== 'input') {\n return;\n }\n\n node.hash.pairs.forEach(function (pair) {\n if (EVENTS.indexOf(pair.key) > -1 && pair.value.type === 'StringLiteral') {\n (true && !(false) && (0, _debug.deprecate)(deprecationMessage(node, pair.key, pair.value.original), false, {\n id: 'ember-component.send-action',\n until: '4.0.0',\n url: 'https://deprecations.emberjs.com/v3.x#toc_ember-component-send-action',\n for: 'ember-source',\n since: {\n enabled: '3.4.0'\n }\n }));\n }\n });\n }\n }\n };\n }\n\n return {\n name: 'deprecate-send-action',\n visitor: {}\n };\n }\n});","define(\"ember-template-compiler/lib/plugins/deprecate-with\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _debug, _calculateLocationDisplay, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = deprecateWith;\n\n /**\n @module ember\n */\n\n /**\n A Glimmer2 AST transformation that deprecates `{{#with}}` and replace it\n with `{{#let}}` and `{{#if}}` as per RFC 445.\n \n Transforms:\n \n ```handlebars\n {{#with this.foo as |bar|}}\n ...\n {{/with}}\n ```\n \n Into:\n \n ```handlebars\n {{#let this.foo as |bar|}}\n {{#if bar}}\n ...\n {{/if}}\n {{/let}}\n ```\n \n And:\n \n ```handlebars\n {{#with this.foo as |bar|}}\n ...\n {{else}}\n ...\n {{/with}}\n ```\n \n Into:\n \n ```handlebars\n {{#let this.foo as |bar|}}\n {{#if bar}}\n ...\n {{else}}\n ...\n {{/if}}\n {{/let}}\n ```\n \n And issues a deprecation message.\n \n @private\n @class DeprecateWith\n */\n function deprecateWith(env) {\n var _a;\n\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n var b = env.syntax.builders;\n return {\n name: 'deprecate-with',\n visitor: {\n BlockStatement: function BlockStatement(node) {\n if (!(0, _utils.isPath)(node.path) || node.path.original !== 'with') return;\n var params = node.params,\n hash = node.hash,\n program = node.program,\n inverse = node.inverse,\n loc = node.loc,\n openStrip = node.openStrip,\n inverseStrip = node.inverseStrip,\n closeStrip = node.closeStrip;\n var sourceInformation = (0, _calculateLocationDisplay.default)(moduleName, node.loc);\n (true && !(params.length === 1) && (0, _debug.assert)(\"`{{#with}}` takes a single positional argument (the path to alias), received \" + displayParams(params) + \". \" + sourceInformation, params.length === 1));\n (true && !(hash.pairs.length === 0) && (0, _debug.assert)(\"`{{#with}}` does not take any named arguments, received \" + displayHash(hash) + \". \" + sourceInformation, hash.pairs.length === 0));\n (true && !(program.blockParams.length <= 1) && (0, _debug.assert)(\"`{{#with}}` yields a single block param, received \" + displayBlockParams(program.blockParams) + \". \" + sourceInformation, program.blockParams.length <= 1));\n var recommendation;\n\n if (program.blockParams.length === 0) {\n recommendation = 'Use `{{#if}}` instead.';\n } else if (inverse) {\n recommendation = 'Use `{{#let}}` together with `{{#if}} instead.';\n } else {\n recommendation = 'If you always want the block to render, replace `{{#with}}` with `{{#let}}`. ' + 'If you want to conditionally render the block, use `{{#let}}` together with `{{#if}} instead.';\n }\n\n (true && !(false) && (0, _debug.deprecate)(\"`{{#with}}` is deprecated. \" + recommendation + \" \" + sourceInformation, false, {\n id: 'ember-glimmer.with-syntax',\n until: '4.0.0',\n for: 'ember-source',\n url: 'https://deprecations.emberjs.com/v3.x/#toc_ember-glimmer-with-syntax',\n since: {\n enabled: '3.26.0-beta.1'\n }\n }));\n\n if (program.blockParams.length === 0) {\n return b.block('if', params, null, program, inverse, loc, openStrip, inverseStrip, closeStrip);\n } else {\n return b.block('let', params, null, b.blockItself([b.block('if', [b.path(program.blockParams[0])], null, b.blockItself(program.body, [], program.chained, program.loc), inverse, loc, openStrip, inverseStrip, closeStrip)], program.blockParams, false, loc), null, loc, openStrip, inverseStrip, closeStrip);\n }\n }\n }\n };\n }\n\n function displayParams(params) {\n if (params.length === 0) {\n return 'no positional arguments';\n } else {\n var display = params.map(function (param) {\n return \"`\" + JSON.stringify(param) + \"`\";\n }).join(', ');\n return params.length + \" positional arguments: \" + display;\n }\n }\n\n function displayHash(_ref) {\n var pairs = _ref.pairs;\n\n if (pairs.length === 0) {\n return 'no named arguments';\n } else {\n var display = pairs.map(function (pair) {\n return \"`\" + pair.key + \"`\";\n }).join(', ');\n return pairs.length + \" named arguments: \" + display;\n }\n }\n\n function displayBlockParams(blockParams) {\n if (blockParams.length === 0) {\n return 'no block params';\n } else {\n var display = blockParams.map(function (param) {\n return \"`\" + param + \"`\";\n }).join(', ');\n return blockParams.length + \" block params: \" + display;\n }\n }\n});","define(\"ember-template-compiler/lib/plugins/index\", [\"exports\", \"ember-template-compiler/lib/plugins/assert-against-dynamic-helpers-modifiers\", \"ember-template-compiler/lib/plugins/assert-against-named-blocks\", \"ember-template-compiler/lib/plugins/assert-input-helper-without-block\", \"ember-template-compiler/lib/plugins/assert-reserved-named-arguments\", \"ember-template-compiler/lib/plugins/assert-splattribute-expression\", \"ember-template-compiler/lib/plugins/deprecate-send-action\", \"ember-template-compiler/lib/plugins/deprecate-with\", \"ember-template-compiler/lib/plugins/transform-action-syntax\", \"ember-template-compiler/lib/plugins/transform-attrs-into-args\", \"ember-template-compiler/lib/plugins/transform-each-in-into-each\", \"ember-template-compiler/lib/plugins/transform-each-track-array\", \"ember-template-compiler/lib/plugins/transform-has-block-syntax\", \"ember-template-compiler/lib/plugins/transform-in-element\", \"ember-template-compiler/lib/plugins/transform-link-to\", \"ember-template-compiler/lib/plugins/transform-old-class-binding-syntax\", \"ember-template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings\", \"ember-template-compiler/lib/plugins/transform-resolutions\", \"ember-template-compiler/lib/plugins/transform-wrap-mount-and-outlet\", \"@ember/deprecated-features\"], function (_exports, _assertAgainstDynamicHelpersModifiers, _assertAgainstNamedBlocks, _assertInputHelperWithoutBlock, _assertReservedNamedArguments, _assertSplattributeExpression, _deprecateSendAction, _deprecateWith, _transformActionSyntax, _transformAttrsIntoArgs, _transformEachInIntoEach, _transformEachTrackArray, _transformHasBlockSyntax, _transformInElement, _transformLinkTo, _transformOldClassBindingSyntax, _transformQuotedBindingsIntoJustBindings, _transformResolutions, _transformWrapMountAndOutlet, _deprecatedFeatures) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.STRICT_MODE_TRANSFORMS = _exports.RESOLUTION_MODE_TRANSFORMS = void 0;\n // order of plugins is important\n var RESOLUTION_MODE_TRANSFORMS = Object.freeze([_transformOldClassBindingSyntax.default, _transformQuotedBindingsIntoJustBindings.default, _assertReservedNamedArguments.default, _transformActionSyntax.default, _transformAttrsIntoArgs.default, _transformEachInIntoEach.default, _transformHasBlockSyntax.default, _transformLinkTo.default, _assertInputHelperWithoutBlock.default, _transformInElement.default, _assertSplattributeExpression.default, _transformEachTrackArray.default, _transformWrapMountAndOutlet.default, _deprecateWith.default, _deprecatedFeatures.SEND_ACTION ? _deprecateSendAction.default : null, !true\n /* EMBER_NAMED_BLOCKS */\n ? _assertAgainstNamedBlocks.default : null, true\n /* EMBER_DYNAMIC_HELPERS_AND_MODIFIERS */\n ? _transformResolutions.default : _assertAgainstDynamicHelpersModifiers.default].filter(notNull));\n _exports.RESOLUTION_MODE_TRANSFORMS = RESOLUTION_MODE_TRANSFORMS;\n var STRICT_MODE_TRANSFORMS = Object.freeze([_transformQuotedBindingsIntoJustBindings.default, _assertReservedNamedArguments.default, _transformActionSyntax.default, _transformEachInIntoEach.default, _transformInElement.default, _assertSplattributeExpression.default, _transformEachTrackArray.default, _transformWrapMountAndOutlet.default, _deprecateWith.default, _deprecatedFeatures.SEND_ACTION ? _deprecateSendAction.default : null, !true\n /* EMBER_NAMED_BLOCKS */\n ? _assertAgainstNamedBlocks.default : null, !true\n /* EMBER_DYNAMIC_HELPERS_AND_MODIFIERS */\n ? _assertAgainstDynamicHelpersModifiers.default : null].filter(notNull));\n _exports.STRICT_MODE_TRANSFORMS = STRICT_MODE_TRANSFORMS;\n\n function notNull(value) {\n return value !== null;\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-action-syntax\", [\"exports\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformActionSyntax;\n\n /**\n @module ember\n */\n\n /**\n A Glimmer2 AST transformation that replaces all instances of\n \n ```handlebars\n <button {{action 'foo'}}>\n <button onblur={{action 'foo'}}>\n <button onblur={{action (action 'foo') 'bar'}}>\n ```\n \n with\n \n ```handlebars\n <button {{action this 'foo'}}>\n <button onblur={{action this 'foo'}}>\n <button onblur={{action this (action this 'foo') 'bar'}}>\n ```\n \n @private\n @class TransformActionSyntax\n */\n function transformActionSyntax(_ref) {\n var syntax = _ref.syntax;\n var b = syntax.builders;\n return {\n name: 'transform-action-syntax',\n visitor: {\n ElementModifierStatement: function ElementModifierStatement(node) {\n if (isAction(node)) {\n insertThisAsFirstParam(node, b);\n }\n },\n MustacheStatement: function MustacheStatement(node) {\n if (isAction(node)) {\n insertThisAsFirstParam(node, b);\n }\n },\n SubExpression: function SubExpression(node) {\n if (isAction(node)) {\n insertThisAsFirstParam(node, b);\n }\n }\n }\n };\n }\n\n function isAction(node) {\n return (0, _utils.isPath)(node.path) && node.path.original === 'action';\n }\n\n function insertThisAsFirstParam(node, builders) {\n node.params.unshift(builders.path('this'));\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-attrs-into-args\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\"], function (_exports, _debug, _calculateLocationDisplay) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformAttrsIntoArgs;\n\n /**\n @module ember\n */\n\n /**\n A Glimmer2 AST transformation that replaces all instances of\n \n ```handlebars\n {{attrs.foo.bar}}\n ```\n \n to\n \n ```handlebars\n {{@foo.bar}}\n ```\n \n as well as `{{#if attrs.foo}}`, `{{deeply (nested attrs.foobar.baz)}}`,\n `{{this.attrs.foo}}` etc\n \n @private\n @class TransformAttrsToProps\n */\n function transformAttrsIntoArgs(env) {\n var _a;\n\n var b = env.syntax.builders;\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n var stack = [[]];\n\n function updateBlockParamsStack(blockParams) {\n var parent = stack[stack.length - 1];\n stack.push(parent.concat(blockParams));\n }\n\n return {\n name: 'transform-attrs-into-args',\n visitor: {\n Program: {\n enter: function enter(node) {\n updateBlockParamsStack(node.blockParams);\n },\n exit: function exit() {\n stack.pop();\n }\n },\n ElementNode: {\n enter: function enter(node) {\n updateBlockParamsStack(node.blockParams);\n },\n exit: function exit() {\n stack.pop();\n }\n },\n PathExpression: function PathExpression(node) {\n if (isAttrs(node, stack[stack.length - 1])) {\n var path = b.path(node.original.substr(6));\n (true && !(false) && (0, _debug.deprecate)(\"Using {{attrs}} to reference named arguments has been deprecated. {{attrs.\" + path.original + \"}} should be updated to {{@\" + path.original + \"}}. \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), false, {\n id: 'attrs-arg-access',\n url: 'https://deprecations.emberjs.com/v3.x/#toc_attrs-arg-access',\n until: '4.0.0',\n for: 'ember-source',\n since: {\n enabled: '3.26.0'\n }\n }));\n path.original = \"@\" + path.original;\n path.data = true;\n return path;\n }\n }\n }\n };\n }\n\n function isAttrs(node, symbols) {\n var name = node.parts[0];\n\n if (symbols.indexOf(name) !== -1) {\n return false;\n }\n\n if (name === 'attrs') {\n if (node.this === true) {\n node.parts.shift();\n node.original = node.original.slice(5);\n }\n\n return true;\n }\n\n return false;\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-each-in-into-each\", [\"exports\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformEachInIntoEach;\n\n /**\n @module ember\n */\n\n /**\n A Glimmer2 AST transformation that replaces all instances of\n \n ```handlebars\n {{#each-in iterableThing as |key value|}}\n ```\n \n with\n \n ```handlebars\n {{#each (-each-in iterableThing) as |value key|}}\n ```\n \n @private\n @class TransformHasBlockSyntax\n */\n function transformEachInIntoEach(env) {\n var b = env.syntax.builders;\n return {\n name: 'transform-each-in-into-each',\n visitor: {\n BlockStatement: function BlockStatement(node) {\n if ((0, _utils.isPath)(node.path) && node.path.original === 'each-in') {\n node.params[0] = b.sexpr(b.path('-each-in'), [node.params[0]]);\n var blockParams = node.program.blockParams;\n\n if (!blockParams || blockParams.length === 0) {// who uses {{#each-in}} without block params?!\n } else if (blockParams.length === 1) {\n // insert a dummy variable for the first slot\n // pick a name that won't parse so it won't shadow any real variables\n blockParams = ['( unused value )', blockParams[0]];\n } else {\n var key = blockParams.shift();\n var value = blockParams.shift();\n blockParams = [value, key].concat(blockParams);\n }\n\n node.program.blockParams = blockParams;\n return b.block(b.path('each'), node.params, node.hash, node.program, node.inverse, node.loc);\n }\n }\n }\n };\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-each-track-array\", [\"exports\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformEachTrackArray;\n\n /**\n @module ember\n */\n\n /**\n A Glimmer2 AST transformation that replaces all instances of\n \n ```handlebars\n {{#each iterableThing as |key value|}}\n ```\n \n with\n \n ```handlebars\n {{#each (-track-array iterableThing) as |key value|}}\n ```\n \n @private\n @class TransformHasBlockSyntax\n */\n function transformEachTrackArray(env) {\n var b = env.syntax.builders;\n return {\n name: 'transform-each-track-array',\n visitor: {\n BlockStatement: function BlockStatement(node) {\n if ((0, _utils.isPath)(node.path) && node.path.original === 'each') {\n var firstParam = node.params[0];\n\n if (firstParam.type === 'SubExpression' && firstParam.path.type === 'PathExpression' && firstParam.path.original === '-each-in') {\n return;\n }\n\n node.params[0] = b.sexpr(b.path('-track-array'), [node.params[0]]);\n return b.block(b.path('each'), node.params, node.hash, node.program, node.inverse, node.loc);\n }\n }\n }\n };\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-has-block-syntax\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _debug, _calculateLocationDisplay, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformHasBlockSyntax;\n\n /**\n @module ember\n */\n\n /**\n A Glimmer2 AST transformation that replaces all instances of\n \n ```handlebars\n {{hasBlock}}\n ```\n \n with\n \n ```handlebars\n {{has-block}}\n ```\n \n @private\n @class TransformHasBlockSyntax\n */\n var TRANSFORMATIONS = {\n hasBlock: 'has-block',\n hasBlockParams: 'has-block-params'\n };\n\n function transformHasBlockSyntax(env) {\n var _a;\n\n var b = env.syntax.builders;\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n\n function emitDeprecationMessage(node, name) {\n var sourceInformation = (0, _calculateLocationDisplay.default)(moduleName, node.loc);\n (true && !(false) && (0, _debug.deprecate)(\"`\" + name + \"` is deprecated. Use `\" + TRANSFORMATIONS[name] + \"` instead. \" + sourceInformation, false, {\n id: 'has-block-and-has-block-params',\n until: '4.0.0',\n url: 'https://deprecations.emberjs.com/v3.x#toc_has-block-and-has-block-params',\n for: 'ember-source',\n since: {\n enabled: '3.25.0'\n }\n }));\n }\n\n return {\n name: 'transform-has-block-syntax',\n visitor: {\n PathExpression: function PathExpression(node) {\n if (TRANSFORMATIONS[node.original]) {\n emitDeprecationMessage(node, node.original);\n return b.sexpr(b.path(TRANSFORMATIONS[node.original]));\n }\n },\n MustacheStatement: function MustacheStatement(node) {\n if ((0, _utils.isPath)(node.path) && TRANSFORMATIONS[node.path.original]) {\n emitDeprecationMessage(node, node.path.original);\n return b.mustache(b.path(TRANSFORMATIONS[node.path.original]), node.params, node.hash, undefined, node.loc);\n }\n },\n SubExpression: function SubExpression(node) {\n if ((0, _utils.isPath)(node.path) && TRANSFORMATIONS[node.path.original]) {\n emitDeprecationMessage(node, node.path.original);\n return b.sexpr(b.path(TRANSFORMATIONS[node.path.original]), node.params, node.hash);\n }\n }\n }\n };\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-in-element\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _debug, _calculateLocationDisplay, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformInElement;\n\n /**\n @module ember\n */\n\n /**\n A Glimmer2 AST transformation that handles the public `{{in-element}}` as per RFC287, and deprecates but still\n continues support for the private `{{-in-element}}`.\n \n Transforms:\n \n ```handlebars\n {{#-in-element someElement}}\n {{modal-display text=text}}\n {{/-in-element}}\n ```\n \n into:\n \n ```handlebars\n {{#in-element someElement}}\n {{modal-display text=text}}\n {{/in-element}}\n ```\n \n And issues a deprecation message.\n \n Issues a build time assertion for:\n \n ```handlebars\n {{#in-element someElement insertBefore=\"some-none-null-value\"}}\n {{modal-display text=text}}\n {{/in-element}}\n ```\n \n @private\n @class TransformInElement\n */\n function transformInElement(env) {\n var _a;\n\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n var b = env.syntax.builders;\n return {\n name: 'transform-in-element',\n visitor: {\n BlockStatement: function BlockStatement(node) {\n if (!(0, _utils.isPath)(node.path)) return;\n\n if (node.path.original === 'in-element') {\n var originalValue = node.params[0];\n\n if (originalValue && !env.isProduction) {\n var subExpr = b.sexpr('-in-el-null', [originalValue]);\n node.params.shift();\n node.params.unshift(subExpr);\n }\n\n node.hash.pairs.forEach(function (pair) {\n if (pair.key === 'insertBefore') {\n (true && !(pair.value.type === 'NullLiteral' || pair.value.type === 'UndefinedLiteral') && (0, _debug.assert)(\"Can only pass null to insertBefore in in-element, received: \" + JSON.stringify(pair.value), pair.value.type === 'NullLiteral' || pair.value.type === 'UndefinedLiteral'));\n }\n });\n } else if (node.path.original === '-in-element') {\n var sourceInformation = (0, _calculateLocationDisplay.default)(moduleName, node.loc);\n (true && !(false) && (0, _debug.deprecate)(\"The use of the private `{{-in-element}}` is deprecated, please refactor to the public `{{in-element}}`. \" + sourceInformation, false, {\n id: 'glimmer.private-in-element',\n until: '3.25.0',\n for: 'ember-source',\n since: {\n enabled: '3.20.0'\n }\n }));\n node.path.original = 'in-element';\n node.path.parts = ['in-element']; // replicate special hash arguments added here:\n // https://github.com/glimmerjs/glimmer-vm/blob/ba9b37d44b85fa1385eeeea71910ff5798198c8e/packages/%40glimmer/syntax/lib/parser/handlebars-node-visitors.ts#L340-L363\n\n var needsInsertBefore = true;\n var hash = node.hash;\n hash.pairs.forEach(function (pair) {\n if (pair.key === 'insertBefore') {\n (true && !(pair.value.type === 'NullLiteral' || pair.value.type === 'UndefinedLiteral') && (0, _debug.assert)(\"Can only pass a null or undefined literals to insertBefore in -in-element, received: \" + JSON.stringify(pair.value), pair.value.type === 'NullLiteral' || pair.value.type === 'UndefinedLiteral'));\n needsInsertBefore = false;\n }\n }); // Maintain compatibility with previous -in-element behavior (defaults to append, not clear)\n\n if (needsInsertBefore) {\n var nullLiteral = b.literal('NullLiteral', null);\n var nextSibling = b.pair('insertBefore', nullLiteral);\n hash.pairs.push(nextSibling);\n }\n }\n }\n }\n };\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-link-to\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _debug, _calculateLocationDisplay, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformLinkTo;\n\n function isInlineLinkTo(node) {\n return (0, _utils.isPath)(node.path) && node.path.original === 'link-to';\n }\n\n function isBlockLinkTo(node) {\n return (0, _utils.isPath)(node.path) && node.path.original === 'link-to';\n }\n\n function isQueryParams(node) {\n return (0, _utils.isSubExpression)(node) && (0, _utils.isPath)(node.path) && node.path.original === 'query-params';\n }\n\n function transformInlineLinkToIntoBlockForm(env, node) {\n var b = env.syntax.builders;\n return b.block('link-to', node.params.slice(1), node.hash, b.blockItself([buildStatement(b, node.params[0], node.escaped, node.loc)], undefined, false, node.loc), null, node.loc);\n }\n\n function transformPositionalLinkToIntoNamedArguments(env, node, hasBlock) {\n if (hasBlock === void 0) {\n hasBlock = true;\n }\n\n var _a, _b;\n\n var b = env.syntax.builders;\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n var params = node.params,\n pairs = node.hash.pairs;\n var keys = pairs.map(function (pair) {\n return pair.key;\n });\n\n if (params.length === 0) {\n (true && !(keys.indexOf('params') !== -1 || keys.indexOf('route') !== -1 || keys.indexOf('model') !== -1 || keys.indexOf('models') !== -1 || keys.indexOf('query') !== -1) && (0, _debug.assert)(\"You must provide one or more parameters to the `{{link-to}}` component. \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), keys.indexOf('params') !== -1 || keys.indexOf('route') !== -1 || keys.indexOf('model') !== -1 || keys.indexOf('models') !== -1 || keys.indexOf('query') !== -1));\n return node;\n } else {\n (true && !(keys.indexOf('params') === -1) && (0, _debug.assert)(\"You cannot pass positional parameters and the `params` argument to the `{{link-to}}` component at the same time. \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), keys.indexOf('params') === -1));\n (true && !(keys.indexOf('route') === -1) && (0, _debug.assert)(\"You cannot pass positional parameters and the `route` argument to the `{{link-to}}` component at the same time. \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), keys.indexOf('route') === -1));\n (true && !(keys.indexOf('model') === -1) && (0, _debug.assert)(\"You cannot pass positional parameters and the `model` argument to the `{{link-to}}` component at the same time. \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), keys.indexOf('model') === -1));\n (true && !(keys.indexOf('models') === -1) && (0, _debug.assert)(\"You cannot pass positional parameters and the `models` argument to the `{{link-to}}` component at the same time. \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), keys.indexOf('models') === -1));\n (true && !(keys.indexOf('query') === -1) && (0, _debug.assert)(\"You cannot pass positional parameters and the `query` argument to the `{{link-to}}` component at the same time. \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), keys.indexOf('query') === -1));\n }\n\n (true && !(params.length > 0) && (0, _debug.assert)(\"You must provide one or more parameters to the `{{link-to}}` component. \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), params.length > 0));\n var equivalentNamedArgs = [];\n var hasQueryParams = false; // 1. The last argument is possibly the `query` object.\n\n var query = params[params.length - 1];\n\n if (query && isQueryParams(query)) {\n params.pop();\n (true && !(query.params.length === 0) && (0, _debug.assert)(\"The `(query-params ...)` helper does not take positional arguments. \" + (0, _calculateLocationDisplay.default)(moduleName, query.loc), query.params.length === 0));\n pairs.push(b.pair('query', b.sexpr(b.path('-hash', query.path.loc), [], query.hash, query.loc), query.loc));\n hasQueryParams = true;\n } // 2. If there is a `route`, it is now at index 0.\n\n\n var route = params.shift();\n\n if (route) {\n pairs.push(b.pair('route', route, route.loc));\n equivalentNamedArgs.push('`@route`');\n } // 3. Any remaining indices (if any) are `models`.\n\n\n if (params.length === 1) {\n pairs.push(b.pair('model', params[0], params[0].loc));\n equivalentNamedArgs.push('`@model`');\n } else if (params.length > 1) {\n pairs.push(b.pair('models', b.sexpr(b.path('array', node.loc), params, undefined, node.loc), node.loc));\n equivalentNamedArgs.push('`@models`');\n }\n\n if (hasQueryParams) {\n equivalentNamedArgs.push('`@query`');\n }\n\n if (equivalentNamedArgs.length > 0) {\n var message = 'Invoking the `<LinkTo>` component with positional arguments is deprecated.';\n message += \"Please use the equivalent named arguments (\" + equivalentNamedArgs.join(', ') + \")\";\n\n if (hasQueryParams) {\n message += ' along with the `hash` helper';\n }\n\n if (!hasBlock) {\n message += \" and pass a block for the link's content.\";\n }\n\n message += '.';\n\n if ((_b = node.loc) === null || _b === void 0 ? void 0 : _b.source) {\n message += \" \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc);\n }\n\n (true && !(false) && (0, _debug.deprecate)(message, false, {\n id: 'ember-glimmer.link-to.positional-arguments',\n until: '4.0.0',\n for: 'ember-source',\n url: 'https://deprecations.emberjs.com/v3.x#toc_ember-glimmer-link-to-positional-arguments',\n since: {\n enabled: '3.26.0-beta.1'\n }\n }));\n }\n\n return b.block(node.path, null, b.hash(pairs, node.hash.loc), node.program, node.inverse, node.loc);\n }\n\n function buildStatement(b, content, escaped, loc) {\n switch (content.type) {\n case 'PathExpression':\n return b.mustache(content, undefined, undefined, !escaped, loc);\n\n case 'SubExpression':\n return b.mustache(content.path, content.params, content.hash, !escaped, loc);\n // The default case handles literals.\n\n default:\n return b.text(\"\" + content.value, loc);\n }\n }\n\n function transformLinkTo(env) {\n return {\n name: 'transform-link-to',\n visitor: {\n MustacheStatement: function MustacheStatement(node) {\n if (isInlineLinkTo(node)) {\n var block = transformInlineLinkToIntoBlockForm(env, node);\n return transformPositionalLinkToIntoNamedArguments(env, block, false);\n }\n },\n BlockStatement: function BlockStatement(node) {\n if (isBlockLinkTo(node)) {\n return transformPositionalLinkToIntoNamedArguments(env, node);\n }\n }\n }\n };\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-old-class-binding-syntax\", [\"exports\", \"@ember/debug\", \"ember-template-compiler/lib/system/calculate-location-display\"], function (_exports, _debug, _calculateLocationDisplay) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformOldClassBindingSyntax;\n\n function transformOldClassBindingSyntax(env) {\n var _a;\n\n var b = env.syntax.builders;\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n return {\n name: 'transform-old-class-binding-syntax',\n visitor: {\n MustacheStatement: function MustacheStatement(node) {\n process(b, node, moduleName);\n },\n BlockStatement: function BlockStatement(node) {\n process(b, node, moduleName);\n }\n }\n };\n }\n\n function process(b, node, moduleName) {\n var allOfTheMicrosyntaxes = [];\n var allOfTheMicrosyntaxIndexes = [];\n var classPair;\n each(node.hash.pairs, function (pair, index) {\n var key = pair.key;\n\n if (key === 'classBinding' || key === 'classNameBindings') {\n (true && !(false) && (0, _debug.deprecate)(\"Passing the `\" + key + \"` property as an argument within templates has been deprecated. Instead, you can pass the class argument and use concatenation to produce the class value dynamically. \" + (0, _calculateLocationDisplay.default)(moduleName, node.loc), false, {\n id: 'class-binding-and-class-name-bindings-in-templates',\n url: 'https://deprecations.emberjs.com/v3.x/#toc_class-binding-and-class-name-bindings-in-templates',\n until: '4.0.0',\n for: 'ember-source',\n since: {\n enabled: '3.26.0'\n }\n }));\n allOfTheMicrosyntaxIndexes.push(index);\n allOfTheMicrosyntaxes.push(pair);\n } else if (key === 'class') {\n classPair = pair;\n }\n });\n\n if (allOfTheMicrosyntaxes.length === 0) {\n return;\n }\n\n var classValue = [];\n\n if (classPair) {\n classValue.push(classPair.value);\n classValue.push(b.string(' '));\n } else {\n classPair = b.pair('class', null);\n node.hash.pairs.push(classPair);\n }\n\n each(allOfTheMicrosyntaxIndexes, function (index) {\n node.hash.pairs.splice(index, 1);\n });\n each(allOfTheMicrosyntaxes, function (_ref) {\n var value = _ref.value;\n var sexprs = []; // TODO: add helpful deprecation when both `classNames` and `classNameBindings` can\n // be removed.\n\n if (value.type === 'StringLiteral') {\n var microsyntax = parseMicrosyntax(value.original);\n buildSexprs(microsyntax, sexprs, b);\n classValue.push.apply(classValue, sexprs);\n }\n });\n var hash = b.hash();\n classPair.value = b.sexpr(b.path('concat'), classValue, hash);\n }\n\n function buildSexprs(microsyntax, sexprs, b) {\n for (var i = 0; i < microsyntax.length; i++) {\n var _microsyntax$i = microsyntax[i],\n propName = _microsyntax$i[0],\n activeClass = _microsyntax$i[1],\n inactiveClass = _microsyntax$i[2];\n var sexpr = void 0; // :my-class-name microsyntax for static values\n\n if (propName === '') {\n sexpr = b.string(activeClass);\n } else {\n var params = [b.path(propName)];\n\n if (activeClass || activeClass === '') {\n params.push(b.string(activeClass));\n } else {\n var sexprParams = [b.string(propName), b.path(propName)];\n var hash = b.hash();\n\n if (activeClass !== undefined) {\n hash.pairs.push(b.pair('activeClass', b.string(activeClass)));\n }\n\n if (inactiveClass !== undefined) {\n hash.pairs.push(b.pair('inactiveClass', b.string(inactiveClass)));\n }\n\n params.push(b.sexpr(b.path('-normalize-class'), sexprParams, hash));\n }\n\n if (inactiveClass || inactiveClass === '') {\n params.push(b.string(inactiveClass));\n }\n\n sexpr = b.sexpr(b.path('if'), params);\n }\n\n sexprs.push(sexpr);\n sexprs.push(b.string(' '));\n }\n }\n\n function each(list, callback) {\n for (var i = 0; i < list.length; i++) {\n callback(list[i], i);\n }\n }\n\n function parseMicrosyntax(string) {\n var segments = string.split(' ');\n var ret = [];\n\n for (var i = 0; i < segments.length; i++) {\n ret[i] = segments[i].split(':');\n }\n\n return ret;\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformQuotedBindingsIntoJustBindings;\n\n function transformQuotedBindingsIntoJustBindings()\n /* env */\n {\n return {\n name: 'transform-quoted-bindings-into-just-bindings',\n visitor: {\n ElementNode: function ElementNode(node) {\n var styleAttr = getStyleAttr(node);\n\n if (!validStyleAttr(styleAttr)) {\n return;\n }\n\n styleAttr.value = styleAttr.value.parts[0];\n }\n }\n };\n }\n\n function validStyleAttr(attr) {\n if (!attr) {\n return false;\n }\n\n var value = attr.value;\n\n if (!value || value.type !== 'ConcatStatement' || value.parts.length !== 1) {\n return false;\n }\n\n var onlyPart = value.parts[0];\n return onlyPart.type === 'MustacheStatement';\n }\n\n function getStyleAttr(node) {\n var attributes = node.attributes;\n\n for (var i = 0; i < attributes.length; i++) {\n if (attributes[i].name === 'style') {\n return attributes[i];\n }\n }\n\n return undefined;\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-resolutions\", [\"exports\", \"@ember/debug\", \"@glimmer/syntax\", \"ember-template-compiler/lib/system/calculate-location-display\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _debug, _syntax, _calculateLocationDisplay, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformResolutions;\n\n /**\n @module ember\n */\n\n /**\n A Glimmer2 AST transformation that replaces all instances of\n \n ```handlebars\n {{helper \"...\" ...}}\n ```\n \n with\n \n ```handlebars\n {{helper (-resolve \"helper:...\") ...}}\n ```\n \n and\n \n ```handlebars\n {{helper ... ...}}\n ```\n \n with\n \n ```handlebars\n {{helper (-disallow-dynamic-resolution ...) ...}}\n ```\n \n and\n \n ```handlebars\n {{modifier \"...\" ...}}\n ```\n \n with\n \n ```handlebars\n {{modifier (-resolve \"modifier:...\") ...}}\n ```\n and\n \n ```handlebars\n {{modifier ... ...}}\n ```\n \n with\n \n ```handlebars\n {{modifier (-disallow-dynamic-resolution ...) ...}}\n ```\n \n @private\n @class TransformResolutions\n */\n var TARGETS = Object.freeze(['helper', 'modifier']);\n\n function transformResolutions(env) {\n var _a;\n\n var b = env.syntax.builders;\n var moduleName = (_a = env.meta) === null || _a === void 0 ? void 0 : _a.moduleName;\n\n var _trackLocals = (0, _utils.trackLocals)(),\n hasLocal = _trackLocals.hasLocal,\n tracker = _trackLocals.node;\n\n var seen;\n return {\n name: 'transform-resolutions',\n visitor: {\n Template: {\n enter: function enter() {\n seen = new Set();\n },\n exit: function exit() {\n seen = undefined;\n }\n },\n Block: tracker,\n ElementNode: {\n keys: {\n children: tracker\n }\n },\n MustacheStatement: function MustacheStatement(node) {\n (true && !(seen) && (0, _debug.assert)('[BUG] seen set should be available', seen));\n\n if (seen.has(node)) {\n return;\n }\n\n if ((0, _utils.isPath)(node.path) && !isLocalVariable(node.path, hasLocal) && TARGETS.indexOf(node.path.original) !== -1) {\n var result = b.mustache(node.path, transformParams(b, node.params, node.path.original, moduleName, node.loc), node.hash, node.trusting, node.loc, node.strip); // Avoid double/infinite-processing\n\n seen.add(result);\n return result;\n }\n },\n SubExpression: function SubExpression(node) {\n (true && !(seen) && (0, _debug.assert)('[BUG] seen set should be available', seen));\n\n if (seen.has(node)) {\n return;\n }\n\n if ((0, _utils.isPath)(node.path) && !isLocalVariable(node.path, hasLocal) && TARGETS.indexOf(node.path.original) !== -1) {\n var result = b.sexpr(node.path, transformParams(b, node.params, node.path.original, moduleName, node.loc), node.hash, node.loc); // Avoid double/infinite-processing\n\n seen.add(result);\n return result;\n }\n }\n }\n };\n }\n\n function isLocalVariable(node, hasLocal) {\n return !node.this && node.parts.length === 1 && hasLocal(node.parts[0]);\n }\n\n function transformParams(b, params, type, moduleName, loc) {\n var first = params[0],\n rest = params.slice(1);\n (true && !(first) && (0, _debug.assert)(\"The \" + type + \" keyword requires at least one positional arguments \" + (0, _calculateLocationDisplay.default)(moduleName, loc), first));\n\n if ((0, _utils.isStringLiteral)(first)) {\n return [b.sexpr(b.path('-resolve', first.loc), [b.string(type + \":\" + first.value)], undefined, first.loc)].concat(rest);\n } else if (true\n /* DEBUG */\n ) {\n return [b.sexpr(b.path('-disallow-dynamic-resolution', first.loc), [first], b.hash([b.pair('type', b.string(type), first.loc), b.pair('loc', b.string((0, _calculateLocationDisplay.default)(moduleName, loc)), first.loc), b.pair('original', b.string((0, _syntax.print)(first)))]), first.loc)].concat(rest);\n } else {\n return params;\n }\n }\n});","define(\"ember-template-compiler/lib/plugins/transform-wrap-mount-and-outlet\", [\"exports\", \"ember-template-compiler/lib/plugins/utils\"], function (_exports, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = transformWrapMountAndOutlet;\n\n /**\n @module ember\n */\n\n /**\n A Glimmer2 AST transformation that replaces all instances of\n \n ```handlebars\n {{mount \"engine\" model=this.model}}\n ```\n \n with\n \n ```handlebars\n {{component (-mount \"engine\" model=this.model)}}\n ```\n \n and\n \n ```handlebars\n {{outlet}}\n ```\n \n with\n \n ```handlebars\n {{component (-outlet)}}\n ```\n \n @private\n @class TransformHasBlockSyntax\n */\n function transformWrapMountAndOutlet(env) {\n var b = env.syntax.builders;\n\n var _trackLocals = (0, _utils.trackLocals)(),\n hasLocal = _trackLocals.hasLocal,\n node = _trackLocals.node;\n\n return {\n name: 'transform-wrap-mount-and-outlet',\n visitor: {\n Program: node,\n ElementNode: node,\n MustacheStatement: function MustacheStatement(node) {\n if ((0, _utils.isPath)(node.path) && (node.path.original === 'mount' || node.path.original === 'outlet') && !hasLocal(node.path.original)) {\n var subexpression = b.sexpr(b.path(\"-\" + node.path.original), node.params, node.hash, node.loc);\n return b.mustache(b.path('component'), [subexpression], b.hash(), undefined, node.loc);\n }\n }\n }\n };\n }\n});","define(\"ember-template-compiler/lib/plugins/utils\", [\"exports\", \"ember-babel\"], function (_exports, _emberBabel) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.isPath = isPath;\n _exports.isSubExpression = isSubExpression;\n _exports.isStringLiteral = isStringLiteral;\n _exports.trackLocals = trackLocals;\n\n function isPath(node) {\n return node.type === 'PathExpression';\n }\n\n function isSubExpression(node) {\n return node.type === 'SubExpression';\n }\n\n function isStringLiteral(node) {\n return node.type === 'StringLiteral';\n }\n\n function trackLocals() {\n var locals = new Map();\n var node = {\n enter: function enter(node) {\n for (var _iterator = (0, _emberBabel.createForOfIteratorHelperLoose)(node.blockParams), _step; !(_step = _iterator()).done;) {\n var _param = _step.value;\n\n var _value = locals.get(_param) || 0;\n\n locals.set(_param, _value + 1);\n }\n },\n exit: function exit(node) {\n for (var _iterator2 = (0, _emberBabel.createForOfIteratorHelperLoose)(node.blockParams), _step2; !(_step2 = _iterator2()).done;) {\n var _param2 = _step2.value;\n\n var _value2 = locals.get(_param2) - 1;\n\n if (_value2 === 0) {\n locals.delete(_param2);\n } else {\n locals.set(_param2, _value2);\n }\n }\n }\n };\n return {\n hasLocal: function hasLocal(key) {\n return locals.has(key);\n },\n node: node\n };\n }\n});","define(\"ember-template-compiler/lib/system/bootstrap\", [\"exports\", \"ember-template-compiler/lib/system/compile\"], function (_exports, _compile) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n\n /**\n @module ember\n */\n\n /**\n Find templates stored in the head tag as script tags and make them available\n to `Ember.CoreView` in the global `Ember.TEMPLATES` object.\n \n Script tags with `text/x-handlebars` will be compiled\n with Ember's template compiler and are suitable for use as a view's template.\n \n @private\n @method bootstrap\n @for Ember.HTMLBars\n @static\n @param ctx\n */\n function bootstrap(_ref) {\n var context = _ref.context,\n hasTemplate = _ref.hasTemplate,\n setTemplate = _ref.setTemplate;\n\n if (!context) {\n context = document;\n }\n\n var selector = 'script[type=\"text/x-handlebars\"]';\n var elements = context.querySelectorAll(selector);\n\n for (var i = 0; i < elements.length; i++) {\n var script = elements[i]; // Get the name of the script\n // First look for data-template-name attribute, then fall back to its\n // id if no name is found.\n\n var templateName = script.getAttribute('data-template-name') || script.getAttribute('id') || 'application';\n var template = void 0;\n template = (0, _compile.default)(script.innerHTML, {\n moduleName: templateName\n }); // Check if template of same name already exists.\n\n if (hasTemplate(templateName)) {\n throw new Error(\"Template named \\\"\" + templateName + \"\\\" already exists.\");\n } // For templates which have a name, we save them and then remove them from the DOM.\n\n\n setTemplate(templateName, template); // Remove script tag from DOM.\n\n script.parentNode.removeChild(script);\n }\n }\n\n var _default = bootstrap;\n _exports.default = _default;\n});","define(\"ember-template-compiler/lib/system/calculate-location-display\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = calculateLocationDisplay;\n\n function calculateLocationDisplay(moduleName, loc) {\n var moduleInfo = '';\n\n if (moduleName) {\n moduleInfo += \"'\" + moduleName + \"' \";\n }\n\n if (loc) {\n var _ref = loc.start || {\n line: undefined,\n column: undefined\n },\n column = _ref.column,\n line = _ref.line;\n\n if (line !== undefined && column !== undefined) {\n if (moduleName) {\n // only prepend @ if the moduleName was present\n moduleInfo += '@ ';\n }\n\n moduleInfo += \"L\" + line + \":C\" + column;\n }\n }\n\n if (moduleInfo) {\n moduleInfo = \"(\" + moduleInfo + \") \";\n }\n\n return moduleInfo;\n }\n});","define(\"ember-template-compiler/lib/system/compile-options\", [\"exports\", \"@ember/debug\", \"@ember/polyfills\", \"ember-template-compiler/lib/plugins/index\", \"ember-template-compiler/lib/system/dasherize-component-name\"], function (_exports, _debug, _polyfills, _index, _dasherizeComponentName) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.buildCompileOptions = buildCompileOptions;\n _exports.transformsFor = transformsFor;\n _exports.default = compileOptions;\n _exports.registerPlugin = registerPlugin;\n _exports.unregisterPlugin = unregisterPlugin;\n var USER_PLUGINS = [];\n\n function malformedComponentLookup(string) {\n return string.indexOf('::') === -1 && string.indexOf(':') > -1;\n }\n\n function buildCompileOptions(_options) {\n var moduleName = _options.moduleName;\n var options = (0, _polyfills.assign)({\n meta: {},\n isProduction: false,\n plugins: {\n ast: []\n }\n }, _options, {\n moduleName: moduleName,\n customizeComponentName: function customizeComponentName(tagname) {\n (true && !(!malformedComponentLookup(tagname)) && (0, _debug.assert)(\"You tried to invoke a component named <\" + tagname + \" /> in \\\"\" + (moduleName !== null && moduleName !== void 0 ? moduleName : '[NO MODULE]') + \"\\\", but that is not a valid name for a component. Did you mean to use the \\\"::\\\" syntax for nested components?\", !malformedComponentLookup(tagname)));\n return _dasherizeComponentName.default.get(tagname);\n }\n });\n\n if (!true\n /* EMBER_STRICT_MODE */\n ) {\n options.strictMode = false;\n options.locals = undefined;\n }\n\n if ('locals' in options && !options.locals) {\n // Glimmer's precompile options declare `locals` like:\n // locals?: string[]\n // but many in-use versions of babel-plugin-htmlbars-inline-precompile will\n // set locals to `null`. This used to work but only because glimmer was\n // ignoring locals for non-strict templates, and now it supports that case.\n delete options.locals;\n } // move `moduleName` into `meta` property\n\n\n if (options.moduleName) {\n var meta = options.meta;\n (true && !(meta) && (0, _debug.assert)('has meta', meta)); // We just set it\n\n meta.moduleName = options.moduleName;\n }\n\n return options;\n }\n\n function transformsFor(options) {\n return true\n /* EMBER_STRICT_MODE */\n && options.strictMode ? _index.STRICT_MODE_TRANSFORMS : _index.RESOLUTION_MODE_TRANSFORMS;\n }\n\n function compileOptions(_options) {\n if (_options === void 0) {\n _options = {};\n }\n\n var options = buildCompileOptions(_options);\n var builtInPlugins = transformsFor(options);\n\n if (!_options.plugins) {\n options.plugins = {\n ast: [].concat(USER_PLUGINS, builtInPlugins)\n };\n } else {\n var potententialPugins = [].concat(USER_PLUGINS, builtInPlugins);\n (true && !(options.plugins) && (0, _debug.assert)('expected plugins', options.plugins));\n var providedPlugins = options.plugins.ast.map(function (plugin) {\n return wrapLegacyPluginIfNeeded(plugin);\n });\n var pluginsToAdd = potententialPugins.filter(function (plugin) {\n (true && !(options.plugins) && (0, _debug.assert)('expected plugins', options.plugins));\n return options.plugins.ast.indexOf(plugin) === -1;\n });\n options.plugins.ast = providedPlugins.concat(pluginsToAdd);\n }\n\n return options;\n }\n\n function isLegacyPluginClass(plugin) {\n return plugin.prototype && typeof plugin.prototype.transform === 'function';\n }\n\n function wrapLegacyPluginIfNeeded(plugin) {\n if (isLegacyPluginClass(plugin)) {\n var Plugin = plugin;\n (true && !(false) && (0, _debug.deprecate)(\"Using class based template compilation plugins is deprecated, please update to the functional style: \" + Plugin.name, false, {\n id: 'template-compiler.registerPlugin',\n until: '4.0.0',\n for: 'ember-source',\n since: {\n enabled: '3.27.0'\n }\n }));\n\n var pluginFunc = function pluginFunc(env) {\n var pluginInstantiated = false;\n return {\n name: plugin.name,\n visitor: {\n Program: function Program(node) {\n if (!pluginInstantiated) {\n pluginInstantiated = true;\n var instance = new Plugin(env);\n instance.syntax = env.syntax;\n return instance.transform(node);\n }\n }\n }\n };\n };\n\n pluginFunc.__raw = Plugin;\n return pluginFunc;\n } else {\n return plugin;\n }\n }\n\n function registerPlugin(type, _plugin) {\n (true && !(false) && (0, _debug.deprecate)('registerPlugin is deprecated, please pass plugins directly via `compile` and/or `precompile`.', false, {\n id: 'template-compiler.registerPlugin',\n until: '4.0.0',\n for: 'ember-source',\n since: {\n enabled: '3.27.0'\n }\n }));\n\n if (type !== 'ast') {\n throw new Error(\"Attempting to register \" + _plugin + \" as \\\"\" + type + \"\\\" which is not a valid Glimmer plugin type.\");\n }\n\n for (var i = 0; i < USER_PLUGINS.length; i++) {\n var PLUGIN = USER_PLUGINS[i];\n\n if (PLUGIN === _plugin || PLUGIN.__raw === _plugin) {\n return;\n }\n }\n\n var plugin = wrapLegacyPluginIfNeeded(_plugin);\n USER_PLUGINS = [plugin].concat(USER_PLUGINS);\n }\n\n function unregisterPlugin(type, PluginClass) {\n (true && !(false) && (0, _debug.deprecate)('unregisterPlugin is deprecated, please pass plugins directly via `compile` and/or `precompile`.', false, {\n id: 'template-compiler.registerPlugin',\n until: '4.0.0',\n for: 'ember-source',\n since: {\n enabled: '3.27.0'\n }\n }));\n\n if (type !== 'ast') {\n throw new Error(\"Attempting to unregister \" + PluginClass + \" as \\\"\" + type + \"\\\" which is not a valid Glimmer plugin type.\");\n }\n\n USER_PLUGINS = USER_PLUGINS.filter(function (plugin) {\n return plugin !== PluginClass && plugin.__raw !== PluginClass;\n });\n }\n});","define(\"ember-template-compiler/lib/system/compile\", [\"exports\", \"require\", \"ember-template-compiler/lib/system/precompile\"], function (_exports, _require, _precompile) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = compile;\n\n /**\n @module ember\n */\n var template;\n /**\n Uses HTMLBars `compile` function to process a string into a compiled template.\n This is not present in production builds.\n @private\n @method compile\n @param {String} templateString This is the string to be compiled by HTMLBars.\n @param {Object} options This is an options hash to augment the compiler options.\n */\n\n function compile(templateString, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (!template && (0, _require.has)('@ember/-internals/glimmer')) {\n // tslint:disable-next-line:no-require-imports\n template = (0, _require.default)(\"@ember/-internals/glimmer\").template;\n }\n\n if (!template) {\n throw new Error('Cannot call `compile` with only the template compiler loaded. Please load `ember.debug.js` or `ember.prod.js` prior to calling `compile`.');\n }\n\n return template(evaluate((0, _precompile.default)(templateString, options)));\n }\n\n function evaluate(precompiled) {\n return new Function(\"return \" + precompiled)();\n }\n});","define(\"ember-template-compiler/lib/system/dasherize-component-name\", [\"exports\", \"@ember/-internals/utils\"], function (_exports, _utils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n\n /*\n This diverges from `Ember.String.dasherize` so that`<XFoo />` can resolve to `x-foo`.\n `Ember.String.dasherize` would resolve it to `xfoo`..\n */\n var SIMPLE_DASHERIZE_REGEXP = /[A-Z]|::/g;\n var ALPHA = /[A-Za-z0-9]/;\n\n var _default = new _utils.Cache(1000, function (key) {\n return key.replace(SIMPLE_DASHERIZE_REGEXP, function (char, index) {\n if (char === '::') {\n return '/';\n }\n\n if (index === 0 || !ALPHA.test(key[index - 1])) {\n return char.toLowerCase();\n }\n\n return \"-\" + char.toLowerCase();\n });\n });\n\n _exports.default = _default;\n});","define(\"ember-template-compiler/lib/system/initializer\", [\"require\", \"ember-template-compiler/lib/system/bootstrap\"], function (_require, _bootstrap) {\n \"use strict\";\n\n // Globals mode template compiler\n if ((0, _require.has)('@ember/application') && (0, _require.has)('@ember/-internals/browser-environment') && (0, _require.has)('@ember/-internals/glimmer')) {\n // tslint:disable:no-require-imports\n var emberEnv = (0, _require.default)(\"@ember/-internals/browser-environment\");\n var emberGlimmer = (0, _require.default)(\"@ember/-internals/glimmer\");\n var emberApp = (0, _require.default)(\"@ember/application\");\n var Application = emberApp.default;\n var hasTemplate = emberGlimmer.hasTemplate,\n setTemplate = emberGlimmer.setTemplate;\n var hasDOM = emberEnv.hasDOM;\n Application.initializer({\n name: 'domTemplates',\n initialize: function initialize() {\n if (hasDOM) {\n (0, _bootstrap.default)({\n context: document,\n hasTemplate: hasTemplate,\n setTemplate: setTemplate\n });\n }\n }\n });\n }\n});","define(\"ember-template-compiler/lib/system/precompile\", [\"exports\", \"@glimmer/compiler\", \"ember-template-compiler/lib/system/compile-options\"], function (_exports, _compiler, _compileOptions) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = precompile;\n\n /**\n @module ember\n */\n\n /**\n Uses HTMLBars `compile` function to process a string into a compiled template string.\n The returned string must be passed through `Ember.HTMLBars.template`.\n \n This is not present in production builds.\n \n @private\n @method precompile\n @param {String} templateString This is the string to be compiled by HTMLBars.\n */\n function precompile(templateString, options) {\n if (options === void 0) {\n options = {};\n }\n\n return (0, _compiler.precompile)(templateString, (0, _compileOptions.default)(options));\n }\n});","define(\"ember/version\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n var _default = \"3.28.9\";\n _exports.default = _default;\n});","define(\"simple-html-tokenizer\", [\"exports\"], function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.tokenize = tokenize;\n _exports.Tokenizer = _exports.EventedTokenizer = _exports.EntityParser = _exports.HTML5NamedCharRefs = void 0;\n\n /**\n * generated from https://raw.githubusercontent.com/w3c/html/26b5126f96f736f796b9e29718138919dd513744/entities.json\n * do not edit\n */\n var namedCharRefs = {\n Aacute: \"Á\",\n aacute: \"á\",\n Abreve: \"Ă\",\n abreve: \"ă\",\n ac: \"∾\",\n acd: \"∿\",\n acE: \"∾̳\",\n Acirc: \"Â\",\n acirc: \"â\",\n acute: \"´\",\n Acy: \"А\",\n acy: \"а\",\n AElig: \"Æ\",\n aelig: \"æ\",\n af: \"\\u2061\",\n Afr: \"𝔄\",\n afr: \"𝔞\",\n Agrave: \"À\",\n agrave: \"à\",\n alefsym: \"ℵ\",\n aleph: \"ℵ\",\n Alpha: \"Α\",\n alpha: \"α\",\n Amacr: \"Ā\",\n amacr: \"ā\",\n amalg: \"⨿\",\n amp: \"&\",\n AMP: \"&\",\n andand: \"⩕\",\n And: \"⩓\",\n and: \"∧\",\n andd: \"⩜\",\n andslope: \"⩘\",\n andv: \"⩚\",\n ang: \"∠\",\n ange: \"⦤\",\n angle: \"∠\",\n angmsdaa: \"⦨\",\n angmsdab: \"⦩\",\n angmsdac: \"⦪\",\n angmsdad: \"⦫\",\n angmsdae: \"⦬\",\n angmsdaf: \"⦭\",\n angmsdag: \"⦮\",\n angmsdah: \"⦯\",\n angmsd: \"∡\",\n angrt: \"∟\",\n angrtvb: \"⊾\",\n angrtvbd: \"⦝\",\n angsph: \"∢\",\n angst: \"Å\",\n angzarr: \"⍼\",\n Aogon: \"Ą\",\n aogon: \"ą\",\n Aopf: \"𝔸\",\n aopf: \"𝕒\",\n apacir: \"⩯\",\n ap: \"≈\",\n apE: \"⩰\",\n ape: \"≊\",\n apid: \"≋\",\n apos: \"'\",\n ApplyFunction: \"\\u2061\",\n approx: \"≈\",\n approxeq: \"≊\",\n Aring: \"Å\",\n aring: \"å\",\n Ascr: \"𝒜\",\n ascr: \"𝒶\",\n Assign: \"≔\",\n ast: \"*\",\n asymp: \"≈\",\n asympeq: \"≍\",\n Atilde: \"Ã\",\n atilde: \"ã\",\n Auml: \"Ä\",\n auml: \"ä\",\n awconint: \"∳\",\n awint: \"⨑\",\n backcong: \"≌\",\n backepsilon: \"϶\",\n backprime: \"‵\",\n backsim: \"∽\",\n backsimeq: \"⋍\",\n Backslash: \"∖\",\n Barv: \"⫧\",\n barvee: \"⊽\",\n barwed: \"⌅\",\n Barwed: \"⌆\",\n barwedge: \"⌅\",\n bbrk: \"⎵\",\n bbrktbrk: \"⎶\",\n bcong: \"≌\",\n Bcy: \"Б\",\n bcy: \"б\",\n bdquo: \"„\",\n becaus: \"∵\",\n because: \"∵\",\n Because: \"∵\",\n bemptyv: \"⦰\",\n bepsi: \"϶\",\n bernou: \"ℬ\",\n Bernoullis: \"ℬ\",\n Beta: \"Β\",\n beta: \"β\",\n beth: \"ℶ\",\n between: \"≬\",\n Bfr: \"𝔅\",\n bfr: \"𝔟\",\n bigcap: \"⋂\",\n bigcirc: \"◯\",\n bigcup: \"⋃\",\n bigodot: \"⨀\",\n bigoplus: \"⨁\",\n bigotimes: \"⨂\",\n bigsqcup: \"⨆\",\n bigstar: \"★\",\n bigtriangledown: \"▽\",\n bigtriangleup: \"△\",\n biguplus: \"⨄\",\n bigvee: \"⋁\",\n bigwedge: \"⋀\",\n bkarow: \"⤍\",\n blacklozenge: \"⧫\",\n blacksquare: \"▪\",\n blacktriangle: \"▴\",\n blacktriangledown: \"▾\",\n blacktriangleleft: \"◂\",\n blacktriangleright: \"▸\",\n blank: \"␣\",\n blk12: \"▒\",\n blk14: \"░\",\n blk34: \"▓\",\n block: \"█\",\n bne: \"=⃥\",\n bnequiv: \"≡⃥\",\n bNot: \"⫭\",\n bnot: \"⌐\",\n Bopf: \"𝔹\",\n bopf: \"𝕓\",\n bot: \"⊥\",\n bottom: \"⊥\",\n bowtie: \"⋈\",\n boxbox: \"⧉\",\n boxdl: \"┐\",\n boxdL: \"╕\",\n boxDl: \"╖\",\n boxDL: \"╗\",\n boxdr: \"┌\",\n boxdR: \"╒\",\n boxDr: \"╓\",\n boxDR: \"╔\",\n boxh: \"─\",\n boxH: \"═\",\n boxhd: \"┬\",\n boxHd: \"╤\",\n boxhD: \"╥\",\n boxHD: \"╦\",\n boxhu: \"┴\",\n boxHu: \"╧\",\n boxhU: \"╨\",\n boxHU: \"╩\",\n boxminus: \"⊟\",\n boxplus: \"⊞\",\n boxtimes: \"⊠\",\n boxul: \"┘\",\n boxuL: \"╛\",\n boxUl: \"╜\",\n boxUL: \"╝\",\n boxur: \"└\",\n boxuR: \"╘\",\n boxUr: \"╙\",\n boxUR: \"╚\",\n boxv: \"│\",\n boxV: \"║\",\n boxvh: \"┼\",\n boxvH: \"╪\",\n boxVh: \"╫\",\n boxVH: \"╬\",\n boxvl: \"┤\",\n boxvL: \"╡\",\n boxVl: \"╢\",\n boxVL: \"╣\",\n boxvr: \"├\",\n boxvR: \"╞\",\n boxVr: \"╟\",\n boxVR: \"╠\",\n bprime: \"‵\",\n breve: \"˘\",\n Breve: \"˘\",\n brvbar: \"¦\",\n bscr: \"𝒷\",\n Bscr: \"ℬ\",\n bsemi: \"⁏\",\n bsim: \"∽\",\n bsime: \"⋍\",\n bsolb: \"⧅\",\n bsol: \"\\\\\",\n bsolhsub: \"⟈\",\n bull: \"•\",\n bullet: \"•\",\n bump: \"≎\",\n bumpE: \"⪮\",\n bumpe: \"≏\",\n Bumpeq: \"≎\",\n bumpeq: \"≏\",\n Cacute: \"Ć\",\n cacute: \"ć\",\n capand: \"⩄\",\n capbrcup: \"⩉\",\n capcap: \"⩋\",\n cap: \"∩\",\n Cap: \"⋒\",\n capcup: \"⩇\",\n capdot: \"⩀\",\n CapitalDifferentialD: \"ⅅ\",\n caps: \"∩︀\",\n caret: \"⁁\",\n caron: \"ˇ\",\n Cayleys: \"ℭ\",\n ccaps: \"⩍\",\n Ccaron: \"Č\",\n ccaron: \"č\",\n Ccedil: \"Ç\",\n ccedil: \"ç\",\n Ccirc: \"Ĉ\",\n ccirc: \"ĉ\",\n Cconint: \"∰\",\n ccups: \"⩌\",\n ccupssm: \"⩐\",\n Cdot: \"Ċ\",\n cdot: \"ċ\",\n cedil: \"¸\",\n Cedilla: \"¸\",\n cemptyv: \"⦲\",\n cent: \"¢\",\n centerdot: \"·\",\n CenterDot: \"·\",\n cfr: \"𝔠\",\n Cfr: \"ℭ\",\n CHcy: \"Ч\",\n chcy: \"ч\",\n check: \"✓\",\n checkmark: \"✓\",\n Chi: \"Χ\",\n chi: \"χ\",\n circ: \"ˆ\",\n circeq: \"≗\",\n circlearrowleft: \"↺\",\n circlearrowright: \"↻\",\n circledast: \"⊛\",\n circledcirc: \"⊚\",\n circleddash: \"⊝\",\n CircleDot: \"⊙\",\n circledR: \"®\",\n circledS: \"Ⓢ\",\n CircleMinus: \"⊖\",\n CirclePlus: \"⊕\",\n CircleTimes: \"⊗\",\n cir: \"○\",\n cirE: \"⧃\",\n cire: \"≗\",\n cirfnint: \"⨐\",\n cirmid: \"⫯\",\n cirscir: \"⧂\",\n ClockwiseContourIntegral: \"∲\",\n CloseCurlyDoubleQuote: \"”\",\n CloseCurlyQuote: \"’\",\n clubs: \"♣\",\n clubsuit: \"♣\",\n colon: \":\",\n Colon: \"∷\",\n Colone: \"⩴\",\n colone: \"≔\",\n coloneq: \"≔\",\n comma: \",\",\n commat: \"@\",\n comp: \"∁\",\n compfn: \"∘\",\n complement: \"∁\",\n complexes: \"ℂ\",\n cong: \"≅\",\n congdot: \"⩭\",\n Congruent: \"≡\",\n conint: \"∮\",\n Conint: \"∯\",\n ContourIntegral: \"∮\",\n copf: \"𝕔\",\n Copf: \"ℂ\",\n coprod: \"∐\",\n Coproduct: \"∐\",\n copy: \"©\",\n COPY: \"©\",\n copysr: \"℗\",\n CounterClockwiseContourIntegral: \"∳\",\n crarr: \"↵\",\n cross: \"✗\",\n Cross: \"⨯\",\n Cscr: \"𝒞\",\n cscr: \"𝒸\",\n csub: \"⫏\",\n csube: \"⫑\",\n csup: \"⫐\",\n csupe: \"⫒\",\n ctdot: \"⋯\",\n cudarrl: \"⤸\",\n cudarrr: \"⤵\",\n cuepr: \"⋞\",\n cuesc: \"⋟\",\n cularr: \"↶\",\n cularrp: \"⤽\",\n cupbrcap: \"⩈\",\n cupcap: \"⩆\",\n CupCap: \"≍\",\n cup: \"∪\",\n Cup: \"⋓\",\n cupcup: \"⩊\",\n cupdot: \"⊍\",\n cupor: \"⩅\",\n cups: \"∪︀\",\n curarr: \"↷\",\n curarrm: \"⤼\",\n curlyeqprec: \"⋞\",\n curlyeqsucc: \"⋟\",\n curlyvee: \"⋎\",\n curlywedge: \"⋏\",\n curren: \"¤\",\n curvearrowleft: \"↶\",\n curvearrowright: \"↷\",\n cuvee: \"⋎\",\n cuwed: \"⋏\",\n cwconint: \"∲\",\n cwint: \"∱\",\n cylcty: \"⌭\",\n dagger: \"†\",\n Dagger: \"‡\",\n daleth: \"ℸ\",\n darr: \"↓\",\n Darr: \"↡\",\n dArr: \"⇓\",\n dash: \"‐\",\n Dashv: \"⫤\",\n dashv: \"⊣\",\n dbkarow: \"⤏\",\n dblac: \"˝\",\n Dcaron: \"Ď\",\n dcaron: \"ď\",\n Dcy: \"Д\",\n dcy: \"д\",\n ddagger: \"‡\",\n ddarr: \"⇊\",\n DD: \"ⅅ\",\n dd: \"ⅆ\",\n DDotrahd: \"⤑\",\n ddotseq: \"⩷\",\n deg: \"°\",\n Del: \"∇\",\n Delta: \"Δ\",\n delta: \"δ\",\n demptyv: \"⦱\",\n dfisht: \"⥿\",\n Dfr: \"𝔇\",\n dfr: \"𝔡\",\n dHar: \"⥥\",\n dharl: \"⇃\",\n dharr: \"⇂\",\n DiacriticalAcute: \"´\",\n DiacriticalDot: \"˙\",\n DiacriticalDoubleAcute: \"˝\",\n DiacriticalGrave: \"`\",\n DiacriticalTilde: \"˜\",\n diam: \"⋄\",\n diamond: \"⋄\",\n Diamond: \"⋄\",\n diamondsuit: \"♦\",\n diams: \"♦\",\n die: \"¨\",\n DifferentialD: \"ⅆ\",\n digamma: \"ϝ\",\n disin: \"⋲\",\n div: \"÷\",\n divide: \"÷\",\n divideontimes: \"⋇\",\n divonx: \"⋇\",\n DJcy: \"Ђ\",\n djcy: \"ђ\",\n dlcorn: \"⌞\",\n dlcrop: \"⌍\",\n dollar: \"$\",\n Dopf: \"𝔻\",\n dopf: \"𝕕\",\n Dot: \"¨\",\n dot: \"˙\",\n DotDot: \"⃜\",\n doteq: \"≐\",\n doteqdot: \"≑\",\n DotEqual: \"≐\",\n dotminus: \"∸\",\n dotplus: \"∔\",\n dotsquare: \"⊡\",\n doublebarwedge: \"⌆\",\n DoubleContourIntegral: \"∯\",\n DoubleDot: \"¨\",\n DoubleDownArrow: \"⇓\",\n DoubleLeftArrow: \"⇐\",\n DoubleLeftRightArrow: \"⇔\",\n DoubleLeftTee: \"⫤\",\n DoubleLongLeftArrow: \"⟸\",\n DoubleLongLeftRightArrow: \"⟺\",\n DoubleLongRightArrow: \"⟹\",\n DoubleRightArrow: \"⇒\",\n DoubleRightTee: \"⊨\",\n DoubleUpArrow: \"⇑\",\n DoubleUpDownArrow: \"⇕\",\n DoubleVerticalBar: \"∥\",\n DownArrowBar: \"⤓\",\n downarrow: \"↓\",\n DownArrow: \"↓\",\n Downarrow: \"⇓\",\n DownArrowUpArrow: \"⇵\",\n DownBreve: \"̑\",\n downdownarrows: \"⇊\",\n downharpoonleft: \"⇃\",\n downharpoonright: \"⇂\",\n DownLeftRightVector: \"⥐\",\n DownLeftTeeVector: \"⥞\",\n DownLeftVectorBar: \"⥖\",\n DownLeftVector: \"↽\",\n DownRightTeeVector: \"⥟\",\n DownRightVectorBar: \"⥗\",\n DownRightVector: \"⇁\",\n DownTeeArrow: \"↧\",\n DownTee: \"⊤\",\n drbkarow: \"⤐\",\n drcorn: \"⌟\",\n drcrop: \"⌌\",\n Dscr: \"𝒟\",\n dscr: \"𝒹\",\n DScy: \"Ѕ\",\n dscy: \"ѕ\",\n dsol: \"⧶\",\n Dstrok: \"Đ\",\n dstrok: \"đ\",\n dtdot: \"⋱\",\n dtri: \"▿\",\n dtrif: \"▾\",\n duarr: \"⇵\",\n duhar: \"⥯\",\n dwangle: \"⦦\",\n DZcy: \"Џ\",\n dzcy: \"џ\",\n dzigrarr: \"⟿\",\n Eacute: \"É\",\n eacute: \"é\",\n easter: \"⩮\",\n Ecaron: \"Ě\",\n ecaron: \"ě\",\n Ecirc: \"Ê\",\n ecirc: \"ê\",\n ecir: \"≖\",\n ecolon: \"≕\",\n Ecy: \"Э\",\n ecy: \"э\",\n eDDot: \"⩷\",\n Edot: \"Ė\",\n edot: \"ė\",\n eDot: \"≑\",\n ee: \"ⅇ\",\n efDot: \"≒\",\n Efr: \"𝔈\",\n efr: \"𝔢\",\n eg: \"⪚\",\n Egrave: \"È\",\n egrave: \"è\",\n egs: \"⪖\",\n egsdot: \"⪘\",\n el: \"⪙\",\n Element: \"∈\",\n elinters: \"⏧\",\n ell: \"ℓ\",\n els: \"⪕\",\n elsdot: \"⪗\",\n Emacr: \"Ē\",\n emacr: \"ē\",\n empty: \"∅\",\n emptyset: \"∅\",\n EmptySmallSquare: \"◻\",\n emptyv: \"∅\",\n EmptyVerySmallSquare: \"▫\",\n emsp13: \" \",\n emsp14: \" \",\n emsp: \" \",\n ENG: \"Ŋ\",\n eng: \"ŋ\",\n ensp: \" \",\n Eogon: \"Ę\",\n eogon: \"ę\",\n Eopf: \"𝔼\",\n eopf: \"𝕖\",\n epar: \"⋕\",\n eparsl: \"⧣\",\n eplus: \"⩱\",\n epsi: \"ε\",\n Epsilon: \"Ε\",\n epsilon: \"ε\",\n epsiv: \"ϵ\",\n eqcirc: \"≖\",\n eqcolon: \"≕\",\n eqsim: \"≂\",\n eqslantgtr: \"⪖\",\n eqslantless: \"⪕\",\n Equal: \"⩵\",\n equals: \"=\",\n EqualTilde: \"≂\",\n equest: \"≟\",\n Equilibrium: \"⇌\",\n equiv: \"≡\",\n equivDD: \"⩸\",\n eqvparsl: \"⧥\",\n erarr: \"⥱\",\n erDot: \"≓\",\n escr: \"ℯ\",\n Escr: \"ℰ\",\n esdot: \"≐\",\n Esim: \"⩳\",\n esim: \"≂\",\n Eta: \"Η\",\n eta: \"η\",\n ETH: \"Ð\",\n eth: \"ð\",\n Euml: \"Ë\",\n euml: \"ë\",\n euro: \"€\",\n excl: \"!\",\n exist: \"∃\",\n Exists: \"∃\",\n expectation: \"ℰ\",\n exponentiale: \"ⅇ\",\n ExponentialE: \"ⅇ\",\n fallingdotseq: \"≒\",\n Fcy: \"Ф\",\n fcy: \"ф\",\n female: \"♀\",\n ffilig: \"ffi\",\n fflig: \"ff\",\n ffllig: \"ffl\",\n Ffr: \"𝔉\",\n ffr: \"𝔣\",\n filig: \"fi\",\n FilledSmallSquare: \"◼\",\n FilledVerySmallSquare: \"▪\",\n fjlig: \"fj\",\n flat: \"♭\",\n fllig: \"fl\",\n fltns: \"▱\",\n fnof: \"ƒ\",\n Fopf: \"𝔽\",\n fopf: \"𝕗\",\n forall: \"∀\",\n ForAll: \"∀\",\n fork: \"⋔\",\n forkv: \"⫙\",\n Fouriertrf: \"ℱ\",\n fpartint: \"⨍\",\n frac12: \"½\",\n frac13: \"⅓\",\n frac14: \"¼\",\n frac15: \"⅕\",\n frac16: \"⅙\",\n frac18: \"⅛\",\n frac23: \"⅔\",\n frac25: \"⅖\",\n frac34: \"¾\",\n frac35: \"⅗\",\n frac38: \"⅜\",\n frac45: \"⅘\",\n frac56: \"⅚\",\n frac58: \"⅝\",\n frac78: \"⅞\",\n frasl: \"⁄\",\n frown: \"⌢\",\n fscr: \"𝒻\",\n Fscr: \"ℱ\",\n gacute: \"ǵ\",\n Gamma: \"Γ\",\n gamma: \"γ\",\n Gammad: \"Ϝ\",\n gammad: \"ϝ\",\n gap: \"⪆\",\n Gbreve: \"Ğ\",\n gbreve: \"ğ\",\n Gcedil: \"Ģ\",\n Gcirc: \"Ĝ\",\n gcirc: \"ĝ\",\n Gcy: \"Г\",\n gcy: \"г\",\n Gdot: \"Ġ\",\n gdot: \"ġ\",\n ge: \"≥\",\n gE: \"≧\",\n gEl: \"⪌\",\n gel: \"⋛\",\n geq: \"≥\",\n geqq: \"≧\",\n geqslant: \"⩾\",\n gescc: \"⪩\",\n ges: \"⩾\",\n gesdot: \"⪀\",\n gesdoto: \"⪂\",\n gesdotol: \"⪄\",\n gesl: \"⋛︀\",\n gesles: \"⪔\",\n Gfr: \"𝔊\",\n gfr: \"𝔤\",\n gg: \"≫\",\n Gg: \"⋙\",\n ggg: \"⋙\",\n gimel: \"ℷ\",\n GJcy: \"Ѓ\",\n gjcy: \"ѓ\",\n gla: \"⪥\",\n gl: \"≷\",\n glE: \"⪒\",\n glj: \"⪤\",\n gnap: \"⪊\",\n gnapprox: \"⪊\",\n gne: \"⪈\",\n gnE: \"≩\",\n gneq: \"⪈\",\n gneqq: \"≩\",\n gnsim: \"⋧\",\n Gopf: \"𝔾\",\n gopf: \"𝕘\",\n grave: \"`\",\n GreaterEqual: \"≥\",\n GreaterEqualLess: \"⋛\",\n GreaterFullEqual: \"≧\",\n GreaterGreater: \"⪢\",\n GreaterLess: \"≷\",\n GreaterSlantEqual: \"⩾\",\n GreaterTilde: \"≳\",\n Gscr: \"𝒢\",\n gscr: \"ℊ\",\n gsim: \"≳\",\n gsime: \"⪎\",\n gsiml: \"⪐\",\n gtcc: \"⪧\",\n gtcir: \"⩺\",\n gt: \">\",\n GT: \">\",\n Gt: \"≫\",\n gtdot: \"⋗\",\n gtlPar: \"⦕\",\n gtquest: \"⩼\",\n gtrapprox: \"⪆\",\n gtrarr: \"⥸\",\n gtrdot: \"⋗\",\n gtreqless: \"⋛\",\n gtreqqless: \"⪌\",\n gtrless: \"≷\",\n gtrsim: \"≳\",\n gvertneqq: \"≩︀\",\n gvnE: \"≩︀\",\n Hacek: \"ˇ\",\n hairsp: \" \",\n half: \"½\",\n hamilt: \"ℋ\",\n HARDcy: \"Ъ\",\n hardcy: \"ъ\",\n harrcir: \"⥈\",\n harr: \"↔\",\n hArr: \"⇔\",\n harrw: \"↭\",\n Hat: \"^\",\n hbar: \"ℏ\",\n Hcirc: \"Ĥ\",\n hcirc: \"ĥ\",\n hearts: \"♥\",\n heartsuit: \"♥\",\n hellip: \"…\",\n hercon: \"⊹\",\n hfr: \"𝔥\",\n Hfr: \"ℌ\",\n HilbertSpace: \"ℋ\",\n hksearow: \"⤥\",\n hkswarow: \"⤦\",\n hoarr: \"⇿\",\n homtht: \"∻\",\n hookleftarrow: \"↩\",\n hookrightarrow: \"↪\",\n hopf: \"𝕙\",\n Hopf: \"ℍ\",\n horbar: \"―\",\n HorizontalLine: \"─\",\n hscr: \"𝒽\",\n Hscr: \"ℋ\",\n hslash: \"ℏ\",\n Hstrok: \"Ħ\",\n hstrok: \"ħ\",\n HumpDownHump: \"≎\",\n HumpEqual: \"≏\",\n hybull: \"⁃\",\n hyphen: \"‐\",\n Iacute: \"Í\",\n iacute: \"í\",\n ic: \"\\u2063\",\n Icirc: \"Î\",\n icirc: \"î\",\n Icy: \"И\",\n icy: \"и\",\n Idot: \"İ\",\n IEcy: \"Е\",\n iecy: \"е\",\n iexcl: \"¡\",\n iff: \"⇔\",\n ifr: \"𝔦\",\n Ifr: \"ℑ\",\n Igrave: \"Ì\",\n igrave: \"ì\",\n ii: \"ⅈ\",\n iiiint: \"⨌\",\n iiint: \"∭\",\n iinfin: \"⧜\",\n iiota: \"℩\",\n IJlig: \"IJ\",\n ijlig: \"ij\",\n Imacr: \"Ī\",\n imacr: \"ī\",\n image: \"ℑ\",\n ImaginaryI: \"ⅈ\",\n imagline: \"ℐ\",\n imagpart: \"ℑ\",\n imath: \"ı\",\n Im: \"ℑ\",\n imof: \"⊷\",\n imped: \"Ƶ\",\n Implies: \"⇒\",\n incare: \"℅\",\n in: \"∈\",\n infin: \"∞\",\n infintie: \"⧝\",\n inodot: \"ı\",\n intcal: \"⊺\",\n int: \"∫\",\n Int: \"∬\",\n integers: \"ℤ\",\n Integral: \"∫\",\n intercal: \"⊺\",\n Intersection: \"⋂\",\n intlarhk: \"⨗\",\n intprod: \"⨼\",\n InvisibleComma: \"\\u2063\",\n InvisibleTimes: \"\\u2062\",\n IOcy: \"Ё\",\n iocy: \"ё\",\n Iogon: \"Į\",\n iogon: \"į\",\n Iopf: \"𝕀\",\n iopf: \"𝕚\",\n Iota: \"Ι\",\n iota: \"ι\",\n iprod: \"⨼\",\n iquest: \"¿\",\n iscr: \"𝒾\",\n Iscr: \"ℐ\",\n isin: \"∈\",\n isindot: \"⋵\",\n isinE: \"⋹\",\n isins: \"⋴\",\n isinsv: \"⋳\",\n isinv: \"∈\",\n it: \"\\u2062\",\n Itilde: \"Ĩ\",\n itilde: \"ĩ\",\n Iukcy: \"І\",\n iukcy: \"і\",\n Iuml: \"Ï\",\n iuml: \"ï\",\n Jcirc: \"Ĵ\",\n jcirc: \"ĵ\",\n Jcy: \"Й\",\n jcy: \"й\",\n Jfr: \"𝔍\",\n jfr: \"𝔧\",\n jmath: \"ȷ\",\n Jopf: \"𝕁\",\n jopf: \"𝕛\",\n Jscr: \"𝒥\",\n jscr: \"𝒿\",\n Jsercy: \"Ј\",\n jsercy: \"ј\",\n Jukcy: \"Є\",\n jukcy: \"є\",\n Kappa: \"Κ\",\n kappa: \"κ\",\n kappav: \"ϰ\",\n Kcedil: \"Ķ\",\n kcedil: \"ķ\",\n Kcy: \"К\",\n kcy: \"к\",\n Kfr: \"𝔎\",\n kfr: \"𝔨\",\n kgreen: \"ĸ\",\n KHcy: \"Х\",\n khcy: \"х\",\n KJcy: \"Ќ\",\n kjcy: \"ќ\",\n Kopf: \"𝕂\",\n kopf: \"𝕜\",\n Kscr: \"𝒦\",\n kscr: \"𝓀\",\n lAarr: \"⇚\",\n Lacute: \"Ĺ\",\n lacute: \"ĺ\",\n laemptyv: \"⦴\",\n lagran: \"ℒ\",\n Lambda: \"Λ\",\n lambda: \"λ\",\n lang: \"⟨\",\n Lang: \"⟪\",\n langd: \"⦑\",\n langle: \"⟨\",\n lap: \"⪅\",\n Laplacetrf: \"ℒ\",\n laquo: \"«\",\n larrb: \"⇤\",\n larrbfs: \"⤟\",\n larr: \"←\",\n Larr: \"↞\",\n lArr: \"⇐\",\n larrfs: \"⤝\",\n larrhk: \"↩\",\n larrlp: \"↫\",\n larrpl: \"⤹\",\n larrsim: \"⥳\",\n larrtl: \"↢\",\n latail: \"⤙\",\n lAtail: \"⤛\",\n lat: \"⪫\",\n late: \"⪭\",\n lates: \"⪭︀\",\n lbarr: \"⤌\",\n lBarr: \"⤎\",\n lbbrk: \"❲\",\n lbrace: \"{\",\n lbrack: \"[\",\n lbrke: \"⦋\",\n lbrksld: \"⦏\",\n lbrkslu: \"⦍\",\n Lcaron: \"Ľ\",\n lcaron: \"ľ\",\n Lcedil: \"Ļ\",\n lcedil: \"ļ\",\n lceil: \"⌈\",\n lcub: \"{\",\n Lcy: \"Л\",\n lcy: \"л\",\n ldca: \"⤶\",\n ldquo: \"“\",\n ldquor: \"„\",\n ldrdhar: \"⥧\",\n ldrushar: \"⥋\",\n ldsh: \"↲\",\n le: \"≤\",\n lE: \"≦\",\n LeftAngleBracket: \"⟨\",\n LeftArrowBar: \"⇤\",\n leftarrow: \"←\",\n LeftArrow: \"←\",\n Leftarrow: \"⇐\",\n LeftArrowRightArrow: \"⇆\",\n leftarrowtail: \"↢\",\n LeftCeiling: \"⌈\",\n LeftDoubleBracket: \"⟦\",\n LeftDownTeeVector: \"⥡\",\n LeftDownVectorBar: \"⥙\",\n LeftDownVector: \"⇃\",\n LeftFloor: \"⌊\",\n leftharpoondown: \"↽\",\n leftharpoonup: \"↼\",\n leftleftarrows: \"⇇\",\n leftrightarrow: \"↔\",\n LeftRightArrow: \"↔\",\n Leftrightarrow: \"⇔\",\n leftrightarrows: \"⇆\",\n leftrightharpoons: \"⇋\",\n leftrightsquigarrow: \"↭\",\n LeftRightVector: \"⥎\",\n LeftTeeArrow: \"↤\",\n LeftTee: \"⊣\",\n LeftTeeVector: \"⥚\",\n leftthreetimes: \"⋋\",\n LeftTriangleBar: \"⧏\",\n LeftTriangle: \"⊲\",\n LeftTriangleEqual: \"⊴\",\n LeftUpDownVector: \"⥑\",\n LeftUpTeeVector: \"⥠\",\n LeftUpVectorBar: \"⥘\",\n LeftUpVector: \"↿\",\n LeftVectorBar: \"⥒\",\n LeftVector: \"↼\",\n lEg: \"⪋\",\n leg: \"⋚\",\n leq: \"≤\",\n leqq: \"≦\",\n leqslant: \"⩽\",\n lescc: \"⪨\",\n les: \"⩽\",\n lesdot: \"⩿\",\n lesdoto: \"⪁\",\n lesdotor: \"⪃\",\n lesg: \"⋚︀\",\n lesges: \"⪓\",\n lessapprox: \"⪅\",\n lessdot: \"⋖\",\n lesseqgtr: \"⋚\",\n lesseqqgtr: \"⪋\",\n LessEqualGreater: \"⋚\",\n LessFullEqual: \"≦\",\n LessGreater: \"≶\",\n lessgtr: \"≶\",\n LessLess: \"⪡\",\n lesssim: \"≲\",\n LessSlantEqual: \"⩽\",\n LessTilde: \"≲\",\n lfisht: \"⥼\",\n lfloor: \"⌊\",\n Lfr: \"𝔏\",\n lfr: \"𝔩\",\n lg: \"≶\",\n lgE: \"⪑\",\n lHar: \"⥢\",\n lhard: \"↽\",\n lharu: \"↼\",\n lharul: \"⥪\",\n lhblk: \"▄\",\n LJcy: \"Љ\",\n ljcy: \"љ\",\n llarr: \"⇇\",\n ll: \"≪\",\n Ll: \"⋘\",\n llcorner: \"⌞\",\n Lleftarrow: \"⇚\",\n llhard: \"⥫\",\n lltri: \"◺\",\n Lmidot: \"Ŀ\",\n lmidot: \"ŀ\",\n lmoustache: \"⎰\",\n lmoust: \"⎰\",\n lnap: \"⪉\",\n lnapprox: \"⪉\",\n lne: \"⪇\",\n lnE: \"≨\",\n lneq: \"⪇\",\n lneqq: \"≨\",\n lnsim: \"⋦\",\n loang: \"⟬\",\n loarr: \"⇽\",\n lobrk: \"⟦\",\n longleftarrow: \"⟵\",\n LongLeftArrow: \"⟵\",\n Longleftarrow: \"⟸\",\n longleftrightarrow: \"⟷\",\n LongLeftRightArrow: \"⟷\",\n Longleftrightarrow: \"⟺\",\n longmapsto: \"⟼\",\n longrightarrow: \"⟶\",\n LongRightArrow: \"⟶\",\n Longrightarrow: \"⟹\",\n looparrowleft: \"↫\",\n looparrowright: \"↬\",\n lopar: \"⦅\",\n Lopf: \"𝕃\",\n lopf: \"𝕝\",\n loplus: \"⨭\",\n lotimes: \"⨴\",\n lowast: \"∗\",\n lowbar: \"_\",\n LowerLeftArrow: \"↙\",\n LowerRightArrow: \"↘\",\n loz: \"◊\",\n lozenge: \"◊\",\n lozf: \"⧫\",\n lpar: \"(\",\n lparlt: \"⦓\",\n lrarr: \"⇆\",\n lrcorner: \"⌟\",\n lrhar: \"⇋\",\n lrhard: \"⥭\",\n lrm: \"\\u200E\",\n lrtri: \"⊿\",\n lsaquo: \"‹\",\n lscr: \"𝓁\",\n Lscr: \"ℒ\",\n lsh: \"↰\",\n Lsh: \"↰\",\n lsim: \"≲\",\n lsime: \"⪍\",\n lsimg: \"⪏\",\n lsqb: \"[\",\n lsquo: \"‘\",\n lsquor: \"‚\",\n Lstrok: \"Ł\",\n lstrok: \"ł\",\n ltcc: \"⪦\",\n ltcir: \"⩹\",\n lt: \"<\",\n LT: \"<\",\n Lt: \"≪\",\n ltdot: \"⋖\",\n lthree: \"⋋\",\n ltimes: \"⋉\",\n ltlarr: \"⥶\",\n ltquest: \"⩻\",\n ltri: \"◃\",\n ltrie: \"⊴\",\n ltrif: \"◂\",\n ltrPar: \"⦖\",\n lurdshar: \"⥊\",\n luruhar: \"⥦\",\n lvertneqq: \"≨︀\",\n lvnE: \"≨︀\",\n macr: \"¯\",\n male: \"♂\",\n malt: \"✠\",\n maltese: \"✠\",\n Map: \"⤅\",\n map: \"↦\",\n mapsto: \"↦\",\n mapstodown: \"↧\",\n mapstoleft: \"↤\",\n mapstoup: \"↥\",\n marker: \"▮\",\n mcomma: \"⨩\",\n Mcy: \"М\",\n mcy: \"м\",\n mdash: \"—\",\n mDDot: \"∺\",\n measuredangle: \"∡\",\n MediumSpace: \" \",\n Mellintrf: \"ℳ\",\n Mfr: \"𝔐\",\n mfr: \"𝔪\",\n mho: \"℧\",\n micro: \"µ\",\n midast: \"*\",\n midcir: \"⫰\",\n mid: \"∣\",\n middot: \"·\",\n minusb: \"⊟\",\n minus: \"−\",\n minusd: \"∸\",\n minusdu: \"⨪\",\n MinusPlus: \"∓\",\n mlcp: \"⫛\",\n mldr: \"…\",\n mnplus: \"∓\",\n models: \"⊧\",\n Mopf: \"𝕄\",\n mopf: \"𝕞\",\n mp: \"∓\",\n mscr: \"𝓂\",\n Mscr: \"ℳ\",\n mstpos: \"∾\",\n Mu: \"Μ\",\n mu: \"μ\",\n multimap: \"⊸\",\n mumap: \"⊸\",\n nabla: \"∇\",\n Nacute: \"Ń\",\n nacute: \"ń\",\n nang: \"∠⃒\",\n nap: \"≉\",\n napE: \"⩰̸\",\n napid: \"≋̸\",\n napos: \"ʼn\",\n napprox: \"≉\",\n natural: \"♮\",\n naturals: \"ℕ\",\n natur: \"♮\",\n nbsp: \" \",\n nbump: \"≎̸\",\n nbumpe: \"≏̸\",\n ncap: \"⩃\",\n Ncaron: \"Ň\",\n ncaron: \"ň\",\n Ncedil: \"Ņ\",\n ncedil: \"ņ\",\n ncong: \"≇\",\n ncongdot: \"⩭̸\",\n ncup: \"⩂\",\n Ncy: \"Н\",\n ncy: \"н\",\n ndash: \"–\",\n nearhk: \"⤤\",\n nearr: \"↗\",\n neArr: \"⇗\",\n nearrow: \"↗\",\n ne: \"≠\",\n nedot: \"≐̸\",\n NegativeMediumSpace: \"​\",\n NegativeThickSpace: \"​\",\n NegativeThinSpace: \"​\",\n NegativeVeryThinSpace: \"​\",\n nequiv: \"≢\",\n nesear: \"⤨\",\n nesim: \"≂̸\",\n NestedGreaterGreater: \"≫\",\n NestedLessLess: \"≪\",\n NewLine: \"\\n\",\n nexist: \"∄\",\n nexists: \"∄\",\n Nfr: \"𝔑\",\n nfr: \"𝔫\",\n ngE: \"≧̸\",\n nge: \"≱\",\n ngeq: \"≱\",\n ngeqq: \"≧̸\",\n ngeqslant: \"⩾̸\",\n nges: \"⩾̸\",\n nGg: \"⋙̸\",\n ngsim: \"≵\",\n nGt: \"≫⃒\",\n ngt: \"≯\",\n ngtr: \"≯\",\n nGtv: \"≫̸\",\n nharr: \"↮\",\n nhArr: \"⇎\",\n nhpar: \"⫲\",\n ni: \"∋\",\n nis: \"⋼\",\n nisd: \"⋺\",\n niv: \"∋\",\n NJcy: \"Њ\",\n njcy: \"њ\",\n nlarr: \"↚\",\n nlArr: \"⇍\",\n nldr: \"‥\",\n nlE: \"≦̸\",\n nle: \"≰\",\n nleftarrow: \"↚\",\n nLeftarrow: \"⇍\",\n nleftrightarrow: \"↮\",\n nLeftrightarrow: \"⇎\",\n nleq: \"≰\",\n nleqq: \"≦̸\",\n nleqslant: \"⩽̸\",\n nles: \"⩽̸\",\n nless: \"≮\",\n nLl: \"⋘̸\",\n nlsim: \"≴\",\n nLt: \"≪⃒\",\n nlt: \"≮\",\n nltri: \"⋪\",\n nltrie: \"⋬\",\n nLtv: \"≪̸\",\n nmid: \"∤\",\n NoBreak: \"\\u2060\",\n NonBreakingSpace: \" \",\n nopf: \"𝕟\",\n Nopf: \"ℕ\",\n Not: \"⫬\",\n not: \"¬\",\n NotCongruent: \"≢\",\n NotCupCap: \"≭\",\n NotDoubleVerticalBar: \"∦\",\n NotElement: \"∉\",\n NotEqual: \"≠\",\n NotEqualTilde: \"≂̸\",\n NotExists: \"∄\",\n NotGreater: \"≯\",\n NotGreaterEqual: \"≱\",\n NotGreaterFullEqual: \"≧̸\",\n NotGreaterGreater: \"≫̸\",\n NotGreaterLess: \"≹\",\n NotGreaterSlantEqual: \"⩾̸\",\n NotGreaterTilde: \"≵\",\n NotHumpDownHump: \"≎̸\",\n NotHumpEqual: \"≏̸\",\n notin: \"∉\",\n notindot: \"⋵̸\",\n notinE: \"⋹̸\",\n notinva: \"∉\",\n notinvb: \"⋷\",\n notinvc: \"⋶\",\n NotLeftTriangleBar: \"⧏̸\",\n NotLeftTriangle: \"⋪\",\n NotLeftTriangleEqual: \"⋬\",\n NotLess: \"≮\",\n NotLessEqual: \"≰\",\n NotLessGreater: \"≸\",\n NotLessLess: \"≪̸\",\n NotLessSlantEqual: \"⩽̸\",\n NotLessTilde: \"≴\",\n NotNestedGreaterGreater: \"⪢̸\",\n NotNestedLessLess: \"⪡̸\",\n notni: \"∌\",\n notniva: \"∌\",\n notnivb: \"⋾\",\n notnivc: \"⋽\",\n NotPrecedes: \"⊀\",\n NotPrecedesEqual: \"⪯̸\",\n NotPrecedesSlantEqual: \"⋠\",\n NotReverseElement: \"∌\",\n NotRightTriangleBar: \"⧐̸\",\n NotRightTriangle: \"⋫\",\n NotRightTriangleEqual: \"⋭\",\n NotSquareSubset: \"⊏̸\",\n NotSquareSubsetEqual: \"⋢\",\n NotSquareSuperset: \"⊐̸\",\n NotSquareSupersetEqual: \"⋣\",\n NotSubset: \"⊂⃒\",\n NotSubsetEqual: \"⊈\",\n NotSucceeds: \"⊁\",\n NotSucceedsEqual: \"⪰̸\",\n NotSucceedsSlantEqual: \"⋡\",\n NotSucceedsTilde: \"≿̸\",\n NotSuperset: \"⊃⃒\",\n NotSupersetEqual: \"⊉\",\n NotTilde: \"≁\",\n NotTildeEqual: \"≄\",\n NotTildeFullEqual: \"≇\",\n NotTildeTilde: \"≉\",\n NotVerticalBar: \"∤\",\n nparallel: \"∦\",\n npar: \"∦\",\n nparsl: \"⫽⃥\",\n npart: \"∂̸\",\n npolint: \"⨔\",\n npr: \"⊀\",\n nprcue: \"⋠\",\n nprec: \"⊀\",\n npreceq: \"⪯̸\",\n npre: \"⪯̸\",\n nrarrc: \"⤳̸\",\n nrarr: \"↛\",\n nrArr: \"⇏\",\n nrarrw: \"↝̸\",\n nrightarrow: \"↛\",\n nRightarrow: \"⇏\",\n nrtri: \"⋫\",\n nrtrie: \"⋭\",\n nsc: \"⊁\",\n nsccue: \"⋡\",\n nsce: \"⪰̸\",\n Nscr: \"𝒩\",\n nscr: \"𝓃\",\n nshortmid: \"∤\",\n nshortparallel: \"∦\",\n nsim: \"≁\",\n nsime: \"≄\",\n nsimeq: \"≄\",\n nsmid: \"∤\",\n nspar: \"∦\",\n nsqsube: \"⋢\",\n nsqsupe: \"⋣\",\n nsub: \"⊄\",\n nsubE: \"⫅̸\",\n nsube: \"⊈\",\n nsubset: \"⊂⃒\",\n nsubseteq: \"⊈\",\n nsubseteqq: \"⫅̸\",\n nsucc: \"⊁\",\n nsucceq: \"⪰̸\",\n nsup: \"⊅\",\n nsupE: \"⫆̸\",\n nsupe: \"⊉\",\n nsupset: \"⊃⃒\",\n nsupseteq: \"⊉\",\n nsupseteqq: \"⫆̸\",\n ntgl: \"≹\",\n Ntilde: \"Ñ\",\n ntilde: \"ñ\",\n ntlg: \"≸\",\n ntriangleleft: \"⋪\",\n ntrianglelefteq: \"⋬\",\n ntriangleright: \"⋫\",\n ntrianglerighteq: \"⋭\",\n Nu: \"Ν\",\n nu: \"ν\",\n num: \"#\",\n numero: \"№\",\n numsp: \" \",\n nvap: \"≍⃒\",\n nvdash: \"⊬\",\n nvDash: \"⊭\",\n nVdash: \"⊮\",\n nVDash: \"⊯\",\n nvge: \"≥⃒\",\n nvgt: \">⃒\",\n nvHarr: \"⤄\",\n nvinfin: \"⧞\",\n nvlArr: \"⤂\",\n nvle: \"≤⃒\",\n nvlt: \"<⃒\",\n nvltrie: \"⊴⃒\",\n nvrArr: \"⤃\",\n nvrtrie: \"⊵⃒\",\n nvsim: \"∼⃒\",\n nwarhk: \"⤣\",\n nwarr: \"↖\",\n nwArr: \"⇖\",\n nwarrow: \"↖\",\n nwnear: \"⤧\",\n Oacute: \"Ó\",\n oacute: \"ó\",\n oast: \"⊛\",\n Ocirc: \"Ô\",\n ocirc: \"ô\",\n ocir: \"⊚\",\n Ocy: \"О\",\n ocy: \"о\",\n odash: \"⊝\",\n Odblac: \"Ő\",\n odblac: \"ő\",\n odiv: \"⨸\",\n odot: \"⊙\",\n odsold: \"⦼\",\n OElig: \"Œ\",\n oelig: \"œ\",\n ofcir: \"⦿\",\n Ofr: \"𝔒\",\n ofr: \"𝔬\",\n ogon: \"˛\",\n Ograve: \"Ò\",\n ograve: \"ò\",\n ogt: \"⧁\",\n ohbar: \"⦵\",\n ohm: \"Ω\",\n oint: \"∮\",\n olarr: \"↺\",\n olcir: \"⦾\",\n olcross: \"⦻\",\n oline: \"‾\",\n olt: \"⧀\",\n Omacr: \"Ō\",\n omacr: \"ō\",\n Omega: \"Ω\",\n omega: \"ω\",\n Omicron: \"Ο\",\n omicron: \"ο\",\n omid: \"⦶\",\n ominus: \"⊖\",\n Oopf: \"𝕆\",\n oopf: \"𝕠\",\n opar: \"⦷\",\n OpenCurlyDoubleQuote: \"“\",\n OpenCurlyQuote: \"‘\",\n operp: \"⦹\",\n oplus: \"⊕\",\n orarr: \"↻\",\n Or: \"⩔\",\n or: \"∨\",\n ord: \"⩝\",\n order: \"ℴ\",\n orderof: \"ℴ\",\n ordf: \"ª\",\n ordm: \"º\",\n origof: \"⊶\",\n oror: \"⩖\",\n orslope: \"⩗\",\n orv: \"⩛\",\n oS: \"Ⓢ\",\n Oscr: \"𝒪\",\n oscr: \"ℴ\",\n Oslash: \"Ø\",\n oslash: \"ø\",\n osol: \"⊘\",\n Otilde: \"Õ\",\n otilde: \"õ\",\n otimesas: \"⨶\",\n Otimes: \"⨷\",\n otimes: \"⊗\",\n Ouml: \"Ö\",\n ouml: \"ö\",\n ovbar: \"⌽\",\n OverBar: \"‾\",\n OverBrace: \"⏞\",\n OverBracket: \"⎴\",\n OverParenthesis: \"⏜\",\n para: \"¶\",\n parallel: \"∥\",\n par: \"∥\",\n parsim: \"⫳\",\n parsl: \"⫽\",\n part: \"∂\",\n PartialD: \"∂\",\n Pcy: \"П\",\n pcy: \"п\",\n percnt: \"%\",\n period: \".\",\n permil: \"‰\",\n perp: \"⊥\",\n pertenk: \"‱\",\n Pfr: \"𝔓\",\n pfr: \"𝔭\",\n Phi: \"Φ\",\n phi: \"φ\",\n phiv: \"ϕ\",\n phmmat: \"ℳ\",\n phone: \"☎\",\n Pi: \"Π\",\n pi: \"π\",\n pitchfork: \"⋔\",\n piv: \"ϖ\",\n planck: \"ℏ\",\n planckh: \"ℎ\",\n plankv: \"ℏ\",\n plusacir: \"⨣\",\n plusb: \"⊞\",\n pluscir: \"⨢\",\n plus: \"+\",\n plusdo: \"∔\",\n plusdu: \"⨥\",\n pluse: \"⩲\",\n PlusMinus: \"±\",\n plusmn: \"±\",\n plussim: \"⨦\",\n plustwo: \"⨧\",\n pm: \"±\",\n Poincareplane: \"ℌ\",\n pointint: \"⨕\",\n popf: \"𝕡\",\n Popf: \"ℙ\",\n pound: \"£\",\n prap: \"⪷\",\n Pr: \"⪻\",\n pr: \"≺\",\n prcue: \"≼\",\n precapprox: \"⪷\",\n prec: \"≺\",\n preccurlyeq: \"≼\",\n Precedes: \"≺\",\n PrecedesEqual: \"⪯\",\n PrecedesSlantEqual: \"≼\",\n PrecedesTilde: \"≾\",\n preceq: \"⪯\",\n precnapprox: \"⪹\",\n precneqq: \"⪵\",\n precnsim: \"⋨\",\n pre: \"⪯\",\n prE: \"⪳\",\n precsim: \"≾\",\n prime: \"′\",\n Prime: \"″\",\n primes: \"ℙ\",\n prnap: \"⪹\",\n prnE: \"⪵\",\n prnsim: \"⋨\",\n prod: \"∏\",\n Product: \"∏\",\n profalar: \"⌮\",\n profline: \"⌒\",\n profsurf: \"⌓\",\n prop: \"∝\",\n Proportional: \"∝\",\n Proportion: \"∷\",\n propto: \"∝\",\n prsim: \"≾\",\n prurel: \"⊰\",\n Pscr: \"𝒫\",\n pscr: \"𝓅\",\n Psi: \"Ψ\",\n psi: \"ψ\",\n puncsp: \" \",\n Qfr: \"𝔔\",\n qfr: \"𝔮\",\n qint: \"⨌\",\n qopf: \"𝕢\",\n Qopf: \"ℚ\",\n qprime: \"⁗\",\n Qscr: \"𝒬\",\n qscr: \"𝓆\",\n quaternions: \"ℍ\",\n quatint: \"⨖\",\n quest: \"?\",\n questeq: \"≟\",\n quot: \"\\\"\",\n QUOT: \"\\\"\",\n rAarr: \"⇛\",\n race: \"∽̱\",\n Racute: \"Ŕ\",\n racute: \"ŕ\",\n radic: \"√\",\n raemptyv: \"⦳\",\n rang: \"⟩\",\n Rang: \"⟫\",\n rangd: \"⦒\",\n range: \"⦥\",\n rangle: \"⟩\",\n raquo: \"»\",\n rarrap: \"⥵\",\n rarrb: \"⇥\",\n rarrbfs: \"⤠\",\n rarrc: \"⤳\",\n rarr: \"→\",\n Rarr: \"↠\",\n rArr: \"⇒\",\n rarrfs: \"⤞\",\n rarrhk: \"↪\",\n rarrlp: \"↬\",\n rarrpl: \"⥅\",\n rarrsim: \"⥴\",\n Rarrtl: \"⤖\",\n rarrtl: \"↣\",\n rarrw: \"↝\",\n ratail: \"⤚\",\n rAtail: \"⤜\",\n ratio: \"∶\",\n rationals: \"ℚ\",\n rbarr: \"⤍\",\n rBarr: \"⤏\",\n RBarr: \"⤐\",\n rbbrk: \"❳\",\n rbrace: \"}\",\n rbrack: \"]\",\n rbrke: \"⦌\",\n rbrksld: \"⦎\",\n rbrkslu: \"⦐\",\n Rcaron: \"Ř\",\n rcaron: \"ř\",\n Rcedil: \"Ŗ\",\n rcedil: \"ŗ\",\n rceil: \"⌉\",\n rcub: \"}\",\n Rcy: \"Р\",\n rcy: \"р\",\n rdca: \"⤷\",\n rdldhar: \"⥩\",\n rdquo: \"”\",\n rdquor: \"”\",\n rdsh: \"↳\",\n real: \"ℜ\",\n realine: \"ℛ\",\n realpart: \"ℜ\",\n reals: \"ℝ\",\n Re: \"ℜ\",\n rect: \"▭\",\n reg: \"®\",\n REG: \"®\",\n ReverseElement: \"∋\",\n ReverseEquilibrium: \"⇋\",\n ReverseUpEquilibrium: \"⥯\",\n rfisht: \"⥽\",\n rfloor: \"⌋\",\n rfr: \"𝔯\",\n Rfr: \"ℜ\",\n rHar: \"⥤\",\n rhard: \"⇁\",\n rharu: \"⇀\",\n rharul: \"⥬\",\n Rho: \"Ρ\",\n rho: \"ρ\",\n rhov: \"ϱ\",\n RightAngleBracket: \"⟩\",\n RightArrowBar: \"⇥\",\n rightarrow: \"→\",\n RightArrow: \"→\",\n Rightarrow: \"⇒\",\n RightArrowLeftArrow: \"⇄\",\n rightarrowtail: \"↣\",\n RightCeiling: \"⌉\",\n RightDoubleBracket: \"⟧\",\n RightDownTeeVector: \"⥝\",\n RightDownVectorBar: \"⥕\",\n RightDownVector: \"⇂\",\n RightFloor: \"⌋\",\n rightharpoondown: \"⇁\",\n rightharpoonup: \"⇀\",\n rightleftarrows: \"⇄\",\n rightleftharpoons: \"⇌\",\n rightrightarrows: \"⇉\",\n rightsquigarrow: \"↝\",\n RightTeeArrow: \"↦\",\n RightTee: \"⊢\",\n RightTeeVector: \"⥛\",\n rightthreetimes: \"⋌\",\n RightTriangleBar: \"⧐\",\n RightTriangle: \"⊳\",\n RightTriangleEqual: \"⊵\",\n RightUpDownVector: \"⥏\",\n RightUpTeeVector: \"⥜\",\n RightUpVectorBar: \"⥔\",\n RightUpVector: \"↾\",\n RightVectorBar: \"⥓\",\n RightVector: \"⇀\",\n ring: \"˚\",\n risingdotseq: \"≓\",\n rlarr: \"⇄\",\n rlhar: \"⇌\",\n rlm: \"\\u200F\",\n rmoustache: \"⎱\",\n rmoust: \"⎱\",\n rnmid: \"⫮\",\n roang: \"⟭\",\n roarr: \"⇾\",\n robrk: \"⟧\",\n ropar: \"⦆\",\n ropf: \"𝕣\",\n Ropf: \"ℝ\",\n roplus: \"⨮\",\n rotimes: \"⨵\",\n RoundImplies: \"⥰\",\n rpar: \")\",\n rpargt: \"⦔\",\n rppolint: \"⨒\",\n rrarr: \"⇉\",\n Rrightarrow: \"⇛\",\n rsaquo: \"›\",\n rscr: \"𝓇\",\n Rscr: \"ℛ\",\n rsh: \"↱\",\n Rsh: \"↱\",\n rsqb: \"]\",\n rsquo: \"’\",\n rsquor: \"’\",\n rthree: \"⋌\",\n rtimes: \"⋊\",\n rtri: \"▹\",\n rtrie: \"⊵\",\n rtrif: \"▸\",\n rtriltri: \"⧎\",\n RuleDelayed: \"⧴\",\n ruluhar: \"⥨\",\n rx: \"℞\",\n Sacute: \"Ś\",\n sacute: \"ś\",\n sbquo: \"‚\",\n scap: \"⪸\",\n Scaron: \"Š\",\n scaron: \"š\",\n Sc: \"⪼\",\n sc: \"≻\",\n sccue: \"≽\",\n sce: \"⪰\",\n scE: \"⪴\",\n Scedil: \"Ş\",\n scedil: \"ş\",\n Scirc: \"Ŝ\",\n scirc: \"ŝ\",\n scnap: \"⪺\",\n scnE: \"⪶\",\n scnsim: \"⋩\",\n scpolint: \"⨓\",\n scsim: \"≿\",\n Scy: \"С\",\n scy: \"с\",\n sdotb: \"⊡\",\n sdot: \"⋅\",\n sdote: \"⩦\",\n searhk: \"⤥\",\n searr: \"↘\",\n seArr: \"⇘\",\n searrow: \"↘\",\n sect: \"§\",\n semi: \";\",\n seswar: \"⤩\",\n setminus: \"∖\",\n setmn: \"∖\",\n sext: \"✶\",\n Sfr: \"𝔖\",\n sfr: \"𝔰\",\n sfrown: \"⌢\",\n sharp: \"♯\",\n SHCHcy: \"Щ\",\n shchcy: \"щ\",\n SHcy: \"Ш\",\n shcy: \"ш\",\n ShortDownArrow: \"↓\",\n ShortLeftArrow: \"←\",\n shortmid: \"∣\",\n shortparallel: \"∥\",\n ShortRightArrow: \"→\",\n ShortUpArrow: \"↑\",\n shy: \"\\xAD\",\n Sigma: \"Σ\",\n sigma: \"σ\",\n sigmaf: \"ς\",\n sigmav: \"ς\",\n sim: \"∼\",\n simdot: \"⩪\",\n sime: \"≃\",\n simeq: \"≃\",\n simg: \"⪞\",\n simgE: \"⪠\",\n siml: \"⪝\",\n simlE: \"⪟\",\n simne: \"≆\",\n simplus: \"⨤\",\n simrarr: \"⥲\",\n slarr: \"←\",\n SmallCircle: \"∘\",\n smallsetminus: \"∖\",\n smashp: \"⨳\",\n smeparsl: \"⧤\",\n smid: \"∣\",\n smile: \"⌣\",\n smt: \"⪪\",\n smte: \"⪬\",\n smtes: \"⪬︀\",\n SOFTcy: \"Ь\",\n softcy: \"ь\",\n solbar: \"⌿\",\n solb: \"⧄\",\n sol: \"/\",\n Sopf: \"𝕊\",\n sopf: \"𝕤\",\n spades: \"♠\",\n spadesuit: \"♠\",\n spar: \"∥\",\n sqcap: \"⊓\",\n sqcaps: \"⊓︀\",\n sqcup: \"⊔\",\n sqcups: \"⊔︀\",\n Sqrt: \"√\",\n sqsub: \"⊏\",\n sqsube: \"⊑\",\n sqsubset: \"⊏\",\n sqsubseteq: \"⊑\",\n sqsup: \"⊐\",\n sqsupe: \"⊒\",\n sqsupset: \"⊐\",\n sqsupseteq: \"⊒\",\n square: \"□\",\n Square: \"□\",\n SquareIntersection: \"⊓\",\n SquareSubset: \"⊏\",\n SquareSubsetEqual: \"⊑\",\n SquareSuperset: \"⊐\",\n SquareSupersetEqual: \"⊒\",\n SquareUnion: \"⊔\",\n squarf: \"▪\",\n squ: \"□\",\n squf: \"▪\",\n srarr: \"→\",\n Sscr: \"𝒮\",\n sscr: \"𝓈\",\n ssetmn: \"∖\",\n ssmile: \"⌣\",\n sstarf: \"⋆\",\n Star: \"⋆\",\n star: \"☆\",\n starf: \"★\",\n straightepsilon: \"ϵ\",\n straightphi: \"ϕ\",\n strns: \"¯\",\n sub: \"⊂\",\n Sub: \"⋐\",\n subdot: \"⪽\",\n subE: \"⫅\",\n sube: \"⊆\",\n subedot: \"⫃\",\n submult: \"⫁\",\n subnE: \"⫋\",\n subne: \"⊊\",\n subplus: \"⪿\",\n subrarr: \"⥹\",\n subset: \"⊂\",\n Subset: \"⋐\",\n subseteq: \"⊆\",\n subseteqq: \"⫅\",\n SubsetEqual: \"⊆\",\n subsetneq: \"⊊\",\n subsetneqq: \"⫋\",\n subsim: \"⫇\",\n subsub: \"⫕\",\n subsup: \"⫓\",\n succapprox: \"⪸\",\n succ: \"≻\",\n succcurlyeq: \"≽\",\n Succeeds: \"≻\",\n SucceedsEqual: \"⪰\",\n SucceedsSlantEqual: \"≽\",\n SucceedsTilde: \"≿\",\n succeq: \"⪰\",\n succnapprox: \"⪺\",\n succneqq: \"⪶\",\n succnsim: \"⋩\",\n succsim: \"≿\",\n SuchThat: \"∋\",\n sum: \"∑\",\n Sum: \"∑\",\n sung: \"♪\",\n sup1: \"¹\",\n sup2: \"²\",\n sup3: \"³\",\n sup: \"⊃\",\n Sup: \"⋑\",\n supdot: \"⪾\",\n supdsub: \"⫘\",\n supE: \"⫆\",\n supe: \"⊇\",\n supedot: \"⫄\",\n Superset: \"⊃\",\n SupersetEqual: \"⊇\",\n suphsol: \"⟉\",\n suphsub: \"⫗\",\n suplarr: \"⥻\",\n supmult: \"⫂\",\n supnE: \"⫌\",\n supne: \"⊋\",\n supplus: \"⫀\",\n supset: \"⊃\",\n Supset: \"⋑\",\n supseteq: \"⊇\",\n supseteqq: \"⫆\",\n supsetneq: \"⊋\",\n supsetneqq: \"⫌\",\n supsim: \"⫈\",\n supsub: \"⫔\",\n supsup: \"⫖\",\n swarhk: \"⤦\",\n swarr: \"↙\",\n swArr: \"⇙\",\n swarrow: \"↙\",\n swnwar: \"⤪\",\n szlig: \"ß\",\n Tab: \"\\t\",\n target: \"⌖\",\n Tau: \"Τ\",\n tau: \"τ\",\n tbrk: \"⎴\",\n Tcaron: \"Ť\",\n tcaron: \"ť\",\n Tcedil: \"Ţ\",\n tcedil: \"ţ\",\n Tcy: \"Т\",\n tcy: \"т\",\n tdot: \"⃛\",\n telrec: \"⌕\",\n Tfr: \"𝔗\",\n tfr: \"𝔱\",\n there4: \"∴\",\n therefore: \"∴\",\n Therefore: \"∴\",\n Theta: \"Θ\",\n theta: \"θ\",\n thetasym: \"ϑ\",\n thetav: \"ϑ\",\n thickapprox: \"≈\",\n thicksim: \"∼\",\n ThickSpace: \"  \",\n ThinSpace: \" \",\n thinsp: \" \",\n thkap: \"≈\",\n thksim: \"∼\",\n THORN: \"Þ\",\n thorn: \"þ\",\n tilde: \"˜\",\n Tilde: \"∼\",\n TildeEqual: \"≃\",\n TildeFullEqual: \"≅\",\n TildeTilde: \"≈\",\n timesbar: \"⨱\",\n timesb: \"⊠\",\n times: \"×\",\n timesd: \"⨰\",\n tint: \"∭\",\n toea: \"⤨\",\n topbot: \"⌶\",\n topcir: \"⫱\",\n top: \"⊤\",\n Topf: \"𝕋\",\n topf: \"𝕥\",\n topfork: \"⫚\",\n tosa: \"⤩\",\n tprime: \"‴\",\n trade: \"™\",\n TRADE: \"™\",\n triangle: \"▵\",\n triangledown: \"▿\",\n triangleleft: \"◃\",\n trianglelefteq: \"⊴\",\n triangleq: \"≜\",\n triangleright: \"▹\",\n trianglerighteq: \"⊵\",\n tridot: \"◬\",\n trie: \"≜\",\n triminus: \"⨺\",\n TripleDot: \"⃛\",\n triplus: \"⨹\",\n trisb: \"⧍\",\n tritime: \"⨻\",\n trpezium: \"⏢\",\n Tscr: \"𝒯\",\n tscr: \"𝓉\",\n TScy: \"Ц\",\n tscy: \"ц\",\n TSHcy: \"Ћ\",\n tshcy: \"ћ\",\n Tstrok: \"Ŧ\",\n tstrok: \"ŧ\",\n twixt: \"≬\",\n twoheadleftarrow: \"↞\",\n twoheadrightarrow: \"↠\",\n Uacute: \"Ú\",\n uacute: \"ú\",\n uarr: \"↑\",\n Uarr: \"↟\",\n uArr: \"⇑\",\n Uarrocir: \"⥉\",\n Ubrcy: \"Ў\",\n ubrcy: \"ў\",\n Ubreve: \"Ŭ\",\n ubreve: \"ŭ\",\n Ucirc: \"Û\",\n ucirc: \"û\",\n Ucy: \"У\",\n ucy: \"у\",\n udarr: \"⇅\",\n Udblac: \"Ű\",\n udblac: \"ű\",\n udhar: \"⥮\",\n ufisht: \"⥾\",\n Ufr: \"𝔘\",\n ufr: \"𝔲\",\n Ugrave: \"Ù\",\n ugrave: \"ù\",\n uHar: \"⥣\",\n uharl: \"↿\",\n uharr: \"↾\",\n uhblk: \"▀\",\n ulcorn: \"⌜\",\n ulcorner: \"⌜\",\n ulcrop: \"⌏\",\n ultri: \"◸\",\n Umacr: \"Ū\",\n umacr: \"ū\",\n uml: \"¨\",\n UnderBar: \"_\",\n UnderBrace: \"⏟\",\n UnderBracket: \"⎵\",\n UnderParenthesis: \"⏝\",\n Union: \"⋃\",\n UnionPlus: \"⊎\",\n Uogon: \"Ų\",\n uogon: \"ų\",\n Uopf: \"𝕌\",\n uopf: \"𝕦\",\n UpArrowBar: \"⤒\",\n uparrow: \"↑\",\n UpArrow: \"↑\",\n Uparrow: \"⇑\",\n UpArrowDownArrow: \"⇅\",\n updownarrow: \"↕\",\n UpDownArrow: \"↕\",\n Updownarrow: \"⇕\",\n UpEquilibrium: \"⥮\",\n upharpoonleft: \"↿\",\n upharpoonright: \"↾\",\n uplus: \"⊎\",\n UpperLeftArrow: \"↖\",\n UpperRightArrow: \"↗\",\n upsi: \"υ\",\n Upsi: \"ϒ\",\n upsih: \"ϒ\",\n Upsilon: \"Υ\",\n upsilon: \"υ\",\n UpTeeArrow: \"↥\",\n UpTee: \"⊥\",\n upuparrows: \"⇈\",\n urcorn: \"⌝\",\n urcorner: \"⌝\",\n urcrop: \"⌎\",\n Uring: \"Ů\",\n uring: \"ů\",\n urtri: \"◹\",\n Uscr: \"𝒰\",\n uscr: \"𝓊\",\n utdot: \"⋰\",\n Utilde: \"Ũ\",\n utilde: \"ũ\",\n utri: \"▵\",\n utrif: \"▴\",\n uuarr: \"⇈\",\n Uuml: \"Ü\",\n uuml: \"ü\",\n uwangle: \"⦧\",\n vangrt: \"⦜\",\n varepsilon: \"ϵ\",\n varkappa: \"ϰ\",\n varnothing: \"∅\",\n varphi: \"ϕ\",\n varpi: \"ϖ\",\n varpropto: \"∝\",\n varr: \"↕\",\n vArr: \"⇕\",\n varrho: \"ϱ\",\n varsigma: \"ς\",\n varsubsetneq: \"⊊︀\",\n varsubsetneqq: \"⫋︀\",\n varsupsetneq: \"⊋︀\",\n varsupsetneqq: \"⫌︀\",\n vartheta: \"ϑ\",\n vartriangleleft: \"⊲\",\n vartriangleright: \"⊳\",\n vBar: \"⫨\",\n Vbar: \"⫫\",\n vBarv: \"⫩\",\n Vcy: \"В\",\n vcy: \"в\",\n vdash: \"⊢\",\n vDash: \"⊨\",\n Vdash: \"⊩\",\n VDash: \"⊫\",\n Vdashl: \"⫦\",\n veebar: \"⊻\",\n vee: \"∨\",\n Vee: \"⋁\",\n veeeq: \"≚\",\n vellip: \"⋮\",\n verbar: \"|\",\n Verbar: \"‖\",\n vert: \"|\",\n Vert: \"‖\",\n VerticalBar: \"∣\",\n VerticalLine: \"|\",\n VerticalSeparator: \"❘\",\n VerticalTilde: \"≀\",\n VeryThinSpace: \" \",\n Vfr: \"𝔙\",\n vfr: \"𝔳\",\n vltri: \"⊲\",\n vnsub: \"⊂⃒\",\n vnsup: \"⊃⃒\",\n Vopf: \"𝕍\",\n vopf: \"𝕧\",\n vprop: \"∝\",\n vrtri: \"⊳\",\n Vscr: \"𝒱\",\n vscr: \"𝓋\",\n vsubnE: \"⫋︀\",\n vsubne: \"⊊︀\",\n vsupnE: \"⫌︀\",\n vsupne: \"⊋︀\",\n Vvdash: \"⊪\",\n vzigzag: \"⦚\",\n Wcirc: \"Ŵ\",\n wcirc: \"ŵ\",\n wedbar: \"⩟\",\n wedge: \"∧\",\n Wedge: \"⋀\",\n wedgeq: \"≙\",\n weierp: \"℘\",\n Wfr: \"𝔚\",\n wfr: \"𝔴\",\n Wopf: \"𝕎\",\n wopf: \"𝕨\",\n wp: \"℘\",\n wr: \"≀\",\n wreath: \"≀\",\n Wscr: \"𝒲\",\n wscr: \"𝓌\",\n xcap: \"⋂\",\n xcirc: \"◯\",\n xcup: \"⋃\",\n xdtri: \"▽\",\n Xfr: \"𝔛\",\n xfr: \"𝔵\",\n xharr: \"⟷\",\n xhArr: \"⟺\",\n Xi: \"Ξ\",\n xi: \"ξ\",\n xlarr: \"⟵\",\n xlArr: \"⟸\",\n xmap: \"⟼\",\n xnis: \"⋻\",\n xodot: \"⨀\",\n Xopf: \"𝕏\",\n xopf: \"𝕩\",\n xoplus: \"⨁\",\n xotime: \"⨂\",\n xrarr: \"⟶\",\n xrArr: \"⟹\",\n Xscr: \"𝒳\",\n xscr: \"𝓍\",\n xsqcup: \"⨆\",\n xuplus: \"⨄\",\n xutri: \"△\",\n xvee: \"⋁\",\n xwedge: \"⋀\",\n Yacute: \"Ý\",\n yacute: \"ý\",\n YAcy: \"Я\",\n yacy: \"я\",\n Ycirc: \"Ŷ\",\n ycirc: \"ŷ\",\n Ycy: \"Ы\",\n ycy: \"ы\",\n yen: \"¥\",\n Yfr: \"𝔜\",\n yfr: \"𝔶\",\n YIcy: \"Ї\",\n yicy: \"ї\",\n Yopf: \"𝕐\",\n yopf: \"𝕪\",\n Yscr: \"𝒴\",\n yscr: \"𝓎\",\n YUcy: \"Ю\",\n yucy: \"ю\",\n yuml: \"ÿ\",\n Yuml: \"Ÿ\",\n Zacute: \"Ź\",\n zacute: \"ź\",\n Zcaron: \"Ž\",\n zcaron: \"ž\",\n Zcy: \"З\",\n zcy: \"з\",\n Zdot: \"Ż\",\n zdot: \"ż\",\n zeetrf: \"ℨ\",\n ZeroWidthSpace: \"​\",\n Zeta: \"Ζ\",\n zeta: \"ζ\",\n zfr: \"𝔷\",\n Zfr: \"ℨ\",\n ZHcy: \"Ж\",\n zhcy: \"ж\",\n zigrarr: \"⇝\",\n zopf: \"𝕫\",\n Zopf: \"ℤ\",\n Zscr: \"𝒵\",\n zscr: \"𝓏\",\n zwj: \"\\u200D\",\n zwnj: \"\\u200C\"\n };\n _exports.HTML5NamedCharRefs = namedCharRefs;\n var HEXCHARCODE = /^#[xX]([A-Fa-f0-9]+)$/;\n var CHARCODE = /^#([0-9]+)$/;\n var NAMED = /^([A-Za-z0-9]+)$/;\n\n var EntityParser =\n /** @class */\n function () {\n function EntityParser(named) {\n this.named = named;\n }\n\n EntityParser.prototype.parse = function (entity) {\n if (!entity) {\n return;\n }\n\n var matches = entity.match(HEXCHARCODE);\n\n if (matches) {\n return String.fromCharCode(parseInt(matches[1], 16));\n }\n\n matches = entity.match(CHARCODE);\n\n if (matches) {\n return String.fromCharCode(parseInt(matches[1], 10));\n }\n\n matches = entity.match(NAMED);\n\n if (matches) {\n return this.named[matches[1]];\n }\n };\n\n return EntityParser;\n }();\n\n _exports.EntityParser = EntityParser;\n var WSP = /[\\t\\n\\f ]/;\n var ALPHA = /[A-Za-z]/;\n var CRLF = /\\r\\n?/g;\n\n function isSpace(char) {\n return WSP.test(char);\n }\n\n function isAlpha(char) {\n return ALPHA.test(char);\n }\n\n function preprocessInput(input) {\n return input.replace(CRLF, '\\n');\n }\n\n var EventedTokenizer =\n /** @class */\n function () {\n function EventedTokenizer(delegate, entityParser, mode) {\n if (mode === void 0) {\n mode = 'precompile';\n }\n\n this.delegate = delegate;\n this.entityParser = entityParser;\n this.mode = mode;\n this.state = \"beforeData\"\n /* beforeData */\n ;\n this.line = -1;\n this.column = -1;\n this.input = '';\n this.index = -1;\n this.tagNameBuffer = '';\n this.states = {\n beforeData: function beforeData() {\n var char = this.peek();\n\n if (char === '<' && !this.isIgnoredEndTag()) {\n this.transitionTo(\"tagOpen\"\n /* tagOpen */\n );\n this.markTagStart();\n this.consume();\n } else {\n if (this.mode === 'precompile' && char === '\\n') {\n var tag = this.tagNameBuffer.toLowerCase();\n\n if (tag === 'pre' || tag === 'textarea') {\n this.consume();\n }\n }\n\n this.transitionTo(\"data\"\n /* data */\n );\n this.delegate.beginData();\n }\n },\n data: function data() {\n var char = this.peek();\n var tag = this.tagNameBuffer;\n\n if (char === '<' && !this.isIgnoredEndTag()) {\n this.delegate.finishData();\n this.transitionTo(\"tagOpen\"\n /* tagOpen */\n );\n this.markTagStart();\n this.consume();\n } else if (char === '&' && tag !== 'script' && tag !== 'style') {\n this.consume();\n this.delegate.appendToData(this.consumeCharRef() || '&');\n } else {\n this.consume();\n this.delegate.appendToData(char);\n }\n },\n tagOpen: function tagOpen() {\n var char = this.consume();\n\n if (char === '!') {\n this.transitionTo(\"markupDeclarationOpen\"\n /* markupDeclarationOpen */\n );\n } else if (char === '/') {\n this.transitionTo(\"endTagOpen\"\n /* endTagOpen */\n );\n } else if (char === '@' || char === ':' || isAlpha(char)) {\n this.transitionTo(\"tagName\"\n /* tagName */\n );\n this.tagNameBuffer = '';\n this.delegate.beginStartTag();\n this.appendToTagName(char);\n }\n },\n markupDeclarationOpen: function markupDeclarationOpen() {\n var char = this.consume();\n\n if (char === '-' && this.peek() === '-') {\n this.consume();\n this.transitionTo(\"commentStart\"\n /* commentStart */\n );\n this.delegate.beginComment();\n }\n },\n commentStart: function commentStart() {\n var char = this.consume();\n\n if (char === '-') {\n this.transitionTo(\"commentStartDash\"\n /* commentStartDash */\n );\n } else if (char === '>') {\n this.delegate.finishComment();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else {\n this.delegate.appendToCommentData(char);\n this.transitionTo(\"comment\"\n /* comment */\n );\n }\n },\n commentStartDash: function commentStartDash() {\n var char = this.consume();\n\n if (char === '-') {\n this.transitionTo(\"commentEnd\"\n /* commentEnd */\n );\n } else if (char === '>') {\n this.delegate.finishComment();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else {\n this.delegate.appendToCommentData('-');\n this.transitionTo(\"comment\"\n /* comment */\n );\n }\n },\n comment: function comment() {\n var char = this.consume();\n\n if (char === '-') {\n this.transitionTo(\"commentEndDash\"\n /* commentEndDash */\n );\n } else {\n this.delegate.appendToCommentData(char);\n }\n },\n commentEndDash: function commentEndDash() {\n var char = this.consume();\n\n if (char === '-') {\n this.transitionTo(\"commentEnd\"\n /* commentEnd */\n );\n } else {\n this.delegate.appendToCommentData('-' + char);\n this.transitionTo(\"comment\"\n /* comment */\n );\n }\n },\n commentEnd: function commentEnd() {\n var char = this.consume();\n\n if (char === '>') {\n this.delegate.finishComment();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else {\n this.delegate.appendToCommentData('--' + char);\n this.transitionTo(\"comment\"\n /* comment */\n );\n }\n },\n tagName: function tagName() {\n var char = this.consume();\n\n if (isSpace(char)) {\n this.transitionTo(\"beforeAttributeName\"\n /* beforeAttributeName */\n );\n } else if (char === '/') {\n this.transitionTo(\"selfClosingStartTag\"\n /* selfClosingStartTag */\n );\n } else if (char === '>') {\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else {\n this.appendToTagName(char);\n }\n },\n endTagName: function endTagName() {\n var char = this.consume();\n\n if (isSpace(char)) {\n this.transitionTo(\"beforeAttributeName\"\n /* beforeAttributeName */\n );\n this.tagNameBuffer = '';\n } else if (char === '/') {\n this.transitionTo(\"selfClosingStartTag\"\n /* selfClosingStartTag */\n );\n this.tagNameBuffer = '';\n } else if (char === '>') {\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n this.tagNameBuffer = '';\n } else {\n this.appendToTagName(char);\n }\n },\n beforeAttributeName: function beforeAttributeName() {\n var char = this.peek();\n\n if (isSpace(char)) {\n this.consume();\n return;\n } else if (char === '/') {\n this.transitionTo(\"selfClosingStartTag\"\n /* selfClosingStartTag */\n );\n this.consume();\n } else if (char === '>') {\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else if (char === '=') {\n this.delegate.reportSyntaxError('attribute name cannot start with equals sign');\n this.transitionTo(\"attributeName\"\n /* attributeName */\n );\n this.delegate.beginAttribute();\n this.consume();\n this.delegate.appendToAttributeName(char);\n } else {\n this.transitionTo(\"attributeName\"\n /* attributeName */\n );\n this.delegate.beginAttribute();\n }\n },\n attributeName: function attributeName() {\n var char = this.peek();\n\n if (isSpace(char)) {\n this.transitionTo(\"afterAttributeName\"\n /* afterAttributeName */\n );\n this.consume();\n } else if (char === '/') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(\"selfClosingStartTag\"\n /* selfClosingStartTag */\n );\n } else if (char === '=') {\n this.transitionTo(\"beforeAttributeValue\"\n /* beforeAttributeValue */\n );\n this.consume();\n } else if (char === '>') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else if (char === '\"' || char === \"'\" || char === '<') {\n this.delegate.reportSyntaxError(char + ' is not a valid character within attribute names');\n this.consume();\n this.delegate.appendToAttributeName(char);\n } else {\n this.consume();\n this.delegate.appendToAttributeName(char);\n }\n },\n afterAttributeName: function afterAttributeName() {\n var char = this.peek();\n\n if (isSpace(char)) {\n this.consume();\n return;\n } else if (char === '/') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(\"selfClosingStartTag\"\n /* selfClosingStartTag */\n );\n } else if (char === '=') {\n this.consume();\n this.transitionTo(\"beforeAttributeValue\"\n /* beforeAttributeValue */\n );\n } else if (char === '>') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.transitionTo(\"attributeName\"\n /* attributeName */\n );\n this.delegate.beginAttribute();\n this.consume();\n this.delegate.appendToAttributeName(char);\n }\n },\n beforeAttributeValue: function beforeAttributeValue() {\n var char = this.peek();\n\n if (isSpace(char)) {\n this.consume();\n } else if (char === '\"') {\n this.transitionTo(\"attributeValueDoubleQuoted\"\n /* attributeValueDoubleQuoted */\n );\n this.delegate.beginAttributeValue(true);\n this.consume();\n } else if (char === \"'\") {\n this.transitionTo(\"attributeValueSingleQuoted\"\n /* attributeValueSingleQuoted */\n );\n this.delegate.beginAttributeValue(true);\n this.consume();\n } else if (char === '>') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else {\n this.transitionTo(\"attributeValueUnquoted\"\n /* attributeValueUnquoted */\n );\n this.delegate.beginAttributeValue(false);\n this.consume();\n this.delegate.appendToAttributeValue(char);\n }\n },\n attributeValueDoubleQuoted: function attributeValueDoubleQuoted() {\n var char = this.consume();\n\n if (char === '\"') {\n this.delegate.finishAttributeValue();\n this.transitionTo(\"afterAttributeValueQuoted\"\n /* afterAttributeValueQuoted */\n );\n } else if (char === '&') {\n this.delegate.appendToAttributeValue(this.consumeCharRef() || '&');\n } else {\n this.delegate.appendToAttributeValue(char);\n }\n },\n attributeValueSingleQuoted: function attributeValueSingleQuoted() {\n var char = this.consume();\n\n if (char === \"'\") {\n this.delegate.finishAttributeValue();\n this.transitionTo(\"afterAttributeValueQuoted\"\n /* afterAttributeValueQuoted */\n );\n } else if (char === '&') {\n this.delegate.appendToAttributeValue(this.consumeCharRef() || '&');\n } else {\n this.delegate.appendToAttributeValue(char);\n }\n },\n attributeValueUnquoted: function attributeValueUnquoted() {\n var char = this.peek();\n\n if (isSpace(char)) {\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(\"beforeAttributeName\"\n /* beforeAttributeName */\n );\n } else if (char === '/') {\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(\"selfClosingStartTag\"\n /* selfClosingStartTag */\n );\n } else if (char === '&') {\n this.consume();\n this.delegate.appendToAttributeValue(this.consumeCharRef() || '&');\n } else if (char === '>') {\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else {\n this.consume();\n this.delegate.appendToAttributeValue(char);\n }\n },\n afterAttributeValueQuoted: function afterAttributeValueQuoted() {\n var char = this.peek();\n\n if (isSpace(char)) {\n this.consume();\n this.transitionTo(\"beforeAttributeName\"\n /* beforeAttributeName */\n );\n } else if (char === '/') {\n this.consume();\n this.transitionTo(\"selfClosingStartTag\"\n /* selfClosingStartTag */\n );\n } else if (char === '>') {\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else {\n this.transitionTo(\"beforeAttributeName\"\n /* beforeAttributeName */\n );\n }\n },\n selfClosingStartTag: function selfClosingStartTag() {\n var char = this.peek();\n\n if (char === '>') {\n this.consume();\n this.delegate.markTagAsSelfClosing();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n } else {\n this.transitionTo(\"beforeAttributeName\"\n /* beforeAttributeName */\n );\n }\n },\n endTagOpen: function endTagOpen() {\n var char = this.consume();\n\n if (char === '@' || char === ':' || isAlpha(char)) {\n this.transitionTo(\"endTagName\"\n /* endTagName */\n );\n this.tagNameBuffer = '';\n this.delegate.beginEndTag();\n this.appendToTagName(char);\n }\n }\n };\n this.reset();\n }\n\n EventedTokenizer.prototype.reset = function () {\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n this.input = '';\n this.tagNameBuffer = '';\n this.index = 0;\n this.line = 1;\n this.column = 0;\n this.delegate.reset();\n };\n\n EventedTokenizer.prototype.transitionTo = function (state) {\n this.state = state;\n };\n\n EventedTokenizer.prototype.tokenize = function (input) {\n this.reset();\n this.tokenizePart(input);\n this.tokenizeEOF();\n };\n\n EventedTokenizer.prototype.tokenizePart = function (input) {\n this.input += preprocessInput(input);\n\n while (this.index < this.input.length) {\n var handler = this.states[this.state];\n\n if (handler !== undefined) {\n handler.call(this);\n } else {\n throw new Error(\"unhandled state \" + this.state);\n }\n }\n };\n\n EventedTokenizer.prototype.tokenizeEOF = function () {\n this.flushData();\n };\n\n EventedTokenizer.prototype.flushData = function () {\n if (this.state === 'data') {\n this.delegate.finishData();\n this.transitionTo(\"beforeData\"\n /* beforeData */\n );\n }\n };\n\n EventedTokenizer.prototype.peek = function () {\n return this.input.charAt(this.index);\n };\n\n EventedTokenizer.prototype.consume = function () {\n var char = this.peek();\n this.index++;\n\n if (char === '\\n') {\n this.line++;\n this.column = 0;\n } else {\n this.column++;\n }\n\n return char;\n };\n\n EventedTokenizer.prototype.consumeCharRef = function () {\n var endIndex = this.input.indexOf(';', this.index);\n\n if (endIndex === -1) {\n return;\n }\n\n var entity = this.input.slice(this.index, endIndex);\n var chars = this.entityParser.parse(entity);\n\n if (chars) {\n var count = entity.length; // consume the entity chars\n\n while (count) {\n this.consume();\n count--;\n } // consume the `;`\n\n\n this.consume();\n return chars;\n }\n };\n\n EventedTokenizer.prototype.markTagStart = function () {\n this.delegate.tagOpen();\n };\n\n EventedTokenizer.prototype.appendToTagName = function (char) {\n this.tagNameBuffer += char;\n this.delegate.appendToTagName(char);\n };\n\n EventedTokenizer.prototype.isIgnoredEndTag = function () {\n var tag = this.tagNameBuffer;\n return tag === 'title' && this.input.substring(this.index, this.index + 8) !== '</title>' || tag === 'style' && this.input.substring(this.index, this.index + 8) !== '</style>' || tag === 'script' && this.input.substring(this.index, this.index + 9) !== '</script>';\n };\n\n return EventedTokenizer;\n }();\n\n _exports.EventedTokenizer = EventedTokenizer;\n\n var Tokenizer =\n /** @class */\n function () {\n function Tokenizer(entityParser, options) {\n if (options === void 0) {\n options = {};\n }\n\n this.options = options;\n this.token = null;\n this.startLine = 1;\n this.startColumn = 0;\n this.tokens = [];\n this.tokenizer = new EventedTokenizer(this, entityParser, options.mode);\n this._currentAttribute = undefined;\n }\n\n Tokenizer.prototype.tokenize = function (input) {\n this.tokens = [];\n this.tokenizer.tokenize(input);\n return this.tokens;\n };\n\n Tokenizer.prototype.tokenizePart = function (input) {\n this.tokens = [];\n this.tokenizer.tokenizePart(input);\n return this.tokens;\n };\n\n Tokenizer.prototype.tokenizeEOF = function () {\n this.tokens = [];\n this.tokenizer.tokenizeEOF();\n return this.tokens[0];\n };\n\n Tokenizer.prototype.reset = function () {\n this.token = null;\n this.startLine = 1;\n this.startColumn = 0;\n };\n\n Tokenizer.prototype.current = function () {\n var token = this.token;\n\n if (token === null) {\n throw new Error('token was unexpectedly null');\n }\n\n if (arguments.length === 0) {\n return token;\n }\n\n for (var i = 0; i < arguments.length; i++) {\n if (token.type === arguments[i]) {\n return token;\n }\n }\n\n throw new Error(\"token type was unexpectedly \" + token.type);\n };\n\n Tokenizer.prototype.push = function (token) {\n this.token = token;\n this.tokens.push(token);\n };\n\n Tokenizer.prototype.currentAttribute = function () {\n return this._currentAttribute;\n };\n\n Tokenizer.prototype.addLocInfo = function () {\n if (this.options.loc) {\n this.current().loc = {\n start: {\n line: this.startLine,\n column: this.startColumn\n },\n end: {\n line: this.tokenizer.line,\n column: this.tokenizer.column\n }\n };\n }\n\n this.startLine = this.tokenizer.line;\n this.startColumn = this.tokenizer.column;\n }; // Data\n\n\n Tokenizer.prototype.beginData = function () {\n this.push({\n type: \"Chars\"\n /* Chars */\n ,\n chars: ''\n });\n };\n\n Tokenizer.prototype.appendToData = function (char) {\n this.current(\"Chars\"\n /* Chars */\n ).chars += char;\n };\n\n Tokenizer.prototype.finishData = function () {\n this.addLocInfo();\n }; // Comment\n\n\n Tokenizer.prototype.beginComment = function () {\n this.push({\n type: \"Comment\"\n /* Comment */\n ,\n chars: ''\n });\n };\n\n Tokenizer.prototype.appendToCommentData = function (char) {\n this.current(\"Comment\"\n /* Comment */\n ).chars += char;\n };\n\n Tokenizer.prototype.finishComment = function () {\n this.addLocInfo();\n }; // Tags - basic\n\n\n Tokenizer.prototype.tagOpen = function () {};\n\n Tokenizer.prototype.beginStartTag = function () {\n this.push({\n type: \"StartTag\"\n /* StartTag */\n ,\n tagName: '',\n attributes: [],\n selfClosing: false\n });\n };\n\n Tokenizer.prototype.beginEndTag = function () {\n this.push({\n type: \"EndTag\"\n /* EndTag */\n ,\n tagName: ''\n });\n };\n\n Tokenizer.prototype.finishTag = function () {\n this.addLocInfo();\n };\n\n Tokenizer.prototype.markTagAsSelfClosing = function () {\n this.current(\"StartTag\"\n /* StartTag */\n ).selfClosing = true;\n }; // Tags - name\n\n\n Tokenizer.prototype.appendToTagName = function (char) {\n this.current(\"StartTag\"\n /* StartTag */\n , \"EndTag\"\n /* EndTag */\n ).tagName += char;\n }; // Tags - attributes\n\n\n Tokenizer.prototype.beginAttribute = function () {\n this._currentAttribute = ['', '', false];\n };\n\n Tokenizer.prototype.appendToAttributeName = function (char) {\n this.currentAttribute()[0] += char;\n };\n\n Tokenizer.prototype.beginAttributeValue = function (isQuoted) {\n this.currentAttribute()[2] = isQuoted;\n };\n\n Tokenizer.prototype.appendToAttributeValue = function (char) {\n this.currentAttribute()[1] += char;\n };\n\n Tokenizer.prototype.finishAttributeValue = function () {\n this.current(\"StartTag\"\n /* StartTag */\n ).attributes.push(this._currentAttribute);\n };\n\n Tokenizer.prototype.reportSyntaxError = function (message) {\n this.current().syntaxError = message;\n };\n\n return Tokenizer;\n }();\n\n _exports.Tokenizer = Tokenizer;\n\n function tokenize(input, options) {\n var tokenizer = new Tokenizer(new EntityParser(namedCharRefs), options);\n return tokenizer.tokenize(input);\n }\n});"],"names":[],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACp6BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9+NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5uBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzmFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;","file":"ember-template-compiler.js"}